Merge pull request #1332 from Citadel-Station-13/upstream-merge-27906

[MIRROR] Adds three unique kinetic accelerator modules to necropolis chests
This commit is contained in:
LetterJay
2017-06-02 22:47:30 -05:00
committed by GitHub
3 changed files with 73 additions and 18 deletions
@@ -11,7 +11,7 @@
desc = "It's watching you suspiciously."
/obj/structure/closet/crate/necropolis/tendril/PopulateContents()
var/loot = rand(1,26)
var/loot = rand(1,27)
switch(loot)
if(1)
new /obj/item/device/shared_storage/red(src)
@@ -28,9 +28,7 @@
if(7)
new /obj/item/weapon/pickaxe/diamond(src)
if(8)
new /obj/item/clothing/head/culthood(src)
new /obj/item/clothing/suit/cultrobes(src)
new /obj/item/weapon/bedsheet/cult(src)
new /obj/item/borg/upgrade/modkit/resonator_blasts(src)
if(9)
new /obj/item/organ/brain/alien(src)
if(10)
@@ -40,7 +38,7 @@
if(12)
new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/beserker(src)
if(13)
new /obj/item/weapon/sord(src)
new /obj/item/borg/upgrade/modkit/cooldown/repeater(src)
if(14)
new /obj/item/weapon/nullrod/scythe/talking(src)
if(15)
@@ -68,6 +66,9 @@
new /obj/item/weapon/spellbook/oneuse/summonitem(src)
if(26)
new /obj/item/book_of_babel(src)
if(27)
new /obj/item/borg/upgrade/modkit/lifesteal(src)
new /obj/item/weapon/bedsheet/cult(src)
@@ -24,6 +24,7 @@
var/list/modkits = list()
var/empty_state = "kineticgun_empty"
var/recharge_timerid
/obj/item/weapon/gun/energy/kinetic_accelerator/examine(mob/user)
..()
@@ -61,10 +62,10 @@
. += A
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/modify_projectile(obj/item/projectile/kinetic/K)
K.kinetic_gun = src //do something special on-hit, easy!
for(var/A in get_modkits())
var/obj/item/borg/upgrade/modkit/M = A
M.modify_projectile(K)
K.kinetic_modules += M //do something special on-hit, easy!
/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg
holds_charge = TRUE
@@ -100,15 +101,16 @@
power_supply.use(500)
update_icon()
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/attempt_reload()
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/attempt_reload(recharge_time)
if(overheat)
return
if(!recharge_time)
recharge_time = overheat_time
overheat = TRUE
var/carried = 0
if(!unique_frequency)
for(var/obj/item/weapon/gun/energy/kinetic_accelerator/K in \
loc.GetAllContents())
for(var/obj/item/weapon/gun/energy/kinetic_accelerator/K in loc.GetAllContents())
carried++
@@ -116,7 +118,8 @@
else
carried = 1
addtimer(CALLBACK(src, .proc/reload), overheat_time * carried)
deltimer(recharge_timerid)
recharge_timerid = addtimer(CALLBACK(src, .proc/reload), recharge_time * carried, TIMER_STOPPABLE)
/obj/item/weapon/gun/energy/kinetic_accelerator/emp_act(severity)
return
@@ -161,10 +164,10 @@
log_override = TRUE
var/pressure_decrease = 0.25
var/list/kinetic_modules = list()
var/obj/item/weapon/gun/energy/kinetic_accelerator/kinetic_gun
/obj/item/projectile/kinetic/Destroy()
QDEL_NULL(kinetic_modules)
kinetic_gun = null
return ..()
/obj/item/projectile/kinetic/prehit(atom/target)
@@ -190,15 +193,14 @@
var/turf/target_turf = get_turf(target)
if(!target_turf)
target_turf = get_turf(src)
if(kinetic_gun) //hopefully whoever shot this was not very, very unfortunate.
for(var/obj/item/borg/upgrade/modkit/M in kinetic_gun.get_modkits())
M.projectile_strike(src, target_turf, target, kinetic_gun)
if(ismineralturf(target_turf))
var/turf/closed/mineral/M = target_turf
M.gets_drilled(firer)
var/obj/effect/temp_visual/kinetic_blast/K = new /obj/effect/temp_visual/kinetic_blast(target_turf)
K.color = color
for(var/obj/item/borg/upgrade/modkit/M in kinetic_modules)
if(QDELETED(M)) //whoever shot this was very, very unfortunate.
continue
M.projectile_strike(src, target_turf, target)
//Modkits
@@ -262,7 +264,7 @@
/obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K)
/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target)
/obj/item/borg/upgrade/modkit/proc/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA)
//Range
/obj/item/borg/upgrade/modkit/range
@@ -350,7 +352,7 @@
/obj/item/borg/upgrade/modkit/aoe/modify_projectile(obj/item/projectile/kinetic/K)
K.name = "kinetic explosion"
/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target)
/obj/item/borg/upgrade/modkit/aoe/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA)
if(stats_stolen)
return
new /obj/effect/temp_visual/explosion/fast(target_turf)
@@ -382,6 +384,58 @@
desc = "Causes the kinetic accelerator to damage mobs in an AoE."
modifier = 0.2
//Tendril-unique modules
/obj/item/borg/upgrade/modkit/cooldown/repeater
name = "rapid repeater"
desc = "Quarters the kinetic accelerator's cooldown on striking a living target, but greatly increases the base cooldown."
denied_type = /obj/item/borg/upgrade/modkit/cooldown/repeater
modifier = -14 //Makes the cooldown 3 seconds(with no cooldown mods) if you miss. Don't miss.
cost = 50
/obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA)
var/valid_repeat = FALSE
if(isliving(target))
var/mob/living/L = target
if(L.stat != DEAD)
valid_repeat = TRUE
if(ismineralturf(target_turf))
valid_repeat = TRUE
if(valid_repeat)
KA.overheat = FALSE
KA.attempt_reload(KA.overheat_time * 0.25) //If you hit, the cooldown drops to 0.75 seconds.
/obj/item/borg/upgrade/modkit/lifesteal
name = "lifesteal crystal"
desc = "Causes kinetic accelerator shots to slightly heal the firer on striking a living target."
icon_state = "modkit_crystal"
denied_type = /obj/item/borg/upgrade/modkit/lifesteal
modifier = 2.5 //Not a very effective method of healing.
cost = 20
var/static/list/damage_heal_order = list(BRUTE, BURN, OXY)
/obj/item/borg/upgrade/modkit/lifesteal/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA)
if(isliving(target) && isliving(K.firer))
var/mob/living/L = target
if(L.stat == DEAD)
return
L = K.firer
L.heal_ordered_damage(modifier, damage_heal_order)
/obj/item/borg/upgrade/modkit/resonator_blasts
name = "resonator blast"
desc = "Causes kinetic accelerator shots to leave and detonate resonator blasts."
denied_type = /obj/item/borg/upgrade/modkit/resonator_blasts
cost = 30
modifier = 0.25 //A bonus 15 damage if you burst the field on a target, 60 if you lure them into it.
/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/item/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/weapon/gun/energy/kinetic_accelerator/KA)
if(target_turf && !ismineralturf(target_turf)) //Don't make fields on mineral turfs.
var/obj/effect/temp_visual/resonance/R = locate(/obj/effect/temp_visual/resonance) in target_turf
if(R)
R.damage_multiplier = modifier
R.burst()
return
new /obj/effect/temp_visual/resonance(target_turf, K.firer, null, 30)
//Indoors
/obj/item/borg/upgrade/modkit/indoors