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>
This commit is contained in:
PollardTheDragon
2025-11-22 14:32:59 -05:00
committed by GitHub
parent d6ed342a6d
commit a6359ea097
5 changed files with 127 additions and 0 deletions
@@ -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, "<span class='warning'>[src] clicks. Its internal safety prevents it from firing near the station.</span>")
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 ..()