diff --git a/Resources/Locale/en-US/_CP14/modularCraft/slots.ftl b/Resources/Locale/en-US/_CP14/modularCraft/slots.ftl index 3deaaed820..9314098fe9 100644 --- a/Resources/Locale/en-US/_CP14/modularCraft/slots.ftl +++ b/Resources/Locale/en-US/_CP14/modularCraft/slots.ftl @@ -1,3 +1,5 @@ cp14-modular-slot-blade = blade cp14-modular-slot-garde = garde -cp14-modular-slot-blade-inlay = blade inlay \ No newline at end of file +cp14-modular-slot-blade-inlay = blade inlay +cp14-modular-slot-rod = rod +cp14-modular-slot-arrow-tip = arrow tip diff --git a/Resources/Locale/ru-RU/_CP14/modularCraft/slots.ftl b/Resources/Locale/ru-RU/_CP14/modularCraft/slots.ftl index 8fe7a523ce..62102a2d1c 100644 --- a/Resources/Locale/ru-RU/_CP14/modularCraft/slots.ftl +++ b/Resources/Locale/ru-RU/_CP14/modularCraft/slots.ftl @@ -1,3 +1,5 @@ cp14-modular-slot-blade = лезвие cp14-modular-slot-garde = гарда -cp14-modular-slot-blade-inlay = инкрустация лезвия \ No newline at end of file +cp14-modular-slot-blade-inlay = инкрустация лезвия +cp14-modular-slot-rod = древко +cp14-modular-slot-arrow-tip = наконечник стрелы diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Belt/quiver.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Belt/quiver.yml index a42e52c6cc..c87ca6a983 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Belt/quiver.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Belt/quiver.yml @@ -33,13 +33,24 @@ - type: entity parent: CP14ClothingBeltQuiver - id: CP14ClothingBeltQuiverArrow + id: CP14ClothingBeltQuiverIronArrow categories: [ ForkFiltered ] - suffix: Full. Arrow + suffix: Full. Iron. Arrow components: - type: StorageFill contents: - - id: CP14Arrow + - id: CP14ModularIronArrow + amount: 16 + +- type: entity + parent: CP14ClothingBeltQuiver + id: CP14ClothingBeltQuiverMithrilArrow + categories: [ ForkFiltered ] + suffix: Full. Mithril. Arrow + components: + - type: StorageFill + contents: + - id: CP14ModularMithrilArrow amount: 16 - type: entity diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Tip/arrows.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Tip/arrows.yml new file mode 100644 index 0000000000..73c9439010 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Tip/arrows.yml @@ -0,0 +1,88 @@ +- type: entity + parent: BaseItem + id: CP14ModularBladeTipBase + categories: [ ForkFiltered ] + abstract: true + description: The tip on an arrow shaft, a well-finished little piece of metal. + components: + - type: Item + storedRotation: 0 + +- type: entity + parent: CP14ModularBladeTipBase + id: CP14ModularTipIronArrow + name: iron tip + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Tip/arrow.rsi + layers: + - state: icon + - state: solution1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - type: CP14ModularCraftPart + possibleParts: + - TipIronArrow + - type: CP14Material + materials: + CP14Iron: 2 + +- type: entity + parent: CP14ModularBladeTipBase + id: CP14ModularTipGoldArrow + name: golden tip + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Tip/arrow.rsi + layers: + - state: icon + color: "#ffaf47" + - state: solution1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - type: CP14ModularCraftPart + possibleParts: + - TipGoldArrow + - type: CP14Material + materials: + CP14Gold: 2 + +- type: entity + parent: CP14ModularBladeTipBase + id: CP14ModularTipCopperArrow + name: copper tip + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Tip/arrow.rsi + layers: + - state: icon + color: "#bd712f" + - state: solution1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - type: CP14ModularCraftPart + possibleParts: + - TipCopperArrow + - type: CP14Material + materials: + CP14Copper: 2 + +- type: entity + parent: CP14ModularBladeTipBase + id: CP14ModularTipMithrilArrow + name: mithril tip + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Tip/arrow.rsi + layers: + - state: icon + color: "#45d2a4" + - state: solution1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - type: CP14ModularCraftPart + possibleParts: + - TipMithrilArrow + - type: CP14Material + materials: + CP14Mithril: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/grips.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/grips.yml index 1523a71695..2b9a8badc5 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/grips.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/grips.yml @@ -387,4 +387,4 @@ collection: MetalBreak - !type:CP14ModularDisassembleBehavior - !type:DoActsBehavior - acts: ["Destruction"] \ No newline at end of file + acts: ["Destruction"] diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/rod.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/rod.yml new file mode 100644 index 0000000000..1b05fbb1bf --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/rod.yml @@ -0,0 +1,99 @@ +- type: entity + parent: CP14ModularGripBase + id: CP14ModularRod + abstract: true + description: A thin shaft of wood, the most important part of the future arrow. + components: + - type: CP14ModularCraftStartPoint + startSlots: + - ArrowTip + - type: Item + storedRotation: 0 + - type: MeleeWeapon + resetOnHandSelected: false #Fast swap + range: 1.0 # 1.5 standart + cPAnimationOffset: -0.75 #-1 standart + attackRate: 1 # 1 standart + - type: Clothing + slots: + - belt + - type: Fixtures + fixtures: + fix1: + shape: !type:PhysShapeCircle + radius: 0.2 + density: 5 + mask: + - ItemMask + restitution: 0.3 + friction: 0.2 + projectile: + shape: + !type:PhysShapeAabb + bounds: "-0.1,-0.1,0.1,0.1" + hard: false + mask: + - Impassable + - BulletImpassable + - type: EmbeddableProjectile + sound: /Audio/Weapons/star_hit.ogg + embedOnThrow: false + - type: ThrowingAngle + angle: 0 + - type: Ammo + muzzleFlash: null + - type: Tag + tags: + - CP14Arrow + +# Rod +- type: entity + parent: CP14ModularRod + id: CP14ModularRodWooden + name: wooden grip + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Rod/arrow.rsi + layers: + - state: tail + - state: icon + - type: CP14ModularCraftStartPoint + startProtoPart: CP14ModularRodWooden + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 30 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + - !type:CP14ModularDisassembleBehavior + - !type:DoActsBehavior + acts: ["Destruction"] + +- type: entity + parent: CP14ModularRod + id: CP14ModularRodLucens + name: lucens grip + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Rod/arrow.rsi + layers: + - state: tail + - state: icon + color: "#0398fc" + - type: CP14ModularCraftStartPoint + startProtoPart: CP14ModularRodLucens + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 45 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + - !type:CP14ModularDisassembleBehavior + - !type:DoActsBehavior + acts: ["Destruction"] diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/arrow.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/arrow.yml new file mode 100644 index 0000000000..47ffda7e2e --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/arrow.yml @@ -0,0 +1,33 @@ +- type: entity + id: CP14ModularIronArrow + parent: CP14ModularRodWooden + name: iron arrow + description: Standard arrow, balance between damage and reliability. + components: + - type: Sprite + layers: + - state: icon + - state: tail + - sprite: _CP14/Objects/ModularTools/Tip/arrow.rsi + state: icon + - type: CP14ModularCraftAutoAssemble + details: + - TipIronArrow + +- type: entity + id: CP14ModularMithrilArrow + parent: CP14ModularRodLucens + name: mithril arrow + description: An arrow made of expensive wood and magical iron, you shoot money, but the damage matches. + components: + - type: Sprite + layers: + - state: icon + color: "#0398fc" + - state: tail + - sprite: _CP14/Objects/ModularTools/Tip/arrow.rsi + state: icon + color: "#45d2a4" + - type: CP14ModularCraftAutoAssemble + details: + - TipMithrilArrow diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Ranged/Ammunition/arrows.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Ranged/Ammunition/arrows.yml deleted file mode 100644 index e2fc06b480..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Ranged/Ammunition/arrows.yml +++ /dev/null @@ -1,31 +0,0 @@ -- type: entity - parent: BaseArrow - id: CP14BaseArrow - categories: [ ForkFiltered ] - abstract: true - components: - - type: Tag - tags: - - CP14Arrow - -- type: entity - id: CP14Arrow - parent: CP14BaseArrow - name: arrow - description: Wooden rod with iron tip and plumage. Simple and dangerous. - components: - - type: Projectile - deleteOnCollide: false - onlyCollideWhenShot: true - damage: - types: - Piercing: 25 - - type: Sprite - sprite: _CP14/Objects/Weapons/Ranged/Projectiles/arrows.rsi - layers: - - state: tail - - state: rod - - state: tip - - state: solution1 - map: ["enum.SolutionContainerLayers.Fill"] - visible: false diff --git a/Resources/Prototypes/_CP14/ModularCraft/Tip/arrow.yml b/Resources/Prototypes/_CP14/ModularCraft/Tip/arrow.yml new file mode 100644 index 0000000000..7e34b8db6a --- /dev/null +++ b/Resources/Prototypes/_CP14/ModularCraft/Tip/arrow.yml @@ -0,0 +1,96 @@ +- type: modularPart + id: BaseTipArrow + modifiers: + - !type:Inherit + copyFrom: + - BaseWeaponRangedChemical + - !type:EditMeleeWeapon + resetOnHandSelected: true # Disable fast swap + attackRateMultiplier: 1.4 + bonusDamage: + types: + Piercing: 3 + - !type:EditItem + newSize: Small + - !type:EditModularSlots + addSlots: + - Rod + +- type: modularPart + id: TipIronArrow + slots: + - ArrowTip + rsiPath: _CP14/Objects/ModularTools/Tip/arrow.rsi + modifiers: + - !type:Inherit + copyFrom: + - BaseTipArrow + - BaseBladeIron + - !type:AddComponents + components: + - type: Projectile + deleteOnCollide: false + onlyCollideWhenShot: true + damage: + types: + Piercing: 25 + +- type: modularPart + id: TipGoldArrow + slots: + - ArrowTip + rsiPath: _CP14/Objects/ModularTools/Tip/arrow.rsi + color: "#ffaf47" + modifiers: + - !type:Inherit + copyFrom: + - BaseTipArrow + - BaseBladeGold + - !type:AddComponents + components: + - type: Projectile + deleteOnCollide: false + onlyCollideWhenShot: true + damage: + types: + Piercing: 15 + +- type: modularPart + id: TipCopperArrow + slots: + - ArrowTip + rsiPath: _CP14/Objects/ModularTools/Tip/arrow.rsi + color: "#bd712f" + modifiers: + - !type:Inherit + copyFrom: + - BaseTipArrow + - BaseBladeCopper + - !type:AddComponents + components: + - type: Projectile + deleteOnCollide: false + onlyCollideWhenShot: true + damage: + types: + Piercing: 15 + +- type: modularPart + id: TipMithrilArrow + slots: + - ArrowTip + rsiPath: _CP14/Objects/ModularTools/Tip/arrow.rsi + color: "#45d2a4" + modifiers: + - !type:Inherit + copyFrom: + - BaseTipArrow + - BaseBladeMithril + - !type:AddComponents + components: + - type: Projectile + deleteOnCollide: false + onlyCollideWhenShot: true + damage: + types: + Piercing: 30 diff --git a/Resources/Prototypes/_CP14/ModularCraft/baseModularModifier.yml b/Resources/Prototypes/_CP14/ModularCraft/baseModularModifier.yml index 08b08f9bc6..47cbc5507c 100644 --- a/Resources/Prototypes/_CP14/ModularCraft/baseModularModifier.yml +++ b/Resources/Prototypes/_CP14/ModularCraft/baseModularModifier.yml @@ -65,4 +65,28 @@ - type: Utensil types: - Knife - - type: CP14WallpaperRemover \ No newline at end of file + - type: CP14WallpaperRemover + +- type: modularPart + id: BaseWeaponRangedChemical + modifiers: + - !type:AddComponents + components: + - type: SolutionContainerManager + solutions: + ammo: + maxVol: 2 + - type: MeleeChemicalInjector + solution: ammo + - type: RefillableSolution + solution: ammo + - type: InjectableSolution + solution: ammo + - type: SolutionInjectOnEmbed + transferAmount: 2 + solution: ammo + - type: SolutionTransfer + maxTransferAmount: 2 + - type: SolutionContainerVisuals + maxFillLevels: 1 + fillBaseName: solution diff --git a/Resources/Prototypes/_CP14/ModularCraft/slots.yml b/Resources/Prototypes/_CP14/ModularCraft/slots.yml index 3a258ccc0d..8f0ba7a5f1 100644 --- a/Resources/Prototypes/_CP14/ModularCraft/slots.yml +++ b/Resources/Prototypes/_CP14/ModularCraft/slots.yml @@ -8,4 +8,12 @@ - type: modularSlot id: BladeInlay - name: cp14-modular-slot-blade-inlay \ No newline at end of file + name: cp14-modular-slot-blade-inlay + +- type: modularSlot + id: Rod + name: cp14-modular-slot-rod + +- type: modularSlot + id: ArrowTip + name: cp14-modular-slot-arrow-tip diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_tip.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_tip.yml new file mode 100644 index 0000000000..2ad569dc93 --- /dev/null +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_tip.yml @@ -0,0 +1,54 @@ + +# Tip + +- type: CP14Recipe + id: CP14ModularTipIronArrow + tag: CP14RecipeAnvil + craftTime: 2 + requirements: + - !type:StackResource + stack: CP14IronBar + count: 1 + - !type:KnowledgeRequired + knowledge: MetallForging + result: CP14ModularTipIronArrow + resultCount: 4 + +- type: CP14Recipe + id: CP14ModularTipGoldArrow + tag: CP14RecipeAnvil + craftTime: 4 + requirements: + - !type:StackResource + stack: CP14GoldBar + count: 1 + - !type:KnowledgeRequired + knowledge: MetallForging + result: CP14ModularTipGoldArrow + resultCount: 4 + +- type: CP14Recipe + id: CP14ModularTipCopperArrow + tag: CP14RecipeAnvil + craftTime: 4 + requirements: + - !type:StackResource + stack: CP14CopperBar + count: 1 + - !type:KnowledgeRequired + knowledge: MetallForging + result: CP14ModularTipCopperArrow + resultCount: 4 + +- type: CP14Recipe + id: CP14ModularTipMithrilArrow + tag: CP14RecipeAnvil + craftTime: 2 + requirements: + - !type:StackResource + stack: CP14MithrilBar + count: 1 + - !type:KnowledgeRequired + knowledge: MetallForging + result: CP14ModularTipMithrilArrow + resultCount: 4 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/workbench.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/workbench.yml index 8ed959a6b0..4b5d13f5da 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/workbench.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/workbench.yml @@ -127,17 +127,25 @@ result: CP14BowCombat - type: CP14Recipe - id: CP14Arrow + id: CP14ModularRodWooden tag: CP14RecipeWorkbench craftTime: 3 requirements: - !type:StackResource stack: CP14WoodenPlanks count: 1 + result: CP14ModularRodWooden + resultCount: 4 + +- type: CP14Recipe + id: CP14ModularRodLucens + tag: CP14RecipeWorkbench + craftTime: 3 + requirements: - !type:StackResource - stack: CP14IronBar + stack: CP14LucensWoodenPlanks count: 1 - result: CP14Arrow + result: CP14ModularRodLucens resultCount: 4 - type: CP14Recipe diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/icon.png b/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/icon.png new file mode 100644 index 0000000000..1b934c3201 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/inhand-left.png b/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/inhand-left.png new file mode 100644 index 0000000000..51ffa308d2 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/inhand-left.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/inhand-right.png b/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/inhand-right.png new file mode 100644 index 0000000000..9d125f0147 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/inhand-right.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/meta.json b/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/meta.json new file mode 100644 index 0000000000..c2bddb9048 --- /dev/null +++ b/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by odlieerr (discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "tail" + }, + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/tail.png b/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/tail.png new file mode 100644 index 0000000000..96195c746f Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Rod/arrow.rsi/tail.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/icon.png b/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/icon.png new file mode 100644 index 0000000000..bf5ae60899 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/inhand-left.png b/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/inhand-left.png new file mode 100644 index 0000000000..eef583121b Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/inhand-left.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/inhand-right.png b/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/inhand-right.png new file mode 100644 index 0000000000..eab545628a Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/inhand-right.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/meta.json b/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/meta.json new file mode 100644 index 0000000000..35e5588787 --- /dev/null +++ b/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by odlieerr (discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "solution1" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/solution1.png b/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/solution1.png new file mode 100644 index 0000000000..20e77e7f1f Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Tip/arrow.rsi/solution1.png differ diff --git a/Resources/migration.yml b/Resources/migration.yml index b772e730f9..05a74c68d9 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -253,6 +253,10 @@ CP14WoodenClosetBankerFilled: CP14WoodenClosetMerchantFilled C14IronCabinet: CP14IronCabinet C14IronCabinetCargo: CP14IronCabinetCargo +#2025-16-02 +CP14Arrow: CP14ModularIronArrow +CP14ClothingBeltQuiverArrow: CP14ClothingBeltQuiverIronArrow + #2025-17-02 CP14Crossbolt: CP14CrossboltIron