mirror of
https://github.com/KabKebab/GS13.git
synced 2026-08-24 13:36:15 +01:00
Merge pull request #10238 from Ghommie/Ghommie-cit478
Brings in some mapping code updates.
This commit is contained in:
@@ -57,10 +57,10 @@
|
||||
if(item.parent)
|
||||
var/static/pipenetwarnings = 10
|
||||
if(pipenetwarnings > 0)
|
||||
warning("build_pipeline(): [item.type] added to a pipenet while still having one. (pipes leading to the same spot stacking in one turf) Nearby: ([item.x], [item.y], [item.z])")
|
||||
log_mapping("build_pipeline(): [item.type] added to a pipenet while still having one. (pipes leading to the same spot stacking in one turf) Nearby: ([item.x], [item.y], [item.z]).")
|
||||
pipenetwarnings -= 1
|
||||
if(pipenetwarnings == 0)
|
||||
warning("build_pipeline(): further messages about pipenets will be suppressed")
|
||||
log_mapping("build_pipeline(): further messages about pipenets will be suppressed")
|
||||
members += item
|
||||
possible_expansions += item
|
||||
|
||||
|
||||
@@ -1,147 +1,147 @@
|
||||
/obj/machinery/meter
|
||||
name = "gas flow meter"
|
||||
desc = "It measures something."
|
||||
icon = 'icons/obj/atmospherics/pipes/meter.dmi'
|
||||
icon_state = "meterX"
|
||||
layer = GAS_PUMP_LAYER
|
||||
power_channel = ENVIRON
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 2
|
||||
active_power_usage = 4
|
||||
max_integrity = 150
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 40, "acid" = 0)
|
||||
var/frequency = 0
|
||||
var/atom/target
|
||||
var/id_tag
|
||||
var/target_layer = PIPING_LAYER_DEFAULT
|
||||
|
||||
/obj/machinery/meter/atmos
|
||||
frequency = FREQ_ATMOS_STORAGE
|
||||
|
||||
/obj/machinery/meter/atmos/atmos_waste_loop
|
||||
name = "waste loop gas flow meter"
|
||||
id_tag = ATMOS_GAS_MONITOR_LOOP_ATMOS_WASTE
|
||||
|
||||
/obj/machinery/meter/atmos/distro_loop
|
||||
name = "distribution loop gas flow meter"
|
||||
id_tag = ATMOS_GAS_MONITOR_LOOP_DISTRIBUTION
|
||||
|
||||
/obj/machinery/meter/Destroy()
|
||||
SSair.atmos_machinery -= src
|
||||
target = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/meter/Initialize(mapload, new_piping_layer)
|
||||
if(!isnull(new_piping_layer))
|
||||
target_layer = new_piping_layer
|
||||
SSair.atmos_machinery += src
|
||||
if(!target)
|
||||
reattach_to_layer()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/meter/proc/reattach_to_layer()
|
||||
var/obj/machinery/atmospherics/candidate
|
||||
for(var/obj/machinery/atmospherics/pipe/pipe in loc)
|
||||
if(pipe.piping_layer == target_layer)
|
||||
candidate = pipe
|
||||
if(pipe.level == 2)
|
||||
break
|
||||
if(candidate)
|
||||
target = candidate
|
||||
setAttachLayer(candidate.piping_layer)
|
||||
|
||||
/obj/machinery/meter/proc/setAttachLayer(new_layer)
|
||||
target_layer = new_layer
|
||||
PIPING_LAYER_DOUBLE_SHIFT(src, target_layer)
|
||||
|
||||
/obj/machinery/meter/process_atmos()
|
||||
if(!target)
|
||||
icon_state = "meterX"
|
||||
return 0
|
||||
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
icon_state = "meter0"
|
||||
return 0
|
||||
|
||||
use_power(5)
|
||||
|
||||
var/datum/gas_mixture/environment = target.return_air()
|
||||
if(!environment)
|
||||
icon_state = "meterX"
|
||||
return 0
|
||||
|
||||
var/env_pressure = environment.return_pressure()
|
||||
if(env_pressure <= 0.15*ONE_ATMOSPHERE)
|
||||
icon_state = "meter0"
|
||||
else if(env_pressure <= 1.8*ONE_ATMOSPHERE)
|
||||
var/val = round(env_pressure/(ONE_ATMOSPHERE*0.3) + 0.5)
|
||||
icon_state = "meter1_[val]"
|
||||
else if(env_pressure <= 30*ONE_ATMOSPHERE)
|
||||
var/val = round(env_pressure/(ONE_ATMOSPHERE*5)-0.35) + 1
|
||||
icon_state = "meter2_[val]"
|
||||
else if(env_pressure <= 59*ONE_ATMOSPHERE)
|
||||
var/val = round(env_pressure/(ONE_ATMOSPHERE*5) - 6) + 1
|
||||
icon_state = "meter3_[val]"
|
||||
else
|
||||
icon_state = "meter4"
|
||||
|
||||
if(frequency)
|
||||
var/datum/radio_frequency/radio_connection = SSradio.return_frequency(frequency)
|
||||
|
||||
if(!radio_connection)
|
||||
return
|
||||
|
||||
var/datum/signal/signal = new(list(
|
||||
"id_tag" = id_tag,
|
||||
"device" = "AM",
|
||||
"pressure" = round(env_pressure),
|
||||
"sigtype" = "status"
|
||||
))
|
||||
radio_connection.post_signal(src, signal)
|
||||
|
||||
/obj/machinery/meter/proc/status()
|
||||
if (target)
|
||||
var/datum/gas_mixture/environment = target.return_air()
|
||||
if(environment)
|
||||
. = "The pressure gauge reads [round(environment.return_pressure(), 0.01)] kPa; [round(environment.temperature,0.01)] K ([round(environment.temperature-T0C,0.01)]°C)."
|
||||
else
|
||||
. = "The sensor error light is blinking."
|
||||
else
|
||||
. = "The connect error light is blinking."
|
||||
|
||||
/obj/machinery/meter/examine(mob/user)
|
||||
. = ..()
|
||||
. += status()
|
||||
|
||||
/obj/machinery/meter/wrench_act(mob/user, obj/item/I)
|
||||
to_chat(user, "<span class='notice'>You begin to unfasten \the [src]...</span>")
|
||||
if (I.use_tool(src, user, 40, volume=50))
|
||||
user.visible_message(
|
||||
"[user] unfastens \the [src].",
|
||||
"<span class='notice'>You unfasten \the [src].</span>",
|
||||
"<span class='italics'>You hear ratchet.</span>")
|
||||
deconstruct()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/meter/deconstruct(disassembled = TRUE)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
new /obj/item/pipe_meter(loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/meter/interact(mob/user)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
else
|
||||
to_chat(user, status())
|
||||
|
||||
/obj/machinery/meter/singularity_pull(S, current_size)
|
||||
..()
|
||||
if(current_size >= STAGE_FIVE)
|
||||
deconstruct()
|
||||
|
||||
// TURF METER - REPORTS A TILE'S AIR CONTENTS
|
||||
// why are you yelling?
|
||||
/obj/machinery/meter/turf
|
||||
|
||||
/obj/machinery/meter/turf/reattach_to_layer()
|
||||
target = loc
|
||||
/obj/machinery/meter
|
||||
name = "gas flow meter"
|
||||
desc = "It measures something."
|
||||
icon = 'icons/obj/atmospherics/pipes/meter.dmi'
|
||||
icon_state = "meterX"
|
||||
layer = GAS_PUMP_LAYER
|
||||
power_channel = ENVIRON
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 2
|
||||
active_power_usage = 4
|
||||
max_integrity = 150
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 40, "acid" = 0)
|
||||
var/frequency = 0
|
||||
var/atom/target
|
||||
var/id_tag
|
||||
var/target_layer = PIPING_LAYER_DEFAULT
|
||||
|
||||
/obj/machinery/meter/atmos
|
||||
frequency = FREQ_ATMOS_STORAGE
|
||||
|
||||
/obj/machinery/meter/atmos/atmos_waste_loop
|
||||
name = "waste loop gas flow meter"
|
||||
id_tag = ATMOS_GAS_MONITOR_LOOP_ATMOS_WASTE
|
||||
|
||||
/obj/machinery/meter/atmos/distro_loop
|
||||
name = "distribution loop gas flow meter"
|
||||
id_tag = ATMOS_GAS_MONITOR_LOOP_DISTRIBUTION
|
||||
|
||||
/obj/machinery/meter/Destroy()
|
||||
SSair.atmos_machinery -= src
|
||||
target = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/meter/Initialize(mapload, new_piping_layer)
|
||||
if(!isnull(new_piping_layer))
|
||||
target_layer = new_piping_layer
|
||||
SSair.atmos_machinery += src
|
||||
if(!target)
|
||||
reattach_to_layer()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/meter/proc/reattach_to_layer()
|
||||
var/obj/machinery/atmospherics/candidate
|
||||
for(var/obj/machinery/atmospherics/pipe/pipe in loc)
|
||||
if(pipe.piping_layer == target_layer)
|
||||
candidate = pipe
|
||||
if(pipe.level == 2)
|
||||
break
|
||||
if(candidate)
|
||||
target = candidate
|
||||
setAttachLayer(candidate.piping_layer)
|
||||
|
||||
/obj/machinery/meter/proc/setAttachLayer(new_layer)
|
||||
target_layer = new_layer
|
||||
PIPING_LAYER_DOUBLE_SHIFT(src, target_layer)
|
||||
|
||||
/obj/machinery/meter/process_atmos()
|
||||
if(!(target?.flags_1 & INITIALIZED_1))
|
||||
icon_state = "meterX"
|
||||
return 0
|
||||
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
icon_state = "meter0"
|
||||
return 0
|
||||
|
||||
use_power(5)
|
||||
|
||||
var/datum/gas_mixture/environment = target.return_air()
|
||||
if(!environment)
|
||||
icon_state = "meterX"
|
||||
return 0
|
||||
|
||||
var/env_pressure = environment.return_pressure()
|
||||
if(env_pressure <= 0.15*ONE_ATMOSPHERE)
|
||||
icon_state = "meter0"
|
||||
else if(env_pressure <= 1.8*ONE_ATMOSPHERE)
|
||||
var/val = round(env_pressure/(ONE_ATMOSPHERE*0.3) + 0.5)
|
||||
icon_state = "meter1_[val]"
|
||||
else if(env_pressure <= 30*ONE_ATMOSPHERE)
|
||||
var/val = round(env_pressure/(ONE_ATMOSPHERE*5)-0.35) + 1
|
||||
icon_state = "meter2_[val]"
|
||||
else if(env_pressure <= 59*ONE_ATMOSPHERE)
|
||||
var/val = round(env_pressure/(ONE_ATMOSPHERE*5) - 6) + 1
|
||||
icon_state = "meter3_[val]"
|
||||
else
|
||||
icon_state = "meter4"
|
||||
|
||||
if(frequency)
|
||||
var/datum/radio_frequency/radio_connection = SSradio.return_frequency(frequency)
|
||||
|
||||
if(!radio_connection)
|
||||
return
|
||||
|
||||
var/datum/signal/signal = new(list(
|
||||
"id_tag" = id_tag,
|
||||
"device" = "AM",
|
||||
"pressure" = round(env_pressure),
|
||||
"sigtype" = "status"
|
||||
))
|
||||
radio_connection.post_signal(src, signal)
|
||||
|
||||
/obj/machinery/meter/proc/status()
|
||||
if (target)
|
||||
var/datum/gas_mixture/environment = target.return_air()
|
||||
if(environment)
|
||||
. = "The pressure gauge reads [round(environment.return_pressure(), 0.01)] kPa; [round(environment.temperature,0.01)] K ([round(environment.temperature-T0C,0.01)]°C)."
|
||||
else
|
||||
. = "The sensor error light is blinking."
|
||||
else
|
||||
. = "The connect error light is blinking."
|
||||
|
||||
/obj/machinery/meter/examine(mob/user)
|
||||
. = ..()
|
||||
. += status()
|
||||
|
||||
/obj/machinery/meter/wrench_act(mob/user, obj/item/I)
|
||||
to_chat(user, "<span class='notice'>You begin to unfasten \the [src]...</span>")
|
||||
if (I.use_tool(src, user, 40, volume=50))
|
||||
user.visible_message(
|
||||
"[user] unfastens \the [src].",
|
||||
"<span class='notice'>You unfasten \the [src].</span>",
|
||||
"<span class='italics'>You hear ratchet.</span>")
|
||||
deconstruct()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/meter/deconstruct(disassembled = TRUE)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
new /obj/item/pipe_meter(loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/meter/interact(mob/user)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
else
|
||||
to_chat(user, status())
|
||||
|
||||
/obj/machinery/meter/singularity_pull(S, current_size)
|
||||
..()
|
||||
if(current_size >= STAGE_FIVE)
|
||||
deconstruct()
|
||||
|
||||
// TURF METER - REPORTS A TILE'S AIR CONTENTS
|
||||
// why are you yelling?
|
||||
/obj/machinery/meter/turf
|
||||
|
||||
/obj/machinery/meter/turf/reattach_to_layer()
|
||||
target = loc
|
||||
|
||||
Reference in New Issue
Block a user