From 704dab9d4643b05cbd9d70d3eb886cdabce53205 Mon Sep 17 00:00:00 2001 From: CHOMPStation2StaffMirrorBot <94713762+CHOMPStation2StaffMirrorBot@users.noreply.github.com> Date: Sat, 22 Feb 2025 01:36:07 -0700 Subject: [PATCH] [MIRROR] Add Somatoray Mode to Remove Reagents (#10210) Co-authored-by: NickBelmont <89628295+NickBelmont@users.noreply.github.com> --- code/modules/hydroponics/trays/tray.dm | 11 ++++++++ .../projectiles/guns/energy/special.dm | 4 +++ .../modules/projectiles/projectile/special.dm | 26 +++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index f63135233d..37f243a8cd 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -245,6 +245,17 @@ if(prob(mutchance)) yield_mod = min(10,yield_mod+rand(1,2)) return + else if(istype(Proj, /obj/item/projectile/energy/floraprune)) + var/obj/item/projectile/energy/floraprune/GP = Proj + mutchance *= GP.lasermod + if(prob(mutchance) && seed) + var/c = safepick(seed.chems) + if(length(seed.chems) > 1 && c) + var/turf/T = get_turf(loc) + seed = seed.diverge() + T.visible_message(span_infoplain(span_bold("\The [seed.display_name]") + " quivers!")) + seed.chems -= c + return ..() diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index ba97e975b9..01ca9b498c 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -61,6 +61,7 @@ list(mode_name="induce mutations", projectile_type=/obj/item/projectile/energy/floramut, modifystate="floramut"), list(mode_name="increase yield", projectile_type=/obj/item/projectile/energy/florayield, modifystate="florayield"), list(mode_name="induce specific mutations", projectile_type=/obj/item/projectile/energy/floramut/gene, modifystate="floramut"), + list(mode_name="prune reagents", projectile_type=/obj/item/projectile/energy/floraprune, modifystate="floramut"), ) /obj/item/gun/energy/floragun/Initialize() @@ -126,6 +127,7 @@ var/obj/item/projectile/energy/floramut/gene/G = . var/obj/item/projectile/energy/florayield/GY = . var/obj/item/projectile/energy/floramut/GM = . + var/obj/item/projectile/energy/floraprune/GP = . // Inserting the upgrade level of the gun to the projectile as there isn't a better way to do this. if(istype(G)) G.gene = gene @@ -134,6 +136,8 @@ GY.lasermod = emitter.rating else if(istype(GM)) GM.lasermod = emitter.rating + else if(istype(GP)) + GP.lasermod = emitter.rating /obj/item/gun/energy/meteorgun name = "meteor gun" diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 18a58c9f7a..ae986ca309 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -221,6 +221,32 @@ else return 1 +/obj/item/projectile/energy/floraprune + name = "delta somatoray" + icon_state = "energy2" + fire_sound = 'sound/effects/stealthoff.ogg' + damage = 0 + damage_type = TOX + nodamage = 1 + check_armour = "energy" + light_range = 2 + light_power = 0.5 + light_color = "#FFFFFF" + impact_effect_type = /obj/effect/temp_visual/impact_effect/monochrome_laser + var/lasermod = 0 + hud_state = "electrothermal" + +/obj/item/projectile/energy/floraprune/on_hit(var/atom/target, var/blocked = 0) + var/mob/living/M = target + if(ishuman(target)) //Make plantpeople thin, seeing as we're removing reagents from actual plants + var/mob/living/carbon/human/H = M + if((H.species.flags & IS_PLANT) && (M.nutrition > 30)) + M.adjust_nutrition(-30) + else if (istype(target, /mob/living/carbon/)) + M.show_message(span_blue("The radiation beam dissipates harmlessly through your body.")) + else + return 1 + /obj/item/projectile/beam/mindflayer name = "flayer ray"