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 0000000000..a85f1cf052 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Furniture/target.rsi/target.png differ diff --git a/Resources/Textures/_CP14/Structures/Furniture/target.rsi/target_effigy.png b/Resources/Textures/_CP14/Structures/Furniture/target.rsi/target_effigy.png new file mode 100644 index 0000000000..8c91f5b270 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Furniture/target.rsi/target_effigy.png differ 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 0000000000..00c8933797 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Furniture/target.rsi/target_icon.png differ diff --git a/Resources/Textures/_CP14/Structures/Furniture/target.rsi/target_stake.png b/Resources/Textures/_CP14/Structures/Furniture/target.rsi/target_stake.png new file mode 100644 index 0000000000..20ecab2042 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Furniture/target.rsi/target_stake.png differ