From cc755a20519ff83caf43fe57cbc1939a777f851b Mon Sep 17 00:00:00 2001 From: Kara Date: Thu, 23 Jun 2022 03:24:50 -0700 Subject: [PATCH] Projectile spells + fireball spell (#9058) * Projectile spells + fireball spell * say it with some gumption --- .../Magic/Events/ProjectileSpellEvent.cs | 20 +++ Content.Server/Magic/MagicSystem.cs | 19 ++- .../Weapon/Ranged/Systems/GunSystem.cs | 2 +- Resources/Audio/Magic/fireball.ogg | Bin 0 -> 28297 bytes Resources/Audio/Magic/licenses.txt | 2 + .../Locale/en-US/magic/spells-actions.ftl | 4 + .../Entities/Objects/Magic/books.yml | 14 ++ .../Weapons/Guns/Projectiles/magic.yml | 17 +++ .../Prototypes/Magic/projectile_spells.yml | 17 +++ .../Magic/magicactions.rsi/fireball.png | Bin 0 -> 533 bytes .../Objects/Magic/magicactions.rsi/gib.png | Bin 0 -> 988 bytes .../Magic/magicactions.rsi/magicmissile.png | Bin 0 -> 364 bytes .../Objects/Magic/magicactions.rsi/meta.json | 11 +- .../Projectiles/magic.rsi/arcane_barrage.png | Bin 0 -> 356 bytes .../Guns/Projectiles/magic.rsi/blastwave.png | Bin 0 -> 906 bytes .../Guns/Projectiles/magic.rsi/bluespace.png | Bin 0 -> 3507 bytes .../Guns/Projectiles/magic.rsi/chronobolt.png | Bin 0 -> 320 bytes .../Guns/Projectiles/magic.rsi/cryoshot.png | Bin 0 -> 249 bytes .../Guns/Projectiles/magic.rsi/declone.png | Bin 0 -> 325 bytes .../Guns/Projectiles/magic.rsi/energy.png | Bin 0 -> 384 bytes .../Guns/Projectiles/magic.rsi/energy2.png | Bin 0 -> 395 bytes .../Guns/Projectiles/magic.rsi/energy3.png | Bin 0 -> 417 bytes .../Guns/Projectiles/magic.rsi/fireball.png | Bin 0 -> 1483 bytes .../Guns/Projectiles/magic.rsi/ice.png | Bin 0 -> 334 bytes .../Projectiles/magic.rsi/infernoshot.png | Bin 0 -> 468 bytes .../Guns/Projectiles/magic.rsi/magicm.png | Bin 0 -> 488 bytes .../Guns/Projectiles/magic.rsi/meta.json | 128 ++++++++++++++++++ .../Guns/Projectiles/magic.rsi/spell.png | Bin 0 -> 352 bytes .../Guns/Projectiles/magic.rsi/spellcard.png | Bin 0 -> 371 bytes 29 files changed, 231 insertions(+), 3 deletions(-) create mode 100644 Content.Server/Magic/Events/ProjectileSpellEvent.cs create mode 100644 Resources/Audio/Magic/fireball.ogg create mode 100644 Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/magic.yml create mode 100644 Resources/Prototypes/Magic/projectile_spells.yml create mode 100644 Resources/Textures/Objects/Magic/magicactions.rsi/fireball.png create mode 100644 Resources/Textures/Objects/Magic/magicactions.rsi/gib.png create mode 100644 Resources/Textures/Objects/Magic/magicactions.rsi/magicmissile.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/arcane_barrage.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/blastwave.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/bluespace.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/chronobolt.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/cryoshot.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/declone.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/energy.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/energy2.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/energy3.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/fireball.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/ice.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/infernoshot.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/magicm.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/spell.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/spellcard.png diff --git a/Content.Server/Magic/Events/ProjectileSpellEvent.cs b/Content.Server/Magic/Events/ProjectileSpellEvent.cs new file mode 100644 index 0000000000..4867dc1407 --- /dev/null +++ b/Content.Server/Magic/Events/ProjectileSpellEvent.cs @@ -0,0 +1,20 @@ +using Content.Shared.Actions; +using Content.Shared.Sound; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server.Magic.Events; + +public sealed class ProjectileSpellEvent : WorldTargetActionEvent +{ + /// + /// What entity should be spawned. + /// + [DataField("prototype", required: true, customTypeSerializer: typeof(PrototypeIdSerializer))] + public string Prototype = default!; + + /// + /// Gets the targeted spawn positions; may lead to multiple entities being spawned. + /// + [DataField("posData")] public MagicSpawnData Pos = new TargetCasterPos(); +} diff --git a/Content.Server/Magic/MagicSystem.cs b/Content.Server/Magic/MagicSystem.cs index 6ee0f01dcf..bfb4127bf5 100644 --- a/Content.Server/Magic/MagicSystem.cs +++ b/Content.Server/Magic/MagicSystem.cs @@ -4,7 +4,9 @@ using Content.Server.Decals; using Content.Server.DoAfter; using Content.Server.Doors.Components; using Content.Server.Magic.Events; +using Content.Server.Popups; using Content.Server.Spawners.Components; +using Content.Server.Weapon.Ranged.Systems; using Content.Shared.Actions; using Content.Shared.Actions.ActionTypes; using Content.Shared.Doors.Components; @@ -33,6 +35,7 @@ public sealed class MagicSystem : EntitySystem [Dependency] private readonly SharedDoorSystem _doorSystem = default!; [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; [Dependency] private readonly DoAfterSystem _doAfter = default!; + [Dependency] private readonly GunSystem _gunSystem = default!; public override void Initialize() { @@ -47,7 +50,7 @@ public sealed class MagicSystem : EntitySystem SubscribeLocalEvent(OnTeleportSpell); SubscribeLocalEvent(OnKnockSpell); SubscribeLocalEvent(OnWorldSpawn); - + SubscribeLocalEvent(OnProjectileSpell); } private void OnInit(EntityUid uid, SpellbookComponent component, ComponentInit args) @@ -142,6 +145,20 @@ public sealed class MagicSystem : EntitySystem args.Handled = true; } + private void OnProjectileSpell(ProjectileSpellEvent ev) + { + if (ev.Handled) + return; + + var xform = Transform(ev.Performer); + + foreach (var pos in GetSpawnPositions(xform, ev.Pos)) + { + var ent = Spawn(ev.Prototype, pos.SnapToGrid(EntityManager, _mapManager)); + _gunSystem.ShootProjectile(ent,ev.Target.Position - Transform(ent).MapPosition.Position, ev.Performer); + } + } + private List GetSpawnPositions(TransformComponent casterXform, MagicSpawnData data) { switch (data) diff --git a/Content.Server/Weapon/Ranged/Systems/GunSystem.cs b/Content.Server/Weapon/Ranged/Systems/GunSystem.cs index 0e9f2efe6e..3d7cde1f99 100644 --- a/Content.Server/Weapon/Ranged/Systems/GunSystem.cs +++ b/Content.Server/Weapon/Ranged/Systems/GunSystem.cs @@ -154,7 +154,7 @@ public sealed partial class GunSystem : SharedGunSystem }, false); } - private void ShootProjectile(EntityUid uid, Vector2 direction, EntityUid? user = null) + public void ShootProjectile(EntityUid uid, Vector2 direction, EntityUid? user = null) { var physics = EnsureComp(uid); physics.BodyStatus = BodyStatus.InAir; diff --git a/Resources/Audio/Magic/fireball.ogg b/Resources/Audio/Magic/fireball.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e6dbad210b19554317a8bc26905500ca3d3b261b GIT binary patch literal 28297 zcmagG1ymhDvo1OtcXtaAY~!xMgZswagS$Hf9^T& zzPIk3)%5D=ny%`u`l`FSXErKUR_Xu@@Sn?1>0jYnPX8wm1<2FM)y&52xe65A{+~y@ zKz|D@AeHBq|Lb~g`AlIWux-Q=`t$#~zQF!t!~~`5*f?9Ws<>KF+S{0E{bf%nN6E>~ z!O70a&PB}u&|>F5rA<_&`X*Ay%vsRaU%pfwzdl!L+3ahd>t1pp>AV2s2! za^Rw*JO-cCB-!WEAp3{Zqz{8c=209&|CLd4Ti^o#91zTa98+*8XFDliMMNLtnk!(V z%wIx@7^$``fZX?!&fKxMq1euG5=@JPt_u%9^&%!q6@~|S°H!ik{SdotG%s*+4s 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 V|E*2KDRzni;hZ7{sC7>Y?A!U;_G zt7UZo0Vn862H>$5RZRBGvyu=31V`XG!#Q5PQX=pGz6|Qy@*B%=uK2T&7_n2WI!=aK4-X`#V5#Y2QRXqp{^Yh^1rKqhJu!*t<2+n<{a0?!uP~b>|)0@U%4nY|% zD$lVMh$W`D|J(u^zuvisS^#zJ3AF|8)pJzG`3Dqh!aqtb^x{m+Ui_` zga}>-dp;jWdZ?Ya36mt?9ybndXu79`@HBioh8p~00000NkvXXu0mjfS}5g> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Magic/magicactions.rsi/gib.png b/Resources/Textures/Objects/Magic/magicactions.rsi/gib.png new file mode 100644 index 0000000000000000000000000000000000000000..d18136d8ae297ee2cac430ac4d90eeca49c70054 GIT binary patch literal 988 zcmV<210(#2P)Z0<15__&?#c>d#=JL6*`68OR8 zy#Md}ALrf~4;?d31e^#s5pXC0qxJPpegOo8gRbav2d(e`%TpouSWx_v!J zmd{U4)|T^HkPyQn7;-G?#XVmV0Zs!cF`WOG9d{jHbt66Kyh0y8P0^jMn?#wvlKjWg zPkPk*P@Z*GeoHa)?>-QxfK(m0Bg0Yfu=nmXn8gQxd@=Tws;xhg9Q~$-Gt_+PvLuEO zjBj0QqpY2!$L}XB?L8B-eG!e42#?E2}HC zRY=M7F(C?&gniV28y-z)T(3TL3sOp{omr#kT$Hx9x2dVEoqok*w7RxRHU1hcg2^Xm zCMl6D=t!E5G0ZgR2=EIA2l={j=)!X``YiTrZf?=^?6h#rpF{7MAqsGfk3Sc6hNE)AA*>^>zoDh@L1ooN^*16s-T7dZ#G!I1h zwX8^!2mB@|N3h?#7T|vI=mUng?oTr?;P*Sj;)dX+jM#S3Cmb#2c^xglHpVL}ot{F$ zI`9XHV|dMdHUiQSbd+%bWEf-5fD(ay!>W%t7ONvr4)E@3p+F=aX;cAo<4OoTU{5fX zDH7x(YOhHIK}p+oIJ$ghPXTISzmWAPF#D#=CoVx9D`*9@dhww zFU6&>Xh*9m?9T-*Gj9fD$?fvV&3+u7gL@6{4_APMWeYOJNtjy}0Z{?C3YdLHc;e`w zX$>KQ6`)M3{9oXp06vh?th%6D03b+<_zf5QHNXRid7jYp1j-%&0000< KMNUMnLSTXzWs|l5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Magic/magicactions.rsi/meta.json b/Resources/Textures/Objects/Magic/magicactions.rsi/meta.json index e8acf68246..9bf76bbe77 100644 --- a/Resources/Textures/Objects/Magic/magicactions.rsi/meta.json +++ b/Resources/Textures/Objects/Magic/magicactions.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/Citadel-Station-13/Citadel-Station-13/commit/78db6bd5c2b2b3d1f5cd8fd75be3a39d5d929943", + "copyright": "https://github.com/Citadel-Station-13/Citadel-Station-13/commit/78db6bd5c2b2b3d1f5cd8fd75be3a39d5d929943 andhttps://github.com/tgstation/tgstation/commit/906fb0682bab6a0975b45036001c54f021f58ae7 ", "size": { "x": 32, "y": 32 @@ -18,6 +18,15 @@ }, { "name": "blink" + }, + { + "name": "fireball" + }, + { + "name": "magicmissile" + }, + { + "name": "gib" } ] } \ No newline at end of file diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/arcane_barrage.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/arcane_barrage.png new file mode 100644 index 0000000000000000000000000000000000000000..01c0e4defd197f1a10fa7b331886779913f46d3e GIT binary patch literal 356 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/chronobolt.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/chronobolt.png new file mode 100644 index 0000000000000000000000000000000000000000..d01c2f42527818508f7e89f2e9ab8929309cfe0f GIT binary patch literal 320 zcmV-G0l)rPBfP_y>X~=mFgMv+YXo03J^8079X3 ztKdll!9NIvP}7*6^1{z0bPMxaaUE)HKV&8fB=FOP7hVE z4)86E5z#pSnvKTna5>ut0QZxPVZYt^^nbnGuwfM01%Q&zCsV#mQ^^oAl7!?_u!v(` zjU@>HMn=0#VVEY)Z|_)9gRc{ub(*k+WSDJ u#j?MwKBC@hukYhXSjnN#z`(@ufpOPs)6-AB+iV6po59o7&t;ucLK6UPI$Hk# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/declone.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/declone.png new file mode 100644 index 0000000000000000000000000000000000000000..a58e39c967d776610d444ac1a09e01aa78b54a7f GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DEQse z#WAE}&fBSpe1{b{T5~r^7pj*pD_mZ##@^K%yGee-*1ycB)ov|&|9Iiu#dl;lColj} zVMBOk`_Iie*BLu3E*5ffi8Op*o?-FC+vw$^MLv!l1>7MrpJwj-rXXb3kh%BI3X7>1 z+viO__n_<{JA23+-Sx7{LV685-*W_MepEV@eD>YP1wUjC+^Cs0Ez4`qnu(V=#2F&0 zqE~uuG)h>%#p~GPh!eIJKSdI59Pp|3-%x&dKmQ$uEJK4RI&mbjX V_jRfB&wxR|;OXk;vd$@?2>^!*hD!hd literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/energy.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/energy.png new file mode 100644 index 0000000000000000000000000000000000000000..6e342dc484d90962d79dc1e6ce9ab55ba0a673f8 GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|TRx zr;B4q#hkY@FY-1U@VM}=l)lJm#WQ!MWE*FKn$+?Z#y1@%yQ*s@%oq4M^M;0vgP+d< zv-MB^-HDeF+20`Z$LN3CNtcod8)WvgEIGM@4ks(l{V^?jRL{JsrMQRBg=zhfZ3hlq-M>hRp~#6T>dV7>J6N~8 zIxM*D@#bgx6Z~Qy@Nama%gLGl-S`eu)Ypd`+wxQ@l)td`?D?+koZl$s;gC}FmgW3Q z+c#kyoEoAQ3&pRoy_NHH@Njs4W_v`uDZ>*Fh7%JRCMYv1xHCEQu{6kVGFS=;%v>Y9 z@SM7nuEZ~w6|AdZa&sm$h}EZ6Eq;%#o}owuW{|V~18&75Y5OB4ze)uLDTAl0pUXO@ GgeCyyER`z& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/energy2.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/energy2.png new file mode 100644 index 0000000000000000000000000000000000000000..7977e0fd112b6c2863046ebd1e84a66ecff21161 GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|TS2 zr;B4q#hkY@75kVR1zh(>v_~{5>zFINK9FpAz)EKMp@-iXZhU;eVb0JLy^+bk>%z$w z>-eUg`hVW%yvp2}RadW?&ivWX{5S3D&BA^6^d?NnVifyx{mpYzx9OoyQyYZ-Jg>O5 z`&%97_Q&sbGP&PB{p$BFF9jj)eJTfzZ53L@60uD8@zXy=KUhOKC2BbZ4@Mt5?5$w+ zdfox<%bR|y>G6v zNh>hUJGoStr)}~S*#iZf8y@5;pX%{;D0#M)w`#ufSGfyHj4N5UI50W%u{6kVGFS>R z6sa&g@nASHkzvAO|D<^*f2mBf_{{p2QNbOeW_p8IecGan)nFCMaA9Pv3&lS$wD+f( V&iMO$E--W%JYD@<);T3K0RWzRpc4Q9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/energy3.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/energy3.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a739990f9c9caf02c631cbbb2f1c959119fc71 GIT binary patch literal 417 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|R5Q zr;B4q#hkY@ZM|3=1zO`DXr4K8#Mk_)hshTvuDHVac({6L! z?eV&{MHTP8pRrd}y;{BQUD`7S#&`PDh5NhDzP0SSq}y=t{Ilb~i*=T-657SG<-zlC z_xkTbDm@a73x!U!9K3H6^C#}>>Gwhh&dvB(_IKOwh7isP|Ama2?th;d!*nxJ{$l-2 z%LEZIfy_O-ZvVUT;OphglbjPuxD!6)%5OMSwn}SZ3Fn^ub-w5O^(|L37@s?{y;$YI zgPoF5Iltx$N-^F%Ja1+{i@(?O0~|UEmv*dWQBQAI4QCJ%I`E+UwSS13ih}j$7`Dal z1FQHXCN^ARa!X(oIL@Td$Lb)%-C!ZcP^iQ3D1zb0NA-;!$@N0obAGlxXXr=eYk4z>A1C1rJt15UeK^Qjl6vu_vKK*eZp3a6zo|rZdT8yGgU}&CEK|XBNO9 zpG-ODTm;+vnFKJ&H^(2mFwc!`T%V@~kthGa0wl>N9@o0guZv?YMM&j8J_hlT!%%+t zmCQeo0DZ~VzRRD%W3EKlm0#>r`F9nd7dZmSZ3K}gKm9u3(&0|D<+6YhqXc5{YU+RUUHEI8%TiUI`F1?@5PK<2RZ?K{0vZYH2-_9Lw7FaGXiE;%VOHaP`^`^0bufY z%qNg@MhTDH)WvsT0g_di6;)Wg{1j%6@dDuRV-b)aR_VVt(+Dtw(2x}nTbve3hzdAD zFA+FXFY^>Yf>);?s%Z< zt5fk7E`GIUqY{ljko%NEur7p@2yex9?#G!UONU;sodyq3BXFDd-18;Q2xMOgVh}=v zC%%%m&1>bukO=0A2wvBR95qLG6hI`Y z(NzEe1Q9fcNRR%!H(0dfuslL(L3nAA z8x9pN7zPRG^yeKKB+~htJ4YeWqmWquB#@2Cs&OTnhe1Luy4alMfaDPA`T@s_UvGzs zN?y0fI|VqY-s-_2qRH=ju0Fy{zS|!F;MyP1)t}D+*pRJ@G)@8mq%|PLDdJ`5CwN<`>R1GF0mzG>8H~?wgcXPY zs6eD!)94kztxvOrE&`_jBmuN10FyO*0q^h_c!ns#g4oRIxb~c$*q5bcP8|U)?9F3) z`tQ>EH?{9AdCiSm9Sa_pF}z;O^t-4YA?XLu``{UdA3<{KSSa9lgmUu(B>6e96wOf> zaTEf;h$C2kfGq^+53q^g`~kKRls~`)g7F8q0^1*e;PmJ72Fo9S=+~OY_x|r9u-oGj zs!x|31+e{1&3_Hn^8?zja1(Q0U_U<~bl7=*fU5rb?Vq{y2sp6w`~U^ho`Uxh4fi6b z@89n+_eJt2U?>+sP@@3-0luFd;s7Ln01kBtV+x=sA;OA3K*PI7zyf#zXp=&~;Ew=> z5UYoynTM*XZy9fkH0n4-w2tI z&k>o5t^WW3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/ice.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/ice.png new file mode 100644 index 0000000000000000000000000000000000000000..2bd8d15638231bb3e275ce35242e0d618c0f0ba7 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv(mfq{|1 z)5S5QV$R#C)_jKyc-oqe7|xiHkhCB={{nMyb55*PYv;=E4N;Yrih*;d3k2ze`p!N6 z|7h7I<=-1i8~83T{u4>4o8SEJ;fE~l2VC)c;}U-fJG@{Bi{ZYnq^!yz*u?gr>v+q? z`8*RRF~!$>`L&Z>Nu&E6a|?H#jqS}A+1E!KHx!pIa_D8aw^uNHQO@tSbSHr)8Y%ag z70m9ZRtE@JhLs5NuDP>`G2ys&)^@fFJ6rA)ao9hR;m+U3zS(uhhOFfbtA6}eDTr;j zAwDOXCxO>pQAeY9PqkG;FH_u&{et3O#nSvt8!TAN9`>k4-O{|kecWNz|32=PS4<&W efX=r%!2a!ENSO2ajfTJgV(@hJb6Mw<&;$T&+<~P4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/infernoshot.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/infernoshot.png new file mode 100644 index 0000000000000000000000000000000000000000..f98259a142d4b6a182a94db6ced1fc7330e88405 GIT binary patch literal 468 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|R55 zr;B4q#hkaZ42zl#1YGOWf?jY;(F-o(nQF%-JH@ie`%+=g6q&=RUeoQE<}Pk!@OwGc zttajO?8Fq&wCU|CCW~v^3pE&yEo6{rXG)OaY5;OtjeM`y{e2sAH}m~su?bp?rEdx| z=Kp#n6T-BO<&|*3URPBC(Q4H%TP^qKJcwtS%Kpkwi_vsy%P-FB?mNCDe$8&M*~7Aa ziLrvXQe;ZKR8ISMloeo#n)8K5^{LW^NZ}8^{V(bt6<}2>2_mD20zoIw5 zp#H?+Oif-nfd+e_&pfi dF)cc$Z*MpMWa)-IA;4&2@O1TaS?83{1OWMewg&(J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/magicm.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/magic.rsi/magicm.png new file mode 100644 index 0000000000000000000000000000000000000000..6fc60958e72a7adba19b171bd1e2229f8cd7bb05 GIT binary patch literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|VnM zPZ!6KiaBp*#pX2|2(+-TH2>u7A9Bvc|BCqh&SN6VkF6$_{av1szNF*Bl!;S0Ghe|)K+vERg{chGzOpnU@|9R~Vj%T0h!tn2+zQ~2m-0R+X?|odp z{_}Gk1xt$wdwUr(PygQUf8OxHhx>m2x4ixPSK?&-D=P)5Wvo3r{ujSL#5%!?=fSI{ zJ2J`34n~VFlQQK!rgW(2T62K+|5c6!*Mt+i>(4P6=rJ`E3Nm22+m!(#<#4wDarCUz zxl{Nv9;`pjo)c-8V9;?`ztVH}Ze#fkeJ9v+^gl87*X~t(qF#TMY3~2(=ggnpa-ICd zc>8mS+u2Zo-}aLy|1K7rAR}|)8S{gsGx%Rvu*v*;=PIu8=f1W4gnao){2j3Yr`UOB zuyw~qT&&$yb0E{?wd0DV^|5vdbLa3!%;aAo1_?^2lV-Ai;9f6%s+sxI&17KIF?hQA KxvX;Bh&Bq4y2vE}!&QMspQro?NTYcER7 zAKd(XdR~9fyND^7jN5)zNu_(-=wmWDek+*i*t6HycWbNWEN8k=5!O_7;Ec-ZFBbog z^}YVx5Nh+5Ln56s(su*vn%7oL+U5Tns~Aoca&}}m-Spw^IF-o%ck?>c057gTOxu2P z$zNt#RCL3+ipT8egI^vE>7P8Bf;f^dY&iS=#A12h9Vtf>%AR_cas6QyVklB!c;dlu zVj{x?Wkv;eCWk(j2AR7Ym1^ntIb1h<=?!3c1s9&)&|z!dAxGsGaV>vsyf+0T?s5g@Zvot; z5yQR;E+5H8z0ewf&Yxu@dx}|va}TWYRwDow!t4(+Wdcr*|9b#*1S3rW-DCDgbFvJf z5nyjZr4KZF^8gwF)P_}tn@%AlMgaDSCIB%;4=Ax;E0thV@>PCN?E~zHI0->Shm@!+ zW{4^$q@f#}G$2A~BXV;ZozVn9UpR;hJg*16N