From e8aa1a298579ff755572d376b8b7ac35e28819bc Mon Sep 17 00:00:00 2001 From: RKz Date: Sat, 3 Aug 2024 11:47:51 -0400 Subject: [PATCH 01/19] blastcannon buff --- .../projectiles/guns/misc/blastcannon.dm | 134 ++++++++++-------- 1 file changed, 73 insertions(+), 61 deletions(-) diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index 820fa67248cf7..c6ef42c67d445 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -1,8 +1,12 @@ +/** + * A gun that consumes a TTV to shoot an projectile with equivalent power. + * + * It's basically an immovable rod launcher. + */ /obj/item/gun/blastcannon name = "pipe gun" desc = "A pipe welded onto a gun stock, with a mechanical trigger. The pipe has an opening near the top, and there seems to be a spring loaded wheel in the hole." icon_state = "empty_blastcannon" - var/icon_state_loaded = "loaded_blastcannon" item_state = "blastcannon_empty" w_class = WEIGHT_CLASS_LARGE force = 10 @@ -10,18 +14,26 @@ item_flags = NONE clumsy_check = FALSE randomspread = FALSE + /// The icon state used when this is loaded with a bomb. + var/icon_state_loaded = "loaded_blastcannon" - var/hugbox = TRUE - var/max_power = INFINITY + /// The TTV this contains that will be used to create the projectile + var/obj/item/transfer_valve/bomb + /// Additional volume added to the gasmixture used to calculate the bombs power. var/reaction_volume_mod = 0 - var/reaction_cycles = 3 //How many times gases react() before calculation. Very finnicky value, do not mess with without good reason. + /// Whether the gases are reacted once before calculating the range var/prereaction = TRUE + /// How many times gases react() before calculation. Very finnicky value, do not mess with without good reason. + var/reaction_cycles = 3 + /// The maximum power the blastcannon is capable of reaching + var/max_power = INFINITY + // For debugging/badminry + /// Whether you can fire this without a bomb. var/bombcheck = TRUE + /// The range this defaults to without a bomb for debugging and badminry var/debug_power = 0 - var/obj/item/transfer_valve/bomb - /obj/item/gun/blastcannon/debug debug_power = 80 bombcheck = FALSE @@ -32,7 +44,8 @@ pin = new /obj/item/gun/blastcannon/Destroy() - QDEL_NULL(bomb) + if(bomb) + QDEL_NULL(bomb) return ..() /obj/item/gun/blastcannon/attack_self(mob/user) @@ -41,40 +54,41 @@ user.put_in_hands(bomb) user.visible_message("[user] detaches [bomb] from [src].") bomb = null + name = initial(name) + desc = initial(desc) update_icon() return ..() -/obj/item/gun/blastcannon/update_icon() - if(bomb) - icon_state = icon_state_loaded - name = "blast cannon" - desc = "A makeshift device used to concentrate a bomb's blast energy to a narrow wave." - else - icon_state = initial(icon_state) - name = initial(name) - desc = initial(desc) +/obj/item/gun/blastcannon/update_icon_state() + . = ..() + icon_state = bomb ? icon_state_loaded : initial(icon_state) -/obj/item/gun/blastcannon/attackby(obj/O, mob/user) - if(istype(O, /obj/item/transfer_valve)) - var/obj/item/transfer_valve/T = O - if(!T.tank_one || !T.tank_two) - to_chat(user, "What good would an incomplete bomb do?") - return FALSE - if(!user.transferItemToLoc(T, src)) - to_chat(user, "[T] seems to be stuck to your hand!") - return FALSE - user.visible_message("[user] attaches [T] to [src]!") - bomb = T - update_icon() - return TRUE - return ..() +/obj/item/gun/blastcannon/attackby(obj/item/transfer_valve/bomb_to_attach, mob/user) + if(!istype(bomb_to_attach)) + return ..() -//returns the third value of a bomb blast + if(!bomb_to_attach.tank_one || !bomb_to_attach.tank_two) + to_chat(user, "What good would an incomplete bomb do?") + return FALSE + if(!user.transferItemToLoc(bomb_to_attach, src)) + to_chat(user, "[bomb_to_attach] seems to be stuck to your hand!") + return FALSE + + user.visible_message("[user] attaches [bomb_to_attach] to [src]!") + bomb = bomb_to_attach + name = "blast cannon" + desc = "A makeshift device used to concentrate a bomb's blast energy to a narrow wave." + update_icon() + return TRUE + +/// Handles the bomb power calculations /obj/item/gun/blastcannon/proc/calculate_bomb() if(!istype(bomb) || !istype(bomb.tank_one) || !istype(bomb.tank_two)) return 0 + var/datum/gas_mixture/temp = new(max(reaction_volume_mod, 0)) bomb.merge_gases(temp) + if(prereaction) temp.react(src) var/prereaction_pressure = temp.return_pressure() @@ -82,19 +96,23 @@ return 0 for(var/i in 1 to reaction_cycles) temp.react(src) + var/pressure = temp.return_pressure() qdel(temp) if(pressure < TANK_FRAGMENT_PRESSURE) return 0 return ((pressure - TANK_FRAGMENT_PRESSURE) / TANK_FRAGMENT_SCALE) + /obj/item/gun/blastcannon/afterattack(atom/target, mob/user, flag, params) if((!bomb && bombcheck) || (!target) || (get_dist(get_turf(target), get_turf(user)) <= 2)) return ..() - var/power = bomb? calculate_bomb() : debug_power + + var/power = bomb ? calculate_bomb() : debug_power power = min(power, max_power) QDEL_NULL(bomb) update_icon() + var/heavy = power * 0.25 var/medium = power * 0.5 var/light = power @@ -105,10 +123,12 @@ message_admins("Blast wave fired from [ADMIN_VERBOSEJMP(starting)] at [ADMIN_VERBOSEJMP(targturf)] ([target.name]) by [ADMIN_LOOKUPFLW(user)] with power [heavy]/[medium]/[light].") log_game("Blast wave fired from [AREACOORD(starting)] at [AREACOORD(targturf)] ([target.name]) by [key_name(user)] with power [heavy]/[medium]/[light].") var/obj/projectile/blastwave/BW = new(loc, heavy, medium, light) - BW.hugbox = hugbox BW.preparePixelProjectile(target, get_turf(src), params, 0) BW.fire() + name = initial(name) + desc = initial(desc) +/// The projectile used by the blastcannon /obj/projectile/blastwave name = "blast wave" icon_state = "blastwave" @@ -116,46 +136,38 @@ nodamage = FALSE movement_type = FLYING projectile_phasing = ALL // just blows up the turfs lmao + /// The maximum distance this will inflict [EXPLODE_DEVASTATE] var/heavyr = 0 + /// The maximum distance this will inflict [EXPLODE_HEAVY] var/mediumr = 0 + /// The maximum distance this will inflict [EXPLODE_LIGHT] var/lightr = 0 - var/hugbox = TRUE - range = 150 -/obj/projectile/blastwave/Initialize(mapload, _h, _m, _l) - heavyr = _h - mediumr = _m - lightr = _l +/obj/projectile/blastwave/Initialize(mapload, _heavy, _medium, _light) + range = max(_heavy, _medium, _light, 0) + heavyr = _heavy + mediumr = _medium + lightr = _light return ..() /obj/projectile/blastwave/Range() - ..() - var/amount_destruction = EXPLODE_NONE - var/wallbreak_chance = 0 + . = ..() + if(QDELETED(src)) + return + + heavyr = max(heavyr - 1, 0) + mediumr = max(mediumr - 1, 0) + lightr = max(lightr - 1, 0) + if(heavyr) - amount_destruction = EXPLODE_DEVASTATE - wallbreak_chance = 99 + SSexplosions.highturf += loc else if(mediumr) - amount_destruction = EXPLODE_HEAVY - wallbreak_chance = 66 + SSexplosions.medturf += loc else if(lightr) - amount_destruction = EXPLODE_LIGHT - wallbreak_chance = 33 - if(amount_destruction) - if(hugbox) - loc.contents_explosion(EXPLODE_HEAVY, loc) - if(istype(loc, /turf/closed/wall)) - var/turf/closed/wall/W = loc - if(prob(wallbreak_chance)) - W.dismantle_wall(TRUE, TRUE) - else - EX_ACT(loc, amount_destruction) + SSexplosions.lowturf += loc else qdel(src) - - heavyr = max(heavyr - 1, 0) - mediumr = max(mediumr - 1, 0) - lightr = max(lightr - 1, 0) + return /obj/projectile/blastwave/ex_act() return From edf535bdba7902306c5f89f4c9a327aa66cf04e5 Mon Sep 17 00:00:00 2001 From: RKz Date: Sat, 3 Aug 2024 12:33:30 -0400 Subject: [PATCH 02/19] Revert "blastcannon buff" This reverts commit e8aa1a298579ff755572d376b8b7ac35e28819bc. --- .../projectiles/guns/misc/blastcannon.dm | 134 ++++++++---------- 1 file changed, 61 insertions(+), 73 deletions(-) diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index c6ef42c67d445..820fa67248cf7 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -1,12 +1,8 @@ -/** - * A gun that consumes a TTV to shoot an projectile with equivalent power. - * - * It's basically an immovable rod launcher. - */ /obj/item/gun/blastcannon name = "pipe gun" desc = "A pipe welded onto a gun stock, with a mechanical trigger. The pipe has an opening near the top, and there seems to be a spring loaded wheel in the hole." icon_state = "empty_blastcannon" + var/icon_state_loaded = "loaded_blastcannon" item_state = "blastcannon_empty" w_class = WEIGHT_CLASS_LARGE force = 10 @@ -14,26 +10,18 @@ item_flags = NONE clumsy_check = FALSE randomspread = FALSE - /// The icon state used when this is loaded with a bomb. - var/icon_state_loaded = "loaded_blastcannon" - /// The TTV this contains that will be used to create the projectile - var/obj/item/transfer_valve/bomb - /// Additional volume added to the gasmixture used to calculate the bombs power. + var/hugbox = TRUE + var/max_power = INFINITY var/reaction_volume_mod = 0 - /// Whether the gases are reacted once before calculating the range + var/reaction_cycles = 3 //How many times gases react() before calculation. Very finnicky value, do not mess with without good reason. var/prereaction = TRUE - /// How many times gases react() before calculation. Very finnicky value, do not mess with without good reason. - var/reaction_cycles = 3 - /// The maximum power the blastcannon is capable of reaching - var/max_power = INFINITY - // For debugging/badminry - /// Whether you can fire this without a bomb. var/bombcheck = TRUE - /// The range this defaults to without a bomb for debugging and badminry var/debug_power = 0 + var/obj/item/transfer_valve/bomb + /obj/item/gun/blastcannon/debug debug_power = 80 bombcheck = FALSE @@ -44,8 +32,7 @@ pin = new /obj/item/gun/blastcannon/Destroy() - if(bomb) - QDEL_NULL(bomb) + QDEL_NULL(bomb) return ..() /obj/item/gun/blastcannon/attack_self(mob/user) @@ -54,41 +41,40 @@ user.put_in_hands(bomb) user.visible_message("[user] detaches [bomb] from [src].") bomb = null - name = initial(name) - desc = initial(desc) update_icon() return ..() -/obj/item/gun/blastcannon/update_icon_state() - . = ..() - icon_state = bomb ? icon_state_loaded : initial(icon_state) - -/obj/item/gun/blastcannon/attackby(obj/item/transfer_valve/bomb_to_attach, mob/user) - if(!istype(bomb_to_attach)) - return ..() +/obj/item/gun/blastcannon/update_icon() + if(bomb) + icon_state = icon_state_loaded + name = "blast cannon" + desc = "A makeshift device used to concentrate a bomb's blast energy to a narrow wave." + else + icon_state = initial(icon_state) + name = initial(name) + desc = initial(desc) - if(!bomb_to_attach.tank_one || !bomb_to_attach.tank_two) - to_chat(user, "What good would an incomplete bomb do?") - return FALSE - if(!user.transferItemToLoc(bomb_to_attach, src)) - to_chat(user, "[bomb_to_attach] seems to be stuck to your hand!") - return FALSE - - user.visible_message("[user] attaches [bomb_to_attach] to [src]!") - bomb = bomb_to_attach - name = "blast cannon" - desc = "A makeshift device used to concentrate a bomb's blast energy to a narrow wave." - update_icon() - return TRUE +/obj/item/gun/blastcannon/attackby(obj/O, mob/user) + if(istype(O, /obj/item/transfer_valve)) + var/obj/item/transfer_valve/T = O + if(!T.tank_one || !T.tank_two) + to_chat(user, "What good would an incomplete bomb do?") + return FALSE + if(!user.transferItemToLoc(T, src)) + to_chat(user, "[T] seems to be stuck to your hand!") + return FALSE + user.visible_message("[user] attaches [T] to [src]!") + bomb = T + update_icon() + return TRUE + return ..() -/// Handles the bomb power calculations +//returns the third value of a bomb blast /obj/item/gun/blastcannon/proc/calculate_bomb() if(!istype(bomb) || !istype(bomb.tank_one) || !istype(bomb.tank_two)) return 0 - var/datum/gas_mixture/temp = new(max(reaction_volume_mod, 0)) bomb.merge_gases(temp) - if(prereaction) temp.react(src) var/prereaction_pressure = temp.return_pressure() @@ -96,23 +82,19 @@ return 0 for(var/i in 1 to reaction_cycles) temp.react(src) - var/pressure = temp.return_pressure() qdel(temp) if(pressure < TANK_FRAGMENT_PRESSURE) return 0 return ((pressure - TANK_FRAGMENT_PRESSURE) / TANK_FRAGMENT_SCALE) - /obj/item/gun/blastcannon/afterattack(atom/target, mob/user, flag, params) if((!bomb && bombcheck) || (!target) || (get_dist(get_turf(target), get_turf(user)) <= 2)) return ..() - - var/power = bomb ? calculate_bomb() : debug_power + var/power = bomb? calculate_bomb() : debug_power power = min(power, max_power) QDEL_NULL(bomb) update_icon() - var/heavy = power * 0.25 var/medium = power * 0.5 var/light = power @@ -123,12 +105,10 @@ message_admins("Blast wave fired from [ADMIN_VERBOSEJMP(starting)] at [ADMIN_VERBOSEJMP(targturf)] ([target.name]) by [ADMIN_LOOKUPFLW(user)] with power [heavy]/[medium]/[light].") log_game("Blast wave fired from [AREACOORD(starting)] at [AREACOORD(targturf)] ([target.name]) by [key_name(user)] with power [heavy]/[medium]/[light].") var/obj/projectile/blastwave/BW = new(loc, heavy, medium, light) + BW.hugbox = hugbox BW.preparePixelProjectile(target, get_turf(src), params, 0) BW.fire() - name = initial(name) - desc = initial(desc) -/// The projectile used by the blastcannon /obj/projectile/blastwave name = "blast wave" icon_state = "blastwave" @@ -136,38 +116,46 @@ nodamage = FALSE movement_type = FLYING projectile_phasing = ALL // just blows up the turfs lmao - /// The maximum distance this will inflict [EXPLODE_DEVASTATE] var/heavyr = 0 - /// The maximum distance this will inflict [EXPLODE_HEAVY] var/mediumr = 0 - /// The maximum distance this will inflict [EXPLODE_LIGHT] var/lightr = 0 + var/hugbox = TRUE + range = 150 -/obj/projectile/blastwave/Initialize(mapload, _heavy, _medium, _light) - range = max(_heavy, _medium, _light, 0) - heavyr = _heavy - mediumr = _medium - lightr = _light +/obj/projectile/blastwave/Initialize(mapload, _h, _m, _l) + heavyr = _h + mediumr = _m + lightr = _l return ..() /obj/projectile/blastwave/Range() - . = ..() - if(QDELETED(src)) - return - - heavyr = max(heavyr - 1, 0) - mediumr = max(mediumr - 1, 0) - lightr = max(lightr - 1, 0) - + ..() + var/amount_destruction = EXPLODE_NONE + var/wallbreak_chance = 0 if(heavyr) - SSexplosions.highturf += loc + amount_destruction = EXPLODE_DEVASTATE + wallbreak_chance = 99 else if(mediumr) - SSexplosions.medturf += loc + amount_destruction = EXPLODE_HEAVY + wallbreak_chance = 66 else if(lightr) - SSexplosions.lowturf += loc + amount_destruction = EXPLODE_LIGHT + wallbreak_chance = 33 + if(amount_destruction) + if(hugbox) + loc.contents_explosion(EXPLODE_HEAVY, loc) + if(istype(loc, /turf/closed/wall)) + var/turf/closed/wall/W = loc + if(prob(wallbreak_chance)) + W.dismantle_wall(TRUE, TRUE) + else + EX_ACT(loc, amount_destruction) else qdel(src) - return + + heavyr = max(heavyr - 1, 0) + mediumr = max(mediumr - 1, 0) + lightr = max(lightr - 1, 0) /obj/projectile/blastwave/ex_act() return From 09dad7b51e18c0711b6776ac5994b1d06171bf18 Mon Sep 17 00:00:00 2001 From: RKz Date: Sat, 3 Aug 2024 12:39:34 -0400 Subject: [PATCH 03/19] tank integrity refactor --- code/game/machinery/computer/arcade.dm | 2 +- code/game/objects/items.dm | 2 +- .../objects/items/devices/transfer_valve.dm | 6 + code/game/objects/items/tanks/tanks.dm | 150 ++++++++++-------- .../projectiles/guns/misc/blastcannon.dm | 32 ++-- 5 files changed, 106 insertions(+), 86 deletions(-) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 1fcb3c7f6eaee..f0740f2a766cb 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -271,7 +271,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( playsound(loc, 'sound/arcade/win.ogg', 50, 1, extrarange = -3, falloff_exponent = 10) if(obj_flags & EMAGGED) - new /obj/effect/spawner/newbomb/timer/syndicate(loc) + new /obj/effect/spawner/newbomb/timer(loc) new /obj/item/clothing/head/collectable/petehat(loc) message_admins("[ADMIN_LOOKUPFLW(usr)] has outbombed Cuban Pete and been awarded a bomb.") log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 5a21f635f38b8..1e44f2ec8ad2c 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -275,7 +275,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/blob_act(obj/structure/blob/B) if(B.loc == loc && !(resistance_flags & INDESTRUCTIBLE)) - qdel(src) + obj_destruction(MELEE) /obj/item/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 8b6d1ad9d75a1..7f79b2e2ddb7f 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -249,3 +249,9 @@ ui_update() update_icon() + +/** + * Returns if this is ready to be detonated. Checks if both tanks are in place. + */ +/obj/item/transfer_valve/proc/ready() + return tank_one && tank_two diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index 6405e4b22a110..11879b7fe3779 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -1,5 +1,7 @@ #define TTV_NO_CASING_MOD 0.25 #define REACTIONS_BEFORE_EXPLOSION 3 +/// How much time (in seconds) is assumed to pass while assuming air. Used to scale overpressure/overtemp damage when assuming air. +#define ASSUME_AIR_DT_FACTOR 1 /obj/item/tank name = "tank" @@ -18,10 +20,15 @@ custom_materials = list(/datum/material/iron = 500) actions_types = list(/datum/action/item_action/set_internals) armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 80, ACID = 30, STAMINA = 0, BLEED = 0) + integrity_failure = 0.5 + /// The gases this tank contains. var/datum/gas_mixture/air_contents = null - var/distribute_pressure = ONE_ATMOSPHERE - var/integrity = 3 + /// The volume of this tank. var/volume = 70 + /// Whether the tank is currently leaking. + var/leaking = FALSE + /// The pressure of the gases this tank supplies to internals. + var/distribute_pressure = ONE_ATMOSPHERE /// Mob that is currently breathing from the tank. var/mob/living/carbon/breathing_mob = null @@ -77,7 +84,7 @@ QDEL_NULL(air_contents) STOP_PROCESSING(SSobj, src) - . = ..() + return ..() /obj/item/tank/examine(mob/user) var/obj/icon = src @@ -109,25 +116,13 @@ . += "It feels [descriptive]." -/obj/item/tank/blob_act(obj/structure/blob/B) - if(B && B.loc == loc) - var/turf/location = get_turf(src) - if(!location) - qdel(src) - - if(air_contents) - location.assume_air(air_contents) - - qdel(src) - /obj/item/tank/deconstruct(disassembled = TRUE) - if(!disassembled) - var/turf/T = get_turf(src) - if(T) - T.assume_air(air_contents) - air_update_turf() - playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3) - qdel(src) + var/turf/location = get_turf(src) + if(location) + location.assume_air(air_contents) + location.air_update_turf(FALSE, FALSE) + playsound(location, 'sound/effects/spray.ogg', 10, TRUE, -3) + return ..() /obj/item/tank/suicide_act(mob/living/user) var/mob/living/carbon/human/human_user = user @@ -221,21 +216,20 @@ /obj/item/tank/assume_air(datum/gas_mixture/giver) air_contents.merge(giver) - - check_status() - return 1 + handle_tolerances(ASSUME_AIR_DT_FACTOR) + return TRUE /obj/item/tank/assume_air_moles(datum/gas_mixture/giver, moles) giver.transfer_to(air_contents, moles) - check_status() - return 1 + handle_tolerances(ASSUME_AIR_DT_FACTOR) + return TRUE /obj/item/tank/assume_air_ratio(datum/gas_mixture/giver, ratio) giver.transfer_ratio_to(air_contents, ratio) - check_status() - return 1 + handle_tolerances(ASSUME_AIR_DT_FACTOR) + return TRUE /obj/item/tank/proc/remove_air_volume(volume_to_return) if(!air_contents) @@ -249,23 +243,71 @@ return remove_air(moles_needed) -/obj/item/tank/process() +/obj/item/tank/process(delta_time) + if(!air_contents) + return + //Allow for reactions air_contents.react(src) - check_status() - -/obj/item/tank/proc/check_status() - //Handle exploding, leaking, and rupturing of the tank - + handle_tolerances(delta_time) + if(QDELETED(src) || !leaking || !air_contents) + return + var/turf/location = get_turf(src) + if(!location) + return + var/datum/gas_mixture/leaked_gas = air_contents.remove_ratio(0.25) + location.assume_air(leaked_gas) + location.air_update_turf(FALSE, FALSE) + +/** + * Handles the minimum and maximum pressure tolerances of the tank. + * + * Arguments: + * - delta_time: How long has passed between ticks. + */ +/obj/item/tank/proc/handle_tolerances(delta_time) if(!air_contents) - return 0 + return FALSE var/pressure = air_contents.return_pressure() var/temperature = air_contents.return_temperature() + if(temperature >= TANK_MELT_TEMPERATURE) + var/temperature_damage_ratio = (temperature - TANK_MELT_TEMPERATURE) / temperature + take_damage(max_integrity * temperature_damage_ratio * delta_time, BURN, FIRE, FALSE, NONE) + if(QDELETED(src)) + return TRUE + + if(pressure >= TANK_LEAK_PRESSURE) + var/pressure_damage_ratio = (pressure - TANK_LEAK_PRESSURE) / (TANK_RUPTURE_PRESSURE - TANK_LEAK_PRESSURE) + take_damage(max_integrity * pressure_damage_ratio * delta_time, BRUTE, BOMB, FALSE, NONE) + return TRUE + +/// Handles the tank springing a leak. +/obj/item/tank/obj_break(damage_flag) + . = ..() + if(leaking) + return + + leaking = TRUE + if(obj_integrity < 0) // So we don't play the alerts while we are exploding or rupturing. + return + visible_message("[src] springs a leak!") + playsound(src, 'sound/effects/spray.ogg', 10, TRUE, -3) +/// Handles rupturing and fragmenting +/obj/item/tank/obj_destruction(damage_flag) + if(!air_contents) + return ..() + + var/turf/location = get_turf(src) + if(!location) + return ..() + + /// Handle fragmentation + var/pressure = air_contents.return_pressure() if(pressure > TANK_FRAGMENT_PRESSURE) var/explosion_mod = 1 - if(!istype(src.loc, /obj/item/transfer_valve)) + if(!istype(loc, /obj/item/transfer_valve)) log_bomber(details = "[src.fingerprintslast] was the last key to touch", bomb = src, additional_details = ", which ruptured explosively") else if(!istype(src.loc?.loc, /obj/machinery/syndicatebomb)) explosion_mod = TTV_NO_CASING_MOD @@ -274,38 +316,10 @@ air_contents.react(src) pressure = air_contents.return_pressure() var/range = (pressure-TANK_FRAGMENT_PRESSURE)/TANK_FRAGMENT_SCALE - var/turf/epicenter = get_turf(loc) - - - explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5), cap_modifier = explosion_mod) - if(istype(src.loc, /obj/item/transfer_valve)) - qdel(src.loc) - else - qdel(src) - - else if(pressure > TANK_RUPTURE_PRESSURE || temperature > TANK_MELT_TEMPERATURE) - if(integrity <= 0) - var/turf/T = get_turf(src) - if(!T) - return - T.assume_air(air_contents) - playsound(src.loc, 'sound/effects/spray.ogg', 10, 1, -3) - qdel(src) - else - integrity-- - - else if(pressure > TANK_LEAK_PRESSURE) - if(integrity <= 0) - var/turf/T = get_turf(src) - if(!T) - return - var/datum/gas_mixture/leaked_gas = air_contents.remove_ratio(0.25) - T.assume_air(leaked_gas) - else - integrity-- - - else if(integrity < 3) - integrity++ + + explosion(location, round(range*0.25), round(range*0.5), round(range), round(range*1.5), cap_modifier = explosion_mod) + return ..() #undef TTV_NO_CASING_MOD #undef REACTIONS_BEFORE_EXPLOSION +#undef ASSUME_AIR_DT_FACTOR diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index 820fa67248cf7..326e3173f658e 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -54,24 +54,25 @@ name = initial(name) desc = initial(desc) -/obj/item/gun/blastcannon/attackby(obj/O, mob/user) - if(istype(O, /obj/item/transfer_valve)) - var/obj/item/transfer_valve/T = O - if(!T.tank_one || !T.tank_two) - to_chat(user, "What good would an incomplete bomb do?") - return FALSE - if(!user.transferItemToLoc(T, src)) - to_chat(user, "[T] seems to be stuck to your hand!") - return FALSE - user.visible_message("[user] attaches [T] to [src]!") - bomb = T - update_icon() - return TRUE - return ..() +/obj/item/gun/blastcannon/attackby(obj/item/transfer_valve/bomb_to_attach, mob/user) + if(!istype(bomb_to_attach)) + return ..() + + if(!bomb_to_attach.ready()) + to_chat(user, "What good would an incomplete bomb do?") + return FALSE + if(!user.transferItemToLoc(bomb_to_attach, src)) + to_chat(user, "[bomb_to_attach] seems to be stuck to your hand!") + return FALSE + + user.visible_message("[user] attaches [bomb_to_attach] to [src]!") + bomb = bomb_to_attach + update_icon() + return TRUE //returns the third value of a bomb blast /obj/item/gun/blastcannon/proc/calculate_bomb() - if(!istype(bomb) || !istype(bomb.tank_one) || !istype(bomb.tank_two)) + if(!istype(bomb) || !bomb.ready()) return 0 var/datum/gas_mixture/temp = new(max(reaction_volume_mod, 0)) bomb.merge_gases(temp) @@ -83,7 +84,6 @@ for(var/i in 1 to reaction_cycles) temp.react(src) var/pressure = temp.return_pressure() - qdel(temp) if(pressure < TANK_FRAGMENT_PRESSURE) return 0 return ((pressure - TANK_FRAGMENT_PRESSURE) / TANK_FRAGMENT_SCALE) From 7468f00419dc49d8a4dd7f17c5e6e4c3640b8a09 Mon Sep 17 00:00:00 2001 From: RKz Date: Sat, 3 Aug 2024 23:23:06 -0400 Subject: [PATCH 04/19] before threading into turf integrity --- _maps/RuinGeneration/13x13_ai-lab.dmm | 2 +- _maps/map_files/BoxStation/BoxStation.dmm | 4 +- _maps/map_files/EchoStation/EchoStation.dmm | 4 +- _maps/map_files/FlandStation/FlandStation.dmm | 12 +- _maps/map_files/KiloStation/KiloStation.dmm | 8 +- _maps/map_files/MetaStation/MetaStation.dmm | 8 +- _maps/map_files/RadStation/RadStation.dmm | 2 +- beestation.dme | 1 + .../signals_atom/signals_atom_attack.dm | 10 ++ .../signals_item/signals_itemattack.dm | 2 +- .../signals_machine/signals_machinery.dm | 2 +- .../dcs/signals/signals_obj/signals_object.dm | 11 -- code/_onclick/item_attack.dm | 29 ++-- code/datums/components/shell.dm | 2 +- code/datums/elements/obj_regen.dm | 4 +- code/game/atom_defense.dm | 131 ++++++++++++++++++ code/game/atoms.dm | 21 +++ code/game/data_huds.dm | 2 +- code/game/gamemodes/gangs/dominator.dm | 8 +- code/game/machinery/PDApainter.dm | 4 +- code/game/machinery/_machinery.dm | 6 +- code/game/machinery/airlock_cycle_control.dm | 2 +- code/game/machinery/announcement_system.dm | 2 +- code/game/machinery/aug_manipulator.dm | 4 +- code/game/machinery/camera/camera.dm | 6 +- code/game/machinery/computer/_computer.dm | 6 +- code/game/machinery/defibrillator_mount.dm | 2 +- code/game/machinery/digital_clock.dm | 4 +- code/game/machinery/doors/airlock.dm | 28 ++-- code/game/machinery/doors/brigdoors.dm | 2 +- code/game/machinery/doors/door.dm | 2 +- code/game/machinery/doors/windowdoor.dm | 2 +- code/game/machinery/droneDispenser.dm | 4 +- code/game/machinery/firealarm.dm | 8 +- code/game/machinery/flasher.dm | 4 +- code/game/machinery/hologram.dm | 2 +- code/game/machinery/iv_drip.dm | 2 +- .../newscaster/newscaster_machine.dm | 6 +- .../machinery/porta_turret/portable_turret.dm | 4 +- code/game/machinery/shieldgen.dm | 9 +- code/game/machinery/stasis.dm | 6 +- code/game/machinery/syndicatebomb.dm | 12 +- .../machinery/telecomms/telecomunications.dm | 2 +- code/game/objects/effects/glowshroom.dm | 2 +- code/game/objects/effects/spiders.dm | 2 +- code/game/objects/items.dm | 2 +- code/game/objects/items/RPD.dm | 2 +- code/game/objects/items/crab17.dm | 10 +- .../objects/items/deployable/barricade.dm | 10 +- code/game/objects/items/extinguisher.dm | 2 +- code/game/objects/items/inducer.dm | 2 +- code/game/objects/items/shields.dm | 18 +-- code/game/objects/items/tanks/tanks.dm | 6 +- code/game/objects/obj_defense.dm | 120 +--------------- code/game/objects/objs.dm | 23 +-- code/game/objects/structures.dm | 2 +- code/game/objects/structures/aliens.dm | 6 +- code/game/objects/structures/barsigns.dm | 2 +- .../structures/crates_lockers/closets.dm | 2 +- .../closets/secure/secure_closets.dm | 2 +- .../crates_lockers/crates/secure.dm | 2 +- code/game/objects/structures/displaycase.dm | 14 +- code/game/objects/structures/extinguisher.dm | 2 +- code/game/objects/structures/fireaxe.dm | 10 +- code/game/objects/structures/grille.dm | 19 ++- .../objects/structures/lavaland/geyser.dm | 2 +- code/game/objects/structures/manned_turret.dm | 2 +- code/game/objects/structures/mineral_doors.dm | 6 +- code/game/objects/structures/mirror.dm | 4 +- .../objects/structures/petrified_statue.dm | 6 +- code/game/objects/structures/popout_cake.dm | 2 +- code/game/objects/structures/railings.dm | 4 +- code/game/objects/structures/reflector.dm | 4 +- code/game/objects/structures/window.dm | 18 +-- code/game/turfs/closed/walls.dm | 3 + code/game/turfs/turf.dm | 9 ++ code/game/turfs/turf_integrity.dm | 9 +- .../antagonists/blob/structures/_blob.dm | 14 +- .../antagonists/blob/structures/core.dm | 2 +- .../antagonists/blob/structures/shield.dm | 10 +- .../antagonists/clock_cult/clockwork_turfs.dm | 2 +- .../clock_cult/items/clockwork_weapon.dm | 2 +- .../clock_cult/items/integration_cog.dm | 2 +- .../antagonists/cult/cult_structures.dm | 8 +- .../heretic/structures/mawed_crucible.dm | 2 +- .../antagonists/space_dragon/carp_rift.dm | 2 +- code/modules/aquarium/aquarium.dm | 4 +- .../atmospherics/machinery/airalarm.dm | 2 +- .../atmospherics/machinery/pipes/pipes.dm | 2 +- .../machinery/portable/canister.dm | 2 +- code/modules/clothing/clothing.dm | 6 +- code/modules/clothing/gloves/color.dm | 2 +- .../discovery_research/discovery_scanner.dm | 2 +- .../kitchen_machinery/smartfridge.dm | 17 +++ .../living/carbon/alien/special/facehugger.dm | 4 +- .../computers/item/computer.dm | 14 +- .../computers/item/computer_damage.dm | 2 +- .../computers/item/tablet.dm | 4 +- .../modular_computers/file_system/program.dm | 4 +- .../file_system/programs/phys_scanner.dm | 2 +- .../modular_computers/hardware/_hardware.dm | 4 +- code/modules/paperwork/photocopier.dm | 2 +- code/modules/power/apc/apc_attack.dm | 8 +- code/modules/power/apc/apc_power_proc.dm | 2 +- code/modules/power/floodlight.dm | 2 +- code/modules/power/gravitygenerator.dm | 2 +- code/modules/power/lighting/light_items.dm | 2 +- code/modules/power/singularity/collector.dm | 2 +- code/modules/power/smes.dm | 4 +- code/modules/power/solar.dm | 6 +- code/modules/power/tracker.dm | 2 +- code/modules/power/turbine.dm | 8 +- code/modules/projectiles/autofire.dm | 2 +- code/modules/projectiles/gun.dm | 2 +- code/modules/reagents/reagent_dispenser.dm | 2 +- code/modules/recycling/conveyor.dm | 4 +- code/modules/recycling/disposal/pipe.dm | 2 +- code/modules/religion/sects/carp_sect.dm | 2 +- .../xenobiology/crossbreeding/_structures.dm | 2 +- .../ruins/objects_and_mobs/ash_walker_den.dm | 2 +- code/modules/security/genpop.dm | 4 +- code/modules/surgery/anesthetic_machine.dm | 2 +- code/modules/vehicles/_vehicle.dm | 2 +- code/modules/vehicles/atv.dm | 12 +- code/modules/vehicles/cars/car.dm | 2 +- code/modules/vehicles/cars/clowncar.dm | 2 +- code/modules/vehicles/mecha/_mecha.dm | 10 +- code/modules/vehicles/mecha/combat/durand.dm | 4 +- code/modules/vehicles/mecha/combat/honker.dm | 2 +- code/modules/vehicles/mecha/mecha_defense.dm | 14 +- code/modules/vehicles/mecha/mecha_topic.dm | 2 +- code/modules/vehicles/motorized_wheelchair.dm | 2 +- code/modules/vehicles/secway.dm | 12 +- code/modules/vehicles/wheelchair.dm | 2 +- code/modules/vending/_vending.dm | 2 +- html/changelog.html | 20 +-- html/changelogs/.all_changelog.yml | 2 +- 137 files changed, 527 insertions(+), 463 deletions(-) create mode 100644 code/game/atom_defense.dm diff --git a/_maps/RuinGeneration/13x13_ai-lab.dmm b/_maps/RuinGeneration/13x13_ai-lab.dmm index c070dca1389c1..f5ce8d5078934 100644 --- a/_maps/RuinGeneration/13x13_ai-lab.dmm +++ b/_maps/RuinGeneration/13x13_ai-lab.dmm @@ -344,7 +344,7 @@ dir = 1; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/effect/decal/cleanable/blood/tracks, diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index d965c4477043e..e375730289b0b 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -24059,7 +24059,7 @@ icon_state = "rightsecure"; layer = 4.1; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = 4; req_access_txt = "16" }, @@ -33232,7 +33232,7 @@ icon_state = "leftsecure"; layer = 4.1; name = "Tertiary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = -3; req_access_txt = "16" }, diff --git a/_maps/map_files/EchoStation/EchoStation.dmm b/_maps/map_files/EchoStation/EchoStation.dmm index 595709c2ee0eb..e738b45cac994 100644 --- a/_maps/map_files/EchoStation/EchoStation.dmm +++ b/_maps/map_files/EchoStation/EchoStation.dmm @@ -22484,7 +22484,7 @@ dir = 4; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ @@ -40837,7 +40837,7 @@ dir = 8; icon_state = "leftsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ diff --git a/_maps/map_files/FlandStation/FlandStation.dmm b/_maps/map_files/FlandStation/FlandStation.dmm index 0813e515dbe2b..decc64d1ae918 100644 --- a/_maps/map_files/FlandStation/FlandStation.dmm +++ b/_maps/map_files/FlandStation/FlandStation.dmm @@ -23264,7 +23264,7 @@ icon_state = "rightsecure"; layer = 4.1; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /turf/open/floor/circuit/red, @@ -24110,7 +24110,7 @@ dir = 4; icon_state = "right"; name = "Secure Creature Pen shield holder"; - obj_integrity = 300 + atom_integrity = 300 }, /obj/structure/window/reinforced{ dir = 1 @@ -24824,7 +24824,7 @@ dir = 1; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ @@ -25650,7 +25650,7 @@ dir = 4; icon_state = "leftsecure"; name = "Secure Creature Pen shield holder"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "47" }, /obj/structure/sign/warning/electricshock{ @@ -28254,7 +28254,7 @@ base_state = "rightsecure"; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /turf/open/floor/engine, @@ -32304,7 +32304,7 @@ icon_state = "rightsecure"; layer = 4.1; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /turf/open/floor/circuit/red, diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 3ecceb65fc44d..85fa65d2c8b3b 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -19583,7 +19583,7 @@ dir = 8; icon_state = "leftsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ @@ -19677,7 +19677,7 @@ icon_state = "rightsecure"; layer = 4.1; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = 4; req_access_txt = "16" }, @@ -19732,7 +19732,7 @@ icon_state = "leftsecure"; layer = 4.1; name = "Tertiary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = -3; req_access_txt = "16" }, @@ -20129,7 +20129,7 @@ dir = 4; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 21bb09ac5c111..5ca28344af6ba 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -7065,7 +7065,7 @@ icon_state = "rightsecure"; layer = 4.1; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = 4; req_access_txt = "16" }, @@ -7098,7 +7098,7 @@ icon_state = "leftsecure"; layer = 4.1; name = "Tertiary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = -3; req_access_txt = "16" }, @@ -43070,7 +43070,7 @@ dir = 4; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/camera/directional/north{ @@ -77613,7 +77613,7 @@ dir = 8; icon_state = "leftsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/newscaster{ diff --git a/_maps/map_files/RadStation/RadStation.dmm b/_maps/map_files/RadStation/RadStation.dmm index c456e6f4dd8f3..6365871752711 100644 --- a/_maps/map_files/RadStation/RadStation.dmm +++ b/_maps/map_files/RadStation/RadStation.dmm @@ -9438,7 +9438,7 @@ icon_state = "leftsecure"; layer = 4.1; name = "Tertiary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /turf/open/floor/engine/o2, diff --git a/beestation.dme b/beestation.dme index c608a2fe02a0e..f1610ac6f6d19 100644 --- a/beestation.dme +++ b/beestation.dme @@ -964,6 +964,7 @@ #include "code\datums\wires\tesla_coil.dm" #include "code\datums\wires\vending.dm" #include "code\game\alternate_appearance.dm" +#include "code\game\atom_defense.dm" #include "code\game\atoms.dm" #include "code\game\atoms_movable.dm" #include "code\game\communications.dm" diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm index 91094391ed1d1..d2eb808432968 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm @@ -12,6 +12,16 @@ #define COMSIG_ATOM_ATTACK_ANIMAL "attack_animal" //from base of atom/attack_basic_mob(): (/mob/user) #define COMSIG_ATOM_ATTACK_BASIC_MOB "attack_basic_mob" +/// from /atom/proc/atom_break: (damage_flag) +#define COMSIG_ATOM_BREAK "atom_break" +/// from base of [/atom/proc/atom_fix]: () +#define COMSIG_ATOM_FIX "atom_fix" +///from base of [/atom/proc/update_integrity]: (old_value, new_value) +#define COMSIG_ATOM_INTEGRITY_CHANGED "atom_integrity_changed" +///from base of [/atom/proc/take_damage]: (damage_amount, damage_type, damage_flag, sound_effect, attack_dir, aurmor_penetration) +#define COMSIG_ATOM_TAKE_DAMAGE "atom_take_damage" + /// Return bitflags for the above signal which prevents the atom taking any damage. + #define COMPONENT_NO_TAKE_DAMAGE (1<<0) /* Attack signals. They should share the returned flags, to standardize the attack chain. */ /// tool_act -> pre_attack -> target.attackby (item.attack) -> afterattack diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_itemattack.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_itemattack.dm index dc127a0a0714f..512340addc76a 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_itemattack.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_itemattack.dm @@ -9,7 +9,7 @@ #define COMSIG_MOB_ITEM_ATTACKBY "item_attackby" ///from base of obj/item/attack_self(): (/mob) #define COMSIG_ITEM_ATTACK_SELF "item_attack_self" -///from base of obj/item/attack_obj(): (/obj, /mob) +///from base of obj/item/attack_atom(): (/obj, /mob) #define COMSIG_ITEM_ATTACK_OBJ "item_attack_obj" ///from base of obj/item/pre_attack(): (atom/target, mob/user, params) #define COMSIG_ITEM_PRE_ATTACK "item_pre_attack" diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_machine/signals_machinery.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_machine/signals_machinery.dm index 0ee2c981e4acd..caf176f756502 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_machine/signals_machinery.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_machine/signals_machinery.dm @@ -8,7 +8,7 @@ #define COMSIG_MACHINE_OPEN "machine_open" /// Sent from /obj/machinery/close_machine(): (atom/movable/target) #define COMSIG_MACHINE_CLOSE "machine_close" -//from /obj/machinery/obj_break(damage_flag): (damage_flag) +//from /obj/machinery/atom_break(damage_flag): (damage_flag) #define COMSIG_MACHINERY_BROKEN "machinery_broken" ///from base power_change() when power is lost #define COMSIG_MACHINERY_POWER_LOST "machinery_power_lost" diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm index a8f84509c1816..32c2f6ae653f6 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_object.dm @@ -4,12 +4,6 @@ // /obj signals -///from base of [/obj/proc/take_damage]: (damage_amount, damage_type, damage_flag, sound_effect, attack_dir, aurmor_penetration) -#define COMSIG_OBJ_TAKE_DAMAGE "obj_take_damage" - /// Return bitflags for the above signal which prevents the object taking any damage. - #define COMPONENT_NO_TAKE_DAMAGE (1<<0) -///from base of [/obj/proc/update_integrity]: (old_value, new_value) -#define COMSIG_OBJ_INTEGRITY_CHANGED "obj_integrity_changed" ///from base of obj/deconstruct(): (disassembled) #define COMSIG_OBJ_DECONSTRUCT "obj_deconstruct" ///from base of code/game/machinery @@ -17,11 +11,6 @@ ///from base of /turf/proc/levelupdate(). (intact) true to hide and false to unhide #define COMSIG_OBJ_HIDE "obj_hide" -/// from /obj/proc/obj_break: () -#define COMSIG_OBJ_BREAK "obj_break" -/// from base of [/obj/proc/obj_fix]: () -#define COMSIG_OBJ_FIX "obj_fix" - /// from /obj/proc/make_unfrozen() #define COMSIG_OBJ_UNFREEZE "obj_unfreeze" diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 1478721cd627f..1638755bc4ae4 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -48,19 +48,19 @@ * Called on an object being hit by an item * * Arguments: - * * obj/item/W - The item hitting this atom + * * obj/item/attacking_item - The item hitting this atom * * mob/user - The wielder of this item * * params - click params such as alt/shift etc * * See: [/obj/item/proc/melee_attack_chain] */ -/atom/proc/attackby(obj/item/W, mob/user, params) - if(SEND_SIGNAL(src, COMSIG_PARENT_ATTACKBY, W, user, params) & COMPONENT_NO_AFTERATTACK) +/atom/proc/attackby(obj/item/attacking_item, mob/user, params) + if(SEND_SIGNAL(src, COMSIG_PARENT_ATTACKBY, attacking_item, user, params) & COMPONENT_NO_AFTERATTACK) return TRUE return FALSE /obj/attackby(obj/item/I, mob/living/user, params) - return ..() || ((obj_flags & CAN_BE_HIT) && I.attack_obj(src, user)) + return ..() || ((obj_flags & CAN_BE_HIT) && I.attack_atom(src, user, params)) /mob/living/attackby(obj/item/I, mob/living/user, params) if(..()) @@ -138,21 +138,21 @@ add_fingerprint(user) -/// The equivalent of the standard version of [/obj/item/proc/attack] but for object targets. -/obj/item/proc/attack_obj(obj/O, mob/living/user) - if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_OBJ, O, user) & COMPONENT_CANCEL_ATTACK_CHAIN) +/// The equivalent of the standard version of [/obj/item/proc/attack] but for non mob targets. +/obj/item/proc/attack_atom(atom/attacked_atom, mob/living/user, params) + if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_OBJ, attacked_atom, user) & COMPONENT_CANCEL_ATTACK_CHAIN) return if(item_flags & NOBLUDGEON) return user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(O) - O.attacked_by(src, user) + user.do_attack_animation(attacked_atom) + attacked_atom.attacked_by(src, user) -/// Called from [/obj/item/proc/attack_obj] and [/obj/item/proc/attack] if the attack succeeds -/atom/proc/attacked_by() - return +/// Called from [/obj/item/proc/attack_atom] and [/obj/item/proc/attack] if the attack succeeds +/atom/proc/attacked_by(obj/item/attacking_item, mob/living/user) + if(!uses_integrity) + CRASH("attacked_by() was called on an object that doesnt use integrity!") -/obj/attacked_by(obj/item/attacking_item, mob/living/user) if(!attacking_item.force) return @@ -163,6 +163,9 @@ "You hit [src] with [attacking_item][damage ? "." : ", without leaving a mark!"]", null, COMBAT_MESSAGE_RANGE) log_combat(user, src, "attacked", attacking_item) +/area/attacked_by(obj/item/attacking_item, mob/living/user) + CRASH("areas are NOT supposed to have attacked_by() called on them!") + /mob/living/attacked_by(obj/item/I, mob/living/user) send_item_attack_message(I, user) if(I.force) diff --git a/code/datums/components/shell.dm b/code/datums/components/shell.dm index 9a98e816e6d5e..06a109abd096c 100644 --- a/code/datums/components/shell.dm +++ b/code/datums/components/shell.dm @@ -133,7 +133,7 @@ if(istype(item, /obj/item/inducer)) var/obj/item/inducer/inducer = item - INVOKE_ASYNC(inducer, TYPE_PROC_REF(/obj/item, attack_obj), attached_circuit, attacker, list()) + INVOKE_ASYNC(inducer, TYPE_PROC_REF(/obj/item, attack_atom), attached_circuit, attacker, list()) return COMPONENT_NO_AFTERATTACK if(attached_circuit) diff --git a/code/datums/elements/obj_regen.dm b/code/datums/elements/obj_regen.dm index c27d23adee610..efb55f4bfa7c0 100644 --- a/code/datums/elements/obj_regen.dm +++ b/code/datums/elements/obj_regen.dm @@ -21,14 +21,14 @@ return ELEMENT_INCOMPATIBLE rate = _rate - RegisterSignal(target, COMSIG_OBJ_TAKE_DAMAGE, PROC_REF(on_take_damage)) + RegisterSignal(target, COMSIG_ATOM_TAKE_DAMAGE, PROC_REF(on_take_damage)) if(target.get_integrity() < target.max_integrity) if(!length(processing)) START_PROCESSING(SSobj, src) processing |= target /datum/element/obj_regen/Detach(obj/target) - UnregisterSignal(target, COMSIG_OBJ_TAKE_DAMAGE) + UnregisterSignal(target, COMSIG_ATOM_TAKE_DAMAGE) processing -= target if(!length(processing)) STOP_PROCESSING(SSobj, src) diff --git a/code/game/atom_defense.dm b/code/game/atom_defense.dm new file mode 100644 index 0000000000000..a48518ee580d8 --- /dev/null +++ b/code/game/atom_defense.dm @@ -0,0 +1,131 @@ +/// The essential proc to call when an atom must receive damage of any kind. +/atom/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = "", sound_effect = TRUE, attack_dir, armour_penetration = 0) + if(!uses_integrity) + CRASH("[src] had /atom/proc/take_damage() called on it without it being a type that has uses_integrity = TRUE!") + if(QDELETED(src)) + CRASH("[src] taking damage after deletion") + if(atom_integrity <= 0) + CRASH("[src] taking damage while having <= 0 integrity") + if(sound_effect) + play_attack_sound(damage_amount, damage_type, damage_flag) + if((resistance_flags & INDESTRUCTIBLE) || integrity <= 0) + return + damage_amount = run_atom_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration) + if(damage_amount < DAMAGE_PRECISION) + return + if(SEND_SIGNAL(src, COMSIG_ATOM_TAKE_DAMAGE, damage_amount, damage_type, damage_flag, sound_effect, attack_dir, armour_penetration) & COMPONENT_NO_TAKE_DAMAGE) + return + + . = damage_amount + + update_integrity(atom_integrity - damage_amount) + + //BREAKING FIRST + if(integrity_failure && atom_integrity <= integrity_failure * max_integrity) + atom_break(damage_flag) + + //DESTROYING SECOND + if(atom_integrity <= 0) + atom_destruction(damage_flag) + +/// Proc for recovering atom_integrity. Returns the amount repaired by +/atom/proc/repair_damage(amount) + if(amount <= 0) // We only recover here + return + var/new_integrity = min(max_integrity, atom_integrity + amount) + . = new_integrity - atom_integrity + + update_integrity(new_integrity) + + if(integrity_failure && atom_integrity > integrity_failure * max_integrity) + atom_fix() + +/// Handles the integrity of an atom changing. This must be called instead of changing integrity directly. +/atom/proc/update_integrity(new_value) + SHOULD_NOT_OVERRIDE(TRUE) + if(!uses_integrity) + CRASH("/atom/proc/update_integrity() was called on [src] when it doesnt use integrity!") + var/old_value = atom_integrity + new_value = max(0, new_value) + if(atom_integrity == new_value) + return + atom_integrity = new_value + SEND_SIGNAL(src, COMSIG_ATOM_INTEGRITY_CHANGED, old_value, new_value) + +/// This mostly exists to keep atom_integrity private. Might be useful in the future. +/atom/proc/get_integrity() + SHOULD_BE_PURE(TRUE) + return atom_integrity + +///returns the damage value of the attack after processing the atom's various armor protections +/atom/proc/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0) + if(!uses_integrity) + CRASH("/atom/proc/run_atom_armor was called on [src] without being implemented as a type that uses integrity!") + if(damage_flag == MELEE && damage_amount < damage_deflection) + return 0 + switch(damage_type) + if(BRUTE) + if(BURN) + else + return 0 + var/armor_protection = 0 + if(damage_flag) + armor_protection = armor?.getRating(damage_flag) + if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor. + armor_protection = clamp(armor_protection - armour_penetration, min(armor_protection, 0), 100) + return round(damage_amount * (100 - armor_protection)*0.01, DAMAGE_PRECISION) + +///the sound played when the atom is damaged. +/atom/proc/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + if(damage_amount) + playsound(src, 'sound/weapons/smash.ogg', 50, TRUE) + else + playsound(src, 'sound/weapons/tap.ogg', 50, TRUE) + if(BURN) + playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE) + +///Called to get the damage that hulks will deal to the atom. +/atom/proc/hulk_damage() + return 150 //the damage hulks do on punches to this atom, is affected by melee armor + +/atom/proc/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0) //used by attack_alien, attack_animal, and attack_slime + if(!uses_integrity) + CRASH("unimplemented /atom/proc/attack_generic()!") + user.do_attack_animation(src) + user.changeNext_move(CLICK_CD_MELEE) + return take_damage(damage_amount, damage_type, damage_flag, sound_effect, get_dir(src, user), armor_penetration) + +/// Called after the atom takes damage and integrity is below integrity_failure level +/atom/proc/atom_break(damage_flag) + SHOULD_CALL_PARENT(TRUE) + SEND_SIGNAL(src, COMSIG_ATOM_BREAK) + +/// Called when integrity is repaired above the breaking point having been broken before +/atom/proc/atom_fix() + SHOULD_CALL_PARENT(TRUE) + SEND_SIGNAL(src, COMSIG_ATOM_FIX) + +///what happens when the atom's integrity reaches zero. +/atom/proc/atom_destruction(damage_flag) + return + +///changes max_integrity while retaining current health percentage, returns TRUE if the atom got broken. +/atom/proc/modify_max_integrity(new_max, can_break = TRUE, damage_type = BRUTE) + if(!uses_integrity) + CRASH("/atom/proc/modify_max_integrity() was called on [src] when it doesnt use integrity!") + var/current_integrity = atom_integrity + var/current_max = max_integrity + + if(current_integrity != 0 && current_max != 0) + var/percentage = current_integrity / current_max + current_integrity = max(1, round(percentage * new_max)) //don't destroy it as a result + atom_integrity = current_integrity + + max_integrity = new_max + + if(can_break && integrity_failure && current_integrity <= integrity_failure * max_integrity) + atom_break(damage_type) + return TRUE + return FALSE diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 0deec87f6c61d..b5af21fc30376 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -127,6 +127,18 @@ ///AI controller that controls this atom. type on init, then turned into an instance during runtime var/datum/ai_controller/ai_controller + ///any atom that uses integrity and can be damaged must set this to true, otherwise the integrity procs will throw an error + var/uses_integrity = FALSE + + var/datum/armor/armor + VAR_PRIVATE/atom_integrity //defaults to max_integrity + var/max_integrity = 500 + var/integrity_failure = 0 //0 if we have no special broken behavior, otherwise is a percentage of at what point the atom breaks. 0.5 being 50% + ///Damage under this value will be completely ignored + var/damage_deflection = 0 + + var/resistance_flags = NONE // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF + /// Lazylist of all messages currently on this atom var/list/chat_messages @@ -233,6 +245,15 @@ // apply materials properly from the default custom_materials value set_custom_materials(custom_materials) + if(uses_integrity) + if (islist(armor)) + armor = getArmor(arglist(armor)) + else if (!armor) + armor = getArmor() + else if (!istype(armor, /datum/armor)) + stack_trace("Invalid type [armor.type] found in .armor during /atom Initialize()") + atom_integrity = max_integrity + ComponentInitialize() InitializeAIController() diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index e47cf5326b72c..c149bceb6bf38 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -400,7 +400,7 @@ var/image/holder = hud_list[DIAG_MECH_HUD] var/icon/I = icon(icon, icon_state, dir) holder.pixel_y = I.Height() - world.icon_size - holder.icon_state = "huddiag[RoundDiagBar(obj_integrity/max_integrity)]" + holder.icon_state = "huddiag[RoundDiagBar(atom_integrity/max_integrity)]" /obj/vehicle/sealed/mecha/proc/diag_hud_set_mechcell() diff --git a/code/game/gamemodes/gangs/dominator.dm b/code/game/gamemodes/gangs/dominator.dm index 4af2519204b88..28acd52565b45 100644 --- a/code/game/gamemodes/gangs/dominator.dm +++ b/code/game/gamemodes/gangs/dominator.dm @@ -59,7 +59,7 @@ add_overlay(dominator_overlay) else icon_state = "dominator" - if(obj_integrity/max_integrity < 0.66) + if(atom_integrity/max_integrity < 0.66) add_overlay("damage") else icon_state = "dominator-broken" @@ -76,7 +76,7 @@ to_chat(user, "Hostile Takeover of [station_name()] successful. Have a great day.") else to_chat(user, "System on standby.") - to_chat(user, "System Integrity: [round((obj_integrity/max_integrity)*100,1)]%") + to_chat(user, "System Integrity: [round((atom_integrity/max_integrity)*100,1)]%") /obj/machinery/dominator/process() if(gang && gang.domination_time != NOT_DOMINATING) @@ -123,7 +123,7 @@ /obj/machinery/dominator/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) . = ..() if(.) - if(obj_integrity/max_integrity > 0.66) + if(atom_integrity/max_integrity > 0.66) if(prob(damage_amount*2)) spark_system.start() else if(!(stat & BROKEN)) @@ -131,7 +131,7 @@ update_icon() -/obj/machinery/dominator/obj_break(damage_flag) +/obj/machinery/dominator/atom_break(damage_flag) if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1)) set_broken() diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm index 8c6adca5ef43c..fcda0cd57525b 100644 --- a/code/game/machinery/PDApainter.dm +++ b/code/game/machinery/PDApainter.dm @@ -149,7 +149,7 @@ return to_chat(user, "You repair [src].") set_machine_stat(machine_stat & ~BROKEN) - obj_integrity = max_integrity + atom_integrity = max_integrity update_icon() else to_chat(user, "[src] does not need repairs.") @@ -157,7 +157,7 @@ return ..() /obj/machinery/pdapainter/deconstruct(disassembled = TRUE) - obj_break() + atom_break() /obj/machinery/pdapainter/attack_hand(mob/user) if(!..()) diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 7e6497177ac85..8eb8dfd8d6a58 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -549,7 +549,7 @@ Class Procs: new_frame.update_integrity(new_frame.max_integrity * 0.5) //the frame is already half broken transfer_fingerprints_to(new_frame) -/obj/machinery/obj_break(damage_flag) +/obj/machinery/atom_break(damage_flag) SHOULD_CALL_PARENT(TRUE) . = ..() if(!(machine_stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1)) @@ -577,7 +577,7 @@ Class Procs: deconstruct(FALSE) return ..() -/obj/machinery/run_obj_armor(damage_amount, damage_type, damage_flag = NONE, attack_dir) +/obj/machinery/run_atom_armor(damage_amount, damage_type, damage_flag = NONE, attack_dir) if(damage_flag == MELEE && damage_amount < damage_deflection) return 0 return ..() @@ -729,7 +729,7 @@ Class Procs: if(!(resistance_flags & INDESTRUCTIBLE)) if(resistance_flags & ON_FIRE) . += "It's on fire!" - var/healthpercent = (obj_integrity/max_integrity) * 100 + var/healthpercent = (atom_integrity/max_integrity) * 100 switch(healthpercent) if(50 to 99) . += "It looks slightly damaged." diff --git a/code/game/machinery/airlock_cycle_control.dm b/code/game/machinery/airlock_cycle_control.dm index eac10a08fbc9f..c1bb82c28a249 100644 --- a/code/game/machinery/airlock_cycle_control.dm +++ b/code/game/machinery/airlock_cycle_control.dm @@ -812,7 +812,7 @@ visible_message("Sparks fly out of [src]!", "You emag [src], disabling its safeties.") playsound(src, "sparks", 50, 1) -/obj/machinery/advanced_airlock_controller/obj_break(damage_flag) +/obj/machinery/advanced_airlock_controller/atom_break(damage_flag) ..() update_icon() diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index a777feaf0d418..6eaa41395491c 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -167,7 +167,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) interact(user) /obj/machinery/announcement_system/proc/act_up() //does funny breakage stuff - if(!obj_break()) // if badmins flag this unbreakable or its already broken + if(!atom_break()) // if badmins flag this unbreakable or its already broken return arrival = pick("#!@%ERR-34%2 CANNOT LOCAT@# JO# F*LE!", "CRITICAL ERROR 99.", "ERR)#: DA#AB@#E NOT F(*ND!") diff --git a/code/game/machinery/aug_manipulator.dm b/code/game/machinery/aug_manipulator.dm index 217860ccbbbb8..2f5468c30a59c 100644 --- a/code/game/machinery/aug_manipulator.dm +++ b/code/game/machinery/aug_manipulator.dm @@ -73,7 +73,7 @@ update_icon() else if(O.tool_behaviour == TOOL_WELDER && user.a_intent != INTENT_HARM) - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(!O.tool_start_check(user, amount=0)) return @@ -86,7 +86,7 @@ return to_chat(user, "You repair [src].") set_machine_stat(machine_stat & ~BROKEN) - obj_integrity = max(obj_integrity, max_integrity) + atom_integrity = max(atom_integrity, max_integrity) update_icon() else to_chat(user, "[src] does not need repairs.") diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 829dad51359f0..55d7511b9f104 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -229,7 +229,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/camera/xray, 0) if(!panel_open) return FALSE toggle_cam(user, 1) - obj_integrity = max_integrity //this is a pretty simplistic way to heal the camera, but there's no reason for this to be complex. + atom_integrity = max_integrity //this is a pretty simplistic way to heal the camera, but there's no reason for this to be complex. I.play_tool_sound(src) return TRUE @@ -373,12 +373,12 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/camera/xray, 0) return ..() -/obj/machinery/camera/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) +/obj/machinery/camera/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) if(damage_flag == MELEE && damage_amount < 12 && !(machine_stat & BROKEN)) return 0 . = ..() -/obj/machinery/camera/obj_break(damage_flag) +/obj/machinery/camera/atom_break(damage_flag) if(!status) return . = ..() diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index ebaa93ed3ada6..9425e4b6368f8 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -119,7 +119,7 @@ if(BURN) playsound(src.loc, 'sound/items/welder.ogg', 100, 1) -/obj/machinery/computer/obj_break(damage_flag) +/obj/machinery/computer/atom_break(damage_flag) if(!circuit) //no circuit, no breaking return . = ..() @@ -133,10 +133,10 @@ switch(severity) if(1) if(prob(50)) - obj_break(ENERGY) + atom_break(ENERGY) if(2) if(prob(10)) - obj_break(ENERGY) + atom_break(ENERGY) /obj/machinery/computer/deconstruct(disassembled = TRUE, mob/user) on_deconstruction() diff --git a/code/game/machinery/defibrillator_mount.dm b/code/game/machinery/defibrillator_mount.dm index 9870cc9615b5b..3bff9ca980fee 100644 --- a/code/game/machinery/defibrillator_mount.dm +++ b/code/game/machinery/defibrillator_mount.dm @@ -31,7 +31,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/defibrillator_mount/loaded, 28) end_processing() . = ..() -/obj/machinery/defibrillator_mount/obj_destruction() +/obj/machinery/defibrillator_mount/atom_destruction() if(defib) defib.forceMove(get_turf(src)) defib.visible_message("[defib] falls to the ground from the destroyed wall mount.") diff --git a/code/game/machinery/digital_clock.dm b/code/game/machinery/digital_clock.dm index a833cbcd8669a..5a2d5c7954e1e 100644 --- a/code/game/machinery/digital_clock.dm +++ b/code/game/machinery/digital_clock.dm @@ -37,14 +37,14 @@ . = ..() if(user.a_intent == INTENT_HARM) return - if(obj_integrity >= max_integrity) + if(atom_integrity >= max_integrity) balloon_alert(user, "it doesn't need repairs!") return TRUE to_chat(user, "You start to repair [name]...") if(!tool.use_tool(src, user, 4 SECONDS, amount = 0, volume=50)) return TRUE to_chat(user, "You finish to repair [name]...") - obj_integrity = max_integrity + atom_integrity = max_integrity set_machine_stat(machine_stat & ~BROKEN) update_appearance() return TRUE diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 89bc71c57e7d8..2c47842d7e119 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -122,10 +122,10 @@ if(glass) airlock_material = "glass" if(security_level > AIRLOCK_SECURITY_IRON) - obj_integrity = normal_integrity * AIRLOCK_INTEGRITY_MULTIPLIER + atom_integrity = normal_integrity * AIRLOCK_INTEGRITY_MULTIPLIER max_integrity = normal_integrity * AIRLOCK_INTEGRITY_MULTIPLIER else - obj_integrity = normal_integrity + atom_integrity = normal_integrity max_integrity = normal_integrity if(damage_deflection == AIRLOCK_DAMAGE_DEFLECTION_N && security_level > AIRLOCK_SECURITY_IRON) damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_R @@ -642,9 +642,9 @@ SSvis_overlays.add_vis_overlay(src, overlays_file, "lights_emergency", FLOAT_LAYER, FLOAT_PLANE, dir) if(welded) SSvis_overlays.add_vis_overlay(src, overlays_file, "welded", FLOAT_LAYER, FLOAT_PLANE, dir) - if(obj_integrity < integrity_failure * max_integrity) + if(atom_integrity < integrity_failure * max_integrity) SSvis_overlays.add_vis_overlay(src, overlays_file, "sparks_broken", FLOAT_LAYER, FLOAT_PLANE, dir) - else if(obj_integrity < (0.75 * max_integrity)) + else if(atom_integrity < (0.75 * max_integrity)) SSvis_overlays.add_vis_overlay(src, overlays_file, "sparks_damaged", FLOAT_LAYER, FLOAT_PLANE, dir) if(AIRLOCK_DENY) @@ -653,25 +653,25 @@ SSvis_overlays.add_vis_overlay(src, overlays_file, "lights_denied", FLOAT_LAYER, FLOAT_PLANE, dir) if(welded) SSvis_overlays.add_vis_overlay(src, overlays_file, "welded", FLOAT_LAYER, FLOAT_PLANE, dir) - if(obj_integrity < integrity_failure * max_integrity) + if(atom_integrity < integrity_failure * max_integrity) SSvis_overlays.add_vis_overlay(src, overlays_file, "sparks_broken", FLOAT_LAYER, FLOAT_PLANE, dir) - else if(obj_integrity < (0.75 * max_integrity)) + else if(atom_integrity < (0.75 * max_integrity)) SSvis_overlays.add_vis_overlay(src, overlays_file, "sparks_damaged", FLOAT_LAYER, FLOAT_PLANE, dir) if(AIRLOCK_EMAG) if(welded) SSvis_overlays.add_vis_overlay(src, overlays_file, "welded", FLOAT_LAYER, FLOAT_PLANE, dir) SSvis_overlays.add_vis_overlay(src, overlays_file, "sparks", FLOAT_LAYER, FLOAT_PLANE, dir) - if(obj_integrity < integrity_failure * max_integrity) + if(atom_integrity < integrity_failure * max_integrity) SSvis_overlays.add_vis_overlay(src, overlays_file, "sparks_broken", FLOAT_LAYER, FLOAT_PLANE, dir) - else if(obj_integrity < (0.75 * max_integrity)) + else if(atom_integrity < (0.75 * max_integrity)) SSvis_overlays.add_vis_overlay(src, overlays_file, "sparks_damaged", FLOAT_LAYER, FLOAT_PLANE, dir) if(AIRLOCK_CLOSING) if(lights && hasPower()) SSvis_overlays.add_vis_overlay(src, overlays_file, "lights_closing", FLOAT_LAYER, FLOAT_PLANE, dir) if(AIRLOCK_OPEN) - if(obj_integrity < (0.75 * max_integrity)) + if(atom_integrity < (0.75 * max_integrity)) SSvis_overlays.add_vis_overlay(src, overlays_file, "sparks_open", FLOAT_LAYER, FLOAT_PLANE, dir) if(AIRLOCK_OPENING) @@ -1128,14 +1128,14 @@ log_combat(user, src, welded? "welded shut":"unwelded", important = FALSE) update_icon() else - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(!W.tool_start_check(user, amount=0)) return user.visible_message("[user] is welding the airlock.", \ "You begin repairing the airlock...", \ "You hear welding.") if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, PROC_REF(weld_checks), W, user))) - obj_integrity = max_integrity + atom_integrity = max_integrity set_machine_stat(machine_stat & ~BROKEN) user.visible_message("[user.name] has repaired [src].", \ "You finish repairing the airlock.") @@ -1429,9 +1429,11 @@ add_hiddenprint(user) /obj/machinery/door/airlock/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) + if((damage_amount >= atom_integrity) && (damage_flag == BOMB)) + flags_1 |= NODECONSTRUCT_1 //If an explosive took us out, don't drop the assembly . = ..() - if(obj_integrity < (0.75 * max_integrity)) - update_icon() + if(atom_integrity < (0.75 * max_integrity)) + update_appearance() /obj/machinery/door/airlock/deconstruct(disassembled = TRUE, mob/user) if(!(flags_1 & NODECONSTRUCT_1)) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 54e53ac14a274..d31f2b8d6f711 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -47,7 +47,7 @@ closets += WEAKREF(C) if(!length(doors) && !length(flashers) && length(closets)) - obj_break() + atom_break() //Main door timer loop, if it's timing and time is >0 reduce time by 1. // if it's less than 0, open door, reset timer diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 624edd84c1168..54d1693069b03 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -235,7 +235,7 @@ /obj/machinery/door/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) . = ..() - if(. && obj_integrity > 0) + if(. && atom_integrity > 0) if(damage_amount >= 10 && prob(30)) spark_system.start() diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index c531f9d1fe7e6..2504b056fe5da 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -60,7 +60,7 @@ /obj/machinery/door/window/Destroy() set_density(FALSE) air_update_turf(1) - if(obj_integrity == 0) + if(atom_integrity == 0) playsound(src, "shatter", 70, 1) electronics = null return ..() diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index 9ac48367e42cc..43d7f02426aba 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -227,12 +227,12 @@ "You restore [src] to operation.") set_machine_stat(machine_stat & ~BROKEN) - obj_integrity = max_integrity + atom_integrity = max_integrity update_icon() else return ..() -/obj/machinery/droneDispenser/obj_break(damage_flag) +/obj/machinery/drone_dispenser/atom_break(damage_flag) . = ..() if(!.) return diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index a8f5d048da866..dfee924b80679 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -168,13 +168,13 @@ if(panel_open) if(W.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HELP) - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(!W.tool_start_check(user, amount=0)) return to_chat(user, "You begin repairing [src]...") if(W.use_tool(src, user, 40, volume=50)) - obj_integrity = max_integrity + atom_integrity = max_integrity to_chat(user, "You repair [src].") else to_chat(user, "[src] is already in good condition!") @@ -280,7 +280,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/firealarm, 26) /obj/machinery/firealarm/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) . = ..() if(.) //damage received - if(obj_integrity > 0 && !(machine_stat & BROKEN) && buildstage != 0) + if(atom_integrity > 0 && !(machine_stat & BROKEN) && buildstage != 0) if(prob(33)) alarm() @@ -289,7 +289,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/firealarm, 26) deconstruct() ..() -/obj/machinery/firealarm/obj_break(damage_flag) +/obj/machinery/firealarm/atom_break(damage_flag) if(buildstage == 0) //can't break the electronics if there isn't any inside. return . = ..() diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 50d8a0fc21d7f..2fe178fcf0e06 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -99,7 +99,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/flasher, 26) if(anchored) flash() -/obj/machinery/flasher/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) +/obj/machinery/flasher/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) if(damage_flag == MELEE && damage_amount < 10) //any melee attack below 10 dmg does nothing return 0 . = ..() @@ -142,7 +142,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/flasher, 26) bulb.burn_out() power_change() -/obj/machinery/flasher/obj_break(damage_flag) +/obj/machinery/flasher/atom_break(damage_flag) . = ..() if(. && bulb) bulb.burn_out() diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 2dbe5da051b91..b41f47fca1d91 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -132,7 +132,7 @@ Possible to do for anyone motivated enough: if(outgoing_call) outgoing_call.ConnectionFailure(src) -/obj/machinery/holopad/obj_break() +/obj/machinery/holopad/atom_break() . = ..() if(outgoing_call) outgoing_call.ConnectionFailure(src) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index db82e63c621f9..f08e09bb6819b 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -30,7 +30,7 @@ QDEL_NULL(beaker) return ..() -/obj/machinery/iv_drip/obj_destruction() +/obj/machinery/iv_drip/atom_destruction() if(beaker) beaker.forceMove(drop_location()) beaker.SplashReagents(drop_location()) diff --git a/code/game/machinery/newscaster/newscaster_machine.dm b/code/game/machinery/newscaster/newscaster_machine.dm index d6c1e98d6d477..315e250e40307 100644 --- a/code/game/machinery/newscaster/newscaster_machine.dm +++ b/code/game/machinery/newscaster/newscaster_machine.dm @@ -93,7 +93,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30) . += emissive_appearance(icon, "[base_icon_state]_alert", layer, alpha = src.alpha) ADD_LUM_SOURCE(src, LUM_SOURCE_MANAGED_OVERLAY) - var/hp_percent = (obj_integrity * 100) / max_integrity + var/hp_percent = (atom_integrity * 100) / max_integrity switch(hp_percent) if(75 to 100) return @@ -549,7 +549,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30) if(!(machine_stat & BROKEN)) return to_chat(user, "You repair [src].") - obj_integrity = max_integrity + atom_integrity = max_integrity set_machine_stat(machine_stat & ~BROKEN) update_icon() else @@ -583,7 +583,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster, 30) new /obj/item/shard(loc) qdel(src) -/obj/machinery/newscaster/obj_break(damage_flag) +/obj/machinery/newscaster/atom_break(damage_flag) . = ..() if(.) playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index e6cee442b0401..a7d9bd732c458 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -374,7 +374,7 @@ DEFINE_BUFFER_HANDLER(/obj/machinery/porta_turret) /obj/machinery/porta_turret/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) . = ..() - if(. && obj_integrity > 0) //damage received + if(. && atom_integrity > 0) //damage received if(prob(30)) spark_system.start() if(on && !attacked && !(obj_flags & EMAGGED)) @@ -387,7 +387,7 @@ DEFINE_BUFFER_HANDLER(/obj/machinery/porta_turret) /obj/machinery/porta_turret/deconstruct(disassembled = TRUE) qdel(src) -/obj/machinery/porta_turret/obj_break(damage_flag) +/obj/machinery/porta_turret/atom_break(damage_flag) . = ..() if(.) power_change() diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 91609daabb065..dfa4b88213442 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -115,11 +115,8 @@ /obj/machinery/shieldgen/deconstruct(disassembled = TRUE) - if(!(flags_1 & NODECONSTRUCT_1)) - if(!(machine_stat && BROKEN)) - set_machine_stat(machine_stat | BROKEN) - locked = pick(0,1) - update_icon() + atom_break() + locked = pick(0,1) /obj/machinery/shieldgen/interact(mob/user) . = ..() @@ -165,7 +162,7 @@ if(coil.get_amount() < 1) return coil.use(1) - obj_integrity = max_integrity + atom_integrity = max_integrity set_machine_stat(machine_stat & ~BROKEN) to_chat(user, "You repair \the [src].") update_icon() diff --git a/code/game/machinery/stasis.dm b/code/game/machinery/stasis.dm index 0beaf9b54f289..9321f450eae19 100644 --- a/code/game/machinery/stasis.dm +++ b/code/game/machinery/stasis.dm @@ -108,10 +108,10 @@ return icon_state = "stasis" -/obj/machinery/stasis/obj_break(damage_flag) +/obj/machinery/stasis/atom_break(damage_flag) . = ..() - play_power_sound() - update_icon() + if(.) + play_power_sound() /obj/machinery/stasis/power_change() . = ..() diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index b0431004d0a4b..e2471d1c35d4c 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -59,11 +59,11 @@ var/obj/item/transfer_valve/valve_payload = payload valve_payload.toggle_valve() -/obj/machinery/syndicatebomb/obj_break() +/obj/machinery/syndicatebomb/atom_break() if(!try_detonate()) ..() -/obj/machinery/syndicatebomb/obj_destruction() +/obj/machinery/syndicatebomb/atom_destruction() if(!try_detonate()) ..() @@ -192,11 +192,11 @@ to_chat(user, "You need at least [PLASTEEL_REPAIR_AMOUNT] sheets of plasteel to repair [src].") return if(do_after(user, delay = 2.5 SECONDS, target = src) && stack_sheets.use(PLASTEEL_REPAIR_AMOUNT)) - obj_integrity = min(obj_integrity + 100, max_integrity) + atom_integrity = min(atom_integrity + 100, max_integrity) else - var/old_integ = obj_integrity + var/old_integ = atom_integrity . = ..() - if((old_integ > obj_integrity) && active && (payload in src)) + if((old_integ > atom_integrity) && active && (payload in src)) to_chat(user, "That seems like a really bad idea...") /obj/machinery/syndicatebomb/interact(mob/user) @@ -229,7 +229,7 @@ if(!anchored) to_chat(user, "[src] must be anchored in order to arm!") return - if(obj_integrity != max_integrity) + if(atom_integrity != max_integrity) to_chat(user, "[src] must be undamaged in order to arm!") return visible_message("[icon2html(src, viewers(loc))] [timer_set] seconds until detonation, please clear the area.") diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 4c4b109df2478..cfc3eb7b08c92 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -153,7 +153,7 @@ GLOBAL_LIST_EMPTY(telecomms_list) if(traffic > 0) traffic -= netspeed * delta_time -/obj/machinery/telecomms/obj_break(damage_flag) +/obj/machinery/telecomms/atom_break(damage_flag) . = ..() update_power() diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 700439c06377a..1a66796e2dae7 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -56,7 +56,7 @@ myseed.adjust_production(rand(-3,6)) myseed.adjust_endurance(rand(-3,6)) delay = delay - myseed.production * 100 //So the delay goes DOWN with better stats instead of up. :I - obj_integrity = round(myseed.endurance / 2) + atom_integrity = round(myseed.endurance / 2) max_integrity = round(myseed.endurance / 2) var/datum/plant_gene/trait/glow/G = myseed.get_gene(/datum/plant_gene/trait/glow) if(ispath(G)) // Seeds were ported to initialize so their genes are still typepaths here, luckily their initializer is smart enough to handle us doing this diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 8a84e300264da..b6e2940429b69 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -20,7 +20,7 @@ to_chat(user, "The [I] gets stuck in \the [src]!") return ..() -/obj/structure/spider/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) +/obj/structure/spider/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) if(damage_flag == MELEE) switch(damage_type) if(BURN) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 1e44f2ec8ad2c..a975c9c2d4570 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -275,7 +275,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/blob_act(obj/structure/blob/B) if(B.loc == loc && !(resistance_flags & INDESTRUCTIBLE)) - obj_destruction(MELEE) + atom_destruction(MELEE) /obj/item/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 96be0b40ffc06..9088ab43dfc7a 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -432,7 +432,7 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( spark_system.start() playsound(get_turf(src), 'sound/effects/pop.ogg', 50, FALSE) -/obj/item/pipe_dispenser/attack_obj(obj/O, mob/living/user) +/obj/item/pipe_dispenser/attack_atom(obj/O, mob/living/user) // don't attempt to attack what we don't want to attack if(is_type_in_typecache(O, atmos_constructs) || is_type_in_typecache(O, rpd_targets) || is_type_in_typecache(O, rpd_whitelist)) return diff --git a/code/game/objects/items/crab17.dm b/code/game/objects/items/crab17.dm index 5b4b0946fea3e..b4dbc04c671ab 100644 --- a/code/game/objects/items/crab17.dm +++ b/code/game/objects/items/crab17.dm @@ -57,7 +57,7 @@ addtimer(CALLBACK(src, PROC_REF(startUp)), 50) player_modifier = length(GLOB.player_list) max_integrity = min(300+player_modifier*15, 600) - obj_integrity = max_integrity + atom_integrity = max_integrity calculate_runaway_condition() existing_machines++ @@ -65,7 +65,7 @@ /obj/structure/checkoutmachine/examine(mob/living/user) . = ..() - . += "It's integrated integrity meter reads: HEALTH: [obj_integrity]." + . += "It's integrated integrity meter reads: HEALTH: [atom_integrity]." /obj/structure/checkoutmachine/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/card/id)) @@ -87,7 +87,7 @@ return ..() /obj/structure/checkoutmachine/proc/calculate_runaway_condition() - next_health_to_teleport = obj_integrity - RUN_AWAY_THRESHOLD_HP - clamp((20-player_modifier)*10, 0, 100) + next_health_to_teleport = atom_integrity - RUN_AWAY_THRESHOLD_HP - clamp((20-player_modifier)*10, 0, 100) /* the less player you have, it will less run away: [1 pop] 315-75-dead [5 pop] 375-135-dead @@ -212,7 +212,7 @@ var/link = FOLLOW_LINK(M, src) to_chat(M, "[link] [name] [total_credits_stolen ? "siphons total [total_credits_stolen] credits from [victim_count] bank accounts." : "tried to siphon bank accounts, but there're no victims."] location: [get_area(src)]") - if(obj_integrity>25) + if(atom_integrity>25) next_health_to_teleport -= round(max_integrity/60) take_damage(round(max_integrity/60)) // self-damage for self-destruction @@ -224,7 +224,7 @@ Move(get_step(src, anydir), anydir) // Oh no, it RUNS AWAY!!! - if(obj_integrity && obj_integrity < next_health_to_teleport) // checks if obj_integrity is positive first + if(atom_integrity && atom_integrity < next_health_to_teleport) // checks if atom_integrity is positive first calculate_runaway_condition() var/turf/targetturf for(var/i in 1 to 100) // teleporting across z-levels is painful diff --git a/code/game/objects/items/deployable/barricade.dm b/code/game/objects/items/deployable/barricade.dm index 38688c4cc8eed..d08f3ddfcf5d9 100644 --- a/code/game/objects/items/deployable/barricade.dm +++ b/code/game/objects/items/deployable/barricade.dm @@ -54,13 +54,13 @@ /obj/structure/barricade/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_WELDER && user.a_intent != INTENT_HARM && bar_material == METAL) - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(!I.tool_start_check(user, amount=0)) return to_chat(user, "You begin repairing [src]...") if(I.use_tool(src, user, 40, volume=40)) - obj_integrity = clamp(obj_integrity + 20, 0, max_integrity) + atom_integrity = clamp(atom_integrity + 20, 0, max_integrity) else if(I.GetID() && initial(locked_down)) if(allowed(user)) @@ -92,7 +92,7 @@ if(over_object == usr && Adjacent(usr)) if(!ishuman(usr) || !usr.canUseTopic(src, BE_CLOSE)) return - if(!pickup_damaged && obj_integrity < max_integrity) + if(!pickup_damaged && atom_integrity < max_integrity) to_chat(usr, "[src] is damaged! You'll have to repair it before you can relocate it.") return if(locked_down) @@ -104,9 +104,9 @@ //If the barricade is made of parts, some of them are damaged when the barricade is damaged so we set how many are being returned here if(initial(drop_amount) > 1) - drop_amount = round(drop_amount * (obj_integrity/max_integrity)) + drop_amount = round(drop_amount * (atom_integrity/max_integrity)) //If we are only picking up one item at most, it has a chance to fall apart based on damage the barricade accrued. Will always succeed if pickup_damaged is false. - else if(!prob(round((obj_integrity/max_integrity), 0.01) * 100)) + else if(!prob(round((atom_integrity/max_integrity), 0.01) * 100)) usr.visible_message("[usr] tries to pick up [src] but it falls apart!", "[src] is too damaged and falls apart!") qdel(src) return diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index 0352093079ad4..6ed5a3fdfe230 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -84,7 +84,7 @@ else return ..() -/obj/item/extinguisher/attack_obj(obj/O, mob/living/user) +/obj/item/extinguisher/attack_atom(obj/O, mob/living/user, params) if(AttemptRefill(O, user)) refilling = TRUE return FALSE diff --git a/code/game/objects/items/inducer.dm b/code/game/objects/items/inducer.dm index 04ccf705ba49e..e0cf0ab0d6b8a 100644 --- a/code/game/objects/items/inducer.dm +++ b/code/game/objects/items/inducer.dm @@ -33,7 +33,7 @@ if(cell && !(. & EMP_PROTECT_CONTENTS)) cell.emp_act(severity) -/obj/item/inducer/attack_obj(obj/O, mob/living/carbon/user) +/obj/item/inducer/attack_atom(obj/O, mob/living/carbon/user, params) if(user.a_intent == INTENT_HARM) return ..() diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index e4f792a46c54d..c11f42d405879 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -42,10 +42,10 @@ owner.visible_message("[L] injures themselves on [owner]'s [src]!") if(attackforce) owner.changeNext_move(CLICK_CD_MELEE) - if (obj_integrity <= attackforce) + if (atom_integrity <= attackforce) var/turf/T = get_turf(owner) T.visible_message("[hitby] destroys [src]!") - obj_integrity = 1 + atom_integrity = 1 shatter(owner) return FALSE take_damage(attackforce * ((100-(block_power))/100)) @@ -55,13 +55,13 @@ /obj/item/shield/attackby(obj/item/weldingtool/W, mob/living/user, params) if(istype(W)) - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(!W.tool_start_check(user, amount=0)) return user.visible_message("[user] is welding the [src].", \ "You begin repairing the [src]]...") if(W.use_tool(src, user, 40, volume=50)) - obj_integrity += 10 + atom_integrity += 10 user.visible_message("[user.name] has repaired some dents on [src].", \ "You finish repairing some of the dents on [src].") else @@ -70,7 +70,7 @@ /obj/item/shield/examine(mob/user) . = ..() - var/healthpercent = round((obj_integrity/max_integrity) * 100, 1) + var/healthpercent = round((atom_integrity/max_integrity) * 100, 1) switch(healthpercent) if(50 to 99) . += "It looks slightly damaged." @@ -109,12 +109,12 @@ playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1) cooldown = world.time else if(istype(W, /obj/item/stack/sheet/mineral/titanium)) - if (obj_integrity >= max_integrity) + if (atom_integrity >= max_integrity) to_chat(user, "[src] is already in perfect condition.") else var/obj/item/stack/sheet/mineral/titanium/T = W T.use(1) - obj_integrity = max_integrity + atom_integrity = max_integrity to_chat(user, "You repair [src] with [T].") else return ..() @@ -314,8 +314,8 @@ w_class = WEIGHT_CLASS_BULKY playsound(user, 'sound/weapons/saberon.ogg', 35, 1) to_chat(user, "[src] is now active and back at full power.") - if(obj_integrity <= 1) - obj_integrity = max_integrity + if(atom_integrity <= 1) + atom_integrity = max_integrity else force = initial(force) throwforce = initial(throwforce) diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index 11879b7fe3779..bffb7ab089494 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -283,19 +283,19 @@ return TRUE /// Handles the tank springing a leak. -/obj/item/tank/obj_break(damage_flag) +/obj/item/tank/atom_break(damage_flag) . = ..() if(leaking) return leaking = TRUE - if(obj_integrity < 0) // So we don't play the alerts while we are exploding or rupturing. + if(atom_integrity < 0) // So we don't play the alerts while we are exploding or rupturing. return visible_message("[src] springs a leak!") playsound(src, 'sound/effects/spray.ogg', 10, TRUE, -3) /// Handles rupturing and fragmenting -/obj/item/tank/obj_destruction(damage_flag) +/obj/item/tank/atom_destruction(damage_flag) if(!air_contents) return ..() diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index 0a4d9d7d8f926..a31f302a9a620 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -1,85 +1,3 @@ - -//the essential proc to call when an obj must receive damage of any kind. -/obj/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) - if(QDELETED(src)) - stack_trace("[src] taking damage after deletion") - return - if(obj_integrity <= 0) - stack_trace("[src] taking damage while having <= 0 integrity") - return - if(sound_effect) - play_attack_sound(damage_amount, damage_type, damage_flag) - if(resistance_flags & INDESTRUCTIBLE) - return - damage_amount = run_obj_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration) - if(damage_amount < DAMAGE_PRECISION) - return - //Object is basssiiiiccaalllyyy guaranteed to take damage by this point, lets run our signal - if(SEND_SIGNAL(src, COMSIG_OBJ_TAKE_DAMAGE, damage_amount, damage_type, damage_flag, sound_effect, attack_dir, armour_penetration) & COMPONENT_NO_TAKE_DAMAGE) - return - . = damage_amount - - update_integrity(obj_integrity - damage_amount) - - //BREAKING FIRST - if(integrity_failure && obj_integrity <= integrity_failure * max_integrity) - obj_break(damage_flag) - - //DESTROYING SECOND - if(obj_integrity <= 0) - obj_destruction(damage_flag) - -/// Proc for recovering obj_integrity. Returns the amount repaired by -/obj/proc/repair_damage(amount) - if(amount <= 0) // We only recover here - return - var/new_integrity = min(max_integrity, obj_integrity + amount) - . = new_integrity - obj_integrity - - update_integrity(new_integrity) - - if(integrity_failure && obj_integrity > integrity_failure * max_integrity) - obj_fix() - -/// Handles the integrity of an object changing. This must be called instead of changing integrity directly. -/obj/proc/update_integrity(new_value) - SHOULD_NOT_OVERRIDE(TRUE) - new_value = max(0, new_value) - if(obj_integrity == new_value) - return - obj_integrity = new_value - SEND_SIGNAL(src, COMSIG_OBJ_INTEGRITY_CHANGED) - -/// This mostly exists to keep obj_integrity private. Might be useful in the future. -/obj/proc/get_integrity() - SHOULD_BE_PURE(TRUE) - return obj_integrity - -//returns the damage value of the attack after processing the obj's various armor protections -/obj/proc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0) - switch(damage_type) - if(BRUTE) - if(BURN) - else - return 0 - var/armor_protection = 0 - if(damage_flag) - armor_protection = armor.getRating(damage_flag) - if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor. - armor_protection = clamp(armor_protection - armour_penetration, min(armor_protection, 0), 100) - return round(damage_amount * (100 - armor_protection)*0.01, DAMAGE_PRECISION) - -//the sound played when the obj is damaged. -/obj/proc/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) - switch(damage_type) - if(BRUTE) - if(damage_amount) - playsound(src, 'sound/weapons/smash.ogg', 50, 1) - else - playsound(src, 'sound/weapons/tap.ogg', 50, 1) - if(BURN) - playsound(src.loc, 'sound/items/welder.ogg', 100, 1) - /obj/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) ..() take_damage(AM.throwforce, BRUTE, MELEE, 1, get_dir(src, AM)) @@ -111,9 +29,6 @@ if(P.suppressed != SUPPRESSED_VERY) visible_message("[src] is hit by \a [P][damage ? "" : ", without leaving a mark"]!", null, null, COMBAT_MESSAGE_RANGE) -/obj/proc/hulk_damage() - return 150 //the damage hulks do on punches to this object, is affected by melee armor - /obj/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) if(user.a_intent == INTENT_HARM) ..(user, 1) @@ -136,11 +51,6 @@ return take_damage(400, BRUTE, MELEE, 0, get_dir(src, B)) -/obj/proc/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0) //used by attack_alien, attack_animal, and attack_slime - user.do_attack_animation(src) - user.changeNext_move(CLICK_CD_MELEE) - return take_damage(damage_amount, damage_type, damage_flag, sound_effect, get_dir(src, user), armor_penetration) - /obj/attack_alien(mob/living/carbon/alien/humanoid/user) if(attack_generic(user, 60, BRUTE, MELEE, 0)) playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1) @@ -284,18 +194,8 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e SEND_SIGNAL(src, COMSIG_OBJ_DECONSTRUCT, disassembled) qdel(src) -/// Called after the obj takes damage and integrity is below integrity_failure level -/obj/proc/obj_break(damage_flag) - SHOULD_CALL_PARENT(TRUE) - SEND_SIGNAL(src, COMSIG_OBJ_BREAK) - -/// Called when integrity is repaired above the breaking point having been broken before -/obj/proc/obj_fix() - SHOULD_CALL_PARENT(TRUE) - SEND_SIGNAL(src, COMSIG_OBJ_FIX) - //what happens when the obj's integrity reaches zero. -/obj/proc/obj_destruction(damage_flag) +/obj/atom_destruction(damage_flag) if(damage_flag == ACID) acid_melt() else if(damage_flag == FIRE) @@ -303,24 +203,6 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e else deconstruct(FALSE) -//changes max_integrity while retaining current health percentage -//returns TRUE if the obj broke, FALSE otherwise -/obj/proc/modify_max_integrity(new_max, can_break = TRUE, damage_type = BRUTE) - var/current_integrity = obj_integrity - var/current_max = max_integrity - - if(current_integrity != 0 && current_max != 0) - var/percentage = current_integrity / current_max - current_integrity = max(1, round(percentage * new_max)) //don't destroy it as a result - obj_integrity = current_integrity - - max_integrity = new_max - - if(can_break && integrity_failure && current_integrity <= integrity_failure * max_integrity) - obj_break(damage_type) - return TRUE - return FALSE - //returns how much the object blocks an explosion /obj/proc/GetExplosionBlock() CRASH("Unimplemented GetExplosionBlock()") diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index b9dcdeb11204b..df410913163f8 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -11,18 +11,19 @@ /// How much bleeding damage do we cause, see __DEFINES/mobs.dm var/bleed_force = 0 + /* var/datum/armor/armor - /// The integrity the object starts at. Defaults to max_integrity. - VAR_PRIVATE/obj_integrity //defaults to max_integrity + VAR_PRIVATE/atom_integrity //defaults to max_integrity /// The maximum integrity the object can have. var/max_integrity = 500 - /// The object will break once obj_integrity reaches this amount in take_damage(). 0 if we have no special broken behavior, otherwise is a percentage of at what point the obj breaks. 0.5 being 50% + /// The object will break once atom_integrity reaches this amount in take_damage(). 0 if we have no special broken behavior, otherwise is a percentage of at what point the obj breaks. 0.5 being 50% var/integrity_failure = 0 ///Damage under this value will be completely ignored var/damage_deflection = 0 /// INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF var/resistance_flags = NONE + */ /// How much acid is on that obj var/acid_level = 0 @@ -54,6 +55,8 @@ /// broadcasted to as long as the other guys network is on the same branch or above. var/network_id = null + uses_integrity = TRUE + var/investigate_flags = NONE // ADMIN_INVESTIGATE_TARGET: investigate_log on pickup/drop /// If the emag behavior should be toggleable @@ -66,13 +69,13 @@ return ..() /obj/Initialize(mapload) - if (islist(armor)) - armor = getArmor(arglist(armor)) - else if (!armor) - armor = getArmor() - else if (!istype(armor, /datum/armor)) - stack_trace("Invalid type [armor.type] found in .armor during /obj Initialize()") - obj_integrity = max_integrity + //if (islist(armor)) + // armor = getArmor(arglist(armor)) + //else if (!armor) + // armor = getArmor() + //else if (!istype(armor, /datum/armor)) + // stack_trace("Invalid type [armor.type] found in .armor during /obj Initialize()") + //atom_integrity = max_integrity . = ..() //Do this after, else mat datums is mad. diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 3f97e790cae44..18018afc5874c 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -47,7 +47,7 @@ . += examine_status /obj/structure/proc/examine_status(mob/user) //An overridable proc, mostly for falsewalls. - var/healthpercent = (obj_integrity/max_integrity) * 100 + var/healthpercent = (atom_integrity/max_integrity) * 100 switch(healthpercent) if(50 to 99) return "It looks slightly damaged." diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index 8517bb98133d6..cb218efabd838 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -11,7 +11,7 @@ icon = 'icons/mob/alien.dmi' max_integrity = 100 -/obj/structure/alien/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) +/obj/structure/alien/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) if(damage_flag == MELEE) switch(damage_type) if(BRUTE) @@ -258,7 +258,7 @@ addtimer(CALLBACK(src, PROC_REF(Grow)), rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME)) proximity_monitor = new(src, status == GROWN ? 1 : 0) if(status == BURST) - obj_integrity = integrity_failure * max_integrity + atom_integrity = integrity_failure * max_integrity /obj/structure/alien/egg/update_icon() ..() @@ -331,7 +331,7 @@ child.Leap(C) break -/obj/structure/alien/egg/obj_break(damage_flag) +/obj/structure/alien/egg/atom_break(damage_flag) . = ..() if(!(flags_1 & NODECONSTRUCT_1)) if(status != BURST) diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index d47d71b3fa1d0..92018fcb5a9f6 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -42,7 +42,7 @@ var/new_sign = new D return set_sign(new_sign) -/obj/structure/sign/barsign/obj_break(damage_flag) +/obj/structure/sign/barsign/atom_break(damage_flag) . = ..() if(!broken && !(flags_1 & NODECONSTRUCT_1)) broken = TRUE diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index f6d0983296766..38da63406a8b7 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -314,7 +314,7 @@ new material_drop(loc, material_drop_amount) qdel(src) -/obj/structure/closet/obj_break(damage_flag) +/obj/structure/closet/atom_break(damage_flag) . = ..() if(!broken && !(flags_1 & NODECONSTRUCT_1)) bust_open() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index f459dda04fb4a..a52f0d6c0dee3 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -7,7 +7,7 @@ armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80, STAMINA = 0, BLEED = 0) secure = TRUE -/obj/structure/closet/secure_closet/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) +/obj/structure/closet/secure_closet/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) if(damage_flag == MELEE && damage_amount < 20) return 0 . = ..() diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index a3b28f10edaf0..a747e206b0f0c 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -9,7 +9,7 @@ var/tamperproof = 0 icon_door = "crate" -/obj/structure/closet/crate/secure/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) +/obj/structure/closet/crate/secure/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) if(damage_flag == MELEE && damage_amount < 25) return 0 . = ..() diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 6678f8a7a8d52..bbe36c53e0645 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -99,7 +99,7 @@ trigger_alarm() qdel(src) -/obj/structure/displaycase/obj_break(damage_flag) +/obj/structure/displaycase/atom_break(damage_flag) . = ..() if(!broken && !(flags_1 & NODECONSTRUCT_1)) set_density(FALSE) @@ -149,13 +149,13 @@ to_chat(user, "You open [src].") toggle_lock(user) else if(W.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HELP && !broken) - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(!W.tool_start_check(user, amount=5)) return to_chat(user, "You begin repairing [src]...") if(W.use_tool(src, user, 40, amount=5, volume=50)) - obj_integrity = max_integrity + atom_integrity = max_integrity update_icon() to_chat(user, "You repair [src].") else @@ -190,7 +190,7 @@ if(do_after(user, 20, target = src)) G.use(2) broken = FALSE - obj_integrity = max_integrity + atom_integrity = max_integrity update_icon() else return ..() @@ -561,11 +561,11 @@ /obj/structure/displaycase/forsale/multitool_act(mob/living/user, obj/item/I) . = ..() - if(obj_integrity <= (integrity_failure * max_integrity)) + if(atom_integrity <= (integrity_failure * max_integrity)) to_chat(user, "You start recalibrating [src]'s hover field...") if(do_after(user, 20, target = src)) broken = FALSE - obj_integrity = max_integrity + atom_integrity = max_integrity update_icon() ui_update() return TRUE @@ -604,7 +604,7 @@ if(broken) . += "[src] is sparking and the hover field generator seems to be overloaded. Use a multitool to fix it." -/obj/structure/displaycase/forsale/obj_break(damage_flag) +/obj/structure/displaycase/forsale/atom_break(damage_flag) . = ..() if(!broken && !(flags_1 & NODECONSTRUCT_1)) broken = TRUE diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index ece0c709fbcad..3e11376c2dd0b 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -135,7 +135,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/extinguisher_cabinet, 29) else icon_state = "extinguisher_empty" -/obj/structure/extinguisher_cabinet/obj_break(damage_flag) +/obj/structure/extinguisher_cabinet/atom_break(damage_flag) . = ..() if(!broken && !(flags_1 & NODECONSTRUCT_1)) broken = 1 diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index b417c19d64091..8e923f8359cb6 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -29,13 +29,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32) if(iscyborg(user) || I.tool_behaviour == TOOL_MULTITOOL) toggle_lock(user) else if(I.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HELP && !broken) - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(!I.tool_start_check(user, amount=2)) return to_chat(user, "You begin repairing [src].") if(I.use_tool(src, user, 40, volume=50, amount=2)) - obj_integrity = max_integrity + atom_integrity = max_integrity update_appearance() to_chat(user, "You repair [src].") else @@ -49,7 +49,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32) to_chat(user, "You start fixing [src]...") if(do_after(user, 20, target = src) && G.use(2)) broken = 0 - obj_integrity = max_integrity + atom_integrity = max_integrity update_appearance() else if(open || broken) if(istype(I, /obj/item/fireaxe) && !fireaxe) @@ -85,7 +85,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32) if(.) update_appearance() -/obj/structure/fireaxecabinet/obj_break(damage_flag) +/obj/structure/fireaxecabinet/atom_break(damage_flag) . = ..() if(!broken && !(flags_1 & NODECONSTRUCT_1)) update_appearance() @@ -148,7 +148,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32) if(fireaxe) add_overlay("axe") if(!open) - var/hp_percent = obj_integrity/max_integrity * 100 + var/hp_percent = atom_integrity/max_integrity * 100 if(broken) add_overlay("glass4") else diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 8d68cfdb57219..4eff9300d3ec5 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -3,6 +3,7 @@ name = "grille" icon = 'icons/obj/structures.dmi' icon_state = "grille" + base_icon_state = "grille" density = TRUE anchored = TRUE flags_1 = CONDUCT_1 @@ -25,21 +26,19 @@ /obj/structure/grille/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) . = ..() - update_icon() + update_appearance() -/obj/structure/grille/update_icon() +/obj/structure/grille/update_appearance(updates) if(QDELETED(src) || broken) return - var/ratio = obj_integrity / max_integrity - ratio = CEILING(ratio*4, 1) * 25 - + . = ..() if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) QUEUE_SMOOTH(src) - if(ratio > 50) - return - icon_state = "grille50_[rand(0,3)]" +/obj/structure/grille/update_icon_state() + icon_state = "[base_icon_state][((atom_integrity / max_integrity) <= 0.5) ? "50_[rand(0, 3)]" : null]" + return ..() /obj/structure/grille/examine(mob/user) . = ..() @@ -237,7 +236,7 @@ qdel(src) ..() -/obj/structure/grille/obj_break() +/obj/structure/grille/atom_break() . = ..() if(!broken && !(flags_1 & NODECONSTRUCT_1)) new broken_type(src.loc) @@ -333,7 +332,7 @@ src.device.activate() ..() -/obj/structure/grille/prison/obj_break() +/obj/structure/grille/prison/atom_break() var/turf/T = get_turf(src) var/obj/structure/cable/C = T.get_cable_node() if(C?.powernet) diff --git a/code/game/objects/structures/lavaland/geyser.dm b/code/game/objects/structures/lavaland/geyser.dm index 0ed3926978cdb..fe7364c5679ad 100644 --- a/code/game/objects/structures/lavaland/geyser.dm +++ b/code/game/objects/structures/lavaland/geyser.dm @@ -60,7 +60,7 @@ var/plunge_mod = 1 //time*plunge_mod = total time we take to plunge an object var/reinforced = FALSE //whether we do heavy duty stuff like geysers -/obj/item/plunger/attack_obj(obj/O, mob/living/user) +/obj/item/plunger/attack_atom(obj/O, mob/living/user) if(!O.plunger_act(src, user, reinforced)) return ..() diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm index d46b64636271b..0ca845c67b855 100644 --- a/code/game/objects/structures/manned_turret.dm +++ b/code/game/objects/structures/manned_turret.dm @@ -200,7 +200,7 @@ /obj/item/gun_control/CanItemAutoclick() return TRUE -/obj/item/gun_control/attack_obj(obj/O, mob/living/user) +/obj/item/gun_control/attack_atom(obj/O, mob/living/user, params) user.changeNext_move(CLICK_CD_MELEE) O.attacked_by(src, user) diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 4a9790843926e..f09924301350f 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -318,7 +318,7 @@ /obj/structure/mineral_door/paperframe/examine(mob/user) . = ..() - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) . += "It looks a bit damaged, you may be able to fix it with some paper." /obj/structure/mineral_door/paperframe/pickaxe_door(mob/living/user, obj/item/I) @@ -335,10 +335,10 @@ fire_act(I.is_hot()) return - if((user.a_intent != INTENT_HARM) && istype(I, /obj/item/paper) && (obj_integrity < max_integrity)) + if((user.a_intent != INTENT_HARM) && istype(I, /obj/item/paper) && (atom_integrity < max_integrity)) user.visible_message("[user] starts to patch the holes in [src].", "You start patching some of the holes in [src]!") if(do_after(user, 20, src)) - obj_integrity = min(obj_integrity+4,max_integrity) + atom_integrity = min(atom_integrity+4,max_integrity) qdel(I) user.visible_message("[user] patches some of the holes in [src].", "You patch some of the holes in [src]!") return TRUE diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index a154713a4ddf6..f0ff75898fc55 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -17,7 +17,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) /obj/structure/mirror/Initialize(mapload, dir, building) . = ..() if(icon_state == "mirror_broke" && !broken) - obj_break(null, mapload) + atom_break(null, mapload) /obj/structure/mirror/attack_hand(mob/user) . = ..() @@ -55,7 +55,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) return list()// no message spam return ..() -/obj/structure/mirror/obj_break(damage_flag, mapload) +/obj/structure/mirror/atom_break(damage_flag, mapload) . = ..() if(broken || (flags_1 & NODECONSTRUCT_1)) return diff --git a/code/game/objects/structures/petrified_statue.dm b/code/game/objects/structures/petrified_statue.dm index a2a5becf77e27..b0f6c811c884c 100644 --- a/code/game/objects/structures/petrified_statue.dm +++ b/code/game/objects/structures/petrified_statue.dm @@ -22,8 +22,8 @@ ADD_TRAIT(L, TRAIT_NO_BLOOD, STATUE_MUTE) L.faction += "mimic" //Stops mimics from instaqdeling people in statues L.status_flags |= GODMODE - obj_integrity = L.health + 100 //stoning damaged mobs will result in easier to shatter statues - max_integrity = obj_integrity + atom_integrity = L.health + 100 //stoning damaged mobs will result in easier to shatter statues + max_integrity = atom_integrity START_PROCESSING(SSobj, src) /obj/structure/statue/petrified/process(delta_time) @@ -62,7 +62,7 @@ petrified_mob.forceMove(loc) REMOVE_TRAIT(petrified_mob, TRAIT_MUTE, STATUE_MUTE) REMOVE_TRAIT(petrified_mob, TRAIT_NO_BLOOD, STATUE_MUTE) - petrified_mob.take_overall_damage((petrified_mob.health - obj_integrity + 100)) //any new damage the statue incurred is transfered to the mob + petrified_mob.take_overall_damage((petrified_mob.health - atom_integrity + 100)) //any new damage the statue incurred is transfered to the mob petrified_mob.faction -= "mimic" petrified_mob = null return ..() diff --git a/code/game/objects/structures/popout_cake.dm b/code/game/objects/structures/popout_cake.dm index 981ca124e57bc..85f825e33923c 100644 --- a/code/game/objects/structures/popout_cake.dm +++ b/code/game/objects/structures/popout_cake.dm @@ -41,7 +41,7 @@ to_chat(user, "There's already someone inside!") return - if(obj_integrity <= integrity_failure) + if(atom_integrity <= integrity_failure) to_chat(user, "The [src] is too damaged to hold anyone inside!") return diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm index 1a2b538b39d9e..cd6f467120bcc 100644 --- a/code/game/objects/structures/railings.dm +++ b/code/game/objects/structures/railings.dm @@ -37,13 +37,13 @@ add_fingerprint(user) if(I.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HELP) - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(!I.tool_start_check(user, amount=0)) return to_chat(user, "You begin repairing [src]...") if(I.use_tool(src, user, 40, volume=50)) - obj_integrity = max_integrity + atom_integrity = max_integrity to_chat(user, "You repair [src].") else to_chat(user, "[src] is already in good condition!") diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm index c55b152ab3394..c5c45d270c918 100644 --- a/code/game/objects/structures/reflector.dm +++ b/code/game/objects/structures/reflector.dm @@ -101,7 +101,7 @@ new buildstacktype(drop_location(), buildstackamount) qdel(src) else if(W.tool_behaviour == TOOL_WELDER) - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(!W.tool_start_check(user, amount=0)) return @@ -109,7 +109,7 @@ "You begin repairing [src]...", "You hear welding.") if(W.use_tool(src, user, 40, volume=40)) - obj_integrity = max_integrity + atom_integrity = max_integrity user.visible_message("[user] has repaired [src].", \ "You finish repairing [src].") diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index d4e0708538617..d4a2809d5ed0a 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -184,13 +184,13 @@ add_fingerprint(user) if(I.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HELP) - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(!I.tool_start_check(user, amount=0)) return to_chat(user, "You begin repairing [src]...") if(I.use_tool(src, user, 40, volume=50)) - obj_integrity = max_integrity + atom_integrity = max_integrity update_nearby_icons() to_chat(user, "You repair [src].") else @@ -349,7 +349,7 @@ if(!fulltile) return - var/ratio = obj_integrity / max_integrity + var/ratio = atom_integrity / max_integrity ratio = CEILING(ratio*4, 1) * 25 if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) @@ -505,7 +505,7 @@ /obj/structure/window/depleteduranium/unanchored anchored = FALSE -/* Full Tile Windows (more obj_integrity) */ +/* Full Tile Windows (more atom_integrity) */ /obj/structure/window/fulltile icon = 'icons/obj/smooth_structures/windows/window.dmi' @@ -688,7 +688,7 @@ /obj/structure/window/paperframe/examine(mob/user) . = ..() - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) . += "It looks a bit damaged, you may be able to fix it with some paper." /obj/structure/window/paperframe/spawnDebris(location) @@ -713,7 +713,7 @@ update_appearance() /obj/structure/window/paperframe/update_icon() - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) cut_overlay(paper) add_overlay(torn) set_opacity(FALSE) @@ -730,13 +730,13 @@ return if(user.a_intent == INTENT_HARM) return ..() - if(istype(W, /obj/item/paper) && obj_integrity < max_integrity) + if(istype(W, /obj/item/paper) && atom_integrity < max_integrity) user.visible_message("[user] starts to patch the holes in \the [src].") if(do_after(user, 20, target = src)) - obj_integrity = min(obj_integrity+4,max_integrity) + atom_integrity = min(atom_integrity+4,max_integrity) qdel(W) user.visible_message("[user] patches some of the holes in \the [src].") - if(obj_integrity == max_integrity) + if(atom_integrity == max_integrity) update_appearance() return ..() diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm index 1b53cc53ad8e5..b84ae6810a0c1 100644 --- a/code/game/turfs/closed/walls.dm +++ b/code/game/turfs/closed/walls.dm @@ -45,6 +45,9 @@ underlay_appearance.icon_state = fixed_underlay["icon_state"] underlays += underlay_appearance +/turf/closed/wall/atom_destruction(damage_flag) + dismantle_wall(TRUE, FALSE) + /turf/closed/wall/Destroy() if(is_station_level(z)) GLOB.station_turfs -= src diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index bbeab37719b8f..f3c5d6e919c53 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -140,6 +140,15 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) set_custom_materials(temp_list) ComponentInitialize() + + if(uses_integrity) + atom_integrity = max_integrity + + if (islist(armor)) + armor = getArmor(arglist(armor)) + else if (!armor) + armor = getArmor() + if(isopenturf(src)) var/turf/open/O = src __auxtools_update_turf_temp_info(isspaceturf(get_z_base_turf()) && !O.planetary_atmos) diff --git a/code/game/turfs/turf_integrity.dm b/code/game/turfs/turf_integrity.dm index ebf76fb3905ad..b828bd60f71c0 100644 --- a/code/game/turfs/turf_integrity.dm +++ b/code/game/turfs/turf_integrity.dm @@ -61,7 +61,7 @@ play_attack_sound(damage_amount, damage_type, damage_flag) if((resistance_flags & INDESTRUCTIBLE) || integrity <= 0) return - damage_amount = run_obj_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration) + damage_amount = run_atom_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration) if(damage_amount < DAMAGE_PRECISION) return . = damage_amount @@ -75,7 +75,7 @@ after_damage(damage_amount, damage_type, damage_flag) //returns the damage value of the attack after processing the obj's various armor protections -/turf/proc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0) +/turf/proc/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0) if(damage_flag == MELEE && damage_amount < damage_deflection) return 0 switch(damage_type) @@ -88,7 +88,7 @@ if (!armor_generated) generate_armor() armor_protection = armor?.getRating(damage_flag) - if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor. + if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor. armor_protection = clamp(armor_protection - armour_penetration, min(armor_protection, 0), 100) return round(damage_amount * (100 - armor_protection)*0.01, DAMAGE_PRECISION) @@ -248,9 +248,6 @@ // Mob Attacks //==================================== -/turf/proc/hulk_damage() - return 150 //the damage hulks do on punches to this object, is affected by melee armor - /turf/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0) if (!can_hit) return ..() diff --git a/code/modules/antagonists/blob/structures/_blob.dm b/code/modules/antagonists/blob/structures/_blob.dm index e7870b87acfaf..0953eeafcd8ec 100644 --- a/code/modules/antagonists/blob/structures/_blob.dm +++ b/code/modules/antagonists/blob/structures/_blob.dm @@ -114,7 +114,7 @@ if(pulse_timestamp <= world.time) ConsumeTile() if(heal_timestamp <= world.time) - obj_integrity = min(max_integrity, obj_integrity+health_regen) + atom_integrity = min(max_integrity, atom_integrity+health_regen) heal_timestamp = world.time + 20 update_icon() pulse_timestamp = world.time + 10 @@ -248,7 +248,7 @@ /obj/structure/blob/proc/typereport(mob/user) RETURN_TYPE(/list) return list("Blob Type: [uppertext(initial(name))]", - "Health: [obj_integrity]/[max_integrity]", + "Health: [atom_integrity]/[max_integrity]", "Effects: [scannerreport()]") @@ -267,7 +267,7 @@ if(BURN) playsound(src.loc, 'sound/items/welder.ogg', 100, 1) -/obj/structure/blob/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) +/obj/structure/blob/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) switch(damage_type) if(BRUTE) damage_amount *= brute_resist @@ -286,10 +286,10 @@ /obj/structure/blob/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) . = ..() - if(. && obj_integrity > 0) + if(. && atom_integrity > 0) update_icon() -/obj/structure/blob/obj_destruction(damage_flag) +/obj/structure/blob/atom_destruction(damage_flag) if(overmind) overmind.blobstrain.death_reaction(src, damage_flag) ..() @@ -341,13 +341,13 @@ update_integrity(21) //doesn't start at full health /obj/structure/blob/normal/scannerreport() - if(obj_integrity <= 15) + if(atom_integrity <= 15) return "Currently weak to brute damage." return "N/A" /obj/structure/blob/normal/update_icon() ..() - if(obj_integrity <= 15) + if(atom_integrity <= 15) icon_state = "blob_damaged" name = "fragile blob" desc = "A thin lattice of slightly twitching tendrils." diff --git a/code/modules/antagonists/blob/structures/core.dm b/code/modules/antagonists/blob/structures/core.dm index 1840b272ed2c7..cf6476815727e 100644 --- a/code/modules/antagonists/blob/structures/core.dm +++ b/code/modules/antagonists/blob/structures/core.dm @@ -47,7 +47,7 @@ /obj/structure/blob/core/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) . = ..() - if(obj_integrity > 0) + if(atom_integrity > 0) if(overmind) //we should have an overmind, but... overmind.update_health_hud() diff --git a/code/modules/antagonists/blob/structures/shield.dm b/code/modules/antagonists/blob/structures/shield.dm index f39f8613c25e7..2246e8ba44c8e 100644 --- a/code/modules/antagonists/blob/structures/shield.dm +++ b/code/modules/antagonists/blob/structures/shield.dm @@ -21,20 +21,20 @@ /obj/structure/blob/shield/update_name(updates) . = ..() - name = "[(obj_integrity < (max_integrity * 0.5)) ? "weakened " : null][initial(name)]" + name = "[(atom_integrity < (max_integrity * 0.5)) ? "weakened " : null][initial(name)]" /obj/structure/blob/shield/update_desc(updates) . = ..() - desc = (obj_integrity < (max_integrity * 0.5)) ? "[damaged_desc]" : initial(desc) + desc = (atom_integrity < (max_integrity * 0.5)) ? "[damaged_desc]" : initial(desc) /obj/structure/blob/shield/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) . = ..() - if(. && obj_integrity > 0) - atmosblock = obj_integrity < (max_integrity * 0.5) + if(. && atom_integrity > 0) + atmosblock = atom_integrity < (max_integrity * 0.5) air_update_turf(TRUE) /obj/structure/blob/shield/update_icon_state() - icon_state = "[initial(icon_state)][(obj_integrity < (max_integrity * 0.5)) ? "_damaged" : null]" + icon_state = "[initial(icon_state)][(atom_integrity < (max_integrity * 0.5)) ? "_damaged" : null]" return ..() /obj/structure/blob/shield/reflective diff --git a/code/modules/antagonists/clock_cult/clockwork_turfs.dm b/code/modules/antagonists/clock_cult/clockwork_turfs.dm index 329b56ba411c8..24092f5a60970 100644 --- a/code/modules/antagonists/clock_cult/clockwork_turfs.dm +++ b/code/modules/antagonists/clock_cult/clockwork_turfs.dm @@ -392,7 +392,7 @@ /obj/machinery/door/airlock/clockwork/hasPower() return TRUE //yes we do have power -/obj/machinery/door/airlock/clockwork/obj_break(damage_flag) +/obj/machinery/door/airlock/clockwork/atom_break(damage_flag) . = ..() if(!.) //not a clue if this will work out propely... return diff --git a/code/modules/antagonists/clock_cult/items/clockwork_weapon.dm b/code/modules/antagonists/clock_cult/items/clockwork_weapon.dm index 85d88b5dc51ca..762931d73ad51 100644 --- a/code/modules/antagonists/clock_cult/items/clockwork_weapon.dm +++ b/code/modules/antagonists/clock_cult/items/clockwork_weapon.dm @@ -137,7 +137,7 @@ to_chat(user, "You strike [target] with an electromagnetic pulse!") playsound(user, 'sound/magic/lightningshock.ogg', 40) -/obj/item/clockwork/weapon/brass_sword/attack_obj(obj/O, mob/living/user) +/obj/item/clockwork/weapon/brass_sword/attack_atom(obj/O, mob/living/user) ..() if(!(istype(O, /obj/vehicle/sealed/mecha) && is_reebe(user.z))) return diff --git a/code/modules/antagonists/clock_cult/items/integration_cog.dm b/code/modules/antagonists/clock_cult/items/integration_cog.dm index 6c2ba0c8b3b38..dd970991fdbb2 100644 --- a/code/modules/antagonists/clock_cult/items/integration_cog.dm +++ b/code/modules/antagonists/clock_cult/items/integration_cog.dm @@ -5,7 +5,7 @@ clockwork_desc = "A sharp cog that can cut through and be inserted into APCs to extract power for the gateway." item_flags = ISWEAPON -/obj/item/clockwork/integration_cog/attack_obj(obj/O, mob/living/user) +/obj/item/clockwork/integration_cog/attack_atom(obj/O, mob/living/user) if(!is_servant_of_ratvar(user)) return ..() if(!istype(O, /obj/machinery/power/apc)) diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index 33a8af9597a99..e4980d3bf3602 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -42,17 +42,17 @@ if(iscultist(user) || isobserver(user)) var/t_It = p_they(TRUE) var/t_is = p_are() - return "[t_It] [t_is] at [round(obj_integrity * 100 / max_integrity)]% stability." + return "[t_It] [t_is] at [round(atom_integrity * 100 / max_integrity)]% stability." return ..() /obj/structure/destructible/cult/attack_animal(mob/living/simple_animal/M) if(istype(M, /mob/living/simple_animal/hostile/construct/artificer)) - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) M.changeNext_move(CLICK_CD_MELEE) - obj_integrity = min(max_integrity, obj_integrity + 5) + atom_integrity = min(max_integrity, atom_integrity + 5) Beam(M, icon_state="sendbeam", time=4) M.visible_message("[M] repairs \the [src].", \ - "You repair [src], leaving [p_they()] at [round(obj_integrity * 100 / max_integrity)]% stability.") + "You repair [src], leaving [p_they()] at [round(atom_integrity * 100 / max_integrity)]% stability.") else to_chat(M, "You cannot repair [src], as [p_theyre()] undamaged!") else diff --git a/code/modules/antagonists/heretic/structures/mawed_crucible.dm b/code/modules/antagonists/heretic/structures/mawed_crucible.dm index 154b6ed7f7754..09f3ea581b82d 100644 --- a/code/modules/antagonists/heretic/structures/mawed_crucible.dm +++ b/code/modules/antagonists/heretic/structures/mawed_crucible.dm @@ -55,7 +55,7 @@ /obj/structure/destructible/eldritch_crucible/examine_status(mob/user) if(IS_HERETIC_OR_MONSTER(user) || isobserver(user)) - return "It's at [round(obj_integrity * 100 / max_integrity)]% stability." + return "It's at [round(atom_integrity * 100 / max_integrity)]% stability." return ..() /obj/structure/destructible/eldritch_crucible/attacked_by(obj/item/weapon, mob/living/user) diff --git a/code/modules/antagonists/space_dragon/carp_rift.dm b/code/modules/antagonists/space_dragon/carp_rift.dm index c16d71bd6d90f..63fdbdb76b086 100644 --- a/code/modules/antagonists/space_dragon/carp_rift.dm +++ b/code/modules/antagonists/space_dragon/carp_rift.dm @@ -168,7 +168,7 @@ charge_state = CHARGE_COMPLETED var/area/A = get_area(src) priority_announce("Spatial object has reached peak energy charge in [initial(A.name)], please stand-by.", "Central Command Wildlife Observations") - obj_integrity = INFINITY + atom_integrity = INFINITY icon_state = "carp_rift_charged" set_light_color(LIGHT_COLOR_DIM_YELLOW) update_light() diff --git a/code/modules/aquarium/aquarium.dm b/code/modules/aquarium/aquarium.dm index 5884be2514680..ae5de231d9eaf 100644 --- a/code/modules/aquarium/aquarium.dm +++ b/code/modules/aquarium/aquarium.dm @@ -111,7 +111,7 @@ if(do_after(user, 2 SECONDS, target = src)) glass.use(2) broken = FALSE - obj_integrity = max_integrity + atom_integrity = max_integrity update_icon() return TRUE else @@ -228,7 +228,7 @@ ui = new(user, src, "Aquarium", name) ui.open() -/obj/structure/aquarium/obj_break(damage_flag) +/obj/structure/aquarium/atom_break(damage_flag) . = ..() if(!broken) aquarium_smash() diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index f02f560c3ab11..663dcb7c4c09f 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -856,7 +856,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) visible_message("Sparks fly out of [src]!", "You emag [src], disabling its safeties.") playsound(src, "sparks", 50, 1) -/obj/machinery/airalarm/obj_break(damage_flag) +/obj/machinery/airalarm/atom_break(damage_flag) ..() update_icon() diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index 1258f5504392b..fe07d92789a8d 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -106,7 +106,7 @@ /obj/machinery/atmospherics/pipe/returnPipenets() . = list(parent) -/obj/machinery/atmospherics/pipe/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) +/obj/machinery/atmospherics/pipe/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) if(damage_flag == MELEE && damage_amount < 12) return 0 . = ..() diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index d828301a6a128..7f88b9feda827 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -340,7 +340,7 @@ return TRUE -/obj/machinery/portable_atmospherics/canister/obj_break(damage_flag) +/obj/machinery/portable_atmospherics/canister/atom_break(damage_flag) . = ..() if(!.) return diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 9b3cce7e14807..c3147cc8d3e25 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -128,7 +128,7 @@ var/obj/item/stack/sheet/cotton/cloth/C = W C.use(1) update_clothes_damaged_state(FALSE) - obj_integrity = max_integrity + atom_integrity = max_integrity to_chat(user, "You fix the damage on [src] with [C].") return 1 return ..() @@ -276,7 +276,7 @@ else if (armor_value < compare_value) . = "[.]" -/obj/item/clothing/obj_break(damage_flag) +/obj/item/clothing/atom_break(damage_flag) . = ..() if(!damaged_clothes) update_clothes_damaged_state(TRUE) @@ -486,7 +486,7 @@ BLIND // can't see anything return 1 return 0 -/obj/item/clothing/obj_destruction(damage_flag) +/obj/item/clothing/atom_destruction(damage_flag) if(damage_flag == BOMB || damage_flag == MELEE) var/turf/T = get_turf(src) spawn(1) //so the shred survives potential turf change from the explosion. diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 7b6e4a9108017..b52c48d6b08ae 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -206,7 +206,7 @@ else REMOVE_TRAIT(user, carrytrait, CLOTHING_TRAIT) -/obj/item/clothing/gloves/color/latex/obj_break() +/obj/item/clothing/gloves/color/latex/atom_break() ..() if(ishuman(loc)) REMOVE_TRAIT(loc, carrytrait, CLOTHING_TRAIT) diff --git a/code/modules/exploration_crew/discovery_research/discovery_scanner.dm b/code/modules/exploration_crew/discovery_research/discovery_scanner.dm index d43b84f4db65c..2a9d86ec12397 100644 --- a/code/modules/exploration_crew/discovery_research/discovery_scanner.dm +++ b/code/modules/exploration_crew/discovery_research/discovery_scanner.dm @@ -24,7 +24,7 @@ . += "[src] has unlimited range." . += "Science goggles can help detect researchable items." -/obj/item/discovery_scanner/attack_obj(obj/O, mob/living/user) +/obj/item/discovery_scanner/attack_atom(obj/O, mob/living/user) if(istype(O, /obj/machinery/computer/rdconsole)) to_chat(user, "You link [src] to [O].") var/obj/machinery/computer/rdconsole/rdconsole = O diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 1b5a23f470210..46c53553f3fc2 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -276,6 +276,23 @@ update_appearance() return TRUE +/obj/machinery/smartfridge/welder_act(mob/living/user, obj/item/I) + . = ..() + if(machine_stat & BROKEN) + if(!I.tool_start_check(user, amount=0)) + return + user.visible_message("[user] is repairing [src].", \ + "You begin repairing [src]...", \ + "You hear welding.") + if(I.use_tool(src, user, 40, volume=50)) + if(!(machine_stat & BROKEN)) + return + to_chat(user, "You repair [src].") + atom_integrity = max_integrity + set_machine_stat(machine_stat & ~BROKEN) + update_icon() + else + to_chat(user, "[src] does not need repairs.") // ---------------------------- // Drying Rack 'smartfridge' diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index f14ccc217ffdd..40168e56f1f3d 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -61,11 +61,11 @@ /obj/item/clothing/mask/facehugger/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) . = ..() - if(obj_integrity < 90) + if(atom_integrity < 90) Die() /obj/item/clothing/mask/facehugger/attackby(obj/item/O, mob/user, params) - return O.attack_obj(src, user) + return O.attack_atom(src, user, params) /obj/item/clothing/mask/facehugger/attack_alien(mob/user) //can be picked up by aliens return attack_hand(user) diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index f5285829b4d6a..d2207e7e6e363 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -280,9 +280,9 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar /obj/item/modular_computer/examine(mob/user) . = ..() - if(obj_integrity <= integrity_failure * max_integrity) + if(atom_integrity <= integrity_failure * max_integrity) . += "It is heavily damaged!" - else if(obj_integrity < max_integrity) + else if(atom_integrity < max_integrity) . += "It is damaged." . += get_modular_computer_parts_examine(user) @@ -302,7 +302,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar if(can_store_pai && stored_pai_card) add_overlay(stored_pai_card.pai ? mutable_appearance(init_icon, "pai-overlay") : mutable_appearance(init_icon, "pai-off-overlay")) - if(obj_integrity <= integrity_failure * max_integrity) + if(atom_integrity <= integrity_failure * max_integrity) add_overlay(mutable_appearance(init_icon, "bsod")) add_overlay(mutable_appearance(init_icon, "broken")) @@ -312,7 +312,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar ui_interact(user) return TRUE var/issynth = issilicon(user) // Robots and AIs get different activation messages. - if(obj_integrity <= integrity_failure * max_integrity) + if(atom_integrity <= integrity_failure * max_integrity) if(issynth) to_chat(user, "You send an activation signal to \the [src], but it responds with an error code. It must be damaged.") else @@ -347,7 +347,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar last_power_usage = 0 return 0 - if(obj_integrity <= integrity_failure * max_integrity) + if(atom_integrity <= integrity_failure * max_integrity) shutdown_computer() return 0 @@ -672,7 +672,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar return if(attacking_item.tool_behaviour == TOOL_WELDER) - if(obj_integrity == max_integrity) + if(atom_integrity == max_integrity) to_chat(user, "\The [src] does not require repairs.") return @@ -681,7 +681,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar to_chat(user, "You begin repairing damage to \the [src]...") if(attacking_item.use_tool(src, user, 20, volume=50, amount=1)) - obj_integrity = max_integrity + atom_integrity = max_integrity to_chat(user, "You repair \the [src].") update_icon() return diff --git a/code/modules/modular_computers/computers/item/computer_damage.dm b/code/modules/modular_computers/computers/item/computer_damage.dm index 0898aaebca071..586cae2887d48 100644 --- a/code/modules/modular_computers/computers/item/computer_damage.dm +++ b/code/modules/modular_computers/computers/item/computer_damage.dm @@ -1,6 +1,6 @@ /obj/item/modular_computer/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) . = ..() - var/component_probability = min(50, max(damage_amount*0.1, 1 - obj_integrity/max_integrity)) + var/component_probability = min(50, max(damage_amount*0.1, 1 - atom_integrity/max_integrity)) switch(damage_flag) if(BULLET) component_probability = damage_amount * 0.5 diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index 59011959d44b6..6959f807a4721 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -108,11 +108,11 @@ return ..() -/obj/item/modular_computer/tablet/attack_obj(obj/target, mob/living/user) +/obj/item/modular_computer/tablet/attack_atom(obj/target, mob/living/user) // Send to programs for processing - this should go LAST // Used to implement the gas scanner. for(var/datum/computer_file/program/thread in (idle_threads + active_program)) - if(thread.use_attack_obj && !thread.attack_obj(target, user)) + if(thread.use_attack_obj && !thread.attack_atom(target, user)) return ..() diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index 86bf1f179c06f..bb8d49e964e71 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -33,7 +33,7 @@ var/alert_pending = FALSE /// If this program should process attack calls var/use_attack = FALSE - /// If this program should process attack_obj calls + /// If this program should process attack_atom calls var/use_attack_obj = FALSE /datum/computer_file/program/New(obj/item/modular_computer/comp = null) @@ -188,7 +188,7 @@ /// Return TRUE if nothing was processed. Return FALSE to prevent further actions running. /// Set use_attack_obj = TRUE to receive proccalls from the parent computer. -/datum/computer_file/program/proc/attack_obj(obj/target, mob/living/user) +/datum/computer_file/program/proc/attack_atom(obj/target, mob/living/user) return TRUE /// Called when the datum/tgui is initialized by the computer diff --git a/code/modules/modular_computers/file_system/programs/phys_scanner.dm b/code/modules/modular_computers/file_system/programs/phys_scanner.dm index d98c8d71917f8..6d17593d0e1df 100644 --- a/code/modules/modular_computers/file_system/programs/phys_scanner.dm +++ b/code/modules/modular_computers/file_system/programs/phys_scanner.dm @@ -76,7 +76,7 @@ return FALSE return ..() -/datum/computer_file/program/phys_scanner/attack_obj(obj/target, mob/living/user) +/datum/computer_file/program/phys_scanner/attack_atom(obj/target, mob/living/user) switch(current_mode) if(DISK_ATMOS) var/scan_result = atmosanalyzer_scan(user, target, silent = TRUE, to_chat = FALSE) diff --git a/code/modules/modular_computers/hardware/_hardware.dm b/code/modules/modular_computers/hardware/_hardware.dm index b2398841278f8..61eee31e9d43e 100644 --- a/code/modules/modular_computers/hardware/_hardware.dm +++ b/code/modules/modular_computers/hardware/_hardware.dm @@ -54,12 +54,12 @@ // Cable coil. Works as repair method, but will probably require multiple applications and more cable. if(istype(I, /obj/item/stack/cable_coil)) var/obj/item/stack/S = I - if(obj_integrity == max_integrity) + if(atom_integrity == max_integrity) to_chat(user, "\The [src] doesn't seem to require repairs.") return 1 if(S.use(1)) to_chat(user, "You patch up \the [src] with a bit of \the [I].") - obj_integrity = min(obj_integrity + 10, max_integrity) + atom_integrity = min(atom_integrity + 10, max_integrity) return 1 if(try_insert(I, user)) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index c0a8a98acbf67..a9336c2c3f958 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -445,7 +445,7 @@ else return ..() -/obj/machinery/photocopier/obj_break(damage_flag) +/obj/machinery/photocopier/atom_break(damage_flag) . = ..() if(. && toner_cartridge.charges) new /obj/effect/decal/cleanable/oil(get_turf(src)) diff --git a/code/modules/power/apc/apc_attack.dm b/code/modules/power/apc/apc_attack.dm index fbc7b20d60116..0143ec06186ec 100644 --- a/code/modules/power/apc/apc_attack.dm +++ b/code/modules/power/apc/apc_attack.dm @@ -103,7 +103,7 @@ to_chat(user, "[src] has both electronics and a cell.") return else if (istype(W, /obj/item/wallframe/apc) && opened) - if (!(machine_stat & BROKEN || opened==APC_COVER_REMOVED || obj_integrity < max_integrity)) // There is nothing to repair + if (!(machine_stat & BROKEN || opened==APC_COVER_REMOVED || atom_integrity < max_integrity)) // There is nothing to repair to_chat(user, "You find no reason for repairing this APC.") return if (!(machine_stat & BROKEN) && opened==APC_COVER_REMOVED) @@ -125,7 +125,7 @@ to_chat(user, "You replace the damaged APC frame with a new one.") qdel(W) set_machine_stat(machine_stat & ~BROKEN) - obj_integrity = max_integrity + atom_integrity = max_integrity if (opened==APC_COVER_REMOVED) opened = APC_COVER_OPENED update_appearance() @@ -231,7 +231,7 @@ if((machine_stat & MAINT) && !opened) //no board; no interface return -/obj/machinery/power/apc/obj_break(damage_flag) +/obj/machinery/power/apc/atom_break(damage_flag) . = ..() if(.) set_broken() @@ -272,8 +272,8 @@ /obj/machinery/power/apc/proc/set_broken() if(malfai && operating) malfai.malf_picker.processing_time = clamp(malfai.malf_picker.processing_time - 10,0,1000) - machine_stat |= BROKEN operating = FALSE + atom_break() if(occupier) malfvacate(1) update_appearance() diff --git a/code/modules/power/apc/apc_power_proc.dm b/code/modules/power/apc/apc_power_proc.dm index 29eeaf55daf04..131ae6f002564 100644 --- a/code/modules/power/apc/apc_power_proc.dm +++ b/code/modules/power/apc/apc_power_proc.dm @@ -184,7 +184,7 @@ area.power_environ = FALSE area.power_change() -/obj/machinery/power/apc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) +/obj/machinery/power/apc/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) if(damage_flag == MELEE && damage_amount < 10 && (!(machine_stat & BROKEN) || malfai)) return 0 . = ..() diff --git a/code/modules/power/floodlight.dm b/code/modules/power/floodlight.dm index 691a72fea61ce..7313d46e0cefe 100644 --- a/code/modules/power/floodlight.dm +++ b/code/modules/power/floodlight.dm @@ -109,7 +109,7 @@ change_setting(current, user) ..() -/obj/machinery/power/floodlight/obj_break(damage_flag) +/obj/machinery/power/floodlight/atom_break(damage_flag) . = ..() if(!.) return diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 3efa5dc72c48b..e56c8ce4c3e41 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -58,7 +58,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne qdel(src) /obj/machinery/gravity_generator/proc/set_broken() - set_machine_stat(machine_stat | BROKEN) + atom_break() /obj/machinery/gravity_generator/proc/set_fix() set_machine_stat(machine_stat & ~BROKEN) diff --git a/code/modules/power/lighting/light_items.dm b/code/modules/power/lighting/light_items.dm index a346f2e03f75c..bfe3dd776cc38 100644 --- a/code/modules/power/lighting/light_items.dm +++ b/code/modules/power/lighting/light_items.dm @@ -111,7 +111,7 @@ ..() shatter() -/obj/item/light/attack_obj(obj/O, mob/living/user) +/obj/item/light/attack_atom(obj/O, mob/living/user, params) ..() shatter() diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 572611781c3dd..467ef461ba7c1 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -199,7 +199,7 @@ else . += "[src]'s display displays the words: \"Research point production mode. Please insert Tritium and Oxygen. Use a multitool to change production modes.\"" -/obj/machinery/power/rad_collector/obj_break(damage_flag) +/obj/machinery/power/rad_collector/atom_break(damage_flag) . = ..() if(.) eject() diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index f50fec2850a5b..3bfe60777db2d 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -58,7 +58,7 @@ break dir_loop if(!terminal) - set_machine_stat(machine_stat | BROKEN) + atom_break() return terminal.master = src update_icon() @@ -205,7 +205,7 @@ if(terminal) terminal.master = null terminal = null - set_machine_stat(machine_stat | BROKEN) + atom_break() /obj/machinery/power/smes/update_icon() diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 14d1bc6776851..603d7cb469c71 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -55,7 +55,7 @@ S.forceMove(src) if(S.glass_type == /obj/item/stack/sheet/rglass) //if the panel is in reinforced glass max_integrity *= 2 //this need to be placed here, because panels already on the map don't have an assembly linked to - obj_integrity = max_integrity + atom_integrity = max_integrity update_icon() /obj/machinery/power/solar/crowbar_act(mob/user, obj/item/I) @@ -78,7 +78,7 @@ playsound(loc, 'sound/items/welder.ogg', 100, 1) -/obj/machinery/power/solar/obj_break(damage_flag) +/obj/machinery/power/solar/atom_break(damage_flag) . = ..() if(.) playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE) @@ -459,7 +459,7 @@ if(BURN) playsound(src.loc, 'sound/items/welder.ogg', 100, 1) -/obj/machinery/power/solar_control/obj_break(damage_flag) +/obj/machinery/power/solar_control/atom_break(damage_flag) . = ..() if(.) playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE) diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index 64083fee19774..2252b95983e8f 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -68,7 +68,7 @@ deconstruct(TRUE) return TRUE -/obj/machinery/power/tracker/obj_break(damage_flag) +/obj/machinery/power/tracker/atom_break(damage_flag) . = ..() if(.) playsound(loc, 'sound/effects/glassbr3.ogg', 100, TRUE) diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index fa119b30239b5..824e41c42fc50 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -83,7 +83,7 @@ inturf = get_step(src, dir) locate_machinery() if(!turbine) - set_machine_stat(machine_stat | BROKEN) + atom_break() #define COMPFRICTION 5e5 @@ -119,7 +119,7 @@ set_machine_stat(machine_stat & ~BROKEN) else to_chat(user, "Turbine not connected.") - set_machine_stat(machine_stat | BROKEN) + atom_break() return default_deconstruction_crowbar(I) @@ -176,7 +176,7 @@ outturf = get_step(src, dir) locate_machinery() if(!compressor) - set_machine_stat(machine_stat | BROKEN) + atom_break() connect_to_network() /obj/machinery/power/turbine/RefreshParts() @@ -249,7 +249,7 @@ set_machine_stat(machine_stat & ~BROKEN) else to_chat(user, "Compressor not connected.") - set_machine_stat(machine_stat | BROKEN) + atom_break() return default_deconstruction_crowbar(I) diff --git a/code/modules/projectiles/autofire.dm b/code/modules/projectiles/autofire.dm index 18d62d1c82b55..d8f672b69c901 100644 --- a/code/modules/projectiles/autofire.dm +++ b/code/modules/projectiles/autofire.dm @@ -96,7 +96,7 @@ Everything else should be handled for you. Good luck soldier. if(L.Adjacent(autofire_target)) //Melee attack? Or ranged attack? if(isobj(autofire_target)) next_process = world.time + CLICK_CD_MELEE - G.attack_obj(autofire_target, L) + G.attack_atom(autofire_target, L) return else if(isliving(autofire_target) && L.a_intent == INTENT_HARM) // Prevents trying to attack turfs next to the shooter G.attack(autofire_target, L) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index b221f3691c2f3..14ccbe85b06df 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -515,7 +515,7 @@ return ..() return -/obj/item/gun/attack_obj(obj/O, mob/user) +/obj/item/gun/attack_atom(obj/O, mob/living/user, params) if(user.a_intent == INTENT_HARM) if(bayonet) O.attackby(bayonet, user) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 2d275eb4daed0..8ed7551b95a3b 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -12,7 +12,7 @@ /obj/structure/reagent_dispensers/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) . = ..() - if(. && obj_integrity > 0) + if(. && atom_integrity > 0) if(tank_volume && (damage_flag == BULLET || damage_flag == LASER)) boom() diff --git a/code/modules/recycling/conveyor.dm b/code/modules/recycling/conveyor.dm index b9bcac6cc8fe0..515e588c3c952 100644 --- a/code/modules/recycling/conveyor.dm +++ b/code/modules/recycling/conveyor.dm @@ -174,7 +174,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) if(machine_stat & NOPOWER) set_operating(FALSE) return FALSE - + if(!operating) //If we're on, start conveying so moveloops on our tile can be refreshed if they stopped for some reason return for(var/atom/movable/movable in get_turf(src)) @@ -269,7 +269,7 @@ DEFINE_BUFFER_HANDLER(/obj/machinery/conveyor) // make the conveyor broken // also propagate inoperability to any connected conveyor with the same ID /obj/machinery/conveyor/proc/broken() - set_machine_stat(machine_stat | BROKEN) + atom_break() update() var/obj/machinery/conveyor/C = locate() in get_step(src, dir) diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm index 79c16ade1c3c1..e1c4a9039dffd 100644 --- a/code/modules/recycling/disposal/pipe.dm +++ b/code/modules/recycling/disposal/pipe.dm @@ -109,7 +109,7 @@ H.contents_explosion(severity, target) -/obj/structure/disposalpipe/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) +/obj/structure/disposalpipe/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) if(damage_flag == MELEE && damage_amount < 10) return 0 return ..() diff --git a/code/modules/religion/sects/carp_sect.dm b/code/modules/religion/sects/carp_sect.dm index b1626b865fb45..47ad695bcc376 100644 --- a/code/modules/religion/sects/carp_sect.dm +++ b/code/modules/religion/sects/carp_sect.dm @@ -104,7 +104,7 @@ /datum/religion_rites/summon_carpsuit/invoke_effect(mob/living/user, atom/religious_tool) if(!QDELETED(chosen_clothing) && get_turf(religious_tool) == chosen_clothing.loc) //check if the same clothing is still there user.visible_message("The [chosen_clothing] transforms!") - chosen_clothing.obj_destruction() + chosen_clothing.atom_destruction() chosen_clothing = null new /obj/item/clothing/suit/hooded/carp_costume/spaceproof/old(get_turf(religious_tool)) playsound(get_turf(religious_tool), 'sound/effects/slosh.ogg', 50, TRUE) diff --git a/code/modules/research/xenobiology/crossbreeding/_structures.dm b/code/modules/research/xenobiology/crossbreeding/_structures.dm index 831797876a3d6..acea2b09ca0c0 100644 --- a/code/modules/research/xenobiology/crossbreeding/_structures.dm +++ b/code/modules/research/xenobiology/crossbreeding/_structures.dm @@ -23,7 +23,7 @@ GLOBAL_LIST_EMPTY(bluespace_slime_crystals) if(master_crystal) invisibility = INVISIBILITY_MAXIMUM max_integrity = 1000 - obj_integrity = 1000 + atom_integrity = 1000 /obj/structure/slime_crystal/Initialize(mapload) . = ..() diff --git a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm index 3868fae6c6298..ffd4d8956ef0d 100644 --- a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm +++ b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm @@ -60,7 +60,7 @@ meat_counter++ H.investigate_log("has been gibbed by the necropolis tendril.", INVESTIGATE_DEATHS) H.gib() - obj_integrity = min(obj_integrity + max_integrity*0.05,max_integrity)//restores 5% hp of tendril + atom_integrity = min(atom_integrity + max_integrity*0.05,max_integrity)//restores 5% hp of tendril for(var/mob/living/L in viewers(5, src)) if(L.mind?.has_antag_datum(/datum/antagonist/ashwalker)) SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "oogabooga", /datum/mood_event/sacrifice_good) diff --git a/code/modules/security/genpop.dm b/code/modules/security/genpop.dm index 307b984cff784..c24d288973641 100644 --- a/code/modules/security/genpop.dm +++ b/code/modules/security/genpop.dm @@ -260,14 +260,14 @@ qdel(src) return - if(obj_integrity >= max_integrity) + if(atom_integrity >= max_integrity) to_chat(user, "The turnstile doesn't need repairing.") return user.visible_message("[user] is welding the turnstile.", \ "You begin repairing the turnstile...", \ "You hear welding.") if(I.use_tool(src, user, 40, volume=50)) - obj_integrity = max_integrity + atom_integrity = max_integrity set_machine_stat(machine_stat & ~BROKEN) user.visible_message("[user.name] has repaired [src].", \ "You finish repairing the turnstile.") diff --git a/code/modules/surgery/anesthetic_machine.dm b/code/modules/surgery/anesthetic_machine.dm index dbfb594cf514c..ad976e999608f 100644 --- a/code/modules/surgery/anesthetic_machine.dm +++ b/code/modules/surgery/anesthetic_machine.dm @@ -103,7 +103,7 @@ QDEL_NULL(attached_mask) . = ..() -/obj/machinery/anesthetic_machine/obj_destruction() +/obj/machinery/anesthetic_machine/atom_destruction() if(mask_out) retract_mask() QDEL_NULL(attached_mask) diff --git a/code/modules/vehicles/_vehicle.dm b/code/modules/vehicles/_vehicle.dm index 29dc5b3dfaf7c..c32b2b6e577a7 100644 --- a/code/modules/vehicles/_vehicle.dm +++ b/code/modules/vehicles/_vehicle.dm @@ -44,7 +44,7 @@ . = ..() if(resistance_flags & ON_FIRE) . += "It's on fire!" - var/healthpercent = obj_integrity/max_integrity * 100 + var/healthpercent = atom_integrity/max_integrity * 100 switch(healthpercent) if(50 to 99) . += "It looks slightly damaged." diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm index a81633cf9a561..1c674b0c1b940 100644 --- a/code/modules/vehicles/atv.dm +++ b/code/modules/vehicles/atv.dm @@ -67,21 +67,21 @@ /obj/vehicle/ridden/atv/attackby(obj/item/W as obj, mob/user as mob, params) if(W.tool_behaviour == TOOL_WELDER && user.a_intent != INTENT_HARM) - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(W.use_tool(src, user, 0, volume=50, amount=1)) user.visible_message("[user] repairs some damage to [name].", "You repair some damage to \the [src].") - obj_integrity += min(10, max_integrity-obj_integrity) - if(obj_integrity == max_integrity) + atom_integrity += min(10, max_integrity-atom_integrity) + if(atom_integrity == max_integrity) to_chat(user, "It looks to be fully repaired now.") return TRUE return ..() -/obj/vehicle/ridden/secway/obj_break() +/obj/vehicle/ridden/secway/atom_break() START_PROCESSING(SSobj, src) return ..() /obj/vehicle/ridden/atv/process(delta_time) - if(obj_integrity >= integrity_failure * max_integrity) + if(atom_integrity >= integrity_failure * max_integrity) return PROCESS_KILL if(DT_PROB(10, delta_time)) return @@ -96,7 +96,7 @@ return TRUE return ..() -/obj/vehicle/ridden/atv/obj_destruction() +/obj/vehicle/ridden/atv/atom_destruction() explosion(src, -1, 0, 2, 4, flame_range = 3) return ..() diff --git a/code/modules/vehicles/cars/car.dm b/code/modules/vehicles/cars/car.dm index 68a332beee868..044a1bee415b8 100644 --- a/code/modules/vehicles/cars/car.dm +++ b/code/modules/vehicles/cars/car.dm @@ -101,7 +101,7 @@ M.forceMove(src) add_occupant(M, VEHICLE_CONTROL_KIDNAPPED) -/obj/vehicle/sealed/car/obj_destruction(damage_flag) +/obj/vehicle/sealed/car/atom_destruction(damage_flag) explosion(loc, 0, 1, 2, 3, 0) log_message("[src] exploded due to destruction", LOG_ATTACK) return ..() diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index b90c3e781043b..c892d8f7f65d0 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -60,7 +60,7 @@ . = ..() if(istype(I, /obj/item/food/grown/banana)) var/obj/item/food/grown/banana/banana = I - obj_integrity += min(banana.seed.potency, max_integrity-obj_integrity) + atom_integrity += min(banana.seed.potency, max_integrity-atom_integrity) to_chat(user, "You use the [banana] to repair the [src]!") qdel(banana) diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index 5565a41802307..5500768ae9665 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -345,7 +345,7 @@ /obj/vehicle/sealed/mecha/examine(mob/user) . = ..() - var/integrity = obj_integrity*100/max_integrity + var/integrity = atom_integrity*100/max_integrity switch(integrity) if(85 to 100) . += "It's fully intact." @@ -453,7 +453,7 @@ else occupant.throw_alert("charge", /atom/movable/screen/alert/emptycell) - var/integrity = obj_integrity/max_integrity*100 + var/integrity = atom_integrity/max_integrity*100 switch(integrity) if(30 to 45) occupant.throw_alert("mech damage", /atom/movable/screen/alert/low_mech_integrity, 1) @@ -753,7 +753,7 @@ if(!islist(possible_int_damage) || !length(possible_int_damage)) return if(prob(20)) - if(ignore_threshold || obj_integrity*100/max_integrity < internal_damage_threshold) + if(ignore_threshold || atom_integrity*100/max_integrity < internal_damage_threshold) for(var/T in possible_int_damage) if(internal_damage & T) possible_int_damage -= T @@ -761,7 +761,7 @@ if(int_dam_flag) setInternalDamage(int_dam_flag) if(prob(5)) - if(ignore_threshold || obj_integrity*100/max_integrity < internal_damage_threshold) + if(ignore_threshold || atom_integrity*100/max_integrity < internal_damage_threshold) if(LAZYLEN(equipment)) var/obj/item/mecha_parts/mecha_equipment/ME = safepick(equipment) qdel(ME) @@ -971,7 +971,7 @@ visible_message("[M] starts to climb into [name].") if(do_after(M, enter_delay, target = src)) - if(obj_integrity <= 0) + if(atom_integrity <= 0) to_chat(M, "You cannot get in the [name], it has been destroyed!") else if(LAZYLEN(occupants) >= max_occupants) to_chat(M, "[occupants[occupants.len]] was faster! Try better next time, loser.")//get the last one that hopped in diff --git a/code/modules/vehicles/mecha/combat/durand.dm b/code/modules/vehicles/mecha/combat/durand.dm index e436afcaab9ee..d1933889b7892 100644 --- a/code/modules/vehicles/mecha/combat/durand.dm +++ b/code/modules/vehicles/mecha/combat/durand.dm @@ -227,13 +227,13 @@ own integrity back to max. Shield is automatically dropped if we run out of powe return . = ..() flick("shield_impact", src) - if(!chassis.use_power((max_integrity - obj_integrity) * 100)) + if(!chassis.use_power((max_integrity - atom_integrity) * 100)) chassis.cell?.charge = 0 for(var/O in chassis.occupants) var/mob/living/occupant = O var/datum/action/action = LAZYACCESSASSOC(chassis.occupant_actions, occupant, /datum/action/vehicle/sealed/mecha/mech_defense_mode) action.Trigger(FALSE) - obj_integrity = 10000 + atom_integrity = 10000 /obj/durand_shield/play_attack_sound() playsound(src, 'sound/mecha/mech_shield_deflect.ogg', 100, TRUE) diff --git a/code/modules/vehicles/mecha/combat/honker.dm b/code/modules/vehicles/mecha/combat/honker.dm index d9a8d0fe40fc5..b06630bb5d702 100644 --- a/code/modules/vehicles/mecha/combat/honker.dm +++ b/code/modules/vehicles/mecha/combat/honker.dm @@ -17,7 +17,7 @@ var/squeak = 0 /obj/vehicle/sealed/mecha/combat/honker/get_stats_part(mob/user) - var/integrity = obj_integrity/max_integrity*100 + var/integrity = atom_integrity/max_integrity*100 var/cell_charge = get_charge() var/datum/gas_mixture/int_tank_air = internal_tank.return_air() var/tank_pressure = internal_tank ? round(int_tank_air.return_pressure(),0.01) : "None" diff --git a/code/modules/vehicles/mecha/mecha_defense.dm b/code/modules/vehicles/mecha/mecha_defense.dm index 6c811227b11ed..5c5f8b3a2e856 100644 --- a/code/modules/vehicles/mecha/mecha_defense.dm +++ b/code/modules/vehicles/mecha/mecha_defense.dm @@ -8,7 +8,7 @@ /obj/vehicle/sealed/mecha/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) . = ..() - if(. && obj_integrity > 0) + if(. && atom_integrity > 0) spark_system.start() switch(damage_flag) if(FIRE) @@ -21,7 +21,7 @@ to_chat(occupants, "[icon2html(src, occupants)]Taking damage!") log_message("Took [damage_amount] points of damage. Damage type: [damage_type].", LOG_MECHA) -/obj/vehicle/sealed/mecha/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) +/obj/vehicle/sealed/mecha/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) . = ..() if(!damage_amount) return 0 @@ -305,12 +305,12 @@ clearInternalDamage(MECHA_INT_TANK_BREACH) to_chat(user, "You repair the damaged gas tank.") return - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(!W.use_tool(src, user, 0, volume=50, amount=1)) return user.visible_message("[user] repairs some damage to [name].", "You repair some damage to [src].") - obj_integrity += min(10, max_integrity-obj_integrity) - if(obj_integrity == max_integrity) + atom_integrity += min(10, max_integrity-atom_integrity) + if(atom_integrity == max_integrity) to_chat(user, "It looks to be fully repaired now.") return to_chat(user, "The [name] is at full integrity!") @@ -333,7 +333,7 @@ . = ..() /obj/vehicle/sealed/mecha/proc/full_repair(charge_cell) - obj_integrity = max_integrity + atom_integrity = max_integrity if(cell && charge_cell) cell.charge = cell.maxcharge if(internal_damage & MECHA_INT_FIRE) @@ -362,7 +362,7 @@ visual_effect_icon = ATTACK_EFFECT_MECHTOXIN ..() -/obj/vehicle/sealed/mecha/obj_destruction() +/obj/vehicle/sealed/mecha/atom_destruction() if(wreckage) var/mob/living/silicon/ai/AI for(var/crew in occupants) diff --git a/code/modules/vehicles/mecha/mecha_topic.dm b/code/modules/vehicles/mecha/mecha_topic.dm index 789cb783953e7..4c935d148d2a7 100644 --- a/code/modules/vehicles/mecha/mecha_topic.dm +++ b/code/modules/vehicles/mecha/mecha_topic.dm @@ -53,7 +53,7 @@ ///Returns the status of the mech. /obj/vehicle/sealed/mecha/proc/get_stats_part(mob/user) - var/integrity = obj_integrity/max_integrity*100 + var/integrity = atom_integrity/max_integrity*100 var/cell_charge = get_charge() var/datum/gas_mixture/int_tank_air = 0 var/tank_pressure = 0 diff --git a/code/modules/vehicles/motorized_wheelchair.dm b/code/modules/vehicles/motorized_wheelchair.dm index b68c58a21a819..a02a295cd5aad 100644 --- a/code/modules/vehicles/motorized_wheelchair.dm +++ b/code/modules/vehicles/motorized_wheelchair.dm @@ -31,7 +31,7 @@ /obj/vehicle/ridden/wheelchair/motorized/get_cell() return power_cell -/obj/vehicle/ridden/wheelchair/motorized/obj_destruction(damage_flag) +/obj/vehicle/ridden/wheelchair/motorized/atom_destruction(damage_flag) var/turf/T = get_turf(src) for(var/c in contents) var/atom/movable/thing = c diff --git a/code/modules/vehicles/secway.dm b/code/modules/vehicles/secway.dm index 0dc23070ea4b6..caa76e091fda0 100644 --- a/code/modules/vehicles/secway.dm +++ b/code/modules/vehicles/secway.dm @@ -15,12 +15,12 @@ D.empable = TRUE D.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 4), TEXT_SOUTH = list(0, 4), TEXT_EAST = list(0, 4), TEXT_WEST = list( 0, 4))) -/obj/vehicle/ridden/secway/obj_break() +/obj/vehicle/ridden/secway/atom_break() START_PROCESSING(SSobj, src) return ..() /obj/vehicle/ridden/secway/process(delta_time) - if(obj_integrity >= integrity_failure * max_integrity) + if(atom_integrity >= integrity_failure * max_integrity) return PROCESS_KILL if(DT_PROB(10, delta_time)) return @@ -30,16 +30,16 @@ /obj/vehicle/ridden/secway/attackby(obj/item/W, mob/user, params) if(W.tool_behaviour == TOOL_WELDER && user.a_intent != INTENT_HARM) - if(obj_integrity < max_integrity) + if(atom_integrity < max_integrity) if(W.use_tool(src, user, 0, volume = 50, amount = 1)) user.visible_message("[user] repairs some damage to [name].", "You repair some damage to \the [src].") - obj_integrity += min(10, max_integrity-obj_integrity) - if(obj_integrity == max_integrity) + atom_integrity += min(10, max_integrity-atom_integrity) + if(atom_integrity == max_integrity) to_chat(user, "It looks to be fully repaired now.") return TRUE return ..() -/obj/vehicle/ridden/secway/obj_destruction() +/obj/vehicle/ridden/secway/atom_destruction() explosion(src, -1, 0, 2, 4, flame_range = 3) return ..() diff --git a/code/modules/vehicles/wheelchair.dm b/code/modules/vehicles/wheelchair.dm index abd6ec9dc7787..a8f41f4a2cba5 100644 --- a/code/modules/vehicles/wheelchair.dm +++ b/code/modules/vehicles/wheelchair.dm @@ -27,7 +27,7 @@ . = ..() AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, PROC_REF(can_user_rotate)),CALLBACK(src, PROC_REF(can_be_rotated)),null) -/obj/vehicle/ridden/wheelchair/obj_destruction(damage_flag) +/obj/vehicle/ridden/wheelchair/atom_destruction(damage_flag) new /obj/item/stack/rods(drop_location(), 1) new /obj/item/stack/sheet/iron(drop_location(), 1) ..() diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index ceaae3686798e..22a3a7ba4e082 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -281,7 +281,7 @@ . += emissive_appearance(icon, light_mask, layer) ADD_LUM_SOURCE(src, LUM_SOURCE_MANAGED_OVERLAY) -/obj/machinery/vending/obj_break(damage_flag) +/obj/machinery/vending/atom_break(damage_flag) . = ..() if(!.) return diff --git a/html/changelog.html b/html/changelog.html index d675e6e7d14c3..32e1557bf28b6 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -5,7 +5,7 @@ + + @@ -24,7 +24,7 @@
BeeStation 13
- +

