diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/game/Map.cpp | 7 | ||||
| -rw-r--r-- | src/game/PetHandler.cpp | 5 | ||||
| -rw-r--r-- | src/game/SpellAuras.cpp | 7 | ||||
| -rw-r--r-- | src/game/Unit.cpp | 2 |
4 files changed, 10 insertions, 11 deletions
diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 42e21f9b5eb..7a280160913 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -1015,7 +1015,6 @@ bool Map::CreatureCellRelocation(Creature *c, Cell new_cell) RemoveFromGrid(c,getNGrid(old_cell.GridX(), old_cell.GridY()),old_cell); AddToGrid(c,getNGrid(new_cell.GridX(), new_cell.GridY()),new_cell); - c->SetCurrentCell(new_cell); } else { @@ -1040,7 +1039,6 @@ bool Map::CreatureCellRelocation(Creature *c, Cell new_cell) RemoveFromGrid(c,getNGrid(old_cell.GridX(), old_cell.GridY()),old_cell); AddToGrid(c,getNGrid(new_cell.GridX(), new_cell.GridY()),new_cell); - c->SetCurrentCell(new_cell); return true; } @@ -1056,7 +1054,6 @@ bool Map::CreatureCellRelocation(Creature *c, Cell new_cell) RemoveFromGrid(c,getNGrid(old_cell.GridX(), old_cell.GridY()),old_cell); EnsureGridCreated(GridPair(new_cell.GridX(), new_cell.GridY())); AddToGrid(c,getNGrid(new_cell.GridX(), new_cell.GridY()),new_cell); - c->SetCurrentCell(new_cell); return true; } @@ -1714,7 +1711,7 @@ void Map::AddToActive( Creature* c ) AddToActiveHelper(c); // also not allow unloading spawn grid to prevent creating creature clone at load - if(c->GetDBTableGUIDLow()) + if(!c->isPet() && c->GetDBTableGUIDLow()) { float x,y,z; c->GetRespawnCoord(x,y,z); @@ -1735,7 +1732,7 @@ void Map::RemoveFromActive( Creature* c ) RemoveFromActiveHelper(c); // also allow unloading spawn grid - if(c->GetDBTableGUIDLow()) + if(!c->isPet() && c->GetDBTableGUIDLow()) { float x,y,z; c->GetRespawnCoord(x,y,z); diff --git a/src/game/PetHandler.cpp b/src/game/PetHandler.cpp index 19b05797618..b87193b7e9f 100644 --- a/src/game/PetHandler.cpp +++ b/src/game/PetHandler.cpp @@ -118,10 +118,9 @@ void WorldSession::HandlePetAction( WorldPacket & recv_data ) //if(!pet->IsWithinLOSInMap(TargetUnit)) // return; - if(pet->GetTypeId() != TYPEID_PLAYER) + if(pet->GetTypeId() != TYPEID_PLAYER && ((Creature*)pet)->IsAIEnabled) { - if (((Creature*)pet)->IsAIEnabled) - ((Creature*)pet)->AI()->AttackStart(TargetUnit); + ((Creature*)pet)->AI()->AttackStart(TargetUnit); //10% chance to play special pet attack talk, else growl if(((Creature*)pet)->isPet() && ((Pet*)pet)->getPetType() == SUMMON_PET && pet != TargetUnit && urand(0, 100) < 10) diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 40edea80ce9..034370f9564 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2873,11 +2873,14 @@ void Aura::HandleModPossessPet(bool apply, bool Real) Unit* caster = GetCaster(); if(!caster || caster->GetTypeId() != TYPEID_PLAYER) return; - if(caster->GetPet() != m_target) - return; if(apply) + { + if(caster->GetPet() != m_target) + return; + m_target->SetCharmedOrPossessedBy(caster, true); + } else { m_target->RemoveCharmedOrPossessedBy(caster); diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index a3fc2400208..7bdb3b28d27 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -8342,7 +8342,7 @@ bool Unit::AttackStop() void Unit::CombatStop(bool cast) { - if(cast& IsNonMeleeSpellCasted(false)) + if(cast && IsNonMeleeSpellCasted(false)) InterruptNonMeleeSpells(false); AttackStop(); |
