diff --git a/Content.Client/Buckle/BuckleSystem.cs b/Content.Client/Buckle/BuckleSystem.cs index 8536c3c429..fea18e5cf3 100644 --- a/Content.Client/Buckle/BuckleSystem.cs +++ b/Content.Client/Buckle/BuckleSystem.cs @@ -2,7 +2,6 @@ using Content.Client.Rotation; using Content.Shared.Buckle; using Content.Shared.Buckle.Components; using Content.Shared.Rotation; -using Content.Shared.Vehicle.Components; using Robust.Client.GameObjects; namespace Content.Client.Buckle; @@ -26,9 +25,6 @@ internal sealed class BuckleSystem : SharedBuckleSystem if (!TryComp(uid, out var ownerSprite)) return; - if (HasComp(component.LastEntityBuckledTo)) - return; - // Adjust draw depth when the chair faces north so that the seat back is drawn over the player. // Reset the draw depth when rotated in any other direction. // TODO when ECSing, make this a visualizer diff --git a/Content.Client/Vehicle/VehicleSystem.cs b/Content.Client/Vehicle/VehicleSystem.cs deleted file mode 100644 index 2092163b00..0000000000 --- a/Content.Client/Vehicle/VehicleSystem.cs +++ /dev/null @@ -1,80 +0,0 @@ -using Content.Shared.Vehicle; -using Content.Shared.Vehicle.Components; -using Robust.Client.GameObjects; -using Robust.Shared.GameStates; - -namespace Content.Client.Vehicle; - -public sealed class VehicleSystem : SharedVehicleSystem -{ - [Dependency] private EyeSystem _eye = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnRiderStartup); - SubscribeLocalEvent(OnRiderShutdown); - SubscribeLocalEvent(OnRiderHandleState); - SubscribeLocalEvent(OnVehicleAppearanceChange); - } - - private void OnRiderStartup(EntityUid uid, RiderComponent component, ComponentStartup args) - { - // Center the player's eye on the vehicle - if (TryComp(uid, out EyeComponent? eyeComp)) - { - _eye.SetTarget(uid, eyeComp.Target ?? component.Vehicle, eyeComp); - } - } - - private void OnRiderShutdown(EntityUid uid, RiderComponent component, ComponentShutdown args) - { - // reset the riders eye centering. - if (TryComp(uid, out EyeComponent? eyeComp)) - { - _eye.SetTarget(uid, null, eyeComp); - } - } - - private void OnRiderHandleState(EntityUid uid, RiderComponent component, ref ComponentHandleState args) - { - if (args.Current is not RiderComponentState state) - return; - - var entity = EnsureEntity(state.Entity, uid); - - if (TryComp(uid, out EyeComponent? eyeComp) && eyeComp.Target == component.Vehicle) - { - _eye.SetTarget(uid, entity, eyeComp); - } - - component.Vehicle = entity; - } - - private void OnVehicleAppearanceChange(EntityUid uid, VehicleComponent component, ref AppearanceChangeEvent args) - { - if (args.Sprite == null) - return; - - if (component.HideRider - && Appearance.TryGetData(uid, VehicleVisuals.HideRider, out var hide, args.Component) - && TryComp(component.LastRider, out var riderSprite)) - riderSprite.Visible = !hide; - - // First check is for the sprite itself - if (Appearance.TryGetData(uid, VehicleVisuals.DrawDepth, out var drawDepth, args.Component)) - args.Sprite.DrawDepth = drawDepth; - - // Set vehicle layer to animated or not (i.e. are the wheels turning or not) - if (component.AutoAnimate - && Appearance.TryGetData(uid, VehicleVisuals.AutoAnimate, out var autoAnimate, args.Component)) - args.Sprite.LayerSetAutoAnimated(VehicleVisualLayers.AutoAnimate, autoAnimate); - } -} - -public enum VehicleVisualLayers : byte -{ - /// Layer for the vehicle's wheels - AutoAnimate, -} diff --git a/Content.Server/Vehicle/VehicleSystem.cs b/Content.Server/Vehicle/VehicleSystem.cs deleted file mode 100644 index f0eea36ffb..0000000000 --- a/Content.Server/Vehicle/VehicleSystem.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Content.Shared.Vehicle; - -namespace Content.Server.Vehicle; - -public sealed class VehicleSystem : SharedVehicleSystem -{ -} diff --git a/Content.Shared/Buckle/Components/StrapComponent.cs b/Content.Shared/Buckle/Components/StrapComponent.cs index b0f37a8daf..f25e1b0374 100644 --- a/Content.Shared/Buckle/Components/StrapComponent.cs +++ b/Content.Shared/Buckle/Components/StrapComponent.cs @@ -1,6 +1,5 @@ using System.Numerics; using Content.Shared.Alert; -using Content.Shared.Vehicle; using Content.Shared.Whitelist; using Robust.Shared.Audio; using Robust.Shared.GameStates; @@ -9,7 +8,7 @@ using Robust.Shared.Serialization; namespace Content.Shared.Buckle.Components; [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -[Access(typeof(SharedBuckleSystem), typeof(SharedVehicleSystem))] +[Access(typeof(SharedBuckleSystem))] public sealed partial class StrapComponent : Component { /// diff --git a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs index cfaea47d30..731b2892aa 100644 --- a/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs +++ b/Content.Shared/Buckle/SharedBuckleSystem.Buckle.cs @@ -16,7 +16,6 @@ using Content.Shared.Standing; using Content.Shared.Storage.Components; using Content.Shared.Stunnable; using Content.Shared.Throwing; -using Content.Shared.Vehicle.Components; using Content.Shared.Verbs; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; @@ -124,16 +123,6 @@ public abstract partial class SharedBuckleSystem private void OnBuckleStandAttempt(EntityUid uid, BuckleComponent component, StandAttemptEvent args) { - //Let entities stand back up while on vehicles so that they can be knocked down when slept/stunned - //This prevents an exploit that allowed people to become partially invulnerable to stuns - //while on vehicles - - if (component.BuckledTo != null) - { - var buckle = component.BuckledTo; - if (TryComp(buckle, out _)) - return; - } if (component.Buckled) args.Cancel(); } @@ -149,8 +138,7 @@ public abstract partial class SharedBuckleSystem if (component.LifeStage > ComponentLifeStage.Running) return; - if (component.Buckled && - !HasComp(component.BuckledTo)) // buckle+vehicle shitcode + if (component.Buckled) // buckle shitcode args.Cancel(); } @@ -436,10 +424,6 @@ public abstract partial class SharedBuckleSystem if (HasComp(buckleUid) && buckleUid == userUid) return false; - // If the strap is a vehicle and the rider is not the person unbuckling, return. Unless the rider is crit or dead. - if (TryComp(strapUid, out var vehicle) && vehicle.Rider != userUid && !_mobState.IsIncapacitated(buckleUid)) - return false; - // If the person is crit or dead in any kind of strap, return. This prevents people from unbuckling themselves while incapacitated. if (_mobState.IsIncapacitated(buckleUid) && userUid == buckleUid) return false; diff --git a/Content.Shared/Foldable/FoldableComponent.cs b/Content.Shared/Foldable/FoldableComponent.cs index 7303f64fdb..1943327c0d 100644 --- a/Content.Shared/Foldable/FoldableComponent.cs +++ b/Content.Shared/Foldable/FoldableComponent.cs @@ -4,10 +4,10 @@ using Robust.Shared.Serialization; namespace Content.Shared.Foldable; /// -/// Used to create "foldable structures" that you can pickup like an item when folded. Used for rollerbeds and wheelchairs. +/// Used to create "foldable structures" that you can pickup like an item when folded. /// /// -/// Wiill prevent any insertions into containers while this item is unfolded. +/// Will prevent any insertions into containers while this item is unfolded. /// [RegisterComponent] [NetworkedComponent] diff --git a/Content.Shared/Traits/Assorted/LegsParalyzedComponent.cs b/Content.Shared/Traits/Assorted/LegsParalyzedComponent.cs index 7716749da1..59f9ca758b 100644 --- a/Content.Shared/Traits/Assorted/LegsParalyzedComponent.cs +++ b/Content.Shared/Traits/Assorted/LegsParalyzedComponent.cs @@ -4,7 +4,6 @@ namespace Content.Shared.Traits.Assorted; /// /// Set player speed to zero and standing state to down, simulating leg paralysis. -/// Used for Wheelchair bound trait. /// [RegisterComponent, NetworkedComponent, Access(typeof(LegsParalyzedSystem))] public sealed partial class LegsParalyzedComponent : Component diff --git a/Content.Shared/Vehicle/Components/InVehicleComponent.cs b/Content.Shared/Vehicle/Components/InVehicleComponent.cs deleted file mode 100644 index 77229f1705..0000000000 --- a/Content.Shared/Vehicle/Components/InVehicleComponent.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.Vehicle.Components -{ - /// - /// Added to objects inside a vehicle to stop people besides the rider from - /// removing them. - /// - [RegisterComponent, NetworkedComponent] - public sealed partial class InVehicleComponent : Component - { - /// - /// The vehicle this rider is currently riding. - /// - [ViewVariables] public VehicleComponent? Vehicle; - } -} diff --git a/Content.Shared/Vehicle/Components/RiderComponent.cs b/Content.Shared/Vehicle/Components/RiderComponent.cs deleted file mode 100644 index a6618842e4..0000000000 --- a/Content.Shared/Vehicle/Components/RiderComponent.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Robust.Shared.GameStates; -using Robust.Shared.Serialization; - -namespace Content.Shared.Vehicle.Components; - -/// -/// Added to people when they are riding in a vehicle -/// used mostly to keep track of them for entityquery. -/// -[RegisterComponent, NetworkedComponent] -public sealed partial class RiderComponent : Component -{ - /// - /// The vehicle this rider is currently riding. - /// - [ViewVariables] public EntityUid? Vehicle; - - public override bool SendOnlyToOwner => true; -} - -[Serializable, NetSerializable] -public sealed class RiderComponentState : ComponentState -{ - public NetEntity? Entity; -} diff --git a/Content.Shared/Vehicle/Components/VehicleComponent.cs b/Content.Shared/Vehicle/Components/VehicleComponent.cs deleted file mode 100644 index a4a4d89a25..0000000000 --- a/Content.Shared/Vehicle/Components/VehicleComponent.cs +++ /dev/null @@ -1,114 +0,0 @@ -using System.Numerics; -using Robust.Shared.Audio; -using Robust.Shared.GameStates; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; - -namespace Content.Shared.Vehicle.Components; - -/// -/// This is particularly for vehicles that use -/// buckle. Stuff like clown cars may need a different -/// component at some point. -/// All vehicles should have Physics, Strap, and SharedPlayerInputMover components. -/// -[AutoGenerateComponentState] -[RegisterComponent, NetworkedComponent] -[Access(typeof(SharedVehicleSystem))] -public sealed partial class VehicleComponent : Component -{ - /// - /// The entity currently riding the vehicle. - /// - [ViewVariables] - [AutoNetworkedField] - public EntityUid? Rider; - - [ViewVariables] - [AutoNetworkedField] - public EntityUid? LastRider; - - /// - /// The base offset for the vehicle (when facing east) - /// - [ViewVariables] - public Vector2 BaseBuckleOffset = Vector2.Zero; - - /// - /// The sound that the horn makes - /// - [DataField("hornSound")] - [ViewVariables(VVAccess.ReadWrite)] - public SoundSpecifier? HornSound = new SoundPathSpecifier("/Audio/Effects/Vehicle/carhorn.ogg") - { - Params = AudioParams.Default.WithVolume(-3f) - }; - - [ViewVariables] - public EntityUid? HonkPlayingStream; - - /// Use ambient sound component for the idle sound. - - [DataField("hornAction", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string? HornAction = "ActionVehicleHorn"; - - /// - /// The action for the horn (if any) - /// - [DataField("hornActionEntity")] - [ViewVariables(VVAccess.ReadWrite)] - public EntityUid? HornActionEntity; - - /// - /// Whether the vehicle has a key currently inside it or not. - /// - [DataField("hasKey")] - [ViewVariables(VVAccess.ReadWrite)] - public bool HasKey; - - /// - /// Determines from which side the vehicle will be displayed on top of the player. - /// - - [DataField("southOver")] - [ViewVariables(VVAccess.ReadWrite)] - public bool SouthOver; - - [DataField("northOver")] - [ViewVariables(VVAccess.ReadWrite)] - public bool NorthOver; - - [DataField("westOver")] - [ViewVariables(VVAccess.ReadWrite)] - public bool WestOver; - - [DataField("eastOver")] - [ViewVariables(VVAccess.ReadWrite)] - public bool EastOver; - - /// - /// What the y buckle offset should be in north / south - /// - [DataField("northOverride")] - [ViewVariables(VVAccess.ReadWrite)] - public float NorthOverride; - - /// - /// What the y buckle offset should be in north / south - /// - [DataField("southOverride")] - [ViewVariables(VVAccess.ReadWrite)] - public float SouthOverride; - - [DataField("autoAnimate")] - [ViewVariables(VVAccess.ReadWrite)] - public bool AutoAnimate = true; - - [DataField("useHand")] - [ViewVariables(VVAccess.ReadWrite)] - public bool UseHand = true; - - [DataField("hideRider")] - [ViewVariables(VVAccess.ReadWrite)] - public bool HideRider; -} diff --git a/Content.Shared/Vehicle/SharedVehicleSystem.Rider.cs b/Content.Shared/Vehicle/SharedVehicleSystem.Rider.cs deleted file mode 100644 index 3acd823c73..0000000000 --- a/Content.Shared/Vehicle/SharedVehicleSystem.Rider.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Content.Shared.Hands; -using Content.Shared.Physics.Pull; -using Content.Shared.Vehicle.Components; -using Robust.Shared.GameStates; - -namespace Content.Shared.Vehicle; - -public abstract partial class SharedVehicleSystem -{ - private void InitializeRider() - { - SubscribeLocalEvent(OnRiderGetState); - SubscribeLocalEvent(OnVirtualItemDeleted); - SubscribeLocalEvent(OnPullAttempt); - } - - private void OnRiderGetState(EntityUid uid, RiderComponent component, ref ComponentGetState args) - { - args.State = new RiderComponentState() - { - Entity = GetNetEntity(component.Vehicle), - }; - } - - /// - /// Kick the rider off the vehicle if they press q / drop the virtual item - /// - private void OnVirtualItemDeleted(EntityUid uid, RiderComponent component, VirtualItemDeletedEvent args) - { - if (args.BlockingEntity == component.Vehicle) - { - _buckle.TryUnbuckle(uid, uid, true); - } - } - - private void OnPullAttempt(EntityUid uid, RiderComponent component, PullAttemptEvent args) - { - if (component.Vehicle != null) - args.Cancelled = true; - } -} diff --git a/Content.Shared/Vehicle/SharedVehicleSystem.cs b/Content.Shared/Vehicle/SharedVehicleSystem.cs deleted file mode 100644 index 50143ae551..0000000000 --- a/Content.Shared/Vehicle/SharedVehicleSystem.cs +++ /dev/null @@ -1,374 +0,0 @@ -using System.Numerics; -using Content.Shared.Access.Components; -using Content.Shared.Actions; -using Content.Shared.Audio; -using Content.Shared.Buckle; -using Content.Shared.Buckle.Components; -using Content.Shared.Hands; -using Content.Shared.Inventory.VirtualItem; -using Content.Shared.Item; -using Content.Shared.Light.Components; -using Content.Shared.Movement.Components; -using Content.Shared.Movement.Systems; -using Content.Shared.Popups; -using Content.Shared.Tag; -using Content.Shared.Vehicle.Components; -using Robust.Shared.Audio; -using Robust.Shared.Audio.Systems; -using Robust.Shared.Containers; -using Robust.Shared.Network; -using Robust.Shared.Physics.Systems; -using Robust.Shared.Serialization; - -namespace Content.Shared.Vehicle; - -/// -/// Stores the VehicleVisuals and shared event -/// Nothing for a system but these need to be put somewhere in -/// Content.Shared -/// -public abstract partial class SharedVehicleSystem : EntitySystem -{ - [Dependency] private readonly INetManager _netManager = default!; - - [Dependency] protected readonly SharedAppearanceSystem Appearance = default!; - [Dependency] private readonly SharedAudioSystem _audioSystem = default!; - [Dependency] private readonly MovementSpeedModifierSystem _modifier = default!; - [Dependency] private readonly SharedAmbientSoundSystem _ambientSound = default!; - [Dependency] private readonly SharedTransformSystem _transform = default!; - [Dependency] private readonly TagSystem _tagSystem = default!; - [Dependency] private readonly SharedPopupSystem _popupSystem = default!; - [Dependency] private readonly SharedVirtualItemSystem _virtualItemSystem = default!; - [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; - [Dependency] private readonly SharedJointSystem _joints = default!; - [Dependency] private readonly SharedBuckleSystem _buckle = default!; - [Dependency] private readonly SharedMoverController _mover = default!; - - private const string KeySlot = "key_slot"; - - /// - public override void Initialize() - { - base.Initialize(); - InitializeRider(); - - SubscribeLocalEvent(OnVehicleStartup); - SubscribeLocalEvent(OnBuckleChange); - SubscribeLocalEvent(OnHonkAction); - SubscribeLocalEvent(OnEntInserted); - SubscribeLocalEvent(OnEntRemoved); - SubscribeLocalEvent(OnRefreshMovementSpeedModifiers); - SubscribeLocalEvent(OnMoveEvent); - SubscribeLocalEvent(OnGetAdditionalAccess); - - SubscribeLocalEvent(OnGettingPickedUpAttempt); - } - - /// - /// This just controls whether the wheels are turning. - /// - public override void Update(float frameTime) - { - var vehicleQuery = EntityQueryEnumerator(); - while (vehicleQuery.MoveNext(out var uid, out var vehicle, out var mover)) - { - if (!vehicle.AutoAnimate) - continue; - - // Why is this updating appearance data every tick, instead of when it needs to be updated??? - - if (_mover.GetVelocityInput(mover).Sprinting == Vector2.Zero) - { - UpdateAutoAnimate(uid, false); - continue; - } - - UpdateAutoAnimate(uid, true); - } - } - - private void OnVehicleStartup(EntityUid uid, VehicleComponent component, ComponentStartup args) - { - UpdateDrawDepth(uid, 2); - - // This code should be purged anyway but with that being said this doesn't handle components being changed. - if (TryComp(uid, out var strap)) - { - component.BaseBuckleOffset = strap.BuckleOffsetClamped; - strap.BuckleOffset = Vector2.Zero; - } - - _modifier.RefreshMovementSpeedModifiers(uid); - } - - /// - /// Give the user the rider component if they're buckling to the vehicle, - /// otherwise remove it. - /// - private void OnBuckleChange(EntityUid uid, VehicleComponent component, ref BuckleChangeEvent args) - { - // Add Rider - if (args.Buckling) - { - if (component.UseHand == true) - { - // Add a virtual item to rider's hand, unbuckle if we can't. - if (!_virtualItemSystem.TrySpawnVirtualItemInHand(uid, args.BuckledEntity)) - { - _buckle.TryUnbuckle(uid, uid, true); - return; - } - } - // Set up the rider and vehicle with each other - EnsureComp(uid); - var rider = EnsureComp(args.BuckledEntity); - component.Rider = args.BuckledEntity; - component.LastRider = component.Rider; - Dirty(component); - Appearance.SetData(uid, VehicleVisuals.HideRider, true); - - _mover.SetRelay(args.BuckledEntity, uid); - rider.Vehicle = uid; - - // Update appearance stuff, add actions - UpdateBuckleOffset(uid, Transform(uid), component); - if (TryComp(uid, out var mover)) - UpdateDrawDepth(uid, GetDrawDepth(Transform(uid), component, mover.RelativeRotation.Degrees)); - - if (TryComp(args.BuckledEntity, out var actions) && TryComp(uid, out var flashlight)) - { - _actionsSystem.AddAction(args.BuckledEntity, ref flashlight.ToggleActionEntity, flashlight.ToggleAction, uid, actions); - } - - if (component.HornSound != null) - { - _actionsSystem.AddAction(args.BuckledEntity, ref component.HornActionEntity, component.HornAction, uid, actions); - } - - _joints.ClearJoints(args.BuckledEntity); - - _tagSystem.AddTag(uid, "DoorBumpOpener"); - - return; - } - - // Remove rider - - // Clean up actions and virtual items - _actionsSystem.RemoveProvidedActions(args.BuckledEntity, uid); - - if (component.UseHand == true) - _virtualItemSystem.DeleteInHandsMatching(args.BuckledEntity, uid); - - - // Entity is no longer riding - RemComp(args.BuckledEntity); - RemComp(args.BuckledEntity); - _tagSystem.RemoveTag(uid, "DoorBumpOpener"); - - Appearance.SetData(uid, VehicleVisuals.HideRider, false); - // Reset component - component.Rider = null; - Dirty(component); - } - - /// - /// This fires when the rider presses the honk action - /// - private void OnHonkAction(EntityUid uid, VehicleComponent vehicle, HonkActionEvent args) - { - if (args.Handled || vehicle.HornSound == null) - return; - - // TODO: Need audio refactor maybe, just some way to null it when the stream is over. - // For now better to just not loop to keep the code much cleaner. - vehicle.HonkPlayingStream = _audioSystem.PlayPredicted(vehicle.HornSound, uid, uid)?.Entity; - args.Handled = true; - } - - /// - /// Handle adding keys to the ignition, give stuff the InVehicleComponent so it can't be picked - /// up by people not in the vehicle. - /// - private void OnEntInserted(EntityUid uid, VehicleComponent component, EntInsertedIntoContainerMessage args) - { - if (args.Container.ID != KeySlot || - !_tagSystem.HasTag(args.Entity, "VehicleKey")) - return; - - // Enable vehicle - var inVehicle = EnsureComp(args.Entity); - inVehicle.Vehicle = component; - - component.HasKey = true; - - var msg = Loc.GetString("vehicle-use-key", - ("keys", args.Entity), ("vehicle", uid)); - if (_netManager.IsServer) - _popupSystem.PopupEntity(msg, uid, args.OldParent, PopupType.Medium); - - // Audiovisual feedback - _ambientSound.SetAmbience(uid, true); - _modifier.RefreshMovementSpeedModifiers(uid); - } - - /// - /// Turn off the engine when key is removed. - /// - private void OnEntRemoved(EntityUid uid, VehicleComponent component, EntRemovedFromContainerMessage args) - { - if (args.Container.ID != KeySlot || !RemComp(args.Entity)) - return; - - // Disable vehicle - component.HasKey = false; - _ambientSound.SetAmbience(uid, false); - _modifier.RefreshMovementSpeedModifiers(uid); - } - - private void OnRefreshMovementSpeedModifiers(EntityUid uid, VehicleComponent component, RefreshMovementSpeedModifiersEvent args) - { - if (!component.HasKey) - { - args.ModifySpeed(0f, 0f); - } - } - - // TODO: Shitcode, needs to use sprites instead of actual offsets. - private void OnMoveEvent(EntityUid uid, VehicleComponent component, ref MoveEvent args) - { - if (args.NewRotation == args.OldRotation) - return; - - // This first check is just for safety - if (component.AutoAnimate && !HasComp(uid)) - { - UpdateAutoAnimate(uid, false); - return; - } - - UpdateBuckleOffset(uid, args.Component, component); - if (TryComp(uid, out var mover)) - UpdateDrawDepth(uid, GetDrawDepth(args.Component, component, mover.RelativeRotation)); - } - - private void OnGettingPickedUpAttempt(EntityUid uid, InVehicleComponent component, GettingPickedUpAttemptEvent args) - { - if (component.Vehicle == null || component.Vehicle.Rider != null && component.Vehicle.Rider != args.User) - args.Cancel(); - } - - /// - /// Depending on which direction the vehicle is facing, - /// change its draw depth. Vehicles can choose between special drawdetph - /// when facing north or south. East and west are easy. - /// - private int GetDrawDepth(TransformComponent xform, VehicleComponent component, Angle cameraAngle) - { - var itemDirection = cameraAngle.GetDir() switch - { - Direction.South => xform.LocalRotation.GetDir(), - Direction.North => xform.LocalRotation.RotateDir(Direction.North), - Direction.West => xform.LocalRotation.RotateDir(Direction.East), - Direction.East => xform.LocalRotation.RotateDir(Direction.West), - _ => Direction.South - }; - - return itemDirection switch - { - Direction.North => component.NorthOver - ? (int) DrawDepth.DrawDepth.Doors - : (int) DrawDepth.DrawDepth.WallMountedItems, - Direction.South => component.SouthOver - ? (int) DrawDepth.DrawDepth.Doors - : (int) DrawDepth.DrawDepth.WallMountedItems, - Direction.West => component.WestOver - ? (int) DrawDepth.DrawDepth.Doors - : (int) DrawDepth.DrawDepth.WallMountedItems, - Direction.East => component.EastOver - ? (int) DrawDepth.DrawDepth.Doors - : (int) DrawDepth.DrawDepth.WallMountedItems, - _ => (int) DrawDepth.DrawDepth.WallMountedItems - }; - } - - - /// - /// Change the buckle offset based on what direction the vehicle is facing and - /// teleport any buckled entities to it. This is the most crucial part of making - /// buckled vehicles work. - /// - private void UpdateBuckleOffset(EntityUid uid, TransformComponent xform, VehicleComponent component) - { - if (!TryComp(uid, out var strap)) - return; - - // TODO: Strap should handle this but buckle E/C moment. - var oldOffset = strap.BuckleOffset; - - strap.BuckleOffset = xform.LocalRotation.Degrees switch - { - < 45f => new(0, component.SouthOverride), - <= 135f => component.BaseBuckleOffset, - < 225f => new(0, component.NorthOverride), - <= 315f => new(component.BaseBuckleOffset.X * -1, component.BaseBuckleOffset.Y), - _ => new(0, component.SouthOverride) - }; - - if (!oldOffset.Equals(strap.BuckleOffset)) - Dirty(strap); - - foreach (var buckledEntity in strap.BuckledEntities) - { - var buckleXform = Transform(buckledEntity); - _transform.SetLocalPositionNoLerp(buckleXform, strap.BuckleOffsetClamped); - } - } - - private void OnGetAdditionalAccess(EntityUid uid, VehicleComponent component, ref GetAdditionalAccessEvent args) - { - if (component.Rider == null) - return; - args.Entities.Add(component.Rider.Value); - } - - /// - /// Set the draw depth for the sprite. - /// - private void UpdateDrawDepth(EntityUid uid, int drawDepth) - { - Appearance.SetData(uid, VehicleVisuals.DrawDepth, drawDepth); - } - - /// - /// Set whether the vehicle's base layer is animating or not. - /// - private void UpdateAutoAnimate(EntityUid uid, bool autoAnimate) - { - Appearance.SetData(uid, VehicleVisuals.AutoAnimate, autoAnimate); - } -} - -/// -/// Stores the vehicle's draw depth mostly -/// -[Serializable, NetSerializable] -public enum VehicleVisuals : byte -{ - /// - /// What layer the vehicle should draw on (assumed integer) - /// - DrawDepth, - /// - /// Whether the wheels should be turning - /// - AutoAnimate, - HideRider -} - -/// -/// Raised when someone honks a vehicle horn -/// -public sealed partial class HonkActionEvent : InstantActionEvent -{ -} diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index f8f8021e86..89f0e04f5a 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -27,9 +27,6 @@ trait-pirate-accent-desc = You can't stop speaking like a pirate! trait-accentless-name = Accentless trait-accentless-desc = You don't have the accent that your species would usually have -trait-wheelchair-bound-name = Wheelchair Bound -trait-wheelchair-bound-desc = You cannot move without your wheelchair. Wheelchair included. - trait-frontal-lisp-name = Frontal Lisp trait-frontal-lisp-desc = You thpeak with a lithp diff --git a/Resources/Locale/en-US/vehicle/vehicle.ftl b/Resources/Locale/en-US/vehicle/vehicle.ftl deleted file mode 100644 index 0fb99d28c7..0000000000 --- a/Resources/Locale/en-US/vehicle/vehicle.ftl +++ /dev/null @@ -1,3 +0,0 @@ -vehicle-use-key = You use {THE($keys)} to start {THE($vehicle)}. - -vehicle-slot-component-slot-name-keys = Keys diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml index 3dd05ec3a7..771a447ab8 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml @@ -118,16 +118,6 @@ category: Fun group: market -- type: cargoProduct - id: FunATV - icon: - sprite: Objects/Vehicles/atv.rsi - state: vehicle - product: CrateFunATV - cost: 1500 - category: Fun - group: market - - type: cargoProduct id: FunSadTromboneImplants icon: diff --git a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml index 6c9c14b2bd..d5e87fe0b5 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml @@ -181,17 +181,6 @@ - id: DiceBag amount: 6 -- type: entity - id: CrateFunATV - parent: CrateLivestock - name: ATV crate - description: An Absolutely Taxable Vehicle to help cargo with hauling. - components: - - type: StorageFill - contents: - - id: VehicleATV - - id: VehicleKeyATV - - type: entity id: CrateFunSadTromboneImplants parent: CrateGenericSteel @@ -258,17 +247,6 @@ - id: WeaponWaterPistol amount: 4 -- type: entity - id: CrateFunSyndicateSegway - parent: CrateLivestock - name: Syndicate segway crate - description: A crate containing a two-wheeler that will help you escape from the security officers. Or not. - components: - - type: StorageFill - contents: - - id: VehicleSyndicateSegway - - id: VehicleKeySyndicateSegway - - type: entity id: CrateFunBoxing parent: CrateGenericSteel @@ -320,7 +298,6 @@ - id: MrDips orGroup: Giftpool - id: RevolverCapGun - - id: VehicleUnicycleFolded - id: ClothingShoesClownLarge - id: ClothingHeadHatMagician - id: BeachBall diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index 7735d93643..b4e0604ca9 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -1431,22 +1431,6 @@ categories: - UplinkMisc -- type: listing - id: UplinkSyndicateSegwayCrate - name: uplink-syndicate-segway-crate-name - description: uplink-syndicate-segway-crate-desc - icon: { sprite: /Textures/Objects/Vehicles/syndicatesegway.rsi, state: icon } - productEntity: CrateFunSyndicateSegway - cost: - Telecrystal: 5 - categories: - - UplinkMisc - conditions: - - !type:BuyerWhitelistCondition - blacklist: - components: - - SurplusBundle - - type: listing id: UplinkBribe name: uplink-bribe-name diff --git a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml index 3e08380672..d5976d1dda 100644 --- a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml +++ b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml @@ -222,7 +222,6 @@ - HolosignProjector - Plunger - LightReplacer - - JanicartKeys components: - LightReplacer - type: ItemMapper diff --git a/Resources/Prototypes/Entities/Markers/Spawners/vehicles.yml b/Resources/Prototypes/Entities/Markers/Spawners/vehicles.yml deleted file mode 100644 index ee73528920..0000000000 --- a/Resources/Prototypes/Entities/Markers/Spawners/vehicles.yml +++ /dev/null @@ -1,83 +0,0 @@ -- type: entity - name: Secway Spawner - id: SpawnVehicleSecway - parent: MarkerBase - components: - - type: Sprite - layers: - - state: green - - sprite: Objects/Vehicles/secway.rsi - state: keys - - type: ConditionalSpawner - prototypes: - - VehicleSecway - -- type: entity - name: Janicart Spawner - id: SpawnVehicleJanicart - parent: MarkerBase - components: - - type: Sprite - layers: - - state: green - - sprite: Objects/Vehicles/janicart.rsi - state: keys - - type: ConditionalSpawner - prototypes: - - VehicleJanicart - -- type: entity - name: ATV Spawner - id: SpawnVehicleATV - parent: MarkerBase - components: - - type: Sprite - layers: - - state: green - - sprite: Objects/Vehicles/atv.rsi - state: keys - - type: ConditionalSpawner - prototypes: - - VehicleATV - -- type: entity - name: Motobike Spawner - id: SpawnVehicleMotobike - parent: MarkerBase - components: - - type: Sprite - layers: - - state: green - - sprite: Objects/Vehicles/motorbike.rsi - state: keys - - type: ConditionalSpawner - prototypes: - - VehicleSkeletonMotorcycle - -- type: entity - name: Wheelchair Spawner - id: SpawnVehicleWheelchair - parent: MarkerBase - components: - - type: Sprite - layers: - - state: green - - sprite: Objects/Vehicles/wheelchair.rsi - state: vehicle - - type: ConditionalSpawner - prototypes: - - VehicleWheelchair - -- type: entity - name: Wheelchair [Folded] Spawner - id: SpawnVehicleWheelchairFolded - parent: MarkerBase - components: - - type: Sprite - layers: - - state: green - - sprite: Objects/Vehicles/wheelchair.rsi - state: vehicle_folded - - type: ConditionalSpawner - prototypes: - - VehicleWheelchairFolded \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index cd7882d3d1..42b7ff9e21 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -108,77 +108,6 @@ proto: robot - type: ZombieImmune -- type: entity - parent: [ MobSiliconBase, BaseVehicle] - id: MobSiliconBaseVehicle # for vehicles - abstract: true - components: - - type: NoSlip - - type: GhostTakeoverAvailable - - type: GhostRole - makeSentient: true - - type: UnpoweredFlashlight - - type: PointLight - enabled: false - radius: 3.5 - softness: 2 - mask: /Textures/Effects/LightMasks/cone.png - autoRot: true - -- type: entity - parent: MobSiliconBaseVehicle - id: MobTaxiBot - name: taxibot - description: Give a ride? - components: - - type: Sprite - sprite: Mobs/Silicon/Bots/taxibot.rsi - layers: - - state: taxibot - map: ["enum.VehicleVisualLayers.AutoAnimate"] - - type: GhostRole - name: ghost-role-information-taxibot-name - description: ghost-role-information-taxibot-description - - type: Strap - buckleOffset: "0, 0" - maxBuckleDistance: 1 - - type: Construction - graph: TaxiBot - node: bot - -- type: entity - parent: MobSiliconBaseVehicle - id: MobSupplyBot - name: supplybot - description: Delivers cargo! - components: - - type: Sprite - sprite: Mobs/Silicon/Bots/supplybot.rsi - layers: - - state: supplybot - map: ["enum.VehicleVisualLayers.AutoAnimate"] - - type: GhostRole - name: ghost-role-information-supplybot-name - description: ghost-role-information-supplybot-description - - type: Construction - graph: SupplyBot - node: bot - - type: Storage - maxItemSize: Huge - grid: - - 0,0,9,3 - - type: Access - groups: - - Cargo - - type: UserInterface - interfaces: - - key: enum.StorageUiKey.Key - type: StorageBoundUserInterface - - type: ContainerContainer - containers: - storagebase: !type:Container - ents: [] - - type: entity parent: MobSiliconBase id: MobHonkBot @@ -350,12 +279,12 @@ interactSuccessSound: path: /Audio/Ambience/Objects/periodic_beep.ogg - type: ShowHealthBars - damageContainers: + damageContainers: - Biological - type: ShowHealthIcons - damageContainers: + damageContainers: - Biological - + - type: entity parent: MobSiliconBase id: MobMimeBot diff --git a/Resources/Prototypes/Entities/Objects/Vehicles/actions.yml b/Resources/Prototypes/Entities/Objects/Vehicles/actions.yml deleted file mode 100644 index cee03f2d25..0000000000 --- a/Resources/Prototypes/Entities/Objects/Vehicles/actions.yml +++ /dev/null @@ -1,10 +0,0 @@ -- type: entity - id: ActionVehicleHorn - name: Honk - description: Honk! - noSpawn: true - components: - - type: InstantAction - useDelay: 3.4 - icon: Objects/Fun/bikehorn.rsi/icon.png - event: !type:HonkActionEvent diff --git a/Resources/Prototypes/Entities/Objects/Vehicles/buckleable.yml b/Resources/Prototypes/Entities/Objects/Vehicles/buckleable.yml deleted file mode 100644 index cf30f69754..0000000000 --- a/Resources/Prototypes/Entities/Objects/Vehicles/buckleable.yml +++ /dev/null @@ -1,462 +0,0 @@ -- type: entity - id: BaseVehicle - save: false - abstract: true - components: - - type: AmbientSound - sound: "/Audio/Effects/Vehicle/vehicleengineidle.ogg" - range: 10 - volume: -10 - enabled: false - - type: MovementSpeedModifier - weightlessModifier: 0 - acceleration: 2 - friction: 2 - frictionNoInput: 6 - baseWalkSpeed: 4.5 - baseSprintSpeed: 6 - - type: Repairable - fuelcost: 20 - doAfterDelay: 20 - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Metallic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 600 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 300 - behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - - !type:PlaySoundBehavior - sound: - collection: MetalGlassBreak - - !type:ExplodeBehavior - -- type: entity - parent: BaseVehicle - id: BaseVehicleRideable - abstract: true - name: Vehicle - components: - - type: Strap - buckleOffset: "0.10, 0.36" - maxBuckleDistance: 1 - - type: InputMover - - type: InteractionOutline - - type: Vehicle - - type: Pullable - - type: Physics - bodyType: KinematicController - - type: Clickable - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.4 - density: 360 - restitution: 0.0 - mask: - - MobMask - layer: - - TableLayer - - type: Appearance - - type: ItemSlots - slots: - key_slot: #this slot name is important - name: vehicle-slot-component-slot-name-keys - whitelist: - requireAll: true - tags: - - VehicleKey - insertSound: - path: /Audio/Effects/Vehicle/vehiclestartup.ogg - params: - volume: -3 - - type: StaticPrice - price: 750 # Grand Theft Auto. - -- type: entity - id: VehicleJanicart - parent: BaseVehicleRideable - name: janicart - description: The janitor's trusty steed. - components: - - type: Vehicle - southOver: true - westOver: true - eastOver: true - northOverride: -0.15 - southOverride: 0.22 - - type: Sprite - sprite: Objects/Vehicles/janicart.rsi - layers: - - state: vehicle - map: ["enum.VehicleVisualLayers.AutoAnimate"] - noRot: true - - type: UnpoweredFlashlight - - type: PointLight - enabled: false - radius: 3.5 - softness: 2 - mask: /Textures/Effects/LightMasks/cone.png - autoRot: true - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 500 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 250 - behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - - !type:PlaySoundBehavior - sound: - collection: MetalGlassBreak - - !type:ExplodeBehavior - - !type:SpawnEntitiesBehavior # in future should also emit a cloud of hot gas - spawn: - VehicleJanicartDestroyed: - min: 1 - max: 1 - - type: ItemSlots - slots: - key_slot: - name: vehicle-slot-component-slot-name-keys - whitelist: - requireAll: true - tags: - - VehicleKey - - JanicartKeys - insertSound: - path: /Audio/Effects/Vehicle/vehiclestartup.ogg - params: - volume: -3 - trashbag_slot: - name: janitorial-trolley-slot-component-slot-name-trashbag - whitelist: - tags: - - TrashBag - - type: ItemMapper - mapLayers: - storage: - whitelist: - tags: - - TrashBag - sprite: Objects/Vehicles/janicart.rsi - - type: Appearance - -- type: entity - id: VehicleJanicartDestroyed - parent: MachineFrameDestroyed - name: destroyed janicart - components: - - type: Sprite - sprite: Objects/Vehicles/janicart.rsi - state: destroyed - -- type: entity - id: VehicleSecway - parent: BaseVehicleRideable - name: secway - description: The future of transportation. Popularized by St. James, the patron saint of security officers and internet forum moderators. - components: - - type: Vehicle - northOver: true - westOver: true - eastOver: true - northOverride: -0.1 - southOverride: 0.1 - hornSound: - path: /Audio/Effects/Vehicle/policesiren.ogg - - type: Sprite - sprite: Objects/Vehicles/secway.rsi - layers: - - state: vehicle - map: ["enum.VehicleVisualLayers.AutoAnimate"] - noRot: true - - type: Strap - buckleOffset: "0.15, -0.05" - maxBuckleDistance: 1 - - type: MovementSpeedModifier - acceleration: 1 - friction: 1 - baseWalkSpeed: 4.5 - baseSprintSpeed: 6 - - type: Armor - modifiers: - coefficients: - Blunt: 0.8 - Slash: 0.6 - Piercing: 0.85 - - type: ItemSlots - slots: - key_slot: - name: vehicle-slot-component-slot-name-keys - whitelist: - requireAll: true - tags: - - VehicleKey - - SecwayKeys - insertSound: - path: /Audio/Effects/Vehicle/vehiclestartup.ogg - params: - volume: -3 - - type: StealTarget - stealGroup: VehicleSecway - -- type: entity - parent: BaseVehicleRideable - id: VehicleATV - name: ATV - description: All-Tile Vehicle. - components: - - type: Vehicle - southOver: true - northOver: true - northOverride: -0.1 - southOverride: 0.1 - - type: Sprite - sprite: Objects/Vehicles/atv.rsi - layers: - - state: vehicle - map: ["enum.VehicleVisualLayers.AutoAnimate"] - noRot: true - - type: RandomMetadata - descriptionSegments: [ATVDescriptions] - - type: MovementSpeedModifier - acceleration: 1 - friction: 1 - baseWalkSpeed: 4.5 - baseSprintSpeed: 7 - - type: Strap - buckleOffset: "0.1, -0.05" - maxBuckleDistance: 1 - - type: UnpoweredFlashlight - - type: PointLight - enabled: false - radius: 3.5 - softness: 2 - mask: /Textures/Effects/LightMasks/cone.png - autoRot: true - - type: ItemSlots - slots: - key_slot: - name: vehicle-slot-component-slot-name-keys - whitelist: - requireAll: true - tags: - - VehicleKey - - ATVKeys - insertSound: - path: /Audio/Effects/Vehicle/vehiclestartup.ogg - params: - volume: -3 - -- type: entity - id: VehicleSyndicateSegway - parent: BaseVehicleRideable - name: syndicate segway - description: Be an enemy of the corporation, in style. - components: - - type: Vehicle - southOver: true - westOver: true - eastOver: true - northOverride: -0.1 - southOverride: 0.1 - hornSound: - path: /Audio/Effects/Vehicle/policesiren.ogg - - type: Sprite - sprite: Objects/Vehicles/syndicatesegway.rsi - layers: - - state: vehicle - map: ["enum.VehicleVisualLayers.AutoAnimate"] - noRot: true - - type: Strap - buckleOffset: "0.15, -0.05" - maxBuckleDistance: 1 - - type: Armor - modifiers: - coefficients: - Blunt: 0.8 - Slash: 0.6 - Piercing: 0.85 - - type: ItemSlots - slots: - key_slot: - name: vehicle-slot-component-slot-name-keys - whitelist: - requireAll: true - tags: - - VehicleKey - - SyndicateSegwayKeys - insertSound: - path: /Audio/Effects/Vehicle/vehiclestartup.ogg - params: - volume: -3 - -- type: entity - parent: BaseVehicleRideable - id: VehicleSkeletonMotorcycle - name: skeleton motorcycle - description: Bad to the Bone. - components: - - type: Vehicle - southOver: true - northOver: true - northOverride: -0.1 - southOverride: 0.1 - - type: Sprite - sprite: Objects/Vehicles/motorbike.rsi - layers: - - state: vehicle - map: ["enum.VehicleVisualLayers.AutoAnimate"] - noRot: true - - type: Strap - buckleOffset: "0.1, -0.05" - maxBuckleDistance: 1 - - type: MovementSpeedModifier - acceleration: 2 - friction: 1.5 - baseWalkSpeed: 4.5 - baseSprintSpeed: 7 - - type: UnpoweredFlashlight - - type: PointLight - enabled: false - radius: 3.5 - softness: 2 - mask: /Textures/Effects/LightMasks/cone.png - autoRot: true - - type: ItemSlots - slots: - key_slot: - name: vehicle-slot-component-slot-name-keys - whitelist: - requireAll: true - tags: - - VehicleKey - - SkeletonMotorcycleKeys - insertSound: - path: /Audio/Effects/Vehicle/vehiclestartup.ogg - params: - volume: -3 - -- type: entity - id: VehicleUnicycle - parent: [BaseVehicleRideable, BaseFoldable, BaseItem] - name: unicycle - description: It only has one wheel! - components: - - type: Vehicle - northOver: true - southOver: true - northOverride: -0.15 - southOverride: 0.15 - hasKey: true - hornSound: - path: /Audio/Effects/Vehicle/bicyclebell.ogg - - type: Sprite - sprite: Objects/Vehicles/unicycle.rsi - layers: - - state: vehicle - map: ["enum.VehicleVisualLayers.AutoAnimate", "unfoldedLayer"] - - state: vehicle_folded - map: ["foldedLayer"] - visible: false - noRot: true - - type: Strap - buckleOffset: "0.1, -0.05" - maxBuckleDistance: 1 - - type: MovementSpeedModifier - acceleration: 1 - friction: 0.8 - baseWalkSpeed: 3.5 - baseSprintSpeed: 4.3 - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 200 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 240 - behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - - !type:PlaySoundBehavior - sound: - collection: MetalBreak - -- type: entity - parent: VehicleUnicycle - id: VehicleUnicycleFolded - suffix: folded - components: - - type: Foldable - folded: true - -- type: entity - id: VehicleWheelchair - parent: [BaseVehicleRideable, BaseFoldable, BaseItem] - name: wheelchair - description: A chair with big wheels. It looks like you can move in these on your own. - components: - - type: Vehicle - northOver: true - hasKey: true - northOverride: 0 - southOverride: 0 - - type: Sprite - sprite: Objects/Vehicles/wheelchair.rsi - layers: - - state: vehicle - map: ["enum.VehicleVisualLayers.AutoAnimate", "unfoldedLayer"] - - state: vehicle_folded - map: ["foldedLayer"] - visible: false - noRot: true - - type: MovementSpeedModifier - baseWalkSpeed: 2 - baseSprintSpeed: 2 - - type: Strap - buckleOffset: "0,0" - maxBuckleDistance: 1 - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.2 - density: 360 - restitution: 0.0 - mask: - - MobMask - layer: - - TableLayer - - type: StaticPrice - price: 70 - -- type: entity - parent: VehicleWheelchair - id: VehicleWheelchairFolded - suffix: folded - components: - - type: Foldable - folded: true diff --git a/Resources/Prototypes/Entities/Objects/Vehicles/keys.yml b/Resources/Prototypes/Entities/Objects/Vehicles/keys.yml deleted file mode 100644 index 468f1aa3a5..0000000000 --- a/Resources/Prototypes/Entities/Objects/Vehicles/keys.yml +++ /dev/null @@ -1,86 +0,0 @@ -- type: entity - parent: BaseItem - id: VehicleKeyJanicart - name: janicart keys - description: Interesting design. - components: - - type: Item - size: Tiny - - type: Tag - tags: - - VehicleKey - - JanicartKeys - - type: Sprite - sprite: Objects/Vehicles/janicart.rsi - state: keys - -- type: entity - parent: VehicleKeyJanicart - id: VehicleKeySecway - name: secway keys - description: The keys to the future. - components: - - type: Tag - tags: - - VehicleKey - - SecwayKeys - - type: Sprite - sprite: Objects/Vehicles/secway.rsi - state: keys - -- type: entity - parent: VehicleKeyJanicart - id: VehicleKeyATV - name: ATV keys - description: Think this looks like just one key? ATV keys means "actually two vehicle keys." - components: - - type: Tag - tags: - - VehicleKey - - ATVKeys - - type: Sprite - sprite: Objects/Vehicles/atv.rsi - state: keys - -- type: entity - parent: VehicleKeyATV - id: VehicleKeySkeleton - name: vehicle skeleton keys - description: Unlock any vehicle. - components: - - type: Tag - tags: - - VehicleKey - - JanicartKeys - - SecwayKeys - - ATVKeys - - SyndicateSegwayKeys - - SkeletonMotorcycleKeys - -- type: entity - parent: VehicleKeyJanicart - id: VehicleKeySyndicateSegway - name: syndicate segway keys - description: Patterned after the iconic EMAG design. - components: - - type: Tag - tags: - - VehicleKey - - SyndicateSegwayKeys - - type: Sprite - sprite: Objects/Vehicles/syndicatesegway.rsi - state: keys - -- type: entity - parent: VehicleKeyATV - id: VehicleKeySkeletonMotorcycle - name: skeleton motorcycle keys - description: A beautiful set of keys adorned with a skull. - components: - - type: Tag - tags: - - VehicleKey - - SkeletonMotorcycleKeys - - type: Sprite - sprite: Objects/Vehicles/motorbike.rsi - state: keys diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index e48d34e19c..0c73a17b2b 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -134,7 +134,6 @@ - TrashBag - PowerCellSmall - PowerCellMedium - - VehicleWheelchairFolded - RollerBedSpawnFolded - CheapRollerBedSpawnFolded - EmergencyRollerBedSpawnFolded @@ -812,7 +811,6 @@ - PillCanister - BodyBag - ChemistryEmptyBottle01 - - VehicleWheelchairFolded - RollerBedSpawnFolded - CheapRollerBedSpawnFolded - EmergencyRollerBedSpawnFolded diff --git a/Resources/Prototypes/Objectives/stealTargetGroups.yml b/Resources/Prototypes/Objectives/stealTargetGroups.yml index 9b659da55e..c6f6e6c8ca 100644 --- a/Resources/Prototypes/Objectives/stealTargetGroups.yml +++ b/Resources/Prototypes/Objectives/stealTargetGroups.yml @@ -286,13 +286,6 @@ sprite: Structures/Machines/fax_machine.rsi state: icon -- type: stealTargetGroup - id: VehicleSecway - name: secway - sprite: - sprite: Objects/Vehicles/secway.rsi - state: icon - - type: stealTargetGroup id: ChemDispenser name: chemical dispenser diff --git a/Resources/Prototypes/Objectives/thief.yml b/Resources/Prototypes/Objectives/thief.yml index 29432e1736..db1eb3111e 100644 --- a/Resources/Prototypes/Objectives/thief.yml +++ b/Resources/Prototypes/Objectives/thief.yml @@ -379,18 +379,6 @@ - type: Objective difficulty: 2 -- type: entity - noSpawn: true - parent: BaseThiefStealStructureObjective - id: VehicleSecwayStealObjective - components: - - type: NotJobRequirement - job: SecurityOfficer - - type: StealCondition - stealGroup: VehicleSecway - - type: Objective - difficulty: 1 - - type: entity noSpawn: true parent: BaseThiefStealStructureObjective diff --git a/Resources/Prototypes/Procedural/salvage_rewards.yml b/Resources/Prototypes/Procedural/salvage_rewards.yml index 763ae8bd4e..7259d71529 100644 --- a/Resources/Prototypes/Procedural/salvage_rewards.yml +++ b/Resources/Prototypes/Procedural/salvage_rewards.yml @@ -10,7 +10,6 @@ CrateEngineeringAMEJar: 0.25 CrateFoodPizzaLarge: 0.25 CrateFoodSoftdrinks: 0.25 - CrateFunATV: 0.25 CrateFunInstrumentsVariety: 0.25 CrateSalvageEquipment: 0.25 RandomArtifactSpawner: 0.25 diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/bots/supplybot.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/bots/supplybot.yml deleted file mode 100644 index efabb849bb..0000000000 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/bots/supplybot.yml +++ /dev/null @@ -1,23 +0,0 @@ -- type: constructionGraph - id: SupplyBot - start: start - graph: - - node: start - edges: - - to: bot - steps: - - tag: ProximitySensor - icon: - sprite: Objects/Misc/proximity_sensor.rsi - state: icon - name: proximity sensor - - tag: BorgHead - icon: - sprite: Objects/Specific/Robotics/cyborg_parts.rsi - state: borg_head - name: borg head - doAfter: 1 - - material: Steel - amount: 10 - - node: bot - entity: MobSupplyBot diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/bots/taxibot.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/bots/taxibot.yml deleted file mode 100644 index 4be8848fec..0000000000 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/bots/taxibot.yml +++ /dev/null @@ -1,29 +0,0 @@ -- type: constructionGraph - id: TaxiBot - start: start - graph: - - node: start - edges: - - to: bot - steps: - - tag: ProximitySensor - icon: - sprite: Objects/Misc/proximity_sensor.rsi - state: icon - name: proximity sensor - - tag: BorgHead - icon: - sprite: Objects/Specific/Robotics/cyborg_parts.rsi - state: borg_head - name: borg head - doAfter: 1 - - tag: BorgArm - icon: - sprite: Mobs/Silicon/drone.rsi - state: l_hand - name: borg arm - doAfter: 2 - - material: Steel - amount: 5 - - node: bot - entity: MobTaxiBot diff --git a/Resources/Prototypes/Recipes/Crafting/bots.yml b/Resources/Prototypes/Recipes/Crafting/bots.yml index 55b907a38e..9a70a19c86 100644 --- a/Resources/Prototypes/Recipes/Crafting/bots.yml +++ b/Resources/Prototypes/Recipes/Crafting/bots.yml @@ -24,32 +24,6 @@ sprite: Mobs/Silicon/Bots/honkbot.rsi state: honkbot -- type: construction - name: taxibot - id: taxibot - graph: TaxiBot - startNode: start - targetNode: bot - category: construction-category-utilities - objectType: Item - description: This bot takes people to their destination. - icon: - sprite: Mobs/Silicon/Bots/taxibot.rsi - state: taxibot - -- type: construction - name: supplybot - id: supplybot - graph: SupplyBot - startNode: start - targetNode: bot - category: construction-category-utilities - objectType: Item - description: This bot can be loaded with cargo to make deliveries. - icon: - sprite: Mobs/Silicon/Bots/supplybot.rsi - state: supplybot - - type: construction name: jonkbot id: jonkbot diff --git a/Resources/Prototypes/Recipes/Lathes/medical.yml b/Resources/Prototypes/Recipes/Lathes/medical.yml index 2a3b738782..fbfa0151ba 100644 --- a/Resources/Prototypes/Recipes/Lathes/medical.yml +++ b/Resources/Prototypes/Recipes/Lathes/medical.yml @@ -210,14 +210,6 @@ materials: Plastic: 400 -- type: latheRecipe - id: VehicleWheelchairFolded - result: VehicleWheelchairFolded - completetime: 1 - materials: - Steel: 500 - Plastic: 300 - - type: latheRecipe id: RollerBedSpawnFolded result: RollerBedSpawnFolded diff --git a/Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml b/Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml index ec4c6581de..5d3f84df3c 100644 --- a/Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml +++ b/Resources/Prototypes/Roles/Jobs/Fun/misc_startinggear.yml @@ -1,6 +1,6 @@ #Misc outfit startingGear definitions. -#Skeleton Biker +#Skeleton Biker - Just a skeleton now - type: startingGear id: SkeletonBiker equipment: @@ -13,8 +13,6 @@ shoes: ClothingShoesBootsJack id: PassengerPDA ears: ClothingHeadsetGrey - pocket1: VehicleSkeletonMotorcycle - pocket2: VehicleKeySkeletonMotorcycle innerClothingSkirt: ClothingUniformJumpskirtColorBlack satchel: ClothingBackpackSatchelFilled duffelbag: ClothingBackpackDuffelFilled diff --git a/Resources/Prototypes/Traits/disabilities.yml b/Resources/Prototypes/Traits/disabilities.yml index 3dd6d21d2a..53d481c37e 100644 --- a/Resources/Prototypes/Traits/disabilities.yml +++ b/Resources/Prototypes/Traits/disabilities.yml @@ -54,18 +54,6 @@ components: - type: Muted -- type: trait - id: WheelchairBound - name: trait-wheelchair-bound-name - description: trait-wheelchair-bound-desc - blacklist: - components: - - BorgChassis - components: - - type: BuckleOnMapInit - prototype: VehicleWheelchair - - type: LegsParalyzed - - type: trait id: FrontalLisp name: trait-frontal-lisp-name diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 1d85d96a1a..62f08e0715 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -252,7 +252,7 @@ - type: Tag id: CannonBall - + - type: Tag id: CannonRestrict @@ -686,9 +686,6 @@ - type: Tag id: IntercomElectronics -- type: Tag - id: JanicartKeys - - type: Tag id: JawsOfLife @@ -1148,9 +1145,6 @@ - type: Tag id: UraniumGlassShard -- type: Tag - id: VehicleKey - - type: Tag id: VimPilot diff --git a/Resources/ServerInfo/Guidebook/Service/Janitorial.xml b/Resources/ServerInfo/Guidebook/Service/Janitorial.xml index e715fe919f..dd41ba11bf 100644 --- a/Resources/ServerInfo/Guidebook/Service/Janitorial.xml +++ b/Resources/ServerInfo/Guidebook/Service/Janitorial.xml @@ -20,7 +20,6 @@ You keep things clean, it's a rough job sometimes, but someone's gotta do it. Th ## Additional Equipment - diff --git a/Resources/migration.yml b/Resources/migration.yml index 6b3161c9ad..8c13f4359c 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -177,4 +177,34 @@ HandheldCrewMonitor: null SpyCrewMonitor: null SpyCrewMonitorEmpty: null SyndiCrewMonitor: null -SyndiCrewMonitorEmpty: null \ No newline at end of file +SyndiCrewMonitorEmpty: null + +SpawnVehicleWheelchair: null +SpawnVehicleWheelchairFolded: null +VehicleWheelchair: null +VehicleWheelchairFolded: null +VehicleSecwayStealObjective: null +VehicleKeyJanicart: null +VehicleKeySecway: null +VehicleKeyATV: null +VehicleKeySkeleton: null +VehicleKeySyndicateSegway: null +VehicleKeySkeletonMotorcycle: null +VehicleSecway: null +VehicleATV: null +VehicleSyndicateSegway: null +VehicleSkeletonMotorcycle: null +VehicleUnicycle: null +VehicleUnicycleFolded: null +ActionVehicleHorn: null +CrateFunATV: null +CrateFunSyndicateSegway: null +MobTaxiBot: null +MobSupplyBot: null +SpawnVehicleMotobike: null +SpawnVehicleATV: null +SpawnVehicleSecway: null +SpawnVehicleJanicart: null +VehicleJanicart: null +VehicleJanicartDestroyed: null +