All pastes #984488 Raw Edit

mistegia

public text v1 · immutable
·published 2008-04-14 09:11 UTC
rendered paste body
Index: src/game/SpellAuras.cpp
===================================================================
--- src/game/SpellAuras.cpp	(revision 5578)
+++ src/game/SpellAuras.cpp	(working copy)
@@ -3099,6 +3099,41 @@
                 }
             }
         }
+	    if(m_target->GetTypeId() == TYPEID_PLAYER)
+		{
+            if(((Player*)m_target)->InBattleGround())
+            {
+                BattleGround *bg = ((Player*)m_target)->GetBattleGround();
+                if(bg)
+                {
+                    switch(bg->GetTypeID())
+                    {
+                        case BATTLEGROUND_AV:
+                        {
+                            break;
+                        }
+                        case BATTLEGROUND_WS:
+                        {
+                            if(((BattleGroundWS*)bg)->IsHordeFlagPickedup())
+                                // Warsong Flag, horde
+                                ((BattleGroundWS*)bg)->EventPlayerDroppedFlag(((Player*)m_target));
+                            if(((BattleGroundWS*)bg)->IsAllianceFlagPickedup())
+                                // Silverwing Flag, alliance
+                                ((BattleGroundWS*)bg)->EventPlayerDroppedFlag(((Player*)m_target));
+                            break;
+                        }
+                        case BATTLEGROUND_AB:
+                        {
+                            break;
+                        }
+                        case BATTLEGROUND_EY:
+                        {
+                            break;
+                        }
+                    }
+                }
+            }
+		}
     }
 }
 
Index: src/game/SpellHandler.cpp
===================================================================
--- src/game/SpellHandler.cpp	(revision 5578)
+++ src/game/SpellHandler.cpp	(working copy)
@@ -479,6 +479,8 @@
                             // check player team
                             if(_player->GetTeam() == ALLIANCE)
                                 return;
+                            if ((Unit*)_player->HasAuraType(SPELL_AURA_SCHOOL_IMMUNITY))
+                                return;
                             spellId = 23335;                // Silverwing Flag
                             break;
                         case 179831:
@@ -494,6 +496,8 @@
                             // check player team
                             if(_player->GetTeam() == HORDE)
                                 return;
+                            if ((Unit*)_player->HasAuraType(SPELL_AURA_SCHOOL_IMMUNITY))
+                                return;
                             spellId = 23333;                // Warsong Flag
                             break;
                         case 184141:
@@ -534,15 +538,18 @@
                             // check if flag dropped
                             if(((BattleGroundWS*)bg)->GetFlagState(ALLIANCE) != BG_WS_FLAG_STATE_ON_GROUND)
                                 return;
-                            obj->Delete();
                             if(_player->GetTeam() == ALLIANCE)
                             {
                                 ((BattleGroundWS*)bg)->EventPlayerReturnedFlag(_player);
+                                obj->Delete();
                                 return;
                             }
                             else
                             {
+                                if ((Unit*)_player->HasAuraType(SPELL_AURA_SCHOOL_IMMUNITY))
+                                    return;
                                 _player->CastSpell(_player, 23335, true);
+                                obj->Delete();
                                 return;
                             }
                             break;
@@ -553,15 +560,18 @@
                             // check if flag dropped
                             if(((BattleGroundWS*)bg)->GetFlagState(HORDE) != BG_WS_FLAG_STATE_ON_GROUND)
                                 return;
-                            obj->Delete();
                             if(_player->GetTeam() == HORDE)
                             {
                                 ((BattleGroundWS*)bg)->EventPlayerReturnedFlag(_player);
+                                obj->Delete();
                                 return;
                             }
                             else
                             {
+                                if ((Unit*)_player->HasAuraType(SPELL_AURA_SCHOOL_IMMUNITY))
+                                    return;
                                 _player->CastSpell(_player, 23333, true);
+                                obj->Delete();
                                 return;
                             }
                             break;