diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index be6b05968b2..494d5bd0a38 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -15,6 +15,9 @@ obj/machinery/recharger if (src.charging || src.charging2) return if (istype(G, /obj/item/weapon/gun/energy)) + if (istype(G, /obj/item/weapon/gun/energy/general/nuclear)) + user << "Your gun's recharge port was removed to make room for a miniaturized reactor." + return user.drop_item() G.loc = src src.charging = G diff --git a/code/game/objects/items/weapons/guns_ammo.dm b/code/game/objects/items/weapons/guns_ammo.dm index 8c6c8985b8a..4ebb45a94db 100644 --- a/code/game/objects/items/weapons/guns_ammo.dm +++ b/code/game/objects/items/weapons/guns_ammo.dm @@ -959,6 +959,39 @@ obj/item/weapon/gun/revolver/attackby(obj/item/weapon/ammo/a357/A as obj, mob/us var/mode = 2 + nuclear + name = "Advanced Energy Gun" + desc = "An energy gun with an experimental miniaturized reactor." + var/critfail = 0 + + New() + charge() + + proc/charge() + if(charges < maximum_charges) + if(failcheck()) + charges++ //If the gun isn't fully charged, and it doesn't suffer a failure, add a charge. + update_icon() + if(!critfail) + spawn(50) charge() + + proc/failcheck() + if (prob(src.reliability)) return 1 //No failure + if (prob(src.reliability)) + for (var/mob/M in range(0,src)) //Only a minor failure, enjoy your radiation if you're in the same tile or carrying it + if (src in M.contents) + M << "\red Your gun feels pleasantly warm for a moment." + else + M << "\red You feel a warm sensation." + src.loc:radiation += rand(1,40) + else + for (var/mob/M in range(rand(1,4),src)) //Big failure, TIME FOR RADIATION BITCHES + if (src in M.contents) + M << "\red Your gun's reactor overloads!" + M << "\red You feel a wave of heat wash over you." + M.radiation += 100 + critfail = 1 //break the gun so it stops recharging + update_icon() var/ratio = src.charges / maximum_charges ratio = round(ratio, 0.25) * 100 diff --git a/code/game/research/designs.dm b/code/game/research/designs.dm index 3553ed935c3..1fdff5dccaf 100644 --- a/code/game/research/designs.dm +++ b/code/game/research/designs.dm @@ -633,6 +633,22 @@ datum reliability_base = 74 build_path = "/obj/item/device/mass_spectrometer/adv" +///////////////////////////////////////// +/////////////////Weapons///////////////// +///////////////////////////////////////// + + nuclear_gun + name = "Advanced Energy Gun" + desc = "An energy gun with an experimental miniaturized reactor." + id = "nuclear_gun" + req_tech = list("combat" = 2, "materials" = 5, "powerstorage" = 3) + build_type = PROTOLATHE + materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 500) + reliability_base = 76 + build_path = "/obj/item/weapon/gun/energy/general/nuclear" + + + ///////////////////////////////////////// //////////////////Test/////////////////// /////////////////////////////////////////