Site | Forum | Wiki | Source

Join our Discord Here! @@ -36,7 +36,7 @@ Current Project Maintainers: -Click Here-
Currently Active GitHub contributor list: -Click Here-
- Coders: Agouri, Aranclanos, AzlanonPC, Cael_Aislinn, Carn, Cenrus, Cheridan, ConstantA, Crossedfall, CthulhuOnIce, Darem, Donkie, Doohl, DumpDavidson, Elo001, Errorage, Francinum, Fleure, Giacom, Ikarrus, Intigracy, Kor, MCterra, Malkevin, ManeaterMildred, Mark Suckerberg, Miauw, Mport, MrPerson, NEO, Nodrak, Noise, Noka, Numbers, Petethegoat, Polymorph, PowerfulBacon, Qwertyquerty, Rockdtben, ShadowH4nD, Sieve, Skie, St0rmC4st3r, SuperSayu, Superxpdude, TLE, Tastyfish, Uhangi, Urist McDorf, Yvar, ike709, muskets, rastaf0, trubble_bass, veryinky
+ Coders: Agouri, Aranclanos, AzlanonPC, Cael_Aislinn, Carn, Cenrus, Cheridan, ConstantA, Crossedfall, CthulhuOnIce, Darem, Donkie, Doohl, DumpDavidson, Elo001, Errorage, Francinum, Fleure, Giacom, Ikarrus, Intigracy, Kor, MCterra, Malkevin, ManeaterMildred, Mark Suckerberg, Miauw, Mport, MrPerson, NEO, Nodrak, Noise, Noka, Numbers, Petethegoat, Polymorph, PowerfulBacon, Qwertyquerty, Rockdtben, ShadowH4nD, Sieve, Skie, St0rmC4st3r, SuperSayu, Superxpdude, TLE, Tastyfish, Uhangi, Urist McDorf, Yvar, ike709, muskets, rastaf0, trubble_bass, veryinky
Spriters: Agouri, Ausops, AzlanonPC, Cheridan, CruazyGuest, Deeaych, Deuryn, Firecage, Kor, Matty406, Microwave, Naevi, Nienhaus2, Petethegoat, Pewtershmitz, Ricotez, ShiftyEyesShady, Skie, TankNut, Thatguythere03, Uhangi, Veyveyr
Mappers: Prophed
Sounds: Skie, Lasty/Vinyl
@@ -48,11 +48,11 @@
@@ -139,7 +139,7 @@

