static bool HandleBattlefieldTimer(ChatHandler* handler, const char* args) { uint32 battleid = 0; uint32 time = 0; char* battleid_str = strtok((char*)args, " "); if (!battleid_str) return false; char* time_str = strtok(NULL, " "); if (!time_str) return false; battleid = atoi(battleid_str); time = atoi(time_str); Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(battleid); if (!bf) return false; bf->SetTimer(time * IN_MILLISECONDS); bf->SendInitWorldStatesToAll(); if (battleid == 1) handler->SendGlobalGMSysMessage("Wintergrasp (Command timer used)"); return true; }
//Send by client on clicking in accept or refuse of invitation windows for join game void WorldSession::HandleBfEntryInviteResponse(WorldPacket& recvData) { uint8 accepted; ObjectGuid guid; guid[0] = recvData.ReadBit(); guid[7] = recvData.ReadBit(); accepted = recvData.ReadBit(); guid[4] = recvData.ReadBit(); guid[3] = recvData.ReadBit(); guid[1] = recvData.ReadBit(); guid[6] = recvData.ReadBit(); guid[2] = recvData.ReadBit(); guid[5] = recvData.ReadBit(); recvData.ReadByteSeq(guid[1]); recvData.ReadByteSeq(guid[6]); recvData.ReadByteSeq(guid[2]); recvData.ReadByteSeq(guid[5]); recvData.ReadByteSeq(guid[3]); recvData.ReadByteSeq(guid[4]); recvData.ReadByteSeq(guid[7]); recvData.ReadByteSeq(guid[0]); TC_LOG_ERROR("misc", "HandleBattlefieldInviteResponse: GUID:"UI64FMTD" Accepted:%u", (uint64)guid, accepted); Battlefield* bf = sBattlefieldMgr->GetBattlefieldByGUID(guid); if (!bf) return; if (accepted) bf->PlayerAcceptInviteToWar(_player); else if (_player->GetZoneId() == bf->GetZoneId()) bf->KickPlayerFromBattlefield(_player->GetGUID()); }
void BattlefieldMgr::InitBattlefield() { Battlefield* wg = new BattlefieldWG(); // respawn, init variables if (!wg->SetupBattlefield()) { TC_LOG_INFO("bg.battlefield", "Battlefield: Wintergrasp init failed."); delete wg; } else { _battlefieldSet.push_back(wg); TC_LOG_INFO("bg.battlefield", "Battlefield: Wintergrasp successfully initiated."); } /* For Cataclysm: Tol Barad Battlefield* tb = new BattlefieldTB; // respawn, init variables if (!tb->SetupBattlefield()) { TC_LOG_DEBUG("bg.battlefield", "Battlefield: Tol Barad init failed."); delete tb; } else { _battlefieldSet.push_back(tb); TC_LOG_DEBUG("bg.battlefield", "Battlefield: Tol Barad successfully initiated."); } */ }
void BattlefieldMgr::InitBattlefield() { Battlefield* pBf = new BattlefieldWG; // respawn, init variables if (!pBf->SetupBattlefield()) { sLog->outString(); sLog->outString("Battlefield : Wintergrasp init failed."); delete pBf; } else { m_BattlefieldSet.push_back(pBf); sLog->outString(); sLog->outString("Battlefield : Wintergrasp successfully initiated."); } /* For Cataclysm: Tol Barad pBf = new BattlefieldTB; // respawn, init variables if(!pBf->SetupBattlefield()) { ;//sLog->outDebug(LOG_FILTER_BATTLEFIELD, "Battlefield : Tol Barad init failed."); delete pBf; } else { m_BattlefieldSet.push_back(pBf); ;//sLog->outDebug(LOG_FILTER_BATTLEFIELD, "Battlefield : Tol Barad successfully initiated."); } */ }
//Send by client when he click on accept for queue void WorldSession::HandleBfQueueInviteResponse(WorldPacket& recvData) { uint8 accepted; ObjectGuid guid; guid[2] = recvData.ReadBit(); guid[0] = recvData.ReadBit(); guid[4] = recvData.ReadBit(); guid[3] = recvData.ReadBit(); guid[5] = recvData.ReadBit(); guid[7] = recvData.ReadBit(); accepted = recvData.ReadBit(); guid[1] = recvData.ReadBit(); guid[6] = recvData.ReadBit(); recvData.ReadByteSeq(guid[1]); recvData.ReadByteSeq(guid[3]); recvData.ReadByteSeq(guid[2]); recvData.ReadByteSeq(guid[4]); recvData.ReadByteSeq(guid[6]); recvData.ReadByteSeq(guid[7]); recvData.ReadByteSeq(guid[0]); recvData.ReadByteSeq(guid[5]); TC_LOG_ERROR(LOG_FILTER_GENERAL, "HandleQueueInviteResponse: GUID:"UI64FMTD" Accepted:%u", (uint64)guid, accepted); Battlefield* bf = sBattlefieldMgr->GetBattlefieldByGUID(guid); if (!bf) return; if (accepted) bf->PlayerAcceptInviteToQueue(_player); }
/** * @fn void WorldSession::HandleBfExitRequest(WorldPacket& recvData) * * @brief Send by client when exited battlefield */ void WorldSession::HandleBfExitRequest(WorldPacket& recvData) { ObjectGuid guid; guid[2] = recvData.ReadBit(); guid[0] = recvData.ReadBit(); guid[3] = recvData.ReadBit(); guid[7] = recvData.ReadBit(); guid[4] = recvData.ReadBit(); guid[5] = recvData.ReadBit(); guid[6] = recvData.ReadBit(); guid[1] = recvData.ReadBit(); recvData.ReadByteSeq(guid[5]); recvData.ReadByteSeq(guid[2]); recvData.ReadByteSeq(guid[0]); recvData.ReadByteSeq(guid[1]); recvData.ReadByteSeq(guid[4]); recvData.ReadByteSeq(guid[3]); recvData.ReadByteSeq(guid[7]); recvData.ReadByteSeq(guid[6]); TC_LOG_ERROR("misc", "HandleBfExitRequest: GUID: %s", guid.ToString().c_str()); Battlefield* bf = sBattlefieldMgr->GetBattlefieldByGUID(guid); if (!bf) return; bf->AskToLeaveQueue(_player); }
/** * @fn void WorldSession::HandleBfQueueInviteResponse(WorldPacket& recvData) * * @brief Send by client when he click on accept for queue. */ void WorldSession::HandleBfQueueInviteResponse(WorldPacket& recvData) { uint8 accepted; ObjectGuid guid; guid[2] = recvData.ReadBit(); guid[0] = recvData.ReadBit(); guid[4] = recvData.ReadBit(); guid[3] = recvData.ReadBit(); guid[5] = recvData.ReadBit(); guid[7] = recvData.ReadBit(); accepted = recvData.ReadBit(); guid[1] = recvData.ReadBit(); guid[6] = recvData.ReadBit(); recvData.ReadByteSeq(guid[1]); recvData.ReadByteSeq(guid[3]); recvData.ReadByteSeq(guid[2]); recvData.ReadByteSeq(guid[4]); recvData.ReadByteSeq(guid[6]); recvData.ReadByteSeq(guid[7]); recvData.ReadByteSeq(guid[0]); recvData.ReadByteSeq(guid[5]); TC_LOG_ERROR("misc", "HandleQueueInviteResponse: %s, accepted: %u", guid.ToString().c_str(), accepted); Battlefield* bf = sBattlefieldMgr->GetBattlefieldByGUID(guid); if (!bf) return; if (accepted) bf->PlayerAcceptInviteToQueue(_player); }
bool OnConditionCheck(Condition const* /* condition */, ConditionSourceInfo& /* sourceInfo */) { Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG); if (wintergrasp->IsEnabled() && wintergrasp->GetDefenderTeam() == TEAM_ALLIANCE) return true; return false; }
static bool HandleBattlefieldEnable(ChatHandler* handler, const char* args) { uint32 battleid = 0; char* battleid_str = strtok((char*)args, " "); if (!battleid_str) return false; battleid = atoi(battleid_str); Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(battleid); if (!bf) return false; if (bf->IsEnabled()) { bf->ToggleBattlefield(false); if (battleid == 1) handler->SendGlobalGMSysMessage("Wintergrasp is disabled"); } else { bf->ToggleBattlefield(true); if (battleid == 1) handler->SendGlobalGMSysMessage("Wintergrasp is enabled"); } return true; }
void HandlePeriodicDummy(AuraEffect const* /*aurEff*/) { Unit* target = GetTarget(); Battlefield* Bf = sBattlefieldMgr->GetBattlefieldToZoneId(target->GetZoneId()); bool enable = !Bf || !Bf->IsWarTime(); target->SetPhaseMask(enable ? 1 : 512, true); PreventDefaultAction(); }
bool OnCheck(Player* /*source*/, Unit* /*target*/) { Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG); if (!wintergrasp) return false; return wintergrasp->GetTimer() >= (20 * MINUTE * IN_MILLISECONDS); }
/** * @fn void WorldSession::HandleBfExitRequest(WorldPackets::Battlefield::BFMgrQueueExitRequest& bfMgrQueueExitRequest) * * @brief Send by client when exited battlefield */ void WorldSession::HandleBfQueueExitRequest(WorldPackets::Battlefield::BFMgrQueueExitRequest& bfMgrQueueExitRequest) { Battlefield* bf = sBattlefieldMgr->GetBattlefieldByQueueId(bfMgrQueueExitRequest.QueueID); if (!bf) return; bf->AskToLeaveQueue(_player); }
void WorldSession::HandleBfExitRequest(WorldPacket& recvData) { sLog->outError(LOG_FILTER_GENERAL, "HandleBfExitRequest"); Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(_player->GetZoneId()); if (bf) bf->KickPlayerFromBattlefield(_player->GetGUID()); }
/** * @fn void WorldSession::HandleBfQueueInviteResponse(WorldPackets::Battlefield::BFMgrQueueInviteResponse& bfMgrQueueInviteResponse) * * @brief Send by client when he click on accept for queue. */ void WorldSession::HandleBfQueueInviteResponse(WorldPackets::Battlefield::BFMgrQueueInviteResponse& bfMgrQueueInviteResponse) { Battlefield* bf = sBattlefieldMgr->GetBattlefieldByQueueId(bfMgrQueueInviteResponse.QueueID); if (!bf) return; if (bfMgrQueueInviteResponse.AcceptedInvite) bf->PlayerAcceptInviteToQueue(_player); }
void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); Player* target = GetHitPlayer(); Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG); if (!wintergrasp || !target || target->getLevel() < 75 || (wintergrasp->GetDefenderTeam() != target->GetTeamId())) return; target->CastSpell(target, SPELL_TELEPORT_TO_FORTRESS, true); }
void WorldSession::HandleBfExitRequest(WorldPacket & recv_data) { uint32 BattleId; recv_data >> BattleId; sLog->outDebug(LOG_FILTER_BATTLEFIELD, "HandleBfExitRequest: BattleID:%u ", BattleId); Battlefield* Bf = sBattlefieldMgr->GetBattlefieldByBattleId(BattleId); if (!Bf) return; Bf->AskToLeaveQueue(_player); }
void WorldSession::HandleBfExitRequest(WorldPacket & recvData) { uint32 BattleId; recvData >> BattleId; TC_LOG_DEBUG(LOG_FILTER_GENERAL, "HandleBfExitRequest: BattleID:%u ", BattleId); Battlefield* Bf = sBattlefieldMgr->GetBattlefieldByBattleId(BattleId); if (!Bf) return; Bf->AskToLeaveQueue(_player); }
void WorldSession::HandleBfExitRequest(WorldPacket & recv_data) { uint32 BattleId; recv_data >> BattleId; sLog->outError("HandleBfExitRequest: BattleID:%u ", BattleId); Battlefield* Bf = sBattlefieldMgr.GetBattlefieldByBattleId(BattleId); if (!Bf) return; Bf->AskToLeaveQueue(_player); }
void BattlefieldMgr::HandlePlayerEnterZone(Player* player, uint32 zoneid) { BattlefieldMap::iterator itr = m_BattlefieldMap.find(zoneid); if (itr == m_BattlefieldMap.end()) return; Battlefield* bf = itr->second; if (bf->HasPlayer(player) || !bf->IsEnabled()) return; bf->HandlePlayerEnterZone(player, zoneid); SF_LOG_DEBUG("bg.battlefield", "Player %u entered outdoorpvp id %u", player->GetGUIDLow(), bf->GetTypeId()); }
void BattlefieldMgr::HandlePlayerEnterZone(Player* player, uint32 zoneId) { BattlefieldMap::iterator itr = _battlefieldMap.find(zoneId); if (itr == _battlefieldMap.end()) return; Battlefield* bf = itr->second; if (!bf->IsEnabled() || bf->HasPlayer(player)) return; bf->HandlePlayerEnterZone(player, zoneId); TC_LOG_DEBUG("bg.battlefield", "Player %u entered battlefield id %u", player->GetGUID().GetCounter(), bf->GetTypeId()); }
/** * @fn void WorldSession::HandleBfExitRequest(WorldPacket& recvData) * * @brief Send by client when exited battlefield */ void WorldSession::HandleBfExitRequest(WorldPacket& recvData) { uint32 battleId; recvData >> battleId; TC_LOG_DEBUG("misc", "HandleBfExitRequest: battleId: %u ", battleId); Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(battleId); if (!bf) return; bf->AskToLeaveQueue(_player); }
bool npc_wg_spirit_guide::OnGossipSelect(Player* pPlayer, Creature* /*pCreature*/, uint32 /*sender*/, uint32 action) { pPlayer->CLOSE_GOSSIP_MENU(); Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG); if (wintergrasp) { GraveyardVect gy = wintergrasp->GetGraveyardVector(); for (uint8 i = 0; i < gy.size(); i++) if (action - GOSSIP_ACTION_INFO_DEF == i && gy[i]->GetControlTeamId() == pPlayer->GetTeamId()) if (WorldSafeLocsEntry const* safeLoc = sWorldSafeLocsStore.LookupEntry(gy[i]->GetGraveyardId())) pPlayer->TeleportTo(safeLoc->map_id, safeLoc->x, safeLoc->y, safeLoc->z, 0); } return true; }
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override { CloseGossipMenuFor(player); Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG); if (wintergrasp) { GraveyardVect gy = wintergrasp->GetGraveyardVector(); for (uint8 i = 0; i < gy.size(); i++) if (action - GOSSIP_ACTION_INFO_DEF == i && gy[i]->GetControlTeamId() == player->GetTeamId()) if (WorldSafeLocsEntry const* safeLoc = sWorldSafeLocsStore.LookupEntry(gy[i]->GetGraveyardId())) player->TeleportTo(safeLoc->MapID, safeLoc->Loc.X, safeLoc->Loc.Y, safeLoc->Loc.Z, 0); } return true; }
bool npc_wg_demolisher_engineer::CanBuild(Creature* pCreature) { Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG); if (!wintergrasp) return false; switch (pCreature->GetEntry()) { case BATTLEFIELD_WG_NPC_GOBLIN_MECHANIC_ENGINEER: return (wintergrasp->GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_H) > wintergrasp->GetData(BATTLEFIELD_WG_DATA_VEHICLE_H)); case BATTLEFIELD_WG_NPC_GNOMISH_MECHANIC_ENGINEER: return (wintergrasp->GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_A) > wintergrasp->GetData(BATTLEFIELD_WG_DATA_VEHICLE_A)); default: return false; } }
bool CanBuild(Creature* creature) { Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG); if (!wintergrasp) return false; switch (creature->GetEntry()) { case NPC_GOBLIN_MECHANIC: return (wintergrasp->GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_H) > wintergrasp->GetData(BATTLEFIELD_WG_DATA_VEHICLE_H)); case NPC_GNOMISH_ENGINEER: return (wintergrasp->GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_A) > wintergrasp->GetData(BATTLEFIELD_WG_DATA_VEHICLE_A)); default: return false; } }
// Send by client when he click on accept for queue void WorldSession::HandleBfQueueInviteResponse(WorldPacket& recvData) { uint64 data; uint8 Accepted; recvData >> Accepted >> data; uint64 BattleId = data &~ 0x20000; Battlefield* Bf = sBattlefieldMgr->GetBattlefieldByBattleId((uint32)BattleId); if (!Bf) return; if (Accepted) Bf->PlayerAcceptInviteToQueue(_player); }
//Send by client when he click on accept for queue void WorldSession::HandleBfQueueInviteResponse(WorldPacket & recv_data) { uint32 BattleId; uint8 Accepted; recv_data >> BattleId >> Accepted; sLog->outError("HandleQueueInviteResponse: BattleID:%u Accepted:%u", BattleId, Accepted); Battlefield* Bf = sBattlefieldMgr.GetBattlefieldByBattleId(BattleId); if (!Bf) return; if (Accepted) { Bf->PlayerAcceptInviteToQueue(_player); } }
//Send by client when he click on accept for queue void WorldSession::HandleBfQueueInviteResponse(WorldPacket & recvData) { uint32 BattleId; uint8 Accepted; recvData >> BattleId >> Accepted; TC_LOG_DEBUG(LOG_FILTER_GENERAL, "HandleQueueInviteResponse: BattleID:%u Accepted:%u", BattleId, Accepted); Battlefield* Bf = sBattlefieldMgr->GetBattlefieldByBattleId(BattleId); if (!Bf) return; if (Accepted) { Bf->PlayerAcceptInviteToQueue(_player); } }
/** * @fn void WorldSession::HandleBfQueueInviteResponse(WorldPacket& recvData) * * @brief Send by client when he click on accept for queue. */ void WorldSession::HandleBfQueueInviteResponse(WorldPacket& recvData) { uint32 battleId; uint8 accepted; recvData >> battleId >> accepted; TC_LOG_DEBUG("misc", "HandleBfQueueInviteResponse: BattleID:%u Accepted:%u", battleId, accepted); Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(battleId); if (!bf) return; if (accepted) bf->PlayerAcceptInviteToQueue(_player); }
bool npc_wg_spirit_guide::OnGossipHello(Player* pPlayer, Creature* pCreature) { if (pCreature->isQuestGiver()) pPlayer->PrepareQuestMenu(pCreature->GetGUID()); Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG); if (!wintergrasp) return true; GraveyardVect graveyard = wintergrasp->GetGraveyardVector(); for (uint8 i = 0; i < graveyard.size(); i++) if (graveyard[i]->GetControlTeamId() == pPlayer->GetTeamId()) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, sObjectMgr->GetTrinityStringForDBCLocale(((BfGraveyardWG*)graveyard[i])->GetTextId()), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + i); pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); return true; }