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)