mistegia
public text v1 · immutableIndex: 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;