aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMrSmite <mrsmite@att.net>2012-02-21 10:26:14 +0100
committerMachiavelli <machiavelli.trinity@gmail.com>2012-02-21 10:26:14 +0100
commitfb39566f1f75838e944cf02a3be36707547a12ae (patch)
treecf991465cf5d43a7c4ddf2fd02d0af5e8e205dbc
parent44195689b9da3cace087e5e3eb01c4fc8bafc85a (diff)
Core/Pets: Fix bugged reactstate behaviour after spline system implementation.
Signed-off-by: Machiavelli <machiavelli.trinity@gmail.com>
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp18
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp21
2 files changed, 22 insertions, 17 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 6c566fe9ed8..9c1ed4bdaa5 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -15328,14 +15328,6 @@ void Unit::Kill(Unit* victim, bool durabilityLoss)
if (!victim->GetHealth())
return;
- // Inform pets (if any) when player kills target)
- if (Player* player = ToPlayer())
- {
- Pet* pet = player->GetPet();
- if (pet && pet->isAlive() && pet->isControlled())
- pet->AI()->KilledUnit(victim);
- }
-
// find player: owner of controlled `this` or `this` itself maybe
Player* player = GetCharmerOrOwnerPlayerOrPlayerItself();
Creature* creature = victim->ToCreature();
@@ -15464,6 +15456,16 @@ void Unit::Kill(Unit* victim, bool durabilityLoss)
victim->setDeathState(JUST_DIED);
}
+ // Inform pets (if any) when player kills target)
+ // MUST come after victim->setDeathState(JUST_DIED); or pet next target
+ // selection will get stuck on same target and break pet react state
+ if (Player* player = ToPlayer())
+ {
+ Pet* pet = player->GetPet();
+ if (pet && pet->isAlive() && pet->isControlled())
+ pet->AI()->KilledUnit(victim);
+ }
+
// 10% durability loss on death
// clean InHateListOf
if (Player* plrVictim = victim->ToPlayer())
diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp
index 964b4402438..064a8fc8297 100755
--- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.cpp
@@ -38,15 +38,18 @@ void TargetedMovementGeneratorMedium<T,D>::_setTargetLocation(T &owner)
return;
float x, y, z;
-
- if (i_offset && i_target->IsWithinDistInMap(&owner,2*i_offset))
- {
- if (!owner.movespline->Finalized())
- return;
-
- owner.GetPosition(x, y, z);
- }
- else if (!i_offset)
+ //! Following block of code deleted by MrSmite in issue 4891
+ //! Code kept for learning and diagnostical purposes
+//
+// if (i_offset && i_target->IsWithinDistInMap(&owner,2*i_offset))
+// {
+// if (!owner.movespline->Finalized())
+// return;
+//
+// owner.GetPosition(x, y, z);
+// }
+// else
+ if (!i_offset)
{
if (i_target->IsWithinMeleeRange(&owner))
return;