mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-09 08:17:56 +00:00
fix(Scripts/Ulduar): adjust Mimiron outro RP sleep visuals (#18950)
* fix the sleep visual, add stand up event * make Mimi selectable during outro so you can see his faction change * talk with emote oneshot talk * fix selectable * adjust timings * set done status when chest spawns * combat should stop when Mimiron ejects * Revert "combat should stop when Mimiron ejects" This reverts commit 6e476a55a49c33109f9112b2782d0d186eef49f3. * style
This commit is contained in:
@@ -86,7 +86,8 @@ enum SpellData
|
|||||||
SPELL_HAND_PULSE_25_L = 64536,
|
SPELL_HAND_PULSE_25_L = 64536,
|
||||||
|
|
||||||
SPELL_SELF_REPAIR = 64383,
|
SPELL_SELF_REPAIR = 64383,
|
||||||
SPELL_SLEEP = 64394,
|
SPELL_SLEEP_VISUAL_1 = 64393,
|
||||||
|
SPELL_SLEEP_VISUAL_2 = 64394,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum NPCs
|
enum NPCs
|
||||||
@@ -172,10 +173,11 @@ enum EVENTS
|
|||||||
EVENT_JOIN_ACU = 35,
|
EVENT_JOIN_ACU = 35,
|
||||||
EVENT_START_PHASE4 = 36,
|
EVENT_START_PHASE4 = 36,
|
||||||
EVENT_FINISH = 50,
|
EVENT_FINISH = 50,
|
||||||
EVENT_SAY_VOLTRON_DEAD = 51,
|
EVENT_STAND_UP_FRIENDLY = 51,
|
||||||
EVENT_DISAPPEAR = 52,
|
EVENT_SAY_VOLTRON_DEAD = 52,
|
||||||
EVENT_BERSERK = 53,
|
EVENT_DISAPPEAR = 53,
|
||||||
EVENT_BERSERK_2 = 54,
|
EVENT_BERSERK = 54,
|
||||||
|
EVENT_BERSERK_2 = 55,
|
||||||
|
|
||||||
// Leviathan:
|
// Leviathan:
|
||||||
EVENT_SPELL_NAPALM_SHELL = 3,
|
EVENT_SPELL_NAPALM_SHELL = 3,
|
||||||
@@ -754,17 +756,20 @@ public:
|
|||||||
Position exitPos = me->GetPosition();
|
Position exitPos = me->GetPosition();
|
||||||
me->_ExitVehicle(&exitPos);
|
me->_ExitVehicle(&exitPos);
|
||||||
me->AttackStop();
|
me->AttackStop();
|
||||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_TALK);
|
|
||||||
me->GetMotionMaster()->Clear();
|
me->GetMotionMaster()->Clear();
|
||||||
summons.DoAction(1337); // despawn summons of summons
|
summons.DoAction(1337); // despawn summons of summons
|
||||||
summons.DespawnEntry(NPC_FLAMES_INITIAL);
|
summons.DespawnEntry(NPC_FLAMES_INITIAL);
|
||||||
summons.DespawnEntry(33576);
|
summons.DespawnEntry(33576);
|
||||||
|
|
||||||
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|
||||||
float angle = VX001->GetOrientation();
|
float angle = VX001->GetOrientation();
|
||||||
float v_x = me->GetPositionX() + cos(angle) * 10.0f;
|
float v_x = me->GetPositionX() + cos(angle) * 10.0f;
|
||||||
float v_y = me->GetPositionY() + std::sin(angle) * 10.0f;
|
float v_y = me->GetPositionY() + std::sin(angle) * 10.0f;
|
||||||
me->GetMotionMaster()->MoveJump(v_x, v_y, 364.32f, 7.0f, 7.0f);
|
me->GetMotionMaster()->MoveJump(v_x, v_y, 364.32f, 7.0f, 7.0f);
|
||||||
|
|
||||||
|
DoCastSelf(SPELL_SLEEP_VISUAL_1);
|
||||||
|
|
||||||
if( pInstance )
|
if( pInstance )
|
||||||
for( uint16 i = 0; i < 3; ++i )
|
for( uint16 i = 0; i < 3; ++i )
|
||||||
if( ObjectGuid guid = pInstance->GetGuidData(DATA_GO_MIMIRON_DOOR_1 + i) )
|
if( ObjectGuid guid = pInstance->GetGuidData(DATA_GO_MIMIRON_DOOR_1 + i) )
|
||||||
@@ -783,11 +788,20 @@ public:
|
|||||||
computer->AI()->Talk(TALK_COMPUTER_TERMINATED);
|
computer->AI()->Talk(TALK_COMPUTER_TERMINATED);
|
||||||
|
|
||||||
events.Reset();
|
events.Reset();
|
||||||
events.ScheduleEvent(EVENT_SAY_VOLTRON_DEAD, 6s);
|
events.ScheduleEvent(EVENT_STAND_UP_FRIENDLY, 6s);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case EVENT_STAND_UP_FRIENDLY:
|
||||||
|
me->RemoveAurasDueToSpell(SPELL_SLEEP_VISUAL_1);
|
||||||
|
DoCastSelf(SPELL_SLEEP_VISUAL_2);
|
||||||
|
me->SetFaction(FACTION_FRIENDLY);
|
||||||
|
events.ScheduleEvent(EVENT_SAY_VOLTRON_DEAD, 4s);
|
||||||
|
break;
|
||||||
case EVENT_SAY_VOLTRON_DEAD:
|
case EVENT_SAY_VOLTRON_DEAD:
|
||||||
Talk(SAY_V07TRON_DEATH);
|
Talk(SAY_V07TRON_DEATH);
|
||||||
|
me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||||
|
if (pInstance)
|
||||||
|
pInstance->SetData(TYPE_MIMIRON, DONE);
|
||||||
// spawn chest
|
// spawn chest
|
||||||
if (uint32 chestId = (hardmode ? RAID_MODE(GO_MIMIRON_CHEST_HARD, GO_MIMIRON_CHEST_HERO_HARD) : RAID_MODE(GO_MIMIRON_CHEST, GO_MIMIRON_CHEST_HERO)))
|
if (uint32 chestId = (hardmode ? RAID_MODE(GO_MIMIRON_CHEST_HARD, GO_MIMIRON_CHEST_HERO_HARD) : RAID_MODE(GO_MIMIRON_CHEST, GO_MIMIRON_CHEST_HERO)))
|
||||||
{
|
{
|
||||||
@@ -797,11 +811,9 @@ public:
|
|||||||
go->SetLootRecipient(me->GetMap());
|
go->SetLootRecipient(me->GetMap());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
events.ScheduleEvent(EVENT_DISAPPEAR, 15s);
|
events.ScheduleEvent(EVENT_DISAPPEAR, 9s);
|
||||||
break;
|
break;
|
||||||
case EVENT_DISAPPEAR:
|
case EVENT_DISAPPEAR:
|
||||||
if( pInstance )
|
|
||||||
pInstance->SetData(TYPE_MIMIRON, DONE);
|
|
||||||
DoCastSelf(SPELL_TELEPORT);
|
DoCastSelf(SPELL_TELEPORT);
|
||||||
summons.DespawnAll();
|
summons.DespawnAll();
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user