Battlefields: Move BF scripts out of game
This commit introduces the usual script interface for battlefields.
This commit is contained in:
1 parent
d5f7d7b754
commit
0ef220fca0
17 files changed
+320
-206
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,427 @@
|
||||
/*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#ifndef BATTLEFIELD_TB_
|
||||
#define BATTLEFIELD_TB_
|
||||
|
||||
#include "Battlefield.h"
|
||||
|
||||
class BattlefieldTB;
|
||||
class TolBaradCapturePoint;
|
||||
|
||||
namespace WorldPackets
|
||||
{
|
||||
namespace WorldState
|
||||
{
|
||||
class InitWorldStates;
|
||||
}
|
||||
}
|
||||
|
||||
enum TolBaradInfo
|
||||
{
|
||||
BATTLEFIELD_TB_MAPID = 732, // Tol Barad
|
||||
BATTLEFIELD_TB_ZONEID = 5095, // Tol Barad
|
||||
};
|
||||
|
||||
enum TolBaradData
|
||||
{
|
||||
BATTLEFIELD_TB_DATA_BUILDINGS_CAPTURED,
|
||||
BATTLEFIELD_TB_DATA_TOWERS_INTACT,
|
||||
BATTLEFIELD_TB_DATA_TOWERS_DESTROYED,
|
||||
BATTLEFIELD_TB_DATA_MAX,
|
||||
};
|
||||
|
||||
enum TolBaradSpells
|
||||
{
|
||||
// Quest completion
|
||||
SPELL_VICTORY_ALLIANCE = 94665,
|
||||
SPELL_VICTORY_HORDE = 94763,
|
||||
|
||||
// Rewards
|
||||
SPELL_REWARD_VICTORY_ALLIANCE = 89789,
|
||||
SPELL_REWARD_VICTORY_HORDE = 89791,
|
||||
SPELL_REWARD_DEFEAT = 89793,
|
||||
|
||||
SPELL_REWARD_TOWER_INTACT = 89794,
|
||||
SPELL_REWARD_TOWER_DAMAGED = 89795,
|
||||
SPELL_REWARD_TOWER_DESTROYED = 89796,
|
||||
|
||||
// Player buffs
|
||||
SPELL_TB_SLOW_FALL = 88473,
|
||||
SPELL_TB_VETERAN = 84655,
|
||||
SPELL_TOWER_ATTACK_BONUS = 82629,
|
||||
SPELL_TB_SPIRIT_HEAL_CHANNEL = 22011, // this spell replaces m_LastResurrectTimer in Battlefield.cpp?
|
||||
SPELL_TB_SPIRITUAL_IMMUNITY = 95332,
|
||||
|
||||
// Vehicle
|
||||
SPELL_THICK_LAYER_OF_RUST = 95330,
|
||||
SPELL_RIDE_TOL_BARAD_VEHICLE = 84754,
|
||||
SPELL_DEPLOY_SIEGE_MODE = 84974,
|
||||
SPELL_SIEGE_CANNON_AURA = 85167, // aura, periodically triggers spell 85122
|
||||
// SPELL_SIEGE_CANNON_EFFECT = 85122, // targets random
|
||||
// SPELL_SIEGE_CANNON_DAMAGE = 85125,
|
||||
SPELL_LEAVE_SIEGE_MODE = 85078,
|
||||
|
||||
SPELL_TOWER_RANGE_FINDER_PERIODIC = 85671,
|
||||
SPELL_TOWER_RANGE_FINDER = 84979,
|
||||
|
||||
// Teleportation spells
|
||||
SPELL_TB_THE_HOLE_TELEPORT = 89035,
|
||||
SPELL_TB_D_BLOCK_TELEPORT = 89037,
|
||||
SPELL_TB_CURSED_DEPTHS_TELEPORT = 89038,
|
||||
};
|
||||
|
||||
enum TolBaradNpcs
|
||||
{
|
||||
// Cursed Depths area
|
||||
NPC_TOLBARAD_CAPTIVE_SPIRIT = 47531,
|
||||
NPC_TOLBARAD_CELLBLOCK_OOZE = 47534,
|
||||
NPC_TOLBARAD_ARCHMAGE_GALUS = 47537,
|
||||
NPC_TOLBARAD_GHASTLY_CONVICT = 47590,
|
||||
|
||||
// D-Block area
|
||||
NPC_TOLBARAD_SHIVARRA_DESTROYER = 47540,
|
||||
NPC_TOLBARAD_CELL_WATCHER = 47542,
|
||||
NPC_TOLBARAD_SVARNOS = 47544,
|
||||
NPC_TOLBARAD_JAILED_WRATHGUARD = 47548,
|
||||
NPC_TOLBARAD_IMPRISONED_IMP = 47549,
|
||||
|
||||
// The Hole area
|
||||
NPC_TOLBARAD_WARDEN_SILVA = 48036,
|
||||
NPC_TOLBARAD_WARDEN_GUARD = 47561,
|
||||
NPC_TOLBARAD_IMPRISONED_WORKER = 47550,
|
||||
NPC_TOLBARAD_EXILED_MAGE = 47552,
|
||||
|
||||
// Other
|
||||
NPC_CROCOLISK = 47591,
|
||||
NPC_PROBLIM = 47593,
|
||||
|
||||
// Graveyard spirits
|
||||
NPC_TB_GY_SPIRIT_BARADIN_HOLD_A = 45066,
|
||||
NPC_TB_GY_SPIRIT_BARADIN_HOLD_H = 45067,
|
||||
NPC_TB_GY_SPIRIT_IRONCLAD_GARRISON_A = 45068,
|
||||
NPC_TB_GY_SPIRIT_WARDENS_VIGIL_A = 45069,
|
||||
NPC_TB_GY_SPIRIT_EAST_SPIRE_A = 45070,
|
||||
NPC_TB_GY_SPIRIT_SOUTH_SPIRE_A = 45071,
|
||||
NPC_TB_GY_SPIRIT_WEST_SPIRE_A = 45072,
|
||||
NPC_TB_GY_SPIRIT_SLAGWORKS_A = 45073,
|
||||
NPC_TB_GY_SPIRIT_IRONCLAD_GARRISON_H = 45074,
|
||||
NPC_TB_GY_SPIRIT_WARDENS_VIGIL_H = 45075,
|
||||
NPC_TB_GY_SPIRIT_SLAGWORKS_H = 45076,
|
||||
NPC_TB_GY_SPIRIT_WEST_SPIRE_H = 45077,
|
||||
NPC_TB_GY_SPIRIT_EAST_SPIRE_H = 45078,
|
||||
NPC_TB_GY_SPIRIT_SOUTH_SPIRE_H = 45079,
|
||||
|
||||
// Stalker, dummies
|
||||
NPC_DEBUG_ANNOUNCER = 43679,
|
||||
NPC_TOWER_RANGE_FINDER = 45492,
|
||||
NPC_TOWER_CANNON_TARGET = 45561,
|
||||
NPC_SIEGE_ENGINE_TURRET = 45564,
|
||||
};
|
||||
|
||||
enum TolBaradGOs
|
||||
{
|
||||
// Towers
|
||||
GO_WEST_SPIRE = 204588,
|
||||
GO_EAST_SPIRE = 204589,
|
||||
GO_SOUTH_SPIRE = 204590,
|
||||
|
||||
GO_CAPTURE_POINT_NORTH_A_DEFENDING = 205068,
|
||||
GO_CAPTURE_POINT_NORTH_H_DEFENDING = 205096,
|
||||
GO_CAPTURE_POINT_EAST_A_DEFENDING = 205138,
|
||||
GO_CAPTURE_POINT_EAST_H_DEFENDING = 205139,
|
||||
GO_CAPTURE_POINT_WEST_A_DEFENDING = 205101,
|
||||
GO_CAPTURE_POINT_WEST_H_DEFENDING = 205103,
|
||||
|
||||
// Entrance gates and instance door
|
||||
GO_TOLBARAD_GATES = 206598,
|
||||
GO_TOLBARAD_DOOR = 206576,
|
||||
|
||||
// Other
|
||||
GO_TB_MEETING_STONE = 206668,
|
||||
|
||||
GO_TB_INSTANCE_VISUAL_1 = 207746,
|
||||
GO_TB_INSTANCE_VISUAL_2 = 207747,
|
||||
GO_TB_INSTANCE_VISUAL_3 = 210114,
|
||||
GO_TB_INSTANCE_VISUAL_4 = 210115,
|
||||
};
|
||||
|
||||
enum TolBaradGOArtKit
|
||||
{
|
||||
TB_GO_ARTKIT_FLAG_NONE = 0,
|
||||
TB_GO_ARTKIT_FLAG_HORDE = 1,
|
||||
TB_GO_ARTKIT_FLAG_ALLIANCE = 2,
|
||||
};
|
||||
|
||||
enum TolBaradText
|
||||
{
|
||||
// DEBUG Announcer
|
||||
TB_TEXT_EAST_SPIRE_DAMAGED = 1,
|
||||
TB_TEXT_EAST_SPIRE_DESTROYED = 2,
|
||||
TB_TEXT_WEST_SPIRE_DAMAGED = 3,
|
||||
TB_TEXT_WEST_SPIRE_DESTROYED = 4,
|
||||
TB_TEXT_SOUTH_SPIRE_DAMAGED = 5,
|
||||
TB_TEXT_SOUTH_SPIRE_DESTROYED = 6,
|
||||
TB_TEXT_GARRISON_ALLIANCE_GAINED = 7,
|
||||
TB_TEXT_GARRISON_ALLIANCE_LOST = 8,
|
||||
TB_TEXT_GARRISON_HORDE_GAINED = 9,
|
||||
TB_TEXT_GARRISON_HORDE_LOST = 10,
|
||||
TB_TEXT_VIGIL_ALLIANCE_GAINED = 11,
|
||||
TB_TEXT_VIGIL_ALLIANCE_LOST = 12,
|
||||
TB_TEXT_VIGIL_HORDE_GAINED = 13,
|
||||
TB_TEXT_VIGIL_HORDE_LOST = 14,
|
||||
TB_TEXT_SLAGWORKS_ALLIANCE_GAINED = 15,
|
||||
TB_TEXT_SLAGWORKS_ALLIANCE_LOST = 16,
|
||||
TB_TEXT_SLAGWORKS_HORDE_GAINED = 17,
|
||||
TB_TEXT_SLAGWORKS_HORDE_LOST = 18,
|
||||
TB_TEXT_FORTRESS_DEFEND_ALLIANCE = 19,
|
||||
TB_TEXT_FORTRESS_DEFEND_HORDE = 20,
|
||||
TB_TEXT_FORTRESS_CAPTURE_ALLIANCE = 21,
|
||||
TB_TEXT_FORTRESS_CAPTURE_HORDE = 22,
|
||||
TB_TEXT_VEHICLE_OUTSIDE_WARNING = 23,
|
||||
TB_TEXT_PREPARATIONS_IN_5_MIN = 24,
|
||||
TB_TEXT_PREPARATIONS_IN_2_MIN = 25,
|
||||
TB_TEXT_PREPARATIONS_IN_1_MIN = 26,
|
||||
};
|
||||
|
||||
enum TolBaradEvent
|
||||
{
|
||||
EVENT_COUNT_CAPTURED_BASE = 1,
|
||||
};
|
||||
|
||||
// Quest Infantry NPCs
|
||||
enum TBQuestInfantryEntry
|
||||
{
|
||||
NPC_ALLIANCE_WARRIOR_INFANTRY = 47599,
|
||||
NPC_ALLIANCE_PALADIN_INFANTRY = 47600,
|
||||
NPC_ALLIANCE_HUNTER_INFANTRY = 47595,
|
||||
NPC_ALLIANCE_MAGE_INFANTRY = 47598,
|
||||
|
||||
NPC_HORDE_DRUID_INFANTRY = 47607,
|
||||
NPC_HORDE_MAGE_INFANTRY = 47608,
|
||||
NPC_HORDE_ROGUE_INFANTRY = 47609,
|
||||
NPC_HORDE_SHAMAN_INFANTRY = 47610,
|
||||
};
|
||||
|
||||
// Guard NPCs
|
||||
enum TBGuardEntry
|
||||
{
|
||||
NPC_BARADIN_GUARD = 51165,
|
||||
NPC_HELLSCREAMS_SENTRY = 51166,
|
||||
};
|
||||
|
||||
enum TBFactionNPCEntry
|
||||
{
|
||||
// Guards
|
||||
NPC_BARADIN_GUARD_1 = 47324,
|
||||
NPC_BARADIN_GUARD_2 = 47325,
|
||||
NPC_BARADIN_GRUNT_1 = 47335,
|
||||
NPC_BARADIN_GRUNT_2 = 47336,
|
||||
|
||||
// Questgivers
|
||||
NPC_SERGEANT_PARKER = 48066, // Everytime
|
||||
NPC_COMMANDER_STEVENS = 48039, // One of these three
|
||||
NPC_2ND_LIEUTENANT_WANSWORTH = 48061,
|
||||
NPC_MARSHAL_FALLOWS = 48074,
|
||||
|
||||
NPC_COMMANDER_ZANOTH = 48069, // Everytime!
|
||||
NPC_STAFF_SERGEANT_LAZGAR = 48062, // One of these three
|
||||
NPC_DRILLMASTER_RAZGOTH = 48070,
|
||||
NPC_PRIVATE_GARNOTH = 48071,
|
||||
|
||||
// Portal summoners
|
||||
NPC_MAVEN_ZARA = 50173,
|
||||
NPC_RHAGHA = 50167,
|
||||
};
|
||||
|
||||
// Questing
|
||||
enum TBQuesting
|
||||
{
|
||||
CELLBLOCK_THE_HOLE = 0, // The Hole area
|
||||
CELLBLOCK_D_BLOCK = 1, // D-Block area
|
||||
CELLBLOCK_CURSED_DEPTHS = 2, // Cursed Depths area
|
||||
CELLBLOCK_MAX = 3,
|
||||
CELLBLOCK_NONE,
|
||||
|
||||
AREA_THE_HOLE = 5659,
|
||||
AREA_D_BLOCK = 5657,
|
||||
AREA_CURSED_DEPTHS = 5658,
|
||||
|
||||
GO_GATE_TO_THE_HOLE = 206845,
|
||||
GO_GATE_D_BLOCK = 206844,
|
||||
GO_CURSED_DEPTHS_GATE = 206843,
|
||||
|
||||
GO_CRATE_OF_CELLBLOCK_RATIONS = 206996,
|
||||
GO_CURSED_SHACKLES = 206905,
|
||||
GO_DUSTY_PRISON_JOURNAL = 206890,
|
||||
};
|
||||
|
||||
// Capture Points
|
||||
enum TBCapturePointId
|
||||
{
|
||||
TB_BASE_IRONCLAD_GARRISON = 0,
|
||||
TB_BASE_WARDENS_VIGIL = 1,
|
||||
TB_BASE_SLAGWORKS = 2,
|
||||
TB_BASE_COUNT = 3,
|
||||
};
|
||||
|
||||
// Towers
|
||||
enum TBTowerId
|
||||
{
|
||||
TB_TOWER_EAST_SPIRE = 0,
|
||||
TB_TOWER_SOUTH_SPIRE = 1,
|
||||
TB_TOWER_WEST_SPIRE = 2,
|
||||
TB_TOWERS_COUNT = 3,
|
||||
};
|
||||
|
||||
// Vehicles
|
||||
enum TBVehicles
|
||||
{
|
||||
NPC_ABANDONED_SIEGE_ENGINE = 45344,
|
||||
};
|
||||
|
||||
// Banners
|
||||
enum TBFactionBannerEntry
|
||||
{
|
||||
GO_BARADINS_WARDEN_BANNER = 207391, // Alliance banner
|
||||
GO_HELLSCREAM_REACH_BANNER = 207400, // Horde banner
|
||||
};
|
||||
|
||||
// Portals
|
||||
enum TBPortalEntry
|
||||
{
|
||||
TB_PORTAL_ALLIANCE = 208227, // Portal to Stormwind
|
||||
TB_PORTAL_HORDE = 208226, // Portal to Orgrimmar
|
||||
};
|
||||
|
||||
/* ################### *
|
||||
* Tol Barad graveyard *
|
||||
* ################### */
|
||||
|
||||
enum TBGraveyardAreaId
|
||||
{
|
||||
// Tol Barad
|
||||
TB_GY_BARADIN_HOLD = 1789,
|
||||
TB_GY_IRONCLAD_GARRISON = 1783,
|
||||
TB_GY_WARDENS_VIGIL = 1785,
|
||||
TB_GY_SLAGWORKS = 1787,
|
||||
TB_GY_WEST_SPIRE = 1784,
|
||||
TB_GY_SOUTH_SPIRE = 1786,
|
||||
TB_GY_EAST_SPIRE = 1788,
|
||||
BATTLEFIELD_TB_GRAVEYARD_MAX = 7,
|
||||
|
||||
// Tol Barad Peninsula
|
||||
TBP_GY_ALLIANCE_DAILY = 1808,
|
||||
TBP_GY_HORDE_DAILY = 1807,
|
||||
};
|
||||
|
||||
/* ####################### *
|
||||
* Tol Barad capture point *
|
||||
* ####################### */
|
||||
|
||||
class TolBaradCapturePoint : public BfCapturePoint
|
||||
{
|
||||
public:
|
||||
TolBaradCapturePoint(BattlefieldTB* battlefield, TeamId teamInControl);
|
||||
|
||||
void ChangeTeam(TeamId /*oldteam*/) override;
|
||||
};
|
||||
|
||||
/* ##################### *
|
||||
* Tol Barad battlefield *
|
||||
* ##################### */
|
||||
|
||||
class BattlefieldTB : public Battlefield
|
||||
{
|
||||
public:
|
||||
~BattlefieldTB();
|
||||
|
||||
void OnStartGrouping() override;
|
||||
void OnBattleStart() override;
|
||||
void OnBattleEnd(bool endByTimer) override;
|
||||
|
||||
void OnPlayerEnterZone(Player* player) override;
|
||||
void OnPlayerLeaveZone(Player* player) override;
|
||||
|
||||
void OnPlayerJoinWar(Player* player) override;
|
||||
void OnPlayerLeaveWar(Player* player) override;
|
||||
|
||||
bool Update(uint32 diff) override;
|
||||
|
||||
void OnCreatureCreate(Creature* creature) override;
|
||||
//void OnCreatureRemove(Creature* creature) override;
|
||||
|
||||
void OnGameObjectCreate(GameObject* go) override;
|
||||
|
||||
void UpdateCapturedBaseCount();
|
||||
//void UpdatedDestroyedTowerCount(TeamId team);
|
||||
|
||||
//void DoCompleteOrIncrementAchievement(uint32 achievement, Player* player, uint8 incrementNumber = 1) override;
|
||||
|
||||
bool SetupBattlefield() override;
|
||||
|
||||
void SendInitWorldStatesTo(Player* player);
|
||||
void SendInitWorldStatesToAll() override;
|
||||
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*data*/) override;
|
||||
|
||||
void HandleKill(Player* killer, Unit* victim) override;
|
||||
//void OnUnitDeath(Unit* unit) override;
|
||||
void PromotePlayer(Player* killer);
|
||||
void RemoveAurasFromPlayer(Player* player);
|
||||
|
||||
void ProcessEvent(WorldObject* obj, uint32 eventId, WorldObject* invoker) override;
|
||||
|
||||
void TowerDamaged(TBTowerId tbTowerId);
|
||||
void TowerDestroyed(TBTowerId tbTowerId);
|
||||
|
||||
// returns the graveyardId in the specified area.
|
||||
//uint8 GetSpiritGraveyardId(uint32 areaId) const;
|
||||
|
||||
void UpdateNPCsAndGameObjects();
|
||||
|
||||
protected:
|
||||
// Minutes till battle preparation warnings
|
||||
bool warnedFiveMinutes;
|
||||
bool warnedTwoMinutes;
|
||||
bool warnedOneMinute;
|
||||
|
||||
uint32 m_saveTimer;
|
||||
|
||||
bool updatedNPCAndObjects;
|
||||
uint32 m_updateObjectsTimer;
|
||||
|
||||
uint32 m_BonusTime;
|
||||
|
||||
GuidSet BattleInactiveNPCs;
|
||||
GuidSet BattleInactiveGOs;
|
||||
|
||||
GuidSet TemporaryNPCs;
|
||||
GuidSet TemporaryGOs;
|
||||
|
||||
GuidSet Towers;
|
||||
|
||||
uint8 m_iCellblockRandom;
|
||||
|
||||
ObjectGuid TBGatesGUID;
|
||||
ObjectGuid TBDoorGUID;
|
||||
|
||||
ObjectGuid m_gateToTheHoleGUID;
|
||||
ObjectGuid m_gateDBlockGUID;
|
||||
ObjectGuid m_gateCursedDepthsGUID;
|
||||
};
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,583 @@
|
||||
/*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#ifndef BATTLEFIELD_WG_
|
||||
#define BATTLEFIELD_WG_
|
||||
|
||||
#include "Battlefield.h"
|
||||
|
||||
class Group;
|
||||
class BattlefieldWG;
|
||||
class WintergraspCapturePoint;
|
||||
|
||||
struct BfWGGameObjectBuilding;
|
||||
struct WintergraspWorkshop;
|
||||
struct StaticWintergraspTowerInfo;
|
||||
struct StaticWintergraspWorkshopInfo;
|
||||
struct WintergraspObjectPositionData;
|
||||
|
||||
namespace WorldPackets
|
||||
{
|
||||
namespace WorldState
|
||||
{
|
||||
class InitWorldStates;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
typedef std::vector<BfWGGameObjectBuilding*> GameObjectBuildingVect;
|
||||
typedef std::vector<WintergraspWorkshop*> WorkshopVect;
|
||||
|
||||
enum WintergraspSpells
|
||||
{
|
||||
// Wartime auras
|
||||
SPELL_RECRUIT = 37795,
|
||||
SPELL_CORPORAL = 33280,
|
||||
SPELL_LIEUTENANT = 55629,
|
||||
SPELL_TENACITY = 58549,
|
||||
SPELL_TENACITY_VEHICLE = 59911,
|
||||
SPELL_TOWER_CONTROL = 62064,
|
||||
SPELL_SPIRITUAL_IMMUNITY = 58729,
|
||||
SPELL_GREAT_HONOR = 58555,
|
||||
SPELL_GREATER_HONOR = 58556,
|
||||
SPELL_GREATEST_HONOR = 58557,
|
||||
SPELL_ALLIANCE_FLAG = 14268,
|
||||
SPELL_HORDE_FLAG = 14267,
|
||||
SPELL_GRAB_PASSENGER = 61178,
|
||||
|
||||
// Reward spells
|
||||
SPELL_VICTORY_REWARD = 56902,
|
||||
SPELL_DEFEAT_REWARD = 58494,
|
||||
SPELL_DAMAGED_TOWER = 59135,
|
||||
SPELL_DESTROYED_TOWER = 59136,
|
||||
SPELL_DAMAGED_BUILDING = 59201,
|
||||
SPELL_INTACT_BUILDING = 59203,
|
||||
|
||||
SPELL_TELEPORT_BRIDGE = 59096,
|
||||
SPELL_TELEPORT_FORTRESS = 60035,
|
||||
|
||||
SPELL_TELEPORT_DALARAN = 53360,
|
||||
SPELL_VICTORY_AURA = 60044,
|
||||
|
||||
// Other spells
|
||||
SPELL_WINTERGRASP_WATER = 36444,
|
||||
SPELL_ESSENCE_OF_WINTERGRASP = 58045,
|
||||
SPELL_WINTERGRASP_RESTRICTED_FLIGHT_AREA = 91604,
|
||||
|
||||
// Phasing spells
|
||||
SPELL_HORDE_CONTROLS_FACTORY_PHASE_SHIFT = 56618, // ADDS PHASE 16
|
||||
SPELL_ALLIANCE_CONTROLS_FACTORY_PHASE_SHIFT = 56617, // ADDS PHASE 32
|
||||
|
||||
SPELL_HORDE_CONTROL_PHASE_SHIFT = 55773, // ADDS PHASE 64
|
||||
SPELL_ALLIANCE_CONTROL_PHASE_SHIFT = 55774 // ADDS PHASE 128
|
||||
};
|
||||
|
||||
enum WintergraspData
|
||||
{
|
||||
BATTLEFIELD_WG_DATA_DAMAGED_TOWER_DEF,
|
||||
BATTLEFIELD_WG_DATA_BROKEN_TOWER_DEF,
|
||||
BATTLEFIELD_WG_DATA_DAMAGED_TOWER_ATT,
|
||||
BATTLEFIELD_WG_DATA_BROKEN_TOWER_ATT,
|
||||
BATTLEFIELD_WG_DATA_MAX_VEHICLE_A,
|
||||
BATTLEFIELD_WG_DATA_MAX_VEHICLE_H,
|
||||
BATTLEFIELD_WG_DATA_VEHICLE_A,
|
||||
BATTLEFIELD_WG_DATA_VEHICLE_H,
|
||||
BATTLEFIELD_WG_DATA_WON_A,
|
||||
BATTLEFIELD_WG_DATA_DEF_A,
|
||||
BATTLEFIELD_WG_DATA_WON_H,
|
||||
BATTLEFIELD_WG_DATA_DEF_H,
|
||||
BATTLEFIELD_WG_DATA_MAX,
|
||||
|
||||
BATTLEFIELD_WG_MAPID = 571 // Northrend
|
||||
};
|
||||
|
||||
enum WintergraspAchievements
|
||||
{
|
||||
ACHIEVEMENTS_WIN_WG = 1717,
|
||||
ACHIEVEMENTS_WIN_WG_100 = 1718, /// @todo: Has to be implemented
|
||||
ACHIEVEMENTS_WG_GNOMESLAUGHTER = 1723, /// @todo: Has to be implemented
|
||||
ACHIEVEMENTS_WG_TOWER_DESTROY = 1727,
|
||||
ACHIEVEMENTS_DESTRUCTION_DERBY_A = 1737, /// @todo: Has to be implemented
|
||||
ACHIEVEMENTS_WG_TOWER_CANNON_KILL = 1751, /// @todo: Has to be implemented
|
||||
ACHIEVEMENTS_WG_MASTER_A = 1752, /// @todo: Has to be implemented
|
||||
ACHIEVEMENTS_WIN_WG_TIMER_10 = 1755,
|
||||
ACHIEVEMENTS_STONE_KEEPER_50 = 2085, /// @todo: Has to be implemented
|
||||
ACHIEVEMENTS_STONE_KEEPER_100 = 2086, /// @todo: Has to be implemented
|
||||
ACHIEVEMENTS_STONE_KEEPER_250 = 2087, /// @todo: Has to be implemented
|
||||
ACHIEVEMENTS_STONE_KEEPER_500 = 2088, /// @todo: Has to be implemented
|
||||
ACHIEVEMENTS_STONE_KEEPER_1000 = 2089, /// @todo: Has to be implemented
|
||||
ACHIEVEMENTS_WG_RANGER = 2199, /// @todo: Has to be implemented
|
||||
ACHIEVEMENTS_DESTRUCTION_DERBY_H = 2476, /// @todo: Has to be implemented
|
||||
ACHIEVEMENTS_WG_MASTER_H = 2776 /// @todo: Has to be implemented
|
||||
};
|
||||
|
||||
enum WintergraspQuests
|
||||
{
|
||||
QUEST_VICTORY_WINTERGRASP_A = 13181,
|
||||
QUEST_VICTORY_WINTERGRASP_H = 13183,
|
||||
QUEST_CREDIT_TOWERS_DESTROYED = 35074,
|
||||
QUEST_CREDIT_DEFEND_SIEGE = 31284
|
||||
};
|
||||
|
||||
/*#########################
|
||||
*####### Graveyards ######
|
||||
*#########################*/
|
||||
|
||||
class BfGraveyardWG : public BfGraveyard
|
||||
{
|
||||
public:
|
||||
BfGraveyardWG(BattlefieldWG* Bf);
|
||||
|
||||
void SetTextId(uint32 textId) { m_GossipTextId = textId; }
|
||||
uint32 GetTextId() const { return m_GossipTextId; }
|
||||
|
||||
protected:
|
||||
uint32 m_GossipTextId;
|
||||
};
|
||||
|
||||
enum WGGraveyardId
|
||||
{
|
||||
BATTLEFIELD_WG_GY_WORKSHOP_NE,
|
||||
BATTLEFIELD_WG_GY_WORKSHOP_NW,
|
||||
BATTLEFIELD_WG_GY_WORKSHOP_SE,
|
||||
BATTLEFIELD_WG_GY_WORKSHOP_SW,
|
||||
BATTLEFIELD_WG_GY_KEEP,
|
||||
BATTLEFIELD_WG_GY_HORDE,
|
||||
BATTLEFIELD_WG_GY_ALLIANCE,
|
||||
BATTLEFIELD_WG_GRAVEYARD_MAX
|
||||
};
|
||||
|
||||
enum WGGossipText
|
||||
{
|
||||
BATTLEFIELD_WG_GOSSIPTEXT_GY_NE = 20071,
|
||||
BATTLEFIELD_WG_GOSSIPTEXT_GY_NW = 20072,
|
||||
BATTLEFIELD_WG_GOSSIPTEXT_GY_SE = 20074,
|
||||
BATTLEFIELD_WG_GOSSIPTEXT_GY_SW = 20073,
|
||||
BATTLEFIELD_WG_GOSSIPTEXT_GY_KEEP = 20070,
|
||||
BATTLEFIELD_WG_GOSSIPTEXT_GY_HORDE = 20075,
|
||||
BATTLEFIELD_WG_GOSSIPTEXT_GY_ALLIANCE = 20076
|
||||
};
|
||||
|
||||
enum WintergraspNpcs
|
||||
{
|
||||
BATTLEFIELD_WG_NPC_GUARD_H = 30739,
|
||||
BATTLEFIELD_WG_NPC_GUARD_A = 30740,
|
||||
BATTLEFIELD_WG_NPC_STALKER = 15214,
|
||||
|
||||
NPC_TAUNKA_SPIRIT_GUIDE = 31841, // Horde spirit guide for Wintergrasp
|
||||
NPC_DWARVEN_SPIRIT_GUIDE = 31842, // Alliance spirit guide for Wintergrasp
|
||||
|
||||
NPC_WINTERGRASP_SIEGE_ENGINE_ALLIANCE = 28312,
|
||||
NPC_WINTERGRASP_SIEGE_ENGINE_HORDE = 32627,
|
||||
NPC_WINTERGRASP_CATAPULT = 27881,
|
||||
NPC_WINTERGRASP_DEMOLISHER = 28094,
|
||||
NPC_WINTERGRASP_TOWER_CANNON = 28366
|
||||
};
|
||||
|
||||
/* ######################### *
|
||||
* WintergraspCapturePoint *
|
||||
* ######################### */
|
||||
|
||||
class WintergraspCapturePoint : public BfCapturePoint
|
||||
{
|
||||
public:
|
||||
WintergraspCapturePoint(BattlefieldWG* battlefield, TeamId teamInControl);
|
||||
|
||||
void LinkToWorkshop(WintergraspWorkshop* workshop) { m_Workshop = workshop; }
|
||||
|
||||
void ChangeTeam(TeamId oldteam) override;
|
||||
TeamId GetTeam() const { return m_team; }
|
||||
|
||||
protected:
|
||||
WintergraspWorkshop* m_Workshop;
|
||||
};
|
||||
|
||||
/* ######################### *
|
||||
* WinterGrasp Battlefield *
|
||||
* ######################### */
|
||||
|
||||
class BattlefieldWG : public Battlefield
|
||||
{
|
||||
public:
|
||||
~BattlefieldWG();
|
||||
/**
|
||||
* \brief Called when the battle start
|
||||
* - Spawn relic and turret
|
||||
* - Rebuild tower and wall
|
||||
* - Invite player to war
|
||||
*/
|
||||
void OnBattleStart() override;
|
||||
|
||||
/**
|
||||
* \brief Called when battle end
|
||||
* - Remove relic and turret
|
||||
* - Change banner/npc in keep if it needed
|
||||
* - Saving battlestate
|
||||
* - Reward honor/mark to player
|
||||
* - Remove vehicle
|
||||
* \param endByTimer : true if battle ended when timer is at 00:00, false if battle ended by clicking on relic
|
||||
*/
|
||||
void OnBattleEnd(bool endByTimer) override;
|
||||
|
||||
/**
|
||||
* \brief Called when grouping starts (15 minutes before battlestart)
|
||||
* - Invite all player in zone to join queue
|
||||
*/
|
||||
void OnStartGrouping() override;
|
||||
|
||||
/**
|
||||
* \brief Called when player accept invite to join battle
|
||||
* - Update aura
|
||||
* - Teleport if it needed
|
||||
* - Update worldstate
|
||||
* - Update tenacity
|
||||
* \param player: Player who accepted invite
|
||||
*/
|
||||
void OnPlayerJoinWar(Player* player) override;
|
||||
|
||||
/**
|
||||
* \brief Called when player left the battle
|
||||
* - Update player aura
|
||||
* \param player : Player who left the battle
|
||||
*/
|
||||
void OnPlayerLeaveWar(Player* player) override;
|
||||
|
||||
/**
|
||||
* \brief Called when player left the WG zone
|
||||
* \param player : Player who left the zone
|
||||
*/
|
||||
void OnPlayerLeaveZone(Player* player) override;
|
||||
|
||||
/**
|
||||
* \brief Called when player enters in WG zone
|
||||
* - Update aura
|
||||
* - Update worldstate
|
||||
* \param player : Player who enters the zone
|
||||
*/
|
||||
void OnPlayerEnterZone(Player* player) override;
|
||||
|
||||
/**
|
||||
* \brief Called for update battlefield data
|
||||
* - Save battle timer in database every minutes
|
||||
* - Update imunity aura from graveyard
|
||||
* \param diff : time elapsed since the last call (in ms)
|
||||
*/
|
||||
bool Update(uint32 diff) override;
|
||||
|
||||
/**
|
||||
* \brief Called when a creature is created
|
||||
* - Update vehicle count
|
||||
*/
|
||||
void OnCreatureCreate(Creature* creature) override;
|
||||
|
||||
/**
|
||||
* \brief Called when a creature is removed
|
||||
* - Update vehicle count
|
||||
*/
|
||||
void OnCreatureRemove(Creature* creature) override;
|
||||
|
||||
/**
|
||||
* \brief Called when a gameobject is created
|
||||
*/
|
||||
void OnGameObjectCreate(GameObject* go) override;
|
||||
|
||||
/**
|
||||
* \brief Called when a wall/tower is broken
|
||||
* - Update quest
|
||||
*/
|
||||
void BrokenWallOrTower(TeamId team, BfWGGameObjectBuilding* building);
|
||||
|
||||
/**
|
||||
* \brief Called when a tower is damaged
|
||||
* - Update tower count (for reward calcul)
|
||||
*/
|
||||
void UpdateDamagedTowerCount(TeamId team);
|
||||
|
||||
/**
|
||||
* \brief Called when tower is broken
|
||||
* - Update tower buff
|
||||
* - check if three south tower is down for remove 10 minutes to wg
|
||||
*/
|
||||
void UpdatedDestroyedTowerCount(TeamId team);
|
||||
|
||||
void DoCompleteOrIncrementAchievement(uint32 achievement, Player* player, uint8 incrementNumber = 1) override;
|
||||
|
||||
void RemoveAurasFromPlayer(Player* player);
|
||||
|
||||
/**
|
||||
* \brief Called when battlefield is setup, at server start
|
||||
*/
|
||||
bool SetupBattlefield() override;
|
||||
|
||||
/// Return pointer to relic object
|
||||
GameObject* GetRelic() { return GetGameObject(m_titansRelicGUID); }
|
||||
|
||||
/// Define relic object
|
||||
void SetRelic(ObjectGuid relicGUID) { m_titansRelicGUID = relicGUID; }
|
||||
|
||||
/// Check if players can interact with the relic (Only if the last door has been broken)
|
||||
bool CanInteractWithRelic() { return m_isRelicInteractible; }
|
||||
|
||||
/// Define if player can interact with the relic
|
||||
void SetRelicInteractible(bool allow) { m_isRelicInteractible = allow; }
|
||||
|
||||
void UpdateVehicleCountWG();
|
||||
void UpdateCounterVehicle(bool init);
|
||||
|
||||
void SendInitWorldStatesTo(Player* player);
|
||||
void SendInitWorldStatesToAll() override;
|
||||
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*data*/) override;
|
||||
|
||||
void HandleKill(Player* killer, Unit* victim) override;
|
||||
void OnUnitDeath(Unit* unit) override;
|
||||
void HandlePromotion(Player* killer, Unit* killed);
|
||||
void PromotePlayer(Player* killer);
|
||||
|
||||
void UpdateTenacity();
|
||||
void ProcessEvent(WorldObject* obj, uint32 eventId, WorldObject* invoker) override;
|
||||
|
||||
bool FindAndRemoveVehicleFromList(Unit* vehicle);
|
||||
|
||||
// returns the graveyardId in the specified area.
|
||||
uint8 GetSpiritGraveyardId(uint32 areaId) const;
|
||||
|
||||
uint32 GetData(uint32 data) const override;
|
||||
|
||||
protected:
|
||||
bool m_isRelicInteractible;
|
||||
|
||||
WorkshopVect Workshops;
|
||||
|
||||
GuidVector DefenderPortalList[BG_TEAMS_COUNT];
|
||||
GameObjectBuildingVect BuildingsInZone;
|
||||
|
||||
GuidUnorderedSet m_vehicles[BG_TEAMS_COUNT];
|
||||
GuidVector CanonList;
|
||||
|
||||
TeamId m_tenacityTeam;
|
||||
uint32 m_tenacityStack;
|
||||
uint32 m_saveTimer;
|
||||
|
||||
ObjectGuid m_titansRelicGUID;
|
||||
};
|
||||
|
||||
enum WintergraspGameObjectBuildingType
|
||||
{
|
||||
BATTLEFIELD_WG_OBJECTTYPE_DOOR,
|
||||
BATTLEFIELD_WG_OBJECTTYPE_TITANRELIC,
|
||||
BATTLEFIELD_WG_OBJECTTYPE_WALL,
|
||||
BATTLEFIELD_WG_OBJECTTYPE_DOOR_LAST,
|
||||
BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER,
|
||||
BATTLEFIELD_WG_OBJECTTYPE_TOWER
|
||||
};
|
||||
|
||||
enum WintergraspGameObjectState
|
||||
{
|
||||
BATTLEFIELD_WG_OBJECTSTATE_NONE,
|
||||
BATTLEFIELD_WG_OBJECTSTATE_NEUTRAL_INTACT,
|
||||
BATTLEFIELD_WG_OBJECTSTATE_NEUTRAL_DAMAGE,
|
||||
BATTLEFIELD_WG_OBJECTSTATE_NEUTRAL_DESTROY,
|
||||
BATTLEFIELD_WG_OBJECTSTATE_HORDE_INTACT,
|
||||
BATTLEFIELD_WG_OBJECTSTATE_HORDE_DAMAGE,
|
||||
BATTLEFIELD_WG_OBJECTSTATE_HORDE_DESTROY,
|
||||
BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT,
|
||||
BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DAMAGE,
|
||||
BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DESTROY
|
||||
};
|
||||
|
||||
enum WintergraspTowerIds
|
||||
{
|
||||
BATTLEFIELD_WG_TOWER_FORTRESS_NW,
|
||||
BATTLEFIELD_WG_TOWER_FORTRESS_SW,
|
||||
BATTLEFIELD_WG_TOWER_FORTRESS_SE,
|
||||
BATTLEFIELD_WG_TOWER_FORTRESS_NE,
|
||||
BATTLEFIELD_WG_TOWER_SHADOWSIGHT,
|
||||
BATTLEFIELD_WG_TOWER_WINTER_S_EDGE,
|
||||
BATTLEFIELD_WG_TOWER_FLAMEWATCH
|
||||
};
|
||||
|
||||
enum WintergraspWorkshopIds
|
||||
{
|
||||
BATTLEFIELD_WG_WORKSHOP_SE,
|
||||
BATTLEFIELD_WG_WORKSHOP_SW,
|
||||
BATTLEFIELD_WG_WORKSHOP_NE,
|
||||
BATTLEFIELD_WG_WORKSHOP_NW,
|
||||
BATTLEFIELD_WG_WORKSHOP_KEEP_WEST,
|
||||
BATTLEFIELD_WG_WORKSHOP_KEEP_EAST
|
||||
};
|
||||
|
||||
enum WintergraspTeamControl
|
||||
{
|
||||
BATTLEFIELD_WG_TEAM_ALLIANCE,
|
||||
BATTLEFIELD_WG_TEAM_HORDE,
|
||||
BATTLEFIELD_WG_TEAM_NEUTRAL
|
||||
};
|
||||
|
||||
enum WintergraspText
|
||||
{
|
||||
// Invisible Stalker
|
||||
BATTLEFIELD_WG_TEXT_SOUTHERN_TOWER_DAMAGE = 1,
|
||||
BATTLEFIELD_WG_TEXT_SOUTHERN_TOWER_DESTROY = 2,
|
||||
BATTLEFIELD_WG_TEXT_EASTERN_TOWER_DAMAGE = 3,
|
||||
BATTLEFIELD_WG_TEXT_EASTERN_TOWER_DESTROY = 4,
|
||||
BATTLEFIELD_WG_TEXT_WESTERN_TOWER_DAMAGE = 5,
|
||||
BATTLEFIELD_WG_TEXT_WESTERN_TOWER_DESTROY = 6,
|
||||
BATTLEFIELD_WG_TEXT_NW_KEEPTOWER_DAMAGE = 7,
|
||||
BATTLEFIELD_WG_TEXT_NW_KEEPTOWER_DESTROY = 8,
|
||||
BATTLEFIELD_WG_TEXT_SE_KEEPTOWER_DAMAGE = 9,
|
||||
BATTLEFIELD_WG_TEXT_SE_KEEPTOWER_DESTROY = 10,
|
||||
BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_ATTACK_ALLIANCE = 11,
|
||||
BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_CAPTURE_ALLIANCE = 12,
|
||||
BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_ATTACK_HORDE = 13,
|
||||
BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_CAPTURE_HORDE = 14,
|
||||
BATTLEFIELD_WG_TEXT_EASTSPARK_ATTACK_ALLIANCE = 15,
|
||||
BATTLEFIELD_WG_TEXT_EASTSPARK_CAPTURE_ALLIANCE = 16,
|
||||
BATTLEFIELD_WG_TEXT_EASTSPARK_ATTACK_HORDE = 17,
|
||||
BATTLEFIELD_WG_TEXT_EASTSPARK_CAPTURE_HORDE = 18,
|
||||
BATTLEFIELD_WG_TEXT_SUNKEN_RING_ATTACK_ALLIANCE = 19,
|
||||
BATTLEFIELD_WG_TEXT_SUNKEN_RING_CAPTURE_ALLIANCE = 20,
|
||||
BATTLEFIELD_WG_TEXT_SUNKEN_RING_ATTACK_HORDE = 21,
|
||||
BATTLEFIELD_WG_TEXT_SUNKEN_RING_CAPTURE_HORDE = 22,
|
||||
BATTLEFIELD_WG_TEXT_WESTSPARK_ATTACK_ALLIANCE = 23,
|
||||
BATTLEFIELD_WG_TEXT_WESTSPARK_CAPTURE_ALLIANCE = 24,
|
||||
BATTLEFIELD_WG_TEXT_WESTSPARK_ATTACK_HORDE = 25,
|
||||
BATTLEFIELD_WG_TEXT_WESTSPARK_CAPTURE_HORDE = 26,
|
||||
|
||||
BATTLEFIELD_WG_TEXT_START_GROUPING = 27,
|
||||
BATTLEFIELD_WG_TEXT_START_BATTLE = 28,
|
||||
BATTLEFIELD_WG_TEXT_FORTRESS_DEFEND_ALLIANCE = 29,
|
||||
BATTLEFIELD_WG_TEXT_FORTRESS_CAPTURE_ALLIANCE = 30,
|
||||
BATTLEFIELD_WG_TEXT_FORTRESS_DEFEND_HORDE = 31,
|
||||
BATTLEFIELD_WG_TEXT_FORTRESS_CAPTURE_HORDE = 32,
|
||||
|
||||
BATTLEFIELD_WG_TEXT_NE_KEEPTOWER_DAMAGE = 33,
|
||||
BATTLEFIELD_WG_TEXT_NE_KEEPTOWER_DESTROY = 34,
|
||||
BATTLEFIELD_WG_TEXT_SW_KEEPTOWER_DAMAGE = 35,
|
||||
BATTLEFIELD_WG_TEXT_SW_KEEPTOWER_DESTROY = 36,
|
||||
|
||||
BATTLEFIELD_WG_TEXT_RANK_CORPORAL = 37,
|
||||
BATTLEFIELD_WG_TEXT_RANK_FIRST_LIEUTENANT = 38
|
||||
};
|
||||
|
||||
enum WintergraspGameObject
|
||||
{
|
||||
GO_WINTERGRASP_FACTORY_BANNER_NE = 190475,
|
||||
GO_WINTERGRASP_FACTORY_BANNER_NW = 190487,
|
||||
GO_WINTERGRASP_FACTORY_BANNER_SE = 194959,
|
||||
GO_WINTERGRASP_FACTORY_BANNER_SW = 194962,
|
||||
|
||||
GO_WINTERGRASP_TITAN_S_RELIC = 192829,
|
||||
|
||||
GO_WINTERGRASP_FORTRESS_TOWER_1 = 190221,
|
||||
GO_WINTERGRASP_FORTRESS_TOWER_2 = 190373,
|
||||
GO_WINTERGRASP_FORTRESS_TOWER_3 = 190377,
|
||||
GO_WINTERGRASP_FORTRESS_TOWER_4 = 190378,
|
||||
|
||||
GO_WINTERGRASP_SHADOWSIGHT_TOWER = 190356,
|
||||
GO_WINTERGRASP_WINTER_S_EDGE_TOWER = 190357,
|
||||
GO_WINTERGRASP_FLAMEWATCH_TOWER = 190358,
|
||||
|
||||
GO_WINTERGRASP_FORTRESS_GATE = 190375,
|
||||
GO_WINTERGRASP_VAULT_GATE = 191810,
|
||||
|
||||
GO_WINTERGRASP_KEEP_COLLISION_WALL = 194323
|
||||
};
|
||||
|
||||
// ********************************************************************
|
||||
// * Structs using for Building, Graveyard, Workshop *
|
||||
// ********************************************************************
|
||||
|
||||
// Structure for different buildings that can be destroyed during battle
|
||||
struct BfWGGameObjectBuilding
|
||||
{
|
||||
private:
|
||||
// WG object
|
||||
BattlefieldWG* _wg;
|
||||
|
||||
// Linked gameobject
|
||||
ObjectGuid _buildGUID;
|
||||
|
||||
// the team that controls this point
|
||||
TeamId _teamControl;
|
||||
|
||||
WintergraspGameObjectBuildingType _type;
|
||||
uint32 _worldState;
|
||||
|
||||
WintergraspGameObjectState _state;
|
||||
|
||||
StaticWintergraspTowerInfo const* _staticTowerInfo;
|
||||
|
||||
// GameObject associations
|
||||
GuidVector m_GameObjectList[BG_TEAMS_COUNT];
|
||||
|
||||
// Creature associations
|
||||
GuidVector m_CreatureBottomList[BG_TEAMS_COUNT];
|
||||
GuidVector m_CreatureTopList[BG_TEAMS_COUNT];
|
||||
GuidVector m_TowerCannonBottomList;
|
||||
GuidVector m_TurretTopList;
|
||||
|
||||
public:
|
||||
BfWGGameObjectBuilding(BattlefieldWG* wg, WintergraspGameObjectBuildingType type, uint32 worldState);
|
||||
void Init(GameObject* go);
|
||||
|
||||
ObjectGuid const& GetGUID() const { return _buildGUID; }
|
||||
|
||||
void Rebuild();
|
||||
|
||||
// Called when associated gameobject is damaged
|
||||
void Damaged();
|
||||
|
||||
// Called when associated gameobject is destroyed
|
||||
void Destroyed();
|
||||
|
||||
void UpdateCreatureAndGo();
|
||||
|
||||
void UpdateTurretAttack(bool disable);
|
||||
|
||||
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& data);
|
||||
|
||||
void Save();
|
||||
};
|
||||
|
||||
// Structure for the 6 workshop
|
||||
struct WintergraspWorkshop
|
||||
{
|
||||
private:
|
||||
BattlefieldWG* _wg; // Pointer to wintergrasp
|
||||
ObjectGuid _buildGUID;
|
||||
WintergraspGameObjectState _state; // For worldstate
|
||||
TeamId _teamControl; // Team witch control the workshop
|
||||
|
||||
StaticWintergraspWorkshopInfo const* _staticInfo;
|
||||
|
||||
public:
|
||||
WintergraspWorkshop(BattlefieldWG* wg, uint8 type);
|
||||
|
||||
uint8 GetId() const;
|
||||
TeamId GetTeamControl() const { return _teamControl; }
|
||||
|
||||
// Called on change faction in CapturePoint class
|
||||
void GiveControlTo(TeamId teamId, bool init = false);
|
||||
|
||||
void UpdateGraveyardAndWorkshop();
|
||||
|
||||
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*data*/);
|
||||
|
||||
void Save();
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -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();
|
||||
}
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "BattlefieldTB.h"
|
||||
#include "Battlefield/BattlefieldTB.h"
|
||||
#include "DBCStores.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptedCreature.h"
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#include "ScriptMgr.h"
|
||||
#include "Battlefield.h"
|
||||
#include "BattlefieldMgr.h"
|
||||
#include "BattlefieldWG.h"
|
||||
#include "Battlefield/BattlefieldWG.h"
|
||||
#include "DBCStores.h"
|
||||
#include "GameObject.h"
|
||||
#include "GameObjectAI.h"
|
||||
@@ -373,8 +373,8 @@ class go_wg_vehicle_teleporter : public GameObjectScript
|
||||
|
||||
bool IsFriendly(Unit* passenger) const
|
||||
{
|
||||
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) const
|
||||
|
||||
Reference in new issue
Block a user