From bea76c4592444bf9da388ea8ab0100484710c6be Mon Sep 17 00:00:00 2001 From: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com> Date: Sat, 18 Apr 2026 22:11:21 +0100 Subject: [PATCH] Attack Chain Migration: Tanks (#31873) * tanks attack chain migration. Tanks, you're welcome. Now with less curses. * AGGGHHHHHH! --- code/game/objects/items/tanks/jetpack.dm | 3 --- code/game/objects/items/tanks/tank_types.dm | 22 ++++++++++--------- .../items/{weapons => }/tanks/tanks.dm | 21 ++++++++++++------ code/game/objects/items/tanks/watertank.dm | 12 +++++----- code/modules/assembly/bomb.dm | 2 +- paradise.dme | 2 +- 6 files changed, 35 insertions(+), 27 deletions(-) rename code/game/objects/items/{weapons => }/tanks/tanks.dm (95%) diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index ee3926b56d4..9a989dfd65e 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -200,9 +200,6 @@ STOP_PROCESSING(SSobj, src) temp_air_contents = air_contents -/obj/item/tank/jetpack/suit/attack_self__legacy__attackchain() - return - /obj/item/tank/jetpack/suit/cycle(mob/user) if(!istype(loc, /obj/item/clothing/suit/space/hardsuit)) to_chat(user, SPAN_WARNING("[src] must be connected to a hardsuit!")) diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm index 10bf915fb29..f1ef473de89 100644 --- a/code/game/objects/items/tanks/tank_types.dm +++ b/code/game/objects/items/tanks/tank_types.dm @@ -67,18 +67,20 @@ /obj/item/tank/internals/plasma/populate_gas() air_contents.set_toxins((3 * ONE_ATMOSPHERE) * volume / (R_IDEAL_GAS_EQUATION * T20C)) -/obj/item/tank/internals/plasma/attackby__legacy__attackchain(obj/item/I, mob/user, params) - if(istype(I, /obj/item/flamethrower)) - var/obj/item/flamethrower/F = I - if((!F.status)||(F.ptank)) - return - master = F - F.ptank = src - user.transfer_item_to(src, F) - F.update_icon() - else +/obj/item/tank/internals/plasma/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(!istype(used, /obj/item/flamethrower)) return ..() + var/obj/item/flamethrower/F = used + if((!F.status) || (F.ptank)) + return ITEM_INTERACT_COMPLETE + + master = F + F.ptank = src + user.transfer_item_to(src, F) + F.update_icon() + return ITEM_INTERACT_COMPLETE + /obj/item/tank/internals/plasma/full/populate_gas() air_contents.set_toxins((10 * ONE_ATMOSPHERE) * volume / (R_IDEAL_GAS_EQUATION * T20C)) diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm similarity index 95% rename from code/game/objects/items/weapons/tanks/tanks.dm rename to code/game/objects/items/tanks/tanks.dm index 2ece39483cb..3389368d6e7 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -11,6 +11,7 @@ throw_range = 4 armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, RAD = 0, FIRE = 80, ACID = 30) actions_types = list(/datum/action/item_action/set_internals) + new_attack_chain = TRUE var/datum/gas_mixture/air_contents = null var/distribute_pressure = ONE_ATMOSPHERE var/integrity = 3 @@ -135,21 +136,27 @@ playsound(src.loc, 'sound/effects/spray.ogg', 10, TRUE, -3) qdel(src) -/obj/item/tank/attackby__legacy__attackchain(obj/item/W as obj, mob/user as mob, params) - ..() - +/obj/item/tank/item_interaction(mob/living/user, obj/item/used, list/modifiers) add_fingerprint(user) if(istype(loc, /obj/item/assembly)) icon = loc + return ITEM_INTERACT_COMPLETE - if(istype(W, /obj/item/assembly_holder)) - bomb_assemble(W,user) + if(istype(used, /obj/item/assembly_holder)) + bomb_assemble(used, user) + return ITEM_INTERACT_COMPLETE + + return ..() + +/obj/item/tank/activate_self(mob/user) + if(..()) + return ITEM_INTERACT_COMPLETE -/obj/item/tank/attack_self__legacy__attackchain(mob/user as mob) if(!(air_contents)) - return + return ITEM_INTERACT_COMPLETE ui_interact(user) + return ITEM_INTERACT_COMPLETE /obj/item/tank/ui_state(mob/user) return GLOB.inventory_state diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index ddedb34979f..7fb720aace7 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -12,6 +12,7 @@ actions_types = list(/datum/action/item_action/toggle_mister) armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, RAD = 0, FIRE = 100, ACID = 30) resistance_flags = FIRE_PROOF + new_attack_chain = TRUE var/obj/item/noz var/on = FALSE @@ -95,11 +96,12 @@ H.put_in_l_hand(src) return -/obj/item/watertank/attackby__legacy__attackchain(obj/item/W, mob/user, params) - if(W == noz) - remove_noz() - return - ..() +/obj/item/watertank/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(used != noz) + return ..() + + remove_noz() + return ITEM_INTERACT_COMPLETE // This mister item is intended as an extension of the watertank and always attached to it. // Therefore, it's designed to be "locked" to the player's hands or extended back onto diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index fef9acd7923..3d662583179 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -34,7 +34,7 @@ /obj/item/onetankbomb/attackby__legacy__attackchain(obj/item/W, mob/user, params) if(istype(W, /obj/item/analyzer)) - bombtank.attackby__legacy__attackchain(W, user, params) + bombtank.item_interaction(user, W) return return ..() diff --git a/paradise.dme b/paradise.dme index 746fb250084..7e7300afa9c 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1443,6 +1443,7 @@ #include "code\game\objects\items\storage\wallets.dm" #include "code\game\objects\items\tanks\jetpack.dm" #include "code\game\objects\items\tanks\tank_types.dm" +#include "code\game\objects\items\tanks\tanks.dm" #include "code\game\objects\items\tanks\watertank.dm" #include "code\game\objects\items\tools\crowbar.dm" #include "code\game\objects\items\tools\epidermal_applicator.dm" @@ -1519,7 +1520,6 @@ #include "code\game\objects\items\weapons\storage\secure.dm" #include "code\game\objects\items\weapons\storage\toolbox.dm" #include "code\game\objects\items\weapons\storage\uplink_kits.dm" -#include "code\game\objects\items\weapons\tanks\tanks.dm" #include "code\game\objects\structures\aliens.dm" #include "code\game\objects\structures\barsign.dm" #include "code\game\objects\structures\bedsheet_bin.dm"