mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/Icecrown Citadel: Use std::chrono::duration overloads of EventMap (Part 2) (#25041)
Part 2: gunship battle and Sindragosa
Contributes to https://github.com/TrinityCore/TrinityCore/issues/25012
(cherry picked from commit 6968e7a1a1)
This commit is contained in:
committed by
Shauren
parent
0195ec8945
commit
ce8c0da4fe
@@ -848,7 +848,7 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
|
||||
_controller.SetTransport(creature->GetTransport());
|
||||
me->SetRegenerateHealth(false);
|
||||
me->m_CombatDistance = 70.0f;
|
||||
_firstMageCooldown = GameTime::GetGameTime() + 60;
|
||||
_firstMageCooldown = GameTime::GetGameTimeSteadyPoint() + 60s;
|
||||
_axethrowersYellCooldown = time_t(0);
|
||||
_rocketeersYellCooldown = time_t(0);
|
||||
}
|
||||
@@ -858,7 +858,7 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
|
||||
ScriptedAI::InitializeAI();
|
||||
|
||||
_events.Reset();
|
||||
_firstMageCooldown = GameTime::GetGameTime() + 60;
|
||||
_firstMageCooldown = GameTime::GetGameTimeSteadyPoint() + 60s;
|
||||
_axethrowersYellCooldown = time_t(0);
|
||||
_rocketeersYellCooldown = time_t(0);
|
||||
}
|
||||
@@ -891,9 +891,9 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
|
||||
muradin->AI()->DoAction(ACTION_SPAWN_ALL_ADDS);
|
||||
|
||||
Talk(SAY_SAURFANG_INTRO_5);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_5, 4000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_6, 11000);
|
||||
_events.ScheduleEvent(EVENT_KEEP_PLAYER_IN_COMBAT, 1);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_5, 4s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_6, 11s);
|
||||
_events.ScheduleEvent(EVENT_KEEP_PLAYER_IN_COMBAT, 1ms);
|
||||
|
||||
_instance->SetBossState(DATA_ICECROWN_GUNSHIP_BATTLE, IN_PROGRESS);
|
||||
// Combat starts now
|
||||
@@ -910,11 +910,11 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
|
||||
}
|
||||
else if (action == ACTION_SPAWN_MAGE)
|
||||
{
|
||||
time_t now = GameTime::GetGameTime();
|
||||
std::chrono::steady_clock::time_point now = GameTime::GetGameTimeSteadyPoint();
|
||||
if (_firstMageCooldown > now)
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, (_firstMageCooldown - now) * IN_MILLISECONDS);
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, std::chrono::duration_cast<Milliseconds>(_firstMageCooldown - now));
|
||||
else
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 1);
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 1ms);
|
||||
}
|
||||
else if (action == ACTION_SPAWN_ALL_ADDS)
|
||||
{
|
||||
@@ -948,7 +948,7 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
|
||||
{
|
||||
_controller.ClearSlot(PassengerSlots(data));
|
||||
if (data == SLOT_FREEZE_MAGE)
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, urand(30000, 33500));
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 30s, 33500ms);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -957,11 +957,11 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->GetTransport()->EnableMovement(true);
|
||||
_events.SetPhase(PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_1, 5000, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_2, 16000, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_SUMMON_SKYBREAKER, 24600, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_3, 29600, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_4, 39200, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_1, 5s, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_2, 16s, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_SUMMON_SKYBREAKER, 24600ms, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_3, 29600ms, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_H_4, 39200ms, 0, PHASE_INTRO);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1087,7 +1087,7 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
|
||||
EventMap _events;
|
||||
PassengerController _controller;
|
||||
InstanceScript* _instance;
|
||||
time_t _firstMageCooldown;
|
||||
std::chrono::steady_clock::time_point _firstMageCooldown;
|
||||
time_t _axethrowersYellCooldown;
|
||||
time_t _rocketeersYellCooldown;
|
||||
};
|
||||
@@ -1112,7 +1112,7 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
|
||||
_controller.SetTransport(creature->GetTransport());
|
||||
me->SetRegenerateHealth(false);
|
||||
me->m_CombatDistance = 70.0f;
|
||||
_firstMageCooldown = GameTime::GetGameTime() + 60;
|
||||
_firstMageCooldown = GameTime::GetGameTimeSteadyPoint() + 60s;
|
||||
_riflemanYellCooldown = time_t(0);
|
||||
_mortarYellCooldown = time_t(0);
|
||||
}
|
||||
@@ -1122,7 +1122,7 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
|
||||
ScriptedAI::InitializeAI();
|
||||
|
||||
_events.Reset();
|
||||
_firstMageCooldown = GameTime::GetGameTime() + 60;
|
||||
_firstMageCooldown = GameTime::GetGameTimeSteadyPoint() + 60s;
|
||||
_riflemanYellCooldown = time_t(0);
|
||||
_mortarYellCooldown = time_t(0);
|
||||
}
|
||||
@@ -1155,9 +1155,9 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
|
||||
muradin->AI()->DoAction(ACTION_SPAWN_ALL_ADDS);
|
||||
|
||||
Talk(SAY_MURADIN_INTRO_6);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_6, 5000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_7, 11000);
|
||||
_events.ScheduleEvent(EVENT_KEEP_PLAYER_IN_COMBAT, 1);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_6, 5s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_7, 11s);
|
||||
_events.ScheduleEvent(EVENT_KEEP_PLAYER_IN_COMBAT, 1ms);
|
||||
|
||||
_instance->SetBossState(DATA_ICECROWN_GUNSHIP_BATTLE, IN_PROGRESS);
|
||||
// Combat starts now
|
||||
@@ -1174,11 +1174,11 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
|
||||
}
|
||||
else if (action == ACTION_SPAWN_MAGE)
|
||||
{
|
||||
time_t now = GameTime::GetGameTime();
|
||||
std::chrono::steady_clock::time_point now = GameTime::GetGameTimeSteadyPoint();
|
||||
if (_firstMageCooldown > now)
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, (_firstMageCooldown - now) * IN_MILLISECONDS);
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, std::chrono::duration_cast<Milliseconds>(_firstMageCooldown - now));
|
||||
else
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 1);
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 1ms);
|
||||
}
|
||||
else if (action == ACTION_SPAWN_ALL_ADDS)
|
||||
{
|
||||
@@ -1212,7 +1212,7 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
|
||||
{
|
||||
_controller.ClearSlot(PassengerSlots(data));
|
||||
if (data == SLOT_FREEZE_MAGE)
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, urand(30000, 33500));
|
||||
_events.ScheduleEvent(EVENT_SUMMON_MAGE, 30s, 33500ms);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1221,12 +1221,12 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
|
||||
me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP);
|
||||
me->GetTransport()->EnableMovement(true);
|
||||
_events.SetPhase(PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_1, 5000);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_2, 10000, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_1, 5s);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_2, 10s, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_SUMMON_ORGRIMS_HAMMER, 28s, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_3, 33000, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_4, 39000, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_5, 45000, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_3, 33s, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_4, 39s, 0, PHASE_INTRO);
|
||||
_events.ScheduleEvent(EVENT_INTRO_A_5, 45s, 0, PHASE_INTRO);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1355,7 +1355,7 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
|
||||
EventMap _events;
|
||||
PassengerController _controller;
|
||||
InstanceScript* _instance;
|
||||
time_t _firstMageCooldown;
|
||||
std::chrono::steady_clock::time_point _firstMageCooldown;
|
||||
time_t _riflemanYellCooldown;
|
||||
time_t _mortarYellCooldown;
|
||||
};
|
||||
|
||||
@@ -251,7 +251,7 @@ class boss_sindragosa : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_TAIL_SMASH, 20s, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_FROST_BREATH, 8s, 12s, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_UNCHAINED_MAGIC, 9s, 14s, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_ICY_GRIP, 33500, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_ICY_GRIP, 33500ms, EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_AIR_PHASE, 50s);
|
||||
Initialize();
|
||||
|
||||
@@ -374,7 +374,7 @@ class boss_sindragosa : public CreatureScript
|
||||
DoZoneInCombat();
|
||||
break;
|
||||
case POINT_TAKEOFF:
|
||||
events.ScheduleEvent(EVENT_AIR_MOVEMENT, 1);
|
||||
events.ScheduleEvent(EVENT_AIR_MOVEMENT, 1ms);
|
||||
break;
|
||||
case POINT_AIR_PHASE:
|
||||
{
|
||||
@@ -382,7 +382,7 @@ class boss_sindragosa : public CreatureScript
|
||||
args.AddSpellMod(SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2, 5, 2, 6));
|
||||
me->CastSpell(nullptr, SPELL_ICE_TOMB_TARGET, args);
|
||||
me->SetFacingTo(float(M_PI), true);
|
||||
events.ScheduleEvent(EVENT_AIR_MOVEMENT_FAR, 1);
|
||||
events.ScheduleEvent(EVENT_AIR_MOVEMENT_FAR, 1ms);
|
||||
events.ScheduleEvent(EVENT_FROST_BOMB, 9s);
|
||||
break;
|
||||
}
|
||||
@@ -391,7 +391,7 @@ class boss_sindragosa : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_LAND, 30s);
|
||||
break;
|
||||
case POINT_LAND:
|
||||
events.ScheduleEvent(EVENT_LAND_GROUND, 1);
|
||||
events.ScheduleEvent(EVENT_LAND_GROUND, 1ms);
|
||||
break;
|
||||
case POINT_LAND_GROUND:
|
||||
{
|
||||
@@ -512,7 +512,7 @@ class boss_sindragosa : public CreatureScript
|
||||
pos.m_positionZ += 17.0f;
|
||||
me->GetMotionMaster()->MoveTakeoff(POINT_TAKEOFF, pos);
|
||||
events.CancelEventGroup(EVENT_GROUP_LAND_PHASE);
|
||||
events.ScheduleEvent(EVENT_AIR_PHASE, 110000);
|
||||
events.ScheduleEvent(EVENT_AIR_PHASE, 110s);
|
||||
break;
|
||||
}
|
||||
case EVENT_AIR_MOVEMENT:
|
||||
@@ -925,9 +925,9 @@ class npc_rimefang : public CreatureScript
|
||||
me->AttackStop();
|
||||
me->SetCanFly(true);
|
||||
me->GetMotionMaster()->MovePoint(POINT_FROSTWYRM_FLY_IN, RimefangFlyPos);
|
||||
float moveTime = me->GetExactDist(&RimefangFlyPos)/(me->GetSpeed(MOVE_FLIGHT)*0.001f);
|
||||
_events.ScheduleEvent(EVENT_ICY_BLAST, uint64(moveTime) + urand(60000, 70000));
|
||||
_events.ScheduleEvent(EVENT_ICY_BLAST_CAST, uint64(moveTime) + 250);
|
||||
Milliseconds moveTime = Milliseconds(uint64(me->GetExactDist(&RimefangFlyPos)/(me->GetSpeed(MOVE_FLIGHT)*0.001f)));
|
||||
_events.ScheduleEvent(EVENT_ICY_BLAST, moveTime + 60s, moveTime + 70s);
|
||||
_events.ScheduleEvent(EVENT_ICY_BLAST_CAST, moveTime + 250ms);
|
||||
break;
|
||||
}
|
||||
case EVENT_ICY_BLAST_CAST:
|
||||
|
||||
Reference in New Issue
Block a user