fix(Core/Creatures): Critters should start fleeing upon entering comb… (#14253)

This commit is contained in:
UltraNix
2023-01-28 11:01:43 +01:00
committed by GitHub
parent 131e69d691
commit 7f7a2f5a92
7 changed files with 55 additions and 38 deletions

View File

@@ -69,30 +69,30 @@ void PossessedAI::KilledUnit(Unit* /*victim*/)
// victim->RemoveDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
}
void CritterAI::DamageTaken(Unit*, uint32&, DamageEffectType, SpellSchoolMask)
void CritterAI::EnterCombat(Unit* who)
{
if (!me->HasUnitState(UNIT_STATE_FLEEING))
me->SetControlled(true, UNIT_STATE_FLEEING);
{
me->SetControlled(true, UNIT_STATE_FLEEING, who);
}
}
_combatTimer = 1;
void CritterAI::MovementInform(uint32 type, uint32 /*id*/)
{
if (type == TIMED_FLEEING_MOTION_TYPE)
{
EnterEvadeMode(EVADE_REASON_OTHER);
}
}
void CritterAI::EnterEvadeMode(EvadeReason why)
{
if (me->HasUnitState(UNIT_STATE_FLEEING))
me->SetControlled(false, UNIT_STATE_FLEEING);
CreatureAI::EnterEvadeMode(why);
_combatTimer = 0;
}
void CritterAI::UpdateAI(uint32 diff)
{
if (me->IsInCombat())
{
_combatTimer += diff;
if (_combatTimer >= 5000)
EnterEvadeMode(EVADE_REASON_OTHER);
me->SetControlled(false, UNIT_STATE_FLEEING);
}
CreatureAI::EnterEvadeMode(why);
}
int32 CritterAI::Permissible(Creature const* creature)

View File

@@ -66,16 +66,14 @@ public:
class CritterAI : public PassiveAI
{
public:
explicit CritterAI(Creature* c) : PassiveAI(c) { _combatTimer = 0; }
explicit CritterAI(Creature* c) : PassiveAI(c) { }
void DamageTaken(Unit* /*done_by*/, uint32& /*damage*/, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask) override;
void EnterCombat(Unit* /*who*/) override;
void EnterEvadeMode(EvadeReason why) override;
void UpdateAI(uint32) override;
void MovementInform(uint32 type, uint32 id) override;
void UpdateAI(uint32 /*diff*/) override { }
static int32 Permissible(Creature const* creature);
// Xinef: Added
private:
uint32 _combatTimer;
};
class TriggerAI : public NullCreatureAI