From 61897eae4f5b1a54c902f0b11e6b47ff06d2a0bc Mon Sep 17 00:00:00 2001 From: Nim <128169402+Nimfar11@users.noreply.github.com> Date: Sun, 12 Jan 2025 01:01:53 +0200 Subject: [PATCH] target (#730) --- .../Entities/Structures/Furniture/target.yml | 185 ++++++++++++++++++ .../Construction/Graphs/Furniture/target.yml | 83 ++++++++ .../_CP14/Recipes/Construction/furniture.yml | 57 +++++- .../Structures/Furniture/target.rsi/meta.json | 24 +++ .../Furniture/target.rsi/target.png | Bin 0 -> 686 bytes .../Furniture/target.rsi/target_effigy.png | Bin 0 -> 2095 bytes .../Furniture/target.rsi/target_icon.png | Bin 0 -> 821 bytes .../Furniture/target.rsi/target_stake.png | Bin 0 -> 432 bytes 8 files changed, 347 insertions(+), 2 deletions(-) create mode 100644 Resources/Prototypes/_CP14/Entities/Structures/Furniture/target.yml create mode 100644 Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/target.yml create mode 100644 Resources/Textures/_CP14/Structures/Furniture/target.rsi/meta.json create mode 100644 Resources/Textures/_CP14/Structures/Furniture/target.rsi/target.png create mode 100644 Resources/Textures/_CP14/Structures/Furniture/target.rsi/target_effigy.png create mode 100644 Resources/Textures/_CP14/Structures/Furniture/target.rsi/target_icon.png create mode 100644 Resources/Textures/_CP14/Structures/Furniture/target.rsi/target_stake.png diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/target.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/target.yml new file mode 100644 index 0000000000..d1591824df --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/target.yml @@ -0,0 +1,185 @@ +- type: entity + id: CP14Target + parent: + - BaseStructureDynamic + - CP14BaseFlammable + name: target + description: A target for marksmanship practice. + categories: [ ForkFiltered ] + components: + - type: Sprite + noRot: true + sprite: _CP14/Structures/Furniture/target.rsi + layers: + - state: target_stake + - state: target + - type: DamageRandomPopup + popups: + - darts-popup-bullseye + - darts-popup-25 + - darts-popup-10 + - darts-popup-10 + - darts-popup-5 + - darts-popup-5 + - darts-popup-5 + - darts-popup-1 + - darts-popup-1 + - darts-popup-1 + - darts-popup-miss + - darts-popup-miss + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.25 + density: 100 + mask: + - FullTileMask + layer: + - WallLayer + - type: InteractionOutline + - type: Physics + - type: Climbable + - type: Damageable + damageContainer: Inorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 400 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 200 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + CP14TargetStake: + min: 1 + max: 1 + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Construction + graph: CP14TargetStake + node: CP14target + +- type: entity + id: CP14TargetStake + parent: + - BaseStructureDynamic + - CP14BaseFlammable + name: target stake + description: A wooden stand on which to fix a target for firing. + categories: [ ForkFiltered ] + components: + - type: Sprite + noRot: true + sprite: _CP14/Structures/Furniture/target.rsi + layers: + - state: target_stake + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.20 + density: 50 + mask: + - FullTileMask + layer: + - WallLayer + - type: InteractionOutline + - type: Physics + - type: Climbable + - type: Damageable + damageContainer: Inorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + CP14WoodenPlanks1: + min: 1 + max: 2 + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Construction + graph: CP14TargetStake + node: CP14targetStake + +- type: entity + id: CP14TargetEffigy + parent: + - BaseStructureDynamic + - CP14BaseFlammable + name: target effigy + description: The target is a scarecrow for practising close combat strikes.... or magic. + categories: [ ForkFiltered ] + components: + - type: Sprite + sprite: _CP14/Structures/Furniture/target.rsi + layers: + - state: target_effigy + - type: DamagePopup + allowTypeChange: true + damagePopupType: Combined + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 200 + mask: + - FullTileMask + layer: + - WallLayer + - type: InteractionOutline + - type: Physics + - type: Transform + anchored: false + - type: Damageable + damageContainer: Inorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 800 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 400 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + CP14WoodenPlanks1: + min: 3 + max: 4 + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Construction + graph: CP14TargetEffigy + node: CP14targetEffigy diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/target.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/target.yml new file mode 100644 index 0000000000..8afdfa2ff1 --- /dev/null +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/target.yml @@ -0,0 +1,83 @@ +- type: constructionGraph + id: CP14TargetStake + start: start + graph: + - node: start + edges: + - to: CP14targetStake + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: CP14WoodenPlanks + amount: 2 + doAfter: 2 + + - node: CP14targetStake + entity: CP14TargetStake + edges: + - to: start + completed: + - !type:GivePrototype + prototype: CP14WoodenPlanks1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Screwing + doAfter: 1 + - to: CP14target + steps: + - material: CP14WoodenPlanks + amount: 3 + doAfter: 1 + - material: CP14Nail + amount: 1 + doAfter: 1 + - tag: CP14DyeRed + name: red dye + icon: + sprite: _CP14/Objects/Materials/dye.rsi + state: powder + doAfter: 0.5 + - tool: CP14Hammering + doAfter: 1 + + - node: CP14target + entity: CP14Target + edges: + - to: CP14targetStake + completed: + - !type:GivePrototype + prototype: CP14WoodenPlanks1 + amount: 3 + steps: + - tool: CP14Hammering + doAfter: 2 + +- type: constructionGraph + id: CP14TargetEffigy + start: start + graph: + - node: start + edges: + - to: CP14targetEffigy + completed: + - !type:SnapToGrid + steps: + - material: CP14WoodenPlanks + amount: 5 + - material: CP14Cloth + amount: 2 + - tag: CP14DyeRed + name: red dye + icon: + sprite: _CP14/Objects/Materials/dye.rsi + state: powder + - tag: CP14Wheat + name: wheat bushel + icon: + sprite: _CP14/Objects/Flora/Farm/wheat.rsi + state: base1 + doAfter: 4 + - node: CP14targetEffigy + entity: CP14TargetEffigy diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/furniture.yml b/Resources/Prototypes/_CP14/Recipes/Construction/furniture.yml index 1c5c08d833..6f5ecca5bb 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/furniture.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/furniture.yml @@ -257,6 +257,61 @@ conditions: - !type:TileNotBlocked +- type: construction + crystallPunkAllowed: true + id: CP14TargetStake + name: target stake + description: A wooden stand on which to fix a target for firing. + graph: CP14TargetStake + startNode: start + targetNode: CP14targetStake + category: construction-category-furniture + icon: + sprite: _CP14/Structures/Furniture/target.rsi + state: target_stake + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + crystallPunkAllowed: true + id: CP14Target + name: target + description: A target for marksmanship practice. + graph: CP14TargetStake + startNode: start + targetNode: CP14target + category: construction-category-furniture + icon: + sprite: _CP14/Structures/Furniture/target.rsi + state: target + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + crystallPunkAllowed: true + id: CP14TargetEffigy + name: target + description: A target for marksmanship practice. + graph: CP14TargetEffigy + startNode: start + targetNode: CP14targetEffigy + category: construction-category-furniture + icon: + sprite: _CP14/Structures/Furniture/target.rsi + state: target_effigy + objectType: Structure + placementMode: SnapgridCenter + canRotate: true + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + - type: construction crystallPunkAllowed: true id: CP14WoodenDoor @@ -450,5 +505,3 @@ canBuildInImpassable: true conditions: - !type:TileNotBlocked - - diff --git a/Resources/Textures/_CP14/Structures/Furniture/target.rsi/meta.json b/Resources/Textures/_CP14/Structures/Furniture/target.rsi/meta.json new file mode 100644 index 0000000000..b570a28506 --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Furniture/target.rsi/meta.json @@ -0,0 +1,24 @@ +{ + "version": 1, + "license": "CLA", + "copyright": "Created by omsoyk (Discord), Created by ripmax (the target_effigy)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "target_stake" + }, + { + "name": "target" + }, + { + "name": "target_icon" + }, + { + "name": "target_effigy", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Structures/Furniture/target.rsi/target.png b/Resources/Textures/_CP14/Structures/Furniture/target.rsi/target.png new file mode 100644 index 0000000000000000000000000000000000000000..a85f1cf05267934e81960a20e2d8727bd8d8e060 GIT binary patch literal 686 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_CP14/Structures/Furniture/target.rsi/target_icon.png b/Resources/Textures/_CP14/Structures/Furniture/target.rsi/target_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..00c8933797ba0879e21b994a1b7071cd612edae2 GIT binary patch literal 821 zcmV-51Iqk~P)Px%?@2^KR9J<@m%nQhVHn3h2?c{BAuUD=J#9*Z{SiVGl(uvzP0&DbDTuC;xZBQNjs zKHukgzVG*Wg9c6woScxg0XX2d6{m^VxVC>SDZX{s0pPR~e0bz4(=$^9dIH9`6(}>- zX4PSOW(oi?l_nOCBBs)GcKXS0E4KQLV zeLMg{k#IwBz-Ys<0MLW$8S7k-<&rG`mPxq0v!g8g9pjHQ^`*wI#q+-=v1po#FLG!s?4Qs`kkNbD(WQ)b4sB`lGtj>0Sp(SRT{J-_ueJ7ly} zfsy{81~56)4bc7#s96bN#X<5T;6Y zdw5U_cC{P77gjczx)uW9TUBLYWplSG$`Px$YDq*vR9J=WmN9CCKp2IeLCGR3v9NY)E5Qq-wlIgtA##A6BKJtKN7!y5MR1E0 zCRmAuFeniPQ!FE+S;v`ii$MHfi=F-doyU9si~=hwD=YsUO{FOeysoI4{=01&*dJr1 z|GH7xeCKRnn@0cHIU9t5*Qp55WgCjBfm7>9GSaU(mJZet8KfOxvA3Hg?eYS`!0UY1 zLQdMjdQMvSuB8-%R0OR3_Vzpn0FY!vIfg|MTmxYNto`@TcY`Arr>UkIgRp?2YEafK zl8oTx@%`8DNk&lCt#l01$B<&11{_Pdy+_Cap8XWn7=#2+ds+Lb)vV=g-Bkt93uk=s zjPHY~x=%)bYl?2qvSPXu-0 zaGDpub%3=oPSdGP2e5S_F-!`e&;7D)r%Je#bu09qz>VPT>*8^G<+Mb=d2Z+o&