Kinetic Accelerator Mods (#19942)

* KA Mods

* Better examing

* Removes excess returns

* WHY indeed

* Updates projectiles properly

* Removes or replaces old hyper KA stuff

* Nerfs cooldown mod
This commit is contained in:
KorPhaeron
2016-08-19 21:04:25 +12:00
committed by oranges
parent e18f05d327
commit eb39ca8e6e
8 changed files with 188 additions and 67 deletions
+1 -1
View File
@@ -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)
@@ -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
+1 -1
View File
@@ -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)
+3
View File
@@ -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),
+8 -4
View File
@@ -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)
@@ -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 <<"<span class='notice'>There is a [M.name] mod installed.</span>"
/obj/item/weapon/gun/energy/kinetic_accelerator/attackby(obj/item/A, mob/user)
if(istype(A, /obj/item/weapon/crowbar))
if(modkits.len)
user << "<span class='notice'>You pry the modifications out.</span>"
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 << "<span class='notice'>There are no modifications currently installed.</span>"
else if(istype(A, /obj/item/modkit))
@@ -39,6 +45,8 @@
return
else
user << "<span class='notice'>You install the modkit.</span>"
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
/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
..()
+61 -30
View File
@@ -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/////////////////
/////////////////////////////////////////
@@ -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")