More Resilient Grenades (#34499)

* Inital commit

* Balanced damage to explode instantly

* Rebalanced based on suggestions

* matched all grenade instant thresholds to 45 damage.

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Redid files and values

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Minor spelling mistake

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Moved abstracts and fixed typo in comments

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

---------

Signed-off-by: Nox38 <nebulousnox38@gmail.com>
This commit is contained in:
Nox 2025-11-11 10:49:25 -08:00 • committed by GitHub
parent 831c53603d
commit febc0f9897
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 216 additions and 206 deletions

View file

@ -0,0 +1,87 @@
- type: entity # Starts fuse after taking 10 damage.
parent: BaseItem
abstract: true
id: GrenadeBase
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/grenade.rsi
layers:
- state: icon
map: ["enum.TriggerVisualLayers.Base"]
- type: Item
size: Small
- type: Clothing
quickEquip: false
slots:
- Belt
- type: TriggerOnUse
- type: TimerTrigger
delay: 3
- type: Damageable
damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger: # Start fuse
!type:DamageTrigger
damage: 10
behaviors:
- !type:TimerStartBehavior
- type: Appearance
- type: AnimationPlayer
- type: GenericVisualizer
visuals:
enum.Trigger.TriggerVisuals.VisualState:
enum.ConstructionVisuals.Layer:
Primed: { state: primed }
Unprimed: { state: icon }
- type: Tag
tags:
- HandGrenade
- type: Fixtures
fixtures:
fix1:
shape: !type:PhysShapeCircle
radius: 0.2
density: 20 # derived from base_item
mask:
- ItemMask
restitution: 0.3
friction: 0.2
- type: entity # Starts fuse after taking 10 damage, instantly detonates/activates after taking 45 damage.
abstract: true
id: VolatileGrenadeBase
components:
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 10
behaviors:
- !type:TimerStartBehavior
- trigger: # immediately explode
!type:DamageTrigger
damage: 45
behaviors:
- !type:TriggerBehavior
keyOut: timer
- !type:DoActsBehavior
acts: ["Destruction"]
- type: entity # Starts fuse after taking 10 damage, is destroyed without activating/detonating after taking 45 damage.
abstract: true
id: FragileGrenadeBase
components:
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 10
behaviors:
- !type:TimerStartBehavior
- trigger: # Disappear
!type:DamageTrigger
damage: 45
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]

View file

@ -0,0 +1,117 @@
- type: entity
parent: [VolatileGrenadeBase, GrenadeBase, BaseSecurityContraband ]
id: SmokeGrenade
name: smoke grenade
description: A tactical grenade that releases a large, long-lasting cloud of smoke when used.
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/smoke.rsi
- type: SmokeOnTrigger
keysIn:
- timer
duration: 30
spreadAmount: 50
- type: EmitSoundOnTrigger
keysIn:
- timer
sound: /Audio/Items/smoke_grenade_smoke.ogg
positional: true
- type: DeleteOnTrigger
keysIn:
- timer
- type: TimerTriggerVisuals
primingSound:
path: /Audio/Items/smoke_grenade_prime.ogg
- type: entity
parent: [ BaseCivilianContraband, SmokeGrenade ]
id: CleanerGrenade
name: cleanade
description: Special grenade for janitors, releasing large cloud of space cleaner foam.
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/janitor.rsi
- type: SmokeOnTrigger
keysIn:
- timer
duration: 15
spreadAmount: 50
smokePrototype: Foam
solution:
reagents:
- ReagentId: SpaceCleaner
Quantity: 30
- type: entity
parent: SmokeGrenade
id: TearGasGrenade
name: tear gas grenade
description: A riot control tear gas grenade. Causes irritation, pain and makes you cry your eyes out.
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/tear_gas.rsi
- type: SmokeOnTrigger
keysIn:
- timer
duration: 10
spreadAmount: 30
smokePrototype: TearGasSmokeWhite
solution:
reagents:
- ReagentId: TearGas
Quantity: 20
- type: entity
parent: [ BaseEngineeringContraband, SmokeGrenade ]
id: MetalFoamGrenade
name: metal foam grenade
description: An emergency tool used for patching hull breaches with special quick-set metal foam. Almost as good as real floors!
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/metalfoam.rsi
- type: TimerTrigger
delay: 5
- type: SmokeOnTrigger
keysIn:
- timer
duration: 10
spreadAmount: 20
smokePrototype: AluminiumMetalFoam
- type: StaticPrice
price: 350
- type: entity
parent: [ BaseEngineeringContraband, VolatileGrenadeBase, GrenadeBase ] # Prevent inheriting DeleteOnTrigger from SmokeGrenade
id: AirGrenade
name: air grenade
description: A special solid state chemical grenade used for quickly releasing standard air into a spaced area. Fills up to 30 tiles!
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/airboom.rsi
- type: EmitSoundOnTrigger
keysIn:
- timer
sound: /Audio/Items/smoke_grenade_smoke.ogg
- type: TimerTriggerVisuals
primingSound:
path: /Audio/Items/smoke_grenade_prime.ogg
- type: TimerTrigger
delay: 3
- type: ReleaseGasOnTrigger
keysIn:
- timer
removeFraction: 0.25
air:
volume: 1000
moles: # Target is 3117.84 mols total for filling 30 tiles (goal is 101.325 kPa @ 20C)
Oxygen: 654.7464 # oxygen
Nitrogen: 2463.0936 # nitrogen
temperature: 293.15
- type: StaticPrice
price: 350
- type: GenericVisualizer
visuals:
enum.ReleaseGasOnTriggerVisuals.Key:
enabled:
True: { state: active }
False: { state: spent }

