mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-28 12:52:25 +01:00
Core/Scripts: Illidan Stormrage Rewrite (#18963)
Closes #5018 (cherrypicked from8731975187and3194d089cb)
This commit is contained in:
@@ -40,22 +40,23 @@ enum BTDataTypes
|
||||
|
||||
// Additional Data
|
||||
DATA_AKAMA_SHADE = 9,
|
||||
|
||||
DATA_AKAMA = 10,
|
||||
DATA_MAIEV = 11,
|
||||
DATA_GO_ILLIDAN_GATE = 12,
|
||||
DATA_BLACK_TEMPLE_TRIGGER = 13,
|
||||
|
||||
DATA_GATHIOS_THE_SHATTERER = 11,
|
||||
DATA_HIGH_NETHERMANCER_ZEREVOR = 12,
|
||||
DATA_LADY_MALANDE = 13,
|
||||
DATA_VERAS_DARKSHADOW = 14,
|
||||
DATA_BLOOD_ELF_COUNCIL_VOICE = 15,
|
||||
DATA_GATHIOS_THE_SHATTERER = 14,
|
||||
DATA_HIGH_NETHERMANCER_ZEREVOR = 15,
|
||||
DATA_LADY_MALANDE = 16,
|
||||
DATA_VERAS_DARKSHADOW = 17,
|
||||
DATA_BLOOD_ELF_COUNCIL_VOICE = 18,
|
||||
|
||||
DATA_GO_ILLIDAN_GATE = 16,
|
||||
DATA_GO_DEN_OF_MORTAL_DOOR = 19,
|
||||
|
||||
DATA_BLACK_TEMPLE_TRIGGER = 17,
|
||||
DATA_GO_DEN_OF_MORTAL_DOOR = 18,
|
||||
|
||||
DATA_ESSENCE_OF_SUFFERING = 19,
|
||||
DATA_ESSENCE_OF_DESIRE = 20,
|
||||
DATA_ESSENCE_OF_ANGER = 21
|
||||
DATA_ESSENCE_OF_SUFFERING = 20,
|
||||
DATA_ESSENCE_OF_DESIRE = 21,
|
||||
DATA_ESSENCE_OF_ANGER = 22
|
||||
};
|
||||
|
||||
enum TriggerEmotes
|
||||
@@ -95,7 +96,17 @@ enum BTCreatureIds
|
||||
NPC_ASHTONGUE_PRIMALIST = 22847,
|
||||
NPC_ASHTONGUE_STORMCALLER = 22846,
|
||||
NPC_ASHTONGUE_FERAL_SPIRIT = 22849,
|
||||
NPC_STORM_FURY = 22848
|
||||
NPC_STORM_FURY = 22848,
|
||||
NPC_SPIRIT_OF_UDALO = 23410,
|
||||
NPC_SPIRIT_OF_OLUM = 23411,
|
||||
NPC_FLAME_OF_AZZINOTH = 22997,
|
||||
NPC_BLADE_OF_AZZINOTH = 22996,
|
||||
NPC_MAIEV_SHADOWSONG = 23197,
|
||||
NPC_ILLIDAN_DB_TARGET = 23070,
|
||||
NPC_ILLIDARI_ELITE = 23226,
|
||||
NPC_GLAIVE_TARGET = 23448,
|
||||
NPC_GLAIVE_WORLD_TRIGGER = 22515,
|
||||
NPC_DEMON_FIRE = 23069
|
||||
};
|
||||
|
||||
enum BTGameObjectIds
|
||||
@@ -113,13 +124,18 @@ enum BTGameObjectIds
|
||||
GO_COUNCIL_DOOR_2 = 186152,
|
||||
GO_ILLIDAN_GATE = 185905,
|
||||
GO_ILLIDAN_DOOR_R = 186261,
|
||||
GO_ILLIDAN_DOOR_L = 186262
|
||||
GO_ILLIDAN_DOOR_L = 186262,
|
||||
GO_ILLIDAN_CAGE_TRAP = 185916
|
||||
};
|
||||
|
||||
enum BlackTempleFactions
|
||||
enum BlackTempleMisc
|
||||
{
|
||||
ASHTONGUE_FACTION_FRIEND = 1820,
|
||||
AKAMA_FACTION_COMBAT = 1868
|
||||
AKAMA_FACTION_COMBAT = 1868,
|
||||
AKAMA_INTRO = 1,
|
||||
AKAMA_FIGHT = 2,
|
||||
ACTION_ACTIVE_AKAMA_INTRO = 3,
|
||||
ACTION_OPEN_DOOR = 4
|
||||
};
|
||||
|
||||
template<typename AI>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -53,7 +53,7 @@ BossBoundaryData const boundaries =
|
||||
{ DATA_RELIQUARY_OF_SOULS, new ZRangeBoundary(81.8f, 148.0f) },
|
||||
{ DATA_MOTHER_SHAHRAZ, new RectangleBoundary(903.4f, 982.1f, 92.4f, 313.2f) },
|
||||
{ DATA_ILLIDARI_COUNCIL, new EllipseBoundary(Position(696.6f, 305.0f), 70.0 , 85.0) },
|
||||
{ DATA_ILLIDAN_STORMRAGE, new EllipseBoundary(Position(694.8f, 309.0f), 70.0 , 85.0) }
|
||||
{ DATA_ILLIDAN_STORMRAGE, new EllipseBoundary(Position(694.8f, 309.0f), 80.0 , 95.0) }
|
||||
};
|
||||
|
||||
ObjectData const creatureData[] =
|
||||
@@ -75,6 +75,7 @@ ObjectData const creatureData[] =
|
||||
{ NPC_VERAS_DARKSHADOW, DATA_VERAS_DARKSHADOW },
|
||||
{ NPC_BLOOD_ELF_COUNCIL_VOICE, DATA_BLOOD_ELF_COUNCIL_VOICE },
|
||||
{ NPC_BLACK_TEMPLE_TRIGGER, DATA_BLACK_TEMPLE_TRIGGER },
|
||||
{ NPC_MAIEV_SHADOWSONG, DATA_MAIEV },
|
||||
{ 0, 0 } // END
|
||||
};
|
||||
|
||||
@@ -99,6 +100,7 @@ class instance_black_temple : public InstanceMapScript
|
||||
LoadDoorData(doorData);
|
||||
LoadObjectData(creatureData, gameObjectData);
|
||||
LoadBossBoundaries(boundaries);
|
||||
akamaState = AKAMA_INTRO;
|
||||
}
|
||||
|
||||
void OnGameObjectCreate(GameObject* go) override
|
||||
@@ -132,6 +134,30 @@ class instance_black_temple : public InstanceMapScript
|
||||
}
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 data) const override
|
||||
{
|
||||
if (data == DATA_AKAMA)
|
||||
return akamaState;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void SetData(uint32 data, uint32 value) override
|
||||
{
|
||||
switch (data)
|
||||
{
|
||||
case DATA_AKAMA:
|
||||
akamaState = value;
|
||||
break;
|
||||
case ACTION_OPEN_DOOR:
|
||||
if (GameObject* illidanGate = GetGameObject(DATA_GO_ILLIDAN_GATE))
|
||||
HandleGameObject(ObjectGuid::Empty, true, illidanGate);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool SetBossState(uint32 type, EncounterState state) override
|
||||
{
|
||||
if (!InstanceScript::SetBossState(type, state))
|
||||
@@ -162,6 +188,11 @@ class instance_black_temple : public InstanceMapScript
|
||||
HandleGameObject(ObjectGuid::Empty, true, door);
|
||||
}
|
||||
break;
|
||||
case DATA_ILLIDARI_COUNCIL:
|
||||
if (state == DONE)
|
||||
if (Creature* akama = GetCreature(DATA_AKAMA))
|
||||
akama->AI()->DoAction(ACTION_ACTIVE_AKAMA_INTRO);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -176,8 +207,10 @@ class instance_black_temple : public InstanceMapScript
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
protected:
|
||||
GuidVector AshtongueGUIDs;
|
||||
uint8 akamaState;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
|
||||
Reference in New Issue
Block a user