Adds creampie launcher
This commit is contained in:
@@ -5,6 +5,8 @@ using Content.Shared.Interfaces.GameObjects.Components;
|
|||||||
using Robust.Shared.Audio;
|
using Robust.Shared.Audio;
|
||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
using Robust.Shared.Player;
|
using Robust.Shared.Player;
|
||||||
|
using Robust.Shared.Serialization.Manager.Attributes;
|
||||||
|
using Robust.Shared.ViewVariables;
|
||||||
|
|
||||||
namespace Content.Server.GameObjects.Components.Nutrition
|
namespace Content.Server.GameObjects.Components.Nutrition
|
||||||
{
|
{
|
||||||
@@ -13,6 +15,10 @@ namespace Content.Server.GameObjects.Components.Nutrition
|
|||||||
{
|
{
|
||||||
public override string Name => "CreamPie";
|
public override string Name => "CreamPie";
|
||||||
|
|
||||||
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
[field: DataField("paralyzeTime")]
|
||||||
|
public float ParalyzeTime { get; set; } = 1f;
|
||||||
|
|
||||||
public void PlaySound()
|
public void PlaySound()
|
||||||
{
|
{
|
||||||
SoundSystem.Play(Filter.Pvs(Owner), AudioHelpers.GetRandomFileFromSoundCollection("desecration"), Owner,
|
SoundSystem.Play(Filter.Pvs(Owner), AudioHelpers.GetRandomFileFromSoundCollection("desecration"), Owner,
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ namespace Content.Server.GameObjects.Components.Nutrition
|
|||||||
|
|
||||||
void IThrowCollide.HitBy(ThrowCollideEventArgs eventArgs)
|
void IThrowCollide.HitBy(ThrowCollideEventArgs eventArgs)
|
||||||
{
|
{
|
||||||
if (!eventArgs.Thrown.HasComponent<CreamPieComponent>() || CreamPied) return;
|
if (CreamPied || eventArgs.Thrown.Deleted || !eventArgs.Thrown.TryGetComponent(out CreamPieComponent? creamPie)) return;
|
||||||
|
|
||||||
CreamPied = true;
|
CreamPied = true;
|
||||||
Owner.PopupMessage(Loc.GetString("You have been creamed by {0:theName}!", eventArgs.Thrown));
|
Owner.PopupMessage(Loc.GetString("You have been creamed by {0:theName}!", eventArgs.Thrown));
|
||||||
@@ -59,7 +59,7 @@ namespace Content.Server.GameObjects.Components.Nutrition
|
|||||||
|
|
||||||
if (Owner.TryGetComponent(out StunnableComponent? stun))
|
if (Owner.TryGetComponent(out StunnableComponent? stun))
|
||||||
{
|
{
|
||||||
stun.Paralyze(1f);
|
stun.Paralyze(creamPie.ParalyzeTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace Content.Server.GameObjects.Components.Projectiles
|
|||||||
set => _damages = value;
|
set => _damages = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
[field: DataField("delete_on_collide")]
|
[field: DataField("deleteOnCollide")]
|
||||||
public bool DeleteOnCollide { get; } = true;
|
public bool DeleteOnCollide { get; } = true;
|
||||||
|
|
||||||
// Get that juicy FPS hit sound
|
// Get that juicy FPS hit sound
|
||||||
@@ -95,7 +95,8 @@ namespace Content.Server.GameObjects.Components.Projectiles
|
|||||||
recoilComponent.Kick(direction);
|
recoilComponent.Kick(direction);
|
||||||
}
|
}
|
||||||
|
|
||||||
Owner.Delete();
|
if(DeleteOnCollide)
|
||||||
|
Owner.Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override ComponentState GetComponentState(ICommonSession player)
|
public override ComponentState GetComponentState(ICommonSession player)
|
||||||
|
|||||||
@@ -176,5 +176,6 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Ammunition
|
|||||||
Dart, // Placeholder
|
Dart, // Placeholder
|
||||||
Grenade,
|
Grenade,
|
||||||
Energy,
|
Energy,
|
||||||
|
CreamPie, // I can't wait for this enum to be a prototype type...
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
4
Resources/Changelog/Parts/launcher.yml
Normal file
4
Resources/Changelog/Parts/launcher.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: Your_Name_Here
|
||||||
|
changes:
|
||||||
|
- type: Add
|
||||||
|
message: Adds cream pie launcher. Honk!
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
state: particle0
|
state: particle0
|
||||||
shader: unshaded
|
shader: unshaded
|
||||||
- type: Projectile
|
- type: Projectile
|
||||||
delete_on_collide: false
|
deleteOnCollide: false
|
||||||
soundHit: /Audio/Weapons/Guns/Hits/bullet_hit.ogg
|
soundHit: /Audio/Weapons/Guns/Hits/bullet_hit.ogg
|
||||||
damages:
|
damages:
|
||||||
Radiation: 10
|
Radiation: 10
|
||||||
|
|||||||
@@ -228,6 +228,10 @@
|
|||||||
Quantity: 8
|
Quantity: 8
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Consumable/Food/pie.rsi
|
sprite: Objects/Consumable/Food/pie.rsi
|
||||||
|
- type: Ammo
|
||||||
|
caliber: CreamPie
|
||||||
|
caseless: true
|
||||||
|
projectile: BulletCreampie
|
||||||
|
|
||||||
|
|
||||||
#- type: entity
|
#- type: entity
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
map: ["enum.RangedBarrelVisualLayers.Base"]
|
map: ["enum.RangedBarrelVisualLayers.Base"]
|
||||||
- state: bolt-closed
|
- state: bolt-closed
|
||||||
map: ["enum.RangedBarrelVisualLayers.Bolt"]
|
map: ["enum.RangedBarrelVisualLayers.Bolt"]
|
||||||
|
|
||||||
- type: Item
|
- type: Item
|
||||||
size: 24
|
size: 24
|
||||||
sprite: Objects/Weapons/Guns/Launchers/china_lake.rsi
|
sprite: Objects/Weapons/Guns/Launchers/china_lake.rsi
|
||||||
@@ -56,7 +55,6 @@
|
|||||||
map: ["enum.RangedBarrelVisualLayers.Base"]
|
map: ["enum.RangedBarrelVisualLayers.Base"]
|
||||||
- state: mag-0
|
- state: mag-0
|
||||||
map: ["enum.RangedBarrelVisualLayers.Mag"]
|
map: ["enum.RangedBarrelVisualLayers.Mag"]
|
||||||
|
|
||||||
- type: Item
|
- type: Item
|
||||||
size: 24
|
size: 24
|
||||||
sprite: Objects/Weapons/Guns/Launchers/rocket.rsi
|
sprite: Objects/Weapons/Guns/Launchers/rocket.rsi
|
||||||
@@ -78,3 +76,29 @@
|
|||||||
magState: mag
|
magState: mag
|
||||||
steps: 1
|
steps: 1
|
||||||
zeroVisible: true
|
zeroVisible: true
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
name: pie cannon
|
||||||
|
parent: LauncherBase
|
||||||
|
id: LauncherCreamPie
|
||||||
|
description: Load cream pie for optimal results.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Objects/Weapons/Guns/Launchers/pie_cannon.rsi
|
||||||
|
state: piecannon
|
||||||
|
- type: Item
|
||||||
|
size: 24
|
||||||
|
sprite: Objects/Weapons/Guns/Launchers/pie_cannon.rsi
|
||||||
|
- type: RangedWeapon
|
||||||
|
clumsyCheck: false
|
||||||
|
- type: RevolverBarrel
|
||||||
|
caliber: CreamPie
|
||||||
|
currentSelector: Single
|
||||||
|
allSelectors:
|
||||||
|
- Single
|
||||||
|
fillPrototype: FoodBananaCreamPie
|
||||||
|
fireRate: 5
|
||||||
|
capacity: 15
|
||||||
|
soundEmpty: /Audio/Weapons/Guns/Empty/empty.ogg
|
||||||
|
soundGunshot: /Audio/Effects/bang.ogg
|
||||||
|
soundInsert: /Audio/Items/bikehorn.ogg
|
||||||
|
|||||||
@@ -150,7 +150,7 @@
|
|||||||
state: frag
|
state: frag
|
||||||
- type: ExplosiveProjectile
|
- type: ExplosiveProjectile
|
||||||
- type: Projectile
|
- type: Projectile
|
||||||
delete_on_collide: false
|
deleteOnCollide: false
|
||||||
- type: Explosive
|
- type: Explosive
|
||||||
devastationRange: 1
|
devastationRange: 1
|
||||||
heavyImpactRange: 2
|
heavyImpactRange: 2
|
||||||
@@ -172,7 +172,7 @@
|
|||||||
sprite: Objects/Weapons/Guns/Projectiles/grenade.rsi
|
sprite: Objects/Weapons/Guns/Projectiles/grenade.rsi
|
||||||
state: grenade
|
state: grenade
|
||||||
- type: Projectile
|
- type: Projectile
|
||||||
delete_on_collide: false
|
deleteOnCollide: false
|
||||||
soundHit: /Audio/Effects/gen_hit.ogg
|
soundHit: /Audio/Effects/gen_hit.ogg
|
||||||
- type: StunnableProjectile
|
- type: StunnableProjectile
|
||||||
paralyzeAmount: 8
|
paralyzeAmount: 8
|
||||||
@@ -189,7 +189,7 @@
|
|||||||
state: grenade
|
state: grenade
|
||||||
- type: ExplosiveProjectile
|
- type: ExplosiveProjectile
|
||||||
- type: Projectile
|
- type: Projectile
|
||||||
delete_on_collide: false
|
deleteOnCollide: false
|
||||||
- type: Explosive
|
- type: Explosive
|
||||||
devastationRange: 1
|
devastationRange: 1
|
||||||
heavyImpactRange: 2
|
heavyImpactRange: 2
|
||||||
@@ -207,7 +207,7 @@
|
|||||||
sprite: Objects/Weapons/Guns/Projectiles/grenade.rsi
|
sprite: Objects/Weapons/Guns/Projectiles/grenade.rsi
|
||||||
state: grenade
|
state: grenade
|
||||||
- type: Projectile
|
- type: Projectile
|
||||||
delete_on_collide: false
|
deleteOnCollide: false
|
||||||
soundHit: /Audio/Effects/flash_bang.ogg
|
soundHit: /Audio/Effects/flash_bang.ogg
|
||||||
- type: FlashProjectile
|
- type: FlashProjectile
|
||||||
range: 7
|
range: 7
|
||||||
@@ -225,7 +225,7 @@
|
|||||||
state: grenade
|
state: grenade
|
||||||
- type: ExplosiveProjectile
|
- type: ExplosiveProjectile
|
||||||
- type: Projectile
|
- type: Projectile
|
||||||
delete_on_collide: false
|
deleteOnCollide: false
|
||||||
- type: Explosive
|
- type: Explosive
|
||||||
devastationRange: 0
|
devastationRange: 0
|
||||||
heavyImpactRange: 1
|
heavyImpactRange: 1
|
||||||
@@ -243,7 +243,7 @@
|
|||||||
sprite: Objects/Fun/toys.rsi
|
sprite: Objects/Fun/toys.rsi
|
||||||
state: foamdart
|
state: foamdart
|
||||||
- type: Projectile
|
- type: Projectile
|
||||||
delete_on_collide: true
|
deleteOnCollide: true
|
||||||
soundHit: /Audio/Guns/Hits/snap.ogg
|
soundHit: /Audio/Guns/Hits/snap.ogg
|
||||||
damages:
|
damages:
|
||||||
Blunt: 2
|
Blunt: 2
|
||||||
@@ -259,6 +259,27 @@
|
|||||||
sprite: Objects/Fun/toys.rsi
|
sprite: Objects/Fun/toys.rsi
|
||||||
state: capbullet
|
state: capbullet
|
||||||
- type: Projectile
|
- type: Projectile
|
||||||
delete_on_collide: true
|
deleteOnCollide: true
|
||||||
damages:
|
damages:
|
||||||
Piercing: 0
|
Piercing: 0
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: BulletCreampie
|
||||||
|
name: cream pie
|
||||||
|
parent: BulletBase
|
||||||
|
description: get creampied, honk!!
|
||||||
|
abstract: true
|
||||||
|
components:
|
||||||
|
- type: Projectile
|
||||||
|
deleteOnCollide: false # CreamPie component handles this.
|
||||||
|
- type: CreamPie
|
||||||
|
- type: ThrownItem
|
||||||
|
- type: Sprite
|
||||||
|
netsync: false
|
||||||
|
sprite: Objects/Consumable/Food/pie.rsi
|
||||||
|
state: icon
|
||||||
|
- type: SolutionContainer
|
||||||
|
contents:
|
||||||
|
reagents:
|
||||||
|
- ReagentId: chem.Nutriment
|
||||||
|
Quantity: 8
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Taken from https://github.com/tgstation/tgstation at dc9cef40447ee86c2b9fff9f690385cd63b655fa",
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "piecannon"
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 670 B |
Submodule RobustToolbox updated: 92f44b390e...0dac17ae5e
Reference in New Issue
Block a user