feat(Core/AI): convert SelectAggroTarget to enum class (#9893)

This commit is contained in:
Kargatum
2021-12-29 05:13:12 +07:00
committed by GitHub
parent e928d8b67e
commit c81891fc11
236 changed files with 622 additions and 598 deletions

View File

@@ -208,7 +208,7 @@ public:
break;
case EVENT_MARK_OF_ARLOKK:
{
Unit* target = SelectTarget(SELECT_TARGET_TOPAGGRO, urand(1, 3), 0.0f, false, -SPELL_MARK_OF_ARLOKK);
Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, urand(1, 3), 0.0f, false, -SPELL_MARK_OF_ARLOKK);
if (!target)
target = me->GetVictim();
if (target)
@@ -253,7 +253,7 @@ public:
case EVENT_VISIBLE:
me->SetReactState(REACT_AGGRESSIVE);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
AttackStart(target);
me->RemoveAura(SPELL_SUPER_INVIS);
me->RemoveAura(SPELL_VANISH);
@@ -389,7 +389,7 @@ public:
switch (eventId)
{
case EVENT_ATTACK:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0.0f, 100, false))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0.0f, 100, false))
me->Attack(target, true);
break;
default:

View File

@@ -86,7 +86,7 @@ public:
DoModifyThreatPercent(victim, -50);
}
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1))
AttackStart(target);
events.ScheduleEvent(EVENT_AVATAR, urand(25000, 35000));
break;

View File

@@ -128,12 +128,12 @@ public:
events.ScheduleEvent(EVENT_CORRUPTED_BLOOD, urand(30000, 45000));
break;
case EVENT_CAUSE_INSANITY:
// DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_CAUSE_INSANITY);
// DoCast(SelectTarget(SelectTargetMethod::Random, 0, 100, true), SPELL_CAUSE_INSANITY);
// events.ScheduleEvent(EVENT_CAUSE_INSANITY, urand(35000, 45000));
break;
case EVENT_WILL_OF_HAKKAR:
// Xinef: Skip Tank
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true), SPELL_WILL_OF_HAKKAR);
DoCast(SelectTarget(SelectTargetMethod::Random, 1, 100, true), SPELL_WILL_OF_HAKKAR);
events.ScheduleEvent(EVENT_WILL_OF_HAKKAR, urand(25000, 35000));
break;
case EVENT_ENRAGE:

View File

