Misc fixes
This commit is contained in:
@@ -109,29 +109,29 @@ namespace Game.DataStorage
|
|||||||
public short VehicleExitAnimKitID;
|
public short VehicleExitAnimKitID;
|
||||||
public short CameraModeID;
|
public short CameraModeID;
|
||||||
|
|
||||||
public bool CanEnterOrExit()
|
public bool HasFlag(VehicleSeatFlags flag)
|
||||||
{
|
|
||||||
return (HasSeatFlag(VehicleSeatFlags.CanEnterOrExit) ||
|
|
||||||
//If it has anmation for enter/ride, means it can be entered/exited by logic
|
|
||||||
HasSeatFlag(VehicleSeatFlags.HasLowerAnimForEnter | VehicleSeatFlags.HasLowerAnimForRide));
|
|
||||||
}
|
|
||||||
public bool CanSwitchFromSeat() { return Flags.HasAnyFlag((int)VehicleSeatFlags.CanSwitch); }
|
|
||||||
public bool IsUsableByOverride()
|
|
||||||
{
|
|
||||||
return HasSeatFlag(VehicleSeatFlags.Uncontrolled | VehicleSeatFlags.Unk18)
|
|
||||||
|| HasSeatFlag(VehicleSeatFlagsB.UsableForced | VehicleSeatFlagsB.UsableForced2 |
|
|
||||||
VehicleSeatFlagsB.UsableForced3 | VehicleSeatFlagsB.UsableForced4);
|
|
||||||
}
|
|
||||||
public bool IsEjectable() { return HasSeatFlag(VehicleSeatFlagsB.Ejectable); }
|
|
||||||
|
|
||||||
public bool HasSeatFlag(VehicleSeatFlags flag)
|
|
||||||
{
|
{
|
||||||
return Flags.HasAnyFlag((int)flag);
|
return Flags.HasAnyFlag((int)flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasSeatFlag(VehicleSeatFlagsB flag)
|
public bool HasFlag(VehicleSeatFlagsB flag)
|
||||||
{
|
{
|
||||||
return FlagsB.HasAnyFlag((int)flag);
|
return FlagsB.HasAnyFlag((int)flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool CanEnterOrExit()
|
||||||
|
{
|
||||||
|
return (HasFlag(VehicleSeatFlags.CanEnterOrExit) ||
|
||||||
|
//If it has anmation for enter/ride, means it can be entered/exited by logic
|
||||||
|
HasFlag(VehicleSeatFlags.HasLowerAnimForEnter | VehicleSeatFlags.HasLowerAnimForRide));
|
||||||
|
}
|
||||||
|
public bool CanSwitchFromSeat() { return Flags.HasAnyFlag((int)VehicleSeatFlags.CanSwitch); }
|
||||||
|
public bool IsUsableByOverride()
|
||||||
|
{
|
||||||
|
return HasFlag(VehicleSeatFlags.Uncontrolled | VehicleSeatFlags.Unk18)
|
||||||
|
|| HasFlag(VehicleSeatFlagsB.UsableForced | VehicleSeatFlagsB.UsableForced2 |
|
||||||
|
VehicleSeatFlagsB.UsableForced3 | VehicleSeatFlagsB.UsableForced4);
|
||||||
|
}
|
||||||
|
public bool IsEjectable() { return HasFlag(VehicleSeatFlagsB.Ejectable); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -349,16 +349,16 @@ namespace Game.Entities
|
|||||||
_me.AddNpcFlag(_me.IsTypeId(TypeId.Player) ? NPCFlags.PlayerVehicle : NPCFlags.SpellClick);
|
_me.AddNpcFlag(_me.IsTypeId(TypeId.Player) ? NPCFlags.PlayerVehicle : NPCFlags.SpellClick);
|
||||||
|
|
||||||
// Enable gravity for passenger when he did not have it active before entering the vehicle
|
// Enable gravity for passenger when he did not have it active before entering the vehicle
|
||||||
if (seat.Value.SeatInfo.HasSeatFlag(VehicleSeatFlags.DisableGravity) && !seat.Value.Passenger.IsGravityDisabled)
|
if (seat.Value.SeatInfo.HasFlag(VehicleSeatFlags.DisableGravity) && !seat.Value.Passenger.IsGravityDisabled)
|
||||||
unit.SetDisableGravity(false);
|
unit.SetDisableGravity(false);
|
||||||
|
|
||||||
// Remove UNIT_FLAG_NOT_SELECTABLE if passenger did not have it before entering vehicle
|
// Remove UNIT_FLAG_NOT_SELECTABLE if passenger did not have it before entering vehicle
|
||||||
if (seat.Value.SeatInfo.HasSeatFlag(VehicleSeatFlags.PassengerNotSelectable) && !seat.Value.Passenger.IsUnselectable)
|
if (seat.Value.SeatInfo.HasFlag(VehicleSeatFlags.PassengerNotSelectable) && !seat.Value.Passenger.IsUnselectable)
|
||||||
unit.RemoveUnitFlag(UnitFlags.NotSelectable);
|
unit.RemoveUnitFlag(UnitFlags.NotSelectable);
|
||||||
|
|
||||||
seat.Value.Passenger.Reset();
|
seat.Value.Passenger.Reset();
|
||||||
|
|
||||||
if (_me.IsTypeId(TypeId.Unit) && unit.IsTypeId(TypeId.Player) && seat.Value.SeatInfo.HasSeatFlag(VehicleSeatFlags.CanControl))
|
if (_me.IsTypeId(TypeId.Unit) && unit.IsTypeId(TypeId.Player) && seat.Value.SeatInfo.HasFlag(VehicleSeatFlags.CanControl))
|
||||||
_me.RemoveCharmedBy(unit);
|
_me.RemoveCharmedBy(unit);
|
||||||
|
|
||||||
if (_me.IsInWorld)
|
if (_me.IsInWorld)
|
||||||
@@ -608,14 +608,14 @@ namespace Game.Entities
|
|||||||
player.StopCastingCharm();
|
player.StopCastingCharm();
|
||||||
player.StopCastingBindSight();
|
player.StopCastingBindSight();
|
||||||
player.SendOnCancelExpectedVehicleRideAura();
|
player.SendOnCancelExpectedVehicleRideAura();
|
||||||
if (!veSeat.HasSeatFlag(VehicleSeatFlagsB.KeepPet))
|
if (!veSeat.HasFlag(VehicleSeatFlagsB.KeepPet))
|
||||||
player.UnsummonPetTemporaryIfAny();
|
player.UnsummonPetTemporaryIfAny();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (veSeat.HasSeatFlag(VehicleSeatFlags.DisableGravity))
|
if (veSeat.HasFlag(VehicleSeatFlags.DisableGravity))
|
||||||
Passenger.SetDisableGravity(true);
|
Passenger.SetDisableGravity(true);
|
||||||
|
|
||||||
if (Seat.Value.SeatInfo.HasSeatFlag(VehicleSeatFlags.PassengerNotSelectable))
|
if (Seat.Value.SeatInfo.HasFlag(VehicleSeatFlags.PassengerNotSelectable))
|
||||||
Passenger.AddUnitFlag(UnitFlags.NotSelectable);
|
Passenger.AddUnitFlag(UnitFlags.NotSelectable);
|
||||||
|
|
||||||
Passenger.m_movementInfo.transport.pos.Relocate(veSeat.AttachmentOffset.X, veSeat.AttachmentOffset.Y, veSeat.AttachmentOffset.Z);
|
Passenger.m_movementInfo.transport.pos.Relocate(veSeat.AttachmentOffset.X, veSeat.AttachmentOffset.Y, veSeat.AttachmentOffset.Z);
|
||||||
@@ -624,7 +624,7 @@ namespace Game.Entities
|
|||||||
Passenger.m_movementInfo.transport.guid = Target.GetBase().GetGUID();
|
Passenger.m_movementInfo.transport.guid = Target.GetBase().GetGUID();
|
||||||
|
|
||||||
if (Target.GetBase().IsTypeId(TypeId.Unit) && Passenger.IsTypeId(TypeId.Player) &&
|
if (Target.GetBase().IsTypeId(TypeId.Unit) && Passenger.IsTypeId(TypeId.Player) &&
|
||||||
Seat.Value.SeatInfo.HasSeatFlag(VehicleSeatFlags.CanControl))
|
Seat.Value.SeatInfo.HasFlag(VehicleSeatFlags.CanControl))
|
||||||
Cypher.Assert(Target.GetBase().SetCharmedBy(Passenger, CharmType.Vehicle)); // SMSG_CLIENT_CONTROL
|
Cypher.Assert(Target.GetBase().SetCharmedBy(Passenger, CharmType.Vehicle)); // SMSG_CLIENT_CONTROL
|
||||||
|
|
||||||
Passenger.SendClearTarget(); // SMSG_BREAK_TARGET
|
Passenger.SendClearTarget(); // SMSG_BREAK_TARGET
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ namespace Game
|
|||||||
{
|
{
|
||||||
VehicleSeatRecord seat = vehicle.GetSeatForPassenger(GetPlayer());
|
VehicleSeatRecord seat = vehicle.GetSeatForPassenger(GetPlayer());
|
||||||
Cypher.Assert(seat != null);
|
Cypher.Assert(seat != null);
|
||||||
if (!seat.HasSeatFlag(VehicleSeatFlags.CanAttack))
|
if (!seat.HasFlag(VehicleSeatFlags.CanAttack))
|
||||||
{
|
{
|
||||||
SendAttackStop(enemy);
|
SendAttackStop(enemy);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ namespace Game
|
|||||||
VehicleSeatRecord seat = vehicle.GetSeatForPassenger(mover);
|
VehicleSeatRecord seat = vehicle.GetSeatForPassenger(mover);
|
||||||
if (seat != null)
|
if (seat != null)
|
||||||
{
|
{
|
||||||
if (seat.HasSeatFlag(VehicleSeatFlags.AllowTurning))
|
if (seat.HasFlag(VehicleSeatFlags.AllowTurning))
|
||||||
{
|
{
|
||||||
if (movementInfo.Pos.GetOrientation() != mover.GetOrientation())
|
if (movementInfo.Pos.GetOrientation() != mover.GetOrientation())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1236,7 +1236,7 @@ namespace Game.Spells
|
|||||||
return SpellCastResult.CantDoThatRightNow;
|
return SpellCastResult.CantDoThatRightNow;
|
||||||
|
|
||||||
// Can only summon uncontrolled minions/guardians when on controlled vehicle
|
// Can only summon uncontrolled minions/guardians when on controlled vehicle
|
||||||
if (vehicleSeat.HasSeatFlag(VehicleSeatFlags.CanControl | VehicleSeatFlags.Unk2))
|
if (vehicleSeat.HasFlag(VehicleSeatFlags.CanControl | VehicleSeatFlags.Unk2))
|
||||||
{
|
{
|
||||||
foreach (SpellEffectInfo effect in _effects)
|
foreach (SpellEffectInfo effect in _effects)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user