mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Core/Scripting: Gyth event still not finished but completable.
This commit is contained in:
@@ -69,8 +69,7 @@ enum CreaturesIds
|
||||
NPC_BLACKHAND_SUMMONER = 9818,
|
||||
NPC_BLACKHAND_VETERAN = 9819,
|
||||
NPC_BLACKHAND_INCARCERATOR = 10316,
|
||||
NPC_LORD_VICTOR_NEFARIUS = 10162,
|
||||
NPC_REND_BLACKHAND = 10429
|
||||
NPC_LORD_VICTOR_NEFARIUS = 10162
|
||||
};
|
||||
|
||||
enum AdditionalData
|
||||
@@ -111,7 +110,9 @@ enum GameObjectsIds
|
||||
GO_EMBERSEER_RUNE_6 = 175271,
|
||||
GO_EMBERSEER_RUNE_7 = 175272,
|
||||
// For Gyth event
|
||||
GO_DR_PORTCULLIS = 175185
|
||||
GO_DR_PORTCULLIS = 175185,
|
||||
GO_PORTCULLIS_ACTIVE = 164726,
|
||||
GO_PORTCULLIS_TOBOSSROOMS = 175186
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -42,7 +42,8 @@ enum Events
|
||||
EVENT_FREEZE = 2,
|
||||
EVENT_FLAME_BREATH = 3,
|
||||
EVENT_KNOCK_AWAY = 4,
|
||||
EVENT_SUMMONED = 5,
|
||||
EVENT_SUMMONED_1 = 5,
|
||||
EVENT_SUMMONED_2 = 6
|
||||
};
|
||||
|
||||
class boss_gyth : public CreatureScript
|
||||
@@ -58,7 +59,6 @@ public:
|
||||
|
||||
void Reset()
|
||||
{
|
||||
_Reset();
|
||||
SummonedRend = false;
|
||||
if (instance->GetBossState(DATA_GYTH) == IN_PROGRESS)
|
||||
{
|
||||
@@ -79,7 +79,7 @@ public:
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
_JustDied();
|
||||
instance->SetBossState(DATA_GYTH, DONE);
|
||||
}
|
||||
|
||||
void SetData(uint32 /*type*/, uint32 data)
|
||||
@@ -87,7 +87,7 @@ public:
|
||||
switch (data)
|
||||
{
|
||||
case 1:
|
||||
events.ScheduleEvent(EVENT_SUMMONED, 1000);
|
||||
events.ScheduleEvent(EVENT_SUMMONED_1, 1000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -99,7 +99,7 @@ public:
|
||||
|
||||
if (!SummonedRend && HealthBelowPct(5))
|
||||
{
|
||||
DoCast(me, SPELL_SUMMON_REND); // Rend will despawn on Gyth death. Core issue with summoned npc's all despawning after summoner dies.
|
||||
DoCast(me, SPELL_SUMMON_REND);
|
||||
me->RemoveAura(SPELL_REND_MOUNTS);
|
||||
SummonedRend = true;
|
||||
}
|
||||
@@ -112,13 +112,18 @@ public:
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_SUMMONED:
|
||||
case EVENT_SUMMONED_1:
|
||||
me->AddAura(SPELL_REND_MOUNTS, me);
|
||||
me->GetMotionMaster()->MovePath(GYTH_PATH_1, false);
|
||||
if (GameObject* portcullis = me->FindNearestGameObject(GO_DR_PORTCULLIS, 25.0f))
|
||||
if (GameObject* portcullis = me->FindNearestGameObject(GO_DR_PORTCULLIS, 40.0f))
|
||||
portcullis->UseDoorOrButton();
|
||||
if (Creature* victor = me->FindNearestCreature(NPC_LORD_VICTOR_NEFARIUS, 75.0f, true))
|
||||
victor->GetMotionMaster()->MovePath(NEFARIUS_PATH_2, false);
|
||||
victor->AI()->SetData(1, 1);
|
||||
events.ScheduleEvent(EVENT_SUMMONED_2, 2000);
|
||||
break;
|
||||
case EVENT_SUMMONED_2:
|
||||
me->GetMotionMaster()->MovePath(GYTH_PATH_1, false);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -176,15 +176,16 @@ public:
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
_EnterCombat();
|
||||
events.ScheduleEvent(EVENT_WHIRLWIND, 13000);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 15000);
|
||||
events.ScheduleEvent(EVENT_MORTAL_STRIKE, 17000);
|
||||
events.ScheduleEvent(EVENT_WHIRLWIND, urand (13000, 15000));
|
||||
events.ScheduleEvent(EVENT_CLEAVE, urand (15000, 17000));
|
||||
events.ScheduleEvent(EVENT_MORTAL_STRIKE, urand (17000, 19000));
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
_JustDied();
|
||||
// Do data set on victor
|
||||
if (Creature* victor = me->FindNearestCreature(NPC_LORD_VICTOR_NEFARIUS, 75.0f, true))
|
||||
victor->AI()->SetData(1, 2);
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data)
|
||||
@@ -348,8 +349,6 @@ public:
|
||||
victor->GetMotionMaster()->MovePath(NEFARIUS_PATH_1, true);
|
||||
break;
|
||||
case EVENT_PATH_REND:
|
||||
// path to gyth and spawn gyth.
|
||||
// after despawn gyth fight will start
|
||||
me->GetMotionMaster()->MovePath(REND_PATH_1, false);
|
||||
break;
|
||||
case EVENT_TELEPORT_1:
|
||||
@@ -419,11 +418,11 @@ public:
|
||||
break;
|
||||
case EVENT_CLEAVE:
|
||||
DoCastVictim(SPELL_CLEAVE);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, 10000);
|
||||
events.ScheduleEvent(EVENT_CLEAVE, urand(10000, 14000));
|
||||
break;
|
||||
case EVENT_MORTAL_STRIKE:
|
||||
DoCastVictim(SPELL_MORTAL_STRIKE);
|
||||
events.ScheduleEvent(EVENT_MORTAL_STRIKE, 16000);
|
||||
events.ScheduleEvent(EVENT_MORTAL_STRIKE, urand(14000, 16000));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,24 +46,27 @@ public:
|
||||
instance_blackrock_spireMapScript(InstanceMap* map) : InstanceScript(map)
|
||||
{
|
||||
SetBossNumber(EncounterCount);
|
||||
HighlordOmokk = 0;
|
||||
ShadowHunterVoshgajin = 0;
|
||||
WarMasterVoone = 0;
|
||||
MotherSmolderweb = 0;
|
||||
UrokDoomhowl = 0;
|
||||
QuartermasterZigris = 0;
|
||||
GizrultheSlavener = 0;
|
||||
Halycon = 0;
|
||||
OverlordWyrmthalak = 0;
|
||||
PyroguardEmberseer = 0;
|
||||
WarchiefRendBlackhand = 0;
|
||||
Gyth = 0;
|
||||
TheBeast = 0;
|
||||
GeneralDrakkisath = 0;
|
||||
go_emberseerin = 0;
|
||||
go_doors = 0;
|
||||
go_emberseerout = 0;
|
||||
go_blackrockaltar = 0;
|
||||
HighlordOmokk = 0;
|
||||
ShadowHunterVoshgajin = 0;
|
||||
WarMasterVoone = 0;
|
||||
MotherSmolderweb = 0;
|
||||
UrokDoomhowl = 0;
|
||||
QuartermasterZigris = 0;
|
||||
GizrultheSlavener = 0;
|
||||
Halycon = 0;
|
||||
OverlordWyrmthalak = 0;
|
||||
PyroguardEmberseer = 0;
|
||||
WarchiefRendBlackhand = 0;
|
||||
Gyth = 0;
|
||||
LordVictorNefarius = 0;
|
||||
TheBeast = 0;
|
||||
GeneralDrakkisath = 0;
|
||||
go_emberseerin = 0;
|
||||
go_doors = 0;
|
||||
go_emberseerout = 0;
|
||||
go_blackrockaltar = 0;
|
||||
go_portcullis_active = 0;
|
||||
go_portcullis_tobossrooms = 0;
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* creature)
|
||||
@@ -91,19 +94,21 @@ public:
|
||||
case NPC_GIZRUL_THE_SLAVENER:
|
||||
GizrultheSlavener = creature->GetGUID();
|
||||
break;
|
||||
case NPC_HALYCON:
|
||||
case NPC_HALYCON:
|
||||
Halycon = creature->GetGUID();
|
||||
break;
|
||||
case NPC_OVERLORD_WYRMTHALAK:
|
||||
case NPC_OVERLORD_WYRMTHALAK:
|
||||
OverlordWyrmthalak = creature->GetGUID();
|
||||
break;
|
||||
case NPC_PYROGAURD_EMBERSEER:
|
||||
case NPC_PYROGAURD_EMBERSEER:
|
||||
PyroguardEmberseer = creature->GetGUID();
|
||||
if (GetBossState(DATA_PYROGAURD_EMBERSEER) == DONE)
|
||||
creature->DisappearAndDie();
|
||||
break;
|
||||
case NPC_WARCHIEF_REND_BLACKHAND:
|
||||
case NPC_WARCHIEF_REND_BLACKHAND:
|
||||
WarchiefRendBlackhand = creature->GetGUID();
|
||||
if (GetBossState(DATA_GYTH) == DONE)
|
||||
creature->DisappearAndDie();
|
||||
break;
|
||||
case NPC_GYTH:
|
||||
Gyth = creature->GetGUID();
|
||||
@@ -114,9 +119,10 @@ public:
|
||||
case NPC_GENERAL_DRAKKISATH:
|
||||
GeneralDrakkisath = creature->GetGUID();
|
||||
break;
|
||||
case NPC_BLACKHAND_DREADWEAVER:
|
||||
case NPC_BLACKHAND_SUMMONER:
|
||||
case NPC_BLACKHAND_VETERAN:
|
||||
case NPC_LORD_VICTOR_NEFARIUS:
|
||||
LordVictorNefarius = creature->GetGUID();
|
||||
if (GetBossState(DATA_GYTH) == DONE)
|
||||
creature->DisappearAndDie();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -213,6 +219,18 @@ public:
|
||||
if (GetBossState(DATA_PYROGAURD_EMBERSEER) == DONE)
|
||||
HandleGameObject(0, false, go);
|
||||
break;
|
||||
case GO_PORTCULLIS_ACTIVE:
|
||||
go_portcullis_active = go->GetGUID();
|
||||
if (GetBossState(DATA_GYTH) == DONE)
|
||||
HandleGameObject(0, true, go);
|
||||
break;
|
||||
case GO_PORTCULLIS_TOBOSSROOMS:
|
||||
go_portcullis_tobossrooms = go->GetGUID();
|
||||
if (GetBossState(DATA_GYTH) == DONE)
|
||||
HandleGameObject(0, true, go);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -374,6 +392,12 @@ public:
|
||||
case GO_EMBERSEER_RUNE_7:
|
||||
return go_emberseerrunes[6];
|
||||
break;
|
||||
case GO_PORTCULLIS_ACTIVE:
|
||||
return go_portcullis_active;
|
||||
break;
|
||||
case GO_PORTCULLIS_TOBOSSROOMS:
|
||||
return go_portcullis_tobossrooms;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -554,6 +578,7 @@ public:
|
||||
uint64 PyroguardEmberseer;
|
||||
uint64 WarchiefRendBlackhand;
|
||||
uint64 Gyth;
|
||||
uint64 LordVictorNefarius;
|
||||
uint64 TheBeast;
|
||||
uint64 GeneralDrakkisath;
|
||||
uint64 go_emberseerin;
|
||||
@@ -563,6 +588,8 @@ public:
|
||||
uint64 go_roomrunes[7];
|
||||
uint64 go_emberseerrunes[7];
|
||||
uint64 runecreaturelist[7][5];
|
||||
uint64 go_portcullis_active;
|
||||
uint64 go_portcullis_tobossrooms;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const
|
||||
@@ -612,7 +639,7 @@ public:
|
||||
if (!instance)
|
||||
return false;
|
||||
|
||||
if (Creature* rend = player->FindNearestCreature(NPC_REND_BLACKHAND, 50.0f))
|
||||
if (Creature* rend = player->FindNearestCreature(NPC_WARCHIEF_REND_BLACKHAND, 50.0f))
|
||||
{
|
||||
rend->AI()->SetData(AREATRIGGER, AREATRIGGER_BLACKROCK_STADIUM);
|
||||
return true;
|
||||
|
||||
@@ -34,14 +34,28 @@ enum Events
|
||||
EVENT_VEILOFSHADOW = 6,
|
||||
EVENT_CLEAVE = 7,
|
||||
EVENT_TAILLASH = 8,
|
||||
EVENT_CLASSCALL = 9
|
||||
EVENT_CLASSCALL = 9,
|
||||
// UBRS
|
||||
EVENT_CHAOS_1 = 10,
|
||||
EVENT_CHAOS_2 = 11,
|
||||
EVENT_PATH_2 = 12,
|
||||
EVENT_PATH_3 = 13,
|
||||
EVENT_SUCCESS_1 = 14,
|
||||
EVENT_SUCCESS_2 = 15,
|
||||
EVENT_SUCCESS_3 = 16,
|
||||
};
|
||||
|
||||
enum Says
|
||||
{
|
||||
SAY_GAMESBEGIN_1 = 11,
|
||||
SAY_GAMESBEGIN_2 = 12,
|
||||
// SAY_VAEL_INTRO = 13, Not used - when he corrupts Vaelastrasz
|
||||
// Nefarius
|
||||
// UBRS
|
||||
SAY_CHAOS_SPELL = 9,
|
||||
SAY_SUCCESS = 10,
|
||||
SAY_FAILURE = 11,
|
||||
// BWL
|
||||
SAY_GAMESBEGIN_1 = 12,
|
||||
SAY_GAMESBEGIN_2 = 13,
|
||||
// SAY_VAEL_INTRO = 14, Not used - when he corrupts Vaelastrasz
|
||||
|
||||
// Nefarian
|
||||
SAY_RANDOM = 0,
|
||||
@@ -67,6 +81,18 @@ enum Gossip
|
||||
GOSSIP_OPTION_ID = 0
|
||||
};
|
||||
|
||||
enum Paths
|
||||
{
|
||||
NEFARIUS_PATH_2 = 1379671,
|
||||
NEFARIUS_PATH_3 = 1379672
|
||||
};
|
||||
|
||||
enum GameObjects
|
||||
{
|
||||
GO_PORTCULLIS_ACTIVE = 164726,
|
||||
GO_PORTCULLIS_TOBOSSROOMS = 175186
|
||||
};
|
||||
|
||||
enum Creatures
|
||||
{
|
||||
NPC_BRONZE_DRAKANOID = 14263,
|
||||
@@ -75,7 +101,9 @@ enum Creatures
|
||||
NPC_GREEN_DRAKANOID = 14262,
|
||||
NPC_BLACK_DRAKANOID = 14265,
|
||||
NPC_CHROMATIC_DRAKANOID = 14302,
|
||||
NPC_BONE_CONSTRUCT = 14605
|
||||
NPC_BONE_CONSTRUCT = 14605,
|
||||
// UBRS
|
||||
NPC_GYTH = 10339
|
||||
};
|
||||
|
||||
enum Spells
|
||||
@@ -192,8 +220,73 @@ public:
|
||||
|
||||
void JustSummoned(Creature* /*summon*/) {}
|
||||
|
||||
void SetData(uint32 type, uint32 data)
|
||||
{
|
||||
if (instance && type == 1 && data == 1)
|
||||
{
|
||||
me->StopMoving();
|
||||
events.ScheduleEvent(EVENT_PATH_2, 9000);
|
||||
}
|
||||
|
||||
if (instance && type == 1 && data == 2)
|
||||
{
|
||||
events.ScheduleEvent(EVENT_SUCCESS_1, 5000);
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
{
|
||||
events.Update(diff);
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_PATH_2:
|
||||
me->GetMotionMaster()->MovePath(NEFARIUS_PATH_2, false);
|
||||
events.ScheduleEvent(EVENT_CHAOS_1, 7000);
|
||||
break;
|
||||
case EVENT_CHAOS_1:
|
||||
if (Creature* gyth = me->FindNearestCreature(NPC_GYTH, 75.0f, true))
|
||||
{
|
||||
me->SetFacingToObject(gyth);
|
||||
Talk(SAY_CHAOS_SPELL);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_CHAOS_2, 2000);
|
||||
break;
|
||||
case EVENT_CHAOS_2:
|
||||
DoCast(SPELL_CHROMATIC_CHAOS);
|
||||
me->SetFacingTo(1.570796f);
|
||||
break;
|
||||
case EVENT_SUCCESS_1:
|
||||
if (Unit* player = me->SelectNearestPlayer(60.0f))
|
||||
{
|
||||
me->SetInFront(player);
|
||||
me->SendMovementFlagUpdate();
|
||||
Talk(SAY_SUCCESS);
|
||||
if (GameObject* portcullis1 = me->FindNearestGameObject(GO_PORTCULLIS_ACTIVE, 65.0f))
|
||||
portcullis1->SetGoState(GO_STATE_ACTIVE);
|
||||
if (GameObject* portcullis2 = me->FindNearestGameObject(GO_PORTCULLIS_TOBOSSROOMS, 80.0f))
|
||||
portcullis2->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_SUCCESS_2, 4000);
|
||||
break;
|
||||
case EVENT_SUCCESS_2:
|
||||
DoCast(me, SPELL_VAELASTRASZZ_SPAWN);
|
||||
me->DespawnOrUnsummon(1000);
|
||||
break;
|
||||
case EVENT_PATH_3:
|
||||
me->GetMotionMaster()->MovePath(NEFARIUS_PATH_3, false);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// Only do this if we haven't spawned nefarian yet
|
||||
if (UpdateVictim() && SpawnedAdds <= 42)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user