mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-17 19:05:42 +00:00
fix(Scripts/Scholomance): improvements for Kirtonos (#8401)
This commit is contained in:
@@ -97,33 +97,24 @@ public:
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetGuidData(GO_GATE_KIRTONOS)))
|
||||
{
|
||||
gate->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
instance->SetData(DATA_KIRTONOS_THE_HERALD, DONE);
|
||||
}
|
||||
|
||||
void EnterEvadeMode() override
|
||||
{
|
||||
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetGuidData(GO_GATE_KIRTONOS)))
|
||||
{
|
||||
gate->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
instance->SetData(DATA_KIRTONOS_THE_HERALD, NOT_STARTED);
|
||||
instance->SetData(DATA_KIRTONOS_THE_HERALD, FAIL);
|
||||
me->DespawnOrUnsummon(1);
|
||||
}
|
||||
|
||||
void IsSummonedBy(Unit* /*summoner*/) override
|
||||
{
|
||||
events2.Reset();
|
||||
events2.ScheduleEvent(INTRO_1, 500);
|
||||
events2.ScheduleEvent(INTRO_1, 1000);
|
||||
me->SetDisableGravity(true);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
Talk(EMOTE_SUMMONED);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); // for some reason he aggroes if we don't have this.
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC); // might not be needed, but guardians and stuff like that could mess up.
|
||||
}
|
||||
|
||||
void MovementInform(uint32 type, uint32 id) override
|
||||
@@ -145,15 +136,12 @@ public:
|
||||
{
|
||||
case INTRO_1:
|
||||
me->GetMotionMaster()->MovePath(KIRTONOS_PATH, false);
|
||||
Talk(EMOTE_SUMMONED);
|
||||
break;
|
||||
case INTRO_2:
|
||||
me->GetMotionMaster()->MovePoint(0, PosMove[0]);
|
||||
break;
|
||||
case INTRO_3:
|
||||
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetGuidData(GO_GATE_KIRTONOS)))
|
||||
{
|
||||
gate->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
me->SetFacingTo(0.01745329f);
|
||||
break;
|
||||
case INTRO_4:
|
||||
@@ -166,6 +154,8 @@ public:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
|
||||
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_KIRTONOS_STAFF));
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
break;
|
||||
case INTRO_6:
|
||||
@@ -242,7 +232,6 @@ public:
|
||||
events.ScheduleEvent(EVENT_WING_FLAP, 13000);
|
||||
me->CastSpell(me, SPELL_KIRTONOS_TRANSFORM, true);
|
||||
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_KIRTONOS_STAFF));
|
||||
|
||||
// Schedule Dominate Mind on every 2nd caster transform
|
||||
if ((TransformsCount - 2) % 4 == 0)
|
||||
{
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellScript.h"
|
||||
|
||||
Position KirtonosSpawn = Position(315.028, 70.5385, 102.15, 0.385971);
|
||||
|
||||
class instance_scholomance : public InstanceMapScript
|
||||
{
|
||||
public:
|
||||
@@ -81,6 +83,9 @@ public:
|
||||
case GO_GATE_GANDLING_ENTRANCE:
|
||||
GandlingGatesGUID[6] = go->GetGUID();
|
||||
break;
|
||||
case GO_BRAZIER_KIRTONOS:
|
||||
BrazierKirtonosGUID = go->GetGUID();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,6 +95,8 @@ public:
|
||||
{
|
||||
case GO_GATE_KIRTONOS:
|
||||
return GateKirtonosGUID;
|
||||
case GO_BRAZIER_KIRTONOS:
|
||||
return BrazierKirtonosGUID;
|
||||
case GO_GATE_GANDLING_DOWN_NORTH:
|
||||
return GandlingGatesGUID[0];
|
||||
case GO_GATE_GANDLING_DOWN_EAST:
|
||||
@@ -115,7 +122,46 @@ public:
|
||||
switch (type)
|
||||
{
|
||||
case DATA_KIRTONOS_THE_HERALD:
|
||||
_kirtonosState = data;
|
||||
switch (data)
|
||||
{
|
||||
case IN_PROGRESS:
|
||||
// summon kirtonos and close door
|
||||
if (_kirtonosState == NOT_STARTED)
|
||||
{
|
||||
instance->SummonCreature(NPC_KIRTONOS, KirtonosSpawn);
|
||||
if (GameObject* gate = instance->GetGameObject(GetGuidData(GO_GATE_KIRTONOS)))
|
||||
{
|
||||
gate->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
}
|
||||
_kirtonosState = data;
|
||||
break;
|
||||
case FAIL:
|
||||
// open door and reset brazier
|
||||
if (GameObject* gate = instance->GetGameObject(GetGuidData(GO_GATE_KIRTONOS)))
|
||||
{
|
||||
gate->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
if (GameObject* brazier = instance->GetGameObject(GetGuidData(GO_BRAZIER_KIRTONOS)))
|
||||
{
|
||||
brazier->SetGoState(GO_STATE_READY);
|
||||
brazier->SetLootState(GO_JUST_DEACTIVATED);
|
||||
brazier->Respawn();
|
||||
}
|
||||
_kirtonosState = NOT_STARTED;
|
||||
break;
|
||||
case DONE:
|
||||
// open door
|
||||
if (GameObject* gate = instance->GetGameObject(GetGuidData(GO_GATE_KIRTONOS)))
|
||||
{
|
||||
gate->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
[[fallthrough]];
|
||||
default:
|
||||
_kirtonosState = data;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case DATA_MINI_BOSSES:
|
||||
++_miniBosses;
|
||||
@@ -145,7 +191,6 @@ public:
|
||||
_rasHuman = data;
|
||||
break;
|
||||
}
|
||||
|
||||
SaveToDB();
|
||||
}
|
||||
|
||||
@@ -197,6 +242,7 @@ public:
|
||||
ObjectGuid GateRavenianGUID;
|
||||
ObjectGuid GateBarovGUID;
|
||||
ObjectGuid GateIlluciaGUID;
|
||||
ObjectGuid BrazierKirtonosGUID;
|
||||
|
||||
ObjectGuid GandlingGatesGUID[7]; // 6 is the entrance
|
||||
ObjectGuid GandlingGUID; // boss
|
||||
@@ -462,6 +508,7 @@ public:
|
||||
case 4:
|
||||
me->CastSpell(me->GetVictim(), SHADOWBOLT_VOLLEY_SPELL, true);
|
||||
events.RepeatEvent(urand(11000, 17000));
|
||||
break;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
@@ -43,11 +43,13 @@ enum TalkGroupIds
|
||||
enum CreatureIds
|
||||
{
|
||||
NPC_RISEN_GUARDIAN = 11598,
|
||||
NPC_DARKMASTER_GANDLING = 1853
|
||||
NPC_DARKMASTER_GANDLING = 1853,
|
||||
NPC_KIRTONOS = 10506
|
||||
};
|
||||
|
||||
enum GameobjectIds
|
||||
{
|
||||
GO_BRAZIER_KIRTONOS = 175564,
|
||||
GO_GATE_KIRTONOS = 175570,
|
||||
|
||||
GO_GATE_GANDLING_ENTRANCE = 177374,
|
||||
|
||||
Reference in New Issue
Block a user