Core/Scripts: Illidan Stormrage Rewrite (#18963)

Closes #5018

(cherrypicked from 8731975187 and 3194d089cb)
This commit is contained in:
Keader
2017-02-05 12:45:29 -03:00
committed by Shauren
parent 36a4e008d0
commit d400d3d8e9
4 changed files with 2705 additions and 1957 deletions

View File

@@ -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

View File

@@ -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