feat(Core/Maps): AreaBoundary (#10525)

* cherry-picked commit (2da458c56d)
This commit is contained in:
IntelligentQuantum
2022-04-15 16:40:41 +04:30
committed by GitHub
parent c1747f2fbf
commit ab4ee71762
169 changed files with 918 additions and 628 deletions

View File

@@ -350,7 +350,7 @@ public:
}
}
void EnterEvadeMode() override
void EnterEvadeMode(EvadeReason why) override
{
if (_fightWon)
return;
@@ -366,7 +366,7 @@ public:
return;
}
ScriptedAI::EnterEvadeMode();
ScriptedAI::EnterEvadeMode(why);
}
void Reset() override
@@ -470,7 +470,7 @@ public:
if (!m_pInstance)
{
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
return;
}

View File

@@ -566,7 +566,7 @@ public:
void MoveInLineOfSight(Unit*) override {}
void AttackStart(Unit*) override {}
void UpdateAI(uint32) override {}
void EnterEvadeMode() override {}
void EnterEvadeMode(EvadeReason /* why */) override {}
void OnCharmed(bool /*apply*/) override {}
bool _boomed;

View File

@@ -724,7 +724,7 @@ public:
Vehicle* vehicle;
uint32 _despawnTimer;
void EnterEvadeMode() override
void EnterEvadeMode(EvadeReason /*why*/) override
{
vehicle->InstallAllAccessories(false);
}

View File

@@ -667,7 +667,6 @@ public:
}
DoMeleeAttackIfReady();
EnterEvadeIfOutOfCombatArea();
}
bool CheckEvadeIfOutOfCombatArea() const override

View File

@@ -837,7 +837,8 @@ public:
}
void MoveInLineOfSight(Unit* /*who*/) override {}
void EnterEvadeMode() override {}
void EnterEvadeMode(EvadeReason /*why*/) override {}
bool CanAIAttack(Unit const* t) const override { return t->GetEntry() == NPC_HODIR; }
void JustDied(Unit* /*killer*/) override
@@ -934,7 +935,8 @@ public:
}
void MoveInLineOfSight(Unit* /*who*/) override {}
void EnterEvadeMode() override {}
void EnterEvadeMode(EvadeReason /*why*/) override {}
bool CanAIAttack(Unit const* t) const override { return t->GetEntry() == NPC_HODIR; }
void JustDied(Unit* /*killer*/) override
@@ -1034,7 +1036,8 @@ public:
}
void MoveInLineOfSight(Unit* /*who*/) override {}
void EnterEvadeMode() override {}
void EnterEvadeMode(EvadeReason /*why*/) override {}
bool CanAIAttack(Unit const* t) const override { return t->GetEntry() == NPC_HODIR; }
void JustDied(Unit* /*killer*/) override
@@ -1149,7 +1152,8 @@ public:
}
void MoveInLineOfSight(Unit* /*who*/) override {}
void EnterEvadeMode() override {}
void EnterEvadeMode(EvadeReason /*why*/) override {}
bool CanAIAttack(Unit const* t) const override { return t->GetEntry() == NPC_HODIR; }
void JustDied(Unit* /*killer*/) override

View File

@@ -343,7 +343,7 @@ public:
if( me->GetPositionX() < 490.0f || me->GetPositionX() > 690.0f || me->GetPositionY() < 130.0f || me->GetPositionY() > 410.0f )
{
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
return;
}
@@ -444,11 +444,11 @@ public:
DoMeleeAttackIfReady();
}
void EnterEvadeMode() override
void EnterEvadeMode(EvadeReason why) override
{
me->SetControlled(false, UNIT_STATE_ROOT);
me->DisableRotate(false);
ScriptedAI::EnterEvadeMode();
ScriptedAI::EnterEvadeMode(why);
}
};
};

View File

