diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm
index b7c62bb1644..0fed81d7bb8 100644
--- a/code/game/asteroid.dm
+++ b/code/game/asteroid.dm
@@ -92,7 +92,7 @@ var/global/max_secret_rooms = 6
theme = "cavein"
walltypes = list(/turf/closed/mineral/random/high_chance=1)
floortypes = list(/turf/open/floor/plating/asteroid/basalt, /turf/open/floor/plating/beach/sand)
- treasureitems = list(/obj/mecha/working/ripley/mining=1, /obj/item/weapon/pickaxe/drill/diamonddrill=2,/obj/item/weapon/gun/energy/kinetic_accelerator/hyper=1,
+ treasureitems = list(/obj/mecha/working/ripley/mining=1, /obj/item/weapon/pickaxe/drill/diamonddrill=2,
/obj/item/weapon/resonator/upgraded=1, /obj/item/weapon/pickaxe/drill/jackhammer=5)
fluffitems = list(/obj/effect/decal/cleanable/blood=3,/obj/effect/decal/remains/human=1,/obj/item/clothing/under/overalls=1,
/obj/item/weapon/reagent_containers/food/snacks/grown/chili=1,/obj/item/weapon/tank/internals/oxygen/red=2)
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 03a596a3939..793e1bd0803 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -209,7 +209,7 @@
for(var/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg/H in R.module.modules)
qdel(H)
- R.module.modules += new /obj/item/weapon/gun/energy/kinetic_accelerator/hyper/cyborg(R.module)
+ R.module.modules += new /obj/item/weapon/gun/energy/kinetic_accelerator/cyborg/hyper(R.module)
R.module.rebuild()
return 1
diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm
index aa0f56f0bff..7408cd520ed 100644
--- a/code/modules/mining/abandoned_crates.dm
+++ b/code/modules/mining/abandoned_crates.dm
@@ -65,7 +65,7 @@
if(57 to 58)
new /obj/item/toy/syndicateballoon(src)
if(59 to 60)
- new /obj/item/weapon/gun/energy/kinetic_accelerator/hyper(src)
+ new /obj/item/modkit/projectile_mod(src)
new /obj/item/clothing/suit/space(src)
new /obj/item/clothing/head/helmet/space(src)
if(61 to 62)
diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index e0dad1897ff..6fa00908eb8 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -38,6 +38,9 @@
new /datum/data/mining_equipment("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 2000),
new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/weapon/pickaxe/diamond, 2000),
new /datum/data/mining_equipment("Super Resonator", /obj/item/weapon/resonator/upgraded, 2500),
+ new /datum/data/mining_equipment("KA Range Increase", /obj/item/modkit/range, 1000),
+ new /datum/data/mining_equipment("KA Damage Increase", /obj/item/modkit/damage, 1000),
+ new /datum/data/mining_equipment("KA Cooldown Decrease",/obj/item/modkit/cooldown, 1000),
new /datum/data/mining_equipment("Point Transfer Card", /obj/item/weapon/card/mining_point_card, 500),
new /datum/data/mining_equipment("Mining Drone", /mob/living/simple_animal/hostile/mining_drone, 800),
new /datum/data/mining_equipment("Drone Melee Upgrade", /obj/item/device/mine_bot_ugprade, 400),
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index f1887a4f5b4..9001dd964d5 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -29,6 +29,14 @@
else
power_supply = new(src)
power_supply.give(power_supply.maxcharge)
+ update_ammo_types()
+ if(selfcharge)
+ START_PROCESSING(SSobj, src)
+ update_icon()
+ return
+
+
+/obj/item/weapon/gun/energy/proc/update_ammo_types()
var/obj/item/ammo_casing/energy/shot
for (var/i = 1, i <= ammo_type.len, i++)
var/shottype = ammo_type[i]
@@ -37,10 +45,6 @@
shot = ammo_type[select]
fire_sound = shot.fire_sound
fire_delay = shot.delay
- if(selfcharge)
- START_PROCESSING(SSobj, src)
- update_icon()
- return
/obj/item/weapon/gun/energy/Destroy()
STOP_PROCESSING(SSobj, src)
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index 4d5d8ffa6a2..608215ae631 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -1,6 +1,6 @@
/obj/item/weapon/gun/energy/kinetic_accelerator
name = "proto-kinetic accelerator"
- desc = "A self recharging, "
+ desc = "A self recharging, ranged mining tool that does increased damage in low pressure. Capable of holding up to six slots worth of mod kits."
icon_state = "kineticgun"
item_state = "kineticgun"
ammo_type = list(/obj/item/ammo_casing/energy/kinetic)
@@ -17,16 +17,22 @@
var/unique_frequency = FALSE // modified by KA modkits
var/overheat = FALSE
- var/list/max_mod_capacity = 2
+ var/max_mod_capacity = 6
var/list/modkits = list()
+/obj/item/weapon/gun/energy/kinetic_accelerator/examine(mob/user)
+ ..()
+ for(var/A in modkits)
+ var/obj/item/modkit/M = A
+ user <<"There is a [M.name] mod installed."
/obj/item/weapon/gun/energy/kinetic_accelerator/attackby(obj/item/A, mob/user)
if(istype(A, /obj/item/weapon/crowbar))
if(modkits.len)
user << "You pry the modifications out."
+ playsound(loc, 'sound/items/Crowbar.ogg', 100, 1)
for(var/obj/item/modkit/M in modkits)
- M.forceMove(get_turf(user))
+ M.uninstall(src)
else
user << "There are no modifications currently installed."
else if(istype(A, /obj/item/modkit))
@@ -39,6 +45,8 @@
return
else
user << "You install the modkit."
+ playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1)
+ user.unEquip(MK)
MK.install(src)
else
..()
@@ -52,9 +60,8 @@
holds_charge = TRUE
unique_frequency = TRUE
-/obj/item/weapon/gun/energy/kinetic_accelerator/hyper/cyborg
- holds_charge = TRUE
- unique_frequency = TRUE
+/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg/hyper
+ ammo_type = list(/obj/item/ammo_casing/energy/kinetic/hyper)
/obj/item/weapon/gun/energy/kinetic_accelerator/New()
. = ..()
@@ -148,6 +155,16 @@
var/obj/item/weapon/gun/energy/kinetic_accelerator/KA = loc
KA.modify_projectile(BB)
+ var/turf/proj_turf = get_turf(BB)
+ if(!istype(proj_turf, /turf))
+ return
+ var/datum/gas_mixture/environment = proj_turf.return_air()
+ var/pressure = environment.return_pressure()
+ if(pressure > 50)
+ BB.name = "weakened [BB.name]"
+ var/obj/item/projectile/kinetic/K = BB
+ K.damage /= K.damage_divisor
+
/obj/item/ammo_casing/energy/kinetic/hyper
projectile_type = /obj/item/projectile/kinetic/hyper
@@ -158,26 +175,11 @@
/obj/item/projectile/kinetic
name = "kinetic force"
icon_state = null
- damage = 10
+ damage = 40
damage_type = BRUTE
flag = "bomb"
range = 3
- var/damage_multiplier = 4
-
-/obj/item/projectile/kinetic/super
- damage = 11
- range = 4
-
-/obj/item/projectile/kinetic/New()
- var/turf/proj_turf = get_turf(src)
- if(!istype(proj_turf, /turf))
- return
- var/datum/gas_mixture/environment = proj_turf.return_air()
- var/pressure = environment.return_pressure()
- if(pressure < 50)
- name = "full strength [name]"
- damage *= damage_multiplier
- ..()
+ var/damage_divisor = 4
/obj/item/projectile/kinetic/on_range()
PoolOrNew(/obj/effect/overlay/temp/kinetic_blast, loc)
@@ -196,8 +198,6 @@
/obj/item/projectile/kinetic/hyper
name = "kinetic explosion"
- damage = 10
- range = 3
/obj/item/projectile/kinetic/hyper/proc/aoe_blast(atom/target)
var/turf/target_turf = get_turf(target)
@@ -225,14 +225,97 @@
/obj/item/modkit
name = "modification kit"
- desc = "An upgrade for kinetic accelerators.."
+ desc = "An upgrade for kinetic accelerators."
icon = 'icons/obj/objects.dmi'
icon_state = "modkit"
origin_tech = "programming=2;materials=2;magnets=4"
var/cost = 2
+ var/modifier = 1 //For use in any mod kit that has numerical modifiers
/obj/item/modkit/proc/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
- return
+ forceMove(KA)
+ KA.modkits += src
-/obj/item/modkit/proc/modify_projectile(/obj/item/projectile/kinetic/K)
- return
\ No newline at end of file
+/obj/item/modkit/proc/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
+ forceMove(get_turf(KA))
+ KA.modkits -= src
+
+/obj/item/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K)
+
+
+
+//Types
+
+/obj/item/modkit/range
+ name = "range increase"
+ desc = "Increases the range of a kinetic accelerator when installed. Occupies two mod slots."
+ modifier = 1
+
+/obj/item/modkit/range/modify_projectile(obj/item/projectile/kinetic/K)
+ K.range += modifier
+
+//Damage
+
+/obj/item/modkit/damage
+ name = "damage increase"
+ desc = "Increases the damage of kinetic accelerator when installed. Occupies two mod slots."
+ modifier = 10
+
+/obj/item/modkit/damage/modify_projectile(obj/item/projectile/kinetic/K)
+ K.damage += modifier
+
+//Cooldown
+
+/obj/item/modkit/cooldown
+ name = "coolodown decrease"
+ desc = "Decreases the cooldown of a kinetic accelerator. Occupies two mod slots."
+ modifier = 2.5
+
+/obj/item/modkit/cooldown/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
+ KA.overheat_time -= modifier
+ ..()
+
+/obj/item/modkit/cooldown/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
+ KA.overheat_time += modifier
+ ..()
+
+
+//Projectile Type
+
+/obj/item/modkit/projectile_mod
+ name = "hyper shot"
+ desc = "Causes the kinetic accelerator to destroy rock in an AoE. Occupies two mod slots."
+ var/projectile_type = /obj/item/ammo_casing/energy/kinetic/hyper
+
+/obj/item/modkit/projectile_mod/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
+ KA.ammo_type = list(projectile_type)
+ KA.update_ammo_types()
+ ..()
+
+/obj/item/modkit/projectile_mod/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
+ KA.ammo_type = list(/obj/item/ammo_casing/energy/kinetic)
+ KA.update_ammo_types()
+ ..()
+
+//Indoors
+/obj/item/modkit/indoors
+ name = "decrease pressure penalty"
+ desc = "Increases the damage a kinetic accelerator does in a high pressure environment. Occupies three mod slots."
+ modifier = 2
+ cost = 3
+
+/obj/item/modkit/indoors/modify_projectile(obj/item/projectile/kinetic/K)
+ K.damage_divisor = Clamp(K.damage_divisor - modifier, 0, INFINITY)
+
+//Trigger Guard
+/obj/item/modkit/trigger_guard
+ name = "modified trigger guard"
+ desc = "Allows creatures normally incapable of firing guns to operate the weapon when installed. Occupies two mod slots."
+
+/obj/item/modkit/trigger_guard/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
+ KA.trigger_guard = TRIGGER_GUARD_ALLOW_ALL
+ ..()
+
+/obj/item/modkit/trigger_guard/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
+ KA.trigger_guard = TRIGGER_GUARD_NORMAL
+ ..()
\ No newline at end of file
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 3f20d597265..22e467962ff 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -159,36 +159,6 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/pickaxe/drill/jackhammer
category = list("Mining Designs")
-/*/datum/design/modkit
- name = "Modification Kit"
- desc = "A device which allows kinetic accelerators to be wielded with one hand, and by any organism."
- id = "modkit"
- req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
- build_path = /obj/item/modkit
- category = list("Mining Designs")
-
-/datum/design/superaccelerator
- name = "Super-Kinetic Accelerator"
- desc = "An upgraded version of the proto-kinetic accelerator, with superior damage, speed and range."
- id = "superaccelerator"
- req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000)
- build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/super
- category = list("Mining Designs")
-
-/datum/design/hyperaccelerator
- name = "Hyper-Kinetic Accelerator"
- desc = "An upgraded version of the proto-kinetic accelerator, with even more superior damage, speed and range."
- id = "hyperaccelerator"
- req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
- build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/hyper
- category = list("Mining Designs")
-*/
/datum/design/superresonator
name = "Upgraded Resonator"
desc = "An upgraded version of the resonator that allows more fields to be active at once."
@@ -199,6 +169,67 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/resonator/upgraded
category = list("Mining Designs")
+/datum/design/trigger_guard_mod
+ name = "Kinetic Accelerator Trigger Guard Mod"
+ desc = "A device which allows kinetic accelerators to be wielded by any organism."
+ id = "triggermod"
+ req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
+ build_path = /obj/item/modkit/trigger_guard
+ category = list("Mining Designs")
+
+/datum/design/damage_mod
+ name = "Kinetic Accelerator Damage Mod"
+ desc = "A device which allows kinetic accelerators to deal more damage."
+ id = "damagemod"
+ req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
+ build_path = /obj/item/modkit/damage
+ category = list("Mining Designs")
+
+/datum/design/cooldown_mod
+ name = "Kinetic Accelerator Cooldown Mod"
+ desc = "A device which decreases the cooldown of a Kinetic Accelerator."
+ id = "cooldownmod"
+ req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
+ build_path = /obj/item/modkit/cooldown
+ category = list("Mining Designs")
+
+/datum/design/range_mod
+ name = "Kinetic Accelerator Range Mod"
+ desc = "A device which allows kinetic accelerators to fire at a further range."
+ id = "rangemod"
+ req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
+ build_path = /obj/item/modkit/range
+ category = list("Mining Designs")
+
+/datum/design/superaccelerator
+ name = "Kinetic Accelerator Pressure Mod"
+ desc = "A modification kit which allows Kinetic Accelerators to do more damage while indoors."
+ id = "indoormod"
+ req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000)
+ build_path = /obj/item/modkit/indoors
+ category = list("Mining Designs")
+
+/datum/design/hyperaccelerator
+ name = "Hyper-Kinetic Accelerator Mod"
+ desc = "A modification kit for Kinetic Accelerators which causes it to fire AoE blasts.."
+ id = "hypermod"
+ req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
+ build_path = /obj/item/modkit/projectile_mod
+ category = list("Mining Designs")
+
+
/////////////////////////////////////////
//////////////Blue Space/////////////////
/////////////////////////////////////////
diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm
index 29e3e10e9ac..39a8b7768cd 100644
--- a/code/modules/spells/spell_types/rightandwrong.dm
+++ b/code/modules/spells/spell_types/rightandwrong.dm
@@ -102,7 +102,7 @@
if("mindflayer")
G = new /obj/item/weapon/gun/energy/mindflayer(get_turf(H))
if("hyperkinetic")
- G = new /obj/item/weapon/gun/energy/kinetic_accelerator/hyper(get_turf(H))
+ G = new /obj/item/weapon/gun/energy/kinetic_accelerator(get_turf(H))
if("advplasmacutter")
G = new /obj/item/weapon/gun/energy/plasmacutter/adv(get_turf(H))
if("wormhole")