diff options
| -rw-r--r-- | sql/updates/3643_world_(wintergrasp).sql | 13 | ||||
| -rw-r--r-- | sql/world_spell_full.sql | 16 | ||||
| -rw-r--r-- | src/game/ObjectMgr.cpp | 27 | ||||
| -rw-r--r-- | src/game/Wintergrasp.cpp | 2 | ||||
| -rw-r--r-- | src/game/Wintergrasp.h | 2 |
5 files changed, 59 insertions, 1 deletions
diff --git a/sql/updates/3643_world_(wintergrasp).sql b/sql/updates/3643_world_(wintergrasp).sql new file mode 100644 index 00000000000..5d59423d2bd --- /dev/null +++ b/sql/updates/3643_world_(wintergrasp).sql @@ -0,0 +1,13 @@ +DELETE FROM `spell_script_target` WHERE entry IN +(54643); +INSERT INTO `spell_script_target` (`entry`, `type`, `targetEntry`) VALUES +(54643,1,23472); + +DELETE FROM `game_event` WHERE `entry` IN (50,51); +INSERT INTO `game_event` (`entry`, `description`, `world_event`) VALUES +(50, 'Wintergrasp Alliance Defence', 5), +(51, 'Wintergrasp Horde Defence', 5); + +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (54643); +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES +( 54643,-54643, 2, 'Wintergrasp Defender Teleport');
\ No newline at end of file diff --git a/sql/world_spell_full.sql b/sql/world_spell_full.sql index 7da0d4ddd0f..284072608ba 100644 --- a/sql/world_spell_full.sql +++ b/sql/world_spell_full.sql @@ -1707,6 +1707,13 @@ spell8 = VALUES(spell8); -- -------- -- WINTERGRASP -- -------- + +DELETE FROM `game_event` WHERE `entry` IN (50,51); +INSERT INTO `game_event` (`entry`, `description`, `world_event`) VALUES +(50, 'Wintergrasp Alliance Defence', 5), +(51, 'Wintergrasp Horde Defence', 5); + +-- Build Vehicles DELETE FROM `spell_script_target` WHERE entry IN (56575,56661,56663,56665,56667,56669,61408); INSERT INTO `spell_script_target` (`entry`, `type`, `targetEntry`) VALUES @@ -1718,6 +1725,15 @@ INSERT INTO `spell_script_target` (`entry`, `type`, `targetEntry`) VALUES (56669, 1, 27852), (61408, 1, 27852); +-- Defender's Portal +DELETE FROM `spell_script_target` WHERE entry IN +(54643); +INSERT INTO `spell_script_target` (`entry`, `type`, `targetEntry`) VALUES +(54643,1,23472); +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (54643); +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES +( 54643,-54643, 2, 'Wintergrasp Defender Teleport'); + update creature_template set maxhealth = 30000, minhealth = 30000, speed = 2, spell1=50025, spell2=50989, VehicleId = 36 where entry = 27881; update creature_template set maxhealth = 50000, minhealth = 50000, speed = 1.6, spell1=50896, spell2=50652, VehicleId = 106 where entry = 28094; update creature_template set maxhealth = 75000, minhealth = 75000, speed = 1, spell1=51678, VehicleId = 117 where entry IN (28312,32627); diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 52a06ed7e57..7232da67103 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -892,7 +892,15 @@ uint32 ObjectMgr::ChooseDisplayId(uint32 team, const CreatureInfo *cinfo, const if (!data || data->displayid == 0) // use defaults from the template { display_id = cinfo->GetRandomValidModelId(); - } else display_id = data->displayid; // overwritten from creature data + } + else + { + display_id = data->displayid; // overwritten from creature data + // I do not know why but in db most display id are not zero + if(display_id == cinfo->Modelid_A1 || display_id == cinfo->Modelid_A2 + || display_id == cinfo->Modelid_H1 || display_id == cinfo->Modelid_H2) + display_id = cinfo->GetRandomValidModelId(); + } return display_id; } @@ -1059,6 +1067,9 @@ void ObjectMgr::LoadCreatures() if(cInfo->HeroicEntry) heroicCreatures.insert(cInfo->HeroicEntry); + //TODO: remove this + gameeventmgr.mGameEventCreatureGuids.resize(52*2-1); + barGoLink bar(result->GetRowCount()); do @@ -1160,6 +1171,20 @@ void ObjectMgr::LoadCreatures() data.phaseMask = 1; } + //if(entry == 32307 || entry == 32308) + if(entry == 30739 || entry == 30740) + { + gameEvent = 51; + uint32 guid2 = objmgr.GenerateLowGuid(HIGHGUID_UNIT); + CreatureData& data2 = mCreatureDataMap[guid2]; + data2 = data; +// data2.id = (entry == 32307 ? 32308 : 32307); + data2.id = (entry == 30739 ? 30740 : 30739); + data2.displayid = 0; + gameeventmgr.mGameEventCreatureGuids[51+51].push_back(guid); + gameeventmgr.mGameEventCreatureGuids[51+50].push_back(guid2); + } + if (gameEvent==0 && PoolId==0) // if not this is to be managed by GameEvent System or Pool system AddCreatureToGrid(guid, &data); diff --git a/src/game/Wintergrasp.cpp b/src/game/Wintergrasp.cpp index 0103b32b35d..a6f84c83b2e 100644 --- a/src/game/Wintergrasp.cpp +++ b/src/game/Wintergrasp.cpp @@ -19,6 +19,7 @@ #include "Wintergrasp.h" #include "SpellAuras.h" #include "Vehicle.h" +#include "GameEventMgr.h" bool OPvPWintergrasp::SetupOutdoorPvP() { @@ -32,6 +33,7 @@ bool OPvPWintergrasp::SetupOutdoorPvP() } m_defender = TeamId(rand()%2); + gameeventmgr.StartInternalEvent(GameEventWintergraspDefender[m_defender]); return true; } diff --git a/src/game/Wintergrasp.h b/src/game/Wintergrasp.h index e95b7884efb..76838068d48 100644 --- a/src/game/Wintergrasp.h +++ b/src/game/Wintergrasp.h @@ -23,6 +23,8 @@ #define ZONE_WINTERGRASP 4197 +const uint16 GameEventWintergraspDefender[2] = {50, 51}; + #define POS_X_CENTER 4700 #define SPELL_RECRUIT 37795 |
