From a6359ea097c30c9385d21d633ac2e9efc2ef55a8 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Sat, 22 Nov 2025 14:32:59 -0500 Subject: [PATCH] Ports new Proto-Kinetic Guns (#30813) * Ports new Proto-Kinetic Guns * Linters * Spellcheck * Update kinetic_accelerator.dm * Update code/modules/projectiles/guns/energy/kinetic_accelerator.dm Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> * Projectile changes --------- Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --- code/modules/mining/machine_vending.dm | 8 ++ .../guns/energy/kinetic_accelerator.dm | 119 ++++++++++++++++++ icons/obj/guns/energy.dmi | Bin 47127 -> 49313 bytes sound/weapons/beam_sniper.ogg | Bin 0 -> 28725 bytes sound/weapons/cannon.ogg | Bin 0 -> 14185 bytes 5 files changed, 127 insertions(+) create mode 100644 sound/weapons/beam_sniper.ogg create mode 100644 sound/weapons/cannon.ogg diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 84c09079150..071e9bcf1dd 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -60,6 +60,10 @@ prize_list["Kinetic Weapons"] = list( EQUIPMENT("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), EQUIPMENT("Kinetic Crusher", /obj/item/kinetic_crusher, 750), + EQUIPMENT("Kinetic Railgun", /obj/item/gun/energy/kinetic_accelerator/railgun, 1500), + EQUIPMENT("Kinetic Repeater", /obj/item/gun/energy/kinetic_accelerator/repeater, 1500), + EQUIPMENT("Kinetic Shotgun", /obj/item/gun/energy/kinetic_accelerator/shotgun, 1500), + EQUIPMENT("Kinetic Shockwave", /obj/item/gun/energy/kinetic_accelerator/shockwave, 1500), EQUIPMENT("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 150), EQUIPMENT("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000), EQUIPMENT("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000), @@ -396,6 +400,10 @@ prize_list["Kinetic Weapons"] = list( EQUIPMENT("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), EQUIPMENT("Kinetic Pistol", /obj/item/gun/energy/kinetic_accelerator/pistol, 500), + EQUIPMENT("Kinetic Railgun", /obj/item/gun/energy/kinetic_accelerator/railgun, 1500), + EQUIPMENT("Kinetic Repeater", /obj/item/gun/energy/kinetic_accelerator/repeater, 1500), + EQUIPMENT("Kinetic Shotgun", /obj/item/gun/energy/kinetic_accelerator/shotgun, 1500), + EQUIPMENT("Kinetic Shockwave", /obj/item/gun/energy/kinetic_accelerator/shockwave, 1500), EQUIPMENT("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 150), EQUIPMENT("KA AoE Damage", /obj/item/borg/upgrade/modkit/aoe/mobs, 2000), EQUIPMENT("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000), diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index bb9217415ae..d11834c1eff 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -181,6 +181,86 @@ origin_tech = "combat=5;powerstorage=3;engineering=5" max_mod_capacity = 200 +/obj/item/gun/energy/kinetic_accelerator/railgun + name = "proto-kinetic railgun" + desc = "A heavy-duty proto-kinetic accelerator that uses highly overclocked coils to fire a kinetic projectile at staggering speeds." + icon_state = "kineticrailgun" + base_icon_state = "kineticrailgun" + w_class = WEIGHT_CLASS_HUGE + overheat_time = 3 SECONDS + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/railgun) + weapon_weight = WEAPON_HEAVY + max_mod_capacity = 15 // A crumb of mod capacity as a treat + recoil = 3 // railgun go brrrrr + +/obj/item/gun/energy/kinetic_accelerator/railgun/examine_more(mob/user) + . = ..() + . += "Before the nice streamlined and modern day Proto-Kinetic Accelerator was created, multiple designs were drafted by the Mining Research and Development \ + team. Many were failures, including this one, which came out too bulky and too ineffective. Recently the MR&D Team got drunk and said 'fuck it we ball' and \ + went back to this bulky design, overclocked it, and made it functional; turning it into what is essentially a literal man portable particle accelerator. \ + The design results in a massive hard to control blast of kinetic energy, with the power to punch right through creatures and cause massive damage. The \ + only problem with the design is that it is so bulky you need to carry it with two hands, and the technology has been outfitted with a special firing pin \ + that denies use near or on the station, due to its destructive nature." + +/obj/item/gun/energy/kinetic_accelerator/railgun/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) + if(is_station_level(loc.z)) + to_chat(user, "[src] clicks. Its internal safety prevents it from firing near the station.") + return + return ..() + +/obj/item/gun/energy/kinetic_accelerator/repeater + name = "proto-kinetic repeater" + desc = "A proto-kinetic accelerator boasting deeper capacitors for prolonged firing solutions." + icon_state = "kineticrepeater" + base_icon_state = "kineticrepeater" + overheat_time = 2 SECONDS + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/repeater) + max_mod_capacity = 75 + +/obj/item/gun/energy/kinetic_accelerator/repeater/examine_more(mob/user) + . = ..() + . += "During the pizza party celebrating the release of the new crusher designs, the Mining Research and Development team members were only allowed one slice. \ + One member exclaimed 'I wish we could have more than one slice' and another replied 'I wish we could shoot the accelerator more than once' and thus, the repeater \ + was born. The repeater trades a bit of power for the ability to fire three shots before becoming empty, while retaining the ability to fully recharge in one \ + go. The extra technology packed inside to make this possible unfortunately reduces mod space meaning you can't carry as many mods compared to a regular accelerator." + +/obj/item/gun/energy/kinetic_accelerator/shotgun + name = "proto-kinetic shotgun" + desc = "A sleek proto-kinetic accelerator with an integrated scattering system, allowing for multiple kinetic blasts to be released simultaneously." + icon_state = "kineticshotgun" + base_icon_state = "kineticshotgun" + overheat_time = 2 SECONDS + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/shotgun) + weapon_weight = WEAPON_HEAVY + max_mod_capacity = 75 + +/obj/item/gun/energy/kinetic_accelerator/shotgun/examine_more(mob/user) + . = ..() + . += "During the crusher design pizza party, one member of the Mining Research and Development team brought out a real riot shotgun, and killed three \ + other research members with one blast. The MR&D Director immediately thought of a genius idea, creating the proto-kinetic shotgun moments later, which he \ + immediately used to execute the research member who brought the real shotgun. The proto-kinetic shotgun trades off some mod capacity and cooldown in favor \ + of firing three shots at once with reduced range and power. The total damage of all three shots is higher than a regular PKA but the individual shots are weaker. \ + Looks like you need both hands to use it effectively." + +/obj/item/gun/energy/kinetic_accelerator/shockwave + name = "proto-kinetic shockwave" + desc = "A short-range portable cannon that fires a kinetic slug into the ground, allowing it to split and strike in all directions." + icon_state = "kineticshockwave" + base_icon_state = "kineticshockwave" + overheat_time = 2 SECONDS + ammo_type = list(/obj/item/ammo_casing/energy/kinetic/shockwave) + max_mod_capacity = 75 + +/obj/item/gun/energy/kinetic_accelerator/shockwave/examine_more(mob/user) + . = ..() + . += "Quite frankly, we have no idea how the Mining Research and Development team came up with this one, all we know is that alot of \ + beer was involved. This proto-kinetic design will slam the ground, creating a shockwave around the user, with the same power as the base PKA.\ + The only downside is the lowered mod capacity, the lack of range it offers, and the higher cooldown, but it's pretty good for clearing rocks." + +/obj/item/gun/energy/kinetic_accelerator/shockwave/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) + target = get_edge_target_turf(user, user.dir) + return ..() + //Casing /obj/item/ammo_casing/energy/kinetic projectile_type = /obj/projectile/kinetic @@ -189,6 +269,25 @@ e_cost = 500 fire_sound = 'sound/weapons/kenetic_accel.ogg' // fine spelling there chap +/obj/item/ammo_casing/energy/kinetic/railgun + projectile_type = /obj/projectile/kinetic/railgun + fire_sound = 'sound/weapons/beam_sniper.ogg' + +/obj/item/ammo_casing/energy/kinetic/repeater + projectile_type = /obj/projectile/kinetic/repeater + e_cost = 150 // Three shots + +/obj/item/ammo_casing/energy/kinetic/shotgun + projectile_type = /obj/projectile/kinetic/shotgun + pellets = 6 + variance = 50 + +/obj/item/ammo_casing/energy/kinetic/shockwave + projectile_type = /obj/projectile/kinetic/shockwave + pellets = 8 + variance = 360 + fire_sound = 'sound/weapons/cannon.ogg' + /obj/item/ammo_casing/energy/kinetic/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") ..() if(loc && istype(loc, /obj/item/gun/energy/kinetic_accelerator)) @@ -223,6 +322,26 @@ damage = 50 pressure_decrease = 0.5 +/obj/projectile/kinetic/railgun + name = "hyper kinetic force" + damage = 75 + range = 6 + pressure_decrease = 0.10 // Pressured environments are a no go for the railgun + pass_flags = PASSMOB + +/obj/projectile/kinetic/repeater + name = "rapid kinetic force" + damage = 20 + range = 4 + +/obj/projectile/kinetic/shotgun + name = "split kinetic force" + damage = 10 + +/obj/projectile/kinetic/shockwave + name = "concussive kinetic force" + range = 1 + /obj/projectile/kinetic/Destroy() kinetic_gun = null return ..() diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index 0379f8881d3087e20a9c27e62df30e6efbffc8dd..caec66b5413faf574e52cc67b4b97bbb5d80d31b 100644 GIT binary patch delta 27413 zcmaHTcUTkMyKN8zED=-`=>jTBRl2l*NS7uZga}A)(xqiU6l{Qkf^?)KCG-xVC@8&$ z9+95VAp}y$o$vddbMLu-+?(gwPln0N?Abdz?|Ro-?~t@}>RSZu#~XlVu(7${LkC}b zAD8ETE?%Ax$cwbRw0_S;X_nXM-$vIYtelty4y&uy?B3CNgiD{6t6JC2y4mHJ!xI_5 zsg>DU`Dp6KO=3pxbw*}}RsQ}?q4=a+iuWFF(Mx|YAsUuh7Wf$bT~Gk^XeHAVi98f^ zo7j9$YQh!Q7#I8dh8hAg*`GEud2IGNVX!A~2W|8w%n@xSX34U5R41VGJ>FP4JCWV! z=DOwD7rLL7lagMG)3x5oeLrWud5n@I3LSEUDv$IW=6gTnwb~bLTVU@O#+IukK1QDE z>r1+c6db&7Ir*Dcm304^vsv`{%~D%&llKmK8ihiua)0c~&xq0kB=G&pMejq^b8|sG% zg3@2zJi7$d%a&rVLi%af5c`nERfX`arpwHir!9M^ORhR%%zE0@)B)v3#=j+z+Bd#` zV2=H61NSn{8s6Uz0aA3EGA}A*>skxsWeZ0vf6Y^~a^%0bU1lBTia+%zrG**sOd