mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Merge pull request #7539 from Iamgoofball/kinetic
Ports the kinetic accelerator changes from NT
This commit is contained in:
@@ -39,6 +39,7 @@
|
|||||||
var/obj/item/device/flashlight/F = null
|
var/obj/item/device/flashlight/F = null
|
||||||
var/can_flashlight = 0
|
var/can_flashlight = 0
|
||||||
|
|
||||||
|
var/list/upgrades = list()
|
||||||
|
|
||||||
/obj/item/weapon/gun/New()
|
/obj/item/weapon/gun/New()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -115,10 +115,45 @@
|
|||||||
cell_type = "/obj/item/weapon/stock_parts/cell/emproof"
|
cell_type = "/obj/item/weapon/stock_parts/cell/emproof"
|
||||||
var/overheat = 0
|
var/overheat = 0
|
||||||
var/recent_reload = 1
|
var/recent_reload = 1
|
||||||
|
var/range_add = 0
|
||||||
|
var/overheat_time = 20
|
||||||
|
upgrades = list("diamond" = 0, "screwdriver" = 0, "plasma" = 0)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/energy/kinetic_accelerator/newshot()
|
||||||
|
..()
|
||||||
|
if(chambered && chambered.BB)
|
||||||
|
var/obj/item/projectile/kinetic/charge = chambered.BB
|
||||||
|
charge.range += range_add
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/energy/kinetic_accelerator/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||||
|
if(istype(W, /obj/item/weapon/screwdriver) && upgrades["screwdriver"] < 3)
|
||||||
|
upgrades["screwdriver"]++
|
||||||
|
overheat_time -= 1
|
||||||
|
user << "<span class='info'>You tweak [src]'s thermal exchanger.</span>"
|
||||||
|
|
||||||
|
|
||||||
|
else if(istype(W, /obj/item/stack))
|
||||||
|
var/obj/item/stack/S = W
|
||||||
|
|
||||||
|
if(istype(S, /obj/item/stack/sheet/mineral/diamond) && upgrades["diamond"] < 3)
|
||||||
|
upgrades["diamond"]++
|
||||||
|
overheat_time -= 3
|
||||||
|
user << "<span class='info'>You upgrade [src]'s thermal exchanger with diamonds.</span>"
|
||||||
|
S.use(1)
|
||||||
|
|
||||||
|
if(istype(S, /obj/item/stack/sheet/mineral/plasma) && upgrades["plasma"] < 2)
|
||||||
|
upgrades["plasma"]++
|
||||||
|
range_add++
|
||||||
|
user << "<span class='info'>You upgrade [src]'s accelerating chamber with plasma.</span>"
|
||||||
|
if(prob(5 * (range_add + 1) * (range_add + 1)) && power_supply)
|
||||||
|
power_supply.rigged = 1 // This is dangerous!
|
||||||
|
S.use(1)
|
||||||
|
|
||||||
/obj/item/weapon/gun/energy/kinetic_accelerator/shoot_live_shot()
|
/obj/item/weapon/gun/energy/kinetic_accelerator/shoot_live_shot()
|
||||||
overheat = 1
|
overheat = 1
|
||||||
spawn(20)
|
spawn(overheat_time)
|
||||||
overheat = 0
|
overheat = 0
|
||||||
recent_reload = 0
|
recent_reload = 0
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -114,13 +114,19 @@ obj/item/projectile/kinetic/New()
|
|||||||
var/pressure = environment.return_pressure()
|
var/pressure = environment.return_pressure()
|
||||||
if(pressure < 50)
|
if(pressure < 50)
|
||||||
name = "full strength kinetic force"
|
name = "full strength kinetic force"
|
||||||
damage = 30
|
damage *= 2
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/projectile/kinetic/Range()
|
/obj/item/projectile/kinetic/Range()
|
||||||
range--
|
range--
|
||||||
if(range <= 0)
|
if(range <= 0)
|
||||||
new /obj/item/effect/kinetic_blast(src.loc)
|
new /obj/item/effect/kinetic_blast(src.loc)
|
||||||
|
for(var/turf/T in range(1, src.loc))
|
||||||
|
if(!istype(T, /turf/simulated/wall))
|
||||||
|
T.ex_act(3)
|
||||||
|
|
||||||
|
for(var/obj/structure/S in range(1, src.loc))
|
||||||
|
S.ex_act(3)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/item/projectile/kinetic/on_hit(atom/target)
|
/obj/item/projectile/kinetic/on_hit(atom/target)
|
||||||
@@ -129,6 +135,13 @@ obj/item/projectile/kinetic/New()
|
|||||||
var/turf/simulated/mineral/M = target_turf
|
var/turf/simulated/mineral/M = target_turf
|
||||||
M.gets_drilled(firer)
|
M.gets_drilled(firer)
|
||||||
new /obj/item/effect/kinetic_blast(target_turf)
|
new /obj/item/effect/kinetic_blast(target_turf)
|
||||||
|
if(isturf(target) || istype(target, /obj/structure))
|
||||||
|
for(var/turf/T in range(1, target_turf))
|
||||||
|
if(!istype(T, /turf/simulated/wall))
|
||||||
|
T.ex_act(3)
|
||||||
|
|
||||||
|
for(var/obj/structure/S in range(1, target_turf))
|
||||||
|
S.ex_act(3)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/effect/kinetic_blast
|
/obj/item/effect/kinetic_blast
|
||||||
|
|||||||
Reference in New Issue
Block a user