Battlefields: Move BF scripts out of game
This commit introduces the usual script interface for battlefields. (cherry picked from commit f7faf20254a120a90b8ee8eb55a284a6351aabc3)
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
DROP TABLE IF EXISTS `battlefield_template`;
|
||||
CREATE TABLE `battlefield_template` (
|
||||
`TypeId` tinyint(3) unsigned NOT NULL,
|
||||
`ScriptName` varchar(64) NOT NULL,
|
||||
`comment` text,
|
||||
PRIMARY KEY(`TypeId`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
INSERT INTO `battlefield_template` (`TypeId`, `ScriptName`, `comment`) VALUES
|
||||
(1, 'battlefield_wg', NULL),
|
||||
(2, 'battlefield_tb', NULL);
|
||||
@@ -25,8 +25,9 @@
|
||||
|
||||
enum BattlefieldTypes
|
||||
{
|
||||
BATTLEFIELD_WG, // Wintergrasp
|
||||
BATTLEFIELD_TB // Tol Barad (cataclysm)
|
||||
BATTLEFIELD_WG = 1, // Wintergrasp
|
||||
BATTLEFIELD_TB = 2, // Tol Barad (cataclysm)
|
||||
BATTLEFIELD_MAX
|
||||
};
|
||||
|
||||
enum BattlefieldIDs
|
||||
|
||||
@@ -16,10 +16,11 @@
|
||||
*/
|
||||
|
||||
#include "BattlefieldMgr.h"
|
||||
#include "BattlefieldWG.h"
|
||||
#include "BattlefieldTB.h"
|
||||
#include "DatabaseEnv.h"
|
||||
#include "ObjectMgr.h"
|
||||
#include "Log.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptMgr.h"
|
||||
|
||||
BattlefieldMgr::BattlefieldMgr()
|
||||
{
|
||||
@@ -42,31 +43,44 @@ BattlefieldMgr* BattlefieldMgr::instance()
|
||||
|
||||
void BattlefieldMgr::InitBattlefield()
|
||||
{
|
||||
Battlefield* wg = new BattlefieldWG();
|
||||
// respawn, init variables
|
||||
if (!wg->SetupBattlefield())
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
uint32 count = 0;
|
||||
|
||||
if (QueryResult result = WorldDatabase.Query("SELECT TypeId, ScriptName FROM battlefield_template"))
|
||||
{
|
||||
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.");
|
||||
do
|
||||
{
|
||||
Field* fields = result->Fetch();
|
||||
|
||||
uint32 typeId = fields[0].GetUInt8();
|
||||
|
||||
if (typeId >= BATTLEFIELD_MAX)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "BattlefieldMgr::InitBattlefield: Invalid TypeId value %u in battlefield_template, skipped.", typeId);
|
||||
continue;
|
||||
}
|
||||
|
||||
uint32 scriptId = sObjectMgr->GetScriptId(fields[1].GetString());
|
||||
|
||||
Battlefield* bf = sScriptMgr->CreateBattlefield(scriptId);
|
||||
|
||||
if (!bf->SetupBattlefield())
|
||||
{
|
||||
TC_LOG_INFO("bg.battlefield", "Setting up battlefield with TypeId %u failed.", typeId);
|
||||
delete bf;
|
||||
}
|
||||
else
|
||||
{
|
||||
_battlefieldSet.push_back(bf);
|
||||
TC_LOG_INFO("bg.battlefield", "Setting up battlefield with TypeId %u succeeded.", typeId);
|
||||
}
|
||||
|
||||
++count;
|
||||
} while (result->NextRow());
|
||||
}
|
||||
|
||||
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.");
|
||||
}
|
||||
TC_LOG_INFO("server.loading", ">> Loaded %u battlefields in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
|
||||
}
|
||||
|
||||
void BattlefieldMgr::AddZone(uint32 zoneId, Battlefield* bf)
|
||||
|
||||
@@ -26,8 +26,6 @@
|
||||
#include "Bag.h"
|
||||
#include "Battlefield.h"
|
||||
#include "BattlefieldMgr.h"
|
||||
#include "BattlefieldTB.h"
|
||||
#include "BattlefieldWG.h"
|
||||
#include "Battleground.h"
|
||||
#include "BattlegroundMgr.h"
|
||||
#include "BattlegroundPackets.h"
|
||||
@@ -9747,11 +9745,11 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId)
|
||||
case 5389: // Tol Barad Peninsula
|
||||
if (sWorld->getBoolConfig(CONFIG_TOLBARAD_ENABLE))
|
||||
{
|
||||
packet.Worldstates.emplace_back(5385u, sWorld->getWorldState(5385)); // TB_WS_ALLIANCE_CONTROLS_SHOW
|
||||
packet.Worldstates.emplace_back(5384u, sWorld->getWorldState(5384)); // TB_WS_HORDE_CONTROLS_SHOW
|
||||
packet.Worldstates.emplace_back(5387u, sWorld->getWorldState(5387)); // TB_WS_TIME_NEXT_BATTLE_SHOW
|
||||
packet.Worldstates.emplace_back(5546u, sWorld->getWorldState(5546)); // TB_WS_ALLIANCE_ATTACKING_SHOW
|
||||
packet.Worldstates.emplace_back(5547u, sWorld->getWorldState(5547)); // TB_WS_HORDE_ATTACKING_SHOW
|
||||
packet.Worldstates.emplace_back(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, sWorld->getWorldState(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW));
|
||||
packet.Worldstates.emplace_back(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, sWorld->getWorldState(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW));
|
||||
packet.Worldstates.emplace_back(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, sWorld->getWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW));
|
||||
packet.Worldstates.emplace_back(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW, sWorld->getWorldState(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW));
|
||||
packet.Worldstates.emplace_back(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW, sWorld->getWorldState(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW));
|
||||
}
|
||||
break;
|
||||
case 5095: // Tol Barad
|
||||
@@ -9791,7 +9789,7 @@ void Player::SendBattlefieldWorldStates() const
|
||||
{
|
||||
SendUpdateWorldState(WS_BATTLEFIELD_WG_ACTIVE, wg->IsWarTime() ? 0 : 1);
|
||||
uint32 timer = wg->IsWarTime() ? 0 : (wg->GetTimer() / 1000); // 0 - Time to next battle
|
||||
SendUpdateWorldState(ClockWorldState[1], uint32(GameTime::GetGameTime() + timer));
|
||||
SendUpdateWorldState(WS_BATTLEFIELD_WG_TIME_NEXT_BATTLE, uint32(GameTime::GetGameTime() + timer));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9799,10 +9797,10 @@ void Player::SendBattlefieldWorldStates() const
|
||||
{
|
||||
if (Battlefield* tb = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_TB))
|
||||
{
|
||||
SendUpdateWorldState(TB_WS_FACTION_CONTROLLING, uint32(tb->GetDefenderTeam() + 1));
|
||||
SendUpdateWorldState(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, uint32(tb->GetDefenderTeam() + 1));
|
||||
uint32 timer = tb->GetTimer() / 1000;
|
||||
SendUpdateWorldState(TB_WS_TIME_BATTLE_END, uint32(tb->IsWarTime() ? uint32(GameTime::GetGameTime() + timer) : 0));
|
||||
SendUpdateWorldState(TB_WS_TIME_NEXT_BATTLE, uint32(!tb->IsWarTime() ? uint32(GameTime::GetGameTime() + timer) : 0));
|
||||
SendUpdateWorldState(WS_BATTLEFIELD_TB_TIME_BATTLE_END, uint32(tb->IsWarTime() ? uint32(GameTime::GetGameTime() + timer) : 0));
|
||||
SendUpdateWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, uint32(!tb->IsWarTime() ? uint32(GameTime::GetGameTime() + timer) : 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7719,6 +7719,76 @@ enum WorldState : uint32
|
||||
WS_BATTLEFIELD_WG_DEFENDED_A = 4025,
|
||||
WS_BATTLEFIELD_WG_TIME_NEXT_BATTLE = 4354,
|
||||
|
||||
WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW = 5385,
|
||||
WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW = 5384,
|
||||
WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW = 5546,
|
||||
WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW = 5547,
|
||||
|
||||
WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED = 5348,
|
||||
WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED_SHOW = 5349,
|
||||
WS_BATTLEFIELD_TB_TOWERS_DESTROYED = 5347,
|
||||
WS_BATTLEFIELD_TB_TOWERS_DESTROYED_SHOW = 5350,
|
||||
|
||||
WS_BATTLEFIELD_TB_FACTION_CONTROLLING = 5334, // 1 -> Alliance, 2 -> Horde
|
||||
|
||||
WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE = 5332,
|
||||
WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW = 5387,
|
||||
WS_BATTLEFIELD_TB_TIME_BATTLE_END = 5333,
|
||||
WS_BATTLEFIELD_TB_TIME_BATTLE_END_SHOW = 5346,
|
||||
|
||||
WS_BATTLEFIELD_TB_STATE_PREPARATIONS = 5684,
|
||||
WS_BATTLEFIELD_TB_STATE_BATTLE = 5344,
|
||||
|
||||
WS_BATTLEFIELD_TB_PROGRESS_SHOW = 5376,
|
||||
WS_BATTLEFIELD_TB_PROGRESS = 5377, // 0 horde, 100 alliance
|
||||
WS_BATTLEFIELD_TB_PROGRESS_PERCENT_GREY = 5378,
|
||||
|
||||
WS_BATTLEFIELD_TB_KEEP_HORDE = 5469,
|
||||
WS_BATTLEFIELD_TB_KEEP_ALLIANCE = 5470,
|
||||
|
||||
WS_BATTLEFIELD_TB_GARRISON_HORDE_CONTROLLED = 5418,
|
||||
WS_BATTLEFIELD_TB_GARRISON_HORDE_CAPTURING = 5419,
|
||||
WS_BATTLEFIELD_TB_GARRISON_NEUTRAL = 5420, // unused
|
||||
WS_BATTLEFIELD_TB_GARRISON_ALLIANCE_CAPTURING = 5421,
|
||||
WS_BATTLEFIELD_TB_GARRISON_ALLIANCE_CONTROLLED = 5422,
|
||||
|
||||
WS_BATTLEFIELD_TB_VIGIL_HORDE_CONTROLLED = 5423,
|
||||
WS_BATTLEFIELD_TB_VIGIL_HORDE_CAPTURING = 5424,
|
||||
WS_BATTLEFIELD_TB_VIGIL_NEUTRAL = 5425, // unused
|
||||
WS_BATTLEFIELD_TB_VIGIL_ALLIANCE_CAPTURING = 5426,
|
||||
WS_BATTLEFIELD_TB_VIGIL_ALLIANCE_CONTROLLED = 5427,
|
||||
|
||||
WS_BATTLEFIELD_TB_SLAGWORKS_HORDE_CONTROLLED = 5428,
|
||||
WS_BATTLEFIELD_TB_SLAGWORKS_HORDE_CAPTURING = 5429,
|
||||
WS_BATTLEFIELD_TB_SLAGWORKS_NEUTRAL = 5430, // unused
|
||||
WS_BATTLEFIELD_TB_SLAGWORKS_ALLIANCE_CAPTURING = 5431,
|
||||
WS_BATTLEFIELD_TB_SLAGWORKS_ALLIANCE_CONTROLLED = 5432,
|
||||
|
||||
WS_BATTLEFIELD_TB_WEST_INTACT_HORDE = 5433,
|
||||
WS_BATTLEFIELD_TB_WEST_DAMAGED_HORDE = 5434,
|
||||
WS_BATTLEFIELD_TB_WEST_DESTROYED_NEUTRAL = 5435,
|
||||
WS_BATTLEFIELD_TB_WEST_INTACT_ALLIANCE = 5436,
|
||||
WS_BATTLEFIELD_TB_WEST_DAMAGED_ALLIANCE = 5437,
|
||||
WS_BATTLEFIELD_TB_WEST_INTACT_NEUTRAL = 5453, // unused
|
||||
WS_BATTLEFIELD_TB_WEST_DAMAGED_NEUTRAL = 5454, // unused
|
||||
|
||||
WS_BATTLEFIELD_TB_SOUTH_INTACT_HORDE = 5438,
|
||||
WS_BATTLEFIELD_TB_SOUTH_DAMAGED_HORDE = 5439,
|
||||
WS_BATTLEFIELD_TB_SOUTH_DESTROYED_NEUTRAL = 5440,
|
||||
WS_BATTLEFIELD_TB_SOUTH_INTACT_ALLIANCE = 5441,
|
||||
WS_BATTLEFIELD_TB_SOUTH_DAMAGED_ALLIANCE = 5442,
|
||||
WS_BATTLEFIELD_TB_SOUTH_INTACT_NEUTRAL = 5455, // unused
|
||||
WS_BATTLEFIELD_TB_SOUTH_DAMAGED_NEUTRAL = 5456, // unused
|
||||
|
||||
WS_BATTLEFIELD_TB_EAST_INTACT_HORDE = 5443,
|
||||
WS_BATTLEFIELD_TB_EAST_DAMAGED_HORDE = 5444,
|
||||
WS_BATTLEFIELD_TB_EAST_DESTROYED_NEUTRAL = 5445,
|
||||
WS_BATTLEFIELD_TB_EAST_INTACT_ALLIANCE = 5446,
|
||||
WS_BATTLEFIELD_TB_EAST_DAMAGED_ALLIANCE = 5447,
|
||||
WS_BATTLEFIELD_TB_EAST_INTACT_NEUTRAL = 5451,
|
||||
WS_BATTLEFIELD_TB_EAST_DAMAGED_NEUTRAL = 5452,
|
||||
|
||||
|
||||
WS_CURRENCY_RESET_TIME = 20001, // Next arena distribution time
|
||||
WS_WEEKLY_QUEST_RESET_TIME = 20002, // Next weekly quest reset time
|
||||
WS_BG_DAILY_RESET_TIME = 20003, // Next daily BG reset time
|
||||
|
||||
@@ -84,6 +84,10 @@ template<>
|
||||
struct is_script_database_bound<AreaTriggerScript>
|
||||
: std::true_type { };
|
||||
|
||||
template<>
|
||||
struct is_script_database_bound<BattlefieldScript>
|
||||
: std::true_type { };
|
||||
|
||||
template<>
|
||||
struct is_script_database_bound<BattlegroundScript>
|
||||
: std::true_type { };
|
||||
@@ -724,6 +728,11 @@ class ScriptRegistrySwapHooks<AreaTriggerEntityScript, Base>
|
||||
AreaTrigger, AreaTriggerEntityScript, Base
|
||||
> { };
|
||||
|
||||
/// This hook is responsible for swapping BattlefieldScripts
|
||||
template<typename Base>
|
||||
class ScriptRegistrySwapHooks<BattlefieldScript, Base>
|
||||
: public UnsupportedScriptRegistrySwapHooks<Base> { };
|
||||
|
||||
/// This hook is responsible for swapping BattlegroundScript's
|
||||
template<typename Base>
|
||||
class ScriptRegistrySwapHooks<BattlegroundScript, Base>
|
||||
@@ -1720,6 +1729,12 @@ bool ScriptMgr::OnAreaTrigger(Player* player, AreaTriggerEntry const* trigger, b
|
||||
return entered ? tmpscript->OnTrigger(player, trigger) : tmpscript->OnExit(player, trigger);
|
||||
}
|
||||
|
||||
Battlefield* ScriptMgr::CreateBattlefield(uint32 scriptId)
|
||||
{
|
||||
GET_SCRIPT_RET(BattlefieldScript, scriptId, tmpscript, nullptr);
|
||||
return tmpscript->GetBattlefield();
|
||||
}
|
||||
|
||||
Battleground* ScriptMgr::CreateBattleground(BattlegroundTypeId /*typeId*/)
|
||||
{
|
||||
/// @todo Implement script-side battlegrounds.
|
||||
@@ -2437,6 +2452,12 @@ bool OnlyOnceAreaTriggerScript::OnTrigger(Player* player, AreaTriggerEntry const
|
||||
void OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(InstanceScript* script, uint32 triggerId) { script->ResetAreaTriggerDone(triggerId); }
|
||||
void OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(Player const* player, AreaTriggerEntry const* trigger) { if (InstanceScript* instance = player->GetInstanceScript()) ResetAreaTriggerDone(instance, trigger->ID); }
|
||||
|
||||
BattlefieldScript::BattlefieldScript(char const* name)
|
||||
: ScriptObject(name)
|
||||
{
|
||||
ScriptRegistry<BattlefieldScript>::Instance()->AddScript(this);
|
||||
}
|
||||
|
||||
BattlegroundScript::BattlegroundScript(char const* name)
|
||||
: ScriptObject(name)
|
||||
{
|
||||
@@ -2557,6 +2578,7 @@ template class TC_GAME_API ScriptRegistry<ItemScript>;
|
||||
template class TC_GAME_API ScriptRegistry<CreatureScript>;
|
||||
template class TC_GAME_API ScriptRegistry<GameObjectScript>;
|
||||
template class TC_GAME_API ScriptRegistry<AreaTriggerScript>;
|
||||
template class TC_GAME_API ScriptRegistry<BattlefieldScript>;
|
||||
template class TC_GAME_API ScriptRegistry<BattlegroundScript>;
|
||||
template class TC_GAME_API ScriptRegistry<OutdoorPvPScript>;
|
||||
template class TC_GAME_API ScriptRegistry<CommandScript>;
|
||||
|
||||
@@ -28,6 +28,7 @@ class AreaTriggerAI;
|
||||
class AuctionHouseObject;
|
||||
class Aura;
|
||||
class AuraScript;
|
||||
class Battlefield;
|
||||
class Battleground;
|
||||
class BattlegroundMap;
|
||||
class Channel;
|
||||
@@ -470,6 +471,17 @@ class TC_GAME_API OnlyOnceAreaTriggerScript : public AreaTriggerScript
|
||||
void ResetAreaTriggerDone(Player const* player, AreaTriggerEntry const* trigger);
|
||||
};
|
||||
|
||||
class TC_GAME_API BattlefieldScript : public ScriptObject
|
||||
{
|
||||
protected:
|
||||
|
||||
BattlefieldScript(char const* name);
|
||||
|
||||
public:
|
||||
|
||||
virtual Battlefield* GetBattlefield() const = 0;
|
||||
};
|
||||
|
||||
class TC_GAME_API BattlegroundScript : public ScriptObject
|
||||
{
|
||||
protected:
|
||||
@@ -1016,6 +1028,10 @@ class TC_GAME_API ScriptMgr
|
||||
|
||||
bool OnAreaTrigger(Player* player, AreaTriggerEntry const* trigger, bool entered);
|
||||
|
||||
public: /* BattlefieldScript */
|
||||
|
||||
Battlefield* CreateBattlefield(uint32 scriptId);
|
||||
|
||||
public: /* BattlegroundScript */
|
||||
|
||||
Battleground* CreateBattleground(BattlegroundTypeId typeId);
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
|
||||
#include "SpellMgr.h"
|
||||
#include "BattlefieldMgr.h"
|
||||
#include "BattlefieldWG.h"
|
||||
#include "BattlegroundMgr.h"
|
||||
#include "Chat.h"
|
||||
#include "Containers.h"
|
||||
|
||||
+64
-47
@@ -33,6 +33,7 @@
|
||||
#include "ObjectAccessor.h"
|
||||
#include "Player.h"
|
||||
#include "Random.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "World.h"
|
||||
@@ -77,18 +78,18 @@ bool BattlefieldTB::SetupBattlefield()
|
||||
m_updateObjectsTimer = 0;
|
||||
|
||||
// Was there a battle going on or time isn't set yet? Then use m_RestartAfterCrash
|
||||
if (sWorld->getWorldState(TB_WS_STATE_BATTLE) == 1 || sWorld->getWorldState(TB_WS_TIME_NEXT_BATTLE) == 0)
|
||||
sWorld->setWorldState(TB_WS_TIME_NEXT_BATTLE, m_RestartAfterCrash);
|
||||
if (sWorld->getWorldState(WS_BATTLEFIELD_TB_STATE_BATTLE) == 1 || sWorld->getWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE) == 0)
|
||||
sWorld->setWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, m_RestartAfterCrash);
|
||||
|
||||
// Set timer
|
||||
m_Timer = sWorld->getWorldState(TB_WS_TIME_NEXT_BATTLE);
|
||||
m_Timer = sWorld->getWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE);
|
||||
|
||||
// Defending team isn't set yet? Choose randomly.
|
||||
if (sWorld->getWorldState(TB_WS_FACTION_CONTROLLING) == 0)
|
||||
sWorld->setWorldState(TB_WS_FACTION_CONTROLLING, uint32(urand(1, 2)));
|
||||
if (sWorld->getWorldState(WS_BATTLEFIELD_TB_FACTION_CONTROLLING) == 0)
|
||||
sWorld->setWorldState(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, uint32(urand(1, 2)));
|
||||
|
||||
// Set defender team
|
||||
SetDefenderTeam(TeamId(sWorld->getWorldState(TB_WS_FACTION_CONTROLLING) - 1));
|
||||
SetDefenderTeam(TeamId(sWorld->getWorldState(WS_BATTLEFIELD_TB_FACTION_CONTROLLING) - 1));
|
||||
|
||||
// Just to save world states
|
||||
SendInitWorldStatesToAll();
|
||||
@@ -181,7 +182,7 @@ bool BattlefieldTB::Update(uint32 diff)
|
||||
if (m_saveTimer <= diff)
|
||||
{
|
||||
if (!IsWarTime())
|
||||
sWorld->setWorldState(TB_WS_TIME_NEXT_BATTLE, m_Timer);
|
||||
sWorld->setWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, m_Timer);
|
||||
m_saveTimer = 60 * IN_MILLISECONDS;
|
||||
}
|
||||
else
|
||||
@@ -232,16 +233,16 @@ void BattlefieldTB::RemoveAurasFromPlayer(Player* player)
|
||||
// 62 fields, [7]-[68]
|
||||
void BattlefieldTB::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet)
|
||||
{
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_ALLIANCE_ATTACKING_SHOW), int32(IsWarTime() && GetAttackerTeam() == TEAM_ALLIANCE ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_HORDE_ATTACKING_SHOW), int32(IsWarTime() && GetAttackerTeam() == TEAM_HORDE ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW), int32(IsWarTime() && GetAttackerTeam() == TEAM_ALLIANCE ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW), int32(IsWarTime() && GetAttackerTeam() == TEAM_HORDE ? 1 : 0));
|
||||
|
||||
// Not sure if TB
|
||||
//packet.Worldstates.emplace_back(uint32(TB_WS_9_UNKNOWN), int32(1));
|
||||
//packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_9_UNKNOWN), int32(1));
|
||||
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_SOUTH_DAMAGED_NEUTRAL), int32(0));
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_SOUTH_INTACT_NEUTRAL), int32(0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_SOUTH_DAMAGED_NEUTRAL), int32(0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_SOUTH_INTACT_NEUTRAL), int32(0));
|
||||
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_PROGRESS_SHOW), int32(0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_PROGRESS_SHOW), int32(0));
|
||||
|
||||
// Buildings/bases
|
||||
for (BfCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr)
|
||||
@@ -298,26 +299,26 @@ void BattlefieldTB::FillInitialWorldStates(WorldPackets::WorldState::InitWorldSt
|
||||
packet.Worldstates.emplace_back(uint32(TBCapturePoints[i].wsControlled[TEAM_HORDE]), int32(team == TEAM_HORDE && controlled ? 1 : 0));
|
||||
}
|
||||
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_TOWERS_DESTROYED_SHOW), int32(GetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED)));
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_BUILDINGS_CAPTURED_SHOW), int32(IsWarTime() ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_BUILDINGS_CAPTURED), int32(GetData(BATTLEFIELD_TB_DATA_BUILDINGS_CAPTURED)));
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_TOWERS_DESTROYED), int32(0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_TOWERS_DESTROYED_SHOW), int32(GetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED)));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED_SHOW), int32(IsWarTime() ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED), int32(GetData(BATTLEFIELD_TB_DATA_BUILDINGS_CAPTURED)));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_TOWERS_DESTROYED), int32(0));
|
||||
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_TIME_BATTLE_END_SHOW), int32(IsWarTime() ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_TIME_BATTLE_END_SHOW), int32(IsWarTime() ? 1 : 0));
|
||||
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_STATE_BATTLE), int32(IsWarTime() ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_STATE_PREPARATIONS), int32(GetState() == BATTLEFIELD_WARMUP ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_STATE_BATTLE), int32(IsWarTime() ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_STATE_PREPARATIONS), int32(GetState() == BATTLEFIELD_WARMUP ? 1 : 0));
|
||||
|
||||
// Not sure if TB
|
||||
//packet.Worldstates.emplace_back(uint32(TB_WS_35_UNKNOWN), int32(0));
|
||||
//packet.Worldstates.emplace_back(uint32(TB_WS_36_UNKNOWN), int32(0));
|
||||
//packet.Worldstates.emplace_back(uint32(TB_WS_37_UNKNOWN), int32(0));
|
||||
//packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_35_UNKNOWN), int32(0));
|
||||
//packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_36_UNKNOWN), int32(0));
|
||||
//packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_37_UNKNOWN), int32(0));
|
||||
|
||||
// Unused tower icons
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_WEST_DAMAGED_NEUTRAL), int32(0));
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_WEST_INTACT_NEUTRAL), int32(0));
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_EAST_DAMAGED_NEUTRAL), int32(0));
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_EAST_INTACT_NEUTRAL), int32(0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_WEST_DAMAGED_NEUTRAL), int32(0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_WEST_INTACT_NEUTRAL), int32(0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_EAST_DAMAGED_NEUTRAL), int32(0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_EAST_INTACT_NEUTRAL), int32(0));
|
||||
|
||||
// Towers/spires
|
||||
for (uint8 i = 0; i < TB_TOWERS_COUNT; i++)
|
||||
@@ -342,20 +343,20 @@ void BattlefieldTB::FillInitialWorldStates(WorldPackets::WorldState::InitWorldSt
|
||||
}
|
||||
}
|
||||
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_TIME_NEXT_BATTLE_SHOW), int32(!IsWarTime() ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW), int32(!IsWarTime() ? 1 : 0));
|
||||
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_ALLIANCE_CONTROLS_SHOW), int32(!IsWarTime() && GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_HORDE_CONTROLS_SHOW), int32(!IsWarTime() && GetDefenderTeam() == TEAM_HORDE ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW), int32(!IsWarTime() && GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW), int32(!IsWarTime() && GetDefenderTeam() == TEAM_HORDE ? 1 : 0));
|
||||
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_TIME_BATTLE_END), int32(IsWarTime() ? GameTime::GetGameTime() + (m_Timer / 1000) : 0));
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_TIME_NEXT_BATTLE), int32(!IsWarTime() ? GameTime::GetGameTime() + (m_Timer / 1000) : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_TIME_BATTLE_END), int32(IsWarTime() ? GameTime::GetGameTime() + (m_Timer / 1000) : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE), int32(!IsWarTime() ? GameTime::GetGameTime() + (m_Timer / 1000) : 0));
|
||||
|
||||
// Not sure if TB
|
||||
//packet.Worldstates.emplace_back(uint32(TB_WS_65_UNKNOWN), int32(0));
|
||||
//packet.Worldstates.emplace_back(uint32(TB_WS_66_UNKNOWN), int32(0));
|
||||
//packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_65_UNKNOWN), int32(0));
|
||||
//packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_66_UNKNOWN), int32(0));
|
||||
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_KEEP_ALLIANCE), int32(GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(TB_WS_KEEP_HORDE), int32(GetDefenderTeam() == TEAM_HORDE ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_KEEP_ALLIANCE), int32(GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0));
|
||||
packet.Worldstates.emplace_back(uint32(WS_BATTLEFIELD_TB_KEEP_HORDE), int32(GetDefenderTeam() == TEAM_HORDE ? 1 : 0));
|
||||
}
|
||||
|
||||
void BattlefieldTB::SendInitWorldStatesTo(Player* player)
|
||||
@@ -373,13 +374,13 @@ void BattlefieldTB::SendInitWorldStatesTo(Player* player)
|
||||
void BattlefieldTB::SendInitWorldStatesToAll()
|
||||
{
|
||||
// Save
|
||||
sWorld->setWorldState(TB_WS_STATE_BATTLE, uint32(IsWarTime() ? 1 : 0));
|
||||
sWorld->setWorldState(TB_WS_ALLIANCE_CONTROLS_SHOW, uint32(!IsWarTime() && GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0));
|
||||
sWorld->setWorldState(TB_WS_HORDE_CONTROLS_SHOW, uint32(!IsWarTime() && GetDefenderTeam() == TEAM_HORDE ? 1 : 0));
|
||||
sWorld->setWorldState(TB_WS_ALLIANCE_ATTACKING_SHOW, uint32(IsWarTime() && GetAttackerTeam() == TEAM_ALLIANCE ? 1 : 0));
|
||||
sWorld->setWorldState(TB_WS_HORDE_ATTACKING_SHOW, uint32(IsWarTime() && GetAttackerTeam() == TEAM_HORDE ? 1 : 0));
|
||||
sWorld->setWorldState(TB_WS_TIME_NEXT_BATTLE, uint32(!IsWarTime() ? m_Timer : 0));
|
||||
sWorld->setWorldState(TB_WS_TIME_NEXT_BATTLE_SHOW, uint32(!IsWarTime() ? 1 : 0));
|
||||
sWorld->setWorldState(WS_BATTLEFIELD_TB_STATE_BATTLE, uint32(IsWarTime() ? 1 : 0));
|
||||
sWorld->setWorldState(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, uint32(!IsWarTime() && GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0));
|
||||
sWorld->setWorldState(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, uint32(!IsWarTime() && GetDefenderTeam() == TEAM_HORDE ? 1 : 0));
|
||||
sWorld->setWorldState(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW, uint32(IsWarTime() && GetAttackerTeam() == TEAM_ALLIANCE ? 1 : 0));
|
||||
sWorld->setWorldState(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW, uint32(IsWarTime() && GetAttackerTeam() == TEAM_HORDE ? 1 : 0));
|
||||
sWorld->setWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, uint32(!IsWarTime() ? m_Timer : 0));
|
||||
sWorld->setWorldState(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, uint32(!IsWarTime() ? 1 : 0));
|
||||
|
||||
// Tol Barad
|
||||
for (uint8 team = 0; team < PVP_TEAMS_COUNT; team++)
|
||||
@@ -399,7 +400,7 @@ void BattlefieldTB::OnStartGrouping()
|
||||
{
|
||||
UpdateNPCsAndGameObjects();
|
||||
|
||||
SendUpdateWorldState(TB_WS_STATE_PREPARATIONS, uint32(1));
|
||||
SendUpdateWorldState(WS_BATTLEFIELD_TB_STATE_PREPARATIONS, uint32(1));
|
||||
|
||||
// Teleport players out of questing area
|
||||
for (uint8 team = 0; team < PVP_TEAMS_COUNT; ++team)
|
||||
@@ -746,12 +747,12 @@ void BattlefieldTB::TowerDestroyed(TBTowerId tbTowerId)
|
||||
// Add 5 minute bonus time
|
||||
m_Timer += m_BonusTime;
|
||||
|
||||
SendUpdateWorldState(TB_WS_TIME_BATTLE_END, uint32(GameTime::GetGameTime() + (m_Timer / 1000)));
|
||||
SendUpdateWorldState(WS_BATTLEFIELD_TB_TIME_BATTLE_END, uint32(GameTime::GetGameTime() + (m_Timer / 1000)));
|
||||
|
||||
SendWarning(TBTowers[tbTowerId].textDamaged);
|
||||
|
||||
SetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED, GetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED) + 1);
|
||||
SendUpdateWorldState(uint32(TB_WS_TOWERS_DESTROYED), int32(GetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED)));
|
||||
SendUpdateWorldState(uint32(WS_BATTLEFIELD_TB_TOWERS_DESTROYED), int32(GetData(BATTLEFIELD_TB_DATA_TOWERS_DESTROYED)));
|
||||
|
||||
SendUpdateWorldState(uint32(TBTowers[tbTowerId].wsDamaged[GetDefenderTeam()]), int32(0));
|
||||
SendUpdateWorldState(uint32(TBTowers[tbTowerId].wsDestroyed), int32(1));
|
||||
@@ -774,7 +775,7 @@ void BattlefieldTB::UpdateCapturedBaseCount()
|
||||
numCapturedBases += 1;
|
||||
|
||||
SetData(BATTLEFIELD_TB_DATA_BUILDINGS_CAPTURED, numCapturedBases);
|
||||
SendUpdateWorldState(TB_WS_BUILDINGS_CAPTURED, uint32(numCapturedBases));
|
||||
SendUpdateWorldState(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED, uint32(numCapturedBases));
|
||||
|
||||
// Check if attackers won
|
||||
if (numCapturedBases == TB_BASE_COUNT)
|
||||
@@ -870,3 +871,19 @@ void TolBaradCapturePoint::ChangeTeam(TeamId /*oldTeam*/)
|
||||
// Update counter
|
||||
m_Bf->ProcessEvent(nullptr, EVENT_COUNT_CAPTURED_BASE, nullptr);
|
||||
}
|
||||
|
||||
class Battlefield_tol_barad : public BattlefieldScript
|
||||
{
|
||||
public:
|
||||
Battlefield_tol_barad() : BattlefieldScript("battlefield_tb") { }
|
||||
|
||||
Battlefield* GetBattlefield() const override
|
||||
{
|
||||
return new BattlefieldTB();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_BF_tol_barad()
|
||||
{
|
||||
new Battlefield_tol_barad();
|
||||
}
|
||||
+7
-91
@@ -159,90 +159,6 @@ enum TolBaradGOArtKit
|
||||
TB_GO_ARTKIT_FLAG_ALLIANCE = 2,
|
||||
};
|
||||
|
||||
enum TolBaradWorldStates
|
||||
{
|
||||
TB_WS_ALLIANCE_CONTROLS_SHOW = 5385,
|
||||
TB_WS_HORDE_CONTROLS_SHOW = 5384,
|
||||
TB_WS_ALLIANCE_ATTACKING_SHOW = 5546,
|
||||
TB_WS_HORDE_ATTACKING_SHOW = 5547,
|
||||
|
||||
TB_WS_BUILDINGS_CAPTURED = 5348,
|
||||
TB_WS_BUILDINGS_CAPTURED_SHOW = 5349,
|
||||
TB_WS_TOWERS_DESTROYED = 5347,
|
||||
TB_WS_TOWERS_DESTROYED_SHOW = 5350,
|
||||
|
||||
TB_WS_FACTION_CONTROLLING = 5334, // 1 -> Alliance, 2 -> Horde
|
||||
|
||||
TB_WS_TIME_NEXT_BATTLE = 5332,
|
||||
TB_WS_TIME_NEXT_BATTLE_SHOW = 5387,
|
||||
TB_WS_TIME_BATTLE_END = 5333,
|
||||
TB_WS_TIME_BATTLE_END_SHOW = 5346,
|
||||
|
||||
TB_WS_STATE_PREPARATIONS = 5684,
|
||||
TB_WS_STATE_BATTLE = 5344,
|
||||
|
||||
/* Not Sure if TB
|
||||
TB_WS_0_UNKNOWN = 5587,
|
||||
TB_WS_9_UNKNOWN = 5508,
|
||||
TB_WS_35_UNKNOWN = 5679,
|
||||
TB_WS_36_UNKNOWN = 5678,
|
||||
TB_WS_37_UNKNOWN = 5677,
|
||||
TB_WS_60_UNKNOWN = 5361,
|
||||
TB_WS_61_UNKNOWN = 5360,
|
||||
TB_WS_65_UNKNOWN = 5195,
|
||||
TB_WS_66_UNKNOWN = 5193,
|
||||
*/
|
||||
|
||||
TB_WS_PROGRESS_SHOW = 5376,
|
||||
TB_WS_PROGRESS = 5377, // 0 horde, 100 alliance
|
||||
TB_WS_PROGRESS_PERCENT_GREY = 5378,
|
||||
|
||||
TB_WS_KEEP_HORDE = 5469,
|
||||
TB_WS_KEEP_ALLIANCE = 5470,
|
||||
|
||||
TB_WS_GARRISON_HORDE_CONTROLLED = 5418,
|
||||
TB_WS_GARRISON_HORDE_CAPTURING = 5419,
|
||||
TB_WS_GARRISON_NEUTRAL = 5420, // unused
|
||||
TB_WS_GARRISON_ALLIANCE_CAPTURING = 5421,
|
||||
TB_WS_GARRISON_ALLIANCE_CONTROLLED = 5422,
|
||||
|
||||
TB_WS_VIGIL_HORDE_CONTROLLED = 5423,
|
||||
TB_WS_VIGIL_HORDE_CAPTURING = 5424,
|
||||
TB_WS_VIGIL_NEUTRAL = 5425, // unused
|
||||
TB_WS_VIGIL_ALLIANCE_CAPTURING = 5426,
|
||||
TB_WS_VIGIL_ALLIANCE_CONTROLLED = 5427,
|
||||
|
||||
TB_WS_SLAGWORKS_HORDE_CONTROLLED = 5428,
|
||||
TB_WS_SLAGWORKS_HORDE_CAPTURING = 5429,
|
||||
TB_WS_SLAGWORKS_NEUTRAL = 5430, // unused
|
||||
TB_WS_SLAGWORKS_ALLIANCE_CAPTURING = 5431,
|
||||
TB_WS_SLAGWORKS_ALLIANCE_CONTROLLED = 5432,
|
||||
|
||||
TB_WS_WEST_INTACT_HORDE = 5433,
|
||||
TB_WS_WEST_DAMAGED_HORDE = 5434,
|
||||
TB_WS_WEST_DESTROYED_NEUTRAL = 5435,
|
||||
TB_WS_WEST_INTACT_ALLIANCE = 5436,
|
||||
TB_WS_WEST_DAMAGED_ALLIANCE = 5437,
|
||||
TB_WS_WEST_INTACT_NEUTRAL = 5453, // unused
|
||||
TB_WS_WEST_DAMAGED_NEUTRAL = 5454, // unused
|
||||
|
||||
TB_WS_SOUTH_INTACT_HORDE = 5438,
|
||||
TB_WS_SOUTH_DAMAGED_HORDE = 5439,
|
||||
TB_WS_SOUTH_DESTROYED_NEUTRAL = 5440,
|
||||
TB_WS_SOUTH_INTACT_ALLIANCE = 5441,
|
||||
TB_WS_SOUTH_DAMAGED_ALLIANCE = 5442,
|
||||
TB_WS_SOUTH_INTACT_NEUTRAL = 5455, // unused
|
||||
TB_WS_SOUTH_DAMAGED_NEUTRAL = 5456, // unused
|
||||
|
||||
TB_WS_EAST_INTACT_HORDE = 5443,
|
||||
TB_WS_EAST_DAMAGED_HORDE = 5444,
|
||||
TB_WS_EAST_DESTROYED_NEUTRAL = 5445,
|
||||
TB_WS_EAST_INTACT_ALLIANCE = 5446,
|
||||
TB_WS_EAST_DAMAGED_ALLIANCE = 5447,
|
||||
TB_WS_EAST_INTACT_NEUTRAL = 5451,
|
||||
TB_WS_EAST_DAMAGED_NEUTRAL = 5452,
|
||||
};
|
||||
|
||||
enum TolBaradText
|
||||
{
|
||||
// DEBUG Announcer
|
||||
@@ -473,9 +389,9 @@ struct TBCapturePointSpawnData
|
||||
|
||||
TBCapturePointSpawnData const TBCapturePoints[TB_BASE_COUNT] =
|
||||
{
|
||||
{ { -896.96f, 979.497f, 121.441f, 3.124123f }, TB_BASE_IRONCLAD_GARRISON, { GO_CAPTURE_POINT_NORTH_A_DEFENDING, GO_CAPTURE_POINT_NORTH_H_DEFENDING }, { TB_WS_GARRISON_ALLIANCE_CONTROLLED, TB_WS_GARRISON_HORDE_CONTROLLED }, { TB_WS_GARRISON_ALLIANCE_CAPTURING, TB_WS_GARRISON_HORDE_CAPTURING }, TB_WS_GARRISON_NEUTRAL, { TB_TEXT_GARRISON_ALLIANCE_GAINED, TB_TEXT_GARRISON_HORDE_GAINED }, { TB_TEXT_GARRISON_ALLIANCE_LOST, TB_TEXT_GARRISON_HORDE_LOST } },
|
||||
{ { -1492.34f, 1309.87f, 152.961f, 5.462882f }, TB_BASE_WARDENS_VIGIL, { GO_CAPTURE_POINT_WEST_A_DEFENDING, GO_CAPTURE_POINT_WEST_H_DEFENDING }, { TB_WS_VIGIL_ALLIANCE_CONTROLLED, TB_WS_VIGIL_HORDE_CONTROLLED }, { TB_WS_VIGIL_ALLIANCE_CAPTURING, TB_WS_VIGIL_HORDE_CAPTURING }, TB_WS_VIGIL_NEUTRAL, { TB_TEXT_VIGIL_ALLIANCE_GAINED, TB_TEXT_VIGIL_HORDE_GAINED }, { TB_TEXT_VIGIL_ALLIANCE_LOST, TB_TEXT_VIGIL_HORDE_LOST } },
|
||||
{ { -1437.f, 685.556f, 123.421f, 0.802851f }, TB_BASE_SLAGWORKS, { GO_CAPTURE_POINT_EAST_A_DEFENDING, GO_CAPTURE_POINT_EAST_H_DEFENDING }, { TB_WS_SLAGWORKS_ALLIANCE_CONTROLLED, TB_WS_SLAGWORKS_HORDE_CONTROLLED }, { TB_WS_SLAGWORKS_ALLIANCE_CAPTURING, TB_WS_SLAGWORKS_HORDE_CAPTURING }, TB_WS_SLAGWORKS_NEUTRAL, { TB_TEXT_SLAGWORKS_ALLIANCE_GAINED, TB_TEXT_SLAGWORKS_HORDE_GAINED }, { TB_TEXT_SLAGWORKS_ALLIANCE_LOST, TB_TEXT_SLAGWORKS_HORDE_LOST } },
|
||||
{ { -896.96f, 979.497f, 121.441f, 3.124123f }, TB_BASE_IRONCLAD_GARRISON, { GO_CAPTURE_POINT_NORTH_A_DEFENDING, GO_CAPTURE_POINT_NORTH_H_DEFENDING }, { WS_BATTLEFIELD_TB_GARRISON_ALLIANCE_CONTROLLED, WS_BATTLEFIELD_TB_GARRISON_HORDE_CONTROLLED }, { WS_BATTLEFIELD_TB_GARRISON_ALLIANCE_CAPTURING, WS_BATTLEFIELD_TB_GARRISON_HORDE_CAPTURING }, WS_BATTLEFIELD_TB_GARRISON_NEUTRAL, { TB_TEXT_GARRISON_ALLIANCE_GAINED, TB_TEXT_GARRISON_HORDE_GAINED }, { TB_TEXT_GARRISON_ALLIANCE_LOST, TB_TEXT_GARRISON_HORDE_LOST } },
|
||||
{ { -1492.34f, 1309.87f, 152.961f, 5.462882f }, TB_BASE_WARDENS_VIGIL, { GO_CAPTURE_POINT_WEST_A_DEFENDING, GO_CAPTURE_POINT_WEST_H_DEFENDING }, { WS_BATTLEFIELD_TB_VIGIL_ALLIANCE_CONTROLLED, WS_BATTLEFIELD_TB_VIGIL_HORDE_CONTROLLED }, { WS_BATTLEFIELD_TB_VIGIL_ALLIANCE_CAPTURING, WS_BATTLEFIELD_TB_VIGIL_HORDE_CAPTURING }, WS_BATTLEFIELD_TB_VIGIL_NEUTRAL, { TB_TEXT_VIGIL_ALLIANCE_GAINED, TB_TEXT_VIGIL_HORDE_GAINED }, { TB_TEXT_VIGIL_ALLIANCE_LOST, TB_TEXT_VIGIL_HORDE_LOST } },
|
||||
{ { -1437.f, 685.556f, 123.421f, 0.802851f }, TB_BASE_SLAGWORKS, { GO_CAPTURE_POINT_EAST_A_DEFENDING, GO_CAPTURE_POINT_EAST_H_DEFENDING }, { WS_BATTLEFIELD_TB_SLAGWORKS_ALLIANCE_CONTROLLED, WS_BATTLEFIELD_TB_SLAGWORKS_HORDE_CONTROLLED }, { WS_BATTLEFIELD_TB_SLAGWORKS_ALLIANCE_CAPTURING, WS_BATTLEFIELD_TB_SLAGWORKS_HORDE_CAPTURING }, WS_BATTLEFIELD_TB_SLAGWORKS_NEUTRAL, { TB_TEXT_SLAGWORKS_ALLIANCE_GAINED, TB_TEXT_SLAGWORKS_HORDE_GAINED }, { TB_TEXT_SLAGWORKS_ALLIANCE_LOST, TB_TEXT_SLAGWORKS_HORDE_LOST } },
|
||||
};
|
||||
|
||||
// Towers
|
||||
@@ -500,9 +416,9 @@ struct TBTowerInfo
|
||||
|
||||
TBTowerInfo const TBTowers[TB_TOWERS_COUNT] =
|
||||
{
|
||||
{ { -1013.279f, 529.5382f, 146.427f, 1.97222f }, GO_EAST_SPIRE, TB_TEXT_EAST_SPIRE_DAMAGED, TB_TEXT_EAST_SPIRE_DESTROYED, { TB_WS_EAST_INTACT_ALLIANCE, TB_WS_EAST_INTACT_HORDE }, { TB_WS_EAST_DAMAGED_ALLIANCE, TB_WS_EAST_DAMAGED_HORDE }, TB_WS_EAST_DESTROYED_NEUTRAL },
|
||||
{ { -1618.91f, 954.5417f, 168.601f, 0.06981169f }, GO_SOUTH_SPIRE, TB_TEXT_SOUTH_SPIRE_DAMAGED, TB_TEXT_SOUTH_SPIRE_DESTROYED, { TB_WS_SOUTH_INTACT_ALLIANCE, TB_WS_SOUTH_INTACT_HORDE }, { TB_WS_SOUTH_DAMAGED_ALLIANCE, TB_WS_SOUTH_DAMAGED_HORDE }, TB_WS_SOUTH_DESTROYED_NEUTRAL },
|
||||
{ { -950.4097f, 1469.101f, 176.596f, 4.180066f }, GO_WEST_SPIRE, TB_TEXT_WEST_SPIRE_DAMAGED, TB_TEXT_WEST_SPIRE_DESTROYED, { TB_WS_WEST_INTACT_ALLIANCE, TB_WS_WEST_INTACT_HORDE }, { TB_WS_WEST_DAMAGED_ALLIANCE, TB_WS_WEST_DAMAGED_HORDE }, TB_WS_WEST_DESTROYED_NEUTRAL },
|
||||
{ { -1013.279f, 529.5382f, 146.427f, 1.97222f }, GO_EAST_SPIRE, TB_TEXT_EAST_SPIRE_DAMAGED, TB_TEXT_EAST_SPIRE_DESTROYED, { WS_BATTLEFIELD_TB_EAST_INTACT_ALLIANCE, WS_BATTLEFIELD_TB_EAST_INTACT_HORDE }, { WS_BATTLEFIELD_TB_EAST_DAMAGED_ALLIANCE, WS_BATTLEFIELD_TB_EAST_DAMAGED_HORDE }, WS_BATTLEFIELD_TB_EAST_DESTROYED_NEUTRAL },
|
||||
{ { -1618.91f, 954.5417f, 168.601f, 0.06981169f }, GO_SOUTH_SPIRE, TB_TEXT_SOUTH_SPIRE_DAMAGED, TB_TEXT_SOUTH_SPIRE_DESTROYED, { WS_BATTLEFIELD_TB_SOUTH_INTACT_ALLIANCE, WS_BATTLEFIELD_TB_SOUTH_INTACT_HORDE }, { WS_BATTLEFIELD_TB_SOUTH_DAMAGED_ALLIANCE, WS_BATTLEFIELD_TB_SOUTH_DAMAGED_HORDE }, WS_BATTLEFIELD_TB_SOUTH_DESTROYED_NEUTRAL },
|
||||
{ { -950.4097f, 1469.101f, 176.596f, 4.180066f }, GO_WEST_SPIRE, TB_TEXT_WEST_SPIRE_DAMAGED, TB_TEXT_WEST_SPIRE_DESTROYED, { WS_BATTLEFIELD_TB_WEST_INTACT_ALLIANCE, WS_BATTLEFIELD_TB_WEST_INTACT_HORDE }, { WS_BATTLEFIELD_TB_WEST_DAMAGED_ALLIANCE, WS_BATTLEFIELD_TB_WEST_DAMAGED_HORDE }, WS_BATTLEFIELD_TB_WEST_DESTROYED_NEUTRAL },
|
||||
};
|
||||
|
||||
// Vehicles
|
||||
@@ -632,7 +548,7 @@ class TolBaradCapturePoint : public BfCapturePoint
|
||||
* Tol Barad battlefield *
|
||||
* ##################### */
|
||||
|
||||
class TC_GAME_API BattlefieldTB : public Battlefield
|
||||
class BattlefieldTB : public Battlefield
|
||||
{
|
||||
public:
|
||||
~BattlefieldTB();
|
||||
+17
@@ -31,6 +31,7 @@
|
||||
#include "ObjectAccessor.h"
|
||||
#include "Player.h"
|
||||
#include "Random.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "TemporarySummon.h"
|
||||
#include "World.h"
|
||||
@@ -1851,3 +1852,19 @@ void WintergraspWorkshop::Save()
|
||||
{
|
||||
sWorld->setWorldState(_staticInfo->WorldStateId, _state);
|
||||
}
|
||||
|
||||
class Battlefield_wintergrasp : public BattlefieldScript
|
||||
{
|
||||
public:
|
||||
Battlefield_wintergrasp() : BattlefieldScript("battlefield_wg") { }
|
||||
|
||||
Battlefield* GetBattlefield() const override
|
||||
{
|
||||
return new BattlefieldWG();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_BF_wintergrasp()
|
||||
{
|
||||
new Battlefield_wintergrasp();
|
||||
}
|
||||
+3
-9
@@ -33,12 +33,6 @@ struct WintergraspObjectPositionData;
|
||||
typedef std::vector<BfWGGameObjectBuilding*> GameObjectBuildingVect;
|
||||
typedef std::vector<WintergraspWorkshop*> WorkshopVect;
|
||||
|
||||
// used in Player.cpp
|
||||
extern uint32 const ClockWorldState[];
|
||||
|
||||
// used in zone_wintergrasp.cpp
|
||||
TC_GAME_API extern uint32 const WintergraspFaction[];
|
||||
|
||||
enum WintergraspSpells
|
||||
{
|
||||
// Wartime auras
|
||||
@@ -207,7 +201,7 @@ class WintergraspCapturePoint : public BfCapturePoint
|
||||
* WinterGrasp Battlefield *
|
||||
* ######################### */
|
||||
|
||||
class TC_GAME_API BattlefieldWG : public Battlefield
|
||||
class BattlefieldWG : public Battlefield
|
||||
{
|
||||
public:
|
||||
~BattlefieldWG();
|
||||
@@ -499,7 +493,7 @@ enum WintergraspGameObject
|
||||
// ********************************************************************
|
||||
|
||||
// Structure for different buildings that can be destroyed during battle
|
||||
struct TC_GAME_API BfWGGameObjectBuilding
|
||||
struct BfWGGameObjectBuilding
|
||||
{
|
||||
private:
|
||||
// WG object
|
||||
@@ -552,7 +546,7 @@ public:
|
||||
};
|
||||
|
||||
// Structure for the 6 workshop
|
||||
struct TC_GAME_API WintergraspWorkshop
|
||||
struct WintergraspWorkshop
|
||||
{
|
||||
private:
|
||||
BattlefieldWG* _wg; // Pointer to wintergrasp
|
||||
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
void AddSC_BF_wintergrasp();
|
||||
void AddSC_BF_tol_barad();
|
||||
|
||||
void AddBattlefieldScripts()
|
||||
{
|
||||
AddSC_BF_wintergrasp();
|
||||
AddSC_BF_tol_barad();
|
||||
}
|
||||
@@ -18,7 +18,7 @@
|
||||
#include "ScriptMgr.h"
|
||||
#include "Battlefield.h"
|
||||
#include "BattlefieldMgr.h"
|
||||
#include "BattlefieldTB.h"
|
||||
#include "Battlefield/BattlefieldTB.h"
|
||||
#include "DB2Stores.h"
|
||||
#include "ObjectMgr.h"
|
||||
#include "Player.h"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include "ScriptMgr.h"
|
||||
#include "Battlefield.h"
|
||||
#include "BattlefieldMgr.h"
|
||||
#include "BattlefieldWG.h"
|
||||
#include "Battlefield/BattlefieldWG.h"
|
||||
#include "DB2Stores.h"
|
||||
#include "GameObject.h"
|
||||
#include "GameObjectAI.h"
|
||||
@@ -360,8 +360,8 @@ class go_wg_vehicle_teleporter : public GameObjectScript
|
||||
|
||||
bool IsFriendly(Unit* passenger)
|
||||
{
|
||||
return ((me->GetFaction() == WintergraspFaction[TEAM_HORDE] && passenger->GetFaction() == HORDE) ||
|
||||
(me->GetFaction() == WintergraspFaction[TEAM_ALLIANCE] && passenger->GetFaction() == ALLIANCE));
|
||||
return ((me->GetFaction() == FACTION_HORDE_GENERIC_WG && passenger->GetFaction() == HORDE) ||
|
||||
(me->GetFaction() == FACTION_ALLIANCE_GENERIC_WG && passenger->GetFaction() == ALLIANCE));
|
||||
}
|
||||
|
||||
Creature* GetValidVehicle(Creature* cVeh)
|
||||
|
||||
Reference in New Issue
Block a user