diff options
author | treeston <treeston.mmoc@gmail.com> | 2015-09-25 15:14:53 +0200 |
---|---|---|
committer | MitchesD <majklprofik@seznam.cz> | 2015-10-16 12:45:53 +0200 |
commit | 0bf78d57611d0606650aebb513a15e69227ac476 (patch) | |
tree | 7d72e0e832c8b17c97f2adcb2236d9ec7354d6d6 /src | |
parent | 89357f5425355c99648bcb142a8dc7cec9bcd132 (diff) |
Custom logic for putting people in combat instead of relying on CreatureAI or Creature methods.
(cherry picked from commit 6a8524c068d418092c193a3419b65818f3fd3443)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index f44d1eb2680..26ee5329808 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -553,10 +553,25 @@ void Creature::Update(uint32 diff) if (m_combatPulseTime == 0) { - if (AI()) - AI()->DoZoneInCombat(); - else - SetInCombatWithZone(); + Map::PlayerList const &players = GetMap()->GetPlayers(); + if (!players.isEmpty()) + for (Map::PlayerList::const_iterator it = players.begin(); it != players.end(); ++it) + { + if (Player* player = it->GetSource()) + { + if (player->IsGameMaster()) + continue; + + if (player->IsAlive() && this->IsHostileTo(player)) + { + if (CanHaveThreatList()) + AddThreat(player, 0.0f); + this->SetInCombatWith(player); + player->SetInCombatWith(this); + } + } + } + m_combatPulseTime = m_combatPulseDelay * IN_MILLISECONDS; } } |