diff --git a/Content.Shared/Damage/Components/BoxingComponent.cs b/Content.Shared/Damage/Components/BoxingComponent.cs new file mode 100644 index 0000000000..be3dedd885 --- /dev/null +++ b/Content.Shared/Damage/Components/BoxingComponent.cs @@ -0,0 +1,10 @@ +using Robust.Shared.Audio; + +namespace Content.Shared.Damage.Components; + +[RegisterComponent] +public sealed partial class BoxingComponent : Component +{ + [DataField] + public SoundSpecifier? Sound; +} diff --git a/Content.Shared/Damage/Systems/StaminaSystem.cs b/Content.Shared/Damage/Systems/StaminaSystem.cs index a5c8a4b38d..11ea634ec1 100644 --- a/Content.Shared/Damage/Systems/StaminaSystem.cs +++ b/Content.Shared/Damage/Systems/StaminaSystem.cs @@ -11,6 +11,7 @@ using Content.Shared.Popups; using Content.Shared.Projectiles; using Content.Shared.Rejuvenate; using Content.Shared.Rounding; +using Content.Shared.Standing; using Content.Shared.Stunnable; using Content.Shared.Throwing; using Content.Shared.Weapons.Melee.Events; @@ -58,6 +59,7 @@ public sealed partial class StaminaSystem : EntitySystem SubscribeLocalEvent(OnThrowHit); SubscribeLocalEvent(OnMeleeHit); + SubscribeLocalEvent(OnFallOver); } private void OnStamHandleState(EntityUid uid, StaminaComponent component, ref AfterAutoHandleStateEvent args) @@ -172,6 +174,13 @@ public sealed partial class StaminaSystem : EntitySystem } } + + private void OnFallOver(EntityUid uid, BoxingComponent component, DownedEvent args) + { + if (_net.IsServer) + _audio.PlayPvs(component.Sound, uid); + } + private void OnProjectileHit(EntityUid uid, StaminaDamageOnCollideComponent component, ref ProjectileHitEvent args) { OnCollide(uid, component, args.Target); diff --git a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml index 20c2488aa7..5ce5d52de6 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml @@ -10,8 +10,6 @@ sprite: Clothing/Hands/Gloves/Boxing/boxingred.rsi - type: StaminaDamageOnHit damage: 8 #Stam damage values seem a bit higher than regular damage because of the decay, etc - # This needs to be moved to boxinggloves - #knockdownSound: /Audio/Weapons/boxingbell.ogg - type: MeleeWeapon attackRate: 1.5 damage: @@ -46,6 +44,30 @@ fiberColor: fibers-blue - type: FingerprintMask +# April Fools: Vox boxing gloves, given to all Vox. A bit dangerous. +- type: entity + parent: ClothingHandsGlovesBoxingRed + id: ClothingHandsGlovesBoxingVox + name: vox boxing gloves + description: These pack a punch! They'll never make you eat lunch in the maints again! SCRAWWWW!! + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Boxing/boxingblue.rsi + state: icon + - type: Clothing + sprite: Clothing/Hands/Gloves/Boxing/boxingblue.rsi + - type: Fiber + fiberMaterial: fibers-leather + fiberColor: fibers-blue + - type: FingerprintMask + - type: MeleeWeapon + attackRate: 2 + animation: WeaponArcBox + damage: + types: + Blunt: 6 # Double Vox unarmed attack + mustBeEquippedToUse: true + - type: entity parent: ClothingHandsGlovesBoxingRed id: ClothingHandsGlovesBoxingGreen diff --git a/Resources/Prototypes/Entities/Effects/weapon_arc.yml b/Resources/Prototypes/Entities/Effects/weapon_arc.yml index 0f3fab0e87..93d4a54a76 100644 --- a/Resources/Prototypes/Entities/Effects/weapon_arc.yml +++ b/Resources/Prototypes/Entities/Effects/weapon_arc.yml @@ -92,6 +92,15 @@ - type: Sprite state: fist +# April Fools: a boxing effect for when Vox hit things unarmed. +- type: entity + id: WeaponArcBox + parent: WeaponArcStatic + categories: [ HideSpawnMenu ] + components: + - type: Sprite + state: box + - type: entity id: WeaponArcPunch parent: WeaponArcStatic diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 06cd4debd3..7c1b310abc 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1232,8 +1232,9 @@ needsHands: false - type: StaminaDamageOnHit damage: 8 #Stam damage values seem a bit higher than regular damage because of the decay, etc - # This needs to be moved to boxinggloves - #knockdownSound: /Audio/Weapons/boxingbell.ogg + # April Fools - re-add boxing bell sfx + - type: Boxing + sound: /Audio/Weapons/boxingbell.ogg - type: MeleeWeapon attackRate: 1.5 damage: diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index 8967e17574..6f24681861 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -55,14 +55,19 @@ sprite: Mobs/Effects/burn_damage.rsi - type: Bloodstream bloodReagent: AmmoniaBlood +# April Fools: Vox box, even bare-handed. - type: MeleeWeapon + attackRate: 2 soundHit: - collection: AlienClaw + collection: BoxingHit angle: 30 - animation: WeaponArcClaw + animation: WeaponArcBox damage: types: - Slash: 5 # Reduce? + Blunt: 3 # This is technically 20% more than other species but it's not a huge deal. +# April Fools: Vox make a boxing bell sound effect when falling over + - type: Boxing + sound: /Audio/Weapons/boxingbell.ogg - type: Sprite # Need to redefine the whole order to draw the tail over their gas tank layers: - map: [ "enum.HumanoidVisualLayers.Chest" ] diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml index 10543e6ea7..d761e8b090 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml @@ -170,6 +170,10 @@ proto: EffectSpeciesVox equipment: suitstorage: NitrogenTankFilled +# April Fools: Vox all get special boxing gloves. + storage: + back: + - ClothingHandsGlovesBoxingVox # Full EVA Tank, Any Species - type: loadout diff --git a/Resources/Textures/Effects/arcs.rsi/box.png b/Resources/Textures/Effects/arcs.rsi/box.png new file mode 100644 index 0000000000..52352e7115 Binary files /dev/null and b/Resources/Textures/Effects/arcs.rsi/box.png differ diff --git a/Resources/Textures/Effects/arcs.rsi/meta.json b/Resources/Textures/Effects/arcs.rsi/meta.json index 681c523cd9..11e3993dd8 100644 --- a/Resources/Textures/Effects/arcs.rsi/meta.json +++ b/Resources/Textures/Effects/arcs.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/tgstation/tgstation/raw/c545428822f1ee0d402b812221518632dbe198cb/icons/effects/effects.dmi with offsets modified", + "copyright": "Taken from https://github.com/tgstation/tgstation/raw/c545428822f1ee0d402b812221518632dbe198cb/icons/effects/effects.dmi with offsets modified, 'box' sprite hacked with <3 by FairlySadPanda, sourced from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", "states": [ { "name": "bite", @@ -79,6 +79,9 @@ }, { "name": "fist" + }, + { + "name": "box" } ] }