@@ -185,9 +185,9 @@ public:
ScriptedAI::MoveInLineOfSight(who);
}
void EnterEvadeMode() override
void EnterEvadeMode(EvadeReason why) override
{
if (!_EnterEvadeMode())
if (!_EnterEvadeMode(why))
return;
Reset();
me->setActive(false);
@@ -406,7 +406,7 @@ public:
{
if (!UpdateVictim())
{
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
return;
}
@@ -524,7 +524,7 @@ public:
int32 _damageDone;
bool _combatStarted;
void EnterEvadeMode() override {}
void EnterEvadeMode(EvadeReason /*why*/ = EVADE_REASON_OTHER) override {}
void MoveInLineOfSight(Unit*) override {}
void AttackStart(Unit*) override {}
void UpdateAI(uint32 /*diff*/) override {}

View File

@@ -365,7 +365,7 @@ public:
{
if (c->IsInEvadeMode())
{
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
return;
}
if (!c->IsAlive())
@@ -375,7 +375,7 @@ public:
}
else
{
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
return;
}
CloseDoorAndButton();
@@ -429,7 +429,7 @@ public:
Position p = me->GetHomePosition();
if (me->GetExactDist(&p) > 80.0f || !SelectTargetFromPlayerList(150.0f))
{
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
return;
}
@@ -512,7 +512,7 @@ public:
events.ScheduleEvent(EVENT_SIT_LMK2_INTERVAL, 2000);
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_SIT_LMK2_INTERVAL:
if (Creature* LMK2 = GetLMK2())
@@ -527,7 +527,7 @@ public:
LMK2->AI()->SetData(1, 1);
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_LMK2_RETREAT_INTERVAL:
if (Creature* LMK2 = GetLMK2())
@@ -539,7 +539,7 @@ public:
events.ScheduleEvent(EVENT_ELEVATOR_INTERVAL_0, 6000);
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_ELEVATOR_INTERVAL_0:
if( GameObject* elevator = me->FindNearestGameObject(GO_MIMIRON_ELEVATOR, 100.0f) )
@@ -562,7 +562,7 @@ public:
events.ScheduleEvent(EVENT_ELEVATOR_INTERVAL_2, 18000);
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_ELEVATOR_INTERVAL_2:
if (Creature* VX001 = GetVX001())
@@ -571,7 +571,7 @@ public:
events.ScheduleEvent(EVENT_SITTING_ON_VX001, 4000);
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_SITTING_ON_VX001:
me->Yell(TEXT_VX001_ACTIVATE, LANG_UNIVERSAL);
@@ -585,7 +585,7 @@ public:
events.ScheduleEvent(EVENT_EMOTE_VX001, 2000);
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_EMOTE_VX001:
if( Creature* VX001 = GetVX001() )
@@ -594,7 +594,7 @@ public:
events.ScheduleEvent(EVENT_VX001_START_FIGHT, 1750);
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_VX001_START_FIGHT:
if( Creature* VX001 = GetVX001() )
@@ -605,7 +605,7 @@ public:
me->SetInCombatWithZone();
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_VX001_EMOTESTATE_DEATH:
if( Creature* VX001 = GetVX001() )
@@ -615,7 +615,7 @@ public:
events.ScheduleEvent(EVENT_GET_OUT_VX001, 2500);
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_GET_OUT_VX001:
if( Creature* VX001 = GetVX001() )
@@ -628,7 +628,7 @@ public:
events.ScheduleEvent(EVENT_SAY_VX001_DEAD, 2000);
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_SAY_VX001_DEAD:
changeAllowedFlameSpreadTime = true;
@@ -643,7 +643,7 @@ public:
events.ScheduleEvent(EVENT_SAY_ACU_ACTIVATE, 6000);
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_SAY_ACU_ACTIVATE:
me->Yell(TEXT_ACU_ACTIVATE, LANG_UNIVERSAL);
@@ -659,7 +659,7 @@ public:
me->SetInCombatWithZone();
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_SAY_ACU_DEAD:
me->Yell(TEXT_ACU_DEATH, LANG_UNIVERSAL);
@@ -673,7 +673,7 @@ public:
events.ScheduleEvent(EVENT_VX001_EMOTE_JUMP, 4000);
break;
}
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
break;
case EVENT_VX001_EMOTE_JUMP:
{
@@ -681,7 +681,7 @@ public:
Creature* VX001 = GetVX001();
if( !VX001 || !LMK2 )
{
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
return;
}
@@ -697,7 +697,7 @@ public:
Creature* LMK2 = GetLMK2();
if( !VX001 || !LMK2 )
{
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
return;
}
@@ -714,7 +714,7 @@ public:
Creature* VX001 = GetVX001();
if( !VX001 || !ACU )
{
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
return;
}
@@ -733,7 +733,7 @@ public:
Creature* ACU = GetACU();
if( !VX001 || !LMK2 || !ACU )
{
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
return;
}
@@ -839,7 +839,7 @@ public:
void MoveInLineOfSight(Unit* /*mover*/) override {}
void EnterEvadeMode() override
void EnterEvadeMode(EvadeReason why) override
{
if (bIsEvading)
return;
@@ -847,16 +847,16 @@ public:
if (Creature* c = GetLMK2())
{
c->AI()->EnterEvadeMode();
c->AI()->EnterEvadeMode(why);
}
if (Creature* c = GetVX001())
{
c->AI()->EnterEvadeMode();
c->AI()->EnterEvadeMode(why);
c->DespawnOrUnsummon();
}
if (Creature* c = GetACU())
{
c->AI()->EnterEvadeMode();
c->AI()->EnterEvadeMode(why);
c->DespawnOrUnsummon();
}
@@ -864,7 +864,7 @@ public:
me->RemoveAllAuras();
me->ExitVehicle();
ScriptedAI::EnterEvadeMode();
ScriptedAI::EnterEvadeMode(why);
bIsEvading = false;
}
@@ -952,7 +952,7 @@ public:
Creature* ACU = GetACU();
if (!LMK2 || !VX001 || !ACU)
{
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
return;
}
@@ -1226,7 +1226,7 @@ public:
}
}
void EnterEvadeMode() override
void EnterEvadeMode(EvadeReason why) override
{
if (bIsEvading)
return;
@@ -1237,7 +1237,7 @@ public:
ScriptedAI::EnterEvadeMode();
if (Creature* mimiron = GetMimiron())
mimiron->AI()->EnterEvadeMode();
mimiron->AI()->EnterEvadeMode(why);
bIsEvading = false;
}
@@ -1580,7 +1580,7 @@ public:
}
}
void EnterEvadeMode() override
void EnterEvadeMode(EvadeReason why) override
{
if (bIsEvading)
return;
@@ -1591,7 +1591,7 @@ public:
_EnterEvadeMode();
Reset();
if (Creature* mimiron = GetMimiron())
mimiron->AI()->EnterEvadeMode();
mimiron->AI()->EnterEvadeMode(why);
bIsEvading = false;
}
@@ -1903,7 +1903,7 @@ public:
}
}
void EnterEvadeMode() override
void EnterEvadeMode(EvadeReason why) override
{
if (bIsEvading)
return;
@@ -1914,7 +1914,7 @@ public:
_EnterEvadeMode();
Reset();
if (Creature* mimiron = GetMimiron())
mimiron->AI()->EnterEvadeMode();
mimiron->AI()->EnterEvadeMode(why);
bIsEvading = false;
}

