Miscellany
public text v1 · immutableIndex: src/game/SpellAuras.cpp
===================================================================
--- src/game/SpellAuras.cpp (revision 5492)
+++ src/game/SpellAuras.cpp (working copy)
@@ -3000,6 +3000,45 @@
}
}
}
+ 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
+ if(GetSpellProto()->Id == 23333)
+ // Horde Flag Drop
+ ((BattleGroundWS*)bg)->EventPlayerDroppedFlag(((Player*)m_target));
+ if(((BattleGroundWS*)bg)->IsAllianceFlagPickedup())
+ // Silverwing Flag, alliance
+ if(GetSpellProto()->Id == 23335)
+ // Alliance Flag Drop
+ ((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 5492)
+++ src/game/SpellHandler.cpp (working copy)
@@ -483,6 +483,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:
@@ -498,6 +500,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:
@@ -538,15 +542,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;
@@ -557,15 +564,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;