From 7e1ee7afb191209d8dddd47016aeacf0bc222c1a Mon Sep 17 00:00:00 2001 From: durotar Date: Thu, 27 Sep 2012 12:45:39 -0500 Subject: Core/Script: update creature_text for Custodian of Time (quest 10277) --- src/server/scripts/Kalimdor/tanaris.cpp | 64 ++++++++++++++++----------------- 1 file changed, 32 insertions(+), 32 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/scripts/Kalimdor/tanaris.cpp b/src/server/scripts/Kalimdor/tanaris.cpp index 9b742b495bb..417c8b338c7 100644 --- a/src/server/scripts/Kalimdor/tanaris.cpp +++ b/src/server/scripts/Kalimdor/tanaris.cpp @@ -150,20 +150,20 @@ public: enum CustodianOfTime { - WHISPER_CUSTODIAN_1 = -1000217, - WHISPER_CUSTODIAN_2 = -1000218, - WHISPER_CUSTODIAN_3 = -1000219, - WHISPER_CUSTODIAN_4 = -1000220, - WHISPER_CUSTODIAN_5 = -1000221, - WHISPER_CUSTODIAN_6 = -1000222, - WHISPER_CUSTODIAN_7 = -1000223, - WHISPER_CUSTODIAN_8 = -1000224, - WHISPER_CUSTODIAN_9 = -1000225, - WHISPER_CUSTODIAN_10 = -1000226, - WHISPER_CUSTODIAN_11 = -1000227, - WHISPER_CUSTODIAN_12 = -1000228, - WHISPER_CUSTODIAN_13 = -1000229, - WHISPER_CUSTODIAN_14 = -1000230 + WHISPER_CUSTODIAN_1 = 0, + WHISPER_CUSTODIAN_2 = 1, + WHISPER_CUSTODIAN_3 = 2, + WHISPER_CUSTODIAN_4 = 3, + WHISPER_CUSTODIAN_5 = 4, + WHISPER_CUSTODIAN_6 = 5, + WHISPER_CUSTODIAN_7 = 6, + WHISPER_CUSTODIAN_8 = 7, + WHISPER_CUSTODIAN_9 = 8, + WHISPER_CUSTODIAN_10 = 9, + WHISPER_CUSTODIAN_11 = 10, + WHISPER_CUSTODIAN_12 = 11, + WHISPER_CUSTODIAN_13 = 12, + WHISPER_CUSTODIAN_14 = 13 }; class npc_custodian_of_time : public CreatureScript @@ -187,58 +187,58 @@ public: switch (waypointId) { case 0: - DoScriptText(WHISPER_CUSTODIAN_1, me, player); + Talk(WHISPER_CUSTODIAN_1, player->GetGUID()); break; case 1: - DoScriptText(WHISPER_CUSTODIAN_2, me, player); + Talk(WHISPER_CUSTODIAN_2, player->GetGUID()); break; case 2: - DoScriptText(WHISPER_CUSTODIAN_3, me, player); + Talk(WHISPER_CUSTODIAN_3, player->GetGUID()); break; case 3: - DoScriptText(WHISPER_CUSTODIAN_4, me, player); + Talk(WHISPER_CUSTODIAN_4, player->GetGUID()); break; case 5: - DoScriptText(WHISPER_CUSTODIAN_5, me, player); + Talk(WHISPER_CUSTODIAN_5, player->GetGUID()); break; case 6: - DoScriptText(WHISPER_CUSTODIAN_6, me, player); + Talk(WHISPER_CUSTODIAN_6, player->GetGUID()); break; case 7: - DoScriptText(WHISPER_CUSTODIAN_7, me, player); + Talk(WHISPER_CUSTODIAN_7, player->GetGUID()); break; case 8: - DoScriptText(WHISPER_CUSTODIAN_8, me, player); + Talk(WHISPER_CUSTODIAN_8, player->GetGUID()); break; case 9: - DoScriptText(WHISPER_CUSTODIAN_9, me, player); + Talk(WHISPER_CUSTODIAN_9, player->GetGUID()); break; case 10: - DoScriptText(WHISPER_CUSTODIAN_4, me, player); + Talk(WHISPER_CUSTODIAN_4, player->GetGUID()); break; case 13: - DoScriptText(WHISPER_CUSTODIAN_10, me, player); + Talk(WHISPER_CUSTODIAN_10, player->GetGUID()); break; case 14: - DoScriptText(WHISPER_CUSTODIAN_4, me, player); + Talk(WHISPER_CUSTODIAN_4, player->GetGUID()); break; case 16: - DoScriptText(WHISPER_CUSTODIAN_11, me, player); + Talk(WHISPER_CUSTODIAN_11, player->GetGUID()); break; case 17: - DoScriptText(WHISPER_CUSTODIAN_12, me, player); + Talk(WHISPER_CUSTODIAN_12, player->GetGUID()); break; case 18: - DoScriptText(WHISPER_CUSTODIAN_4, me, player); + Talk(WHISPER_CUSTODIAN_4, player->GetGUID()); break; case 22: - DoScriptText(WHISPER_CUSTODIAN_13, me, player); + Talk(WHISPER_CUSTODIAN_13, player->GetGUID()); break; case 23: - DoScriptText(WHISPER_CUSTODIAN_4, me, player); + Talk(WHISPER_CUSTODIAN_4, player->GetGUID()); break; case 24: - DoScriptText(WHISPER_CUSTODIAN_14, me, player); + Talk(WHISPER_CUSTODIAN_14, player->GetGUID()); DoCast(player, 34883); // below here is temporary workaround, to be removed when spell works properly player->AreaExploredOrEventHappens(10277); -- cgit v1.2.3 From f2e92b81a30da8150d99644c4f112bd712dbf28e Mon Sep 17 00:00:00 2001 From: w1sht0l1v3 Date: Fri, 28 Sep 2012 01:37:34 +0300 Subject: Core/Scripts: Some fixes for Razorscale. --- sql/updates/world/2012_09_28_00_world_creature_model_info.sql | 1 + src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 sql/updates/world/2012_09_28_00_world_creature_model_info.sql (limited to 'src/server/scripts') diff --git a/sql/updates/world/2012_09_28_00_world_creature_model_info.sql b/sql/updates/world/2012_09_28_00_world_creature_model_info.sql new file mode 100644 index 00000000000..48134d7bbed --- /dev/null +++ b/sql/updates/world/2012_09_28_00_world_creature_model_info.sql @@ -0,0 +1 @@ +UPDATE `creature_model_info` SET `combat_reach`=10 WHERE `modelid`=28787; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index e8e938dc06b..6038b7ed9d6 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -369,7 +369,7 @@ class boss_razorscale : public CreatureScript void MovementInform(uint32 type, uint32 id) { - if (type == POINT_MOTION_TYPE && id == 1) + if (type == EFFECT_MOTION_TYPE && id == 1) { phase = PHASE_GROUND; events.SetPhase(PHASE_GROUND); @@ -407,7 +407,7 @@ class boss_razorscale : public CreatureScript if (HarpoonCounter == RAID_MODE(2, 4)) { HarpoonCounter = 0; - me->GetMotionMaster()->MovePoint(1, RazorGround); + me->GetMotionMaster()->MoveLand(1, RazorGround); } if (phase == PHASE_GROUND) @@ -423,7 +423,7 @@ class boss_razorscale : public CreatureScript me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetReactState(REACT_PASSIVE); me->AttackStop(); - me->GetMotionMaster()->MovePoint(0, RazorFlight); + me->GetMotionMaster()->MoveTakeoff(0, RazorFlight); events.ScheduleEvent(EVENT_FIREBALL, 7000, 0, PHASE_FLIGHT); events.ScheduleEvent(EVENT_DEVOURING, 10000, 0, PHASE_FLIGHT); events.ScheduleEvent(EVENT_SUMMON, 5000, 0, PHASE_FLIGHT); @@ -525,7 +525,7 @@ class boss_razorscale : public CreatureScript phase = PHASE_PERMAGROUND; events.SetPhase(PHASE_PERMAGROUND); me->SetCanFly(false); - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED); me->SetReactState(REACT_AGGRESSIVE); me->RemoveAurasDueToSpell(SPELL_HARPOON_TRIGGER); me->SetSpeed(MOVE_FLIGHT, 1.0f, true); -- cgit v1.2.3 From 431db10e1af05d1a6883370ef92e6cbd13c44636 Mon Sep 17 00:00:00 2001 From: Subv Date: Fri, 28 Sep 2012 09:44:34 -0400 Subject: Core/Battlefield: fix world states on player login for wintergrasp --- src/server/game/Battlefield/Battlefield.h | 6 +- src/server/game/Battlefield/BattlefieldMgr.h | 6 +- .../game/Battlefield/Zones/BattlefieldWG.cpp | 28 ++++---- src/server/game/Battlefield/Zones/BattlefieldWG.h | 81 +++++++++++++--------- src/server/game/Entities/Player/Player.cpp | 36 ++++++++++ src/server/game/Entities/Player/Player.h | 1 + src/server/scripts/Northrend/wintergrasp.cpp | 2 +- 7 files changed, 105 insertions(+), 55 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/game/Battlefield/Battlefield.h b/src/server/game/Battlefield/Battlefield.h index 480aafbeb42..2ca6a2e3f96 100644 --- a/src/server/game/Battlefield/Battlefield.h +++ b/src/server/game/Battlefield/Battlefield.h @@ -211,9 +211,6 @@ class Battlefield : public ZoneScript /// Call this to init the Battlefield virtual bool SetupBattlefield() { return true; } - /// Generate packet which contain all worldstatedata of area - virtual void FillInitialWorldStates(WorldPacket& /*data*/) {} - /// Update data of a worldstate to all players present in zone void SendUpdateWorldState(uint32 field, uint32 value); @@ -330,7 +327,8 @@ class Battlefield : public ZoneScript virtual void DoCompleteOrIncrementAchievement(uint32 /*achievement*/, Player* /*player*/, uint8 /*incrementNumber = 1*/) {}; /// Send all worldstate data to all player in zone. - virtual void SendInitWorldStatesToAll() {}; + virtual void SendInitWorldStatesToAll() = 0; + virtual void FillInitialWorldStates(WorldPacket& /*data*/) = 0; /// Return if we can use mount in battlefield bool CanFlyIn() { return !m_isActive; } diff --git a/src/server/game/Battlefield/BattlefieldMgr.h b/src/server/game/Battlefield/BattlefieldMgr.h index 4ee37e424fd..1ec1f3b1151 100644 --- a/src/server/game/Battlefield/BattlefieldMgr.h +++ b/src/server/game/Battlefield/BattlefieldMgr.h @@ -46,10 +46,10 @@ class BattlefieldMgr // called when player resurrects void HandlePlayerResurrects(Player * player, uint32 areaflag); // return assigned battlefield - Battlefield *GetBattlefieldToZoneId(uint32 zoneid); - Battlefield *GetBattlefieldByBattleId(uint32 battleid); + Battlefield* GetBattlefieldToZoneId(uint32 zoneid); + Battlefield* GetBattlefieldByBattleId(uint32 battleid); - ZoneScript *GetZoneScript(uint32 zoneId); + ZoneScript* GetZoneScript(uint32 zoneId); void AddZone(uint32 zoneid, Battlefield * handle); diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp index 350926388ba..f2c44a0a0da 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.cpp @@ -844,20 +844,13 @@ uint32 BattlefieldWG::GetData(uint32 data) return Battlefield::GetData(data); } -// Method sending worldsate to player -WorldPacket BattlefieldWG::BuildInitWorldStates() -{ - WorldPacket data(SMSG_INIT_WORLD_STATES, (4 + 4 + 4 + 2 + (BuildingsInZone.size() * 8) + (WorkshopsList.size() * 8))); - - data << uint32(m_MapId); - data << uint32(m_ZoneId); - data << uint32(0); - data << uint16(4 + 2 + 4 + BuildingsInZone.size() + WorkshopsList.size()); +void BattlefieldWG::FillInitialWorldStates(WorldPacket& data) +{ data << uint32(BATTLEFIELD_WG_WORLD_STATE_ATTACKER) << uint32(GetAttackerTeam()); data << uint32(BATTLEFIELD_WG_WORLD_STATE_DEFENDER) << uint32(GetDefenderTeam()); - data << uint32(BATTLEFIELD_WG_WORLD_STATE_ACTIVE) << uint32(IsWarTime()? 0 : 1); // Note: cleanup these two, their names look awkward - data << uint32(BATTLEFIELD_WG_WORLD_STATE_SHOW_WORLDSTATE) << uint32(IsWarTime()? 1 : 0); + data << uint32(BATTLEFIELD_WG_WORLD_STATE_ACTIVE) << uint32(IsWarTime() ? 0 : 1); // Note: cleanup these two, their names look awkward + data << uint32(BATTLEFIELD_WG_WORLD_STATE_SHOW_WORLDSTATE) << uint32(IsWarTime() ? 1 : 0); for (uint32 i = 0; i < 2; ++i) data << ClockWorldState[i] << uint32(time(NULL) + (m_Timer / 1000)); @@ -879,17 +872,24 @@ WorldPacket BattlefieldWG::BuildInitWorldStates() void BattlefieldWG::SendInitWorldStatesTo(Player* player) { - WorldPacket data = BuildInitWorldStates(); + WorldPacket data(SMSG_INIT_WORLD_STATES, (4 + 4 + 4 + 2 + (BuildingsInZone.size() * 8) + (WorkshopsList.size() * 8))); + + data << uint32(m_MapId); + data << uint32(m_ZoneId); + data << uint32(0); + data << uint16(10 + BuildingsInZone.size() + WorkshopsList.size()); // Number of fields + + FillInitialWorldStates(data); + player->GetSession()->SendPacket(&data); } void BattlefieldWG::SendInitWorldStatesToAll() { - WorldPacket data = BuildInitWorldStates(); for (uint8 team = 0; team < 2; team++) for (GuidSet::iterator itr = m_players[team].begin(); itr != m_players[team].end(); ++itr) if (Player* player = sObjectAccessor->FindPlayer(*itr)) - player->GetSession()->SendPacket(&data); + SendInitWorldStatesTo(player); } void BattlefieldWG::BrokenWallOrTower(TeamId /*team*/) diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h index 11510e1ea98..4d7db760605 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.h +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h @@ -26,12 +26,6 @@ #include "GroupMgr.h" #include "Battlefield.h" -uint32 const VehNumWorldState[2] = { 3680, 3490 }; -uint32 const MaxVehNumWorldState[2] = { 3681, 3491 }; -uint32 const ClockWorldState[2] = { 3781, 4354 }; -uint32 const WintergraspFaction[3] = { 1732, 1735, 35 }; -float const WintergraspStalkerPos[4] = { 0, 0, 0, 0 }; - class BattlefieldWG; class WintergraspCapturePoint; @@ -404,9 +398,9 @@ class BattlefieldWG : public Battlefield void UpdateVehicleCountWG(); void UpdateCounterVehicle(bool init); - WorldPacket BuildInitWorldStates(); void SendInitWorldStatesTo(Player* player); void SendInitWorldStatesToAll(); + void FillInitialWorldStates(WorldPacket& data); void HandleKill(Player* killer, Unit* victim); void OnUnitDeath(Unit* unit); @@ -421,6 +415,22 @@ class BattlefieldWG : public Battlefield uint8 GetSpiritGraveyardId(uint32 areaId); uint32 GetData(uint32 data); + + static uint32 const VehNumWorldState[]; + static uint32 const MaxVehNumWorldState[]; + static uint32 const ClockWorldState[]; + static uint32 const WintergraspFaction[]; + static float const WintergraspStalkerPos[]; + + static uint8 const WG_MAX_OBJ; + static uint8 const WG_KEEPGAMEOBJECT_MAX; + static uint8 const WG_MAX_TURRET; + static uint8 const WG_MAX_KEEP_NPC; + static uint8 const WG_MAX_OUTSIDE_NPC; + static uint8 const WG_OUTSIDE_ALLIANCE_NPC; + static uint8 const WG_MAX_TELEPORTER; + static uint8 const WG_MAX_WORKSHOP; + protected: bool m_isRelicInteractible; @@ -441,13 +451,20 @@ class BattlefieldWG : public Battlefield GameObject* m_titansRelic; }; -uint8 const WG_MAX_OBJ = 32; -uint8 const WG_KEEPGAMEOBJECT_MAX = 44; -uint8 const WG_MAX_TURRET = 15; -uint8 const WG_MAX_KEEP_NPC = 39; -uint8 const WG_MAX_OUTSIDE_NPC = 14; -uint8 const WG_OUTSIDE_ALLIANCE_NPC = 7; -uint8 const WG_MAX_TELEPORTER = 12; +uint32 const BattlefieldWG::VehNumWorldState[] = { 3680, 3490 }; +uint32 const BattlefieldWG::MaxVehNumWorldState[] = { 3681, 3491 }; +uint32 const BattlefieldWG::ClockWorldState[] = { 3781, 4354 }; +uint32 const BattlefieldWG::WintergraspFaction[] = { 1732, 1735, 35 }; +float const BattlefieldWG::WintergraspStalkerPos[] = { 0, 0, 0, 0 }; + +uint8 const BattlefieldWG::WG_MAX_OBJ = 32; +uint8 const BattlefieldWG::WG_KEEPGAMEOBJECT_MAX = 44; +uint8 const BattlefieldWG::WG_MAX_TURRET = 15; +uint8 const BattlefieldWG::WG_MAX_KEEP_NPC = 39; +uint8 const BattlefieldWG::WG_MAX_OUTSIDE_NPC = 14; +uint8 const BattlefieldWG::WG_OUTSIDE_ALLIANCE_NPC = 7; +uint8 const BattlefieldWG::WG_MAX_TELEPORTER = 12; +uint8 const BattlefieldWG::WG_MAX_WORKSHOP = 6; enum WintergraspGameObjectBuildingType { @@ -578,7 +595,7 @@ struct WintergraspBuildingSpawnData uint32 nameId; }; -const WintergraspBuildingSpawnData WGGameObjectBuilding[WG_MAX_OBJ] = +const WintergraspBuildingSpawnData WGGameObjectBuilding[BattlefieldWG::WG_MAX_OBJ] = { // Wall (Not spawned in db) // Entry WS X Y Z O type NameID @@ -671,7 +688,7 @@ const WintergraspBuildingSpawnData WGGameObjectBuilding[WG_MAX_OBJ] = // 192357 : 1 in sql, 1 in header // 192350 : 1 in sql, 1 in header // 192351 : 1 in sql, 1 in header -const WintergraspObjectPositionData WGKeepGameObject[WG_KEEPGAMEOBJECT_MAX] = +const WintergraspObjectPositionData WGKeepGameObject[BattlefieldWG::WG_KEEPGAMEOBJECT_MAX] = { { 5262.540039f, 3047.949951f, 432.054993f, 3.106650f, 192488, 192501 }, // Flag on tower { 5272.939941f, 2976.550049f, 444.492004f, 3.124120f, 192374, 192416 }, // Flag on Wall Intersect @@ -719,7 +736,7 @@ const WintergraspObjectPositionData WGKeepGameObject[WG_KEEPGAMEOBJECT_MAX] = { 5271.279785f, 2820.159912f, 445.200989f, -3.13286f, 192351, 192416 } // Flag on wall intersect }; -const Position WGTurret[WG_MAX_TURRET] = +const Position WGTurret[BattlefieldWG::WG_MAX_TURRET] = { { 5391.19f, 3060.8f, 419.616f, 1.69557f }, { 5266.75f, 2976.5f, 421.067f, 3.20354f }, @@ -739,7 +756,7 @@ const Position WGTurret[WG_MAX_TURRET] = }; // Here there is all npc keeper spawn point -const WintergraspObjectPositionData WGKeepNPC[WG_MAX_KEEP_NPC] = +const WintergraspObjectPositionData WGKeepNPC[BattlefieldWG::WG_MAX_KEEP_NPC] = { // X Y Z O horde alliance // North East @@ -790,7 +807,7 @@ const WintergraspObjectPositionData WGKeepNPC[WG_MAX_KEEP_NPC] = { 5316.770996f, 2619.430176f, 409.027740f, 5.363431f, BATTLEFIELD_WG_NPC_GUARD_H, BATTLEFIELD_WG_NPC_GUARD_A } // Standing Guard }; -const WintergraspObjectPositionData WGOutsideNPC[WG_MAX_OUTSIDE_NPC] = +const WintergraspObjectPositionData WGOutsideNPC[BattlefieldWG::WG_MAX_OUTSIDE_NPC] = { { 5032.04f, 3681.79f, 362.980f, 4.210f, BATTLEFIELD_WG_NPC_VIERON_BLAZEFEATHER, 0 }, { 5020.71f, 3626.19f, 360.150f, 4.640f, BATTLEFIELD_WG_NPC_HOODOO_MASTER_FU_JIN, 0 }, @@ -817,7 +834,7 @@ struct WintergraspTeleporterData float o; }; -const WintergraspTeleporterData WGPortalDefenderData[WG_MAX_TELEPORTER] = +const WintergraspTeleporterData WGPortalDefenderData[BattlefieldWG::WG_MAX_TELEPORTER] = { // Player teleporter { 190763, 5153.41f, 2901.35f, 409.191f, -0.069f }, @@ -1112,8 +1129,6 @@ const WintergraspTowerCannonData TowerCannon[WG_MAX_TOWER_CANNON] = // *****************WorkShop Data & Element***************** // ********************************************************* -uint8 const WG_MAX_WORKSHOP = 6; - struct WGWorkshopData { uint8 id; @@ -1121,7 +1136,7 @@ struct WGWorkshopData uint32 text; }; -const WGWorkshopData WorkshopsData[WG_MAX_WORKSHOP] = +const WGWorkshopData WorkshopsData[BattlefieldWG::WG_MAX_WORKSHOP] = { // NE {BATTLEFIELD_WG_WORKSHOP_NE, WORLDSTATE_WORKSHOP_NE, BATTLEFIELD_WG_TEXT_WORKSHOP_NAME_NE}, @@ -1215,7 +1230,7 @@ struct BfWGGameObjectBuilding m_WG->SendUpdateWorldState(m_WorldState, m_State); } UpdateCreatureAndGo(); - m_Build->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[m_Team]); + m_Build->SetUInt32Value(GAMEOBJECT_FACTION, BattlefieldWG::WintergraspFaction[m_Team]); } // Called when associated gameobject is damaged @@ -1402,12 +1417,12 @@ struct BfWGGameObjectBuilding case GO_WINTERGRASP_FORTRESS_TOWER_2: case GO_WINTERGRASP_FORTRESS_TOWER_3: case GO_WINTERGRASP_FORTRESS_TOWER_4: - turret->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]); + turret->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetDefenderTeam()]); break; case GO_WINTERGRASP_SHADOWSIGHT_TOWER: case GO_WINTERGRASP_WINTER_S_EDGE_TOWER: case GO_WINTERGRASP_FLAMEWATCH_TOWER: - turret->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]); + turret->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetAttackerTeam()]); break; } m_WG->HideNpc(turret); @@ -1428,12 +1443,12 @@ struct BfWGGameObjectBuilding case GO_WINTERGRASP_FORTRESS_TOWER_2: case GO_WINTERGRASP_FORTRESS_TOWER_3: case GO_WINTERGRASP_FORTRESS_TOWER_4: - turret->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]); + turret->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetDefenderTeam()]); break; case GO_WINTERGRASP_SHADOWSIGHT_TOWER: case GO_WINTERGRASP_WINTER_S_EDGE_TOWER: case GO_WINTERGRASP_FLAMEWATCH_TOWER: - turret->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]); + turret->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetAttackerTeam()]); break; } m_WG->HideNpc(turret); @@ -1494,14 +1509,14 @@ struct BfWGGameObjectBuilding case GO_WINTERGRASP_FORTRESS_TOWER_3: case GO_WINTERGRASP_FORTRESS_TOWER_4: { - creature->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]); + creature->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetDefenderTeam()]); break; } case GO_WINTERGRASP_SHADOWSIGHT_TOWER: case GO_WINTERGRASP_WINTER_S_EDGE_TOWER: case GO_WINTERGRASP_FLAMEWATCH_TOWER: { - creature->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]); + creature->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetAttackerTeam()]); break; } } @@ -1530,14 +1545,14 @@ struct BfWGGameObjectBuilding case GO_WINTERGRASP_FORTRESS_TOWER_3: case GO_WINTERGRASP_FORTRESS_TOWER_4: { - creature->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]); + creature->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetDefenderTeam()]); break; } case GO_WINTERGRASP_SHADOWSIGHT_TOWER: case GO_WINTERGRASP_WINTER_S_EDGE_TOWER: case GO_WINTERGRASP_FLAMEWATCH_TOWER: { - creature->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]); + creature->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetAttackerTeam()]); break; } } @@ -1566,7 +1581,7 @@ struct WGWorkshop WGWorkshop(BattlefieldWG* _bf, uint8 _workshopId) { - ASSERT(_bf || _workshopId < WG_MAX_WORKSHOP); + ASSERT(_bf || _workshopId < BattlefieldWG::WG_MAX_WORKSHOP); bf = _bf; workshopId = _workshopId; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index ee5f33fc59c..c0e3e3afc03 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -76,6 +76,7 @@ #include "AccountMgr.h" #include "Battlefield.h" #include "BattlefieldMgr.h" +#include "BattlefieldWG.h" #define ZONE_UPDATE_INTERVAL (1*IN_MILLISECONDS) @@ -9041,6 +9042,7 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) uint32 mapid = GetMapId(); OutdoorPvP* pvp = sOutdoorPvPMgr->GetOutdoorPvPToZoneId(zoneid); InstanceScript* instance = GetInstanceScript(); + Battlefield* bf = sBattlefieldMgr->GetBattlefieldToZoneId(zoneid); sLog->outDebug(LOG_FILTER_NETWORKIO, "Sending SMSG_INIT_WORLD_STATES to Map: %u, Zone: %u", mapid, zoneid); @@ -9114,6 +9116,10 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) case 4273: // Ulduar NumberOfFields = 10; break; + case 4197: // Wintergrasp + /// Use the max here, and fill with zeros if missing. + NumberOfFields = 10 + BattlefieldWG::WG_MAX_OBJ + BattlefieldWG::WG_MAX_WORKSHOP; + break; default: NumberOfFields = 12; break; @@ -9123,6 +9129,7 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) data << uint32(mapid); // mapid data << uint32(zoneid); // zone id data << uint32(areaid); // area id, new 2.1.0 + size_t countPos = data.wpos(); data << uint16(NumberOfFields); // count of uint64 blocks data << uint32(0x8d8) << uint32(0x0); // 1 data << uint32(0x8d7) << uint32(0x0); // 2 @@ -9668,6 +9675,16 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) data << uint32(4131) << uint32(0); // 10 WORLDSTATE_CRATES_REVEALED } break; + // Wintergrasp + case 4197: + if (bf && bf->GetTypeId() == BATTLEFIELD_WG) + { + bf->FillInitialWorldStates(data); + break; + } + else + data.put(countPos, 12); + // No break here, intended. default: data << uint32(0x914) << uint32(0x0); // 7 data << uint32(0x913) << uint32(0x0); // 8 @@ -9677,6 +9694,7 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) } GetSession()->SendPacket(&data); SendBGWeekendWorldStates(); + SendBattlefieldWorldStates(); } void Player::SendBGWeekendWorldStates() @@ -9694,6 +9712,24 @@ void Player::SendBGWeekendWorldStates() } } +void Player::SendBattlefieldWorldStates() +{ + /// Send misc stuff that needs to be sent on every login, like the battle timers. + if (sWorld->getBoolConfig(CONFIG_WINTERGRASP_ENABLE)) + { + if (BattlefieldWG* wg = (BattlefieldWG*)sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG)) + { + if (wg->IsWarTime()) + SendUpdateWorldState(BattlefieldWG::ClockWorldState[1], uint32(time(NULL))); + else // Time to next battle + { + uint32 timer = wg->GetTimer() / 1000; + SendUpdateWorldState(BattlefieldWG::ClockWorldState[1], time(NULL) + timer); + } + } + } +} + uint32 Player::GetXPRestBonus(uint32 xp) { uint32 rested_bonus = (uint32)GetRestBonus(); // xp for each rested bonus diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 0decacd6258..82e91985b04 100755 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2125,6 +2125,7 @@ class Player : public Unit, public GridObject void SendUpdateWorldState(uint32 Field, uint32 Value); void SendDirectMessage(WorldPacket* data); void SendBGWeekendWorldStates(); + void SendBattlefieldWorldStates(); void SendAurasForTarget(Unit* target); diff --git a/src/server/scripts/Northrend/wintergrasp.cpp b/src/server/scripts/Northrend/wintergrasp.cpp index 59e9a31c4cf..c58f6fc2dff 100644 --- a/src/server/scripts/Northrend/wintergrasp.cpp +++ b/src/server/scripts/Northrend/wintergrasp.cpp @@ -307,7 +307,7 @@ class go_wg_vehicle_teleporter : public GameObjectScript // Tabulation madness in the hole! for (uint8 i = 0; i < MAX_WINTERGRASP_VEHICLES; i++) if (Creature* vehicleCreature = go->FindNearestCreature(vehiclesList[i], 3.0f, true)) - if (!vehicleCreature->HasAura(SPELL_VEHICLE_TELEPORT) && vehicleCreature->getFaction() == WintergraspFaction[wg->GetDefenderTeam()]) + if (!vehicleCreature->HasAura(SPELL_VEHICLE_TELEPORT) && vehicleCreature->getFaction() == BattlefieldWG::WintergraspFaction[wg->GetDefenderTeam()]) if (Creature* teleportTrigger = vehicleCreature->FindNearestCreature(NPC_WORLD_TRIGGER_LARGE_AOI_NOT_IMMUNE_PC_NPC, 100.0f, true)) teleportTrigger->CastSpell(vehicleCreature, SPELL_VEHICLE_TELEPORT, true); -- cgit v1.2.3 From cb8fc503ddb1fc87abdd1c88146646c68aea46b9 Mon Sep 17 00:00:00 2001 From: Kandera Date: Fri, 28 Sep 2012 10:41:44 -0400 Subject: Core/Battlefield: revert part of previous commit to fix build. --- src/server/game/Battlefield/Zones/BattlefieldWG.h | 77 +++++++++-------------- src/server/game/Entities/Player/Player.cpp | 6 +- src/server/scripts/Northrend/wintergrasp.cpp | 2 +- 3 files changed, 35 insertions(+), 50 deletions(-) (limited to 'src/server/scripts') diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h index 4d7db760605..323f7f2b13d 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldWG.h +++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h @@ -416,21 +416,6 @@ class BattlefieldWG : public Battlefield uint32 GetData(uint32 data); - static uint32 const VehNumWorldState[]; - static uint32 const MaxVehNumWorldState[]; - static uint32 const ClockWorldState[]; - static uint32 const WintergraspFaction[]; - static float const WintergraspStalkerPos[]; - - static uint8 const WG_MAX_OBJ; - static uint8 const WG_KEEPGAMEOBJECT_MAX; - static uint8 const WG_MAX_TURRET; - static uint8 const WG_MAX_KEEP_NPC; - static uint8 const WG_MAX_OUTSIDE_NPC; - static uint8 const WG_OUTSIDE_ALLIANCE_NPC; - static uint8 const WG_MAX_TELEPORTER; - static uint8 const WG_MAX_WORKSHOP; - protected: bool m_isRelicInteractible; @@ -451,20 +436,20 @@ class BattlefieldWG : public Battlefield GameObject* m_titansRelic; }; -uint32 const BattlefieldWG::VehNumWorldState[] = { 3680, 3490 }; -uint32 const BattlefieldWG::MaxVehNumWorldState[] = { 3681, 3491 }; -uint32 const BattlefieldWG::ClockWorldState[] = { 3781, 4354 }; -uint32 const BattlefieldWG::WintergraspFaction[] = { 1732, 1735, 35 }; -float const BattlefieldWG::WintergraspStalkerPos[] = { 0, 0, 0, 0 }; - -uint8 const BattlefieldWG::WG_MAX_OBJ = 32; -uint8 const BattlefieldWG::WG_KEEPGAMEOBJECT_MAX = 44; -uint8 const BattlefieldWG::WG_MAX_TURRET = 15; -uint8 const BattlefieldWG::WG_MAX_KEEP_NPC = 39; -uint8 const BattlefieldWG::WG_MAX_OUTSIDE_NPC = 14; -uint8 const BattlefieldWG::WG_OUTSIDE_ALLIANCE_NPC = 7; -uint8 const BattlefieldWG::WG_MAX_TELEPORTER = 12; -uint8 const BattlefieldWG::WG_MAX_WORKSHOP = 6; +uint32 const VehNumWorldState[] = { 3680, 3490 }; +uint32 const MaxVehNumWorldState[] = { 3681, 3491 }; +uint32 const ClockWorldState[] = { 3781, 4354 }; +uint32 const WintergraspFaction[] = { 1732, 1735, 35 }; +float const WintergraspStalkerPos[] = { 0, 0, 0, 0 }; + +uint8 const WG_MAX_OBJ = 32; +uint8 const WG_KEEPGAMEOBJECT_MAX = 44; +uint8 const WG_MAX_TURRET = 15; +uint8 const WG_MAX_KEEP_NPC = 39; +uint8 const WG_MAX_OUTSIDE_NPC = 14; +uint8 const WG_OUTSIDE_ALLIANCE_NPC = 7; +uint8 const WG_MAX_TELEPORTER = 12; +uint8 const WG_MAX_WORKSHOP = 6; enum WintergraspGameObjectBuildingType { @@ -595,7 +580,7 @@ struct WintergraspBuildingSpawnData uint32 nameId; }; -const WintergraspBuildingSpawnData WGGameObjectBuilding[BattlefieldWG::WG_MAX_OBJ] = +const WintergraspBuildingSpawnData WGGameObjectBuilding[WG_MAX_OBJ] = { // Wall (Not spawned in db) // Entry WS X Y Z O type NameID @@ -688,7 +673,7 @@ const WintergraspBuildingSpawnData WGGameObjectBuilding[BattlefieldWG::WG_MAX_OB // 192357 : 1 in sql, 1 in header // 192350 : 1 in sql, 1 in header // 192351 : 1 in sql, 1 in header -const WintergraspObjectPositionData WGKeepGameObject[BattlefieldWG::WG_KEEPGAMEOBJECT_MAX] = +const WintergraspObjectPositionData WGKeepGameObject[WG_KEEPGAMEOBJECT_MAX] = { { 5262.540039f, 3047.949951f, 432.054993f, 3.106650f, 192488, 192501 }, // Flag on tower { 5272.939941f, 2976.550049f, 444.492004f, 3.124120f, 192374, 192416 }, // Flag on Wall Intersect @@ -736,7 +721,7 @@ const WintergraspObjectPositionData WGKeepGameObject[BattlefieldWG::WG_KEEPGAMEO { 5271.279785f, 2820.159912f, 445.200989f, -3.13286f, 192351, 192416 } // Flag on wall intersect }; -const Position WGTurret[BattlefieldWG::WG_MAX_TURRET] = +const Position WGTurret[WG_MAX_TURRET] = { { 5391.19f, 3060.8f, 419.616f, 1.69557f }, { 5266.75f, 2976.5f, 421.067f, 3.20354f }, @@ -756,7 +741,7 @@ const Position WGTurret[BattlefieldWG::WG_MAX_TURRET] = }; // Here there is all npc keeper spawn point -const WintergraspObjectPositionData WGKeepNPC[BattlefieldWG::WG_MAX_KEEP_NPC] = +const WintergraspObjectPositionData WGKeepNPC[WG_MAX_KEEP_NPC] = { // X Y Z O horde alliance // North East @@ -807,7 +792,7 @@ const WintergraspObjectPositionData WGKeepNPC[BattlefieldWG::WG_MAX_KEEP_NPC] = { 5316.770996f, 2619.430176f, 409.027740f, 5.363431f, BATTLEFIELD_WG_NPC_GUARD_H, BATTLEFIELD_WG_NPC_GUARD_A } // Standing Guard }; -const WintergraspObjectPositionData WGOutsideNPC[BattlefieldWG::WG_MAX_OUTSIDE_NPC] = +const WintergraspObjectPositionData WGOutsideNPC[WG_MAX_OUTSIDE_NPC] = { { 5032.04f, 3681.79f, 362.980f, 4.210f, BATTLEFIELD_WG_NPC_VIERON_BLAZEFEATHER, 0 }, { 5020.71f, 3626.19f, 360.150f, 4.640f, BATTLEFIELD_WG_NPC_HOODOO_MASTER_FU_JIN, 0 }, @@ -834,7 +819,7 @@ struct WintergraspTeleporterData float o; }; -const WintergraspTeleporterData WGPortalDefenderData[BattlefieldWG::WG_MAX_TELEPORTER] = +const WintergraspTeleporterData WGPortalDefenderData[WG_MAX_TELEPORTER] = { // Player teleporter { 190763, 5153.41f, 2901.35f, 409.191f, -0.069f }, @@ -1136,7 +1121,7 @@ struct WGWorkshopData uint32 text; }; -const WGWorkshopData WorkshopsData[BattlefieldWG::WG_MAX_WORKSHOP] = +const WGWorkshopData WorkshopsData[WG_MAX_WORKSHOP] = { // NE {BATTLEFIELD_WG_WORKSHOP_NE, WORLDSTATE_WORKSHOP_NE, BATTLEFIELD_WG_TEXT_WORKSHOP_NAME_NE}, @@ -1230,7 +1215,7 @@ struct BfWGGameObjectBuilding m_WG->SendUpdateWorldState(m_WorldState, m_State); } UpdateCreatureAndGo(); - m_Build->SetUInt32Value(GAMEOBJECT_FACTION, BattlefieldWG::WintergraspFaction[m_Team]); + m_Build->SetUInt32Value(GAMEOBJECT_FACTION, WintergraspFaction[m_Team]); } // Called when associated gameobject is damaged @@ -1417,12 +1402,12 @@ struct BfWGGameObjectBuilding case GO_WINTERGRASP_FORTRESS_TOWER_2: case GO_WINTERGRASP_FORTRESS_TOWER_3: case GO_WINTERGRASP_FORTRESS_TOWER_4: - turret->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetDefenderTeam()]); + turret->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]); break; case GO_WINTERGRASP_SHADOWSIGHT_TOWER: case GO_WINTERGRASP_WINTER_S_EDGE_TOWER: case GO_WINTERGRASP_FLAMEWATCH_TOWER: - turret->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetAttackerTeam()]); + turret->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]); break; } m_WG->HideNpc(turret); @@ -1443,12 +1428,12 @@ struct BfWGGameObjectBuilding case GO_WINTERGRASP_FORTRESS_TOWER_2: case GO_WINTERGRASP_FORTRESS_TOWER_3: case GO_WINTERGRASP_FORTRESS_TOWER_4: - turret->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetDefenderTeam()]); + turret->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]); break; case GO_WINTERGRASP_SHADOWSIGHT_TOWER: case GO_WINTERGRASP_WINTER_S_EDGE_TOWER: case GO_WINTERGRASP_FLAMEWATCH_TOWER: - turret->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetAttackerTeam()]); + turret->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]); break; } m_WG->HideNpc(turret); @@ -1509,14 +1494,14 @@ struct BfWGGameObjectBuilding case GO_WINTERGRASP_FORTRESS_TOWER_3: case GO_WINTERGRASP_FORTRESS_TOWER_4: { - creature->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetDefenderTeam()]); + creature->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]); break; } case GO_WINTERGRASP_SHADOWSIGHT_TOWER: case GO_WINTERGRASP_WINTER_S_EDGE_TOWER: case GO_WINTERGRASP_FLAMEWATCH_TOWER: { - creature->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetAttackerTeam()]); + creature->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]); break; } } @@ -1545,14 +1530,14 @@ struct BfWGGameObjectBuilding case GO_WINTERGRASP_FORTRESS_TOWER_3: case GO_WINTERGRASP_FORTRESS_TOWER_4: { - creature->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetDefenderTeam()]); + creature->setFaction(WintergraspFaction[m_WG->GetDefenderTeam()]); break; } case GO_WINTERGRASP_SHADOWSIGHT_TOWER: case GO_WINTERGRASP_WINTER_S_EDGE_TOWER: case GO_WINTERGRASP_FLAMEWATCH_TOWER: { - creature->setFaction(BattlefieldWG::WintergraspFaction[m_WG->GetAttackerTeam()]); + creature->setFaction(WintergraspFaction[m_WG->GetAttackerTeam()]); break; } } @@ -1581,7 +1566,7 @@ struct WGWorkshop WGWorkshop(BattlefieldWG* _bf, uint8 _workshopId) { - ASSERT(_bf || _workshopId < BattlefieldWG::WG_MAX_WORKSHOP); + ASSERT(_bf || _workshopId < WG_MAX_WORKSHOP); bf = _bf; workshopId = _workshopId; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index c0e3e3afc03..fcc3c8a1e93 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -9118,7 +9118,7 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) break; case 4197: // Wintergrasp /// Use the max here, and fill with zeros if missing. - NumberOfFields = 10 + BattlefieldWG::WG_MAX_OBJ + BattlefieldWG::WG_MAX_WORKSHOP; + NumberOfFields = 10 + WG_MAX_OBJ + WG_MAX_WORKSHOP; break; default: NumberOfFields = 12; @@ -9720,11 +9720,11 @@ void Player::SendBattlefieldWorldStates() if (BattlefieldWG* wg = (BattlefieldWG*)sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG)) { if (wg->IsWarTime()) - SendUpdateWorldState(BattlefieldWG::ClockWorldState[1], uint32(time(NULL))); + SendUpdateWorldState(ClockWorldState[1], uint32(time(NULL))); else // Time to next battle { uint32 timer = wg->GetTimer() / 1000; - SendUpdateWorldState(BattlefieldWG::ClockWorldState[1], time(NULL) + timer); + SendUpdateWorldState(ClockWorldState[1], time(NULL) + timer); } } } diff --git a/src/server/scripts/Northrend/wintergrasp.cpp b/src/server/scripts/Northrend/wintergrasp.cpp index c58f6fc2dff..59e9a31c4cf 100644 --- a/src/server/scripts/Northrend/wintergrasp.cpp +++ b/src/server/scripts/Northrend/wintergrasp.cpp @@ -307,7 +307,7 @@ class go_wg_vehicle_teleporter : public GameObjectScript // Tabulation madness in the hole! for (uint8 i = 0; i < MAX_WINTERGRASP_VEHICLES; i++) if (Creature* vehicleCreature = go->FindNearestCreature(vehiclesList[i], 3.0f, true)) - if (!vehicleCreature->HasAura(SPELL_VEHICLE_TELEPORT) && vehicleCreature->getFaction() == BattlefieldWG::WintergraspFaction[wg->GetDefenderTeam()]) + if (!vehicleCreature->HasAura(SPELL_VEHICLE_TELEPORT) && vehicleCreature->getFaction() == WintergraspFaction[wg->GetDefenderTeam()]) if (Creature* teleportTrigger = vehicleCreature->FindNearestCreature(NPC_WORLD_TRIGGER_LARGE_AOI_NOT_IMMUNE_PC_NPC, 100.0f, true)) teleportTrigger->CastSpell(vehicleCreature, SPELL_VEHICLE_TELEPORT, true); -- cgit v1.2.3