aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-12-28 11:29:33 +0100
committerShauren <shauren.trinity@gmail.com>2020-12-28 11:55:55 +0100
commit7817f18c24c89c608fee46e2c2c777865c7ad59e (patch)
tree5aea6ef65b5ffb2bde617e5286a062765ec61094 /src
parentfe89e835fbb22512462e03db48df6750d2c24e79 (diff)
Core/Vehicles: Treat entering other vehicles mounted on main vehicle as swapping seats
(cherry picked from commit 110564e757fefbfbddfab876a96ca9eb5aa7dd7b)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index cf6155a5874..0627faf8f00 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -2974,7 +2974,10 @@ void AuraEffect::HandleAuraControlVehicle(AuraApplication const* aurApp, uint8 m
caster->ToCreature()->DespawnOrUnsummon();
}
- if (!(mode & AURA_EFFECT_HANDLE_CHANGE_AMOUNT))
+ bool seatChange = (mode & AURA_EFFECT_HANDLE_CHANGE_AMOUNT) // Seat change on the same direct vehicle
+ || target->HasAuraType(SPELL_AURA_CONTROL_VEHICLE); // Seat change to a proxy vehicle (for example turret mounted on a siege engine)
+
+ if (!seatChange)
caster->_ExitVehicle();
else
target->GetVehicleKit()->RemovePassenger(caster); // Only remove passenger from vehicle without launching exit movement or despawning the vehicle