View file

@ -1,60 +1,7 @@
- type: entity
abstract: true
parent: BaseItem
id: GrenadeBase
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/grenade.rsi
layers:
- state: icon
map: ["enum.TriggerVisualLayers.Base"]
- type: Item
size: Small
- type: Clothing
quickEquip: false
slots:
- Belt
- type: TriggerOnUse
- type: TimerTrigger
delay: 3
- type: Damageable
damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 10
behaviors:
- !type:TriggerBehavior
keyOut: timer # explode immediately
- !type:DoActsBehavior
acts: ["Destruction"]
- type: Appearance
- type: AnimationPlayer
- type: GenericVisualizer
visuals:
enum.Trigger.TriggerVisuals.VisualState:
enum.ConstructionVisuals.Layer:
Primed: { state: primed }
Unprimed: { state: icon }
- type: Tag
tags:
- HandGrenade
- type: Fixtures
fixtures:
fix1:
shape: !type:PhysShapeCircle
radius: 0.2
density: 20 # derived from base_item
mask:
- ItemMask
restitution: 0.3
friction: 0.2
- type: entity
name: explosive grenade
description: Grenade that creates a small but devastating explosion.
parent: [GrenadeBase, BaseSyndicateContraband]
parent: [VolatileGrenadeBase, GrenadeBase, BaseSyndicateContraband]
id: ExGrenade
components:
- type: ExplodeOnTrigger
@ -77,7 +24,7 @@
- type: entity
name: flashbang
description: Eeeeeeeeeeeeeeeeeeeeee.
parent: [ GrenadeBase, BaseSecurityContraband ]
parent: [ FragileGrenadeBase, GrenadeBase, BaseSecurityContraband ]
id: GrenadeFlashBang
components:
- type: Sprite
@ -132,28 +79,13 @@
- type: entity
name: syndicate minibomb
description: A syndicate-manufactured explosive used to stow destruction and cause chaos.
parent: [GrenadeBase, BaseSyndicateContraband]
parent: [VolatileGrenadeBase, GrenadeBase, BaseSyndicateContraband]
id: SyndieMiniBomb
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/syndgrenade.rsi
- type: ExplosionResistance
damageCoefficient: 0.1
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 10
behaviors:
- !type:TimerStartBehavior
- trigger:
!type:DamageTrigger
damage: 45
behaviors:
- !type:TriggerBehavior
keyOut: timer # immediately explode
- !type:DoActsBehavior
acts: ["Destruction"]
- type: TimerTrigger
delay: 5
- type: ExplodeOnTrigger
@ -202,7 +134,7 @@
- type: entity
parent: [ GrenadeBase, BaseSyndicateContraband ]
parent: [ FragileGrenadeBase, GrenadeBase, BaseSyndicateContraband ]
id: SingularityGrenade
name: singularity grenade
description: Grenade that simulates the power of a singularity, pulling things in a heap.
@ -416,7 +348,7 @@
- type: entity
name: EMP grenade
description: A grenade designed to wreak havoc on electronic systems.
parent: [GrenadeBase, BaseSyndicateContraband]
parent: [FragileGrenadeBase, GrenadeBase, BaseSyndicateContraband]
id: EmpGrenade
components:
- type: Sprite
@ -465,124 +397,6 @@
- type: StaticPrice
price: 10000
- type: entity
parent: [ GrenadeBase, BaseSecurityContraband ]
id: SmokeGrenade
name: smoke grenade
description: A tactical grenade that releases a large, long-lasting cloud of smoke when used.
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/smoke.rsi
- type: SmokeOnTrigger
keysIn:
- timer
duration: 30
spreadAmount: 50
- type: EmitSoundOnTrigger
keysIn:
- timer
sound: /Audio/Items/smoke_grenade_smoke.ogg
positional: true
- type: DeleteOnTrigger
keysIn:
- timer
- type: TimerTriggerVisuals
primingSound:
path: /Audio/Items/smoke_grenade_prime.ogg
- type: entity
parent: [ BaseCivilianContraband, SmokeGrenade ]
id: CleanerGrenade
name: cleanade
description: Special grenade for janitors, releasing large cloud of space cleaner foam.
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/janitor.rsi
- type: SmokeOnTrigger
keysIn:
- timer
duration: 15
spreadAmount: 50
smokePrototype: Foam
solution:
reagents:
- ReagentId: SpaceCleaner
Quantity: 30
- type: entity
parent: SmokeGrenade
id: TearGasGrenade
name: tear gas grenade
description: A riot control tear gas grenade. Causes irritation, pain and makes you cry your eyes out.
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/tear_gas.rsi
- type: SmokeOnTrigger
keysIn:
- timer
duration: 10
spreadAmount: 30
smokePrototype: TearGasSmokeWhite
solution:
reagents:
- ReagentId: TearGas
Quantity: 20
- type: entity
parent: [ BaseEngineeringContraband, SmokeGrenade ]
id: MetalFoamGrenade
name: metal foam grenade
description: An emergency tool used for patching hull breaches with special quick-set metal foam. Almost as good as real floors!
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/metalfoam.rsi
- type: TimerTrigger
delay: 5
- type: SmokeOnTrigger
keysIn:
- timer
duration: 10
spreadAmount: 20
smokePrototype: AluminiumMetalFoam
- type: StaticPrice
price: 350
- type: entity
parent: [ BaseEngineeringContraband, GrenadeBase ] # Prevent inheriting DeleteOnTrigger from SmokeGrenade
id: AirGrenade
name: air grenade
description: A special solid state chemical grenade used for quickly releasing standard air into a spaced area. Fills up to 30 tiles!
components:
- type: Sprite
sprite: Objects/Weapons/Grenades/airboom.rsi
- type: EmitSoundOnTrigger
keysIn:
- timer
sound: /Audio/Items/smoke_grenade_smoke.ogg
- type: TimerTriggerVisuals
primingSound:
path: /Audio/Items/smoke_grenade_prime.ogg
- type: TimerTrigger
delay: 3
- type: ReleaseGasOnTrigger
keysIn:
- timer
removeFraction: 0.25
air:
volume: 1000
moles: # Target is 3117.84 mols total for filling 30 tiles (goal is 101.325 kPa @ 20C)
Oxygen: 654.7464 # oxygen
Nitrogen: 2463.0936 # nitrogen
temperature: 293.15
- type: StaticPrice
price: 350
- type: GenericVisualizer
visuals:
enum.ReleaseGasOnTriggerVisuals.Key:
enabled:
True: { state: active }
False: { state: spent }
# Non-explosive "dummy" grenades to use as a distraction.
- type: entity

