diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 793e1bd0803..5256c37cd52 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -194,26 +194,6 @@
return 1
-/obj/item/borg/upgrade/hyperka
- name = "mining cyborg hyper-kinetic accelerator"
- desc = "A satchel of holding replacement for mining cyborg's ore satchel module."
- icon_state = "cyborg_upgrade3"
- require_module = 1
- module_type = /obj/item/weapon/robot_module/miner
- origin_tech = "materials=6;powerstorage=4;engineering=4;magnets=4;combat=4"
-
-/obj/item/borg/upgrade/hyperka/action(mob/living/silicon/robot/R)
- if(..())
- return
-
- 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/cyborg/hyper(R.module)
- R.module.rebuild()
-
- return 1
-
/obj/item/borg/upgrade/syndicate
name = "illegal equipment module"
desc = "Unlocks the hidden, deadlier functions of a cyborg"
diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm
index 0b016058c9b..ddabb6efe88 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/modkit/projectile_mod(src)
+ new /obj/item/borg/upgrade/modkit/aoe/mobs(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/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index e2af04e96cb..88c1b79896e 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -47,7 +47,7 @@
if(16)
new /obj/item/weapon/guardiancreator(src)
if(17)
- new /obj/item/stack/sheet/runed_metal/fifty(src)
+ new /obj/item/borg/upgrade/modkit/aoe/mobs(src)
if(18)
new /obj/item/device/warp_cube/red(src)
if(19)
diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm
index 6fa00908eb8..a3984de77d4 100644
--- a/code/modules/mining/machine_vending.dm
+++ b/code/modules/mining/machine_vending.dm
@@ -8,46 +8,50 @@
density = 1
anchored = 1
var/obj/item/weapon/card/id/inserted_id
- var/list/prize_list = list(
- new /datum/data/mining_equipment("Stimpack", /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack, 50),
- new /datum/data/mining_equipment("Stimpack Bundle", /obj/item/weapon/storage/box/medipens/utility, 200),
- new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 100),
- new /datum/data/mining_equipment("Absinthe", /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/premium,100),
- new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150),
- new /datum/data/mining_equipment("Soap", /obj/item/weapon/soap/nanotrasen, 200),
- new /datum/data/mining_equipment("Laser Pointer", /obj/item/device/laser_pointer, 300),
- new /datum/data/mining_equipment("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300),
- new /datum/data/mining_equipment("Advanced Scanner", /obj/item/device/t_scanner/adv_mining_scanner, 800),
- new /datum/data/mining_equipment("Stabilizing Serum", /obj/item/weapon/hivelordstabilizer , 400),
- new /datum/data/mining_equipment("Fulton Beacon", /obj/item/fulton_core , 400),
- new /datum/data/mining_equipment("Shelter Capsule", /obj/item/weapon/survivalcapsule , 400),
- new /datum/data/mining_equipment("GAR scanners", /obj/item/clothing/glasses/meson/gar, 500),
+ var/list/prize_list = list( //if you add something to this, please, for the love of god, use tabs and not spaces.
+ new /datum/data/mining_equipment("Stimpack", /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack, 50),
+ new /datum/data/mining_equipment("Stimpack Bundle", /obj/item/weapon/storage/box/medipens/utility, 200),
+ new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 100),
+ new /datum/data/mining_equipment("Absinthe", /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/premium,100),
+ new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150),
+ new /datum/data/mining_equipment("Soap", /obj/item/weapon/soap/nanotrasen, 200),
+ new /datum/data/mining_equipment("Laser Pointer", /obj/item/device/laser_pointer, 300),
+ new /datum/data/mining_equipment("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300),
+ new /datum/data/mining_equipment("Advanced Scanner", /obj/item/device/t_scanner/adv_mining_scanner, 800),
+ new /datum/data/mining_equipment("Stabilizing Serum", /obj/item/weapon/hivelordstabilizer, 400),
+ new /datum/data/mining_equipment("Fulton Beacon", /obj/item/fulton_core, 400),
+ new /datum/data/mining_equipment("Shelter Capsule", /obj/item/weapon/survivalcapsule, 400),
+ new /datum/data/mining_equipment("GAR scanners", /obj/item/clothing/glasses/meson/gar, 500),
new /datum/data/mining_equipment("Explorer's Webbing", /obj/item/weapon/storage/belt/mining, 500),
new /datum/data/mining_equipment("Survival Medipen", /obj/item/weapon/reagent_containers/hypospray/medipen/survival, 500),
- new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/weapon/storage/firstaid/brute, 600),
- new /datum/data/mining_equipment("Tracking Implant Kit",/obj/item/weapon/storage/box/minertracker, 600),
- new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 750),
- new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/weapon/twohanded/required/mining_hammer, 750),
- new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 750),
- new /datum/data/mining_equipment("Resonator", /obj/item/weapon/resonator, 800),
- new /datum/data/mining_equipment("Fulton Pack", /obj/item/weapon/extraction_pack, 1000),
- new /datum/data/mining_equipment("Lazarus Injector", /obj/item/weapon/lazarus_injector, 1000),
- new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/weapon/pickaxe/silver, 1000),
- new /datum/data/mining_equipment("Jetpack Upgrade", /obj/item/weapon/tank/jetpack/suit, 2000),
- new /datum/data/mining_equipment("Space Cash", /obj/item/stack/spacecash/c1000, 2000),
- 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),
- new /datum/data/mining_equipment("Drone Health Upgrade",/obj/item/device/mine_bot_ugprade/health, 400),
- new /datum/data/mining_equipment("Drone Ranged Upgrade",/obj/item/device/mine_bot_ugprade/cooldown, 600),
- new /datum/data/mining_equipment("Drone AI Upgrade", /obj/item/slimepotion/sentience/mining, 1000),
- new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500),
+ new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/weapon/storage/firstaid/brute, 600),
+ new /datum/data/mining_equipment("Tracking Implant Kit",/obj/item/weapon/storage/box/minertracker, 600),
+ new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 750),
+ new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/weapon/twohanded/required/mining_hammer, 750),
+ new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 750),
+ new /datum/data/mining_equipment("Resonator", /obj/item/weapon/resonator, 800),
+ new /datum/data/mining_equipment("Fulton Pack", /obj/item/weapon/extraction_pack, 1000),
+ new /datum/data/mining_equipment("Lazarus Injector", /obj/item/weapon/lazarus_injector, 1000),
+ new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/weapon/pickaxe/silver, 1000),
+ new /datum/data/mining_equipment("Jetpack Upgrade", /obj/item/weapon/tank/jetpack/suit, 2000),
+ new /datum/data/mining_equipment("Space Cash", /obj/item/stack/spacecash/c1000, 2000),
+ 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 White Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer, 200),
+ new /datum/data/mining_equipment("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 300),
+ new /datum/data/mining_equipment("KA Super Chassis", /obj/item/borg/upgrade/modkit/chassis_mod, 400),
+ new /datum/data/mining_equipment("KA Hyper Chassis", /obj/item/borg/upgrade/modkit/chassis_mod/orange, 500),
+ new /datum/data/mining_equipment("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000),
+ new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000),
+ new /datum/data/mining_equipment("KA Cooldown Decrease",/obj/item/borg/upgrade/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),
+ new /datum/data/mining_equipment("Drone Health Upgrade",/obj/item/device/mine_bot_ugprade/health, 400),
+ new /datum/data/mining_equipment("Drone Ranged Upgrade",/obj/item/device/mine_bot_ugprade/cooldown, 600),
+ new /datum/data/mining_equipment("Drone AI Upgrade", /obj/item/slimepotion/sentience/mining, 1000),
+ new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500),
)
/datum/data/mining_equipment/
@@ -209,7 +213,7 @@
new /datum/data/mining_equipment("Sulphuric Acid", /obj/item/weapon/reagent_containers/glass/beaker/sulphuric, 500),
new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/weapon/storage/firstaid/brute, 600),
new /datum/data/mining_equipment("Grey Slime Extract", /obj/item/slime_extract/grey, 1000),
- new /datum/data/mining_equipment("Modification Kit", /obj/item/modkit, 1700),
+ new /datum/data/mining_equipment("Modification Kit", /obj/item/borg/upgrade/modkit/trigger_guard, 1700),
new /datum/data/mining_equipment("The Liberator's Legacy", /obj/item/weapon/storage/box/rndboards, 2000),
)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 3f5482fe267..878bec54561 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -318,6 +318,7 @@
modules += new /obj/item/weapon/storage/bag/ore/cyborg(src)
modules += new /obj/item/weapon/pickaxe/drill/cyborg(src)
modules += new /obj/item/weapon/shovel(src)
+ modules += new /obj/item/weapon/crowbar/cyborg(src)
modules += new /obj/item/weapon/weldingtool/mini(src)
modules += new /obj/item/weapon/extinguisher/mini(src)
modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src)
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index 608215ae631..34ac3eb6407 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -17,51 +17,52 @@
var/unique_frequency = FALSE // modified by KA modkits
var/overheat = FALSE
- var/max_mod_capacity = 6
+ var/max_mod_capacity = 100
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."
+ user << "[get_remaining_mod_capacity()]% mod capacity remaining."
+ for(var/A in get_modkits())
+ var/obj/item/borg/upgrade/modkit/M = A
+ user << "There is a [M.name] mod installed, using [M.cost]% capacity."
/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)
+ for(var/obj/item/borg/upgrade/modkit/M in modkits)
M.uninstall(src)
else
user << "There are no modifications currently installed."
- else if(istype(A, /obj/item/modkit))
- var/obj/item/modkit/MK = A
- var/current_mod_capacity = 0
- for(var/obj/item/modkit/M in modkits)
- current_mod_capacity += M.cost
- if((current_mod_capacity + MK.cost) > max_mod_capacity)
- user << "You don't have room to install this modkit. Use a crowbar to remove existing modkits."
- return
- else
- user << "You install the modkit."
- playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1)
- user.unEquip(MK)
- MK.install(src)
+ else if(istype(A, /obj/item/borg/upgrade/modkit))
+ var/obj/item/borg/upgrade/modkit/MK = A
+ MK.install(src, user)
else
..()
+/obj/item/weapon/gun/energy/kinetic_accelerator/proc/get_remaining_mod_capacity()
+ var/current_capacity_used = 0
+ for(var/A in get_modkits())
+ var/obj/item/borg/upgrade/modkit/M = A
+ current_capacity_used += M.cost
+ return max_mod_capacity - current_capacity_used
+
+/obj/item/weapon/gun/energy/kinetic_accelerator/proc/get_modkits()
+ . = list()
+ for(var/A in modkits)
+ . += A
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/item/projectile/kinetic/K)
- for(var/obj/item/modkit/M in src)
+ for(var/A in get_modkits())
+ var/obj/item/borg/upgrade/modkit/M = A
M.modify_projectile(K)
/obj/item/weapon/gun/energy/kinetic_accelerator/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)
+ max_mod_capacity = 80
/obj/item/weapon/gun/energy/kinetic_accelerator/New()
. = ..()
@@ -132,17 +133,7 @@
add_overlay(image(icon = icon, icon_state = iconF, pixel_x = flight_x_offset, pixel_y = flight_y_offset))
-
-
-
-
-
-
-
-
//Casing
-
-
/obj/item/ammo_casing/energy/kinetic
projectile_type = /obj/item/projectile/kinetic
select_name = "kinetic"
@@ -163,15 +154,10 @@
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
-
+ K.damage *= K.pressure_decrease
//Projectiles
-
/obj/item/projectile/kinetic
name = "kinetic force"
icon_state = null
@@ -179,143 +165,229 @@
damage_type = BRUTE
flag = "bomb"
range = 3
- var/damage_divisor = 4
+ var/pressure_decrease = 0.25
+ var/turf_aoe = FALSE
+ var/mob_aoe = 0
+ var/list/hit_overlays = list()
/obj/item/projectile/kinetic/on_range()
- PoolOrNew(/obj/effect/overlay/temp/kinetic_blast, loc)
+ strike_thing()
..()
/obj/item/projectile/kinetic/on_hit(atom/target)
- var/turf/target_turf= get_turf(target)
- if(istype(target_turf, /turf/closed/mineral))
- var/turf/closed/mineral/M = target_turf
- M.gets_drilled(firer)
- PoolOrNew(/obj/effect/overlay/temp/kinetic_blast, target_turf)
+ strike_thing(target)
. = ..()
-
-//AoE
-
-/obj/item/projectile/kinetic/hyper
- name = "kinetic explosion"
-
-/obj/item/projectile/kinetic/hyper/proc/aoe_blast(atom/target)
+/obj/item/projectile/kinetic/proc/strike_thing(atom/target)
var/turf/target_turf = get_turf(target)
if(!target_turf)
target_turf = get_turf(src)
- PoolOrNew(/obj/effect/overlay/temp/explosion/fast, target_turf)
- for(var/T in RANGE_TURFS(1, target_turf) - target_turf)
- if(istype(T, /turf/closed/mineral))
- var/turf/closed/mineral/M = T
- M.gets_drilled(firer)
-
-/obj/item/projectile/kinetic/hyper/on_range()
- aoe_blast()
- ..()
-
-/obj/item/projectile/kinetic/hyper/on_hit(atom/target)
- aoe_blast(target)
- . = ..()
-
-
-
+ if(istype(target_turf, /turf/closed/mineral))
+ var/turf/closed/mineral/M = target_turf
+ M.gets_drilled(firer)
+ var/obj/effect/overlay/temp/kinetic_blast/K = PoolOrNew(/obj/effect/overlay/temp/kinetic_blast, target_turf)
+ K.color = color
+ for(var/type in hit_overlays)
+ PoolOrNew(type, target_turf)
+ if(turf_aoe)
+ for(var/T in RANGE_TURFS(1, target_turf) - target_turf)
+ if(istype(T, /turf/closed/mineral))
+ var/turf/closed/mineral/M = T
+ M.gets_drilled(firer)
+ if(mob_aoe)
+ for(var/mob/living/L in range(1, target_turf) - firer - target)
+ var/armor = L.run_armor_check(def_zone, flag, "", "", armour_penetration)
+ L.apply_damage(damage*mob_aoe, damage_type, def_zone, armor)
+ L << "You're struck by a [name]!"
//Modkits
-
-/obj/item/modkit
+/obj/item/borg/upgrade/modkit
name = "modification kit"
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
+ require_module = 1
+ module_type = /obj/item/weapon/robot_module/miner
+ var/denied_type = null
+ var/maximum_of_type = 1
+ var/cost = 30
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)
- forceMove(KA)
- KA.modkits += src
+/obj/item/borg/upgrade/modkit/examine(mob/user)
+ ..()
+ user << "Occupies [cost]% of mod capacity."
-/obj/item/modkit/proc/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/attackby(obj/item/A, mob/user)
+ if(istype(A, /obj/item/weapon/gun/energy/kinetic_accelerator) && !issilicon(user))
+ install(A)
+ else
+ ..()
+
+/obj/item/borg/upgrade/modkit/action(mob/living/silicon/robot/R)
+ if(..())
+ return
+
+ for(var/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg/H in R.module.modules)
+ return install(H, usr)
+
+/obj/item/borg/upgrade/modkit/proc/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA, mob/user)
+ . = TRUE
+ if(denied_type)
+ var/number_of_denied = 0
+ for(var/A in KA.get_modkits())
+ var/obj/item/borg/upgrade/modkit/M = A
+ if(istype(M, denied_type))
+ number_of_denied++
+ if(number_of_denied >= maximum_of_type)
+ . = FALSE
+ break
+ if(.)
+ if(KA.get_remaining_mod_capacity() >= cost)
+ user << "You install the modkit."
+ playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1)
+ user.unEquip(src)
+ forceMove(KA)
+ KA.modkits += src
+ else
+ user << "You don't have room([KA.get_remaining_mod_capacity()]% remaining, [cost]% needed) to install this modkit. Use a crowbar to remove existing modkits."
+ . = FALSE
+ else
+ user << "The modkit you're trying to install would conflict with an already installed modkit. Use a crowbar to remove existing modkits."
+
+
+/obj/item/borg/upgrade/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)
+/obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K)
-
-//Types
-
-/obj/item/modkit/range
+//Range
+/obj/item/borg/upgrade/modkit/range
name = "range increase"
- desc = "Increases the range of a kinetic accelerator when installed. Occupies two mod slots."
+ desc = "Increases the range of a kinetic accelerator when installed."
modifier = 1
+ cost = 24 //so you can fit four plus a tracer cosmetic
-/obj/item/modkit/range/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/modkit/range/modify_projectile(obj/item/projectile/kinetic/K)
K.range += modifier
-//Damage
-/obj/item/modkit/damage
+//Damage
+/obj/item/borg/upgrade/modkit/damage
name = "damage increase"
- desc = "Increases the damage of kinetic accelerator when installed. Occupies two mod slots."
+ desc = "Increases the damage of kinetic accelerator when installed."
modifier = 10
-/obj/item/modkit/damage/modify_projectile(obj/item/projectile/kinetic/K)
+/obj/item/borg/upgrade/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."
+//Cooldown
+/obj/item/borg/upgrade/modkit/cooldown
+ name = "cooldown decrease"
+ desc = "Decreases the cooldown of a kinetic accelerator."
modifier = 2.5
-/obj/item/modkit/cooldown/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
- KA.overheat_time -= modifier
- ..()
+/obj/item/borg/upgrade/modkit/cooldown/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA, mob/user)
+ if(..())
+ KA.overheat_time -= modifier
-/obj/item/modkit/cooldown/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
+/obj/item/borg/upgrade/modkit/cooldown/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
KA.overheat_time += modifier
..()
-//Projectile Type
+//AoE blasts
+/obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/item/projectile/kinetic/K)
+ K.name = "kinetic explosion"
+ if(!K.turf_aoe && !K.mob_aoe)
+ K.hit_overlays += /obj/effect/overlay/temp/explosion/fast
-/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/borg/upgrade/modkit/aoe/turfs
+ name = "mining explosion"
+ desc = "Causes the kinetic accelerator to destroy rock in an AoE."
-/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/borg/upgrade/modkit/aoe/turfs/modify_projectile(obj/item/projectile/kinetic/K)
..()
+ K.turf_aoe = TRUE
-/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()
+/obj/item/borg/upgrade/modkit/aoe/mobs
+ name = "offensive explosion"
+ desc = "Causes the kinetic accelerator to damage mobs in an AoE."
+ modifier = 0.25
+
+/obj/item/borg/upgrade/modkit/aoe/mobs/modify_projectile(obj/item/projectile/kinetic/K)
..()
+ K.mob_aoe += modifier
+
//Indoors
-/obj/item/modkit/indoors
+/obj/item/borg/upgrade/modkit/indoors
name = "decrease pressure penalty"
- desc = "Increases the damage a kinetic accelerator does in a high pressure environment. Occupies three mod slots."
+ desc = "Increases the damage a kinetic accelerator does in a high pressure environment."
modifier = 2
- cost = 3
+ denied_type = /obj/item/borg/upgrade/modkit/indoors
+ maximum_of_type = 2
+ cost = 40
+
+/obj/item/borg/upgrade/modkit/indoors/modify_projectile(obj/item/projectile/kinetic/K)
+ K.pressure_decrease *= modifier
-/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
+/obj/item/borg/upgrade/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."
+ desc = "Allows creatures normally incapable of firing guns to operate the weapon when installed."
+ cost = 20
-/obj/item/modkit/trigger_guard/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
- KA.trigger_guard = TRIGGER_GUARD_ALLOW_ALL
+/obj/item/borg/upgrade/modkit/trigger_guard/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA, mob/user)
+ if(..())
+ KA.trigger_guard = TRIGGER_GUARD_ALLOW_ALL
+
+/obj/item/borg/upgrade/modkit/trigger_guard/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
+ KA.trigger_guard = TRIGGER_GUARD_NORMAL
..()
-/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
+
+//Cosmetic
+
+/obj/item/borg/upgrade/modkit/chassis_mod
+ name = "super chassis"
+ desc = "Makes your KA yellow. All the fun of having a more powerful KA without actually having a more powerful KA."
+ cost = 10
+ denied_type = /obj/item/borg/upgrade/modkit/chassis_mod
+ var/chassis_icon = "kineticgun_u"
+
+/obj/item/borg/upgrade/modkit/chassis_mod/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA, mob/user)
+ if(..())
+ KA.icon_state = chassis_icon
+
+/obj/item/borg/upgrade/modkit/chassis_mod/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
+ KA.icon_state = initial(KA.icon_state)
+ ..()
+
+/obj/item/borg/upgrade/modkit/chassis_mod/orange
+ name = "hyper chassis"
+ desc = "Makes your KA orange. All the fun of having explosive blasts without actually having explosive blasts."
+ chassis_icon = "kineticgun_h"
+
+/obj/item/borg/upgrade/modkit/tracer
+ name = "white tracer bolts"
+ desc = "Causes kinetic accelerator bolts to have a white tracer trail and explosion."
+ cost = 4
+ denied_type = /obj/item/borg/upgrade/modkit/tracer
+ var/bolt_color = "#FFFFFF"
+
+/obj/item/borg/upgrade/modkit/tracer/modify_projectile(obj/item/projectile/kinetic/K)
+ K.icon_state = "ka_tracer"
+ K.color = bolt_color
+
+/obj/item/borg/upgrade/modkit/tracer/adjustable
+ name = "adjustable tracer bolts"
+ desc = "Causes kinetic accelerator bolts to have a adjustably-colored tracer trail and explosion. Use in-hand to change color."
+
+/obj/item/borg/upgrade/modkit/tracer/adjustable/attack_self(mob/user)
+ bolt_color = input(user,"Choose Color") as color
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 22e467962ff..156a089a40a 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -176,7 +176,7 @@ other types of metals and chemistry for reagents).
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
+ build_path = /obj/item/borg/upgrade/modkit/trigger_guard
category = list("Mining Designs")
/datum/design/damage_mod
@@ -184,50 +184,50 @@ other types of metals and chemistry for reagents).
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
+ build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
- build_path = /obj/item/modkit/damage
- category = list("Mining Designs")
+ build_path = /obj/item/borg/upgrade/modkit/damage
+ category = list("Mining Designs", "Cyborg Upgrade Modules")
/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
+ build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
- build_path = /obj/item/modkit/cooldown
- category = list("Mining Designs")
+ build_path = /obj/item/borg/upgrade/modkit/cooldown
+ category = list("Mining Designs", "Cyborg Upgrade Modules")
/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
+ build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
- build_path = /obj/item/modkit/range
- category = list("Mining Designs")
+ build_path = /obj/item/borg/upgrade/modkit/range
+ category = list("Mining Designs", "Cyborg Upgrade Modules")
/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
+ build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000)
- build_path = /obj/item/modkit/indoors
- category = list("Mining Designs")
+ build_path = /obj/item/borg/upgrade/modkit/indoors
+ category = list("Mining Designs", "Cyborg Upgrade Modules")
/datum/design/hyperaccelerator
- name = "Hyper-Kinetic Accelerator Mod"
- desc = "A modification kit for Kinetic Accelerators which causes it to fire AoE blasts.."
+ name = "Kinetic Accelerator Mining AoE Mod"
+ desc = "A modification kit for Kinetic Accelerators which causes it to fire AoE blasts that destroy rock."
id = "hypermod"
req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
- build_type = PROTOLATHE
+ build_type = PROTOLATHE | MECHFAB
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")
+ build_path = /obj/item/borg/upgrade/modkit/aoe/turfs
+ category = list("Mining Designs", "Cyborg Upgrade Modules")
/////////////////////////////////////////
diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm
index dd15c0338e6..6a1604a4c26 100644
--- a/code/modules/research/designs/mechfabricator_designs.dm
+++ b/code/modules/research/designs/mechfabricator_designs.dm
@@ -648,16 +648,6 @@
construction_time = 120
category = list("Cyborg Upgrade Modules")
-/datum/design/borg_upgrade_hyperka
- name = "Cyborg Upgrade (Hyper-Kinetic Accelerator)"
- id = "borg_upgrade_hyperka"
- req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
- build_type = MECHFAB //Reqs same as human Hyper KA
- materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
- build_path = /obj/item/borg/upgrade/hyperka
- construction_time = 120
- category = list("Cyborg Upgrade Modules")
-
/datum/design/borg_upgrade_lavaproof
name = "Cyborg Upgrade (Lavaproof Tracks)"
id = "borg_upgrade_lavaproof"
diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi
index f51d10b53ea..74660a09e4a 100644
Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