void BattlegroundTP::HandleAreaTrigger(Player* player, uint32 trigger) { if (GetStatus() != STATUS_IN_PROGRESS) return; switch(trigger) { case 5904: // Alliance Flag spawn if (_flagState[TEAM_HORDE] && !_flagState[TEAM_ALLIANCE]) if (GetHordeFlagPickerGUID() == player->GetGUID()) EventPlayerCapturedFlag(player); break; case 5905: // Horde Flag spawn if (_flagState[TEAM_ALLIANCE] && !_flagState[TEAM_HORDE]) if (GetAllianceFlagPickerGUID() == player->GetGUID()) EventPlayerCapturedFlag(player); break; case 5908: // Horde Tower case 5909: // Twin Peak House big case 5910: // Horde House case 5911: // Twin Peak House small case 5914: // Allianz Start right case 5916: // Allianz Start case 5917: // Allianz Start left case 5918: // Horde Start case 5920: // Horde Start Front entrance case 5921: // Horde Start left Water channel break; default: Battleground::HandleAreaTrigger(player, trigger); break; } }
void BattleGroundWS::HandleAreaTrigger(Player *Source, uint32 Trigger) { // this is wrong way to implement these things. On official it done by gameobject spell cast. if (GetStatus() != STATUS_IN_PROGRESS) return; //uint32 SpellId = 0; //uint64 buff_guid = 0; switch(Trigger) { case 3686: // Alliance elixir of speed spawn. Trigger not working, because located inside other areatrigger, can be replaced by IsWithinDist(object, dist) in BattleGround::Update(). //buff_guid = m_BgObjects[BG_WS_OBJECT_SPEEDBUFF_1]; break; case 3687: // Horde elixir of speed spawn. Trigger not working, because located inside other areatrigger, can be replaced by IsWithinDist(object, dist) in BattleGround::Update(). //buff_guid = m_BgObjects[BG_WS_OBJECT_SPEEDBUFF_2]; break; case 3706: // Alliance elixir of regeneration spawn //buff_guid = m_BgObjects[BG_WS_OBJECT_REGENBUFF_1]; break; case 3708: // Horde elixir of regeneration spawn //buff_guid = m_BgObjects[BG_WS_OBJECT_REGENBUFF_2]; break; case 3707: // Alliance elixir of berserk spawn //buff_guid = m_BgObjects[BG_WS_OBJECT_BERSERKBUFF_1]; break; case 3709: // Horde elixir of berserk spawn //buff_guid = m_BgObjects[BG_WS_OBJECT_BERSERKBUFF_2]; break; case 3646: // Alliance Flag spawn if (m_FlagState[BG_TEAM_HORDE] && !m_FlagState[BG_TEAM_ALLIANCE]) if (GetHordeFlagPickerGUID() == Source->GetGUID()) EventPlayerCapturedFlag(Source); break; case 3647: // Horde Flag spawn if (m_FlagState[BG_TEAM_ALLIANCE] && !m_FlagState[BG_TEAM_HORDE]) if (GetAllianceFlagPickerGUID() == Source->GetGUID()) EventPlayerCapturedFlag(Source); break; case 3649: // unk1 case 3688: // unk2 case 4628: // unk3 case 4629: // unk4 break; default: sLog.outError("WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); break; } //if (buff_guid) // HandleTriggerBuff(buff_guid,Source); }
void BattlegroundTP::HandleAreaTrigger(Player *Source, uint32 Trigger) { // this is wrong way to implement these things. On official it done by gameobject spell cast. if (GetStatus() != STATUS_IN_PROGRESS) return; //uint32 SpellId = 0; //uint64 buff_guid = 0; switch(Trigger) { case 5904: // Alliance Flag spawn if (m_FlagState[BG_TEAM_HORDE] && !m_FlagState[BG_TEAM_ALLIANCE]) if (GetHordeFlagPickerGUID() == Source->GetGUID()) EventPlayerCapturedFlag(Source); break; case 5905: // Horde Flag spawn if (m_FlagState[BG_TEAM_ALLIANCE] && !m_FlagState[BG_TEAM_HORDE]) if (GetAllianceFlagPickerGUID() == Source->GetGUID()) EventPlayerCapturedFlag(Source); break; case 5908: // Horde Tower case 5909: // Twin Peak House big case 5910: // Horde House case 5911: // Twin Peak House small case 5914: // Allianz Start right case 5916: // Allianz Start case 5917: // Allianz Start left case 5918: // Horde Start case 5920: // Horde Start Front entrance case 5921: // Horde Start left Water channel break; default: sLog->outError("WARNING: Unhandled AreaTrigger in Battleground: %u", Trigger); Source->GetSession()->SendAreaTriggerMessage("Warning: Unhandled AreaTrigger in Battleground: %u", Trigger); break; } //if (buff_guid) // HandleTriggerBuff(buff_guid, Source); }
void BattlegroundTP::EventPlayerDroppedFlag(Player *Source) { if (GetStatus() != STATUS_IN_PROGRESS) { // if not running, do not cast things at the dropper player (prevent spawning the "dropped" flag), neither send unnecessary messages // just take off the aura if (Source->GetTeam() == ALLIANCE) { if (!this->IsHordeFlagPickedup()) return; if (GetHordeFlagPickerGUID() == Source->GetGUID()) { SetHordeFlagPicker(0); Source->RemoveAurasDueToSpell(BG_TP_SPELL_HORDE_FLAG); } } else { if (!this->IsAllianceFlagPickedup()) return; if (GetAllianceFlagPickerGUID() == Source->GetGUID()) { SetAllianceFlagPicker(0); Source->RemoveAurasDueToSpell(BG_TP_SPELL_ALLIANCE_FLAG); } } return; } bool set = false; if (Source->GetTeam() == ALLIANCE) { if (!IsHordeFlagPickedup()) return; if (GetHordeFlagPickerGUID() == Source->GetGUID()) { SetHordeFlagPicker(0); Source->RemoveAurasDueToSpell(BG_TP_SPELL_HORDE_FLAG); if (m_FlagDebuffState == 1) Source->RemoveAurasDueToSpell(TP_SPELL_FOCUSED_ASSAULT); if (m_FlagDebuffState == 2) Source->RemoveAurasDueToSpell(TP_SPELL_BRUTAL_ASSAULT); m_FlagState[BG_TEAM_HORDE] = BG_TP_FLAG_STATE_ON_GROUND; Source->CastSpell(Source, BG_TP_SPELL_HORDE_FLAG_DROPPED, true); set = true; } } else { if (!IsAllianceFlagPickedup()) return; if (GetAllianceFlagPickerGUID() == Source->GetGUID()) { SetAllianceFlagPicker(0); Source->RemoveAurasDueToSpell(BG_TP_SPELL_ALLIANCE_FLAG); if (m_FlagDebuffState == 1) Source->RemoveAurasDueToSpell(TP_SPELL_FOCUSED_ASSAULT); if (m_FlagDebuffState == 2) Source->RemoveAurasDueToSpell(TP_SPELL_BRUTAL_ASSAULT); m_FlagState[BG_TEAM_ALLIANCE] = BG_TP_FLAG_STATE_ON_GROUND; Source->CastSpell(Source, BG_TP_SPELL_ALLIANCE_FLAG_DROPPED, true); set = true; } } if (set) { Source->CastSpell(Source, SPELL_RECENTLY_DROPPED_FLAG, true); UpdateFlagState(Source->GetTeam(), 1); if (Source->GetTeam() == ALLIANCE) { SendMessageToAll(LANG_BG_TP_DROPPED_HF, CHAT_MSG_BG_SYSTEM_HORDE, Source); UpdateWorldState(BG_TP_FLAG_UNK_HORDE, uint32(-1)); } else { SendMessageToAll(LANG_BG_TP_DROPPED_AF, CHAT_MSG_BG_SYSTEM_ALLIANCE, Source); UpdateWorldState(BG_TP_FLAG_UNK_ALLIANCE, uint32(-1)); } m_FlagsDropTimer[GetTeamIndexByTeamId(Source->GetTeam()) ? 0 : 1] = BG_TP_FLAG_DROP_TIME; } }
void BattleGroundWS::EventPlayerDroppedFlag(Player *Source) { if (GetStatus() != STATUS_IN_PROGRESS) { // if not running, do not cast things at the dropper player (prevent spawning the "dropped" flag), neither send unnecessary messages // just take off the aura if (Source->GetBGTeam() == ALLIANCE) { if (!this->IsHordeFlagPickedup()) return; if (GetHordeFlagPickerGUID() == Source->GetGUID()) { SetHordeFlagPicker(0); Source->RemoveAurasDueToSpell(BG_WS_SPELL_WARSONG_FLAG); } } else { if (!this->IsAllianceFlagPickedup()) return; if (GetAllianceFlagPickerGUID() == Source->GetGUID()) { SetAllianceFlagPicker(0); Source->RemoveAurasDueToSpell(BG_WS_SPELL_SILVERWING_FLAG); } } return; } const char *message = ""; uint8 type = 0; bool set = false; if (Source->GetBGTeam() == ALLIANCE) { if (!this->IsHordeFlagPickedup()) return; if (GetHordeFlagPickerGUID() == Source->GetGUID()) { SetHordeFlagPicker(0); Source->RemoveAurasDueToSpell(BG_WS_SPELL_WARSONG_FLAG); if (m_FlagDebuffState == 1) Source->RemoveAurasDueToSpell(WS_SPELL_FOCUSED_ASSAULT); if (m_FlagDebuffState == 2) Source->RemoveAurasDueToSpell(WS_SPELL_BRUTAL_ASSAULT); m_FlagState[BG_TEAM_HORDE] = BG_WS_FLAG_STATE_ON_GROUND; message = GetTrinityString(LANG_BG_WS_DROPPED_HF); type = CHAT_MSG_BG_SYSTEM_HORDE; Source->CastSpell(Source, BG_WS_SPELL_WARSONG_FLAG_DROPPED, true); set = true; } } else { if (!this->IsAllianceFlagPickedup()) return; if (GetAllianceFlagPickerGUID() == Source->GetGUID()) { SetAllianceFlagPicker(0); Source->RemoveAurasDueToSpell(BG_WS_SPELL_SILVERWING_FLAG); if (m_FlagDebuffState == 1) Source->RemoveAurasDueToSpell(WS_SPELL_FOCUSED_ASSAULT); if (m_FlagDebuffState == 2) Source->RemoveAurasDueToSpell(WS_SPELL_BRUTAL_ASSAULT); m_FlagState[BG_TEAM_ALLIANCE] = BG_WS_FLAG_STATE_ON_GROUND; message = GetTrinityString(LANG_BG_WS_DROPPED_AF); type = CHAT_MSG_BG_SYSTEM_ALLIANCE; Source->CastSpell(Source, BG_WS_SPELL_SILVERWING_FLAG_DROPPED, true); set = true; } } if (set) { Source->CastSpell(Source, SPELL_RECENTLY_DROPPED_FLAG, true); UpdateFlagState(Source->GetBGTeam(), 1); WorldPacket data; ChatHandler::FillMessageData(&data, Source->GetSession(), type, LANG_UNIVERSAL, NULL, Source->GetGUID(), message, NULL); SendPacketToAll(&data); if (Source->GetBGTeam() == ALLIANCE) UpdateWorldState(BG_WS_FLAG_UNK_HORDE, uint32(-1)); else UpdateWorldState(BG_WS_FLAG_UNK_ALLIANCE, uint32(-1)); m_FlagsDropTimer[GetTeamIndexByTeamId(Source->GetBGTeam()) ? 0 : 1] = BG_WS_FLAG_DROP_TIME; } }