mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 15:58:04 +00:00
Noth will now cast curse when he teleports back to the ground
closes issue #370
This commit is contained in:
@@ -76,16 +76,16 @@ public:
|
|||||||
InstanceScript* pInstance;
|
InstanceScript* pInstance;
|
||||||
EventMap events;
|
EventMap events;
|
||||||
SummonList summons;
|
SummonList summons;
|
||||||
uint8 totalPhase;
|
|
||||||
|
|
||||||
void StartGroundPhase()
|
void StartGroundPhase()
|
||||||
{
|
{
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_DISABLE_MOVE);
|
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||||
me->SetControlled(false, UNIT_STATE_ROOT);
|
me->SetControlled(false, UNIT_STATE_ROOT);
|
||||||
|
events.SetPhase(0);
|
||||||
|
|
||||||
events.Reset();
|
events.Reset();
|
||||||
events.ScheduleEvent(EVENT_MOVE_TO_BALCONY, (totalPhase < 2 ? 110000 : (110000 / totalPhase)));
|
events.ScheduleEvent(EVENT_MOVE_TO_BALCONY, 110000);
|
||||||
events.ScheduleEvent(EVENT_SPELL_CURSE, 15000);
|
events.ScheduleEvent(EVENT_SPELL_CURSE, 15000);
|
||||||
events.ScheduleEvent(EVENT_SUMMON_PLAGUED_WARRIOR_ANNOUNCE, 25000);
|
events.ScheduleEvent(EVENT_SUMMON_PLAGUED_WARRIOR_ANNOUNCE, 25000);
|
||||||
if (Is25ManRaid())
|
if (Is25ManRaid())
|
||||||
@@ -98,7 +98,7 @@ public:
|
|||||||
me->AttackStop();
|
me->AttackStop();
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE |UNIT_FLAG_DISABLE_MOVE);
|
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE |UNIT_FLAG_DISABLE_MOVE);
|
||||||
me->SetControlled(true, UNIT_STATE_ROOT);
|
me->SetControlled(true, UNIT_STATE_ROOT);
|
||||||
|
events.SetPhase(1);
|
||||||
events.Reset();
|
events.Reset();
|
||||||
events.ScheduleEvent(EVENT_BALCONY_SUMMON_ANNOUNCE, 4000);
|
events.ScheduleEvent(EVENT_BALCONY_SUMMON_ANNOUNCE, 4000);
|
||||||
events.ScheduleEvent(EVENT_MOVE_TO_GROUND, 70000);
|
events.ScheduleEvent(EVENT_MOVE_TO_GROUND, 70000);
|
||||||
@@ -127,7 +127,7 @@ public:
|
|||||||
summons.DespawnAll();
|
summons.DespawnAll();
|
||||||
me->SetControlled(false, UNIT_STATE_ROOT);
|
me->SetControlled(false, UNIT_STATE_ROOT);
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
totalPhase = 0;
|
events.SetPhase(0);
|
||||||
|
|
||||||
if (pInstance)
|
if (pInstance)
|
||||||
pInstance->SetData(EVENT_NOTH, NOT_STARTED);
|
pInstance->SetData(EVENT_NOTH, NOT_STARTED);
|
||||||
@@ -189,7 +189,8 @@ public:
|
|||||||
{
|
{
|
||||||
// GROUND
|
// GROUND
|
||||||
case EVENT_SPELL_CURSE:
|
case EVENT_SPELL_CURSE:
|
||||||
me->CastCustomSpell(RAID_MODE(SPELL_CURSE_OF_THE_PLAGUEBRINGER_10, SPELL_CURSE_OF_THE_PLAGUEBRINGER_25), SPELLVALUE_MAX_TARGETS, RAID_MODE(3, 10), me, false);
|
if (events.GetPhaseMask() == 0)
|
||||||
|
me->CastCustomSpell(RAID_MODE(SPELL_CURSE_OF_THE_PLAGUEBRINGER_10, SPELL_CURSE_OF_THE_PLAGUEBRINGER_25), SPELLVALUE_MAX_TARGETS, RAID_MODE(3, 10), false);
|
||||||
events.RepeatEvent(25000);
|
events.RepeatEvent(25000);
|
||||||
break;
|
break;
|
||||||
case EVENT_SUMMON_PLAGUED_WARRIOR_ANNOUNCE:
|
case EVENT_SUMMON_PLAGUED_WARRIOR_ANNOUNCE:
|
||||||
@@ -224,9 +225,9 @@ public:
|
|||||||
break;
|
break;
|
||||||
case EVENT_BALCONY_SUMMON_REAL:
|
case EVENT_BALCONY_SUMMON_REAL:
|
||||||
me->CastSpell(me, SPELL_SUMMON_PLAGUED_WARRIORS, true); // visual only
|
me->CastSpell(me, SPELL_SUMMON_PLAGUED_WARRIORS, true); // visual only
|
||||||
if (totalPhase == 0)
|
if (events.GetPhaseMask() == 0)
|
||||||
SummonHelper(NPC_PLAGUED_CHAMPION, RAID_MODE(2,4));
|
SummonHelper(NPC_PLAGUED_CHAMPION, RAID_MODE(2,4));
|
||||||
else if (totalPhase == 1)
|
else if (events.GetPhaseMask() == 1)
|
||||||
{
|
{
|
||||||
SummonHelper(NPC_PLAGUED_CHAMPION, RAID_MODE(1,2));
|
SummonHelper(NPC_PLAGUED_CHAMPION, RAID_MODE(1,2));
|
||||||
SummonHelper(NPC_PLAGUED_GUARDIAN, RAID_MODE(1,2));
|
SummonHelper(NPC_PLAGUED_GUARDIAN, RAID_MODE(1,2));
|
||||||
@@ -237,10 +238,8 @@ public:
|
|||||||
break;
|
break;
|
||||||
case EVENT_MOVE_TO_GROUND:
|
case EVENT_MOVE_TO_GROUND:
|
||||||
me->MonsterTextEmote("%s teleports back into the battle!", 0, true);
|
me->MonsterTextEmote("%s teleports back into the battle!", 0, true);
|
||||||
totalPhase++;
|
|
||||||
StartGroundPhase();
|
StartGroundPhase();
|
||||||
me->NearTeleportTo(nothPosition.GetPositionX(), nothPosition.GetPositionY(), nothPosition.GetPositionZ(), nothPosition.GetOrientation(), true);
|
me->NearTeleportTo(nothPosition.GetPositionX(), nothPosition.GetPositionY(), nothPosition.GetPositionZ(), nothPosition.GetOrientation(), true);
|
||||||
events.PopEvent();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user