Core/Units: Allow mind controlling non-controllable vehicles (for example players that become vehicle during boss encounters or creatures that only are vehicles to show non standard power type)
Port From (https://github.com/TrinityCore/TrinityCore/commit/d56d92fbe7436af00e00b00ca5e7640f852d3485)
This commit is contained in:
@@ -278,7 +278,7 @@ namespace Game.Entities
|
||||
charmer.RemoveAurasByType(AuraType.Mounted);
|
||||
|
||||
Cypher.Assert(type != CharmType.Possess || charmer.IsTypeId(TypeId.Player));
|
||||
Cypher.Assert((type == CharmType.Vehicle) == IsVehicle());
|
||||
Cypher.Assert((type == CharmType.Vehicle) == (GetVehicleKit() && GetVehicleKit().IsControllableVehicle()));
|
||||
|
||||
Log.outDebug(LogFilter.Unit, "SetCharmedBy: charmer {0} (GUID {1}), charmed {2} (GUID {3}), type {4}.", charmer.GetEntry(), charmer.GetGUID().ToString(), GetEntry(), GetGUID().ToString(), type);
|
||||
|
||||
|
||||
@@ -434,6 +434,15 @@ namespace Game.Entities
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool IsControllableVehicle()
|
||||
{
|
||||
foreach (var itr in Seats)
|
||||
if (itr.Value.SeatInfo.HasFlag(VehicleSeatFlags.CanControl))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void InitMovementInfoForBase()
|
||||
{
|
||||
VehicleFlags vehicleFlags = (VehicleFlags)GetVehicleInfo().Flags;
|
||||
|
||||
@@ -6786,7 +6786,7 @@ namespace Game.Spells
|
||||
case AuraType.ModCharm:
|
||||
case AuraType.ModPossessPet:
|
||||
case AuraType.AoeCharm:
|
||||
if (target.IsTypeId(TypeId.Unit) && target.IsVehicle())
|
||||
if (target.GetVehicleKit() && target.GetVehicleKit().IsControllableVehicle())
|
||||
return false;
|
||||
if (target.IsMounted())
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user