diff --git a/Content.Client/FootPrint/FootPrintsVisualizerSystem.cs b/Content.Client/FootPrint/FootPrintsVisualizerSystem.cs new file mode 100644 index 00000000000..3998d6b3c17 --- /dev/null +++ b/Content.Client/FootPrint/FootPrintsVisualizerSystem.cs @@ -0,0 +1,65 @@ +using Content.Shared.FootPrint; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Shared.Random; + +namespace Content.Client.FootPrint; + +public sealed class FootPrintsVisualizerSystem : VisualizerSystem +{ + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly IRobustRandom _random = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInitialized); + SubscribeLocalEvent(OnShutdown); + } + + private void OnInitialized(EntityUid uid, FootPrintComponent comp, ComponentInit args) + { + if (!TryComp(uid, out var sprite)) + return; + + sprite.LayerMapReserveBlank(FootPrintVisualLayers.Print); + UpdateAppearance(uid, comp, sprite); + } + + private void OnShutdown(EntityUid uid, FootPrintComponent comp, ComponentShutdown args) + { + if (TryComp(uid, out var sprite) + && sprite.LayerMapTryGet(FootPrintVisualLayers.Print, out var layer)) + sprite.RemoveLayer(layer); + } + + private void UpdateAppearance(EntityUid uid, FootPrintComponent component, SpriteComponent sprite) + { + if (!sprite.LayerMapTryGet(FootPrintVisualLayers.Print, out var layer) + || !TryComp(component.PrintOwner, out var printsComponent) + || !TryComp(uid, out var appearance) + || !_appearance.TryGetData(uid, FootPrintVisualState.State, out var printVisuals, appearance)) + return; + + sprite.LayerSetState(layer, new RSI.StateId(printVisuals switch + { + FootPrintVisuals.BareFootPrint => printsComponent.RightStep ? printsComponent.RightBarePrint : printsComponent.LeftBarePrint, + FootPrintVisuals.ShoesPrint => printsComponent.ShoesPrint, + FootPrintVisuals.SuitPrint => printsComponent.SuitPrint, + FootPrintVisuals.Dragging => _random.Pick(printsComponent.DraggingPrint), + _ => throw new ArgumentOutOfRangeException($"Unknown {printVisuals} parameter.") + }), printsComponent.RsiPath); + + if (_appearance.TryGetData(uid, FootPrintVisualState.Color, out var printColor, appearance)) + sprite.LayerSetColor(layer, printColor); + } + + protected override void OnAppearanceChange (EntityUid uid, FootPrintComponent component, ref AppearanceChangeEvent args) + { + if (args.Sprite is not { } sprite) + return; + + UpdateAppearance(uid, component, sprite); + } +} diff --git a/Content.Server/FootPrint/FootPrintsSystem.cs b/Content.Server/FootPrint/FootPrintsSystem.cs new file mode 100644 index 00000000000..0e45acff5cc --- /dev/null +++ b/Content.Server/FootPrint/FootPrintsSystem.cs @@ -0,0 +1,122 @@ +using Content.Server.Atmos.Components; +using Content.Shared.Inventory; +using Content.Shared.Mobs; +using Content.Shared.Mobs.Components; +using Content.Shared.FootPrint; +using Content.Shared.Standing; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; +using Robust.Shared.Map; +using Robust.Shared.Random; + +namespace Content.Server.FootPrint; + +public sealed class FootPrintsSystem : EntitySystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly IMapManager _map = default!; + + [Dependency] private readonly SharedSolutionContainerSystem _solution = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + + private EntityQuery _transformQuery; + private EntityQuery _mobThresholdQuery; + private EntityQuery _appearanceQuery; + private EntityQuery _layingQuery; + + public override void Initialize() + { + base.Initialize(); + + _transformQuery = GetEntityQuery(); + _mobThresholdQuery = GetEntityQuery(); + _appearanceQuery = GetEntityQuery(); + _layingQuery = GetEntityQuery(); + + SubscribeLocalEvent(OnStartupComponent); + SubscribeLocalEvent(OnMove); + } + + private void OnStartupComponent(EntityUid uid, FootPrintsComponent component, ComponentStartup args) + { + component.StepSize = Math.Max(0f, component.StepSize + _random.NextFloat(-0.05f, 0.05f)); + } + + private void OnMove(EntityUid uid, FootPrintsComponent component, ref MoveEvent args) + { + if (component.PrintsColor.A <= 0f + || !_transformQuery.TryComp(uid, out var transform) + || !_mobThresholdQuery.TryComp(uid, out var mobThreshHolds) + || !_map.TryFindGridAt(_transform.GetMapCoordinates((uid, transform)), out var gridUid, out _)) + return; + + var dragging = mobThreshHolds.CurrentThresholdState is MobState.Critical or MobState.Dead + || _layingQuery.TryComp(uid, out var laying) && laying.IsCrawlingUnder; + var distance = (transform.LocalPosition - component.StepPos).Length(); + var stepSize = dragging ? component.DragSize : component.StepSize; + + if (!(distance > stepSize)) + return; + + component.RightStep = !component.RightStep; + + var entity = Spawn(component.StepProtoId, CalcCoords(gridUid, component, transform, dragging)); + var footPrintComponent = EnsureComp(entity); + + footPrintComponent.PrintOwner = uid; + Dirty(entity, footPrintComponent); + + if (_appearanceQuery.TryComp(entity, out var appearance)) + { + _appearance.SetData(entity, FootPrintVisualState.State, PickState(uid, dragging), appearance); + _appearance.SetData(entity, FootPrintVisualState.Color, component.PrintsColor, appearance); + } + + if (!_transformQuery.TryComp(entity, out var stepTransform)) + return; + + stepTransform.LocalRotation = dragging + ? (transform.LocalPosition - component.StepPos).ToAngle() + Angle.FromDegrees(-90f) + : transform.LocalRotation + Angle.FromDegrees(180f); + + component.PrintsColor = component.PrintsColor.WithAlpha(Math.Max(0f, component.PrintsColor.A - component.ColorReduceAlpha)); + component.StepPos = transform.LocalPosition; + + if (!TryComp(entity, out var solutionContainer) + || !_solution.ResolveSolution((entity, solutionContainer), footPrintComponent.SolutionName, ref footPrintComponent.Solution, out var solution) + || string.IsNullOrWhiteSpace(component.ReagentToTransfer) || solution.Volume >= 1) + return; + + _solution.TryAddReagent(footPrintComponent.Solution.Value, component.ReagentToTransfer, 1, out _); + } + + private EntityCoordinates CalcCoords(EntityUid uid, FootPrintsComponent component, TransformComponent transform, bool state) + { + if (state) + return new EntityCoordinates(uid, transform.LocalPosition); + + var offset = component.RightStep + ? new Angle(Angle.FromDegrees(180f) + transform.LocalRotation).RotateVec(component.OffsetPrint) + : new Angle(transform.LocalRotation).RotateVec(component.OffsetPrint); + + return new EntityCoordinates(uid, transform.LocalPosition + offset); + } + + private FootPrintVisuals PickState(EntityUid uid, bool dragging) + { + var state = FootPrintVisuals.BareFootPrint; + + if (_inventory.TryGetSlotEntity(uid, "shoes", out _)) + state = FootPrintVisuals.ShoesPrint; + + if (_inventory.TryGetSlotEntity(uid, "outerClothing", out var suit) && TryComp(suit, out _)) + state = FootPrintVisuals.SuitPrint; + + if (dragging) + state = FootPrintVisuals.Dragging; + + return state; + } +} diff --git a/Content.Server/FootPrint/PuddleFootPrintsSystem.cs b/Content.Server/FootPrint/PuddleFootPrintsSystem.cs new file mode 100644 index 00000000000..706ba25359d --- /dev/null +++ b/Content.Server/FootPrint/PuddleFootPrintsSystem.cs @@ -0,0 +1,52 @@ +using System.Linq; +using Content.Shared.FootPrint; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Fluids; +using Content.Shared.Fluids.Components; +using Robust.Shared.Physics.Events; + +namespace Content.Server.FootPrint; + +public sealed class PuddleFootPrintsSystem : EntitySystem +{ + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedSolutionContainerSystem _solutionContainer = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnStepTrigger); + } + + private void OnStepTrigger(EntityUid uid, PuddleFootPrintsComponent component, ref EndCollideEvent args) + { + if (!TryComp(uid, out var appearance) + || !TryComp(uid, out var puddle) + || !TryComp(args.OtherEntity, out var tripper) + || !TryComp(uid, out var solutionManager) + || !_solutionContainer.ResolveSolution((uid, solutionManager), puddle.SolutionName, ref puddle.Solution, out var solutions)) + return; + + var totalSolutionQuantity = solutions.Contents.Sum(sol => (float) sol.Quantity); + var waterQuantity = (from sol in solutions.Contents where sol.Reagent.Prototype == "Water" select (float) sol.Quantity).FirstOrDefault(); + + if (waterQuantity / (totalSolutionQuantity / 100f) > component.OffPercent || solutions.Contents.Count <= 0) + return; + + tripper.ReagentToTransfer = + solutions.Contents.Aggregate((l, r) => l.Quantity > r.Quantity ? l : r).Reagent.Prototype; + + if (_appearance.TryGetData(uid, PuddleVisuals.SolutionColor, out var color, appearance) + && _appearance.TryGetData(uid, PuddleVisuals.CurrentVolume, out var volume, appearance)) + AddColor((Color) color, (float) volume * component.SizeRatio, tripper); + + _solutionContainer.RemoveEachReagent(puddle.Solution.Value, 1); + } + + private void AddColor(Color col, float quantity, FootPrintsComponent component) + { + component.PrintsColor = component.ColorQuantity == 0f ? col : Color.InterpolateBetween(component.PrintsColor, col, component.ColorInterpolationFactor); + component.ColorQuantity += quantity; + } +} diff --git a/Content.Shared/Footprint/FootPrintComponent.cs b/Content.Shared/Footprint/FootPrintComponent.cs new file mode 100644 index 00000000000..e1f9716057f --- /dev/null +++ b/Content.Shared/Footprint/FootPrintComponent.cs @@ -0,0 +1,23 @@ +using Content.Shared.Chemistry.Components; +using Robust.Shared.GameStates; + +namespace Content.Shared.FootPrint; + +/// +/// This is used for marking footsteps, handling footprint drawing. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class FootPrintComponent : Component +{ + /// + /// Owner (with ) of a print (this component). + /// + [AutoNetworkedField] + public EntityUid PrintOwner; + + [DataField] + public string SolutionName = "step"; + + [DataField] + public Entity? Solution; +} diff --git a/Content.Shared/Footprint/FootPrintVisuals.cs b/Content.Shared/Footprint/FootPrintVisuals.cs new file mode 100644 index 00000000000..f980f60a6d9 --- /dev/null +++ b/Content.Shared/Footprint/FootPrintVisuals.cs @@ -0,0 +1,25 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.FootPrint; + +[Serializable, NetSerializable] +public enum FootPrintVisuals : byte +{ + BareFootPrint, + ShoesPrint, + SuitPrint, + Dragging +} + +[Serializable, NetSerializable] +public enum FootPrintVisualState : byte +{ + State, + Color +} + +[Serializable, NetSerializable] +public enum FootPrintVisualLayers : byte +{ + Print +} diff --git a/Content.Shared/Footprint/FootPrintsComponent.cs b/Content.Shared/Footprint/FootPrintsComponent.cs new file mode 100644 index 00000000000..2b2c4ed66ed --- /dev/null +++ b/Content.Shared/Footprint/FootPrintsComponent.cs @@ -0,0 +1,88 @@ +using System.Numerics; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Shared.FootPrint; + +[RegisterComponent] +public sealed partial class FootPrintsComponent : Component +{ + [ViewVariables(VVAccess.ReadOnly), DataField] + public ResPath RsiPath = new("/Textures/Effects/footprints.rsi"); + + // all of those are set as a layer + [ViewVariables(VVAccess.ReadOnly), DataField] + public string LeftBarePrint = "footprint-left-bare-human"; + + [ViewVariables(VVAccess.ReadOnly), DataField] + public string RightBarePrint = "footprint-right-bare-human"; + + [ViewVariables(VVAccess.ReadOnly), DataField] + public string ShoesPrint = "footprint-shoes"; + + [ViewVariables(VVAccess.ReadOnly), DataField] + public string SuitPrint = "footprint-suit"; + + [ViewVariables(VVAccess.ReadOnly), DataField] + public string[] DraggingPrint = + [ + "dragging-1", + "dragging-2", + "dragging-3", + "dragging-4", + "dragging-5", + ]; + // yea, those + + [ViewVariables(VVAccess.ReadOnly), DataField] + public EntProtoId StepProtoId = "Footstep"; + + [ViewVariables(VVAccess.ReadOnly), DataField] + public Color PrintsColor = Color.FromHex("#00000000"); + + /// + /// The size scaling factor for footprint steps. Must be positive. + /// + [DataField] + public float StepSize = 0.7f; + + /// + /// The size scaling factor for drag marks. Must be positive. + /// + [DataField] + public float DragSize = 0.5f; + + /// + /// The amount of color to transfer from the source (e.g., puddle) to the footprint. + /// + [DataField] + public float ColorQuantity; + + /// + /// The factor by which the alpha channel is reduced in subsequent footprints. + /// + [DataField] + public float ColorReduceAlpha = 0.1f; + + [DataField] + public string? ReagentToTransfer; + + [DataField] + public Vector2 OffsetPrint = new(0.1f, 0f); + + /// + /// Tracks which foot should make the next print. True for right foot, false for left. + /// + public bool RightStep = true; + + /// + /// The position of the last footprint in world coordinates. + /// + public Vector2 StepPos = Vector2.Zero; + + /// + /// Controls how quickly the footprint color transitions between steps. + /// Value between 0 and 1, where higher values mean faster color changes. + /// + public float ColorInterpolationFactor = 0.2f; +} diff --git a/Content.Shared/Footprint/PuddleFootPrintsComponent.cs b/Content.Shared/Footprint/PuddleFootPrintsComponent.cs new file mode 100644 index 00000000000..0e2ddfe3836 --- /dev/null +++ b/Content.Shared/Footprint/PuddleFootPrintsComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Shared.FootPrint; + +[RegisterComponent] +public sealed partial class PuddleFootPrintsComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite)] + public float SizeRatio = 0.2f; + + [ViewVariables(VVAccess.ReadWrite)] + public float OffPercent = 80f; +} diff --git a/Resources/Prototypes/Entities/Effects/puddle.yml b/Resources/Prototypes/Entities/Effects/puddle.yml index 6a29a8af456..7f6125e73d3 100644 --- a/Resources/Prototypes/Entities/Effects/puddle.yml +++ b/Resources/Prototypes/Entities/Effects/puddle.yml @@ -166,3 +166,42 @@ solution: puddle - type: BadDrink - type: IgnoresFingerprints + - type: PuddleFootPrints + +- type: entity + name: Footstep + id: Footstep + save: false + description: Trace of liquid + components: + - type: Clickable + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepWater + params: + volume: 3 + - type: Transform + noRot: false + - type: Sprite + drawdepth: FloorObjects + color: "#FFFFFF80" + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + slipFixture: + shape: + !type:PhysShapeAabb + bounds: "-0.4,-0.4,0.4,0.4" + mask: + - ItemMask + layer: + - SlipLayer + hard: false + - type: SolutionContainerManager + solutions: + step: { maxVol: 2 } + - type: FootPrint + - type: Puddle + solution: step + - type: Appearance diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachne.yml b/Resources/Prototypes/Entities/Mobs/Species/arachne.yml index 24ebafd91d1..ddbdc57e0ad 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachne.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachne.yml @@ -135,6 +135,9 @@ fireStackAlternateState: 3 - type: Spider - type: IgnoreSpiderWeb + - type: FootPrints + leftBarePrint: "footprint-left-bare-spider" + rightBarePrint: "footprint-right-bare-spider" - type: entity save: false diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml index d576101e652..f512e71d325 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml @@ -127,6 +127,11 @@ sprite: "Effects/creampie.rsi" state: "creampie_arachnid" visible: false + - type: Spider + - type: IgnoreSpiderWeb + - type: FootPrints + leftBarePrint: "footprint-left-bare-spider" + rightBarePrint: "footprint-right-bare-spider" - type: entity parent: BaseSpeciesDummy diff --git a/Resources/Prototypes/Entities/Mobs/Species/diona.yml b/Resources/Prototypes/Entities/Mobs/Species/diona.yml index 113151ad083..07d621b139d 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/diona.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/diona.yml @@ -120,6 +120,9 @@ whitelist: types: - Shard + - type: FootPrints + leftBarePrint: "footprint-left-bare-diona" + rightBarePrint: "footprint-right-bare-diona" - type: entity parent: BaseSpeciesDummy diff --git a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml index 069ecb3eaf3..7f315040356 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml @@ -65,6 +65,11 @@ - SolCommon - type: LightweightDrunk boozeStrengthMultiplier: 0.5 + - type: Stamina + critThreshold: 115 + - type: FootPrints + leftBarePrint: "footprint-left-bare-dwarf" + rightBarePrint: "footprint-right-bare-dwarf" - type: entity parent: BaseSpeciesDummy diff --git a/Resources/Prototypes/Entities/Mobs/Species/harpy.yml b/Resources/Prototypes/Entities/Mobs/Species/harpy.yml index ce87e105497..4ad6ea03cd9 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/harpy.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/harpy.yml @@ -127,6 +127,9 @@ - Shard - Landmine - Mousetrap + - type: FootPrints + leftBarePrint: "footprint-left-bare-lizard" + rightBarePrint: "footprint-right-bare-lizard" # I was about to complain about this, then I remembered birbs have dinosaur feet. So this is valid. - type: entity save: false @@ -218,4 +221,4 @@ checkCanInteract: false icon: { sprite: Interface/Actions/flight.rsi, state: flight_off } iconOn: { sprite : Interface/Actions/flight.rsi, state: flight_on } - event: !type:ToggleFlightEvent \ No newline at end of file + event: !type:ToggleFlightEvent diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index 013789cd2be..ee2886602d1 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -28,6 +28,7 @@ understands: - TauCetiBasic - SolCommon + - type: FootPrints - type: entity parent: BaseSpeciesDummy diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index fef380d1d56..5f684222264 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -122,6 +122,7 @@ sprite: "Effects/creampie.rsi" state: "creampie_moth" visible: false + - type: FootPrints - type: entity parent: BaseSpeciesDummy diff --git a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml index b27b4c6029d..ee5d6285659 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml @@ -66,6 +66,9 @@ understands: - TauCetiBasic - Draconic + - type: FootPrints + leftBarePrint: "footprint-left-bare-lizard" + rightBarePrint: "footprint-right-bare-lizard" - type: entity parent: BaseSpeciesDummy diff --git a/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml b/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml index 28ea5b030f6..2d34c87cfb4 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml @@ -9,7 +9,7 @@ components: - type: HumanoidAppearance species: Skeleton - - type: Carriable # Carrying system from nyanotrasen. + - type: Carriable # Carrying system from nyanotrasen. - type: Icon sprite: Mobs/Species/Skeleton/parts.rsi state: full @@ -102,6 +102,7 @@ probability: 0.5 - type: FireVisuals alternateState: Standing + - type: FootPrints - type: entity parent: BaseSpeciesDummy diff --git a/Resources/Prototypes/Entities/Mobs/Species/slime.yml b/Resources/Prototypes/Entities/Mobs/Species/slime.yml index 7faade46f84..e8909166257 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/slime.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/slime.yml @@ -117,6 +117,9 @@ understands: - TauCetiBasic - Bubblish + - type: FootPrints + leftBarePrint: "footprint-left-bare-slime" + rightBarePrint: "footprint-right-bare-slime" - type: entity parent: MobHumanDummy diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index ec8035563b7..58e2b3b6463 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -102,6 +102,9 @@ sprite: "Effects/creampie.rsi" state: "creampie_vox" # Not default visible: false + - type: FootPrints + leftBarePrint: "footprint-left-bare-lizard" + rightBarePrint: "footprint-right-bare-lizard" - type: entity parent: BaseSpeciesDummy diff --git a/Resources/Prototypes/Store/categories.yml b/Resources/Prototypes/Store/categories.yml index 1b377902e43..489145813e2 100644 --- a/Resources/Prototypes/Store/categories.yml +++ b/Resources/Prototypes/Store/categories.yml @@ -104,6 +104,11 @@ name: store-category-disruption priority: 12 +- type: storeCategory + id: UplinkSales + name: Sales + priority: 10 + #revenant - type: storeCategory id: RevenantAbilities diff --git a/Resources/Prototypes/_White/Store/categories.yml b/Resources/Prototypes/_White/Store/categories.yml deleted file mode 100644 index cb9cfbc88f8..00000000000 --- a/Resources/Prototypes/_White/Store/categories.yml +++ /dev/null @@ -1,4 +0,0 @@ -- type: storeCategory - id: UplinkSales - name: Sales - priority: 10 diff --git a/Resources/Textures/Effects/footprints.rsi/dragging-1.png b/Resources/Textures/Effects/footprints.rsi/dragging-1.png new file mode 100644 index 00000000000..74d2aeb0743 Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/dragging-1.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/dragging-2.png b/Resources/Textures/Effects/footprints.rsi/dragging-2.png new file mode 100644 index 00000000000..cc45f4f8ae8 Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/dragging-2.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/dragging-3.png b/Resources/Textures/Effects/footprints.rsi/dragging-3.png new file mode 100644 index 00000000000..d0f7274dd3c Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/dragging-3.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/dragging-4.png b/Resources/Textures/Effects/footprints.rsi/dragging-4.png new file mode 100644 index 00000000000..5eb34b5d570 Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/dragging-4.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/dragging-5.png b/Resources/Textures/Effects/footprints.rsi/dragging-5.png new file mode 100644 index 00000000000..6b1b34d1456 Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/dragging-5.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/dragging-test.png b/Resources/Textures/Effects/footprints.rsi/dragging-test.png new file mode 100644 index 00000000000..b8c9ba50a7d Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/dragging-test.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-diona.png b/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-diona.png new file mode 100644 index 00000000000..fa40e0f2977 Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-diona.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-dwarf.png b/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-dwarf.png new file mode 100644 index 00000000000..43b88aa1646 Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-dwarf.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-human.png b/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-human.png new file mode 100644 index 00000000000..f7ab3257c58 Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-human.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-lizard.png b/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-lizard.png new file mode 100644 index 00000000000..e53ba99227e Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-lizard.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-slime.png b/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-slime.png new file mode 100644 index 00000000000..87561cb1619 Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-slime.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-spider.png b/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-spider.png new file mode 100644 index 00000000000..4939e72c4b5 Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-left-bare-spider.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-diona.png b/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-diona.png new file mode 100644 index 00000000000..21f3a117741 Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-diona.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-dwarf.png b/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-dwarf.png new file mode 100644 index 00000000000..e493ddbdf6a Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-dwarf.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-human.png b/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-human.png new file mode 100644 index 00000000000..4de70b5c1ea Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-human.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-lizard.png b/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-lizard.png new file mode 100644 index 00000000000..e53ba99227e Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-lizard.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-slime.png b/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-slime.png new file mode 100644 index 00000000000..c10fe24f0b0 Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-slime.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-spider.png b/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-spider.png new file mode 100644 index 00000000000..e9f3a88776c Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-right-bare-spider.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-shoes.png b/Resources/Textures/Effects/footprints.rsi/footprint-shoes.png new file mode 100644 index 00000000000..6cf329a9b6f Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-shoes.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/footprint-suit.png b/Resources/Textures/Effects/footprints.rsi/footprint-suit.png new file mode 100644 index 00000000000..6bc32d343c7 Binary files /dev/null and b/Resources/Textures/Effects/footprints.rsi/footprint-suit.png differ diff --git a/Resources/Textures/Effects/footprints.rsi/meta.json b/Resources/Textures/Effects/footprints.rsi/meta.json new file mode 100644 index 00000000000..0ce2e096ac5 --- /dev/null +++ b/Resources/Textures/Effects/footprints.rsi/meta.json @@ -0,0 +1,71 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "IMPERIAL SPACE", + "states": [ + { + "name": "footprint-left-bare-diona" + }, + { + "name": "footprint-left-bare-dwarf" + }, + { + "name": "footprint-left-bare-human" + }, + { + "name": "footprint-left-bare-lizard" + }, + { + "name": "footprint-left-bare-slime" + }, + { + "name": "footprint-left-bare-spider" + }, + { + "name": "footprint-right-bare-diona" + }, + { + "name": "footprint-right-bare-dwarf" + }, + { + "name": "footprint-right-bare-human" + }, + { + "name": "footprint-right-bare-lizard" + }, + { + "name": "footprint-right-bare-slime" + }, + { + "name": "footprint-right-bare-spider" + }, + { + "name": "footprint-shoes" + }, + { + "name": "footprint-suit" + }, + { + "name": "dragging-1" + }, + { + "name": "dragging-2" + }, + { + "name": "dragging-3" + }, + { + "name": "dragging-4" + }, + { + "name": "dragging-5" + }, + { + "name": "dragging-test" + } + ] +}