From 4d9e657f6f6d043a2e435b1983d03c3de1c330ec Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sun, 29 Sep 2024 11:02:39 +0300 Subject: [PATCH] Split decal cleaner into Broom + Max Gab papers and hair (#470) * add broom * water fix * new hair * paper added * feather pen * some unfinished inkwell * inkstorage * Update meta.json * fixes --- Content.Client/Overlays/StencilOverlay.cs | 12 +-- .../CP14FootprintsSystem.cs | 63 +++++++++------ .../Components}/CP14DecalCleanerComponent.cs | 14 +++- .../CP14FootprintHolderComponent.cs | 2 +- .../CP14FootprintTrailerComponent.cs | 3 +- .../Fluids/SharedPuddleSystem.Evaporation.cs | 2 +- .../_CP14/Decals/CP14DecalCleanerEvents.cs | 18 +++++ .../en-US/_CP14/markings/human-hair.ftl | 3 +- .../ru-RU/_CP14/markings/human-hair.ftl | 3 +- .../Customization/Markings/human_hair.yml | 10 ++- .../Entities/Objects/Bureaucracy/paper.yml | 74 ++++++++++++++++++ .../Entities/Objects/Bureaucracy/pen.yml | 54 +++++++++++++ .../Objects/Consumable/Food/produce.yml | 2 +- .../Melee/Tools/{mop.yml => janitor.yml} | 25 +++++- .../Entities/Structures/Floor/floorWater.yml | 2 +- .../Entities/Structures/Furniture/barrel.yml | 2 +- .../_CP14/PlantMetabolizer/metabolizers.yml | 2 +- .../Reagents/Consumable/Drink/drinks.yml | 7 -- .../_CP14/Recipes/Workbench/workbench.yml | 12 ++- Resources/Prototypes/_CP14/tags.yml | 3 + .../human_hair.rsi/maxy_shagy.png | Bin 0 -> 967 bytes .../Customization/human_hair.rsi/meta.json | 6 +- .../Bureaucracy/inkwell.rsi/feather.png | Bin 0 -> 330 bytes .../Objects/Bureaucracy/inkwell.rsi/icon.png | Bin 0 -> 296 bytes .../inkwell.rsi/ink_storage_big.png | Bin 0 -> 502 bytes .../inkwell.rsi/ink_storage_small.png | Bin 0 -> 374 bytes .../Objects/Bureaucracy/inkwell.rsi/meta.json | 23 ++++++ .../Bureaucracy/paper.rsi/inhand-left.png | Bin 0 -> 275 bytes .../Bureaucracy/paper.rsi/inhand-right.png | Bin 0 -> 283 bytes .../Objects/Bureaucracy/paper.rsi/meta.json | 25 ++++++ .../Objects/Bureaucracy/paper.rsi/paper.png | Bin 0 -> 415 bytes .../Bureaucracy/paper.rsi/paper_filled.png | Bin 0 -> 547 bytes .../pens.rsi/feather-inhand-left.png | Bin 0 -> 361 bytes .../pens.rsi/feather-inhand-right.png | Bin 0 -> 385 bytes .../Objects/Bureaucracy/pens.rsi/feather.png | Bin 0 -> 371 bytes .../Objects/Bureaucracy/pens.rsi/meta.json | 22 ++++++ .../_CP14/Objects/Tools/broom.rsi/icon.png | Bin 0 -> 470 bytes .../Objects/Tools/broom.rsi/inhand-left.png | Bin 0 -> 941 bytes .../Objects/Tools/broom.rsi/inhand-right.png | Bin 0 -> 954 bytes .../_CP14/Objects/Tools/broom.rsi/meta.json | 22 ++++++ .../_CP14/Objects/Tools/mop.rsi/meta.json | 4 +- 41 files changed, 361 insertions(+), 54 deletions(-) rename Content.Server/_CP14/{FootStep => Footprints}/CP14FootprintsSystem.cs (65%) rename Content.Server/_CP14/{FootStep => Footprints/Components}/CP14DecalCleanerComponent.cs (55%) rename Content.Server/_CP14/{FootStep => Footprints/Components}/CP14FootprintHolderComponent.cs (93%) rename Content.Server/_CP14/{FootStep => Footprints/Components}/CP14FootprintTrailerComponent.cs (87%) create mode 100644 Content.Shared/_CP14/Decals/CP14DecalCleanerEvents.cs create mode 100644 Resources/Prototypes/_CP14/Entities/Objects/Bureaucracy/paper.yml create mode 100644 Resources/Prototypes/_CP14/Entities/Objects/Bureaucracy/pen.yml rename Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/Tools/{mop.yml => janitor.yml} (57%) delete mode 100644 Resources/Prototypes/_CP14/Reagents/Consumable/Drink/drinks.yml create mode 100644 Resources/Textures/_CP14/Mobs/Customization/human_hair.rsi/maxy_shagy.png create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/feather.png create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/icon.png create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/ink_storage_big.png create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/ink_storage_small.png create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/inhand-left.png create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/inhand-right.png create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/paper.png create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/paper_filled.png create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/pens.rsi/feather-inhand-left.png create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/pens.rsi/feather-inhand-right.png create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/pens.rsi/feather.png create mode 100644 Resources/Textures/_CP14/Objects/Bureaucracy/pens.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Objects/Tools/broom.rsi/icon.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/broom.rsi/inhand-left.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/broom.rsi/inhand-right.png create mode 100644 Resources/Textures/_CP14/Objects/Tools/broom.rsi/meta.json diff --git a/Content.Client/Overlays/StencilOverlay.cs b/Content.Client/Overlays/StencilOverlay.cs index 46745a0e62..672da437dd 100644 --- a/Content.Client/Overlays/StencilOverlay.cs +++ b/Content.Client/Overlays/StencilOverlay.cs @@ -57,6 +57,13 @@ public sealed partial class StencilOverlay : Overlay _blep = _clyde.CreateRenderTarget(args.Viewport.Size, new RenderTargetFormatParameters(RenderTargetColorFormat.Rgba8Srgb), name: "weather-stencil"); } + //CP14 Overlays + if (_entManager.TryGetComponent(mapUid, out var worldEdge)) + { + DrawWorldEdge(args, worldEdge, invMatrix); + } + //CP14 Overlays end + if (_entManager.TryGetComponent(mapUid, out var comp)) { foreach (var (proto, weather) in comp.Weather) @@ -79,11 +86,6 @@ public sealed partial class StencilOverlay : Overlay { DrawCloudShadows(args, shadows, invMatrix); } - - if (_entManager.TryGetComponent(mapUid, out var worldEdge)) - { - DrawWorldEdge(args, worldEdge, invMatrix); - } //CP14 Overlays end args.WorldHandle.UseShader(null); diff --git a/Content.Server/_CP14/FootStep/CP14FootprintsSystem.cs b/Content.Server/_CP14/Footprints/CP14FootprintsSystem.cs similarity index 65% rename from Content.Server/_CP14/FootStep/CP14FootprintsSystem.cs rename to Content.Server/_CP14/Footprints/CP14FootprintsSystem.cs index 2dd0ad1003..31e4129a07 100644 --- a/Content.Server/_CP14/FootStep/CP14FootprintsSystem.cs +++ b/Content.Server/_CP14/Footprints/CP14FootprintsSystem.cs @@ -1,5 +1,8 @@ using System.Numerics; +using Content.Server._CP14.Footprints.Components; using Content.Server.Decals; +using Content.Shared._CP14.Decals; +using Content.Shared.DoAfter; using Content.Shared.Fluids; using Content.Shared.Fluids.Components; using Content.Shared.Interaction; @@ -12,7 +15,7 @@ using Robust.Shared.Map.Components; using Robust.Shared.Physics.Events; using Robust.Shared.Prototypes; -namespace Content.Server._CP14.FootStep; +namespace Content.Server._CP14.Footprints; public sealed class CP14FootprintsSystem : EntitySystem { @@ -20,28 +23,28 @@ public sealed class CP14FootprintsSystem : EntitySystem [Dependency] private readonly SharedMapSystem _maps = default!; [Dependency] private readonly ITileDefinitionManager _tileDefManager = default!; [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly TransformSystem _transform = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnTrailerMove); - SubscribeLocalEvent(OnTrailerCollide); + SubscribeLocalEvent(OnTrailerMove); + SubscribeLocalEvent(OnTrailerCollide); SubscribeLocalEvent(OnHolderEquipped); SubscribeLocalEvent(OnHolderUnequipped); - SubscribeLocalEvent(OnBeforeInteract); + SubscribeLocalEvent(OnAfterInteract); + SubscribeLocalEvent(OnCleanDoAfter); } - private void OnBeforeInteract(Entity ent, ref BeforeRangedInteractEvent args) + private void OnCleanDoAfter(Entity ent, ref CP14DecalCleanerDoAfterEvent args) { - if (!args.CanReach) + if (args.Cancelled || args.Handled) return; - // Remove old decals var gridUid = Transform(ent).GridUid; if (gridUid is null) return; @@ -49,27 +52,43 @@ public sealed class CP14FootprintsSystem : EntitySystem if (!TryComp(gridUid, out var map)) return; - var vec = _transform.GetGridOrMapTilePosition(ent); - var tileCenterVec = vec + map.TileSizeHalfVector; - - var oldDecals = _decal.GetDecalsInRange(gridUid.Value, tileCenterVec, ent.Comp.Range); - - if (oldDecals.Count > 0) - { - _audio.PlayPvs(ent.Comp.Sound, args.ClickLocation); - SpawnAtPosition(ent.Comp.SpawnEffect, args.ClickLocation); - } + var coord = EntityManager.GetCoordinates(args.ClickLocation); + _audio.PlayPvs(ent.Comp.Sound, coord); + SpawnAtPosition(ent.Comp.SpawnEffect, coord); + var oldDecals = _decal.GetDecalsInRange(gridUid.Value, args.ClickLocation.Position, ent.Comp.Range); foreach (var (id, decal) in oldDecals) { if (decal.Cleanable) _decal.RemoveDecal(gridUid.Value, id); } + + args.Handled = true; + } + + private void OnAfterInteract(Entity ent, ref AfterInteractEvent args) + { + if (!args.CanReach && !args.Handled) + return; + + var doAfter = new DoAfterArgs(EntityManager, + args.User, + ent.Comp.Delay, + new CP14DecalCleanerDoAfterEvent(EntityManager.GetNetCoordinates(args.ClickLocation)), + ent) + { + BreakOnMove = true, + BreakOnDamage = true, + NeedHand = true, + }; + _doAfter.TryStartDoAfter(doAfter); + + args.Handled = true; } private void OnHolderUnequipped(Entity ent, ref GotUnequippedEvent args) { - if (!TryComp(args.Equipee, out var trailer)) + if (!TryComp(args.Equipee, out var trailer)) return; trailer.holder = null; @@ -82,13 +101,13 @@ public sealed class CP14FootprintsSystem : EntitySystem private void OnHolderEquipped(Entity ent, ref GotEquippedEvent args) { - if (!TryComp(args.Equipee, out var trailer)) + if (!TryComp(args.Equipee, out var trailer)) return; trailer.holder = ent.Comp; } - private void OnTrailerCollide(Entity ent, ref StartCollideEvent args) + private void OnTrailerCollide(Entity ent, ref StartCollideEvent args) { if (ent.Comp.holder is null) return; @@ -114,7 +133,7 @@ public sealed class CP14FootprintsSystem : EntitySystem comp.Intensity = 1f; } - private void OnTrailerMove(Entity ent, ref MoveEvent args) + private void OnTrailerMove(Entity ent, ref MoveEvent args) { if (ent.Comp.holder is null) return; diff --git a/Content.Server/_CP14/FootStep/CP14DecalCleanerComponent.cs b/Content.Server/_CP14/Footprints/Components/CP14DecalCleanerComponent.cs similarity index 55% rename from Content.Server/_CP14/FootStep/CP14DecalCleanerComponent.cs rename to Content.Server/_CP14/Footprints/Components/CP14DecalCleanerComponent.cs index 299e510604..6dc10958a2 100644 --- a/Content.Server/_CP14/FootStep/CP14DecalCleanerComponent.cs +++ b/Content.Server/_CP14/Footprints/Components/CP14DecalCleanerComponent.cs @@ -1,20 +1,26 @@ using Robust.Shared.Audio; using Robust.Shared.Prototypes; -namespace Content.Server._CP14.FootStep; +namespace Content.Server._CP14.Footprints.Components; /// -/// +/// allows you to remove cleanable decals from tiles with a short delay. /// [RegisterComponent, Access(typeof(CP14FootprintsSystem))] public sealed partial class CP14DecalCleanerComponent : Component { [DataField] - public SoundSpecifier Sound = new SoundCollectionSpecifier("CP14Broom"); + public SoundSpecifier Sound = new SoundCollectionSpecifier("CP14Broom") + { + Params = AudioParams.Default.WithVariation(0.2f), + }; [DataField] public EntProtoId? SpawnEffect = "CP14DustEffect"; [DataField] - public float Range = 1.5f; + public float Range = 1.2f; + + [DataField] + public TimeSpan Delay = TimeSpan.FromSeconds(0.75f); } diff --git a/Content.Server/_CP14/FootStep/CP14FootprintHolderComponent.cs b/Content.Server/_CP14/Footprints/Components/CP14FootprintHolderComponent.cs similarity index 93% rename from Content.Server/_CP14/FootStep/CP14FootprintHolderComponent.cs rename to Content.Server/_CP14/Footprints/Components/CP14FootprintHolderComponent.cs index 49d748ba99..ade85f5c5f 100644 --- a/Content.Server/_CP14/FootStep/CP14FootprintHolderComponent.cs +++ b/Content.Server/_CP14/Footprints/Components/CP14FootprintHolderComponent.cs @@ -2,7 +2,7 @@ using Content.Shared.Decals; using Content.Shared.FixedPoint; using Robust.Shared.Prototypes; -namespace Content.Server._CP14.FootStep; +namespace Content.Server._CP14.Footprints.Components; /// /// stores the type of footprints and their settings. diff --git a/Content.Server/_CP14/FootStep/CP14FootprintTrailerComponent.cs b/Content.Server/_CP14/Footprints/Components/CP14FootprintTrailerComponent.cs similarity index 87% rename from Content.Server/_CP14/FootStep/CP14FootprintTrailerComponent.cs rename to Content.Server/_CP14/Footprints/Components/CP14FootprintTrailerComponent.cs index 1367f39f71..0af4e60444 100644 --- a/Content.Server/_CP14/FootStep/CP14FootprintTrailerComponent.cs +++ b/Content.Server/_CP14/Footprints/Components/CP14FootprintTrailerComponent.cs @@ -1,5 +1,4 @@ - -namespace Content.Server._CP14.FootStep; +namespace Content.Server._CP14.Footprints.Components; /// /// allows an entity to leave footprints on the tiles diff --git a/Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs b/Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs index 21e1713425..023d024a05 100644 --- a/Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs +++ b/Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs @@ -6,7 +6,7 @@ namespace Content.Shared.Fluids; public abstract partial class SharedPuddleSystem { [ValidatePrototypeId] - private const string Water = "CP14Water"; //CP14 Water + private const string Water = "Water"; public static readonly string[] EvaporationReagents = [Water]; diff --git a/Content.Shared/_CP14/Decals/CP14DecalCleanerEvents.cs b/Content.Shared/_CP14/Decals/CP14DecalCleanerEvents.cs new file mode 100644 index 0000000000..b2d038fc80 --- /dev/null +++ b/Content.Shared/_CP14/Decals/CP14DecalCleanerEvents.cs @@ -0,0 +1,18 @@ +using Content.Shared.DoAfter; +using Robust.Shared.Map; +using Robust.Shared.Serialization; + +namespace Content.Shared._CP14.Decals; + +[Serializable, NetSerializable] +public sealed partial class CP14DecalCleanerDoAfterEvent : DoAfterEvent +{ + public NetCoordinates ClickLocation; + + public CP14DecalCleanerDoAfterEvent(NetCoordinates click) + { + ClickLocation = click; + } + + public override DoAfterEvent Clone() => this; +} diff --git a/Resources/Locale/en-US/_CP14/markings/human-hair.ftl b/Resources/Locale/en-US/_CP14/markings/human-hair.ftl index a61f59f628..6f213fd47f 100644 --- a/Resources/Locale/en-US/_CP14/markings/human-hair.ftl +++ b/Resources/Locale/en-US/_CP14/markings/human-hair.ftl @@ -16,4 +16,5 @@ marking-CP14HumanHairSwept2 = Swept marking-CP14HumanHairUpdo = Updo marking-CP14HumanHairVLongFringe = Straight bangs marking-CP14HumanHairVolaju = Volaju -marking-CP14HumanHairWisp = Wisp \ No newline at end of file +marking-CP14HumanHairWisp = Wisp +marking-CP14HumanHairMaxyShagy = Maximum Shagginess \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/markings/human-hair.ftl b/Resources/Locale/ru-RU/_CP14/markings/human-hair.ftl index dab7acdb9d..107d93b486 100644 --- a/Resources/Locale/ru-RU/_CP14/markings/human-hair.ftl +++ b/Resources/Locale/ru-RU/_CP14/markings/human-hair.ftl @@ -16,4 +16,5 @@ marking-CP14HumanHairSwept2 = Суровый взгляд marking-CP14HumanHairUpdo = Пучок marking-CP14HumanHairVLongFringe = Прямая челка marking-CP14HumanHairVolaju = Вояж -marking-CP14HumanHairWisp = Огонек \ No newline at end of file +marking-CP14HumanHairWisp = Огонек +marking-CP14HumanHairMaxyShagy = Максимальная лохматость \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Customization/Markings/human_hair.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Customization/Markings/human_hair.yml index 95478839fe..ebfb0ef7ee 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Customization/Markings/human_hair.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Customization/Markings/human_hair.yml @@ -148,4 +148,12 @@ markingCategory: Hair sprites: - sprite: _CP14/Mobs/Customization/human_hair.rsi - state: wisp \ No newline at end of file + state: wisp + +- type: marking + id: CP14HumanHairMaxyShagy + bodyPart: Hair + markingCategory: Hair + sprites: + - sprite: _CP14/Mobs/Customization/human_hair.rsi + state: maxy_shagy \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Bureaucracy/paper.yml b/Resources/Prototypes/_CP14/Entities/Objects/Bureaucracy/paper.yml new file mode 100644 index 0000000000..39ac636582 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Bureaucracy/paper.yml @@ -0,0 +1,74 @@ +- type: entity + parent: BaseItem + id: CP14BasePaper + abstract: true + components: + - type: Paper + - type: PaperLabelType + - type: ActivatableUI + key: enum.PaperUiKey.Key + requiresComplex: false + - type: UserInterface + interfaces: + enum.PaperUiKey.Key: + type: PaperBoundUserInterface + - type: Item + size: Tiny + - type: Appearance + - type: PaperVisuals + - type: Flammable + fireSpread: true + alwaysCombustible: true + damage: + types: + Heat: 1 + - type: FireVisuals + sprite: Effects/fire.rsi + normalState: fire + - type: Damageable + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 15 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + Ash: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Food + solution: food + delay: 7 + forceFeedDelay: 7 + - type: FlavorProfile + flavors: + - paper + - type: BadFood + - type: SolutionContainerManager + solutions: + food: + maxVol: 1 + reagents: + - ReagentId: Fiber + Quantity: 1 + +- type: entity + parent: CP14BasePaper + id: CP14Paper + name: paper + description: A piece of white paper + components: + - type: Sprite + sprite: _CP14/Objects/Bureaucracy/paper.rsi + layers: + - state: paper + - state: paper_filled + map: ["enum.PaperVisualLayers.Writing"] + visible: false + #- state: paper_stamp-generic + # map: ["enum.PaperVisualLayers.Stamp"] + # visible: false \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Bureaucracy/pen.yml b/Resources/Prototypes/_CP14/Entities/Objects/Bureaucracy/pen.yml new file mode 100644 index 0000000000..2a470fe6c2 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Bureaucracy/pen.yml @@ -0,0 +1,54 @@ +- type: entity + parent: Pen + id: CP14PenFeather + name: fountain pen + description: A sharp clipped feather of a bird, adapted as a writing implement. + components: + - type: Sprite + sprite: _CP14/Objects/Bureaucracy/pens.rsi + state: feather + - type: Item + sprite: _CP14/Objects/Bureaucracy/pens.rsi + heldPrefix: feather + size: Tiny + - type: Tag + tags: + - Write + - Pen + - CP14InkwellFittable + +# TODO: Чернильницу нужно доделать. Перо должно быть видно, пока оно внутри чернильницы. Предмет должен быть через ItemSlots, чтобы перо вставлять забирать можно было кликом. Нужно добавить прикольные звуки вставляния, выставляния. И добавить механ, который будет требовать периодически макать перо в чернильницу. +- type: entity + parent: BaseItem + id: CP14Inkwell + name: inkwell + description: An endless (for now) source of ink for your letters + components: + - type: Sprite + sprite: _CP14/Objects/Bureaucracy/inkwell.rsi + drawdepth: SmallObjects + layers: + - state: icon + - state: feather + map: ["enum.StorageFillLayers.Fill"] + visible: false + #- type: Appearance + #- type: StorageFillVisualizer + # maxFillLevels: 1 + # fillBaseName: fill + - type: Pullable + - type: Storage + grid: + - 0,0,0,0 + maxItemSize: Tiny + whitelist: + tags: + - CP14InkwellFittable + - type: UserInterface + interfaces: + enum.StorageUiKey.Key: + type: StorageBoundUserInterface + - type: InteractionOutline + - type: ContainerContainer + containers: + storagebase: !type:Container \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/produce.yml b/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/produce.yml index b5f069b2ef..84c2c082d0 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/produce.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/produce.yml @@ -210,7 +210,7 @@ Quantity: 4 - ReagentId: Vitamin Quantity: 2 - - ReagentId: CP14Water + - ReagentId: Water Quantity: 3 - type: FoodSequenceElement entries: diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/Tools/mop.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/Tools/janitor.yml similarity index 57% rename from Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/Tools/mop.yml rename to Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/Tools/janitor.yml index 4baad5ae55..3d2228f3d8 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/Tools/mop.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Melee/Tools/janitor.yml @@ -31,4 +31,27 @@ solutions: absorbed: maxVol: 100 - - type: CP14DecalCleaner \ No newline at end of file + +- type: entity + id: CP14BaseBroom + parent: + - BaseItem + - CP14BaseWeaponDestructible + name: wooden broom + description: Sweeps up dried footprints and other stains from the floor + components: + - type: Item + size: Large + sprite: _CP14/Objects/Tools/broom.rsi + - type: Sprite + sprite: _CP14/Objects/Tools/broom.rsi + state: icon + - type: MeleeWeapon + wideAnimationRotation: 10 + damage: + types: + Blunt: 2 + soundHit: + collection: MetalThud + - type: CP14DecalCleaner + delay: 0.75 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Floor/floorWater.yml b/Resources/Prototypes/_CP14/Entities/Structures/Floor/floorWater.yml index c0a45c8aa4..a43fe59ee1 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Floor/floorWater.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Floor/floorWater.yml @@ -52,7 +52,7 @@ pool: maxVol: 9999999 #.inf seems to break the whole yaml file, but would definitely be preferable. reagents: - - ReagentId: CP14Water + - ReagentId: Water Quantity: 9999999 - type: DrainableSolution solution: pool diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/barrel.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/barrel.yml index 4ac4aabab9..ff4bc0459c 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/barrel.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/barrel.yml @@ -101,7 +101,7 @@ solutions: barrel: reagents: - - ReagentId: CP14Water + - ReagentId: Water Quantity: 300 - type: entity diff --git a/Resources/Prototypes/_CP14/PlantMetabolizer/metabolizers.yml b/Resources/Prototypes/_CP14/PlantMetabolizer/metabolizers.yml index ce99925717..71019305a5 100644 --- a/Resources/Prototypes/_CP14/PlantMetabolizer/metabolizers.yml +++ b/Resources/Prototypes/_CP14/PlantMetabolizer/metabolizers.yml @@ -1,6 +1,6 @@ - type: CP14PlantMetabolizer id: Base metabolization: - CP14Water: + Water: - !type:AffectPlantValues resource: 1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/drinks.yml b/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/drinks.yml deleted file mode 100644 index 7c71713db4..0000000000 --- a/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/drinks.yml +++ /dev/null @@ -1,7 +0,0 @@ -- type: reagent - parent: Water - id: CP14Water - name: cp14-reagent-name-water - desc: cp14-reagent-desc-water - flavor: CP14Water - color: "#75b1f0" \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/workbench.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/workbench.yml index 6e35926de5..4a1725f17c 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/workbench.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/workbench.yml @@ -41,4 +41,14 @@ stacks: CP14WoodenPlanks: 2 CP14Cloth: 1 - result: CP14BaseMop \ No newline at end of file + result: CP14BaseMop + +- type: CP14Recipe + id: CP14BaseBroom + tag: CP14RecipeWorkbench + craftTime: 3 + entities: + CP14Wheat: 2 + stacks: + CP14WoodenPlanks: 2 + result: CP14BaseBroom \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/tags.yml b/Resources/Prototypes/_CP14/tags.yml index 62d5f7f71e..eca6c68975 100644 --- a/Resources/Prototypes/_CP14/tags.yml +++ b/Resources/Prototypes/_CP14/tags.yml @@ -31,6 +31,9 @@ - type: Tag id: CP14Plate +- type: Tag + id: CP14InkwellFittable + - type: Tag id: CP14RecipeSewing diff --git a/Resources/Textures/_CP14/Mobs/Customization/human_hair.rsi/maxy_shagy.png b/Resources/Textures/_CP14/Mobs/Customization/human_hair.rsi/maxy_shagy.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd320e3716208b3a9b0843f94607467143132da GIT binary patch literal 967 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGojKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WMyDr4)=6%45^5FJIB6D$x)>JZf`H^LFO5fl?=)J4XSW-Q{(qC2R(lO{rAP9ojKPI%+pz6$^0qDR)+6v>Bb0?>z{wxM6C^5`04+?SnI}z z`KQ?==kp}+t~AbKv*c8gl)s_9K|wz>mZOj%aP5o0n~W`LNl#cVJkMg@`AH#i{q^lv z<16-GiM%lL_19YxW@p*%GT+_*edqtqMUw0voa|B_@B6l9=cg{d1rvBYJhN-6UM%|_ zxMbSqhKy;#pLjgJXNtLBy2dnJh2rwkrJI>M zo~&QL{+ghZx}a)}2-h6eREt-$=7jw7wuWSO*mQj=lcVE6@sabBJ%GUq?*j!RFyC3r(G>^tW{tCe5dh^ z<@et)J`TUmy0y3CR#dCSbSmUtV`bcGI!;#`z+a) znC?)zb)&+>U2SrQ<~x+^+{zrMvg=*D#RC2Mj7}A=^z;VIAPjD~_=11x8>jWsHV=(} iS&lC?!ZXd+mq822<^W<4xD-4YM0vXUxvXPx$1W80eR9J=Wld(zzK@f&NMX(ZkIgk{l2_aZYKpVkAv{JCj16&{wEcO|!gauz9 zAShTZ2wG}mDd9-7SELE{DXqpr_Sgdji@nPEV47jzpZRA7l>dUWMt;h#G%b2`b^(Ad z3+B@q0H>p?Ms@l8c$W~)8adqF5ND0V`B1x-TD*9fh%XD;J6(?V_GxFETu*L*Zx?{d z2}rntFjZ`Ius>#fYqzGknyP{4hdThqgCS4%x3qelYU0pXsEJ9of>y7?`22*&x7S+U zmj&H}L9<8atdYE*iL<75Y`?u;Op?y>ekOjgtd4Cyo&EXMlB~clmW(cQfadL16h%=K cMNv}o1v>k9qswLNBme*a07*qoM6N<$f_O%cx&QzG literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/icon.png b/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..317c75972530234742eaa353b67b754518200c20 GIT binary patch literal 296 zcmV+@0oVSCP)Px#;z>k7R9J=Wl(7ziFc5}+jSCA7?HfP>B%0uATo~AS6kftNGpv&6fX)s^jsX_O zx>&^MV4ILQ+&5h=>HUBHUJEb`!!SRP=i7L!*%RA?Nt!8L6A=L5u-_TavoesRnbM*F zaPJxbfa3~d6EhnFQVI|eu9tJ)o4W#1O5<5p2`pC|6^6lEkEp@1EKt|CaTD;pNQGg5 zsyg*Oox~zu<5(8T#Dvuq5H%Pkpraq|#i$0fiC1kdteM)0e;3rR!33)%^u0(quJ{mc uyT*74tv@2)i~5hKeHt(oXBdWI{(=YQ7gF+DVR{_^0000Px$ut`KgR9J=WmQPC?K^TW0Z51056|=j#uEeT~$st0k2So%uc-5n44}Jg-{R#!? z2N3)UA_yLA{c|uVf>3Hi!6^QLAXv;q1Q#z6)`QMM&{AhmFYW_-*ctZyJUx%F!Q^Un5N~Yzw`r? sT|$4)4wZX?7imajU!c>FgoK3L0TerdWjvUpzW@LL07*qoM6N<$g2&+DwEzGB literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/ink_storage_small.png b/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/ink_storage_small.png new file mode 100644 index 0000000000000000000000000000000000000000..58900867c1b7d1a7690481d1c01f11db28539494 GIT binary patch literal 374 zcmV-+0g3*JP)Px$FiAu~R9J=Wm9a_#K@>$##DD~gU}lyCLaLBmVFQw8#ahrt#Lm*n!VmHf(kWsi zidqT56b2y{YdS$tHXBK`2r0(GtPr(uCaBGvYUaV4d$|nnfyH96SpJ!eX`_^mDl9kv z3|=Do{mAI8S(7Hu^;IeiFgBu0Ow5>wXLI>4^9=;z$h6~Zv=EZ?TLD+QswTp_4@{PHkQYyV4@y| z_uAq{2Er%-V0U|!o2wSh%g{(TMe7gjZLO=#wf6*?hZg_{A*M2*oxt(gHK~d7gA-ux z?+ol8on}1OR}W7Ki}SBj38xs1PbnScFRcI&$1woUk3FMtY`hCTk7LtaV6j*%Z+3uG UP!F7>asU7T07*qoM6N<$f_3SeqW}N^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/meta.json b/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/meta.json new file mode 100644 index 0000000000..9e3349b619 --- /dev/null +++ b/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CLA", + "copyright": "Created by Max Gab for CrystallPunk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "feather" + }, + { + "name": "ink_storage_big" + }, + { + "name": "ink_storage_small" + } + ] +} diff --git a/Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/inhand-left.png b/Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..9677a818258eed553407a04ecfcd92abfdcd0e4f GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|&U(5yhE&XX zdut}D zs22zlrY<`bi)Eg7rz9~7LjG2OWaq6kRV1qG+-O<_EFRLP`o zT~N}*H}k*WOo$eD{PUB4J*&p&E54ssWXhdAcJu!I=-G*%>=L@qdS9~Lxz?^wJ-+*< zGf;2ex=Blpf8Ls*-(D$y;o8wf=aMh6Zo5=|_*I^838TvH?amAge;Umfue4oT%HZ4y Ove(nq&t;ucLK6TaU26LP literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/inhand-right.png b/Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..1df4f5591d67e4adbfeaa57b20a584ac95cea4f3 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|u6nvShE&XX zd&`io$w1`T$K{0=W@OxX60~mKq2vN4aWyeD_ZUl&#wD5Nb3A0OIArF=efs}aH$Gl2 zHqI5O9S9ow=k@=dV0BoexOiPM>&2uZ#$DU`XDZLwY5B6@3geX(T`@;hIUq_I7#2i@ zK5<_2a!c368y`z1+%1z&%@<{rFfEnb!!0KMK;HQ9y0=HIl&{TvaR0VWQq*?&D=!&YgH#_4%Iq)|;{cqCX4HZIXzb^x+rlz1wl8FVD>1!?ob=1)yJD ZT;k?6I~-YartlodT2EI$mvv4FO#q4!bngHF literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/meta.json b/Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/meta.json new file mode 100644 index 0000000000..86b75fe46a --- /dev/null +++ b/Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CLA", + "copyright": "Created by Max Gab for CrystallPunk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "paper" + }, + { + "name": "paper_filled" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/paper.png b/Resources/Textures/_CP14/Objects/Bureaucracy/paper.rsi/paper.png new file mode 100644 index 0000000000000000000000000000000000000000..ae0e1dfe7b5b9a77afc4b0f2352c7a05e7f5eed5 GIT binary patch literal 415 zcmV;Q0bu@#P)Px$SxH1eR9J=Wl(9?0KorKm1W7Ii4bsKZshGjV$xUz)-2DUGI`{{45S)b!&f?%8 zxVdz7FLWsxR1}4jg4jtML}KnT`Mii7vt?%vCnFWIRJL+m_Y!H3ZFu{2c=YjE_K-(gw<+WT5QV7NK+tC?>AD zp_1N@jv#)1LUi4O#cc93N(m%9o|=GZGi+{cs7R{+2R`n7>*Q<{cf#Z0zBFOl47Zne zWJz)YgQ$Px$-AP12R9J=Wls#({Q51%s9W*nWQ8!^+&Buy{Od*6Y1PL;JOl21=f>wfE3V(ow zU@dH6EfyAmfQ1;gNkGAB7qZ2&$SR7$N>C;%VNe1xJ9ic{W3f0YesBj}Eu5#ioO3wm z<>lN185tS>J2~0H^3|ny(wqWd|L_nWy1k#)ZnZbLcJq!@?>({tCe0}dqXz(pLc!Sh zc#;c*PZSCiRqG3oZ3-x|g_o~f&pmInh(dv0Fuuv6SnW2Uc$1h&{K% z!`d?r8U-BNqFQeO@OJw>A9r^-WQ=g;nwUQNP&S8(je7>;extZhgyV0r<$h>Pb>e;5ARg%f8_QHJ=B|ANm{*6S=T*fbuu zaXTIWrHLYL$D=e+#IdbZ{Zb29T(AL{pELjd4&*hRYQ2T`ZU=yF5CU+tbU67H19#w8 z1037pX`?w<0e4p)0iddTDHM{{to8M^k4)8!spV3b3e>Eww0XZG^D$m zu|gnx04mG(61xN8_v5jGqH4T&@>05`v;$l1O+2lCe0n0}R^>siJiQb*Ya0w{Uyf2w lguHp>N(;!y$jJETd;t&}otqNFGj+|n&DqV2Oa6%D__tdD1nmTV^2uGYqTF5;6{ezc= zmh2gS@3j1>_cq!){YIEk&H7b9qZxR7ubVwuD|lA!dsORQ(@R@>k33jc)p&Hzxvw5i zE3#GCrl&G)SvjX+OZM@<+kRPA_ln)L$q==ZExY>r`0}uyIU#-rUT#?3_dB=VUh|$* zq;C47wSoVeo=^D8@~5u$`}JQRzv{W4{dzm?1NX{TFMp=q;s)6X0?npvIu2*EEGJ9c z(O{bBVk$FtNwn*u>F1PF{M&;yq9$#36Z^cY|7o6H>*A%qjy_OfQ=k4NbT+@nUg_kS z?g1CK_AapxxNf%iCv$4yTbrg^QzA5_K68K!{_y@UqkR3WEK>`=Z6Lmc^wwS?RHmaz{sZW7J#Uyx>%3{BSt{0d1?$)sT zzglwP=*CM{eM|q`Pij6odBXfHd(@eL#w)0~Y44urn|pc3>RtSykvG2PWc7yiI{wNq z@!5MU_BV@B)Xfqb$v@Shvb%Qf{T!8_%T`k-c~kGX(xd&e16Q6pv@1Das_TT~2i$Yn z-h^=r3Ie5mfA3D-vdK+*cDm<=>4}qX@dyZd9-n;h`|tLSjveV7^XA1b`V)EYoxGfW zH8ao!AfUjt@tWEmiM2VQVrJ(jg_%E0NL=Dy6}Z4Q{d~jh-EVi)pJKRfeBoOX-_5mR zzl;9f+~KrRdv3Yyd(9;Isf>#gwbtj)K6m=*Ud=PR(mHLt{fgw81)|R%xHvswg)P{M bhWI*$2Cv}VqO=bJzO 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