From 35eb0c48c1e34a96c4f3a2dac0e73e018c1b7a4d Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Tue, 7 Jan 2025 18:08:47 +0300 Subject: [PATCH] Graves and Tombstones (#705) * dirt grave * Update grave.yml * tombstone * Update grave.yml --- .../Structures/Decorations/tombstones.yml | 50 +++++++++ .../Structures/Storage/Crates/grave.yml | 104 ++++++++++++++++++ .../_CP14/ModularCraft/Blade/shovel.yml | 1 + .../Construction/Graphs/Storage/seats.yml | 16 +++ .../_CP14/Recipes/Construction/farming.yml | 2 +- .../_CP14/Recipes/Construction/storage.yml | 20 ++++ .../Decoration/tombstone.rsi/cross.png | Bin 0 -> 413 bytes .../Decoration/tombstone.rsi/cross2.png | Bin 0 -> 628 bytes .../Decoration/tombstone.rsi/meta.json | 21 ++++ .../Decoration/tombstone.rsi/tomb.png | Bin 0 -> 945 bytes .../Storage/dirt_pit.rsi/closed.png | Bin 0 -> 577 bytes .../Structures/Storage/dirt_pit.rsi/meta.json | 17 +++ .../Structures/Storage/dirt_pit.rsi/open.png | Bin 0 -> 957 bytes 13 files changed, 230 insertions(+), 1 deletion(-) create mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Decorations/tombstones.yml create mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Storage/Crates/grave.yml create mode 100644 Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Storage/seats.yml create mode 100644 Resources/Prototypes/_CP14/Recipes/Construction/storage.yml create mode 100644 Resources/Textures/_CP14/Structures/Decoration/tombstone.rsi/cross.png create mode 100644 Resources/Textures/_CP14/Structures/Decoration/tombstone.rsi/cross2.png create mode 100644 Resources/Textures/_CP14/Structures/Decoration/tombstone.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Structures/Decoration/tombstone.rsi/tomb.png create mode 100644 Resources/Textures/_CP14/Structures/Storage/dirt_pit.rsi/closed.png create mode 100644 Resources/Textures/_CP14/Structures/Storage/dirt_pit.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Structures/Storage/dirt_pit.rsi/open.png diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Decorations/tombstones.yml b/Resources/Prototypes/_CP14/Entities/Structures/Decorations/tombstones.yml new file mode 100644 index 0000000000..d8dc8e94a9 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Decorations/tombstones.yml @@ -0,0 +1,50 @@ +- type: entity + id: CP14BaseTombstone + name: tombstone + description: A piece of stone placed in memory of the dead. + categories: [ ForkFiltered ] + components: + - type: Clickable + - type: Sprite + noRot: true + sprite: _CP14/Structures/Decoration/tombstone.rsi + drawdepth: Mobs + offset: 0,0.3 + layers: + - state: tomb + map: ["random"] + - type: RandomSprite + available: + - random: + cross: "" + cross2: "" + tomb: "" + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.2 + density: 1000 + layer: + - HalfWallLayer + - Opaque + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:SpawnEntitiesBehavior + spawn: + CP14StoneBlock1: + min: 1 + max: 2 + - type: Climbable \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Storage/Crates/grave.yml b/Resources/Prototypes/_CP14/Entities/Structures/Storage/Crates/grave.yml new file mode 100644 index 0000000000..97cccff1d5 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Storage/Crates/grave.yml @@ -0,0 +1,104 @@ +- type: entity + parent: CrateGeneric + id: CP14CrateDirtPitGrave + categories: [ ForkFiltered ] + name: dirt pit + description: "There's something buried here... or someone..." + components: + - type: Sprite + noRot: false + snapCardinals: true + sprite: _CP14/Structures/Storage/dirt_pit.rsi + layers: + - state: closed + - state: closed + map: ["enum.StorageVisualLayers.Door"] + - type: Icon + sprite: _CP14/Structures/Storage/dirt_pit.rsi + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 200 # discourage just beating the grave to break it open + behaviors: + - !type:PlaySoundBehavior + sound: + collection: CP14Digging + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:SpawnEntitiesBehavior + spawn: + CP14DirtBlock1: + min: 2 + max: 3 + - type: Fixtures + fixtures: + rune: + shape: + !type:PhysShapeAabb + bounds: "-0.4,-0.4,0.4,0.4" + hard: false + mask: + - ItemMask + layer: + - SlipLayer + - type: Physics + bodyType: Static + - type: Grave + - type: EntityStorage + airtight: true + isCollidableWhenOpen: false + closeSound: + collection: CP14Digging + openSound: + collection: CP14Digging + - type: Construction + graph: CP14CrateDirtPitGrave + node: CP14CrateDirtPitGrave + +- type: entity + parent: CP14CrateDirtPitGrave + id: CP14CrateDirtPitGraveFilled + suffix: Random filled + components: + - type: EntityTableContainerFill + containers: + entity_storage: !type:NestedSelector + tableId: CP14TombstoneTable + rolls: !type:ConstantNumberSelector + value: 4 + +- type: entityTable + id: CP14TombstoneTable + table: !type:GroupSelector + children: + - !type:GroupSelector # Body parts + children: + - id: CP14TorsoZombie + - id: CP14LeftArmZombie + - id: CP14LeftFootZombie + - id: CP14LeftHandZombie + - id: CP14LeftLegZombie + - id: CP14RightArmZombie + - id: CP14RightFootZombie + - id: CP14RightHandZombie + - id: CP14RightLegZombie + - id: CP14HeadZombie + weight: 2 + - id: CP14TorsoSkeleton + - id: CP14LeftArmSkeleton + - id: CP14LeftFootSkeleton + - id: CP14LeftHandSkeleton + - id: CP14LeftLegSkeleton + - id: CP14RightArmSkeleton + - id: CP14RightFootSkeleton + - id: CP14RightHandSkeleton + - id: CP14RightLegSkeleton + - id: CP14HeadSkeleton + weight: 2 + - !type:GroupSelector # Rarities + weight: 0.2 + children: + - id: CP14ModularSkeletonHalberd + - !type:NestedSelector + tableId: CP14StationCrateLoot \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/ModularCraft/Blade/shovel.yml b/Resources/Prototypes/_CP14/ModularCraft/Blade/shovel.yml index 87a6d9f350..da921b5e11 100644 --- a/Resources/Prototypes/_CP14/ModularCraft/Blade/shovel.yml +++ b/Resources/Prototypes/_CP14/ModularCraft/Blade/shovel.yml @@ -3,6 +3,7 @@ modifiers: - !type:AddComponents components: + - type: Shovel - type: ToolTileCompatible - type: Tool qualities: diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Storage/seats.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Storage/seats.yml new file mode 100644 index 0000000000..db82927e31 --- /dev/null +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Storage/seats.yml @@ -0,0 +1,16 @@ +- type: constructionGraph + id: CP14CrateDirtPitGrave + start: start + graph: + - node: start + actions: + - !type:DestroyEntity {} + edges: + - to: CP14CrateDirtPitGrave + steps: + - material: CP14Dirt + amount: 3 + doAfter: 5 + + - node: CP14CrateDirtPitGrave + entity: CP14CrateDirtPitGrave \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/farming.yml b/Resources/Prototypes/_CP14/Recipes/Construction/farming.yml index e794023f54..431502854d 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/farming.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/farming.yml @@ -1,7 +1,7 @@ - type: construction crystallPunkAllowed: true name: Seedbed - description: A wooden tub with a pile of earth adapted for growing plants. + description: A wooden tub with a pile of earth adapted for growing plants. Can only be built on dirt tiles. id: CP14SeedbedWooden graph: CP14Seedbed startNode: start diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/storage.yml b/Resources/Prototypes/_CP14/Recipes/Construction/storage.yml new file mode 100644 index 0000000000..86ac6945c6 --- /dev/null +++ b/Resources/Prototypes/_CP14/Recipes/Construction/storage.yml @@ -0,0 +1,20 @@ +- type: construction + crystallPunkAllowed: true + name: Dirt pit + description: you're wasting dirt to create a hole. Makes sense, doesn't it? Can only be built on dirt tiles. + id: CP14CrateDirtPitGrave + graph: CP14CrateDirtPitGrave + startNode: start + targetNode: CP14CrateDirtPitGrave + category: construction-category-furniture + icon: + sprite: _CP14/Structures/Storage/dirt_pit.rsi + state: open + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + - !type:TileType + targets: + - CP14FloorDirt \ No newline at end of file diff --git a/Resources/Textures/_CP14/Structures/Decoration/tombstone.rsi/cross.png b/Resources/Textures/_CP14/Structures/Decoration/tombstone.rsi/cross.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc233dd506404bff6b855ba5a7a918ea9b692e1 GIT binary patch literal 413 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 P00000NkvXXu0mjfbu|h} literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Structures/Storage/dirt_pit.rsi/meta.json b/Resources/Textures/_CP14/Structures/Storage/dirt_pit.rsi/meta.json new file mode 100644 index 0000000000..9d222486e5 --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Storage/dirt_pit.rsi/meta.json @@ -0,0 +1,17 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by TheShuEd", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "open" + }, + { + "name": "closed" + } + ] +} diff --git a/Resources/Textures/_CP14/Structures/Storage/dirt_pit.rsi/open.png b/Resources/Textures/_CP14/Structures/Storage/dirt_pit.rsi/open.png new file mode 100644 index 0000000000000000000000000000000000000000..f10f51e0b2908f662357fc6dfcb25baeda6a9ad8 GIT binary patch literal 957 zcmV;u148_XP)Px&cS%G+R9J=WSHWr;W*8x1(9S(B&{qA@g z`0VZi700{7LEed4_FFaX#Y{%S{LTAguMeNS1m{+q?G6X|<3A#pfB%DO+^_sf zF)j&-t50Kr7$ zi6{w}jD|UHwM3^CXVR%lzD|I9BA9dcB>B@nyIw*ceBv@=uvk`eBhe|IKYM~+yj4WN z++u#Av43zBG-&kZ{c$iEp(G;Fz{&Xnal3`ZGDX}jA0>+Ljj>N|+vn3WxEEd}2ly^f z$b4~$qmN$zpjHU`+||?0O++cA_AQV?qzLJ_j#%2!rr(Wie=pv$BJ9J`iP~0`OP=Ty zC+GDq+&aYVmiIIO-)}e-+FD`Nn)cEy}aniWT^g2OmCt{pkq2e)+;a z$pniSnTRXveF~A~7i&BpB%zPYhtlBApr12b?!)1hZmUp7x-;nK{cdb8xx?wKd=v6N z0Z^3MclnP+-qe=TU+XlgU|00000NkvXXu0mjf#ka}5 literal 0 HcmV?d00001