rkz, nightred, Couls. RaveRadbury, Timberpoes, WarlockD, Arca

rkz, ninjanomnom updated:

    -
  • limits calls or changes to obj_integrity var, all must be made through getters or setters
  • +
  • limits calls or changes to atom_integrity var, all must be made through getters or setters

rkz, rohesie, tralezab, dwasint updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 8dd2352e201e4..961498cf2854f 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -43731,7 +43731,7 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. GAIN heat when hugging a colder person, instead of the other way around. Hugs were harmful! rkz, ninjanomnom: - - code_imp: limits calls or changes to obj_integrity var, all must be made through + - code_imp: limits calls or changes to atom_integrity var, all must be made through getters or setters rkz, rohesie, tralezab, dwasint: - rscadd: You can now see if a limb is disabled through checkhealth (HUD, healthanalyzer, From 70bc9817b60b7ee39a2ba7ca8fa8a711359604c7 Mon Sep 17 00:00:00 2001 From: RKz Date: Sat, 3 Aug 2024 23:34:47 -0400 Subject: [PATCH 05/19] hmmm, nearly there. --- code/game/atom_defense.dm | 4 +- code/game/machinery/droneDispenser.dm | 2 +- code/game/turfs/turf_integrity.dm | 60 ++------------------------- 3 files changed, 7 insertions(+), 59 deletions(-) diff --git a/code/game/atom_defense.dm b/code/game/atom_defense.dm index a48518ee580d8..8cdc14598879f 100644 --- a/code/game/atom_defense.dm +++ b/code/game/atom_defense.dm @@ -8,7 +8,7 @@ CRASH("[src] taking damage while having <= 0 integrity") if(sound_effect) play_attack_sound(damage_amount, damage_type, damage_flag) - if((resistance_flags & INDESTRUCTIBLE) || integrity <= 0) + if((resistance_flags & INDESTRUCTIBLE)) return damage_amount = run_atom_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration) if(damage_amount < DAMAGE_PRECISION) @@ -70,6 +70,8 @@ return 0 var/armor_protection = 0 if(damage_flag) + //if (!armor_generated) + // generate_armor() armor_protection = armor?.getRating(damage_flag) if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor. armor_protection = clamp(armor_protection - armour_penetration, min(armor_protection, 0), 100) diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index 43d7f02426aba..b28f12dc17ee3 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -232,7 +232,7 @@ else return ..() -/obj/machinery/drone_dispenser/atom_break(damage_flag) +/obj/machinery/droneDispenser/atom_break(damage_flag) . = ..() if(!.) return diff --git a/code/game/turfs/turf_integrity.dm b/code/game/turfs/turf_integrity.dm index b828bd60f71c0..834be777c1755 100644 --- a/code/game/turfs/turf_integrity.dm +++ b/code/game/turfs/turf_integrity.dm @@ -9,16 +9,14 @@ var/can_hit = TRUE /// Has armour been generated yet? var/armor_generated - /// The armour of the turf. Capable of being null for optimisation purposes - var/datum/armor/armor /// The integrity that the turf starts at, defaulting to max_integrity var/integrity /// The maximum integrity that the turf has - var/max_integrity = 450 + max_integrity = 450 /// INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF - var/resistance_flags = NONE + resistance_flags = NONE /// If damage is less than this value for melee attacks, it will deal 0 damage - var/damage_deflection = 5 + damage_deflection = 5 /turf/examine(mob/user) . = ..() @@ -56,53 +54,6 @@ else armor = armour_val -/turf/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) - if(sound_effect) - play_attack_sound(damage_amount, damage_type, damage_flag) - if((resistance_flags & INDESTRUCTIBLE) || integrity <= 0) - return - damage_amount = run_atom_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration) - if(damage_amount < DAMAGE_PRECISION) - return - . = damage_amount - var/old_integ = integrity - integrity = old_integ - damage_amount - - //DESTROYING SECOND - if(integrity <= 0) - turf_destruction(damage_flag, -integrity) - else - after_damage(damage_amount, damage_type, damage_flag) - -//returns the damage value of the attack after processing the obj's various armor protections -/turf/proc/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0) - if(damage_flag == MELEE && damage_amount < damage_deflection) - return 0 - switch(damage_type) - if(BRUTE) - if(BURN) - else - return 0 - var/armor_protection = 0 - if(damage_flag) - if (!armor_generated) - generate_armor() - armor_protection = armor?.getRating(damage_flag) - if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor. - armor_protection = clamp(armor_protection - armour_penetration, min(armor_protection, 0), 100) - return round(damage_amount * (100 - armor_protection)*0.01, DAMAGE_PRECISION) - -//the sound played when the obj is damaged. -/turf/proc/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) - switch(damage_type) - if(BRUTE) - if(damage_amount) - playsound(src, 'sound/weapons/smash.ogg', 50, 1) - else - playsound(src, 'sound/weapons/tap.ogg', 50, 1) - if(BURN) - playsound(src, 'sound/items/welder.ogg', 100, 1) - /turf/proc/after_damage(damage_amount, damage_type, damage_flag) return @@ -270,11 +221,6 @@ return take_damage(400, BRUTE, MELEE, 0, get_dir(src, B)) -/turf/proc/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0) //used by attack_alien, attack_animal, and attack_slime - user.do_attack_animation(src) - user.changeNext_move(CLICK_CD_MELEE) - return take_damage(damage_amount, damage_type, damage_flag, sound_effect, get_dir(src, user), armor_penetration) - /turf/attack_alien(mob/living/carbon/alien/humanoid/user) if (!can_hit) return ..() From 9a36400d160b068d436a12ba28f619b8b8547948 Mon Sep 17 00:00:00 2001 From: RKz Date: Sun, 4 Aug 2024 22:31:11 -0400 Subject: [PATCH 06/19] Revert "hmmm, nearly there." This reverts commit 70bc9817b60b7ee39a2ba7ca8fa8a711359604c7. --- code/game/atom_defense.dm | 4 +- code/game/machinery/droneDispenser.dm | 2 +- code/game/turfs/turf_integrity.dm | 60 +++++++++++++++++++++++++-- 3 files changed, 59 insertions(+), 7 deletions(-) diff --git a/code/game/atom_defense.dm b/code/game/atom_defense.dm index 8cdc14598879f..a48518ee580d8 100644 --- a/code/game/atom_defense.dm +++ b/code/game/atom_defense.dm @@ -8,7 +8,7 @@ CRASH("[src] taking damage while having <= 0 integrity") if(sound_effect) play_attack_sound(damage_amount, damage_type, damage_flag) - if((resistance_flags & INDESTRUCTIBLE)) + if((resistance_flags & INDESTRUCTIBLE) || integrity <= 0) return damage_amount = run_atom_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration) if(damage_amount < DAMAGE_PRECISION) @@ -70,8 +70,6 @@ return 0 var/armor_protection = 0 if(damage_flag) - //if (!armor_generated) - // generate_armor() armor_protection = armor?.getRating(damage_flag) if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor. armor_protection = clamp(armor_protection - armour_penetration, min(armor_protection, 0), 100) diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index b28f12dc17ee3..43d7f02426aba 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -232,7 +232,7 @@ else return ..() -/obj/machinery/droneDispenser/atom_break(damage_flag) +/obj/machinery/drone_dispenser/atom_break(damage_flag) . = ..() if(!.) return diff --git a/code/game/turfs/turf_integrity.dm b/code/game/turfs/turf_integrity.dm index 834be777c1755..b828bd60f71c0 100644 --- a/code/game/turfs/turf_integrity.dm +++ b/code/game/turfs/turf_integrity.dm @@ -9,14 +9,16 @@ var/can_hit = TRUE /// Has armour been generated yet? var/armor_generated + /// The armour of the turf. Capable of being null for optimisation purposes + var/datum/armor/armor /// The integrity that the turf starts at, defaulting to max_integrity var/integrity /// The maximum integrity that the turf has - max_integrity = 450 + var/max_integrity = 450 /// INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF - resistance_flags = NONE + var/resistance_flags = NONE /// If damage is less than this value for melee attacks, it will deal 0 damage - damage_deflection = 5 + var/damage_deflection = 5 /turf/examine(mob/user) . = ..() @@ -54,6 +56,53 @@ else armor = armour_val +/turf/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) + if(sound_effect) + play_attack_sound(damage_amount, damage_type, damage_flag) + if((resistance_flags & INDESTRUCTIBLE) || integrity <= 0) + return + damage_amount = run_atom_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration) + if(damage_amount < DAMAGE_PRECISION) + return + . = damage_amount + var/old_integ = integrity + integrity = old_integ - damage_amount + + //DESTROYING SECOND + if(integrity <= 0) + turf_destruction(damage_flag, -integrity) + else + after_damage(damage_amount, damage_type, damage_flag) + +//returns the damage value of the attack after processing the obj's various armor protections +/turf/proc/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0) + if(damage_flag == MELEE && damage_amount < damage_deflection) + return 0 + switch(damage_type) + if(BRUTE) + if(BURN) + else + return 0 + var/armor_protection = 0 + if(damage_flag) + if (!armor_generated) + generate_armor() + armor_protection = armor?.getRating(damage_flag) + if(armor_protection) //Only apply weak-against-armor/hollowpoint effects if there actually IS armor. + armor_protection = clamp(armor_protection - armour_penetration, min(armor_protection, 0), 100) + return round(damage_amount * (100 - armor_protection)*0.01, DAMAGE_PRECISION) + +//the sound played when the obj is damaged. +/turf/proc/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + if(damage_amount) + playsound(src, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(src, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + playsound(src, 'sound/items/welder.ogg', 100, 1) + /turf/proc/after_damage(damage_amount, damage_type, damage_flag) return @@ -221,6 +270,11 @@ return take_damage(400, BRUTE, MELEE, 0, get_dir(src, B)) +/turf/proc/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0) //used by attack_alien, attack_animal, and attack_slime + user.do_attack_animation(src) + user.changeNext_move(CLICK_CD_MELEE) + return take_damage(damage_amount, damage_type, damage_flag, sound_effect, get_dir(src, user), armor_penetration) + /turf/attack_alien(mob/living/carbon/alien/humanoid/user) if (!can_hit) return ..() From c954fb9712d7bfb7e82d41458bae984dc41e41ba Mon Sep 17 00:00:00 2001 From: RKz Date: Sun, 4 Aug 2024 23:14:36 -0400 Subject: [PATCH 07/19] better --- code/game/atom_defense.dm | 2 +- code/game/machinery/droneDispenser.dm | 2 +- code/game/turfs/turf_integrity.dm | 32 ++++++++------------------- 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/code/game/atom_defense.dm b/code/game/atom_defense.dm index a48518ee580d8..c51f88f08b7f6 100644 --- a/code/game/atom_defense.dm +++ b/code/game/atom_defense.dm @@ -8,7 +8,7 @@ CRASH("[src] taking damage while having <= 0 integrity") if(sound_effect) play_attack_sound(damage_amount, damage_type, damage_flag) - if((resistance_flags & INDESTRUCTIBLE) || integrity <= 0) + if((resistance_flags & INDESTRUCTIBLE)) return damage_amount = run_atom_armor(damage_amount, damage_type, damage_flag, attack_dir, armour_penetration) if(damage_amount < DAMAGE_PRECISION) diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index 43d7f02426aba..b28f12dc17ee3 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -232,7 +232,7 @@ else return ..() -/obj/machinery/drone_dispenser/atom_break(damage_flag) +/obj/machinery/droneDispenser/atom_break(damage_flag) . = ..() if(!.) return diff --git a/code/game/turfs/turf_integrity.dm b/code/game/turfs/turf_integrity.dm index b828bd60f71c0..0fd9ebc5367eb 100644 --- a/code/game/turfs/turf_integrity.dm +++ b/code/game/turfs/turf_integrity.dm @@ -9,16 +9,14 @@ var/can_hit = TRUE /// Has armour been generated yet? var/armor_generated - /// The armour of the turf. Capable of being null for optimisation purposes - var/datum/armor/armor /// The integrity that the turf starts at, defaulting to max_integrity var/integrity /// The maximum integrity that the turf has - var/max_integrity = 450 + max_integrity = 450 /// INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF - var/resistance_flags = NONE + resistance_flags = NONE /// If damage is less than this value for melee attacks, it will deal 0 damage - var/damage_deflection = 5 + damage_deflection = 5 /turf/examine(mob/user) . = ..() @@ -56,7 +54,9 @@ else armor = armour_val -/turf/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) +/turf/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) + if(QDELETED(src)) + CRASH("[src] taking damage after deletion") if(sound_effect) play_attack_sound(damage_amount, damage_type, damage_flag) if((resistance_flags & INDESTRUCTIBLE) || integrity <= 0) @@ -75,7 +75,9 @@ after_damage(damage_amount, damage_type, damage_flag) //returns the damage value of the attack after processing the obj's various armor protections -/turf/proc/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0) +/turf/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0) + if(!uses_integrity) + CRASH("/atom/proc/run_atom_armor was called on [src] without being implemented as a type that uses integrity!") if(damage_flag == MELEE && damage_amount < damage_deflection) return 0 switch(damage_type) @@ -92,17 +94,6 @@ armor_protection = clamp(armor_protection - armour_penetration, min(armor_protection, 0), 100) return round(damage_amount * (100 - armor_protection)*0.01, DAMAGE_PRECISION) -//the sound played when the obj is damaged. -/turf/proc/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) - switch(damage_type) - if(BRUTE) - if(damage_amount) - playsound(src, 'sound/weapons/smash.ogg', 50, 1) - else - playsound(src, 'sound/weapons/tap.ogg', 50, 1) - if(BURN) - playsound(src, 'sound/items/welder.ogg', 100, 1) - /turf/proc/after_damage(damage_amount, damage_type, damage_flag) return @@ -270,11 +261,6 @@ return take_damage(400, BRUTE, MELEE, 0, get_dir(src, B)) -/turf/proc/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0) //used by attack_alien, attack_animal, and attack_slime - user.do_attack_animation(src) - user.changeNext_move(CLICK_CD_MELEE) - return take_damage(damage_amount, damage_type, damage_flag, sound_effect, get_dir(src, user), armor_penetration) - /turf/attack_alien(mob/living/carbon/alien/humanoid/user) if (!can_hit) return ..() From 1b74e4fa486a5091f41d3bcd63c65dd399eebe0f Mon Sep 17 00:00:00 2001 From: RKz Date: Sun, 4 Aug 2024 23:40:59 -0400 Subject: [PATCH 08/19] finished --- code/_onclick/item_attack.dm | 6 ------ code/game/turfs/turf_integrity.dm | 2 -- 2 files changed, 8 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 1638755bc4ae4..7e87e8cfd4558 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -14,12 +14,6 @@ return TRUE if(target.attackby(src,user, params)) return TRUE - if(QDELETED(src)) - stack_trace("An item got deleted while performing an item attack and did not stop melee_attack_chain.") - return TRUE - if(QDELETED(target)) - stack_trace("The target of an item attack got deleted and melee_attack_chain was not stopped.") - return TRUE return afterattack(target, user, TRUE, params) diff --git a/code/game/turfs/turf_integrity.dm b/code/game/turfs/turf_integrity.dm index 0fd9ebc5367eb..268efd05cdc6b 100644 --- a/code/game/turfs/turf_integrity.dm +++ b/code/game/turfs/turf_integrity.dm @@ -76,8 +76,6 @@ //returns the damage value of the attack after processing the obj's various armor protections /turf/run_atom_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0) - if(!uses_integrity) - CRASH("/atom/proc/run_atom_armor was called on [src] without being implemented as a type that uses integrity!") if(damage_flag == MELEE && damage_amount < damage_deflection) return 0 switch(damage_type) From e37d03761b525d0906301f320bd32b235456b5ea Mon Sep 17 00:00:00 2001 From: RKz Date: Wed, 14 Aug 2024 15:59:58 -0400 Subject: [PATCH 09/19] merge skew --- code/game/atoms.dm | 2 ++ code/modules/clothing/clothing.dm | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index b5af21fc30376..f542917c52942 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -136,6 +136,8 @@ var/integrity_failure = 0 //0 if we have no special broken behavior, otherwise is a percentage of at what point the atom breaks. 0.5 being 50% ///Damage under this value will be completely ignored var/damage_deflection = 0 + /// Maximum damage that can be taken in a single hit + var/max_hit_damage = null var/resistance_flags = NONE // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 1792ba3ff96f5..e838300c3f4e6 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -165,7 +165,7 @@ /// Set the clothing's integrity back to 100%, remove all damage to bodyparts, and generally fix it up /obj/item/clothing/proc/repair(mob/user, params) update_clothes_damaged_state(CLOTHING_PRISTINE) - obj_integrity = max_integrity + atom_integrity = max_integrity name = initial(name) // remove "tattered" or "shredded" if there's a prefix body_parts_covered = initial(body_parts_covered) slot_flags = initial(slot_flags) @@ -230,7 +230,7 @@ body_parts_covered &= ~i if(body_parts_covered == NONE) // if there are no more parts to break then the whole thing is kaput - obj_destruction((damage_type == BRUTE ? "melee" : "laser")) // melee/laser is good enough since this only procs from direct attacks anyway and not from fire/bombs + atom_destruction((damage_type == BRUTE ? MELEE : LASER)) // melee/laser is good enough since this only procs from direct attacks anyway and not from fire/bombs return switch(zones_disabled) @@ -609,7 +609,7 @@ BLIND // can't see anything /obj/item/clothing/proc/_spawn_shreds() new /obj/effect/decal/cleanable/shreds(get_turf(src), name) -/obj/item/clothing/obj_destruction(damage_flag) +/obj/item/clothing/atom_destruction(damage_flag) if(damage_flag == BOMB) //so the shred survives potential turf change from the explosion. addtimer(CALLBACK(src, PROC_REF(_spawn_shreds)), 1) From 6ac12f808f7a59a468cfdc88837adf625d255409 Mon Sep 17 00:00:00 2001 From: RKz Date: Thu, 29 Aug 2024 17:52:36 -0400 Subject: [PATCH 10/19] merge skew --- code/game/objects/structures/grille.dm | 8 ++++---- code/modules/antagonists/clock_cult/clockwork_turfs.dm | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 4e3b02af11886..efae1fb5ea217 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -281,8 +281,8 @@ . = ..() if(!broken && !(flags_1 & NODECONSTRUCT_1)) icon_state = "brokengrille" - density = FALSE - obj_integrity = 20 + set_density(FALSE) + atom_integrity = 20 broken = TRUE rods_amount = 1 rods_broken = FALSE @@ -296,8 +296,8 @@ /obj/structure/grille/proc/repair_grille() if(broken) icon_state = "grille" - density = TRUE - obj_integrity = max_integrity + set_density(TRUE) + atom_integrity = max_integrity broken = FALSE rods_amount = 2 rods_broken = TRUE diff --git a/code/modules/antagonists/clock_cult/clockwork_turfs.dm b/code/modules/antagonists/clock_cult/clockwork_turfs.dm index 1022944a2c86c..524edc7d62331 100644 --- a/code/modules/antagonists/clock_cult/clockwork_turfs.dm +++ b/code/modules/antagonists/clock_cult/clockwork_turfs.dm @@ -496,12 +496,12 @@ /obj/structure/grille/ratvar/ratvar_act() return -/obj/structure/grille/ratvar/obj_break() +/obj/structure/grille/ratvar/atom_break() . = ..() if(!broken && !(flags_1 & NODECONSTRUCT_1)) icon_state = "brokenratvargrille" - density = FALSE - obj_integrity = 20 + set_density(FALSE) + atom_integrity = 20 broken = TRUE rods_amount = 1 rods_broken = FALSE @@ -515,8 +515,8 @@ /obj/structure/grille/ratvar/repair_grille() if(broken) icon_state = "ratvargrille" - density = TRUE - obj_integrity = max_integrity + set_density(TRUE) + atom_integrity = max_integrity broken = FALSE rods_amount = 2 rods_broken = TRUE From f37b82831d3ea4977a8e94ae137a9f521cf557ad Mon Sep 17 00:00:00 2001 From: RKz Date: Sun, 8 Sep 2024 19:10:35 -0400 Subject: [PATCH 11/19] search&replace --- _maps/map_files/BoxStation/BoxStation.dmm | 4 ++-- _maps/map_files/EchoStation/EchoStation.dmm | 4 ++-- _maps/map_files/FlandStation/FlandStation.dmm | 12 ++++++------ _maps/map_files/KiloStation/KiloStation.dmm | 8 ++++---- _maps/map_files/MetaStation/MetaStation.dmm | 8 ++++---- _maps/map_files/RadStation/RadStation.dmm | 2 +- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 62d532a7d9ebd..31d06c42bbefe 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -23584,7 +23584,7 @@ dir = 4; icon_state = "rightsecure"; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = 4; req_access_txt = "16" }, @@ -33876,7 +33876,7 @@ dir = 8; icon_state = "leftsecure"; name = "Tertiary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = -3; req_access_txt = "16" }, diff --git a/_maps/map_files/EchoStation/EchoStation.dmm b/_maps/map_files/EchoStation/EchoStation.dmm index 838f461d953a8..e0649e4d583a6 100644 --- a/_maps/map_files/EchoStation/EchoStation.dmm +++ b/_maps/map_files/EchoStation/EchoStation.dmm @@ -1047,7 +1047,7 @@ dir = 4; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ @@ -41369,7 +41369,7 @@ dir = 8; icon_state = "leftsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ diff --git a/_maps/map_files/FlandStation/FlandStation.dmm b/_maps/map_files/FlandStation/FlandStation.dmm index 0de0b73ac4ee4..53c2eac4589d5 100644 --- a/_maps/map_files/FlandStation/FlandStation.dmm +++ b/_maps/map_files/FlandStation/FlandStation.dmm @@ -23241,7 +23241,7 @@ dir = 8; icon_state = "rightsecure"; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /turf/open/floor/circuit/red, @@ -24082,7 +24082,7 @@ dir = 4; icon_state = "right"; name = "Secure Creature Pen Shield Holder"; - obj_integrity = 300 + atom_integrity = 300 }, /obj/structure/window/reinforced{ dir = 1 @@ -24783,7 +24783,7 @@ dir = 1; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ @@ -25613,7 +25613,7 @@ dir = 4; icon_state = "leftsecure"; name = "Secure Creature Pen Shield Holder"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "47" }, /obj/structure/sign/warning/electricshock{ @@ -28199,7 +28199,7 @@ base_state = "rightsecure"; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /turf/open/floor/engine, @@ -32237,7 +32237,7 @@ dir = 8; icon_state = "rightsecure"; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /turf/open/floor/circuit/red, diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 13fb62cb7b1bd..551a56d079aed 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -18462,7 +18462,7 @@ dir = 8; icon_state = "leftsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ @@ -18555,7 +18555,7 @@ dir = 4; icon_state = "rightsecure"; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = 4; req_access_txt = "16" }, @@ -18609,7 +18609,7 @@ dir = 8; icon_state = "leftsecure"; name = "Tertiary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = -3; req_access_txt = "16" }, @@ -19020,7 +19020,7 @@ dir = 4; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index f98a7ca81881d..d5c30ba518478 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -7014,7 +7014,7 @@ dir = 4; icon_state = "rightsecure"; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = 4; req_access_txt = "16" }, @@ -7046,7 +7046,7 @@ dir = 8; icon_state = "leftsecure"; name = "Tertiary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = -3; req_access_txt = "16" }, @@ -43018,7 +43018,7 @@ dir = 4; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/camera/directional/north{ @@ -77601,7 +77601,7 @@ dir = 8; icon_state = "leftsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/newscaster{ diff --git a/_maps/map_files/RadStation/RadStation.dmm b/_maps/map_files/RadStation/RadStation.dmm index db7f836c18a06..94b992af0811d 100644 --- a/_maps/map_files/RadStation/RadStation.dmm +++ b/_maps/map_files/RadStation/RadStation.dmm @@ -9377,7 +9377,7 @@ base_state = "leftsecure"; icon_state = "leftsecure"; name = "Tertiary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /turf/open/floor/engine/o2, From df0425e39f7059a2936fcd4ceb9248793d2d4980 Mon Sep 17 00:00:00 2001 From: RKz Date: Sun, 29 Sep 2024 11:30:16 -0400 Subject: [PATCH 12/19] ifndef --- code/_onclick/item_attack.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index c3e07830c6c21..740db596ebfe6 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -14,6 +14,14 @@ return TRUE if(target.attackby(src,user, params)) return TRUE + #ifndef TESTING + if(QDELETED(src)) + stack_trace("An item got deleted while performing an item attack and did not stop melee_attack_chain.") + return TRUE + if(QDELETED(target)) + stack_trace("The target of an item attack got deleted and melee_attack_chain was not stopped.") + return TRUE + #endif return afterattack(target, user, TRUE, params) From 309ee5538b94de9c1c89686f9a445956a17f4279 Mon Sep 17 00:00:00 2001 From: RKz Date: Thu, 3 Oct 2024 14:19:30 -0400 Subject: [PATCH 13/19] reviews --- _maps/map_files/EchoStation/EchoStation.dmm | 3 +-- _maps/map_files/MetaStation/MetaStation.dmm | 3 +-- html/changelog.html | 2 +- html/changelogs/.all_changelog.yml | 2 +- tools/UpdatePaths/Scripts/11290_atomintegrity.txt | 1 + 5 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 tools/UpdatePaths/Scripts/11290_atomintegrity.txt diff --git a/_maps/map_files/EchoStation/EchoStation.dmm b/_maps/map_files/EchoStation/EchoStation.dmm index e5b2ec54d91e2..220fcacf3ba66 100644 --- a/_maps/map_files/EchoStation/EchoStation.dmm +++ b/_maps/map_files/EchoStation/EchoStation.dmm @@ -26040,7 +26040,6 @@ }, /obj/merge_conflict_marker{ name = "---Merge Conflict Marker---"; - desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." }, /obj/machinery/door/window{ @@ -26048,7 +26047,7 @@ dir = 4; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 1d9f2770c519f..5f1773057d892 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -22969,7 +22969,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /obj/merge_conflict_marker{ name = "---Merge Conflict Marker---"; - desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." }, /obj/machinery/door/window{ @@ -22977,7 +22976,7 @@ dir = 4; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/camera/directional/north{ diff --git a/html/changelog.html b/html/changelog.html index d7c900a6d0648..337e666d3be47 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -900,7 +900,7 @@

    rkz, nightred, Couls. RaveRadbury, Timberpoes, WarlockD, Arca

