mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 09:44:45 +01:00
Scripts/Icecrown Citadel: Icecrown Gunship Battle
This commit is contained in:
@@ -168,6 +168,7 @@ set(scripts_STAT_SRCS
|
||||
Northrend/IcecrownCitadel/icecrown_citadel_teleport.cpp
|
||||
Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
|
||||
Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
|
||||
Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
|
||||
Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp
|
||||
Northrend/IcecrownCitadel/boss_festergut.cpp
|
||||
Northrend/IcecrownCitadel/boss_rotface.cpp
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2570,38 +2570,6 @@ class spell_the_lich_king_valkyr_target_search : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
class spell_the_lich_king_eject_all_passengers : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_the_lich_king_eject_all_passengers() : SpellScriptLoader("spell_the_lich_king_eject_all_passengers") { }
|
||||
|
||||
class spell_the_lich_king_eject_all_passengers_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_the_lich_king_eject_all_passengers_SpellScript);
|
||||
|
||||
bool Load() OVERRIDE
|
||||
{
|
||||
return GetCaster()->IsVehicle();
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex effIndex)
|
||||
{
|
||||
PreventHitDefaultEffect(effIndex);
|
||||
GetCaster()->GetVehicleKit()->RemoveAllPassengers();
|
||||
}
|
||||
|
||||
void Register() OVERRIDE
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_the_lich_king_eject_all_passengers_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const OVERRIDE
|
||||
{
|
||||
return new spell_the_lich_king_eject_all_passengers_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
class spell_the_lich_king_cast_back_to_caster : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -3234,7 +3202,6 @@ void AddSC_boss_the_lich_king()
|
||||
new spell_the_lich_king_summon_into_air();
|
||||
new spell_the_lich_king_soul_reaper();
|
||||
new spell_the_lich_king_valkyr_target_search();
|
||||
new spell_the_lich_king_eject_all_passengers();
|
||||
new spell_the_lich_king_cast_back_to_caster();
|
||||
new spell_the_lich_king_life_siphon();
|
||||
new spell_the_lich_king_vile_spirits();
|
||||
|
||||
@@ -76,7 +76,7 @@ enum DataTypes
|
||||
// Encounter States/Boss GUIDs
|
||||
DATA_LORD_MARROWGAR = 0,
|
||||
DATA_LADY_DEATHWHISPER = 1,
|
||||
DATA_GUNSHIP_EVENT = 2,
|
||||
DATA_ICECROWN_GUNSHIP_BATTLE = 2,
|
||||
DATA_DEATHBRINGER_SAURFANG = 3,
|
||||
DATA_FESTERGUT = 4,
|
||||
DATA_ROTFACE = 5,
|
||||
@@ -116,6 +116,7 @@ enum DataTypes
|
||||
DATA_HIGHLORD_TIRION_FORDRING = 37,
|
||||
DATA_ARTHAS_PLATFORM = 38,
|
||||
DATA_TERENAS_MENETHIL = 39,
|
||||
DATA_ENEMY_GUNSHIP = 40
|
||||
};
|
||||
|
||||
enum CreaturesIds
|
||||
@@ -169,6 +170,33 @@ enum CreaturesIds
|
||||
NPC_REANIMATED_ADHERENT = 38010,
|
||||
NPC_VENGEFUL_SHADE = 38222,
|
||||
|
||||
// Icecrown Gunship Battle
|
||||
NPC_MARTYR_STALKER_IGB_SAURFANG = 38569,
|
||||
NPC_ALLIANCE_GUNSHIP_CANNON = 36838,
|
||||
NPC_HORDE_GUNSHIP_CANNON = 36839,
|
||||
NPC_SKYBREAKER_DECKHAND = 36970,
|
||||
NPC_ORGRIMS_HAMMER_CREW = 36971,
|
||||
NPC_IGB_HIGH_OVERLORD_SAURFANG = 36939,
|
||||
NPC_IGB_MURADIN_BRONZEBEARD = 36948,
|
||||
NPC_THE_SKYBREAKER = 37540,
|
||||
NPC_ORGRIMS_HAMMER = 37215,
|
||||
NPC_GUNSHIP_HULL = 37547,
|
||||
NPC_TELEPORT_PORTAL = 37227,
|
||||
NPC_TELEPORT_EXIT = 37488,
|
||||
NPC_SKYBREAKER_SORCERER = 37116,
|
||||
NPC_SKYBREAKER_RIFLEMAN = 36969,
|
||||
NPC_SKYBREAKER_MORTAR_SOLDIER = 36978,
|
||||
NPC_SKYBREAKER_MARINE = 36950,
|
||||
NPC_SKYBREAKER_SERGEANT = 36961,
|
||||
NPC_KOR_KRON_BATTLE_MAGE = 37117,
|
||||
NPC_KOR_KRON_AXETHROWER = 36968,
|
||||
NPC_KOR_KRON_ROCKETEER = 36982,
|
||||
NPC_KOR_KRON_REAVER = 36957,
|
||||
NPC_KOR_KRON_SERGEANT = 36960,
|
||||
NPC_ZAFOD_BOOMBOX = 37184,
|
||||
NPC_HIGH_CAPTAIN_JUSTIN_BARTLETT = 37182,
|
||||
NPC_SKY_REAVER_KORM_BLACKSCAR = 37833,
|
||||
|
||||
// Deathbringer Saurfang
|
||||
NPC_DEATHBRINGER_SAURFANG = 37813,
|
||||
NPC_BLOOD_BEAST = 38508,
|
||||
@@ -305,6 +333,22 @@ enum GameObjectsIds
|
||||
GO_ORATORY_OF_THE_DAMNED_ENTRANCE = 201563,
|
||||
GO_LADY_DEATHWHISPER_ELEVATOR = 202220,
|
||||
|
||||
// Icecrown Gunship Battle - Horde raid
|
||||
GO_ORGRIMS_HAMMER_H = 201812,
|
||||
GO_THE_SKYBREAKER_H = 201811,
|
||||
GO_GUNSHIP_ARMORY_H_10N = 202178,
|
||||
GO_GUNSHIP_ARMORY_H_25N = 202180,
|
||||
GO_GUNSHIP_ARMORY_H_10H = 202177,
|
||||
GO_GUNSHIP_ARMORY_H_25H = 202179,
|
||||
|
||||
// Icecrown Gunship Battle - Alliance raid
|
||||
GO_ORGRIMS_HAMMER_A = 201581,
|
||||
GO_THE_SKYBREAKER_A = 201580,
|
||||
GO_GUNSHIP_ARMORY_A_10N = 201873,
|
||||
GO_GUNSHIP_ARMORY_A_25N = 201874,
|
||||
GO_GUNSHIP_ARMORY_A_10H = 201872,
|
||||
GO_GUNSHIP_ARMORY_A_25H = 201875,
|
||||
|
||||
// Deathbringer Saurfang
|
||||
GO_SAURFANG_S_DOOR = 201825,
|
||||
GO_DEATHBRINGER_S_CACHE_10N = 202239,
|
||||
@@ -408,6 +452,9 @@ enum AchievementCriteriaIds
|
||||
|
||||
enum SharedActions
|
||||
{
|
||||
// Icecrown Gunship Battle
|
||||
ACTION_ENEMY_GUNSHIP_TALK = -369390,
|
||||
|
||||
// Festergut
|
||||
ACTION_FESTERGUT_COMBAT = -366260,
|
||||
ACTION_FESTERGUT_GAS = -366261,
|
||||
@@ -459,6 +506,7 @@ enum WorldStatesICC
|
||||
|
||||
enum AreaIds
|
||||
{
|
||||
AREA_ICECROWN_CITADEL = 4812,
|
||||
AREA_THE_FROZEN_THRONE = 4859
|
||||
};
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ class icecrown_citadel_teleport : public GameObjectScript
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Oratory of the Damned.", GOSSIP_SENDER_ICC_PORT, ORATORY_OF_THE_DAMNED_TELEPORT);
|
||||
if (instance->GetBossState(DATA_LADY_DEATHWHISPER) == DONE)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Rampart of Skulls.", GOSSIP_SENDER_ICC_PORT, RAMPART_OF_SKULLS_TELEPORT);
|
||||
if (instance->GetBossState(DATA_GUNSHIP_EVENT) == DONE)
|
||||
if (instance->GetBossState(DATA_ICECROWN_GUNSHIP_BATTLE) == DONE)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Deathbringer's Rise.", GOSSIP_SENDER_ICC_PORT, DEATHBRINGER_S_RISE_TELEPORT);
|
||||
if (instance->GetData(DATA_COLDFLAME_JETS) == DONE)
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Upper Spire.", GOSSIP_SENDER_ICC_PORT, UPPER_SPIRE_TELEPORT);
|
||||
|
||||
@@ -15,20 +15,27 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "ObjectMgr.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "Map.h"
|
||||
#include "PoolMgr.h"
|
||||
#include "AccountMgr.h"
|
||||
#include "icecrown_citadel.h"
|
||||
#include "InstanceScript.h"
|
||||
#include "Map.h"
|
||||
#include "ObjectMgr.h"
|
||||
#include "Player.h"
|
||||
#include "PoolMgr.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "ScriptedCreature.h"
|
||||
#include "Transport.h"
|
||||
#include "TransportMgr.h"
|
||||
#include "WorldPacket.h"
|
||||
#include "WorldSession.h"
|
||||
#include "icecrown_citadel.h"
|
||||
|
||||
enum EventIds
|
||||
{
|
||||
EVENT_PLAYERS_GUNSHIP_SPAWN = 22663,
|
||||
EVENT_PLAYERS_GUNSHIP_COMBAT = 22664,
|
||||
EVENT_PLAYERS_GUNSHIP_SAURFANG = 22665,
|
||||
EVENT_ENEMY_GUNSHIP_COMBAT = 22860,
|
||||
EVENT_ENEMY_GUNSHIP_DESPAWN = 22861,
|
||||
EVENT_QUAKE = 23437,
|
||||
EVENT_SECOND_REMORSELESS_WINTER = 23507,
|
||||
EVENT_TELEPORT_TO_FROSTMOURNE = 23617
|
||||
@@ -39,6 +46,7 @@ enum TimedEvents
|
||||
EVENT_UPDATE_EXECUTION_TIME = 1,
|
||||
EVENT_QUAKE_SHATTER = 2,
|
||||
EVENT_REBUILD_PLATFORM = 3,
|
||||
EVENT_RESPAWN_GUNSHIP = 4
|
||||
};
|
||||
|
||||
DoorData const doorData[] =
|
||||
@@ -106,6 +114,9 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
TeamInInstance = 0;
|
||||
HeroicAttempts = MaxHeroicAttempts;
|
||||
LadyDeathwisperElevatorGUID = 0;
|
||||
GunshipGUID = 0;
|
||||
EnemyGunshipGUID = 0;
|
||||
GunshipArmoryGUID = 0;
|
||||
DeathbringerSaurfangGUID = 0;
|
||||
DeathbringerSaurfangDoorGUID = 0;
|
||||
DeathbringerSaurfangEventGUID = 0;
|
||||
@@ -164,6 +175,9 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
{
|
||||
if (!TeamInInstance)
|
||||
TeamInInstance = player->GetTeam();
|
||||
|
||||
if (GetBossState(DATA_LADY_DEATHWHISPER) == DONE && GetBossState(DATA_ICECROWN_GUNSHIP_BATTLE) != DONE)
|
||||
SpawnGunship();
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature) OVERRIDE
|
||||
@@ -217,6 +231,10 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
case NPC_DEATHBRINGER_SAURFANG:
|
||||
DeathbringerSaurfangGUID = creature->GetGUID();
|
||||
break;
|
||||
case NPC_ALLIANCE_GUNSHIP_CANNON:
|
||||
case NPC_HORDE_GUNSHIP_CANNON:
|
||||
creature->SetControlled(true, UNIT_STATE_ROOT);
|
||||
break;
|
||||
case NPC_SE_HIGH_OVERLORD_SAURFANG:
|
||||
if (TeamInInstance == ALLIANCE)
|
||||
creature->UpdateEntry(NPC_SE_MURADIN_BRONZEBEARD, ALLIANCE, creature->GetCreatureData());
|
||||
@@ -341,6 +359,54 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NPC_HORDE_GUNSHIP_CANNON:
|
||||
case NPC_ORGRIMS_HAMMER_CREW:
|
||||
case NPC_SKY_REAVER_KORM_BLACKSCAR:
|
||||
if (TeamInInstance == ALLIANCE)
|
||||
return 0;
|
||||
break;
|
||||
case NPC_ALLIANCE_GUNSHIP_CANNON:
|
||||
case NPC_SKYBREAKER_DECKHAND:
|
||||
case NPC_HIGH_CAPTAIN_JUSTIN_BARTLETT:
|
||||
if (TeamInInstance == HORDE)
|
||||
return 0;
|
||||
break;
|
||||
case NPC_ZAFOD_BOOMBOX:
|
||||
if (GameObjectTemplate const* go = sObjectMgr->GetGameObjectTemplate(GO_THE_SKYBREAKER_A))
|
||||
if ((TeamInInstance == ALLIANCE && data->mapid == go->moTransport.mapID) ||
|
||||
(TeamInInstance == HORDE && data->mapid != go->moTransport.mapID))
|
||||
return entry;
|
||||
return 0;
|
||||
case NPC_IGB_MURADIN_BRONZEBEARD:
|
||||
if ((TeamInInstance == ALLIANCE && data->posX > 10.0f) ||
|
||||
(TeamInInstance == HORDE && data->posX < 10.0f))
|
||||
return entry;
|
||||
return 0;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
uint32 GetGameObjectEntry(uint32 /*guidLow*/, uint32 entry) OVERRIDE
|
||||
{
|
||||
switch (entry)
|
||||
{
|
||||
case GO_GUNSHIP_ARMORY_H_10N:
|
||||
case GO_GUNSHIP_ARMORY_H_25N:
|
||||
case GO_GUNSHIP_ARMORY_H_10H:
|
||||
case GO_GUNSHIP_ARMORY_H_25H:
|
||||
if (TeamInInstance == ALLIANCE)
|
||||
return 0;
|
||||
break;
|
||||
case GO_GUNSHIP_ARMORY_A_10N:
|
||||
case GO_GUNSHIP_ARMORY_A_25N:
|
||||
case GO_GUNSHIP_ARMORY_A_10H:
|
||||
case GO_GUNSHIP_ARMORY_A_25H:
|
||||
if (TeamInInstance == HORDE)
|
||||
return 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -446,6 +512,20 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
break;
|
||||
case GO_THE_SKYBREAKER_H:
|
||||
case GO_ORGRIMS_HAMMER_A:
|
||||
EnemyGunshipGUID = go->GetGUID();
|
||||
break;
|
||||
case GO_GUNSHIP_ARMORY_H_10N:
|
||||
case GO_GUNSHIP_ARMORY_H_25N:
|
||||
case GO_GUNSHIP_ARMORY_H_10H:
|
||||
case GO_GUNSHIP_ARMORY_H_25H:
|
||||
case GO_GUNSHIP_ARMORY_A_10N:
|
||||
case GO_GUNSHIP_ARMORY_A_25N:
|
||||
case GO_GUNSHIP_ARMORY_A_10H:
|
||||
case GO_GUNSHIP_ARMORY_A_25H:
|
||||
GunshipArmoryGUID = go->GetGUID();
|
||||
break;
|
||||
case GO_SAURFANG_S_DOOR:
|
||||
DeathbringerSaurfangDoorGUID = go->GetGUID();
|
||||
AddDoor(go, true);
|
||||
@@ -587,6 +667,10 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
case GO_ICE_WALL:
|
||||
AddDoor(go, false);
|
||||
break;
|
||||
case GO_THE_SKYBREAKER_A:
|
||||
case GO_ORGRIMS_HAMMER_H:
|
||||
GunshipGUID = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -621,6 +705,10 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DATA_ICECROWN_GUNSHIP_BATTLE:
|
||||
return GunshipGUID;
|
||||
case DATA_ENEMY_GUNSHIP:
|
||||
return EnemyGunshipGUID;
|
||||
case DATA_DEATHBRINGER_SAURFANG:
|
||||
return DeathbringerSaurfangGUID;
|
||||
case DATA_SAURFANG_EVENT_NPC:
|
||||
@@ -691,7 +779,7 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
switch (type)
|
||||
{
|
||||
case DATA_LADY_DEATHWHISPER:
|
||||
SetBossState(DATA_GUNSHIP_EVENT, state); // TEMP HACK UNTIL GUNSHIP SCRIPTED
|
||||
{
|
||||
if (state == DONE)
|
||||
{
|
||||
if (GameObject* elevator = instance->GetGameObject(LadyDeathwisperElevatorGUID))
|
||||
@@ -699,8 +787,20 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
elevator->SetUInt32Value(GAMEOBJECT_LEVEL, 0);
|
||||
elevator->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
|
||||
SpawnGunship();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DATA_ICECROWN_GUNSHIP_BATTLE:
|
||||
if (state == DONE)
|
||||
{
|
||||
if (GameObject* loot = instance->GetGameObject(GunshipArmoryGUID))
|
||||
loot->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE | GO_FLAG_NODESPAWN);
|
||||
}
|
||||
else if (state == FAIL)
|
||||
Events.ScheduleEvent(EVENT_RESPAWN_GUNSHIP, 30000);
|
||||
break;
|
||||
case DATA_DEATHBRINGER_SAURFANG:
|
||||
switch (state)
|
||||
{
|
||||
@@ -846,6 +946,17 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
return true;
|
||||
}
|
||||
|
||||
void SpawnGunship()
|
||||
{
|
||||
if (!GunshipGUID)
|
||||
{
|
||||
SetBossState(DATA_ICECROWN_GUNSHIP_BATTLE, NOT_STARTED);
|
||||
uint32 gunshipEntry = TeamInInstance == HORDE ? GO_ORGRIMS_HAMMER_H : GO_THE_SKYBREAKER_A;
|
||||
if (Transport* gunship = sTransportMgr->CreateTransport(gunshipEntry, 0, instance))
|
||||
GunshipGUID = gunship->GetGUID();
|
||||
}
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data) OVERRIDE
|
||||
{
|
||||
switch (type)
|
||||
@@ -1066,10 +1177,10 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
return false;
|
||||
// no break
|
||||
case DATA_DEATHBRINGER_SAURFANG:
|
||||
if (GetBossState(DATA_GUNSHIP_EVENT) != DONE)
|
||||
if (GetBossState(DATA_ICECROWN_GUNSHIP_BATTLE) != DONE)
|
||||
return false;
|
||||
// no break
|
||||
case DATA_GUNSHIP_EVENT:
|
||||
case DATA_ICECROWN_GUNSHIP_BATTLE:
|
||||
if (GetBossState(DATA_LADY_DEATHWHISPER) != DONE)
|
||||
return false;
|
||||
// no break
|
||||
@@ -1163,7 +1274,7 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
|
||||
void Update(uint32 diff) OVERRIDE
|
||||
{
|
||||
if (BloodQuickeningState != IN_PROGRESS && GetBossState(DATA_THE_LICH_KING) != IN_PROGRESS)
|
||||
if (BloodQuickeningState != IN_PROGRESS && GetBossState(DATA_THE_LICH_KING) != IN_PROGRESS && GetBossState(DATA_ICECROWN_GUNSHIP_BATTLE) != FAIL)
|
||||
return;
|
||||
|
||||
Events.Update(diff);
|
||||
@@ -1213,16 +1324,34 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
if (GameObject* wind = instance->GetGameObject(FrozenThroneWindGUID))
|
||||
wind->SetGoState(GO_STATE_ACTIVE);
|
||||
break;
|
||||
case EVENT_RESPAWN_GUNSHIP:
|
||||
SpawnGunship();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ProcessEvent(WorldObject* /*source*/, uint32 eventId) OVERRIDE
|
||||
void ProcessEvent(WorldObject* source, uint32 eventId) OVERRIDE
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_ENEMY_GUNSHIP_DESPAWN:
|
||||
if (GetBossState(DATA_ICECROWN_GUNSHIP_BATTLE) == DONE)
|
||||
source->AddObjectToRemoveList();
|
||||
break;
|
||||
case EVENT_ENEMY_GUNSHIP_COMBAT:
|
||||
if (Creature* captain = source->FindNearestCreature(TeamInInstance == HORDE ? NPC_IGB_HIGH_OVERLORD_SAURFANG : NPC_IGB_MURADIN_BRONZEBEARD, 100.0f))
|
||||
captain->AI()->DoAction(ACTION_ENEMY_GUNSHIP_TALK);
|
||||
// no break;
|
||||
case EVENT_PLAYERS_GUNSHIP_SPAWN:
|
||||
case EVENT_PLAYERS_GUNSHIP_COMBAT:
|
||||
case EVENT_PLAYERS_GUNSHIP_SAURFANG:
|
||||
if (GameObject* go = source->ToGameObject())
|
||||
if (Transport* transport = go->ToTransport())
|
||||
transport->EnableMovement(false);
|
||||
break;
|
||||
case EVENT_QUAKE:
|
||||
if (GameObject* warning = instance->GetGameObject(FrozenThroneWarningGUID))
|
||||
warning->SetGoState(GO_STATE_ACTIVE);
|
||||
@@ -1261,6 +1390,9 @@ class instance_icecrown_citadel : public InstanceMapScript
|
||||
protected:
|
||||
EventMap Events;
|
||||
uint64 LadyDeathwisperElevatorGUID;
|
||||
uint64 GunshipGUID;
|
||||
uint64 EnemyGunshipGUID;
|
||||
uint64 GunshipArmoryGUID;
|
||||
uint64 DeathbringerSaurfangGUID;
|
||||
uint64 DeathbringerSaurfangDoorGUID;
|
||||
uint64 DeathbringerSaurfangEventGUID; // Muradin Bronzebeard or High Overlord Saurfang
|
||||
|
||||
@@ -792,37 +792,6 @@ class spell_veranus_summon : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
/*#####
|
||||
# spell_jokkum_eject_all
|
||||
#####*/
|
||||
|
||||
class spell_jokkum_eject_all : public SpellScriptLoader
|
||||
{
|
||||
public: spell_jokkum_eject_all() : SpellScriptLoader("spell_jokkum_eject_all") { }
|
||||
|
||||
class spell_jokkum_eject_all_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_jokkum_eject_all_SpellScript);
|
||||
|
||||
void HandleScriptEffect(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
if (Unit* caster = GetCaster())
|
||||
if (caster->IsVehicle())
|
||||
caster->GetVehicleKit()->RemoveAllPassengers();
|
||||
}
|
||||
|
||||
void Register() OVERRIDE
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_jokkum_eject_all_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const OVERRIDE
|
||||
{
|
||||
return new spell_jokkum_eject_all_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
enum CloseRift
|
||||
{
|
||||
SPELL_DESPAWN_RIFT = 61665
|
||||
@@ -882,6 +851,5 @@ void AddSC_storm_peaks()
|
||||
new npc_king_jokkum_vehicle();
|
||||
new spell_jokkum_scriptcast();
|
||||
new spell_veranus_summon();
|
||||
new spell_jokkum_eject_all();
|
||||
new spell_close_rift();
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "SkillDiscovery.h"
|
||||
#include "SpellScript.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "Vehicle.h"
|
||||
|
||||
class spell_gen_absorb0_hitlimit1 : public SpellScriptLoader
|
||||
{
|
||||
@@ -3673,6 +3674,33 @@ class spell_gen_whisper_gulch_yogg_saron_whisper : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
class spell_gen_eject_all_passengers : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_gen_eject_all_passengers() : SpellScriptLoader("spell_gen_eject_all_passengers") { }
|
||||
|
||||
class spell_gen_eject_all_passengers_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_gen_eject_all_passengers_SpellScript);
|
||||
|
||||
void RemoveVehicleAuras()
|
||||
{
|
||||
if (Vehicle* vehicle = GetHitUnit()->GetVehicleKit())
|
||||
vehicle->RemoveAllPassengers();
|
||||
}
|
||||
|
||||
void Register() OVERRIDE
|
||||
{
|
||||
AfterHit += SpellHitFn(spell_gen_eject_all_passengers_SpellScript::RemoveVehicleAuras);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const OVERRIDE
|
||||
{
|
||||
return new spell_gen_eject_all_passengers_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_generic_spell_scripts()
|
||||
{
|
||||
new spell_gen_absorb0_hitlimit1();
|
||||
@@ -3754,4 +3782,5 @@ void AddSC_generic_spell_scripts()
|
||||
new spell_gen_vendor_bark_trigger();
|
||||
new spell_gen_wg_water();
|
||||
new spell_gen_whisper_gulch_yogg_saron_whisper();
|
||||
new spell_gen_eject_all_passengers();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user