diff options
| author | elecyb <svn@electrocyber.com.ar> | 2012-01-08 03:56:33 -0300 |
|---|---|---|
| committer | elecyb <svn@electrocyber.com.ar> | 2012-01-08 03:56:33 -0300 |
| commit | fc4b03371594b15cf810821ee667f468d00c8b22 (patch) | |
| tree | 1d176fe38e1b984ea53ea9de8d05f8fb9c335d19 /src | |
| parent | 7d7bb8363ddb28086ddab1565d540993d32b616e (diff) | |
Core-Vehicles: Change player mover when add/remove passenger (thanks Subv)
Core-Misc: Restore correct mover for victim of possesion spell.
Closes #4704, #4707
Diffstat (limited to 'src')
| -rwxr-xr-x | src/server/game/Entities/Vehicle/Vehicle.cpp | 4 | ||||
| -rwxr-xr-x | src/server/game/Server/Protocol/Handlers/MovementHandler.cpp | 3 | ||||
| -rwxr-xr-x | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 2 |
3 files changed, 6 insertions, 3 deletions
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 7e4bebaab95..b3531d585c3 100755 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -359,6 +359,7 @@ bool Vehicle::AddPassenger(Unit* unit, int8 seatId) { if (!_me->SetCharmedBy(unit, CHARM_TYPE_VEHICLE)) ASSERT(false); + unit->ToPlayer()->SetMover(this->GetBase()); } if (_me->IsInWorld()) @@ -410,7 +411,10 @@ void Vehicle::RemovePassenger(Unit* unit) unit->ClearUnitState(UNIT_STAT_ONVEHICLE); if (_me->GetTypeId() == TYPEID_UNIT && unit->GetTypeId() == TYPEID_PLAYER && seat->first == 0 && seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_CAN_CONTROL) + { _me->RemoveCharmedBy(unit); + unit->ToPlayer()->SetMover(unit->ToPlayer()); + } if (_me->IsInWorld()) { diff --git a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp index 0c54a37c362..7d1233c8f70 100755 --- a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp @@ -473,10 +473,7 @@ void WorldSession::HandleSetActiveMoverOpcode(WorldPacket &recv_data) if (GetPlayer()->IsInWorld()) { if (_player->m_mover->GetGUID() != guid) - { sLog->outError("HandleSetActiveMoverOpcode: incorrect mover guid: mover is " UI64FMTD " (%s - Entry: %u) and should be " UI64FMTD, guid, GetLogNameForGuid(guid), GUID_ENPART(guid), _player->m_mover->GetGUID()); - GetPlayer()->SetMover(GetPlayer()); - } } } diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 58a37e75b2c..1d3c657f50a 100755 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -3104,6 +3104,8 @@ void AuraEffect::HandleModPossess(AuraApplication const* aurApp, uint8 mode, boo { target->RemoveCharmedBy(caster); caster->ToPlayer()->SetMover(caster); + if (target->GetTypeId() == TYPEID_PLAYER) + target->ToPlayer()->SetMover(target); } } |
