Cluster grenade refactor and contra markings (#31108)
* Cluster grenade refactor * oopsies on the name * Solve client-side errors * reviews addressed * filling scattering grenades is now predicted * reviews addressed
This commit is contained in:
@@ -1,264 +0,0 @@
|
||||
- type: entity
|
||||
parent: [BaseItem, BaseRestrictedContraband]
|
||||
id: ClusterBang
|
||||
name: clusterbang
|
||||
description: Can be used only with flashbangs. Explodes several times.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/clusterbang.rsi
|
||||
state: base-0
|
||||
- type: Appearance
|
||||
- type: ClusterGrenadeVisuals
|
||||
state: base
|
||||
- type: ClusterGrenade
|
||||
- type: OnUseTimerTrigger
|
||||
delay: 3.5
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
cluster-payload: !type:Container
|
||||
|
||||
- type: entity
|
||||
parent: GrenadeBase
|
||||
id: ClusterBangFull
|
||||
name: clusterbang
|
||||
description: Launches three flashbangs after the timer runs out.
|
||||
suffix: Full
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/clusterbang.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
map: ["enum.TriggerVisualLayers.Base"]
|
||||
- type: ClusterGrenade
|
||||
fillPrototype: GrenadeFlashBang
|
||||
distance: 7
|
||||
velocity: 7
|
||||
- type: TimerTriggerVisuals
|
||||
primingSound:
|
||||
path: /Audio/Effects/countdown.ogg
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.Trigger.TriggerVisuals.VisualState:
|
||||
enum.ConstructionVisuals.Layer:
|
||||
Primed: { state: primed }
|
||||
Unprimed: { state: icon }
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Machines/door_lock_off.ogg"
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
cluster-payload: !type:Container
|
||||
|
||||
- type: entity
|
||||
parent: [GrenadeBase, BaseSyndicateContraband]
|
||||
id: ClusterGrenade
|
||||
name: clustergrenade
|
||||
description: Why use one grenade when you can use three at once!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/clusterbomb.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
map: ["enum.TriggerVisualLayers.Base"]
|
||||
- type: ClusterGrenade
|
||||
fillPrototype: ExGrenade
|
||||
velocity: 3.5
|
||||
distance: 5
|
||||
- type: OnUseTimerTrigger
|
||||
beepSound:
|
||||
path: "/Audio/Effects/beep1.ogg"
|
||||
params:
|
||||
volume: 5
|
||||
initialBeepDelay: 0
|
||||
beepInterval: 0.5
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Machines/door_lock_off.ogg"
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
cluster-payload: !type:Container
|
||||
|
||||
- type: entity
|
||||
parent: [BaseItem, BaseSyndicateContraband]
|
||||
id: ClusterBananaPeel
|
||||
name: cluster banana peel
|
||||
description: Splits into 6 explosive banana peels after throwing, guaranteed fun!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Specific/Hydroponics/banana.rsi
|
||||
state: produce
|
||||
- type: Appearance
|
||||
- type: ClusterGrenade
|
||||
fillPrototype: TrashBananaPeelExplosive
|
||||
maxGrenadesCount: 6
|
||||
baseTriggerDelay: 20
|
||||
- type: DamageOnLand
|
||||
damage:
|
||||
types:
|
||||
Blunt: 10
|
||||
- type: LandAtCursor
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Items/bikehorn.ogg"
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 10
|
||||
behaviors:
|
||||
- !type:TriggerBehavior
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
cluster-payload: !type:Container
|
||||
|
||||
- type: entity
|
||||
parent: [GrenadeBase, BaseSecurityContraband]
|
||||
id: GrenadeStinger
|
||||
name: stinger grenade
|
||||
description: Nothing to see here, please disperse.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/stingergrenade.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
map: ["enum.TriggerVisualLayers.Base"]
|
||||
- type: ClusterGrenade
|
||||
fillPrototype: PelletClusterRubber
|
||||
maxGrenadesCount: 30
|
||||
grenadeType: enum.GrenadeType.Shoot
|
||||
- type: FlashOnTrigger
|
||||
range: 7
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Effects/flash_bang.ogg"
|
||||
- type: SpawnOnTrigger
|
||||
proto: GrenadeFlashEffect
|
||||
- type: TimerTriggerVisuals
|
||||
primingSound:
|
||||
path: /Audio/Effects/countdown.ogg
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
cluster-payload: !type:Container
|
||||
|
||||
- type: entity
|
||||
parent: [GrenadeBase, BaseSyndicateContraband]
|
||||
id: GrenadeIncendiary
|
||||
name: incendiary grenade
|
||||
description: Guaranteed to light up the mood.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/pyrogrenade.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
map: ["enum.TriggerVisualLayers.Base"]
|
||||
- type: ClusterGrenade
|
||||
fillPrototype: PelletClusterIncendiary
|
||||
maxGrenadesCount: 30
|
||||
grenadeType: enum.GrenadeType.Shoot
|
||||
- type: OnUseTimerTrigger
|
||||
beepSound:
|
||||
path: "/Audio/Effects/beep1.ogg"
|
||||
params:
|
||||
volume: 5
|
||||
initialBeepDelay: 0
|
||||
beepInterval: 2
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Weapons/Guns/Gunshots/batrifle.ogg"
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
cluster-payload: !type:Container
|
||||
|
||||
- type: entity
|
||||
parent: [GrenadeBase, BaseSyndicateContraband]
|
||||
id: GrenadeShrapnel
|
||||
name: shrapnel grenade
|
||||
description: Releases a deadly spray of shrapnel that causes severe bleeding.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/shrapnelgrenade.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
map: ["enum.TriggerVisualLayers.Base"]
|
||||
- type: ClusterGrenade
|
||||
fillPrototype: PelletClusterLethal
|
||||
maxGrenadesCount: 30
|
||||
grenadeType: enum.GrenadeType.Shoot
|
||||
- type: OnUseTimerTrigger
|
||||
beepSound:
|
||||
path: "/Audio/Effects/beep1.ogg"
|
||||
params:
|
||||
volume: 5
|
||||
initialBeepDelay: 0
|
||||
beepInterval: 2
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Weapons/Guns/Gunshots/batrifle.ogg"
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
cluster-payload: !type:Container
|
||||
|
||||
- type: entity
|
||||
parent: SoapSyndie
|
||||
id: SlipocalypseClusterSoap
|
||||
name: slipocalypse clustersoap
|
||||
description: Spreads small pieces of syndicate soap over an area upon landing on the floor.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Specific/Janitorial/soap.rsi
|
||||
layers:
|
||||
- state: syndie-4
|
||||
- type: Appearance
|
||||
- type: ClusterGrenade
|
||||
fillPrototype: SoapletSyndie
|
||||
maxGrenadesCount: 30
|
||||
grenadeTriggerIntervalMax: 0
|
||||
grenadeTriggerIntervalMin: 0
|
||||
baseTriggerDelay: 60
|
||||
randomSpread: true
|
||||
velocity: 3
|
||||
- type: DamageOnLand
|
||||
damage:
|
||||
types:
|
||||
Blunt: 10
|
||||
- type: LandAtCursor
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Effects/flash_bang.ogg"
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 10
|
||||
behaviors:
|
||||
- !type:TriggerBehavior
|
||||
- !type:DoActsBehavior
|
||||
acts: ["Destruction"]
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
cluster-payload: !type:Container
|
||||
|
||||
- type: entity
|
||||
parent: GrenadeShrapnel
|
||||
id: GrenadeFoamDart
|
||||
name: foam dart grenade
|
||||
description: Releases a bothersome spray of foam darts that cause severe welching.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/foamdart.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
map: ["Base"]
|
||||
- state: primed
|
||||
map: ["enum.TriggerVisualLayers.Base"]
|
||||
- type: ClusterGrenade
|
||||
fillPrototype: BulletFoam
|
||||
maxGrenadesCount: 30
|
||||
grenadeType: enum.GrenadeType.Throw
|
||||
velocity: 70
|
||||
@@ -81,6 +81,9 @@
|
||||
guides:
|
||||
- Security
|
||||
- Antagonists
|
||||
- type: Tag
|
||||
tags:
|
||||
- GrenadeFlashBang
|
||||
|
||||
- type: entity
|
||||
id: GrenadeFlashEffect
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseItem
|
||||
id: ProjectileGrenadeBase
|
||||
components:
|
||||
- type: Appearance
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
- type: DeleteOnTrigger
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 10
|
||||
behaviors:
|
||||
- !type:TriggerBehavior
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
cluster-payload: !type:Container
|
||||
- type: ProjectileGrenade
|
||||
|
||||
- type: entity
|
||||
parent: [ProjectileGrenadeBase, BaseRestrictedContraband]
|
||||
id: GrenadeStinger
|
||||
name: stinger grenade
|
||||
description: Nothing to see here, please disperse.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/stingergrenade.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
map: ["enum.TriggerVisualLayers.Base"]
|
||||
- type: ProjectileGrenade
|
||||
fillPrototype: PelletClusterRubber
|
||||
capacity: 30
|
||||
- type: FlashOnTrigger
|
||||
range: 7
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Effects/flash_bang.ogg"
|
||||
- type: SpawnOnTrigger
|
||||
proto: GrenadeFlashEffect
|
||||
- type: OnUseTimerTrigger
|
||||
beepSound:
|
||||
path: "/Audio/Effects/beep1.ogg"
|
||||
params:
|
||||
volume: 5
|
||||
initialBeepDelay: 0
|
||||
beepInterval: 2
|
||||
delay: 3.5
|
||||
- type: TimerTriggerVisuals
|
||||
primingSound:
|
||||
path: /Audio/Effects/countdown.ogg
|
||||
|
||||
- type: entity
|
||||
parent: [ProjectileGrenadeBase, BaseSyndicateContraband]
|
||||
id: GrenadeIncendiary
|
||||
name: incendiary grenade
|
||||
description: Guaranteed to light up the mood.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/pyrogrenade.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
map: ["enum.TriggerVisualLayers.Base"]
|
||||
- type: ProjectileGrenade
|
||||
fillPrototype: PelletClusterIncendiary
|
||||
capacity: 30
|
||||
- type: OnUseTimerTrigger
|
||||
beepSound:
|
||||
path: "/Audio/Effects/beep1.ogg"
|
||||
params:
|
||||
volume: 5
|
||||
initialBeepDelay: 0
|
||||
beepInterval: 2
|
||||
delay: 3.5
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Weapons/Guns/Gunshots/batrifle.ogg"
|
||||
|
||||
- type: entity
|
||||
parent: [ProjectileGrenadeBase, BaseSyndicateContraband]
|
||||
id: GrenadeShrapnel
|
||||
name: shrapnel grenade
|
||||
description: Releases a deadly spray of shrapnel that causes severe bleeding.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/shrapnelgrenade.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
map: ["enum.TriggerVisualLayers.Base"]
|
||||
- type: ProjectileGrenade
|
||||
fillPrototype: PelletClusterLethal
|
||||
capacity: 30
|
||||
- type: OnUseTimerTrigger
|
||||
beepSound:
|
||||
path: "/Audio/Effects/beep1.ogg"
|
||||
params:
|
||||
volume: 5
|
||||
initialBeepDelay: 0
|
||||
beepInterval: 2
|
||||
delay: 3.5
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Weapons/Guns/Gunshots/batrifle.ogg"
|
||||
@@ -0,0 +1,174 @@
|
||||
# ScatteringGrenade is intended for grenades that spawn entities, especially those with timers
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseItem
|
||||
id: ScatteringGrenadeBase
|
||||
components:
|
||||
- type: Appearance
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
cluster-payload: !type:Container
|
||||
- type: Damageable
|
||||
damageContainer: Inorganic
|
||||
- type: Destructible
|
||||
thresholds:
|
||||
- trigger:
|
||||
!type:DamageTrigger
|
||||
damage: 10
|
||||
behaviors:
|
||||
- !type:TriggerBehavior
|
||||
- type: ScatteringGrenade
|
||||
|
||||
- type: entity
|
||||
parent: [ScatteringGrenadeBase, BaseRestrictedContraband]
|
||||
id: ClusterBang
|
||||
name: clusterbang
|
||||
description: Can be used only with flashbangs. Explodes several times.
|
||||
components:
|
||||
- type: ScatteringGrenade
|
||||
whitelist:
|
||||
tags:
|
||||
- GrenadeFlashBang
|
||||
distance: 6
|
||||
velocity: 6
|
||||
- type: ClusterGrenadeVisuals
|
||||
state: base
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/clusterbang.rsi
|
||||
state: base-0
|
||||
- type: OnUseTimerTrigger
|
||||
delay: 3.5
|
||||
|
||||
- type: entity
|
||||
parent: ClusterBang
|
||||
id: ClusterBangFull
|
||||
name: ClusterBang
|
||||
description: Launches three flashbangs after the timer runs out.
|
||||
suffix: Full
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/clusterbang.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
map: ["enum.TriggerVisualLayers.Base"]
|
||||
- type: ScatteringGrenade
|
||||
whitelist:
|
||||
tags:
|
||||
- GrenadeFlashBang
|
||||
fillPrototype: GrenadeFlashBang
|
||||
distance: 6
|
||||
velocity: 6
|
||||
- type: TimerTriggerVisuals
|
||||
primingSound:
|
||||
path: /Audio/Effects/countdown.ogg
|
||||
- type: GenericVisualizer
|
||||
visuals:
|
||||
enum.Trigger.TriggerVisuals.VisualState:
|
||||
enum.ConstructionVisuals.Layer:
|
||||
Primed: { state: primed }
|
||||
Unprimed: { state: icon }
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Machines/door_lock_off.ogg"
|
||||
|
||||
- type: entity
|
||||
parent: [ScatteringGrenadeBase, BaseSyndicateContraband]
|
||||
id: ClusterGrenade
|
||||
name: clustergrenade
|
||||
description: Why use one grenade when you can use three at once!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/clusterbomb.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
map: ["enum.TriggerVisualLayers.Base"]
|
||||
- type: ScatteringGrenade
|
||||
fillPrototype: ExGrenade
|
||||
distance: 4
|
||||
- type: OnUseTimerTrigger
|
||||
beepSound:
|
||||
path: "/Audio/Effects/beep1.ogg"
|
||||
params:
|
||||
volume: 5
|
||||
initialBeepDelay: 0
|
||||
beepInterval: 0.5
|
||||
delay: 3.5
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Machines/door_lock_off.ogg"
|
||||
|
||||
- type: entity
|
||||
parent: [ScatteringGrenadeBase, BaseSyndicateContraband]
|
||||
id: ClusterBananaPeel
|
||||
name: cluster banana peel
|
||||
description: Splits into 6 explosive banana peels after throwing, guaranteed fun!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Specific/Hydroponics/banana.rsi
|
||||
state: produce
|
||||
- type: ScatteringGrenade
|
||||
fillPrototype: TrashBananaPeelExplosive
|
||||
capacity: 6
|
||||
delayBeforeTriggerContents: 20
|
||||
- type: LandAtCursor
|
||||
- type: DamageOnLand
|
||||
damage:
|
||||
types:
|
||||
Blunt: 10
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Items/bikehorn.ogg"
|
||||
|
||||
- type: entity
|
||||
parent: [SoapSyndie, ScatteringGrenadeBase, BaseSyndicateContraband]
|
||||
id: SlipocalypseClusterSoap
|
||||
name: slipocalypse clustersoap
|
||||
description: Spreads small pieces of syndicate soap over an area upon landing on the floor.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Specific/Janitorial/soap.rsi
|
||||
layers:
|
||||
- state: syndie-4
|
||||
- type: ScatteringGrenade
|
||||
fillPrototype: SoapletSyndie
|
||||
capacity: 30
|
||||
delayBeforeTriggerContents: 60
|
||||
randomDistance: true
|
||||
randomThrowDistanceMax: 3
|
||||
- type: LandAtCursor
|
||||
- type: DamageOnLand
|
||||
damage:
|
||||
types:
|
||||
Blunt: 10
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Effects/flash_bang.ogg"
|
||||
|
||||
- type: entity
|
||||
parent: ScatteringGrenadeBase
|
||||
id: GrenadeFoamDart
|
||||
name: foam dart grenade
|
||||
description: Releases a bothersome spray of foam darts that cause severe welching.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Grenades/foamdart.rsi
|
||||
layers:
|
||||
- state: icon
|
||||
map: ["Base"]
|
||||
- state: primed
|
||||
map: ["enum.TriggerVisualLayers.Base"]
|
||||
- type: ScatteringGrenade
|
||||
fillPrototype: BulletFoam
|
||||
capacity: 30
|
||||
velocity: 30
|
||||
- type: OnUseTimerTrigger
|
||||
beepSound:
|
||||
path: "/Audio/Effects/beep1.ogg"
|
||||
params:
|
||||
volume: 5
|
||||
initialBeepDelay: 0
|
||||
beepInterval: 2
|
||||
delay: 3.5
|
||||
- type: EmitSoundOnTrigger
|
||||
sound:
|
||||
path: "/Audio/Weapons/Guns/Gunshots/batrifle.ogg"
|
||||
@@ -611,6 +611,9 @@
|
||||
- type: Tag
|
||||
id: Grenade
|
||||
|
||||
- type: Tag
|
||||
id: GrenadeFlashBang
|
||||
|
||||
- type: Tag
|
||||
id: HudMedical
|
||||
|
||||
|
||||
Reference in New Issue
Block a user