[7668] Cleanup In CreatureAI function descriptions and AttackStart/AttackedBy use.

* Use AI::AttackStart calls only in case explicit request creature attack from core or AI code "attack it if can".
  Like taunt, pet handler attack command.
* Use AI::AttackedBy for reaction at hostile action "do something at hostile action"
  Like non-dot damage, swing, negative spell landing, or fade fear/etc.
  And provided by default call AttackStart if no current target.

This fix some problems, like:
* Civilian will react propertly at attack by another creature (not pet or player).
* Will not cases (at least triggred by core) when attack target start run to attacker before any real hostile action apply.
This commit is contained in:
VladimirMangos 2009-04-14 07:21:04 +04:00
parent 69fb9736cc
commit d85e95295d
11 changed files with 72 additions and 82 deletions

View file

@ -1140,7 +1140,7 @@ void Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask)
unit->SetStandState(UNIT_STAND_STATE_STAND);
if(!unit->isInCombat() && unit->GetTypeId() != TYPEID_PLAYER && ((Creature*)unit)->AI())
((Creature*)unit)->AI()->AttackStart(m_caster);
((Creature*)unit)->AI()->AttackedBy(m_caster);
unit->SetInCombatWith(m_caster);
m_caster->SetInCombatWith(unit);