From b0804eed8019855ce496b9fa1d338268dbbacd20 Mon Sep 17 00:00:00 2001 From: FartMaster69420 <78667902+FartMaster69420@users.noreply.github.com> Date: Tue, 16 Nov 2021 01:24:30 -0500 Subject: [PATCH] Somatoray Buff, initial commit This adds micro laser stock parts as a component to floral somatorays. --- .../projectiles/guns/energy/special.dm | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 0ea7871e30b..bd2d3d2d012 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -47,7 +47,9 @@ modifystate = "floramut" cell_type = /obj/item/weapon/cell/device/weapon/recharge battery_lock = 1 + var/decl/plantgene/gene = null + var/obj/item/weapon/stock_parts/micro_laser/emitter firemodes = list( list(mode_name="induce mutations", projectile_type=/obj/item/projectile/energy/floramut, modifystate="floramut"), @@ -55,8 +57,44 @@ list(mode_name="induce specific mutations", projectile_type=/obj/item/projectile/energy/floramut/gene, modifystate="floramut"), ) +/obj/item/weapon/gun/energy/floragun/Initialize() + . = ..() + emitter = new(src) + +/obj/item/weapon/gun/energy/floragun/examine(var/mob/user) + . = ..() + if(Adjacent(user)) + . += "It has [emitter ? emitter : "no micro laser"] installed." + +/obj/item/weapon/gun/energy/floragun/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/weapon/stock_parts/micro_laser)) + if(!emitter) + user.drop_item() + W.loc = src + emitter = W + to_chat(user, "You install a [emitter.name] in [src].") + else + to_chat(user, "[src] already has a laser.") + + else if(W.is_screwdriver()) + if(emitter) + to_chat(user, "You remove the [emitter.name] from the [src].") + emitter.loc = get_turf(src.loc) + playsound(src, W.usesound, 50, 1) + emitter = null + return + else + to_chat(user, "There is no micro laser in this [src].") + return + ..() + return + /obj/item/weapon/gun/energy/floragun/afterattack(obj/target, mob/user, adjacent_flag) //allow shooting into adjacent hydrotrays regardless of intent + if(!emitter) + to_chat(user, "The [src] has no laser! ") + playsound(src, 'sound/weapons/empty.ogg', 50, 1) + return if(adjacent_flag && istype(target,/obj/machinery/portable_atmospherics/hydroponics)) user.visible_message("\The [user] fires \the [src] into \the [target]!") Fire(target,user)