From ad06d376b78e2eaece7ea80223f28da2f8a68fd4 Mon Sep 17 00:00:00 2001 From: Alan Date: Sun, 23 Aug 2026 14:39:17 +0000 Subject: [PATCH] Migrate light bulbs and tubes to the new attack chain. (#32432) --- code/modules/power/lights.dm | 55 ++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/code/modules/power/lights.dm b/code/modules/power/lights.dm index 7ec61ee123d..cce80fa410e 100644 --- a/code/modules/power/lights.dm +++ b/code/modules/power/lights.dm @@ -1028,6 +1028,7 @@ materials = list(MAT_GLASS = 200) /// Is the light rigged to explode? var/rigged = FALSE + new_attack_chain = TRUE /obj/item/light/Initialize(mapload) . = ..() @@ -1101,38 +1102,44 @@ // attack bulb/tube with object // if a syringe, can inject plasma to make it explode. Light replacers eat them. -/obj/item/light/attackby__legacy__attackchain(obj/item/I, mob/user, params) - if(istype(I, /obj/item/reagent_containers/syringe)) - var/obj/item/reagent_containers/syringe/S = I - - if(!length(S.reagents.reagent_list)) - return - - if(S.reagents.has_reagent("plasma", 5) || S.reagents.has_reagent("plasma_dust", 5)) - to_chat(user, SPAN_DANGER("You inject the solution into [src], rigging it to explode!")) - log_admin("LOG: [key_name(user)] injected a light with plasma, rigging it to explode.") - message_admins("LOG: [key_name_admin(user)] injected a light with plasma, rigging it to explode.") - - rigged = TRUE - S.reagents.clear_reagents() - - else // If it has a reagent, but it's not plasma - to_chat(user, SPAN_WARNING("You fail to rig [src] with the solution.")) - - else // If it's not a syringe +/obj/item/light/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(!istype(used, /obj/item/reagent_containers/syringe)) return ..() -/obj/item/light/attack__legacy__attackchain(mob/living/M, mob/living/user, def_zone) - ..() - shatter() + var/obj/item/reagent_containers/syringe/syringe = used -/obj/item/light/attack_obj__legacy__attackchain(obj/O, mob/living/user, params) + if(!length(syringe.reagents.reagent_list)) + to_chat(user, SPAN_WARNING("[syringe] is empty, it can't rig the light!")) + return ITEM_INTERACT_COMPLETE + + if(!(syringe.reagents.has_reagent("plasma", 5) || syringe.reagents.has_reagent("plasma_dust", 5))) + to_chat(user, SPAN_WARNING("You fail to rig [src] with the solution!")) + return ITEM_INTERACT_COMPLETE + + to_chat(user, SPAN_DANGER("You inject the solution into [src], rigging it to explode!")) + log_admin("LOG: [key_name(user)] injected a light with plasma, rigging it to explode.") + message_admins("LOG: [key_name_admin(user)] injected a light with plasma, rigging it to explode.") + + rigged = TRUE + syringe.reagents.clear_reagents() + return ITEM_INTERACT_COMPLETE + +/obj/item/light/attack(mob/living/target, mob/living/carbon/human/user) ..() shatter() + return FINISH_ATTACK + +/obj/item/light/attack_obj(obj/attacked_obj, mob/living/user, params) + ..() + shatter() + return FINISH_ATTACK /obj/item/light/proc/shatter() if(status == LIGHT_OK || status == LIGHT_BURNED) - visible_message(SPAN_WARNING("[src] shatters."), SPAN_WARNING("You hear a small glass object shatter.")) + visible_message( + SPAN_WARNING("[src] shatters."), + SPAN_WARNING("You hear a small glass object shatter.") + ) status = LIGHT_BROKEN force = 5 sharp = TRUE