rkz, ninjanomnom updated:

    -
  • limits calls or changes to atom_integrity var, all must be made through getters or setters
  • +
  • limits calls or changes to obj_integrity var, all must be made through getters or setters

rkz, rohesie, tralezab, dwasint updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index ec41b5a395c7b..c669896a175d1 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -43731,7 +43731,7 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. GAIN heat when hugging a colder person, instead of the other way around. Hugs were harmful! rkz, ninjanomnom: - - code_imp: limits calls or changes to atom_integrity var, all must be made through + - code_imp: limits calls or changes to obj_integrity var, all must be made through getters or setters rkz, rohesie, tralezab, dwasint: - rscadd: You can now see if a limb is disabled through checkhealth (HUD, healthanalyzer, diff --git a/tools/UpdatePaths/Scripts/11290_atomintegrity.txt b/tools/UpdatePaths/Scripts/11290_atomintegrity.txt new file mode 100644 index 0000000000000..410eb13eae40f --- /dev/null +++ b/tools/UpdatePaths/Scripts/11290_atomintegrity.txt @@ -0,0 +1 @@ +/obj/@SUBTYPES{obj_integrity=@ANY} : /obj/@SUBTYPES{atom_integrity=@OLD:obj_integrity} From a58964ffef7a3c5395d099224fee0292782083c0 Mon Sep 17 00:00:00 2001 From: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Date: Thu, 17 Oct 2024 13:17:14 -0400 Subject: [PATCH 14/19] REALBASELINE --- _maps/map_files/FlandStation/FlandStation.dmm | 2127 ++++++++--------- 1 file changed, 1039 insertions(+), 1088 deletions(-) diff --git a/_maps/map_files/FlandStation/FlandStation.dmm b/_maps/map_files/FlandStation/FlandStation.dmm index bcb23fc58ffd7..0247ebe9e24ab 100644 --- a/_maps/map_files/FlandStation/FlandStation.dmm +++ b/_maps/map_files/FlandStation/FlandStation.dmm @@ -347,6 +347,16 @@ /obj/item/toy/plush/moth/punished, /turf/open/floor/plating/asteroid/airless, /area/asteroid/nearstation) +"aeS" = ( +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/starboard/fore) "aeV" = ( /obj/structure/toilet{ pixel_y = 8 @@ -767,6 +777,20 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/maintenance/port/central) +"akG" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/airlock/security{ + name = "Security Post - Cargo"; + req_one_access_txt = "1;57" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/techmaint, +/area/security/checkpoint/supply) "akH" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green{ @@ -887,22 +911,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron, /area/hallway/primary/central) -"amD" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/window{ - base_state = "rightsecure"; - dir = 1; - icon_state = "rightsecure"; - name = "Primary AI Core Access"; - atom_integrity = 300; - req_access_txt = "16" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "aicoredoor"; - name = "AI Core Shutter" - }, -/turf/open/floor/engine, -/area/ai_monitored/turret_protected/ai) "amH" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -3494,6 +3502,21 @@ /obj/effect/turf_decal/stripes/closeup, /turf/open/floor/iron/techmaint, /area/maintenance/port/central) +"aPJ" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/airlock/research{ + name = "Toxins Launch Site"; + req_one_access_txt = "8;47" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/science) "aPK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable/yellow{ @@ -3610,6 +3633,17 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/engine_room) +"aQM" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/stripes/closeup, +/turf/open/floor/iron/techmaint, +/area/maintenance/starboard/aft) "aQS" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -4451,24 +4485,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron, /area/hallway/primary/fore) -"bab" = ( -/obj/machinery/door/window/brigdoor{ - dir = 4; - name = "Secure Creature Pen"; - req_access_txt = "55" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/open/floor/iron/techmaint, -/area/science/xenobiology) "bai" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -5343,6 +5359,24 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"bmB" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xeno1"; + name = "Creature Cell #1" + }, +/obj/machinery/door/window/brigdoor{ + dir = 8; + name = "Creature Pen"; + req_access_txt = "55" + }, +/turf/open/floor/iron/ridged/steel, +/area/science/xenobiology) "bmD" = ( /obj/machinery/camera/directional/north{ c_tag = "Science - Experimentation Lab"; @@ -5454,23 +5488,6 @@ dir = 1 }, /area/hallway/primary/fore) -"bnF" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/layer_manifold{ - dir = 4 - }, -/obj/machinery/door/airlock/atmos/glass{ - name = "Distribution Loop"; - req_access_txt = "24" - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/engine) "bnT" = ( /obj/structure/table/wood, /obj/item/flashlight/seclite, @@ -5765,19 +5782,6 @@ }, /turf/open/floor/iron/dark, /area/gateway) -"brU" = ( -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Apothecary Maintenance"; - req_access_txt = "33" - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/medical) "brX" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -6878,24 +6882,6 @@ }, /turf/open/floor/iron/dark, /area/security/brig) -"bKR" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/machinery/door/poddoor/preopen{ - id = "xeno4"; - name = "Creature Cell #4" - }, -/obj/machinery/door/window/brigdoor{ - dir = 4; - name = "Creature Pen"; - req_access_txt = "55" - }, -/turf/open/floor/iron/ridged/steel, -/area/science/xenobiology) "bLo" = ( /obj/structure/sink/kitchen{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; @@ -7500,6 +7486,25 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/solars/port) +"bTk" = ( +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/airlock/research{ + name = "Xenobiology Lab"; + req_access_txt = "55" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/science) "bTl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -8625,18 +8630,6 @@ }, /turf/open/floor/iron/sepia, /area/science/shuttle) -"cjH" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/chair/fancy/bench/right{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/security/brig) "cjS" = ( /obj/effect/turf_decal/delivery, /obj/machinery/disposal/bin, @@ -8814,6 +8807,26 @@ }, /turf/open/floor/vault, /area/engine/engine_room) +"cnq" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Toxins Storage Maintenance"; + req_one_access_txt = "8;24" + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/aft) "cny" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -9417,6 +9430,25 @@ }, /turf/open/floor/prison, /area/security/prison) +"cvm" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Cargo Maintenance"; + req_one_access_txt = "31;48;47;12" + }, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/aft/secondary) "cvq" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -11940,6 +11972,26 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) +"dcW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + name = "Exploration Preparation Room"; + req_access_txt = "49" + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/science) "dcZ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/closeup, @@ -13669,13 +13721,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hydroponics/garden) -"dCX" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ - dir = 8 - }, -/obj/structure/lattice/catwalk/over, -/turf/open/space/basic, -/area/engine/engine_room) "dDf" = ( /obj/effect/turf_decal/guideline/guideline_out/yellow, /obj/effect/turf_decal/guideline/guideline_in/blue, @@ -14656,18 +14701,6 @@ /obj/structure/rack, /turf/open/floor/plating, /area/maintenance/solars/port/aft) -"dOo" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/airlock/research{ - name = "Toxins Storage"; - req_access_txt = "8" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/science) "dOq" = ( /obj/effect/turf_decal/delivery, /obj/machinery/door/airlock{ @@ -18238,25 +18271,6 @@ /obj/structure/cable/yellow, /turf/open/floor/iron/techmaint, /area/security/checkpoint/auxiliary) -"eMg" = ( -/obj/structure/table/reinforced, -/obj/item/folder/red, -/obj/item/pen, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/brigdoor/southright{ - dir = 1; - name = "Security Desk"; - req_access_txt = "1" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/tile/red/fourcorners/contrasted, -/turf/open/floor/iron/techmaint, -/area/security/checkpoint) "eMi" = ( /obj/machinery/computer/security/mining, /turf/open/floor/iron/dark, @@ -18579,17 +18593,6 @@ /obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/bridge) -"ePP" = ( -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/starboard/fore) "ePR" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 @@ -19515,16 +19518,6 @@ }, /turf/open/floor/plating, /area/security/checkpoint/medical) -"eYS" = ( -/obj/machinery/door/airlock/research/glass{ - name = "Xenobiology Kill Room"; - req_access_txt = "55" - }, -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/turf/open/floor/iron/ridged/steel, -/area/science/xenobiology) "eYX" = ( /obj/machinery/camera/directional/west{ c_tag = "Science - Research Director's Office"; @@ -19653,38 +19646,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"faS" = ( -/obj/effect/landmark/start/ai/secondary, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/item/radio/intercom{ - freerange = 1; - name = "Common Channel"; - pixel_x = 28 - }, -/obj/item/radio/intercom{ - freerange = 1; - listening = 0; - name = "Custom Channel"; - pixel_y = 24 - }, -/obj/item/radio/intercom{ - freerange = 1; - frequency = 1447; - name = "Private Channel"; - pixel_y = -28 - }, -/obj/machinery/door/window{ - base_state = "rightsecure"; - dir = 8; - icon_state = "rightsecure"; - name = "Secondary AI Core Access"; - atom_integrity = 300; - req_access_txt = "16" - }, -/turf/open/floor/circuit/red, -/area/ai_monitored/turret_protected/ai) "faV" = ( /obj/structure/girder, /obj/effect/decal/cleanable/dirt, @@ -20058,31 +20019,6 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/heads/chief) -"fgJ" = ( -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/door/airlock/security{ - name = "Security Post - Medical"; - req_one_access_txt = "1;40" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/iron/grid/steel, -/area/security/checkpoint/medical) "fgT" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -20127,22 +20063,6 @@ }, /turf/open/floor/wood, /area/bridge/meeting_room/council) -"fhl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/window/brigdoor{ - dir = 8; - id = "arrdoor"; - name = "Arrival Cell"; - req_access_txt = "1" - }, -/obj/effect/turf_decal/tile/red/fourcorners/contrasted, -/turf/open/floor/iron/techmaint, -/area/security/checkpoint) "fho" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -22168,6 +22088,27 @@ }, /turf/open/floor/iron, /area/security/checkpoint/medical) +"fGF" = ( +/obj/machinery/door/airlock/research{ + name = "Experimentation Lab"; + req_access_txt = "7" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple/fourcorners/contrasted, +/turf/open/floor/iron/techmaint, +/area/science/explab) "fGN" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 @@ -22486,20 +22427,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/maintenance/department/medical) -"fKw" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/maintenance{ - name = "Atmospherics Maintenance"; - req_access_txt = "24" - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/aft) "fKP" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -22949,20 +22876,6 @@ "fPv" = ( /turf/open/floor/wood, /area/library/lounge) -"fPy" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "Gravity Generator Room"; - req_access_txt = "19;23"; - security_level = 6 - }, -/obj/effect/turf_decal/stripes/closeup, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/engine) "fPz" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -23259,6 +23172,38 @@ }, /turf/open/floor/iron/grid/steel, /area/medical/virology) +"fTU" = ( +/obj/effect/landmark/start/ai/secondary, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/item/radio/intercom{ + freerange = 1; + name = "Common Channel"; + pixel_x = 28 + }, +/obj/item/radio/intercom{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_y = 24 + }, +/obj/item/radio/intercom{ + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_y = -28 + }, +/obj/machinery/door/window{ + base_state = "rightsecure"; + dir = 8; + icon_state = "rightsecure"; + name = "Secondary AI Core Access"; + obj_integrity = 300; + req_access_txt = "16" + }, +/turf/open/floor/circuit/red, +/area/ai_monitored/turret_protected/ai) "fTX" = ( /turf/open/floor/iron/white, /area/medical/medbay/central) @@ -24087,6 +24032,30 @@ }, /turf/open/floor/iron/dark, /area/engine/engine_smes) +"geN" = ( +/obj/machinery/shieldwallgen/xenobiologyaccess, +/obj/machinery/door/window{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Secure Creature Pen Shield Holder"; + obj_integrity = 300; + req_one_access_txt = "55" + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/sign/warning/electricshock{ + pixel_x = -32 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/science/xenobiology) "gfc" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/chair/fancy/comfy{ @@ -24761,6 +24730,22 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/hop) +"gnN" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/window{ + base_state = "rightsecure"; + dir = 1; + icon_state = "rightsecure"; + name = "Primary AI Core Access"; + obj_integrity = 300; + req_access_txt = "16" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "aicoredoor"; + name = "AI Core Shutter" + }, +/turf/open/floor/engine, +/area/ai_monitored/turret_protected/ai) "gnX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -24963,17 +24948,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark, /area/storage/tech) -"gqM" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/stripes/closeup, -/turf/open/floor/iron/techmaint, -/area/maintenance/starboard/aft) "gqR" = ( /obj/effect/mapping_helpers/airlock/unres, /obj/machinery/door/airlock/medical/glass{ @@ -25586,6 +25560,28 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/library/lounge) +"gzm" = ( +/obj/machinery/shieldwallgen/xenobiologyaccess, +/obj/machinery/door/window{ + base_state = "leftsecure"; + dir = 4; + icon_state = "leftsecure"; + name = "Secure Creature Pen Shield Holder"; + obj_integrity = 300; + req_access_txt = "55" + }, +/obj/structure/sign/warning/electricshock{ + pixel_x = -32 + }, +/obj/structure/window/reinforced, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/science/xenobiology) "gzo" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -26145,27 +26141,6 @@ }, /turf/open/floor/iron/dark, /area/chapel/main) -"gFx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/atmos{ - name = "Turbine Generator Access"; - req_one_access_txt = "24;10" - }, -/obj/machinery/atmospherics/pipe/simple/dark/visible, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/engine) "gFZ" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box, @@ -26641,17 +26616,6 @@ /obj/effect/turf_decal/siding/thinplating_new/dark, /turf/open/floor/iron/tech, /area/bridge) -"gME" = ( -/obj/machinery/computer/secure_data{ - dir = 8 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/computer/security/telescreen/station{ - dir = 8; - pixel_x = 32 - }, -/turf/open/floor/carpet/green, -/area/security/detectives_office) "gMG" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -26707,6 +26671,23 @@ }, /turf/open/floor/iron/techmaint, /area/science/mixing) +"gNb" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/obj/machinery/door/airlock/atmos/glass{ + name = "Distribution Loop"; + req_access_txt = "24" + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/engine) "gNg" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -26959,6 +26940,27 @@ /obj/effect/turf_decal/numbers/two_nine, /turf/open/floor/iron/grid/steel, /area/medical/virology) +"gQn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/atmos{ + name = "Turbine Generator Access"; + req_one_access_txt = "24;10" + }, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/engine) "gQx" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -28136,6 +28138,21 @@ }, /turf/open/floor/iron/grid/steel, /area/science/xenobiology) +"hih" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "aicoredoor"; + name = "AI Core Shutter" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/window{ + base_state = "rightsecure"; + icon_state = "rightsecure"; + name = "Primary AI Core Access"; + obj_integrity = 300; + req_access_txt = "16" + }, +/turf/open/floor/engine, +/area/ai_monitored/turret_protected/ai) "hij" = ( /obj/machinery/airalarm/directional/south{ pixel_y = -22 @@ -28270,6 +28287,19 @@ }, /turf/open/floor/grass/no_border, /area/ai_monitored/security/armory) +"hiX" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/airlock/medical/glass{ + name = "Apothecary"; + req_access_txt = "33" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/grid, +/area/medical/apothecary) "hjc" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/flora/ausbushes/fullgrass, @@ -28409,19 +28439,6 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/bar) -"hkZ" = ( -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/airlock/research{ - name = "Xenobiology Lab"; - req_access_txt = "55" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron/techmaint, -/area/science/xenobiology) "hlk" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -29163,18 +29180,6 @@ }, /turf/open/floor/iron/sepia, /area/engine/break_room) -"hwA" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/airlock/research{ - name = "Research Division Access"; - req_access_txt = "47" - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/science) "hwL" = ( /obj/structure/closet/radiation, /obj/item/clothing/glasses/meson, @@ -29889,21 +29894,6 @@ /obj/machinery/camera/directional/east, /turf/open/floor/iron/dark, /area/security/prison/shielded) -"hHs" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/obj/machinery/door/poddoor/preopen{ - id = "xenosecure"; - name = "Secure Pen Shutters" - }, -/obj/machinery/door/window/brigdoor{ - dir = 4; - name = "Secure Creature Pen"; - req_access_txt = "55" - }, -/turf/open/floor/engine, -/area/science/xenobiology) "hHX" = ( /obj/structure/disposaloutlet{ dir = 4 @@ -32149,6 +32139,38 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/hydroponics) +"iki" = ( +/obj/effect/landmark/start/ai/secondary, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/item/radio/intercom{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_y = 24 + }, +/obj/item/radio/intercom{ + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_y = -28 + }, +/obj/item/radio/intercom{ + freerange = 1; + name = "Common Channel"; + pixel_x = 28 + }, +/obj/machinery/door/window{ + base_state = "rightsecure"; + dir = 8; + icon_state = "rightsecure"; + name = "Secondary AI Core Access"; + obj_integrity = 300; + req_access_txt = "16" + }, +/turf/open/floor/circuit/red, +/area/ai_monitored/turret_protected/ai) "ikr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable/yellow{ @@ -32672,16 +32694,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"iri" = ( -/obj/machinery/computer/communications{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen/station{ - dir = 1; - pixel_y = -32 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads/captain) "irn" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/effect/turf_decal/tile/green/opposingcorners{ @@ -32999,6 +33011,16 @@ }, /turf/open/floor/iron/techmaint, /area/crew_quarters/heads/captain) +"iuM" = ( +/obj/machinery/door/airlock/research/glass{ + name = "Xenobiology Kill Room"; + req_access_txt = "55" + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/turf/open/floor/iron/ridged/steel, +/area/science/xenobiology) "iuP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -33687,29 +33709,6 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/lobby) -"iDn" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/starboard/aft) "iDq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/orange/visible, @@ -34608,6 +34607,17 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/sepia, /area/engine/engineering) +"iOM" = ( +/obj/machinery/computer/secure_data{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/computer/security/telescreen/station{ + dir = 8; + pixel_x = 32 + }, +/turf/open/floor/carpet/green, +/area/security/detectives_office) "iON" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 @@ -34656,6 +34666,21 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron, /area/hallway/primary/port) +"iPt" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/chair/fancy/bench/left{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/security/brig) "iPv" = ( /turf/open/floor/plating{ broken = 1 @@ -34747,6 +34772,13 @@ }, /turf/open/floor/iron/dark, /area/vacant_room/office) +"iQp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/landmark/start/scientist, +/turf/open/floor/iron/white, +/area/science/xenobiology) "iQv" = ( /obj/structure/railing, /obj/structure/closet/emcloset, @@ -35155,6 +35187,20 @@ /obj/structure/chair/stool/bar/directional/west, /turf/open/floor/wood, /area/crew_quarters/bar/atrium) +"iVD" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/airlock/research{ + name = "Toxins Launch Site"; + req_one_access_txt = "8;47" + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/science) "iWb" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 @@ -35314,20 +35360,6 @@ /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, /area/maintenance/disposal) -"iYJ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/door/airlock/research{ - name = "Toxins Launch Site"; - req_one_access_txt = "8;47" - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/science) "iYP" = ( /turf/closed/wall, /area/teleporter) @@ -35795,23 +35827,25 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor/iron_smooth, /area/maintenance/disposal/incinerator) -"jfM" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Atmospherics Maintenance"; - req_access_txt = "24" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +"jfA" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 +/obj/item/stack/sheet/iron/fifty, +/obj/item/clothing/glasses/welding, +/obj/item/wrench, +/obj/item/crowbar, +/obj/machinery/requests_console{ + department = "Research Lab"; + name = "Research RC"; + pixel_x = 32; + receive_ore_updates = 1 }, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/engine) +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/mineral/copper/five, +/turf/open/floor/iron/dark, +/area/science/lab) "jfR" = ( /obj/structure/cable/yellow{ icon_state = "0-8" @@ -36951,25 +36985,6 @@ }, /turf/open/floor/plating, /area/bridge) -"jwW" = ( -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance{ - name = "science Access"; - req_access_txt = "47" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/aft) "jxg" = ( /obj/machinery/status_display/ai{ pixel_x = -32 @@ -38249,6 +38264,21 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/chapel/main) +"jOt" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Post - Research Division"; + req_one_access_txt = "1;30" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup, +/obj/effect/turf_decal/tile/red/fourcorners/contrasted, +/turf/open/floor/iron/techmaint, +/area/security/checkpoint/science/research) "jOv" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -38397,25 +38427,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/aft) -"jPy" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Cargo Maintenance"; - req_one_access_txt = "31;48;47;12" - }, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/aft/secondary) "jPA" = ( /obj/effect/turf_decal/guideline/guideline_in/red{ dir = 8 @@ -39100,6 +39111,26 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/secondary/exit/departure_lounge) +"jYj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance{ + name = "Turbine Maintenance"; + req_one_access_txt = "10;24" + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/aft) "jYk" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -39233,20 +39264,6 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron/cafeteria, /area/crew_quarters/kitchen) -"jZi" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/airlock/security{ - name = "Security Post - Cargo"; - req_one_access_txt = "1;57" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/iron/techmaint, -/area/security/checkpoint/supply) "jZt" = ( /obj/machinery/advanced_airlock_controller{ pixel_y = 26 @@ -39310,6 +39327,21 @@ }, /turf/open/floor/iron/techmaint, /area/vacant_room/commissary/commissaryFood) +"kar" = ( +/obj/machinery/door/window/brigdoor{ + dir = 1; + id = "medcell"; + name = "Medical Cell"; + req_access_txt = "1;40" + }, +/obj/effect/turf_decal/stripes/closeup, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/iron/techmaint, +/area/security/checkpoint/medical) "kaA" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -39748,6 +39780,16 @@ /obj/structure/window/reinforced, /turf/open/floor/carpet/royalblack, /area/bridge/showroom/corporate) +"kfR" = ( +/obj/machinery/computer/communications{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/station{ + dir = 1; + pixel_y = -32 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) "kfX" = ( /obj/effect/turf_decal/tile/blue/opposingcorners, /obj/item/radio/intercom{ @@ -41531,6 +41573,20 @@ }, /turf/open/floor/iron, /area/hallway/primary/port) +"kDQ" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + name = "Atmospherics Maintenance"; + req_access_txt = "24" + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/aft) "kEc" = ( /obj/effect/turf_decal/guideline/guideline_out_arrow_con/blue{ dir = 6 @@ -41611,13 +41667,6 @@ }, /turf/open/floor/iron/grid/steel, /area/engine/storage_shared) -"kFx" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/white, -/area/science/xenobiology) "kFG" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -42139,6 +42188,31 @@ broken = 1 }, /area/maintenance/starboard/fore) +"kNe" = ( +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/door/airlock/security{ + name = "Security Post - Medical"; + req_one_access_txt = "1;40" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/iron/grid/steel, +/area/security/checkpoint/medical) "kNh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/rnd/production/techfab/department/service, @@ -42324,19 +42398,6 @@ /obj/effect/turf_decal/siding/wideplating/dark, /turf/open/floor/iron/dark, /area/chapel/main) -"kPN" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/airlock/medical/glass{ - name = "Apothecary"; - req_access_txt = "33" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/grid, -/area/medical/apothecary) "kPS" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, @@ -42396,6 +42457,20 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/engine/atmos) +"kRi" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/security{ + name = "Security Post - Engineering"; + req_one_access_txt = "1;56" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/stripes/closeup, +/turf/open/floor/iron/techmaint, +/area/security/checkpoint/engineering) "kRs" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/decal/cleanable/cobweb, @@ -42617,6 +42692,22 @@ /obj/item/book/manual/wiki/sopengineering, /turf/open/floor/iron/dark, /area/engine/storage_shared) +"kUm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/door/window/brigdoor{ + dir = 8; + id = "arrdoor"; + name = "Arrival Cell"; + req_access_txt = "1" + }, +/obj/effect/turf_decal/tile/red/fourcorners/contrasted, +/turf/open/floor/iron/techmaint, +/area/security/checkpoint) "kUn" = ( /obj/effect/decal/cleanable/dirt, /obj/item/clothing/suit/hazardvest{ @@ -44789,21 +44880,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/science/robotics/lab) -"lqU" = ( -/obj/machinery/door/window/brigdoor{ - dir = 1; - id = "medcell"; - name = "Medical Cell"; - req_access_txt = "1;40" - }, -/obj/effect/turf_decal/stripes/closeup, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/iron/techmaint, -/area/security/checkpoint/medical) "lrd" = ( /obj/effect/turf_decal/trimline/blue/line{ dir = 4 @@ -46118,21 +46194,6 @@ "lIP" = ( /turf/closed/wall, /area/quartermaster/exploration_prep) -"lIV" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Security Post - Research Division"; - req_one_access_txt = "1;30" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup, -/obj/effect/turf_decal/tile/red/fourcorners/contrasted, -/turf/open/floor/iron/techmaint, -/area/security/checkpoint/science/research) "lIW" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -49131,6 +49192,22 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"mBz" = ( +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Atmospherics Maintenance"; + req_access_txt = "24" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/aft) "mBP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 @@ -49268,16 +49345,6 @@ /obj/effect/turf_decal/trimline/red/line, /turf/open/floor/prison, /area/security/prison) -"mCN" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Security Checkpoint"; - req_access_txt = "1" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup, -/obj/effect/turf_decal/tile/red/fourcorners/contrasted, -/turf/open/floor/iron/techmaint, -/area/security/checkpoint) "mCR" = ( /obj/effect/landmark/start/botanist, /obj/effect/turf_decal/bot, @@ -49548,23 +49615,6 @@ }, /turf/open/floor/wood, /area/lawoffice) -"mFU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/highsecurity{ - name = "Emergency Access"; - req_one_access_txt = "24;10" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/engine) "mFV" = ( /obj/machinery/status_display/evac{ pixel_y = 32 @@ -51211,16 +51261,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/port) -"nea" = ( -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/starboard/fore) "neg" = ( /obj/structure/chair/foldable{ dir = 8 @@ -51352,6 +51392,21 @@ }, /turf/open/floor/iron/white, /area/science/xenobiology) +"nfL" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/chair/fancy/bench/right{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/security/brig) "nfM" = ( /turf/closed/wall/rust, /area/maintenance/disposal) @@ -51556,6 +51611,20 @@ }, /turf/open/floor/iron/sepia, /area/construction/mining/aux_base) +"niv" = ( +/obj/machinery/door/airlock/highsecurity{ + name = "Gravity Generator Room"; + req_access_txt = "19;23"; + security_level = 6 + }, +/obj/effect/turf_decal/stripes/closeup, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/engine) "nix" = ( /obj/machinery/telecomms/bus/preset_one, /obj/effect/turf_decal/stripes/end{ @@ -51862,6 +51931,18 @@ }, /turf/open/floor/prison, /area/security/prison) +"nnw" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/airlock/research{ + name = "Toxins Storage"; + req_access_txt = "8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/science) "nnx" = ( /turf/open/space/basic, /area/space) @@ -54739,6 +54820,23 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/iron/techmaint, /area/maintenance/port) +"obF" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/airlock/research{ + name = "Xenobiology"; + req_access_txt = "55" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/science) "obK" = ( /obj/machinery/atmospherics/pipe/layer_manifold/visible, /turf/closed/wall/r_wall, @@ -56162,26 +56260,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/grid/steel, /area/science/research) -"ovD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/maintenance{ - name = "Turbine Maintenance"; - req_one_access_txt = "10;24" - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/aft) "ovP" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/closeup, @@ -56357,25 +56435,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/medical) -"oxW" = ( -/obj/structure/table, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/item/stack/sheet/iron/fifty, -/obj/item/clothing/glasses/welding, -/obj/item/wrench, -/obj/item/crowbar, -/obj/machinery/requests_console{ - department = "Research Lab"; - name = "Research RC"; - pixel_x = 32; - receive_ore_updates = 1 - }, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/mineral/copper/five, -/turf/open/floor/iron/dark, -/area/science/lab) "oya" = ( /obj/machinery/power/solar{ id = "portsolar"; @@ -56634,24 +56693,6 @@ }, /turf/open/floor/carpet/orange, /area/quartermaster/qm) -"oCE" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/machinery/door/poddoor/preopen{ - id = "xeno2"; - name = "Creature Cell #2" - }, -/obj/machinery/door/window/brigdoor{ - dir = 4; - name = "Creature Pen"; - req_access_txt = "55" - }, -/turf/open/floor/iron/ridged/steel, -/area/science/xenobiology) "oCG" = ( /turf/open/floor/iron/dark, /area/medical/surgery) @@ -57474,22 +57515,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/fore) -"oOQ" = ( -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Atmospherics Maintenance"; - req_access_txt = "24" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/aft) "oOR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -57643,6 +57668,19 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/crew_quarters/heads/hop) +"oRv" = ( +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/door/airlock/maintenance{ + name = "Apothecary Maintenance"; + req_access_txt = "33" + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/medical) "oRx" = ( /obj/structure/filingcabinet/chestdrawer, /obj/machinery/light_switch{ @@ -57979,21 +58017,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"oWb" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/airlock/research{ - name = "Toxins Launch Site"; - req_one_access_txt = "8;47" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/science) "oWi" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -58246,6 +58269,25 @@ dir = 8 }, /area/crew_quarters/fitness/recreation) +"oZY" = ( +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/airlock/maintenance{ + name = "science Access"; + req_access_txt = "47" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/aft) "pam" = ( /obj/effect/turf_decal/guideline/guideline_in/red{ dir = 8 @@ -58852,6 +58894,16 @@ }, /turf/open/floor/iron/dark, /area/engine/engine_room) +"phX" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Office Maintenance"; + req_access_txt = "32" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/closeup, +/turf/open/floor/iron/techmaint, +/area/maintenance/starboard/central) "pik" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -60229,6 +60281,17 @@ }, /turf/open/floor/iron/dark, /area/library/lounge) +"pCz" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/window/brigdoor{ + dir = 8; + name = "Creature Pen"; + req_access_txt = "55" + }, +/turf/open/floor/iron/techmaint, +/area/science/xenobiology) "pCN" = ( /obj/effect/spawner/room/fivexfour, /turf/open/floor/plating, @@ -60286,20 +60349,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron, /area/hallway/primary/aft) -"pDY" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/security{ - name = "Security Post - Engineering"; - req_one_access_txt = "1;56" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/stripes/closeup, -/turf/open/floor/iron/techmaint, -/area/security/checkpoint/engineering) "pEk" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box, @@ -65190,52 +65239,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/wood, /area/medical/exam_room) -"qQf" = ( -/obj/machinery/shieldwallgen/xenobiologyaccess, -/obj/machinery/door/window{ - base_state = "leftsecure"; - dir = 4; - icon_state = "leftsecure"; - name = "Secure Creature Pen Shield Holder"; - atom_integrity = 300; - req_access_txt = "47" - }, -/obj/structure/sign/warning/electricshock{ - pixel_x = -32 - }, -/obj/structure/window/reinforced, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/merge_conflict_marker{ - name = "---Merge Conflict Marker---"; - - desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." - }, -/obj/machinery/shieldwallgen/xenobiologyaccess, -/obj/machinery/door/window{ - base_state = "leftsecure"; - dir = 4; - icon_state = "leftsecure"; - name = "Secure Creature Pen Shield Holder"; - obj_integrity = 300; - req_access_txt = "55" - }, -/obj/structure/sign/warning/electricshock{ - pixel_x = -32 - }, -/obj/structure/window/reinforced, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating, -/area/science/xenobiology) "qQg" = ( /obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, @@ -67387,6 +67390,20 @@ }, /turf/open/floor/noslip/dark, /area/science/lobby) +"ruE" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Law Maintenance"; + req_access_txt = "38; 63; 42" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup, +/turf/open/floor/iron/techmaint, +/area/maintenance/starboard/central) "ruK" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/components/binary/pump{ @@ -67952,36 +67969,6 @@ }, /turf/open/floor/plating/airless, /area/solar/starboard/fore) -"rBp" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/chair/fancy/bench/left{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/security/brig) -"rBr" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/chair/fancy/bench/right{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/security/brig) "rBw" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -69149,6 +69136,18 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron/grid/steel, /area/science/xenobiology) +"rOQ" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/chair/fancy/bench/right{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/security/brig) "rOR" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -69850,6 +69849,17 @@ dir = 8 }, /area/hallway/primary/fore) +"rWY" = ( +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/starboard/fore) "rXc" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 @@ -70286,6 +70296,19 @@ }, /turf/open/floor/iron/cafeteria, /area/crew_quarters/kitchen) +"scV" = ( +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/airlock/research{ + name = "Xenobiology Lab"; + req_access_txt = "55" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron/techmaint, +/area/science/xenobiology) "sda" = ( /obj/structure/chair/fancy/sofa/old/right{ dir = 1 @@ -71583,38 +71606,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/iron/techmaint, /area/maintenance/port) -"suA" = ( -/obj/effect/landmark/start/ai/secondary, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/item/radio/intercom{ - freerange = 1; - listening = 0; - name = "Custom Channel"; - pixel_y = 24 - }, -/obj/item/radio/intercom{ - freerange = 1; - frequency = 1447; - name = "Private Channel"; - pixel_y = -28 - }, -/obj/item/radio/intercom{ - freerange = 1; - name = "Common Channel"; - pixel_x = 28 - }, -/obj/machinery/door/window{ - base_state = "rightsecure"; - dir = 8; - icon_state = "rightsecure"; - name = "Secondary AI Core Access"; - atom_integrity = 300; - req_access_txt = "16" - }, -/turf/open/floor/circuit/red, -/area/ai_monitored/turret_protected/ai) "suE" = ( /obj/machinery/light/small{ dir = 1 @@ -72158,6 +72149,24 @@ /obj/item/clothing/glasses/meson, /turf/open/floor/iron/dark, /area/storage/tech) +"sBz" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xeno4"; + name = "Creature Cell #4" + }, +/obj/machinery/door/window/brigdoor{ + dir = 4; + name = "Creature Pen"; + req_access_txt = "55" + }, +/turf/open/floor/iron/ridged/steel, +/area/science/xenobiology) "sBB" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/item/kirbyplants/random, @@ -73467,6 +73476,24 @@ /obj/effect/turf_decal/stripes/closeup, /turf/open/floor/iron/techmaint, /area/maintenance/department/security/brig) +"sTr" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "xeno2"; + name = "Creature Cell #2" + }, +/obj/machinery/door/window/brigdoor{ + dir = 4; + name = "Creature Pen"; + req_access_txt = "55" + }, +/turf/open/floor/iron/ridged/steel, +/area/science/xenobiology) "sTv" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -73696,21 +73723,6 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/open/floor/catwalk_floor, /area/engine/engine_room) -"sVR" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "aicoredoor"; - name = "AI Core Shutter" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/window{ - base_state = "rightsecure"; - icon_state = "rightsecure"; - name = "Primary AI Core Access"; - atom_integrity = 300; - req_access_txt = "16" - }, -/turf/open/floor/engine, -/area/ai_monitored/turret_protected/ai) "sVS" = ( /obj/structure/table/reinforced, /obj/effect/spawner/lootdrop/donkpockets, @@ -74689,6 +74701,13 @@ }, /turf/open/floor/iron/cafeteria, /area/vacant_room/commissary/commissaryFood) +"tjq" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ + dir = 8 + }, +/obj/structure/lattice/catwalk/over, +/turf/open/space/basic, +/area/engine/engine_room) "tjv" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -74713,24 +74732,6 @@ }, /turf/open/floor/iron/dark, /area/medical/storage) -"tjB" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/door/poddoor/preopen{ - id = "xeno1"; - name = "Creature Cell #1" - }, -/obj/machinery/door/window/brigdoor{ - dir = 8; - name = "Creature Pen"; - req_access_txt = "55" - }, -/turf/open/floor/iron/ridged/steel, -/area/science/xenobiology) "tjF" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance/two, @@ -74853,26 +74854,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/maintenance/port/aft) -"tlm" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Toxins Storage Maintenance"; - req_one_access_txt = "8;24" - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/aft) "tlp" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -76085,25 +76066,6 @@ }, /turf/open/floor/iron, /area/engine/atmos) -"tBR" = ( -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/airlock/research{ - name = "Xenobiology Lab"; - req_access_txt = "55" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/science) "tCb" = ( /turf/open/floor/plating{ burnt = 1 @@ -76117,6 +76079,21 @@ }, /turf/open/floor/cult, /area/library) +"tCk" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + id = "xenosecure"; + name = "Secure Pen Shutters" + }, +/obj/machinery/door/window/brigdoor{ + dir = 4; + name = "Secure Creature Pen"; + req_access_txt = "55" + }, +/turf/open/floor/engine, +/area/science/xenobiology) "tCm" = ( /obj/machinery/airalarm/directional/north{ pixel_y = 22 @@ -76180,6 +76157,24 @@ }, /turf/open/floor/carpet, /area/crew_quarters/bar/atrium) +"tCO" = ( +/obj/machinery/door/window/brigdoor{ + dir = 4; + name = "Secure Creature Pen"; + req_access_txt = "55" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/iron/techmaint, +/area/science/xenobiology) "tCP" = ( /obj/structure/chair/fancy/sofa/old/left{ dir = 1 @@ -77708,6 +77703,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/vacant_room/commissary/commissary2) +"tXc" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/effect/landmark/start/security_officer, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/chair/fancy/bench/left{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/security/brig) "tXg" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 @@ -78851,24 +78859,6 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/department/medical) -"umP" = ( -/obj/machinery/door/poddoor/preopen{ - id = "rdxeno"; - name = "Xenobiology Containment Door" - }, -/obj/machinery/door/airlock/research{ - name = "Science Shuttle Dock"; - req_access_txt = "47" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/closeup, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/science) "umU" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -79902,6 +79892,16 @@ }, /turf/open/floor/iron/grid/steel, /area/crew_quarters/dorms) +"uzz" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Checkpoint"; + req_access_txt = "1" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup, +/obj/effect/turf_decal/tile/red/fourcorners/contrasted, +/turf/open/floor/iron/techmaint, +/area/security/checkpoint) "uzC" = ( /obj/structure/cable/yellow, /obj/effect/spawner/structure/window/reinforced, @@ -81607,16 +81607,6 @@ }, /turf/open/floor/iron/techmaint, /area/science/mixing) -"uUX" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Office Maintenance"; - req_access_txt = "32" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/closeup, -/turf/open/floor/iron/techmaint, -/area/maintenance/starboard/central) "uVb" = ( /obj/structure/noticeboard{ pixel_y = 26 @@ -81715,6 +81705,25 @@ }, /turf/open/floor/grass, /area/hydroponics/garden) +"uWK" = ( +/obj/structure/table/reinforced, +/obj/item/folder/red, +/obj/item/pen, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/brigdoor/southright{ + dir = 1; + name = "Security Desk"; + req_access_txt = "1" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/tile/red/fourcorners/contrasted, +/turf/open/floor/iron/techmaint, +/area/security/checkpoint) "uWO" = ( /obj/effect/turf_decal/guideline/guideline_in/bar{ dir = 1 @@ -81833,6 +81842,29 @@ }, /turf/open/floor/vault, /area/engine/engine_room) +"uYs" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/starboard/aft) "uYt" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -82560,19 +82592,6 @@ /obj/structure/window/reinforced, /turf/open/floor/iron/dark, /area/teleporter) -"vgx" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/landmark/start/security_officer, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/chair/fancy/bench/left{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/security/brig) "vgC" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted, /turf/open/floor/iron/dark, @@ -84919,6 +84938,18 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/office) +"vFx" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/airlock/research{ + name = "Research Division Access"; + req_access_txt = "47" + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/science) "vFA" = ( /obj/structure/rack, /obj/item/electronics/apc, @@ -85428,6 +85459,23 @@ }, /turf/open/floor/vault, /area/engine/engine_room) +"vMI" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Atmospherics Maintenance"; + req_access_txt = "24" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/engine) "vMJ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -85460,6 +85508,17 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/sepia, /area/science/shuttle) +"vMR" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/window/brigdoor{ + dir = 4; + name = "Creature Pen"; + req_access_txt = "55" + }, +/turf/open/floor/iron/techmaint, +/area/science/xenobiology) "vMV" = ( /obj/structure/cable{ icon_state = "2-4" @@ -85785,21 +85844,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/fore) -"vPD" = ( -/obj/machinery/holopad{ - pixel_y = -16 - }, -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/science/xenobiology) "vPE" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -87067,27 +87111,6 @@ }, /turf/open/floor/iron/grid/steel, /area/medical/apothecary) -"wfT" = ( -/obj/machinery/door/airlock/research{ - name = "Experimentation Lab"; - req_access_txt = "7" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple/fourcorners/contrasted, -/turf/open/floor/iron/techmaint, -/area/science/explab) "wgl" = ( /obj/machinery/light, /turf/open/floor/iron, @@ -87323,6 +87346,23 @@ }, /turf/open/floor/engine, /area/engine/engine_room) +"wjC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/highsecurity{ + name = "Emergency Access"; + req_one_access_txt = "24;10" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/engine) "wjP" = ( /obj/structure/chair/foldable, /obj/effect/turf_decal/tile/purple, @@ -88022,23 +88062,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor, /area/maintenance/department/science) -"wst" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/door/airlock/research{ - name = "Xenobiology"; - req_access_txt = "55" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/science) "wsD" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -88485,55 +88508,6 @@ "wyg" = ( /turf/open/floor/plating, /area/maintenance/department/security/brig) -"wyj" = ( -/obj/machinery/shieldwallgen/xenobiologyaccess, -/obj/machinery/door/window{ - base_state = "right"; - dir = 4; - icon_state = "right"; - name = "Secure Creature Pen Shield Holder"; - atom_integrity = 300 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/sign/warning/electricshock{ - pixel_x = -32 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/merge_conflict_marker{ - name = "---Merge Conflict Marker---"; - - desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." - }, -/obj/machinery/shieldwallgen/xenobiologyaccess, -/obj/machinery/door/window{ - base_state = "right"; - dir = 4; - icon_state = "right"; - name = "Secure Creature Pen Shield Holder"; - obj_integrity = 300; - req_one_access_txt = "55" - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/sign/warning/electricshock{ - pixel_x = -32 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plating, -/area/science/xenobiology) "wyr" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -89566,6 +89540,24 @@ /obj/effect/spawner/room/threexfive, /turf/open/floor/plating, /area/maintenance/port/aft) +"wMr" = ( +/obj/machinery/door/poddoor/preopen{ + id = "rdxeno"; + name = "Xenobiology Containment Door" + }, +/obj/machinery/door/airlock/research{ + name = "Science Shuttle Dock"; + req_access_txt = "47" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/closeup, +/turf/open/floor/iron/techmaint, +/area/maintenance/department/science) "wMs" = ( /obj/machinery/airalarm/directional/north{ pixel_y = 22 @@ -92700,26 +92692,6 @@ }, /turf/open/floor/engine/light, /area/science/explab) -"xtb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Exploration Preparation Room"; - req_access_txt = "49" - }, -/turf/open/floor/iron/techmaint, -/area/maintenance/department/science) "xtd" = ( /obj/machinery/light{ dir = 1 @@ -94286,6 +94258,21 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/carpet/red, /area/library) +"xIK" = ( +/obj/machinery/holopad{ + pixel_y = -16 + }, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/science/xenobiology) "xIL" = ( /obj/structure/cable{ icon_state = "1-2" @@ -94850,17 +94837,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/port) -"xMX" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/window/brigdoor{ - dir = 4; - name = "Creature Pen"; - req_access_txt = "55" - }, -/turf/open/floor/iron/techmaint, -/area/science/xenobiology) "xMY" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -95196,17 +95172,6 @@ }, /turf/open/floor/iron, /area/maintenance/disposal) -"xQA" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/window/brigdoor{ - dir = 8; - name = "Creature Pen"; - req_access_txt = "55" - }, -/turf/open/floor/iron/techmaint, -/area/science/xenobiology) "xQF" = ( /turf/closed/wall, /area/engine/engine_room) @@ -95239,20 +95204,6 @@ }, /turf/open/floor/iron/techmaint, /area/science/mixing/chamber) -"xRa" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Law Maintenance"; - req_access_txt = "38; 63; 42" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup, -/turf/open/floor/iron/techmaint, -/area/maintenance/starboard/central) "xRi" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plating, @@ -117977,7 +117928,7 @@ xub uWO qxA tSL -mCN +uzz ccu kkw jvq @@ -118493,7 +118444,7 @@ qxA tQu qIc qIc -fhl +kUm qIc qIc vcy @@ -119005,7 +118956,7 @@ gIg kEc pEk tSL -eMg +uWK xgd fJx bRS @@ -124922,7 +124873,7 @@ aMN uHo kXM tiM -jZi +akG dCJ vFG dcT @@ -126916,7 +126867,7 @@ bqA gjg vHr bqA -fgJ +kNe bAU sme cEi @@ -126986,7 +126937,7 @@ sNI wMZ qfG qfG -jPy +cvm qfG qfG vzm @@ -127428,7 +127379,7 @@ bdg vHr wmy irb -lqU +kar fGE voQ sTY @@ -127790,7 +127741,7 @@ xxf ofr vNy eRv -umP +wMr xhb lGL mFm @@ -127950,7 +127901,7 @@ eVs cEi sjs sWe -kPN +hiX eMO jiS jiS @@ -128299,7 +128250,7 @@ lIP lIP cwd lIP -xtb +dcW lIP lIP lIP @@ -128469,7 +128420,7 @@ vhU vhU vhU vhU -brU +oRv vhU vhU gsN @@ -128502,7 +128453,7 @@ wyg hUT iSJ xgk -gME +iOM njq irV hhg @@ -129775,11 +129726,11 @@ vln tIL uja qpD -vgx -rBr +tXc +nfL lZt -rBp -cjH +iPt +rOQ iyh jeQ lYr @@ -130618,7 +130569,7 @@ siW siW nvh xVD -hHs +tCk xVD ofQ siW @@ -130872,24 +130823,24 @@ eNp ozc oYg dlC -wyj +geN rxv lis -bab +tCO lis ide -qQf +gzm siW qTo -tjB +bmB awe xDt xVZ -tjB +bmB lYK xDt oMm -tjB +bmB crG siW nnx @@ -131123,7 +131074,7 @@ eUi iHz aZB dBq -kFx +iQp swU rcR sYZ @@ -131138,15 +131089,15 @@ vIp vfS siW kgC -xMX +vMR oPf xDt cTH -xMX +vMR oPf xDt aRg -xMX +vMR oPf siW ozc @@ -131380,7 +131331,7 @@ eUi xEK imz xbT -vPD +xIK fgD rcR ozc @@ -131631,16 +131582,16 @@ piT piT eHE llI -hwA +vFx qkA shb cIz -tBR +bTk rJy pJN fzQ kid -hkZ +scV uWB kdJ aHz @@ -132166,15 +132117,15 @@ vKA nBl siW qBI -xQA +pCz nhp xDt uUz -xQA +pCz nhp xDt agM -xQA +pCz nhp siW ozc @@ -132412,26 +132363,26 @@ siW siW siW siW -wst +obF siW siW neP iFO neP siW -eYS +iuM krD siW aIo -oCE +sTr xKR xDt aFf -bKR +sBz rWr xDt eHT -bKR +sBz dtO siW nnx @@ -132900,7 +132851,7 @@ xpH sFH iTC qBT -lIV +jOt rBE vHb bmp @@ -133440,7 +133391,7 @@ eUi xni fRu fRu -iYJ +iVD fRu siW siW @@ -133681,7 +133632,7 @@ nou vEX kcS kcS -wfT +fGF kcS wUG wUG @@ -134209,7 +134160,7 @@ wUG ktD ooT xeF -oWb +aPJ mAi sTZ sTZ @@ -136231,7 +136182,7 @@ cfY wdn sQK gEs -oxW +jfA cUd rlX gad @@ -136261,7 +136212,7 @@ buo kEW dHn cNZ -dOo +nnw xEK ero xFN @@ -136497,7 +136448,7 @@ gEs gEs gEs wgM -jwW +oZY wgM xSV rHf @@ -138052,7 +138003,7 @@ vKD lGs oqW oqW -tlm +cnq oqW oqW dXD @@ -138295,7 +138246,7 @@ shs wZQ fAj qaR -fKw +kDQ nlV pPk ydT @@ -138823,7 +138774,7 @@ uUs cSY uUs uUs -oOQ +mBz uUs uUs uUs @@ -139532,7 +139483,7 @@ pOX qsw qHV qTa -xRa +ruE vIG wtj rMT @@ -140340,7 +140291,7 @@ xQx umv wPr bDQ -pDY +kRi vii qvj vii @@ -141583,7 +141534,7 @@ nFM lUC jPs oCO -uUX +phX wgE lmq ncT @@ -143113,7 +143064,7 @@ pQA gkD gXs jwC -iri +kfR yiC mqi wSQ @@ -144930,7 +144881,7 @@ aTX qdw rcu vYa -ePP +rWY rDx uZJ uZJ @@ -144975,7 +144926,7 @@ wWM wWM wWM uUs -bnF +gNb uUs uUs uUs @@ -146013,7 +145964,7 @@ cKm cKm cKm uUs -jfM +vMI uUs cKm cKm @@ -146786,7 +146737,7 @@ ghF ruz uGV tJY -gFx +gQn gVe jfy ian @@ -146794,7 +146745,7 @@ ian ian ian ian -ovD +jYj gJY gJY ocd @@ -147504,7 +147455,7 @@ joS msg cIi cIi -nea +aeS cIi cIi cIi @@ -148569,7 +148520,7 @@ qVQ oBJ wWM nBY -mFU +wjC rHd dFb enG @@ -150116,7 +150067,7 @@ syr rXm nBz sbA -fPy +niv yjd hwL xtu @@ -151126,9 +151077,9 @@ xUO xUO xUO wWM -dCX -dCX -dCX +tjq +tjq +tjq vPv ssu vPv @@ -152405,7 +152356,7 @@ cGp cGp cGp xPI -iDn +uYs xPI cGp gvp @@ -152671,7 +152622,7 @@ xPI cGp cGp mGs -gqM +aQM uPi ezR sIe @@ -153385,9 +153336,9 @@ flv gLC eYA bti -amD +gnN fLF -sVR +hih bti ifi rPA @@ -154668,13 +154619,13 @@ aYu aYu kOu kOu -faS +fTU kOu goB gQS hnr kOu -suA +iki kOu kOu aYu From bbdbf9d78b52f400e2ce5f1ad75d05aa70971cea Mon Sep 17 00:00:00 2001 From: RKz Date: Thu, 17 Oct 2024 13:18:29 -0400 Subject: [PATCH 15/19] convert fland --- _maps/map_files/FlandStation/FlandStation.dmm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/_maps/map_files/FlandStation/FlandStation.dmm b/_maps/map_files/FlandStation/FlandStation.dmm index 0247ebe9e24ab..b1148869dcea4 100644 --- a/_maps/map_files/FlandStation/FlandStation.dmm +++ b/_maps/map_files/FlandStation/FlandStation.dmm @@ -23199,7 +23199,7 @@ dir = 8; icon_state = "rightsecure"; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /turf/open/floor/circuit/red, @@ -24039,7 +24039,7 @@ dir = 4; icon_state = "right"; name = "Secure Creature Pen Shield Holder"; - obj_integrity = 300; + atom_integrity = 300; req_one_access_txt = "55" }, /obj/structure/window/reinforced{ @@ -24737,7 +24737,7 @@ dir = 1; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ @@ -25567,7 +25567,7 @@ dir = 4; icon_state = "leftsecure"; name = "Secure Creature Pen Shield Holder"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "55" }, /obj/structure/sign/warning/electricshock{ @@ -28148,7 +28148,7 @@ base_state = "rightsecure"; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /turf/open/floor/engine, @@ -32166,7 +32166,7 @@ dir = 8; icon_state = "rightsecure"; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /turf/open/floor/circuit/red, From 9a5b9da1fdef699f005cefe342262b2223756756 Mon Sep 17 00:00:00 2001 From: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Date: Thu, 17 Oct 2024 21:45:33 -0400 Subject: [PATCH 16/19] REALBASELINE --- _maps/map_files/EchoStation/EchoStation.dmm | 219 ++-- _maps/map_files/MetaStation/MetaStation.dmm | 1239 +++++++++---------- 2 files changed, 707 insertions(+), 751 deletions(-) diff --git a/_maps/map_files/EchoStation/EchoStation.dmm b/_maps/map_files/EchoStation/EchoStation.dmm index c24d038d4dd7d..8fd32c55f820a 100644 --- a/_maps/map_files/EchoStation/EchoStation.dmm +++ b/_maps/map_files/EchoStation/EchoStation.dmm @@ -8647,28 +8647,6 @@ }, /turf/open/floor/iron/white, /area/science/xenobiology) -"eeU" = ( -/obj/structure/closet/secure_closet/detective, -/obj/item/storage/box/evidence{ - pixel_y = 5 - }, -/obj/item/flashlight/seclite, -/obj/item/restraints/handcuffs, -/obj/item/taperecorder, -/obj/machinery/requests_console{ - department = "Detective's office"; - name = "Detective RC"; - pixel_y = 30 - }, -/obj/item/camera/detective, -/obj/machinery/camera/directional/north, -/obj/item/holosign_creator/security, -/obj/machinery/computer/security/telescreen/station{ - dir = 8; - pixel_x = 32 - }, -/turf/open/floor/wood, -/area/security/detectives_office) "efa" = ( /obj/structure/railing/corner{ dir = 4 @@ -10503,57 +10481,6 @@ }, /turf/open/floor/iron, /area/science/research) -"eYP" = ( -/obj/machinery/door/window{ - base_state = "rightsecure"; - dir = 4; - icon_state = "rightsecure"; - name = "Primary AI Core Access"; - atom_integrity = 300; - req_access_txt = "16" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "AI Core shutters"; - name = "AI Core Shutter" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/light_switch{ - pixel_x = 6; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/camera/autoname/directional/south{ - network = list("aiupload") - }, -/obj/merge_conflict_marker{ - name = "---Merge Conflict Marker---"; - desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." - }, -/obj/machinery/door/window{ - base_state = "rightsecure"; - dir = 4; - icon_state = "rightsecure"; - name = "Primary AI Core Access"; - atom_integrity = 300; - req_access_txt = "16" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "AI Core shutters"; - name = "AI Core Shutter" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/light_switch{ - pixel_x = 6; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/camera/directional/south, -/turf/open/floor/engine, -/area/ai_monitored/turret_protected/ai) "eYZ" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -15828,6 +15755,28 @@ /obj/structure/cable/yellow, /turf/open/floor/plating, /area/quartermaster/storage) +"hDU" = ( +/obj/structure/closet/secure_closet/detective, +/obj/item/storage/box/evidence{ + pixel_y = 5 + }, +/obj/item/flashlight/seclite, +/obj/item/restraints/handcuffs, +/obj/item/taperecorder, +/obj/machinery/requests_console{ + department = "Detective's office"; + name = "Detective RC"; + pixel_y = 30 + }, +/obj/item/camera/detective, +/obj/machinery/camera/directional/north, +/obj/item/holosign_creator/security, +/obj/machinery/computer/security/telescreen/station{ + dir = 8; + pixel_x = 32 + }, +/turf/open/floor/wood, +/area/security/detectives_office) "hDY" = ( /obj/effect/turf_decal/tile/purple/fourcorners/contrasted, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -25086,26 +25035,6 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) -"mqF" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/north{ - pixel_y = 24 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/vending/wallmed{ - pixel_x = -32 - }, -/obj/machinery/camera/directional/north, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer_2, -/turf/open/floor/iron/grid/steel, -/area/medical/medbay/central) "mqS" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 @@ -31755,6 +31684,26 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) +"pGC" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/north{ + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/vending/wallmed{ + pixel_x = -32 + }, +/obj/machinery/camera/directional/north, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/layer_2, +/turf/open/floor/iron/grid/steel, +/area/medical/medbay/central) "pHp" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -32579,6 +32528,30 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/heads/captain) +"qbo" = ( +/obj/machinery/door/window{ + base_state = "rightsecure"; + dir = 4; + icon_state = "rightsecure"; + name = "Primary AI Core Access"; + obj_integrity = 300; + req_access_txt = "16" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "AI Core shutters"; + name = "AI Core Shutter" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/light_switch{ + pixel_x = 6; + pixel_y = 24 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/camera/directional/south, +/turf/open/floor/engine, +/area/ai_monitored/turret_protected/ai) "qbw" = ( /obj/structure/lattice/catwalk/over, /obj/item/wirecutters{ @@ -41307,6 +41280,32 @@ }, /turf/open/floor/plating, /area/maintenance/department/chapel) +"uwJ" = ( +/obj/machinery/door/window{ + base_state = "leftsecure"; + dir = 8; + icon_state = "leftsecure"; + name = "Primary AI Core Access"; + obj_integrity = 300; + req_access_txt = "16" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "AI Core shutters"; + name = "AI Core Shutter" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/ai"; + icon_state = "control_stun"; + name = "AI Chamber turret control"; + pixel_x = -1; + pixel_y = 29 + }, +/turf/open/floor/engine, +/area/ai_monitored/turret_protected/ai) "uwN" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -43153,32 +43152,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/cargo) -"voq" = ( -/obj/machinery/door/window{ - base_state = "leftsecure"; - dir = 8; - icon_state = "leftsecure"; - name = "Primary AI Core Access"; - atom_integrity = 300; - req_access_txt = "16" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "AI Core shutters"; - name = "AI Core Shutter" - }, -/obj/effect/turf_decal/delivery, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/turretid{ - control_area = "/area/ai_monitored/turret_protected/ai"; - icon_state = "control_stun"; - name = "AI Chamber turret control"; - pixel_x = -1; - pixel_y = 29 - }, -/turf/open/floor/engine, -/area/ai_monitored/turret_protected/ai) "vou" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/disposalpipe/segment, @@ -125958,7 +125931,7 @@ rSE bDD fWF ttY -mqF +pGC sAD jLG xPe @@ -128036,7 +128009,7 @@ aoM pHI aoM oEl -eeU +hDU lii xlw oEl @@ -194571,7 +194544,7 @@ fdh hbs aEi aEi -voq +uwJ aEi ceR gMP @@ -195085,7 +195058,7 @@ fdh fdh aEi aEi -eYP +qbo aEi aYp fHo diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 4cb49fca18951..6efd704bfb060 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -6975,6 +6975,70 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/maintenance/disposal/incinerator) +"aZQ" = ( +/obj/effect/landmark/start/ai/secondary, +/obj/item/radio/intercom{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_x = -10; + pixel_y = 22 + }, +/obj/item/radio/intercom{ + freerange = 1; + name = "Common Channel"; + pixel_x = -27 + }, +/obj/item/radio/intercom{ + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_x = -10; + pixel_y = -25 + }, +/obj/machinery/door/window{ + base_state = "rightsecure"; + dir = 4; + icon_state = "rightsecure"; + name = "Secondary AI Core Access"; + obj_integrity = 300; + pixel_x = 4; + req_access_txt = "16" + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) +"aZY" = ( +/obj/effect/landmark/start/ai/secondary, +/obj/item/radio/intercom{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_x = 10; + pixel_y = 22 + }, +/obj/item/radio/intercom{ + freerange = 1; + name = "Common Channel"; + pixel_x = 27 + }, +/obj/item/radio/intercom{ + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_x = 10; + pixel_y = -25 + }, +/obj/machinery/door/window{ + base_state = "leftsecure"; + dir = 8; + icon_state = "leftsecure"; + name = "Tertiary AI Core Access"; + obj_integrity = 300; + pixel_x = -3; + req_access_txt = "16" + }, +/turf/open/floor/circuit/green, +/area/ai_monitored/turret_protected/ai) "aZZ" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -9298,6 +9362,25 @@ }, /turf/open/floor/iron/dark/textured, /area/ai_monitored/security/armory) +"boj" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/landmark/start/scientist, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/iron/dark, +/area/science/explab) "bok" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -13696,16 +13779,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) -"bQA" = ( -/obj/machinery/airalarm/mixingchamber{ - pixel_y = -22 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/trimline/purple/filled/line, -/turf/open/floor/iron/white, -/area/science/mixing/chamber) "bQI" = ( /obj/machinery/vending/wardrobe/chef_wardrobe, /turf/open/floor/iron/freezer, @@ -14273,21 +14346,6 @@ "bTn" = ( /turf/closed/wall, /area/maintenance/solars/port/aft) -"bTo" = ( -/obj/machinery/door/airlock/maintenance{ - req_one_access_txt = "12;47;29" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/aft/secondary) "bTp" = ( /obj/structure/sign/warning/electricshock, /turf/closed/wall, @@ -15135,6 +15193,29 @@ }, /turf/open/floor/prison, /area/security/prison) +"bYs" = ( +/obj/structure/table/reinforced, +/obj/item/pen, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor, +/obj/structure/desk_bell{ + pixel_x = -8 + }, +/obj/item/folder/white, +/obj/machinery/door/window/brigdoor{ + dir = 8; + id = "medcell"; + name = "Medical Cell"; + req_one_access_txt = "1;40" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/iron, +/area/security/checkpoint/medical) "bYw" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible{ dir = 9 @@ -17179,6 +17260,17 @@ }, /turf/open/floor/iron/white, /area/science/research) +"cqR" = ( +/obj/machinery/power/apc{ + areastring = "/area/science/explab"; + name = "Experimentation Lab APC"; + pixel_y = -24 + }, +/obj/structure/cable/yellow, +/obj/effect/turf_decal/trimline/purple/filled/line, +/obj/item/kirbyplants/random, +/turf/open/floor/iron/white, +/area/science/explab) "cqV" = ( /turf/open/floor/iron/white, /area/science/explab) @@ -18518,6 +18610,29 @@ name = "hyper-reinforced wall" }, /area/science/test_area) +"cDC" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/security/glass{ + name = "Security Post - Cargo"; + req_one_access_txt = "1;57" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/iron, +/area/security/checkpoint/supply) "cDL" = ( /turf/closed/wall/r_wall, /area/medical/virology) @@ -20618,33 +20733,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/maintenance/fore) -"dbz" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/machinery/door/airlock/security/glass{ - id_tag = "meddoor"; - name = "Medical Cell"; - req_one_access_txt = "1;40" - }, -/turf/open/floor/iron, -/area/security/checkpoint/medical) "dbE" = ( /obj/machinery/plantgenes{ pixel_y = 6 @@ -20706,16 +20794,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/hallway/primary/central) -"dcV" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/structure/sign/warning/nosmoking{ - pixel_y = 32 - }, -/obj/structure/closet/bombcloset, -/turf/open/floor/iron/white, -/area/science/explab) "ddb" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/disposalpipe/segment{ @@ -22532,27 +22610,6 @@ }, /turf/open/floor/iron/checker, /area/crew_quarters/kitchen) -"duW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Virology Maintenance"; - req_access_txt = "39" - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "quarantineshutters"; - name = "Isolation Shutters" - }, -/turf/open/floor/iron, -/area/maintenance/aft) "dvc" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/turf_decal/bot, @@ -22721,17 +22778,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/chapel/main) -"dxt" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/dark, -/area/science/explab) "dxu" = ( /obj/structure/chair{ pixel_y = -2 @@ -23320,19 +23366,6 @@ /obj/structure/chair/stool/directional/south, /turf/open/floor/iron, /area/crew_quarters/dorms) -"dIw" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 10 - }, -/obj/machinery/requests_console{ - pixel_x = -32 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/science/explab) "dIZ" = ( /obj/machinery/vending/tool, /obj/effect/turf_decal/delivery, @@ -23384,6 +23417,32 @@ }, /turf/open/floor/iron, /area/hallway/primary/aft) +"dKV" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "49;47;12" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-maint-passthrough" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) +"dKY" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark, +/area/science/explab) "dLb" = ( /obj/machinery/chem_dispenser/drinks/beer, /obj/structure/table/reinforced, @@ -23602,38 +23661,6 @@ /obj/machinery/camera/directional/south, /turf/open/space, /area/space/nearstation) -"dOn" = ( -/obj/effect/landmark/start/ai/secondary, -/obj/item/radio/intercom{ - freerange = 1; - listening = 0; - name = "Custom Channel"; - pixel_x = -10; - pixel_y = 22 - }, -/obj/item/radio/intercom{ - freerange = 1; - name = "Common Channel"; - pixel_x = -27 - }, -/obj/item/radio/intercom{ - freerange = 1; - frequency = 1447; - name = "Private Channel"; - pixel_x = -10; - pixel_y = -25 - }, -/obj/machinery/door/window{ - base_state = "rightsecure"; - dir = 4; - icon_state = "rightsecure"; - name = "Secondary AI Core Access"; - atom_integrity = 300; - pixel_x = 4; - req_access_txt = "16" - }, -/turf/open/floor/circuit/green, -/area/ai_monitored/turret_protected/ai) "dOr" = ( /obj/structure/table/reinforced, /obj/item/paper_bin{ @@ -24346,6 +24373,18 @@ }, /turf/open/floor/iron/cafeteria_red, /area/crew_quarters/bar) +"edQ" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red/anticorner{ + dir = 1 + }, +/obj/machinery/computer/security/telescreen/station{ + pixel_y = 32 + }, +/turf/open/floor/iron/dark/smooth_corner, +/area/hallway/secondary/exit/departure_lounge) "edS" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -28011,6 +28050,16 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) +"fBw" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 4 + }, +/obj/structure/closet/radiation, +/turf/open/floor/iron/white, +/area/science/explab) "fBI" = ( /obj/structure/window/reinforced{ dir = 4 @@ -28073,6 +28122,21 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/medical/chemistry) +"fCE" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Post - Research Division"; + req_one_access_txt = "1;30" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/tile/red/fourcorners/contrasted, +/turf/open/floor/iron/dark/smooth_large, +/area/security/checkpoint/science/research) "fCS" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -29657,16 +29721,6 @@ }, /turf/open/space, /area/solar/starboard/aft) -"gev" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/structure/closet/radiation, -/turf/open/floor/iron/white, -/area/science/explab) "geE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -30340,16 +30394,6 @@ /obj/machinery/light, /turf/open/floor/carpet/grimy, /area/hallway/primary/central) -"guY" = ( -/obj/machinery/door/airlock/command{ - name = "Command Desk"; - req_access_txt = "19" - }, -/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/closeup, -/turf/open/floor/iron/dark, -/area/bridge) "gve" = ( /obj/structure/cable{ icon_state = "4-8" @@ -30827,21 +30871,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/prison, /area/security/prison) -"gFL" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/white, -/area/science/explab) "gFN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -30927,21 +30956,6 @@ }, /turf/open/floor/iron, /area/science/robotics/lab) -"gHu" = ( -/obj/machinery/door/airlock/maintenance{ - req_one_access_txt = "49;47;12" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-maint-passthrough" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "gHE" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -32255,6 +32269,24 @@ }, /turf/open/floor/iron/grid/steel, /area/medical/patients_rooms) +"hiA" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Departure Lounge Security Post"; + req_one_access_txt = "1" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/fourcorners/contrasted, +/turf/open/floor/iron/dark, +/area/hallway/secondary/exit/departure_lounge) "hiN" = ( /obj/structure/closet/secure_closet/genpop, /obj/machinery/light{ @@ -32803,28 +32835,6 @@ /obj/effect/turf_decal/siding/dark_blue, /turf/open/floor/iron/white, /area/medical/medbay/lobby) -"hsa" = ( -/obj/machinery/turretid{ - icon_state = "control_stun"; - name = "AI Chamber turret control"; - pixel_x = 3; - pixel_y = -23 - }, -/obj/machinery/door/window{ - base_state = "leftsecure"; - dir = 8; - icon_state = "leftsecure"; - name = "Primary AI Core Access"; - atom_integrity = 300; - req_access_txt = "16" - }, -/obj/machinery/newscaster{ - pixel_x = 4; - pixel_y = 33 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, -/turf/open/floor/iron/dark, -/area/ai_monitored/turret_protected/ai) "hsd" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 @@ -34121,19 +34131,6 @@ /obj/item/clothing/under/suit/burgundy, /turf/open/floor/carpet/orange, /area/crew_quarters/dorms) -"hOP" = ( -/obj/structure/mirror{ - pixel_y = 28 - }, -/obj/structure/sink{ - pixel_y = 17 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/obj/effect/landmark/blobstart, -/turf/open/floor/iron/white, -/area/crew_quarters/heads/captain/private) "hPp" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 @@ -34477,23 +34474,6 @@ }, /turf/open/floor/iron, /area/medical/genetics/cloning) -"hUj" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Chapel Office Maintenance"; - req_one_access_txt = "22" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/turf/open/floor/plating, -/area/maintenance/aft) "hUm" = ( /obj/structure/table/wood, /obj/item/staff/broom, @@ -34544,6 +34524,16 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/crew_quarters/locker) +"hUB" = ( +/obj/machinery/airalarm/mixingchamber{ + pixel_y = -22 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/trimline/purple/filled/line, +/turf/open/floor/iron/white, +/area/science/mixing/chamber) "hVo" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -6; @@ -35401,6 +35391,16 @@ }, /turf/open/floor/iron/dark, /area/security/nuke_storage) +"imT" = ( +/obj/machinery/door/airlock/command{ + name = "Command Desk"; + req_access_txt = "19" + }, +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/closeup, +/turf/open/floor/iron/dark, +/area/bridge) "imY" = ( /obj/machinery/light/small{ dir = 1 @@ -36099,6 +36099,33 @@ }, /turf/open/floor/iron/dark/smooth_half, /area/security/brig) +"iBa" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/door/airlock/security/glass{ + id_tag = "meddoor"; + name = "Medical Cell"; + req_one_access_txt = "1;40" + }, +/turf/open/floor/iron, +/area/security/checkpoint/medical) "iBd" = ( /obj/structure/closet/secure_closet/captains, /obj/structure/window/reinforced{ @@ -36325,24 +36352,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/engine/break_room) -"iEe" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/warning{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/iron/white, -/area/science/explab) "iEo" = ( /obj/machinery/door/airlock/medical/glass{ name = "Medbay Storage"; @@ -36557,29 +36566,6 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron/dark, /area/bridge) -"iIp" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/security/glass{ - name = "Security Post - Cargo"; - req_one_access_txt = "1;57" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/iron, -/area/security/checkpoint/supply) "iIq" = ( /obj/structure/window/reinforced, /obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ @@ -37717,6 +37703,17 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/iron, /area/hallway/primary/fore) +"jgP" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Genetics Maintenance"; + req_access_txt = "9" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "quarantineshutters"; + name = "Isolation Shutters" + }, +/turf/open/floor/iron, +/area/maintenance/aft) "jgY" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -38727,21 +38724,6 @@ }, /turf/open/floor/iron/dark/smooth_large, /area/security/execution/education) -"jCP" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Security Post - Research Division"; - req_one_access_txt = "1;30" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/tile/red/fourcorners/contrasted, -/turf/open/floor/iron/dark/smooth_large, -/area/security/checkpoint/science/research) "jCR" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ dir = 8 @@ -39515,13 +39497,6 @@ }, /turf/open/floor/iron, /area/medical/storage) -"jSx" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Crematorium Maintenance"; - req_one_access_txt = "27" - }, -/turf/open/floor/plating, -/area/maintenance/aft) "jSP" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -42942,38 +42917,6 @@ /obj/effect/turf_decal/tile/purple/fourcorners/contrasted, /turf/open/floor/iron, /area/science/shuttledock) -"liF" = ( -/obj/effect/landmark/start/ai/secondary, -/obj/item/radio/intercom{ - freerange = 1; - listening = 0; - name = "Custom Channel"; - pixel_x = 10; - pixel_y = 22 - }, -/obj/item/radio/intercom{ - freerange = 1; - name = "Common Channel"; - pixel_x = 27 - }, -/obj/item/radio/intercom{ - freerange = 1; - frequency = 1447; - name = "Private Channel"; - pixel_x = 10; - pixel_y = -25 - }, -/obj/machinery/door/window{ - base_state = "leftsecure"; - dir = 8; - icon_state = "leftsecure"; - name = "Tertiary AI Core Access"; - atom_integrity = 300; - pixel_x = -3; - req_access_txt = "16" - }, -/turf/open/floor/circuit/green, -/area/ai_monitored/turret_protected/ai) "liG" = ( /obj/effect/turf_decal/tile/white/half/contrasted{ dir = 8 @@ -43001,6 +42944,21 @@ }, /turf/open/floor/iron/white/textured_large, /area/security/brig) +"ljh" = ( +/obj/machinery/door/window{ + base_state = "rightsecure"; + dir = 4; + icon_state = "rightsecure"; + name = "Primary AI Core Access"; + obj_integrity = 300; + req_access_txt = "16" + }, +/obj/machinery/camera/directional/north{ + c_tag = "AI Chamber - Core" + }, +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/turf/open/floor/iron/dark, +/area/ai_monitored/turret_protected/ai) "ljm" = ( /obj/machinery/door/airlock{ name = "Toilet Unit" @@ -43380,6 +43338,22 @@ }, /turf/open/floor/carpet/grimy, /area/security/detectives_office) +"lsk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/closet/wardrobe/science_white, +/turf/open/floor/iron, +/area/science/research) "lsn" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -44593,6 +44567,21 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) +"lMX" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/science/explab) "lNb" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -49274,17 +49263,6 @@ }, /turf/open/floor/iron, /area/medical/break_room) -"nyP" = ( -/obj/machinery/power/apc{ - areastring = "/area/science/explab"; - name = "Experimentation Lab APC"; - pixel_y = -24 - }, -/obj/structure/cable/yellow, -/obj/effect/turf_decal/trimline/purple/filled/line, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, -/area/science/explab) "nzh" = ( /obj/machinery/atmospherics/pipe/simple/supply/visible{ dir = 6 @@ -49718,6 +49696,19 @@ /obj/effect/turf_decal/tile/red/fourcorners/contrasted, /turf/open/floor/prison, /area/security/prison) +"nHL" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/corner, +/turf/open/floor/iron/white, +/area/science/explab) "nIo" = ( /obj/machinery/power/apc/highcap/five_k{ areastring = "/area/maintenance/starboard/aft"; @@ -50861,17 +50852,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/aft) -"nZW" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Genetics Maintenance"; - req_access_txt = "9" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "quarantineshutters"; - name = "Isolation Shutters" - }, -/turf/open/floor/iron, -/area/maintenance/aft) "oaG" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -27 @@ -52277,6 +52257,33 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/teleporter) +"oyH" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/research{ + name = "Toxins Launch Room"; + req_access_txt = "8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/purple/fourcorners/contrasted, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/iron, +/area/maintenance/department/science) "oyI" = ( /obj/machinery/light{ dir = 8 @@ -52936,6 +52943,16 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/lobby) +"oJn" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 4 + }, +/obj/structure/sign/warning/nosmoking{ + pixel_y = 32 + }, +/obj/structure/closet/bombcloset, +/turf/open/floor/iron/white, +/area/science/explab) "oJA" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -54489,6 +54506,22 @@ }, /turf/open/floor/iron, /area/hallway/primary/fore) +"pre" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "12;5;9;33" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "quarantineshutters"; + name = "Isolation Shutters" + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/central) "prv" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -55469,23 +55502,6 @@ }, /turf/open/floor/iron, /area/quartermaster/miningoffice) -"pMO" = ( -/obj/machinery/door/airlock/maintenance{ - req_one_access_txt = "12;47" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-maint-passthrough" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "pMR" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -55813,6 +55829,23 @@ }, /turf/open/floor/carpet/blue, /area/bridge) +"pST" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Engineering Security Post"; + req_one_access_txt = "1;56" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron, +/area/security/checkpoint/engineering) "pSV" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -57907,22 +57940,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/starboard) -"qFF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/closet/wardrobe/science_white, -/turf/open/floor/iron, -/area/science/research) "qFH" = ( /obj/machinery/disposal/bin, /obj/machinery/light_switch{ @@ -59759,19 +59776,6 @@ dir = 1 }, /area/hallway/primary/starboard) -"rpQ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/turf/open/floor/iron/white, -/area/science/explab) "rqt" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -61273,6 +61277,17 @@ /obj/machinery/announcement_system, /turf/open/floor/carpet/grimy, /area/tcommsat/computer) +"rRN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/vending/wardrobe/science_wardrobe, +/turf/open/floor/iron, +/area/science/research) "rSd" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -61651,33 +61666,13 @@ }, /turf/open/floor/catwalk_floor/iron_dark, /area/tcommsat/server) -"rXx" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/research{ - name = "Toxins Launch Room"; - req_access_txt = "8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple/fourcorners/contrasted, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +"rXW" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Crematorium Maintenance"; + req_one_access_txt = "27" }, -/turf/open/floor/iron, -/area/maintenance/department/science) +/turf/open/floor/plating, +/area/maintenance/aft) "rYg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ @@ -61839,22 +61834,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/aft) -"sbx" = ( -/obj/machinery/door/airlock/maintenance{ - req_one_access_txt = "12;5;9;33" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "quarantineshutters"; - name = "Isolation Shutters" - }, -/turf/open/floor/plating, -/area/maintenance/department/medical/central) "sbE" = ( /obj/machinery/power/apc{ areastring = "/area/hallway/primary/port"; @@ -64393,18 +64372,6 @@ /obj/effect/turf_decal/tile/red, /turf/open/floor/iron/dark/smooth_corner, /area/security/main) -"sYK" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/anticorner{ - dir = 1 - }, -/obj/machinery/computer/security/telescreen/station{ - pixel_y = 32 - }, -/turf/open/floor/iron/dark/smooth_corner, -/area/hallway/secondary/exit/departure_lounge) "sYS" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -64609,38 +64576,6 @@ }, /turf/open/floor/iron, /area/crew_quarters/fitness/recreation) -"teN" = ( -/obj/machinery/door/window{ - base_state = "rightsecure"; - dir = 4; - icon_state = "rightsecure"; - name = "Primary AI Core Access"; - atom_integrity = 300; - req_access_txt = "16" - }, -/obj/machinery/camera/directional/north{ - c_tag = "AI Chamber - Core"; - network = list("aicore") - }, -/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, -/obj/merge_conflict_marker{ - name = "---Merge Conflict Marker---"; - desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." - }, -/obj/machinery/door/window{ - base_state = "rightsecure"; - dir = 4; - icon_state = "rightsecure"; - name = "Primary AI Core Access"; - atom_integrity = 300; - req_access_txt = "16" - }, -/obj/machinery/camera/directional/north{ - c_tag = "AI Chamber - Core" - }, -/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, -/turf/open/floor/iron/dark, -/area/ai_monitored/turret_protected/ai) "tfc" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -65702,25 +65637,6 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) -"tuD" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/landmark/start/scientist, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/science/explab) "tvl" = ( /obj/item/paper_bin{ pixel_y = 7 @@ -66475,24 +66391,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/fore) -"tIJ" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Departure Lounge Security Post"; - req_one_access_txt = "1" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/fourcorners/contrasted, -/turf/open/floor/iron/dark, -/area/hallway/secondary/exit/departure_lounge) "tIU" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -67407,12 +67305,44 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/ai_upload_foyer) +"tZv" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Chapel Office Maintenance"; + req_one_access_txt = "22" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/turf/open/floor/plating, +/area/maintenance/aft) "tZR" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) +"uan" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 6 + }, +/turf/open/floor/iron/white, +/area/science/explab) "uaJ" = ( /obj/machinery/camera/directional/south{ c_tag = "Cargo Bay - Aft" @@ -67441,21 +67371,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/port/fore) -"uby" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/science/explab) "ubB" = ( /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 4 @@ -69093,23 +69008,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"uET" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Engineering Security Post"; - req_one_access_txt = "1;56" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron, -/area/security/checkpoint/engineering) "uEU" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -69759,17 +69657,6 @@ }, /turf/open/floor/iron, /area/maintenance/port) -"uQH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/vending/wardrobe/science_wardrobe, -/turf/open/floor/iron, -/area/science/research) "uQL" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -70358,6 +70245,23 @@ }, /turf/open/floor/iron, /area/maintenance/starboard/secondary) +"vcY" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "12;47" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-maint-passthrough" + }, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "vdl" = ( /obj/machinery/airalarm/directional/west{ pixel_x = -22 @@ -71520,6 +71424,24 @@ /obj/effect/turf_decal/tile/dark_red, /turf/open/floor/iron/smooth_corner, /area/security/prison) +"vxn" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/warning{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron/white, +/area/science/explab) "vxo" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -73295,6 +73217,27 @@ /obj/structure/sign/directions/evac, /turf/closed/wall, /area/hallway/primary/aft) +"wgp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Virology Maintenance"; + req_access_txt = "39" + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "quarantineshutters"; + name = "Isolation Shutters" + }, +/turf/open/floor/iron, +/area/maintenance/aft) "wgH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -75880,6 +75823,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/maintenance/port) +"xeJ" = ( +/obj/structure/mirror{ + pixel_y = 28 + }, +/obj/structure/sink{ + pixel_y = 17 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/effect/landmark/blobstart, +/turf/open/floor/iron/white, +/area/crew_quarters/heads/captain/private) "xeU" = ( /obj/effect/turf_decal/plaque{ icon_state = "L12" @@ -77366,6 +77322,19 @@ /obj/effect/turf_decal/tile/red, /turf/open/floor/iron, /area/hallway/primary/fore) +"xCg" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 10 + }, +/obj/machinery/requests_console{ + pixel_x = -32 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/science/explab) "xCh" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -77475,6 +77444,28 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/iron/dark, /area/aisat) +"xFe" = ( +/obj/machinery/turretid{ + icon_state = "control_stun"; + name = "AI Chamber turret control"; + pixel_x = 3; + pixel_y = -23 + }, +/obj/machinery/door/window{ + base_state = "leftsecure"; + dir = 8; + icon_state = "leftsecure"; + name = "Primary AI Core Access"; + obj_integrity = 300; + req_access_txt = "16" + }, +/obj/machinery/newscaster{ + pixel_x = 4; + pixel_y = 33 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/turf/open/floor/iron/dark, +/area/ai_monitored/turret_protected/ai) "xFt" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -78590,29 +78581,6 @@ dir = 8 }, /area/security/brig) -"xZa" = ( -/obj/structure/table/reinforced, -/obj/item/pen, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/structure/desk_bell{ - pixel_x = -8 - }, -/obj/item/folder/white, -/obj/machinery/door/window/brigdoor{ - dir = 8; - id = "medcell"; - name = "Medical Cell"; - req_one_access_txt = "1;40" - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/turf/open/floor/iron, -/area/security/checkpoint/medical) "xZj" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -79331,6 +79299,21 @@ }, /turf/open/floor/iron, /area/hallway/primary/aft) +"yjD" = ( +/obj/machinery/door/airlock/maintenance{ + req_one_access_txt = "12;47;29" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/aft/secondary) "yjO" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -97175,7 +97158,7 @@ cDL cDL cDL cDL -duW +wgp cDL cDL cDL @@ -99172,7 +99155,7 @@ aQp aQp aSX aSX -iIp +cDC aSX aSX bat @@ -99757,7 +99740,7 @@ bTs ftn mli noQ -jSx +rXW oGb xSh eFN @@ -101040,7 +101023,7 @@ uqu cCe avr tkg -hUj +tZv oFj woY dYL @@ -104621,7 +104604,7 @@ cga rAK rdQ nDW -dbz +iBa rdQ rdQ rdQ @@ -105147,7 +105130,7 @@ qCC ikA cwA xzs -nZW +jgP mGb cPb oju @@ -106163,7 +106146,7 @@ wsV qcl rdQ wNG -xZa +bYs xph rdQ rdQ @@ -106417,7 +106400,7 @@ mAV mFf fla iUk -sbx +pre wgn vLZ yld @@ -106896,7 +106879,7 @@ gVe bov pSR bsX -guY +imT wZd udu bzW @@ -107465,11 +107448,11 @@ cCq cCq cCq cCq -bTo +yjD cPb cMZ cNP -tIJ +hiA cPb cPv cPb @@ -107724,7 +107707,7 @@ gIE cCq jAk cPb -sYK +edQ uvP baf cPb @@ -109461,7 +109444,7 @@ bdH jiw bht bjg -hOP +xeJ bjg tHv mwR @@ -110263,7 +110246,7 @@ jCA xNA hEX sZi -jCP +fCE sUv jkc clI @@ -111077,7 +111060,7 @@ fAX fAX gxR dwS -bQA +hUB tHn tHn tHn @@ -112838,7 +112821,7 @@ pDo kmH fmL bZn -qFF +lsk fjD obf thn @@ -113095,7 +113078,7 @@ vuv ckq mIU bZn -uQH +rRN rsX cqO wGx @@ -113610,8 +113593,8 @@ mZQ cgq myO oSU -iEe -dIw +vxn +xCg thn pkb wqi @@ -113867,8 +113850,8 @@ mQV uEf tVX uMx -tuD -nyP +boj +cqR thn hGH fYI @@ -114124,7 +114107,7 @@ gOu hDh gOz jAj -dxt +dKY lHL thn dPF @@ -114381,7 +114364,7 @@ dua uEf ore oDr -uby +lMX qkz thn thn @@ -114638,7 +114621,7 @@ mZQ cgq lNH cqV -rpQ +nHL isb ezt cgq @@ -114893,9 +114876,9 @@ cgq cgq cgq cgq -dcV -gev -gFL +oJn +fBw +uan hEu oKt cgq @@ -114903,7 +114886,7 @@ lal jVZ sxa lCX -gHu +dKV ulA kNZ fls @@ -114913,7 +114896,7 @@ keR akM uIA czD -pMO +vcY kOP mzB mml @@ -115426,7 +115409,7 @@ ciw tVz ojg eBh -rXx +oyH ojg ojg ojg @@ -121535,7 +121518,7 @@ rAS sHC sVu ngb -uET +pST dRM kWr vhn @@ -133355,7 +133338,7 @@ aRy aTV aTV aTV -dOn +aZQ aTV aTV aTV @@ -134126,7 +134109,7 @@ aTV aVn aWN aTV -hsa +xFe aTV aTV sUk @@ -134640,7 +134623,7 @@ aTX taY aWP aTV -teN +ljh aTV aTV bew @@ -135411,7 +135394,7 @@ aRy aTV aTV aTV -liF +aZY aTV aTV aTV From 7549bf1052751d75fd7f73ac5cb4371872f3a310 Mon Sep 17 00:00:00 2001 From: RKz Date: Thu, 17 Oct 2024 21:47:56 -0400 Subject: [PATCH 17/19] meta & echo --- _maps/map_files/EchoStation/EchoStation.dmm | 4 ++-- _maps/map_files/MetaStation/MetaStation.dmm | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/_maps/map_files/EchoStation/EchoStation.dmm b/_maps/map_files/EchoStation/EchoStation.dmm index 8fd32c55f820a..723116cea7666 100644 --- a/_maps/map_files/EchoStation/EchoStation.dmm +++ b/_maps/map_files/EchoStation/EchoStation.dmm @@ -32534,7 +32534,7 @@ dir = 4; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ @@ -41286,7 +41286,7 @@ dir = 8; icon_state = "leftsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/door/poddoor/shutters/preopen{ diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 6efd704bfb060..85f33465f2a6d 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -7001,7 +7001,7 @@ dir = 4; icon_state = "rightsecure"; name = "Secondary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = 4; req_access_txt = "16" }, @@ -7033,7 +7033,7 @@ dir = 8; icon_state = "leftsecure"; name = "Tertiary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; pixel_x = -3; req_access_txt = "16" }, @@ -42950,7 +42950,7 @@ dir = 4; icon_state = "rightsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/camera/directional/north{ @@ -77456,7 +77456,7 @@ dir = 8; icon_state = "leftsecure"; name = "Primary AI Core Access"; - obj_integrity = 300; + atom_integrity = 300; req_access_txt = "16" }, /obj/machinery/newscaster{ From e3c3edd67ed2c2c5b2669d2d761262a345c58062 Mon Sep 17 00:00:00 2001 From: RKz Date: Thu, 17 Oct 2024 22:32:49 -0400 Subject: [PATCH 18/19] i like to singa --- code/_onclick/item_attack.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 740db596ebfe6..b98a3855817c1 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -14,14 +14,12 @@ return TRUE if(target.attackby(src,user, params)) return TRUE - #ifndef TESTING if(QDELETED(src)) stack_trace("An item got deleted while performing an item attack and did not stop melee_attack_chain.") return TRUE if(QDELETED(target)) stack_trace("The target of an item attack got deleted and melee_attack_chain was not stopped.") return TRUE - #endif return afterattack(target, user, TRUE, params) From e2a16726bc93f741bfa8e5537f279fc08af821d9 Mon Sep 17 00:00:00 2001 From: RKz Date: Sat, 19 Oct 2024 11:00:40 -0400 Subject: [PATCH 19/19] please fix yourself --- html/changelog.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 9cd7c301b0ac0..eee77003c395e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -5,7 +5,7 @@ + + @@ -24,7 +24,7 @@
    BeeStation 13
    - +

    Join our Discord Here! @@ -36,7 +36,7 @@ Current Project Maintainers: -Click Here-
    Currently Active GitHub contributor list: -Click Here-
    - Coders: Agouri, Aranclanos, AzlanonPC, Cael_Aislinn, Carn, Cenrus, Cheridan, ConstantA, Crossedfall, CthulhuOnIce, Darem, Donkie, Doohl, DumpDavidson, Elo001, Errorage, Francinum, Fleure, Giacom, Ikarrus, Intigracy, Kor, MCterra, Malkevin, ManeaterMildred, Mark Suckerberg, Miauw, Mport, MrPerson, NEO, Nodrak, Noise, Noka, Numbers, Petethegoat, Polymorph, PowerfulBacon, Qwertyquerty, Rockdtben, ShadowH4nD, Sieve, Skie, St0rmC4st3r, SuperSayu, Superxpdude, TLE, Tastyfish, Uhangi, Urist McDorf, Yvar, ike709, muskets, rastaf0, trubble_bass, veryinky
    + Coders: Agouri, Aranclanos, AzlanonPC, Cael_Aislinn, Carn, Cenrus, Cheridan, ConstantA, Crossedfall, CthulhuOnIce, Darem, Donkie, Doohl, DumpDavidson, Elo001, Errorage, Francinum, Fleure, Giacom, Ikarrus, Intigracy, Kor, MCterra, Malkevin, ManeaterMildred, Mark Suckerberg, Miauw, Mport, MrPerson, NEO, Nodrak, Noise, Noka, Numbers, Petethegoat, Polymorph, PowerfulBacon, Qwertyquerty, Rockdtben, ShadowH4nD, Sieve, Skie, St0rmC4st3r, SuperSayu, Superxpdude, TLE, Tastyfish, Uhangi, Urist McDorf, Yvar, ike709, muskets, rastaf0, trubble_bass, veryinky
    Spriters: Agouri, Ausops, AzlanonPC, Cheridan, CruazyGuest, Deeaych, Deuryn, Firecage, Kor, Matty406, Microwave, Naevi, Nienhaus2, Petethegoat, Pewtershmitz, Ricotez, ShiftyEyesShady, Skie, TankNut, Thatguythere03, Uhangi, Veyveyr
    Mappers: Prophed
    Sounds: Skie, Lasty/Vinyl
    @@ -48,11 +48,11 @@