View file

@ -43,7 +43,7 @@
friction: 0.2
- type: entity
parent: [ProjectileGrenadeBase, BaseSecurityContraband]
parent: [FragileGrenadeBase, ProjectileGrenadeBase, BaseSecurityContraband]
id: GrenadeStinger
name: stinger grenade
description: Nothing to see here, please disperse.
@ -77,7 +77,7 @@
path: /Audio/Effects/countdown.ogg
- type: entity
parent: [ProjectileGrenadeBase, BaseSyndicateContraband]
parent: [FragileGrenadeBase, ProjectileGrenadeBase, BaseSyndicateContraband]
id: GrenadeIncendiary
name: incendiary grenade
description: Guaranteed to light up the mood.
@ -109,7 +109,7 @@
price: 1500
- type: entity
parent: [ProjectileGrenadeBase, BaseSyndicateContraband]
parent: [FragileGrenadeBase, ProjectileGrenadeBase, BaseSyndicateContraband]
id: GrenadeShrapnel
name: shrapnel grenade
description: Releases a deadly spray of shrapnel that causes severe bleeding.

View file

@ -10,14 +10,6 @@
cluster-payload: !type:Container
- type: Damageable
damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 10
behaviors:
- !type:TriggerBehavior
keyOut: timer # explode immediately
- type: ScatteringGrenade
- type: TriggerOnUse
- type: TimerTrigger
@ -37,7 +29,7 @@
friction: 0.2
- type: entity
parent: [ScatteringGrenadeBase, BaseSecurityContraband]
parent: [FragileGrenadeBase, ScatteringGrenadeBase, BaseSecurityContraband]
id: ClusterBang
name: clusterbang
description: Can be used only with flashbangs. Explodes several times.
@ -90,7 +82,7 @@
positional: true
- type: entity
parent: [ScatteringGrenadeBase, BaseSyndicateContraband]
parent: [VolatileGrenadeBase, ScatteringGrenadeBase, BaseSyndicateContraband]
id: ClusterGrenade
name: clustergrenade
description: Why use one grenade when you can use three at once!
@ -120,7 +112,7 @@
price: 2500
- type: entity
parent: [ScatteringGrenadeBase, BaseSyndicateContraband]
parent: [FragileGrenadeBase, ScatteringGrenadeBase, BaseSyndicateContraband]
id: ClusterBananaPeel
name: cluster banana peel
description: Splits into 6 explosive banana peels after throwing, guaranteed fun!
@ -175,7 +167,7 @@
price: 1000
- type: entity
parent: ScatteringGrenadeBase
parent: [FragileGrenadeBase, ScatteringGrenadeBase]
id: GrenadeFoamDart
name: foam dart grenade
description: Releases a bothersome spray of foam darts that cause severe welching.