View File

@@ -588,12 +588,12 @@ public:
pInstance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, NPC_DARK_RUNE_GUARDIAN, 1, me);
}
void EnterEvadeMode() override
void EnterEvadeMode(EvadeReason why) override
{
me->SetDisableGravity(true);
me->SetControlled(false, UNIT_STATE_ROOT);
me->DisableRotate(false);
ScriptedAI::EnterEvadeMode();
ScriptedAI::EnterEvadeMode(why);
}
};
};

View File

@@ -433,10 +433,10 @@ public:
go->SetGoState(GO_STATE_ACTIVE);
}
void EnterEvadeMode() override
void EnterEvadeMode(EvadeReason why) override
{
DisableThorim(false);
CreatureAI::EnterEvadeMode();
CreatureAI::EnterEvadeMode(why);
}
void Reset() override
@@ -959,7 +959,7 @@ public:
uint32 Timer;
void EnterEvadeMode() override {}
void EnterEvadeMode(EvadeReason /*why*/) override {}
void MoveInLineOfSight(Unit*) override {}
void AttackStart(Unit*) override {}

View File

@@ -399,9 +399,9 @@ public:
me->SummonCreature(NPC_SANITY_WELL, 1899.94f, 0.330621f, 332.296f, 0.0f);
}
void EnterEvadeMode() override
void EnterEvadeMode(EvadeReason why) override
{
if (!_EnterEvadeMode())
if (!_EnterEvadeMode(why))
return;
Position pos;
@@ -736,7 +736,7 @@ public:
if (!SelectTargetFromPlayerList(90, SPELL_INSANE1))
{
m_pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_INSANE1);
EnterEvadeMode();
EnterEvadeMode(EVADE_REASON_OTHER);
return;
}

View File

@@ -297,10 +297,10 @@ public:
ScriptedAI::AttackStart(who);
}
void EnterEvadeMode() override
void EnterEvadeMode(EvadeReason why) override
{
if (me->GetFaction() == FACTION_MONSTER_2)
ScriptedAI::EnterEvadeMode();
ScriptedAI::EnterEvadeMode(why);
}
void OnCharmed(bool /*apply*/) override {}