Core/World: adapted Master branch version of world state handling

This commit is contained in:
Ovahlord committed 2022-10-08 23:13:06 +02:00
1 parent 6b8314454f
commit 2521489e2b
27 files changed
+258 -152

No files matched your search

@@ -333,7 +333,7 @@ struct boss_ascendant_council_controller final : public BossAI
break;
instance->SetBossState(DATA_ASCENDANT_COUNCIL, IN_PROGRESS);
instance->instance->SetWorldState(WORLD_STATE_ID_ELEMENTARY, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_ELEMENTARY, 0);
if (Creature* feludius = instance->GetCreature(DATA_FELUDIUS))
{
@@ -1325,7 +1325,7 @@ struct npc_elementium_monstrosity final : public ScriptedAI
{
++_liquidIceCount;
if (_liquidIceCount == 2)
_instance->instance->SetWorldState(WORLD_STATE_ID_ELEMENTARY, 1);
_instance->instance->SetWorldStateValue(WORLD_STATE_ID_ELEMENTARY, 1);
}
}
@@ -239,7 +239,7 @@ namespace CorruptionHandler
if (power > CORRUPTION_ACHIEVEMENT_CAP)
if (InstanceScript* instance = target->GetInstanceScript())
if (!instance->instance->GetWorldStateValue(WORLD_STATE_ID_THE_ABYSS_WILL_GAZE_BACK_INTO_YOU))
instance->instance->SetWorldState(WORLD_STATE_ID_THE_ABYSS_WILL_GAZE_BACK_INTO_YOU, 1);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_THE_ABYSS_WILL_GAZE_BACK_INTO_YOU, 1);
}
}
@@ -299,7 +299,7 @@ struct boss_chogall final : public BossAI
BossAI::JustEngagedWith(who);
Talk(SAY_AGGRO);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
instance->instance->SetWorldState(WORLD_STATE_ID_THE_ABYSS_WILL_GAZE_BACK_INTO_YOU, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_THE_ABYSS_WILL_GAZE_BACK_INTO_YOU, 0);
DoCastSelf(SPELL_CORRUPTED_BLOOD);
events.SetPhase(PHASE_1);
events.ScheduleEvent(EVENT_FURY_OF_CHOGALL, 33s);
@@ -170,7 +170,7 @@ struct boss_halfus_wyrmbreaker final : public BossAI
BossAI::JustEngagedWith(who);
Talk(SAY_AGGRO);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1);
instance->instance->SetWorldState(WORLD_STATE_ID_THE_ONLY_ESCAPE, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_THE_ONLY_ESCAPE, 0);
events.ScheduleEvent(EVENT_BERSERK, 10min);
if (Creature* protoBehemoth = instance->GetCreature(DATA_PROTO_BEHEMOTH))
@@ -237,13 +237,13 @@ struct boss_halfus_wyrmbreaker final : public BossAI
if (_theOnlyEscapeAchievementState == NOT_STARTED)
{
_theOnlyEscapeAchievementState = IN_PROGRESS;
instance->instance->SetWorldState(WORLD_STATE_ID_THE_ONLY_ESCAPE, 1);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_THE_ONLY_ESCAPE, 1);
events.ScheduleEvent(EVENT_RESET_ACHIEVEMT, Seconds(10));
}
else if (_theOnlyEscapeAchievementState == IN_PROGRESS)
{
_theOnlyEscapeAchievementState = DONE;
instance->instance->SetWorldState(WORLD_STATE_ID_THE_ONLY_ESCAPE, 2);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_THE_ONLY_ESCAPE, 2);
events.CancelEvent(EVENT_RESET_ACHIEVEMT);
}
break;
@@ -109,7 +109,7 @@ struct boss_ascendant_lord_obsidius : public BossAI
{
BossAI::JustEngagedWith(who);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
instance->instance->SetWorldState(WORLD_STATE_ID_ASCENDANT_DESCENDING, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_ASCENDANT_DESCENDING, 0);
Talk(SAY_AGGRO);
events.ScheduleEvent(EVENT_STONE_BLOW, 8s);
events.ScheduleEvent(EVENT_TWILIGHT_CORRUPTION, 12s);
@@ -321,7 +321,7 @@ class spell_obsidius_crepuscular_veil : public SpellScript
if (aura->GetStackAmount() == GetSpellInfo()->StackAmount)
if (InstanceScript* instance = target->GetInstanceScript())
if (!instance->instance->GetWorldStateValue(WORLD_STATE_ID_ASCENDANT_DESCENDING))
instance->instance->SetWorldState(WORLD_STATE_ID_ASCENDANT_DESCENDING, 1);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_ASCENDANT_DESCENDING, 1);
}
void Register() override
@@ -205,7 +205,7 @@ struct boss_atramedes : public BossAI
{
BossAI::JustEngagedWith(who);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
instance->instance->SetWorldState(WORLD_STATE_ID_SILENCE_IS_GOLDEN, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_SILENCE_IS_GOLDEN, 0);
Talk(SAY_AGGRO);
DoCastSelf(SPELL_DEVASTATION_TRIGGER);
DoCastSelf(SPELL_SOUND_BAR);
@@ -915,7 +915,7 @@ class spell_atramedes_sound_bar : public AuraScript
}
else if (target->GetPower(POWER_ALTERNATE_POWER) >= 50)
if (!instance->instance->GetWorldStateValue(WORLD_STATE_ID_SILENCE_IS_GOLDEN))
instance->instance->SetWorldState(WORLD_STATE_ID_SILENCE_IS_GOLDEN, 1);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_SILENCE_IS_GOLDEN, 1);
}
void Register() override
@@ -150,7 +150,7 @@ struct boss_chimaeron : public BossAI
{
BossAI::JustEngagedWith(who);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
instance->instance->SetWorldState(WORLD_STATE_ID_FULL_OF_SOUND_AND_FURY, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_FULL_OF_SOUND_AND_FURY, 0);
me->SetReactState(REACT_AGGRESSIVE);
events.SetPhase(PHASE_1);
events.ScheduleEvent(EVENT_CAUSTIC_SLIME, 5s, 0, PHASE_1);
@@ -212,7 +212,7 @@ struct boss_chimaeron : public BossAI
{
_killedPlayerCount++;
if (_killedPlayerCount == 3)
instance->instance->SetWorldState(WORLD_STATE_ID_FULL_OF_SOUND_AND_FURY, 1);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_FULL_OF_SOUND_AND_FURY, 1);
}
}
@@ -235,7 +235,7 @@ struct boss_magmaw : public BossAI
BossAI::JustEngagedWith(who);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, FRAME_PRIORITY_MAGMAW);
instance->instance->SetWorldState(WORLD_STATE_ID_PARASITE_EVENING, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_PARASITE_EVENING, 0);
me->SetReactState(REACT_AGGRESSIVE);
events.SetPhase(PHASE_COMBAT);
@@ -702,7 +702,7 @@ struct npc_magmaw_lava_parasite : public ScriptedAI
me->SetReactState(REACT_PASSIVE);
me->DespawnOrUnsummon(4s);
if (!_instance->instance->GetWorldStateValue(WORLD_STATE_ID_PARASITE_EVENING))
_instance->instance->SetWorldState(WORLD_STATE_ID_PARASITE_EVENING, 1);
_instance->instance->SetWorldStateValue(WORLD_STATE_ID_PARASITE_EVENING, 1);
}
}
@@ -785,7 +785,7 @@ struct boss_nefarians_end : public BossAI
break;
case EVENT_LAND_PHASE_THREE:
if (me->GetHealthPct() > 50.f)
instance->instance->SetWorldState(WORLD_STATE_ID_KEEPING_IT_IN_THE_FAMILY, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_KEEPING_IT_IN_THE_FAMILY, 0);
me->RemoveAurasDueToSpell(SPELL_NEFARIAN_PHASE_2_HEALTH_AURA);
me->SendSetPlayHoverAnim(true);
@@ -930,7 +930,7 @@ struct npc_nefarians_end_onyxia : public ScriptedAI
if (_instance->GetBossState(DATA_NEFARIANS_END) != IN_PROGRESS)
{
_instance->SetBossState(DATA_NEFARIANS_END, IN_PROGRESS);
_instance->instance->SetWorldState(WORLD_STATE_ID_KEEPING_IT_IN_THE_FAMILY, 1);
_instance->instance->SetWorldStateValue(WORLD_STATE_ID_KEEPING_IT_IN_THE_FAMILY, 1);
}
_instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, FRAME_INDEX_ONYXIA);
@@ -302,10 +302,10 @@ struct boss_omnotron_defense_system : public BossAI
break;
case ACTION_START_ENCOUNTER:
instance->SetBossState(DATA_OMNOTRON_DEFENSE_SYSTEM, IN_PROGRESS);
instance->instance->SetWorldState(WORLD_STATE_ID_STATIC_SHOCK, 0);
instance->instance->SetWorldState(WORLD_STATE_ID_POISON_BOMB, 0);
instance->instance->SetWorldState(WORLD_STATE_ID_ARCANE_ANNIHILATOR, 0);
instance->instance->SetWorldState(WORLD_STATE_ID_FLAMETHROWER, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_STATIC_SHOCK, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_POISON_BOMB, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_ARCANE_ANNIHILATOR, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_FLAMETHROWER, 0);
if (IsHeroic())
DoSummon(NPC_LORD_VICTOR_NEFARIUS_OMNOTRON, LordVictorNefariusSummonPosition, 0, TEMPSUMMON_MANUAL_DESPAWN);
@@ -921,7 +921,7 @@ struct npc_omnotron_arcanotron : public ScriptedAI
{
if (spell->Id == SPELL_ARCANE_ANNIHILATION)
if (!_instance->instance->GetWorldStateValue(WORLD_STATE_ID_ARCANE_ANNIHILATOR))
_instance->instance->SetWorldState(WORLD_STATE_ID_ARCANE_ANNIHILATOR, 1);
_instance->instance->SetWorldStateValue(WORLD_STATE_ID_ARCANE_ANNIHILATOR, 1);
}
void UpdateAI(uint32 diff) override
@@ -1151,7 +1151,7 @@ struct npc_omnotron_poison_bomb : public ScriptedAI
{
if (InstanceScript* instance = me->GetInstanceScript())
if (!instance->instance->GetWorldStateValue(WORLD_STATE_ID_POISON_BOMB))
instance->instance->SetWorldState(WORLD_STATE_ID_POISON_BOMB, 1);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_POISON_BOMB, 1);
DoCastSelf(SPELL_POISON_BOMB_DAMAGE, true);
DoCastSelf(SPELL_POISON_BOMB_SUMMON_PUDDLE, true);
@@ -1372,7 +1372,7 @@ class spell_omnotron_unstable_shield : public AuraScript
if (InstanceScript* instance = caster->GetInstanceScript())
if (!instance->instance->GetWorldStateValue(WORLD_STATE_ID_STATIC_SHOCK))
instance->instance->SetWorldState(WORLD_STATE_ID_STATIC_SHOCK, 1);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_STATIC_SHOCK, 1);
}
void Register() override
@@ -1549,7 +1549,7 @@ class spell_omnotron_flamethrower : public SpellScript
if (targets.size() >= 2)
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
if (!instance->instance->GetWorldStateValue(WORLD_STATE_ID_FLAMETHROWER))
instance->instance->SetWorldState(WORLD_STATE_ID_FLAMETHROWER, 1);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_FLAMETHROWER, 1);
}
void Register() override
@@ -141,7 +141,7 @@ struct boss_erudax : public BossAI
BossAI::JustEngagedWith(who);
Talk(SAY_AGGRO);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1);
instance->instance->SetWorldState(WORLD_STATE_ID_DONT_NEED_TO_BREAK_EGGS, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_DONT_NEED_TO_BREAK_EGGS, 0);
events.ScheduleEvent(EVENT_BINDING_SHADOWS, 10s + 500ms);
events.ScheduleEvent(EVENT_ENFEEBLING_BLOW, 19s);
events.ScheduleEvent(EVENT_SHADOW_GALE, 26s);
@@ -367,7 +367,7 @@ struct npc_erudax_faceless_corruptor : public ScriptedAI
break;
case EVENT_TWILIGHT_CORRUPTION:
// Fail achievement by setting the required world state to 1 (0 is required for successful achievement)
_instance->instance->SetWorldState(WORLD_STATE_ID_DONT_NEED_TO_BREAK_EGGS, 1);
_instance->instance->SetWorldStateValue(WORLD_STATE_ID_DONT_NEED_TO_BREAK_EGGS, 1);
DoCastAOE(SPELL_TWILIGHT_CORRUPTION);
break;
case EVENT_UMBRAL_MENDING:
@@ -86,7 +86,7 @@ struct boss_baron_ashbury : public BossAI
BossAI::JustEngagedWith(who);
Talk(SAY_AGGRO);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1);
instance->instance->SetWorldState(WORLD_STATE_ID_PARDON_DENIED, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_PARDON_DENIED, 0);
events.ScheduleEvent(EVENT_ASPHYXIATE, IsHeroic() ? 20s + 500ms : 15s + 500ms);
events.ScheduleEvent(EVENT_PAIN_AND_SUFFERING, 6s);
@@ -115,7 +115,7 @@ struct boss_baron_ashbury : public BossAI
return;
if (!instance->instance->GetWorldStateValue(WORLD_STATE_ID_PARDON_DENIED))
instance->instance->SetWorldState(WORLD_STATE_ID_PARDON_DENIED, 1);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_PARDON_DENIED, 1);
}
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
@@ -510,7 +510,7 @@ public:
if (InstanceScript* instance = target->GetInstanceScript())
if (!instance->instance->GetWorldStateValue(WORLD_STATE_ID_TO_THE_GROUND))
instance->instance->SetWorldState(WORLD_STATE_ID_TO_THE_GROUND, 1);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_TO_THE_GROUND, 1);
}
}
@@ -106,7 +106,7 @@ public:
case MAP_EVENT_AZURE_DRAGONSHRINE_ENTERED:
if (GetBossState(DATA_ECHO_OF_JAINA) == DONE)
break;
instance->SetWorldState(WORLD_STATE_ID_SHOW_COLLECTED_STAVE_FRAGMENTS, 1);
instance->SetWorldStateValue(WORLD_STATE_ID_SHOW_COLLECTED_STAVE_FRAGMENTS, 1);
break;
default:
break;
@@ -198,7 +198,7 @@ public:
case DATA_ECHO_OF_JAINA:
if (state == IN_PROGRESS)
{
instance->SetWorldState(WORLD_STATE_ID_SHOW_COLLECTED_STAVE_FRAGMENTS, 0);
instance->SetWorldStateValue(WORLD_STATE_ID_SHOW_COLLECTED_STAVE_FRAGMENTS, 0);
if (Creature* circle = GetCreature(DATA_ARCANE_CIRCLE))
circle->DespawnOrUnsummon();
}
@@ -219,7 +219,7 @@ public:
break;
++_collectedStaffFragments;
instance->SetWorldState(WORLD_STATE_ID_COLLECTED_STAVE_FRAGMENTS, _collectedStaffFragments);
instance->SetWorldStateValue(WORLD_STATE_ID_COLLECTED_STAVE_FRAGMENTS, _collectedStaffFragments);
if (_collectedStaffFragments < 16)
{
@@ -243,7 +243,7 @@ struct boss_lord_rhyolith : public BossAI
BossAI::JustEngagedWith(who);
Talk(SAY_ENGAGE, who);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1);
me->GetMap()->SetWorldState(WORLD_STATE_ID_NOT_AN_AMBI_TURNER, 0);
me->GetMap()->SetWorldStateValue(WORLD_STATE_ID_NOT_AN_AMBI_TURNER, 0);
uint8 frameIndex = 2;
for (uint32 type : { DATA_LEFT_FOOT, DATA_RIGHT_FOOT })
@@ -536,7 +536,7 @@ struct boss_lord_rhyolith : public BossAI
if (!_achievementFailed && _currentBalance < CENTER_BALANCE)
{
me->GetMap()->SetWorldState(WORLD_STATE_ID_NOT_AN_AMBI_TURNER, 1);
me->GetMap()->SetWorldStateValue(WORLD_STATE_ID_NOT_AN_AMBI_TURNER, 1);
_achievementFailed = true;
}
@@ -103,7 +103,7 @@ struct boss_rajh : public BossAI
BossAI::JustEngagedWith(who);
Talk(SAY_AGGRO);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
instance->instance->SetWorldState(WORLD_STATE_ID_SUN_OF_A, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_SUN_OF_A, 0);
me->SetReactState(REACT_AGGRESSIVE);
_randomTimerCase = RAND(0, 1);
events.ScheduleEvent(EVENT_SOLAR_WINDS, 5s);
@@ -226,7 +226,7 @@ struct boss_rajh : public BossAI
break;
case EVENT_REENGAGE:
if (!instance->instance->GetWorldStateValue(WORLD_STATE_ID_SUN_OF_A))
instance->instance->SetWorldState(WORLD_STATE_ID_SUN_OF_A, 1);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_SUN_OF_A, 1);
_energized = true;
_randomTimerCase = RAND(0, 1);
events.ScheduleEvent(EVENT_SOLAR_WINDS, 5s);
@@ -105,7 +105,7 @@ struct boss_temple_guardian_anhuur : public BossAI
{
BossAI::JustEngagedWith(who);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
instance->instance->SetWorldState(WORLD_STATE_ID_I_HATE_THAT_SONG, 0);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_I_HATE_THAT_SONG, 0);
Talk(SAY_AGGRO);
events.SetPhase(PHASE_FIGHT);
events.ScheduleEvent(EVENT_DIVINE_RECKONING, 10s, 0, PHASE_FIGHT);
@@ -235,7 +235,7 @@ struct boss_temple_guardian_anhuur : public BossAI
instance->SetData(DATA_HANDLE_BEAM_OF_LIGHT, IN_PROGRESS);
break;
case EVENT_ACHIEVEMENT_FAILED:
instance->instance->SetWorldState(WORLD_STATE_ID_I_HATE_THAT_SONG, 1);
instance->instance->SetWorldStateValue(WORLD_STATE_ID_I_HATE_THAT_SONG, 1);
break;
default:
break;
@@ -470,7 +470,7 @@ class instance_halls_of_origination : public InstanceMapScript
anraphet->AI()->DoAction(ACTION_ANRAPHET_INTRO);
break;
case EVENT_FAIL_VAULTS_OF_LIGHT_ACHIEVEMENT:
instance->SetWorldState(WORLD_STATE_ID_FASTER_THAN_THE_SPEED_OF_LIGHT, 1);
instance->SetWorldStateValue(WORLD_STATE_ID_FASTER_THAN_THE_SPEED_OF_LIGHT, 1);
break;
default:
break;