From b10a7da5d8fed699475f7e1ebf8bf9a115165784 Mon Sep 17 00:00:00 2001 From: LankLTE <135308300+LankLTE@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:27:08 -0700 Subject: [PATCH] Guitar Smashing (#17724) --- .../Damage/Components/DamageOnHitComponent.cs | 18 ++++++++++ .../Damage/Systems/DamageOnHitSystem.cs | 22 +++++++++++++ Resources/Audio/Weapons/attributions.yml | 5 +++ Resources/Audio/Weapons/guitarsmash.ogg | Bin 0 -> 16604 bytes .../Fun/Instruments/instruments_string.yml | 31 ++++++++++++++++++ .../Fun/Instruments/guitar.rsi/meta.json | 8 +++++ .../guitar.rsi/wielded-inhand-left.png | Bin 0 -> 1580 bytes .../guitar.rsi/wielded-inhand-right.png | Bin 0 -> 1602 bytes 8 files changed, 84 insertions(+) create mode 100644 Content.Server/Damage/Components/DamageOnHitComponent.cs create mode 100644 Content.Server/Damage/Systems/DamageOnHitSystem.cs create mode 100644 Resources/Audio/Weapons/guitarsmash.ogg create mode 100644 Resources/Textures/Objects/Fun/Instruments/guitar.rsi/wielded-inhand-left.png create mode 100644 Resources/Textures/Objects/Fun/Instruments/guitar.rsi/wielded-inhand-right.png diff --git a/Content.Server/Damage/Components/DamageOnHitComponent.cs b/Content.Server/Damage/Components/DamageOnHitComponent.cs new file mode 100644 index 0000000000..c625168073 --- /dev/null +++ b/Content.Server/Damage/Components/DamageOnHitComponent.cs @@ -0,0 +1,18 @@ +using Content.Shared.Damage; + + +// Damages the held item by a set amount when it hits someone. Can be used to make melee items limited-use. +namespace Content.Server.Damage.Components; + +[RegisterComponent] +public sealed class DamageOnHitComponent : Component +{ + [DataField("ignoreResistances")] + [ViewVariables(VVAccess.ReadWrite)] + public bool IgnoreResistances = true; + + [DataField("damage", required: true)] + [ViewVariables(VVAccess.ReadWrite)] + public DamageSpecifier Damage = default!; +} + diff --git a/Content.Server/Damage/Systems/DamageOnHitSystem.cs b/Content.Server/Damage/Systems/DamageOnHitSystem.cs new file mode 100644 index 0000000000..63ef0f92e6 --- /dev/null +++ b/Content.Server/Damage/Systems/DamageOnHitSystem.cs @@ -0,0 +1,22 @@ +using Content.Server.Damage.Components; +using Content.Shared.Damage; +using Robust.Shared.Player; +using Content.Shared.Weapons.Melee.Events; + +namespace Content.Server.Damage.Systems; + +public sealed class DamageOnHitSystem : EntitySystem +{ + [Dependency] private readonly DamageableSystem _damageableSystem = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(DamageItem); + } + // Looks for a hit, then damages the held item an appropriate amount. + private void DamageItem(EntityUid uid, DamageOnHitComponent component, MeleeHitEvent args) + { + _damageableSystem.TryChangeDamage(uid, component.Damage, component.IgnoreResistances); + } +} diff --git a/Resources/Audio/Weapons/attributions.yml b/Resources/Audio/Weapons/attributions.yml index 00ee4e7790..b7b4022eee 100644 --- a/Resources/Audio/Weapons/attributions.yml +++ b/Resources/Audio/Weapons/attributions.yml @@ -7,3 +7,8 @@ license: "CC0-1.0" copyright: "User tosha73 on freesound.org" source: "https://freesound.org/people/tosha73/sounds/509902/" + +- files: ["guitarsmash.ogg"] + license: "CC0-1.0" + copyright: "User Mystovski on freesound.org. Modified by LankLTE on github." + source: "https://freesound.org/people/Mystovski/sounds/201111/" diff --git a/Resources/Audio/Weapons/guitarsmash.ogg b/Resources/Audio/Weapons/guitarsmash.ogg new file mode 100644 index 0000000000000000000000000000000000000000..dabbed8c2d59a312478946cbbc0d7115eaac6bd7 GIT binary patch literal 16604 zcmaibWmp}{vgqJW2oAyB-QC^Y-6gntaDqDocXtU+a0?ndxLX1Q*SE;t=iGaLz5aU5 z)Rc91byauGni)k)OH}|I__s8zURS??l*v(9U<6?94$dalE^i1hv8uNd00eS@{XKsL zQ+$*BZ+Vk^qxf^}j35iX{;v`Q@sAor5LM3D-GYOOft`VwiRq1-5cD(uXzE~Q?#vIO znSyA{Y#<^tk)5^4KVo1||C~ugL^Z$wApjtA!KRTYcEJom!4*-$*})T;v^~WUk$e9M zk3~**oZKazxF}B~LYFFNI$j-k69^afL=TA)h9wRm=hsRMrsM}f5!@i0^&1XF- zZYvN~7#2TdhlvX@c#rE2FGQSM3k8HbBno*a@-;KKiW|gC#xA8449$Ir7t%*Z74>O= z=__UkBs*2~r(LFzAHfJB5t+f#?02{!mcpKx|Fl6SEEOLNEj)r9A|VXw0W|kl^pJ7k zGTaavZdk$)A~rJ&ARYkn3aFwAsNhj>8{mNv06-B^Mjv*<8%@9)t;a)vMbd@>O#=W6 z;**Lhl8W7xN+i=xB>!9YBP-~}8~#?7zv5B=prni_?t~8WSI!IoVDq@5inXGOt)dPh zVqrtVs=$Fj0DuHF!zQZACz&iZrKY~vV!!&os&1+|&R=nm4N+#TEy|%Im>_VV|IP!b z8-eemm<9s>W8^?=8RP=EYVM7!ojh&iOqqIa{4A+vuf#7=ZQKW0E|a7CS=T5LC5wY^H2I2$E{^Qu!kL zhI4sS_4jZ*c!ZaQ_I6p;)t35YdJqID4jrv$q5PNSFW+AygT^a_5*B0plNxsRz=}xX zy$LSMk?`#y6C7@EmdNqUp;b{b4=j0#lZp)GKL!T}gkXt7(N(1Wb1;b@4#RdHqb|++ zBtuhPRuIiHPS-f`_rP;n)ricC$UJ}|N?SdkqH52+pk@1u`yey8NkhlBx>-erx;R+{ z{;&OrK(-fw#xaXme$#9cL0y{V3{O+`k2#6nrUn2MFY#vHYufIt*kjc)HeV?UM{KKY*#;=SnKF6j$gQ2g?X|K#-KF6-F%Av2WVXv8L zuiN6bnr6Ow>$ma0sy@u$A)*2RPa-LGA_;Zk4p%Ihw2;*Z4Il*l7LifgRIxi;iDc4= z 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 A8vp