Modular arrows (#906)

* arrow

* sprite

* slots

* migration

* fix

* fix2

* del

---------

Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com>
This commit is contained in:
Nim
2025-02-19 21:36:21 +02:00
committed by GitHub
parent dfd1603b64
commit 88462e5a1b
24 changed files with 490 additions and 42 deletions

View File

@@ -1,3 +1,5 @@
cp14-modular-slot-blade = blade
cp14-modular-slot-garde = garde
cp14-modular-slot-blade-inlay = blade inlay
cp14-modular-slot-blade-inlay = blade inlay
cp14-modular-slot-rod = rod
cp14-modular-slot-arrow-tip = arrow tip

View File

@@ -1,3 +1,5 @@
cp14-modular-slot-blade = лезвие
cp14-modular-slot-garde = гарда
cp14-modular-slot-blade-inlay = инкрустация лезвия
cp14-modular-slot-blade-inlay = инкрустация лезвия
cp14-modular-slot-rod = древко
cp14-modular-slot-arrow-tip = наконечник стрелы

View File

@@ -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

View File

@@ -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

View File

@@ -387,4 +387,4 @@
collection: MetalBreak
- !type:CP14ModularDisassembleBehavior
- !type:DoActsBehavior
acts: ["Destruction"]
acts: ["Destruction"]

View File

@@ -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"]

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -65,4 +65,28 @@
- type: Utensil
types:
- Knife
- type: CP14WallpaperRemover
- 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

View File

@@ -8,4 +8,12 @@
- type: modularSlot
id: BladeInlay
name: cp14-modular-slot-blade-inlay
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

View File

@@ -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

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

View File

@@ -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
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

View File

@@ -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
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 B

View File

@@ -253,6 +253,10 @@ CP14WoodenClosetBankerFilled: CP14WoodenClosetMerchantFilled
C14IronCabinet: CP14IronCabinet
C14IronCabinetCargo: CP14IronCabinetCargo
#2025-16-02
CP14Arrow: CP14ModularIronArrow
CP14ClothingBeltQuiverArrow: CP14ClothingBeltQuiverIronArrow
#2025-17-02
CP14Crossbolt: CP14CrossboltIron