@@ -93,7 +93,7 @@ public:
// We will just use one model for the beginning
for (uint8 i = 0; i < 3; ++i)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
{
Creature* Illusion = me->SummonCreature(NPC_NIGHTMARE_ILLUSION, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000);
if (Illusion)

View File

@@ -143,7 +143,7 @@ public:
switch (eventId)
{
case EVENT_CHARGE_JEKLIK:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
{
DoCast(target, SPELL_CHARGE);
AttackStart(target);
@@ -159,14 +159,14 @@ public:
events.ScheduleEvent(EVENT_SCREECH, urand(18000, 26000), 0, PHASE_ONE);
break;
case EVENT_SPAWN_BATS:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
for (uint8 i = 0; i < 6; ++i)
if (Creature* bat = me->SummonCreature(NPC_BLOODSEEKER_BAT, SpawnBat[i], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
bat->AI()->AttackStart(target);
events.ScheduleEvent(EVENT_SPAWN_BATS, 60000, 0, PHASE_ONE);
break;
case EVENT_SHADOW_WORD_PAIN:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
DoCast(target, SPELL_SHADOW_WORD_PAIN);
events.ScheduleEvent(EVENT_SHADOW_WORD_PAIN, urand(12000, 18000), 0, PHASE_TWO);
break;
@@ -185,7 +185,7 @@ public:
events.ScheduleEvent(EVENT_GREATER_HEAL, urand(25000, 35000), 0, PHASE_TWO);
break;
case EVENT_SPAWN_FLYING_BATS:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
if (Creature* flyingBat = me->SummonCreature(NPC_FRENZIED_BAT, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ() + 15.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000))
flyingBat->AI()->AttackStart(target);
events.ScheduleEvent(EVENT_SPAWN_FLYING_BATS, urand(10000, 15000), 0, PHASE_TWO);
@@ -234,7 +234,7 @@ public:
if (Bomb_Timer <= diff)
{
std::list<Unit*> targets;
SelectTargetList(targets, 1, SELECT_TARGET_RANDOM, 500.0f, true);
SelectTargetList(targets, 1, SelectTargetMethod::Random, 500.0f, true);
if (!targets.empty())
{
if (targets.size() > 1)

View File

@@ -120,7 +120,7 @@ public:
break;
case EVENT_DELUSIONSOFJINDO: // HACK
// Casting the delusion curse with a shade so shade will attack the same target with the curse.
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
{
DoCast(target, SPELL_DELUSIONSOFJINDO);
Creature* Shade = me->SummonCreature(NPC_SHADE_OF_JINDO, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
@@ -131,7 +131,7 @@ public:
break;
case EVENT_TELEPORT: // Possible HACK
// Teleports a random player and spawns 9 Sacrificed Trolls to attack player
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
{
DoTeleportPlayer(target, TeleportLoc.m_positionX, TeleportLoc.m_positionY, TeleportLoc.m_positionZ, TeleportLoc.m_orientation);
if (DoGetThreat(me->GetVictim()))

View File

@@ -254,7 +254,7 @@ public:
events.ScheduleEvent(EVENT_CHECK_OHGAN, 1000);
break;
case EVENT_WATCH_PLAYER:
if (Unit* player = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
if (Unit* player = SelectTarget(SelectTargetMethod::Random, 0, 100, true))
{
DoCast(player, SPELL_WATCH);
Talk(SAY_WATCH, player);
@@ -262,7 +262,7 @@ public:
events.ScheduleEvent(EVENT_WATCH_PLAYER, urand(12000, 15000));
break;
case EVENT_CHARGE_PLAYER:
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 40, true), SPELL_CHARGE);
DoCast(SelectTarget(SelectTargetMethod::Random, 0, 40, true), SPELL_CHARGE);
events.ScheduleEvent(EVENT_CHARGE_PLAYER, urand(22000, 30000));
break;
default:

View File

@@ -108,7 +108,7 @@ public:
{
case EVENT_SPAWN_START_SPIDERS:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
{
Talk(SAY_SPIDER_SPAWN);
Creature* Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
@@ -140,7 +140,7 @@ public:
events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, urand(13000, 18000), 0, PHASE_TWO);
break;
case EVENT_SPAWN_SPIDER:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
{
Creature* Spider = me->SummonCreature(15041, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
if (Spider)
@@ -173,7 +173,7 @@ public:
int i = 0;
while (i++ < 3) // max 3 tries to get a random target with power_mana
{
target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true); // not aggro leader
target = SelectTarget(SelectTargetMethod::Random, 1, 100, true); // not aggro leader
if (target && target->getPowerType() == POWER_MANA)
break;
}

View File

@@ -102,7 +102,7 @@ public:
{
if (Ambush_Timer <= diff)
{
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0);
Unit* target = SelectTarget(SelectTargetMethod::Random, 0);
if (target)
{
me->NearTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), me->GetOrientation());
@@ -137,7 +137,7 @@ public:
{
if (Aggro_Timer <= diff)
{
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1);
Unit* target = SelectTarget(SelectTargetMethod::Random, 1);
if (DoGetThreat(me->GetVictim()))
{

View File

@@ -205,7 +205,7 @@ public:
events.ScheduleEvent(EVENT_FORCEPUNCH, urand(16000, 21000), 0, PHASE_TWO);
break;
case EVENT_CHARGE:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
{
DoCast(target, SPELL_CHARGE);
DoResetThreat();

View File

@@ -210,7 +210,7 @@ public:
for (uint8 i = 0; i < 10; ++i)
{
if (Unit* target = SelectTarget(SELECT_TARGET_TOPAGGRO, i))
if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, i))
// check if target is within melee-distance
if (me->IsWithinMeleeRange(target))
++_inMeleeRange;
@@ -223,12 +223,12 @@ public:
events.ScheduleEvent(EVENT_HOLY_NOVA, urand(45000, 75000), 0, PHASE_ONE);
break;
case EVENT_HOLY_FIRE:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
if (Unit* target = SelectTarget(SelectTargetMethod::Random))
DoCast(target, SPELL_HOLY_FIRE);
events.ScheduleEvent(EVENT_HOLY_FIRE, urand(45000, 60000), 0, PHASE_ONE);
break;
case EVENT_HOLY_WRATH:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
if (Unit* target = SelectTarget(SelectTargetMethod::Random))
DoCast(target, SPELL_HOLY_WRATH);
events.ScheduleEvent(EVENT_HOLY_WRATH, urand(45000, 60000), 0, PHASE_ONE);
break;
@@ -238,17 +238,17 @@ public:
//
case EVENT_VENOM_SPIT:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
if (Unit* target = SelectTarget(SelectTargetMethod::Random))
DoCast(target, SPELL_VENOM_SPIT);
events.ScheduleEvent(EVENT_VENOM_SPIT, urand(5000, 15000), 0, PHASE_TWO);
break;
case EVENT_POISON_CLOUD:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
if (Unit* target = SelectTarget(SelectTargetMethod::Random))
DoCast(target, SPELL_POISON_CLOUD);
events.ScheduleEvent(EVENT_POISON_CLOUD, urand(15000, 20000), 0, PHASE_TWO);
break;
case EVENT_PARASITIC_SERPENT:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
if (Unit* target = SelectTarget(SelectTargetMethod::Random))
DoCast(target, SPELL_SUMMON_PARASITIC_SERPENT);
events.ScheduleEvent(EVENT_PARASITIC_SERPENT, 15000, 0, PHASE_TWO);
break;

View File

@@ -83,7 +83,7 @@ public:
events.ScheduleEvent(EVENT_LIGHTNINGCLOUD, urand(15000, 20000));
break;
case EVENT_LIGHTNINGWAVE:
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_LIGHTNINGWAVE);
DoCast(SelectTarget(SelectTargetMethod::Random, 0, 100, true), SPELL_LIGHTNINGWAVE);
events.ScheduleEvent(EVENT_LIGHTNINGWAVE, urand(12000, 16000));
break;
default: