@@ -409,7 +409,7 @@ var/global/list/nlist = list( \
if(M.piping_layer != src.piping_layer && !((M.pipe_flags & ALL_LAYER) || (pipe_type in unstackable_pipes)))
continue
if(M.initialize_directions & pipe_dir) // matches at least one direction on either type of pipe
user << "<span class='warning'>There is already a pipe at that location.</span>"
to_chat(user, "<span class='warning'>There is already a pipe at that location.</span>")
return 1
// no conflicts found

@@ -539,11 +539,11 @@ var/global/list/nlist = list( \
pipe = P
break
if(!pipe)
user << "<span class='warning'>You need to fasten it to a pipe</span>"
to_chat(user, "<span class='warning'>You need to fasten it to a pipe</span>")
return 1
new/obj/machinery/meter(src.loc, pipe)
playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1)
user << "<span class='notice'>You have fastened the meter to the pipe</span>"
to_chat(user, "<span class='notice'>You have fastened the meter to the pipe</span>")
del(src)

/obj/item/pipe_meter/dropped()
@@ -571,5 +571,5 @@ var/global/list/nlist = list( \
return ..()
new/obj/machinery/air_sensor( src.loc )
playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1)
user << "<span class='notice'>You have fastened the gas sensor</span>"
to_chat(user, "<span class='notice'>You have fastened the gas sensor</span>")
del(src)
@@ -140,7 +140,7 @@
/obj/machinery/pipedispenser/attackby(var/obj/item/W as obj, var/mob/user as mob)
src.add_fingerprint(usr)
if (istype(W, /obj/item/pipe) || istype(W, /obj/item/pipe_meter) || istype(W, /obj/item/pipe_gsensor))
usr << "<span class='notice'>You put [W] back to [src].</span>"
to_chat(usr, "<span class='notice'>You put [W] back to [src].</span>")
user.drop_item(W, src)
if(istype(W, /obj/item/pipe))
returnToPool(W)
@@ -142,7 +142,7 @@
level = T.intact ? 2 : 1
initialize(1)
if(!node1&&!node2)
usr << "<span class='warning'>There's nothing to connect this pipe section to! A pipe segment must be connected to at least one other object!</span>"
to_chat(usr, "<span class='warning'>There's nothing to connect this pipe section to! A pipe segment must be connected to at least one other object!</span>")
return 0
update_icon()
build_network()
@@ -169,13 +169,13 @@
/*if(!node1)
parent.mingle_with_turf(loc, volume)
if(!nodealert)
//world << "Missing node from [src] at [src.x],[src.y],[src.z]"
// to_chat(world, "Missing node from [src] at [src.x],[src.y],[src.z]")
nodealert = 1
else if(!node2)
parent.mingle_with_turf(loc, volume)
if(!nodealert)
//world << "Missing node from [src] at [src.x],[src.y],[src.z]"
// to_chat(world, "Missing node from [src] at [src.x],[src.y],[src.z]")
nodealert = 1
else if (nodealert)
nodealert = 0
@@ -225,7 +225,7 @@

/obj/machinery/atmospherics/pipe/simple/examine(mob/user)
..()
user << "<span class='info'>This [src.name] is rated up to [format_num(alert_pressure)] kPa.</span>"
to_chat(user, "<span class='info'>This [src.name] is rated up to [format_num(alert_pressure)] kPa.</span>")

/obj/machinery/atmospherics/pipe/simple/proc/groan()
src.visible_message("<span class='warning'>\The [src] groans from the pressure!</span>");
@@ -454,7 +454,7 @@
level = T.intact ? 2 : 1
initialize(1)
if(!node1&&!node2&&!node3)
usr << "<span class='warning'>There's nothing to connect this manifold to! A pipe segment must be connected to at least one other object!</span>"
to_chat(usr, "<span class='warning'>There's nothing to connect this manifold to! A pipe segment must be connected to at least one other object!</span>")
return 0
update_icon() // Skipped in initialize()!
build_network()
@@ -505,17 +505,17 @@
if(!node1)
parent.mingle_with_turf(loc, 70)
if(!nodealert)
//world << "Missing node from [src] at [src.x],[src.y],[src.z]"
// to_chat(world, "Missing node from [src] at [src.x],[src.y],[src.z]")
nodealert = 1
else if(!node2)
parent.mingle_with_turf(loc, 70)
if(!nodealert)
//world << "Missing node from [src] at [src.x],[src.y],[src.z]"
// to_chat(world, "Missing node from [src] at [src.x],[src.y],[src.z]")
nodealert = 1
else if(!node3)
parent.mingle_with_turf(loc, 70)
if(!nodealert)
//world << "Missing node from [src] at [src.x],[src.y],[src.z]"
// to_chat(world, "Missing node from [src] at [src.x],[src.y],[src.z]")
nodealert = 1
else if (nodealert)
nodealert = 0
@@ -678,7 +678,7 @@
level = T.intact ? 2 : 1
initialize(1)
if(!node1 && !node2 && !node3 && !node4)
usr << "<span class='warning'>There's nothing to connect this manifold to! A pipe segment must be connected to at least one other object!</span>"
to_chat(usr, "<span class='warning'>There's nothing to connect this manifold to! A pipe segment must be connected to at least one other object!</span>")
return 0
update_icon()
build_network()
@@ -721,17 +721,17 @@
if(!node1)
parent.mingle_with_turf(loc, 70)
if(!nodealert)
//world << "Missing node from [src] at [src.x],[src.y],[src.z]"
// to_chat(world, "Missing node from [src] at [src.x],[src.y],[src.z]")
nodealert = 1
else if(!node2)
parent.mingle_with_turf(loc, 70)
if(!nodealert)
//world << "Missing node from [src] at [src.x],[src.y],[src.z]"
// to_chat(world, "Missing node from [src] at [src.x],[src.y],[src.z]")
nodealert = 1
else if(!node3)
parent.mingle_with_turf(loc, 70)
if(!nodealert)
//world << "Missing node from [src] at [src.x],[src.y],[src.z]"
// to_chat(world, "Missing node from [src] at [src.x],[src.y],[src.z]")
nodealert = 1
else if (nodealert)
nodealert = 0
@@ -872,22 +872,22 @@

if(istype(W, /obj/item/weapon/reagent_containers/glass/paint/red))
src.color = PIPE_COLOR_RED
user << "<span class='notice'>You paint the pipe red.</span>"
to_chat(user, "<span class='notice'>You paint the pipe red.</span>")
update_icon()
return 1
if(istype(W, /obj/item/weapon/reagent_containers/glass/paint/blue))
src.color = PIPE_COLOR_BLUE
user << "<span class='notice'>You paint the pipe blue.</span>"
to_chat(user, "<span class='notice'>You paint the pipe blue.</span>")
update_icon()
return 1
if(istype(W, /obj/item/weapon/reagent_containers/glass/paint/green))
src.color = PIPE_COLOR_GREEN
user << "<span class='notice'>You paint the pipe green.</span>"
to_chat(user, "<span class='notice'>You paint the pipe green.</span>")
update_icon()
return 1
if(istype(W, /obj/item/weapon/reagent_containers/glass/paint/yellow))
src.color = PIPE_COLOR_ORANGE
user << "<span class='notice'>You paint the pipe yellow.</span>"
to_chat(user, "<span class='notice'>You paint the pipe yellow.</span>")
update_icon()
return 1

@@ -941,7 +941,7 @@
level = T.intact ? 2 : 1
initialize(1)
if(!(locate(/obj/machinery/atmospherics) in layer_nodes) && !other_node)
usr << "<span class='warning'>There's nothing to connect this manifold to! A pipe segment must be connected to at least one other object!</span>"
to_chat(usr, "<span class='warning'>There's nothing to connect this manifold to! A pipe segment must be connected to at least one other object!</span>")
return 0
update_icon()
build_network()
@@ -1086,12 +1086,12 @@
layer_mod = -1

user.ventcrawl_layer = Clamp(user.ventcrawl_layer + layer_mod, PIPING_LAYER_MIN, PIPING_LAYER_MAX)
user << "You align yourself with the [user.ventcrawl_layer]\th output."
to_chat(user, "You align yourself with the [user.ventcrawl_layer]\th output.")
return 1
else
if(direction != dir && user.ventcrawl_layer != PIPING_LAYER_DEFAULT) // The mob is moving to the single pipe outlet, we need to align it if it's on a layer that's not the default layer
user.ventcrawl_layer = PIPING_LAYER_DEFAULT
user << "You are redirected into the [user.ventcrawl_layer]\th piping layer."
to_chat(user, "You are redirected into the [user.ventcrawl_layer]\th piping layer.")

return ..()

@@ -1133,7 +1133,7 @@
level = T.intact ? 2 : 1
initialize(1)
if(!mid_node && !layer_node)
usr << "<span class='warning'>There's nothing to connect this adapter to! A pipe segment must be connected to at least one other object!</span>"
to_chat(usr, "<span class='warning'>There's nothing to connect this adapter to! A pipe segment must be connected to at least one other object!</span>")
return 0
update_icon()
build_network()
@@ -1254,5 +1254,5 @@
// Autoset layer
if(direction & initialize_directions)
user.ventcrawl_layer = (direction == dir) ? PIPING_LAYER_DEFAULT : piping_layer
user << "You are redirected into the [user.ventcrawl_layer]\th piping layer."
to_chat(user, "You are redirected into the [user.ventcrawl_layer]\th piping layer.")
return ..()
@@ -6,7 +6,7 @@ var/minZ = 2
// Note that this assumes the ship's top is at z=1 and bottom at z=4
/obj/item/weapon/tank/jetpack/proc/move_z(cardinal, mob/user as mob)
if (user.z > 1)
user << "<span class='warning'>There is nothing of interest in that direction.</span>"
to_chat(user, "<span class='warning'>There is nothing of interest in that direction.</span>")
return
if(allow_thrust(0.01, user))
switch(cardinal)
@@ -21,14 +21,15 @@ var/minZ = 2
for(var/atom/A in T.contents)
if(T.density)
blocked = 1
user << "<span class='warning'>You bump into [T.name].</span>"
to_chat(user, "<span class='warning'>You bump into [T.name].</span>")
break
if(!blocked)
user.Move(T)
else
user << "<span class='warning'>You bump into the ship's plating.</span>"
to_chat(user, "<span class='warning'>You bump into the ship's plating.</span>")
else
user << "<span class='warning'>The ship's gravity well keeps you in orbit!</span>" // Assuming the ship starts on z level 1, you don't want to go past it
to_chat(user, "<span class='warning'>The ship's gravity well keeps you in orbit!</span>")// Assuming the ship starts on z level 1, you don't want to go past it


if (DOWN) // Going down!
if (user.z < 1) // If we aren't at the very bottom of the ship, or out in space
@@ -39,11 +40,11 @@ var/minZ = 2
for(var/atom/A in T.contents)
if(T.density)
blocked = 1
user << "<span class='warning'>You bump into [T.name].</span>"
to_chat(user, "<span class='warning'>You bump into [T.name].</span>")
break
if(!blocked)
user.Move(T)
else
user << "<span class='warning'>You bump into the ship's plating.</span>"
to_chat(user, "<span class='warning'>You bump into the ship's plating.</span>")
else
user << "<span class='warning'>The ship's gravity well keeps you in orbit!</span>"
to_chat(user, "<span class='warning'>The ship's gravity well keeps you in orbit!</span>")
@@ -98,7 +98,7 @@
del src

if(active)
M << "That [src] is being used."
to_chat(M, "That [src] is being used.")
return // It is a tiny airlock, only one at a time.

active = 1
@@ -30,12 +30,12 @@
if(istype(I, /obj/item/weapon/hatchet) && !stump)
if(indestructable)
//this bush marks the edge of the map, you can't destroy it
user << "<span class='warning'>You flail away at the undergrowth, but it's too thick here.</span>"
to_chat(user, "<span class='warning'>You flail away at the undergrowth, but it's too thick here.</span>")
else
user.visible_message("<span class='danger'><b>[user] begins clearing away [src].</b>","<span class='warning'>You begin clearing away [src].</span></span>")
spawn(rand(15,30))
if(get_dist(user,src) < 2)
user << "<span class='notice'>You clear away [src].</span>"
to_chat(user, "<span class='notice'>You clear away [src].</span>")
var/obj/item/stack/sheet/wood/W = new(src.loc)
W.amount = rand(3,15)
if(prob(50))
@@ -102,7 +102,7 @@ var/jungle_plants_init = 0
/obj/structure/jungle_plant/attack_hand(var/mob/user as mob)
if(fruits_left > 0)
fruits_left--
user << "<span class='notice'>You pick a fruit off [src].</span>"
to_chat(user, "<span class='notice'>You pick a fruit off [src].</span>")

var/obj/item/weapon/reagent_containers/food/snacks/grown/jungle_fruit/J = new (src.loc)
J.potency = plant_strength
@@ -116,4 +116,4 @@ var/jungle_plants_init = 0
fruit_overlay.Blend(rgb(fruit_r, fruit_g, fruit_b), ICON_ADD)
overlays += fruit_overlay
else
user << "<span class='warning'>There are no fruit left on [src].</span>"
to_chat(user, "<span class='warning'>There are no fruit left on [src].</span>")
@@ -141,13 +141,13 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
//have a max of 1000 moles suspended
if(held_plasma.toxins < transfer_ratio * 1000)
var/moles_covered = environment.return_pressure()*volume_covered/(environment.temperature * R_IDEAL_GAS_EQUATION)
//world << "<span class='notice'>moles_covered: [moles_covered]</span>"
// to_chat(world, "<span class='notice'>moles_covered: [moles_covered]</span>")
//
var/datum/gas_mixture/gas_covered = environment.remove(moles_covered)
var/datum/gas_mixture/plasma_captured = new /datum/gas_mixture()
//
plasma_captured.toxins = round(gas_covered.toxins * transfer_ratio)
//world << "<span class='warning'>[plasma_captured.toxins] moles of plasma captured</span>"
// to_chat(world, "<span class='warning'>[plasma_captured.toxins] moles of plasma captured</span>")
plasma_captured.temperature = gas_covered.temperature
plasma_captured.update_values()
//
@@ -181,7 +181,7 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
if(held_plasma.toxins > 1)
//lose a random amount of plasma back into the air, increased by the field strength (want to switch this over to frequency eventually)
var/loss_ratio = rand() * (0.05 + (0.05 * 50 / field_strength))
//world << "lost [loss_ratio*100]% of held plasma"
// to_chat(world, "lost [loss_ratio*100]% of held plasma")
//
var/datum/gas_mixture/plasma_lost = new
plasma_lost.temperature = held_plasma.temperature
@@ -306,7 +306,7 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
var/list/reactants_reacting_pool = dormant_reactant_quantities.Copy()
/*
for(var/reagent in dormant_reactant_quantities)
world << " before: [reagent]: [dormant_reactant_quantities[reagent]]"
to_chat(world, " before: [reagent]: [dormant_reactant_quantities[reagent]]")
*/

//cant have any reactions if there aren't any reactants present
@@ -326,7 +326,7 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
//pick one of the unprocessed reacting reagents randomly
var/cur_primary_reactant = pick(primary_reactant_pool)
primary_reactant_pool.Remove(cur_primary_reactant)
//world << "<span class='notice'>primary reactant chosen: [cur_primary_reactant]</span>"
// to_chat(world, "<span class='notice'>primary reactant chosen: [cur_primary_reactant]</span>")

//grab all the possible reactants to have a reaction with
var/list/possible_secondary_reactants = reactants_reacting_pool.Copy()
@@ -342,12 +342,12 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
continue
var/datum/fusion_reaction/cur_reaction = get_fusion_reaction(cur_primary_reactant, cur_secondary_reactant)
if(cur_reaction)
//world << "<span class='notice'>secondary reactant: [cur_secondary_reactant], [reaction_products.len]</span>"
// to_chat(world, "<span class='notice'>secondary reactant: [cur_secondary_reactant], [reaction_products.len]</span>")
possible_reactions.Add(cur_reaction)

//if there are no possible reactions here, abandon this primary reactant and move on
if(!possible_reactions.len)
//world << "<span class='notice'>no reactions</span>"
// to_chat(world, "<span class='notice'>no reactions</span>")
continue

//split up the reacting atoms between the possible reactions
@@ -420,12 +420,12 @@ Deuterium-tritium fusion: 4.5 x 10^7 K
//var/list/protonic_radiation = new
for(var/reactant in produced_reactants)
AddParticles(reactant, produced_reactants[reactant])
//world << "produced: [reactant], [dormant_reactant_quantities[reactant]]"
// to_chat(world, "produced: [reactant], [dormant_reactant_quantities[reactant]]")

//check whether there are reactants left, and add them back to the pool
for(var/reactant in reactants_reacting_pool)
AddParticles(reactant, reactants_reacting_pool[reactant])
//world << "retained: [reactant], [reactants_reacting_pool[reactant]]"
// to_chat(world, "retained: [reactant], [reactants_reacting_pool[reactant]]")

/obj/effect/rust_em_field/Destroy()
//radiate everything in one giant burst
@@ -84,7 +84,7 @@ max volume of plasma storeable by the field = the total volume of a number of ti

/obj/machinery/power/rust_core/weldToFloor(var/obj/item/weapon/weldingtool/WT, mob/user)
if(owned_field)
user << user << "<span class='warning'>Turn \the [src] off first!</span>"
to_chat(user, user << "<span class='warning'>Turn \the [src] off first!</span>")
return -1

if(..() == 1)
@@ -15,12 +15,12 @@
/obj/machinery/rust_fuel_assembly_port/attackby(var/obj/item/I, var/mob/user)
if(istype(I,/obj/item/weapon/fuel_assembly) && !opened)
if(cur_assembly)
user << "<span class='warning'>There is already a fuel rod assembly in there!</span>"
to_chat(user, "<span class='warning'>There is already a fuel rod assembly in there!</span>")
else
cur_assembly = I
user.drop_item(I, src)
icon_state = "port1"
user << "<span class='notice'>You insert [I] into [src]. Touch the panel again to insert [I] into the injector.</span>"
to_chat(user, "<span class='notice'>You insert [I] into [src]. Touch the panel again to insert [I] into the injector.</span>")

/obj/machinery/rust_fuel_assembly_port/attack_hand(mob/user)
add_fingerprint(user)
@@ -29,16 +29,16 @@

if(cur_assembly)
if(try_insert_assembly())
user << "<span class='notice'>\icon[src] [src] inserts it's fuel rod assembly into an injector.</span>"
to_chat(user, "<span class='notice'>\icon[src] [src] inserts it's fuel rod assembly into an injector.</span>")
else
if(eject_assembly())
user << "<span class='warning'>\icon[src] [src] ejects it's fuel assembly. Check the fuel injector status.</span>"
to_chat(user, "<span class='warning'>\icon[src] [src] ejects it's fuel assembly. Check the fuel injector status.</span>")
else if(try_draw_assembly())
user << "<span class='notice'>\icon[src] [src] draws a fuel rod assembly from an injector.</span>"
to_chat(user, "<span class='notice'>\icon[src] [src] draws a fuel rod assembly from an injector.</span>")
else if(try_draw_assembly())
user << "<span class='notice'>\icon[src] [src] draws a fuel rod assembly from an injector.</span>"
to_chat(user, "<span class='notice'>\icon[src] [src] draws a fuel rod assembly from an injector.</span>")
else
user << "<span class='warning'>\icon[src] [src] was unable to draw a fuel rod assembly from an injector.</span>"
to_chat(user, "<span class='warning'>\icon[src] [src] was unable to draw a fuel rod assembly from an injector.</span>")

/obj/machinery/rust_fuel_assembly_port/proc/try_insert_assembly()
var/success = 0
@@ -46,7 +46,8 @@
if(opened)
if(has_electronics & 1)
playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1)
user << "You begin removing the circuitboard" //lpeters - fixed grammar issues
to_chat(user, "You begin removing the circuitboard")//lpeters - fixed grammar issues

if(do_after(user, src, 50))
user.visible_message(\
"<span class='warning'>[user.name] has removed the circuitboard from [src.name]!</span>",\
@@ -57,22 +58,22 @@
else
opened = 0
icon_state = "port0"
user << "<span class='notice'>You close the maintenance cover.</span>"
to_chat(user, "<span class='notice'>You close the maintenance cover.</span>")
else
if(cur_assembly)
user << "<span class='warning'>You cannot open the cover while there is a fuel assembly inside.</span>"
to_chat(user, "<span class='warning'>You cannot open the cover while there is a fuel assembly inside.</span>")
else
opened = 1
user << "<span class='notice'>You open the maintenance cover.</span>"
to_chat(user, "<span class='notice'>You open the maintenance cover.</span>")
icon_state = "port2"
return

else if (istype(W, /obj/item/stack/cable_coil) && opened && !(has_electronics & 2))
var/obj/item/stack/cable_coil/C = W
if(C.amount < 10)
user << "<span class='warning'>You need more wires.</span>"
to_chat(user, "<span class='warning'>You need more wires.</span>")
return
user << "You start adding cables to the frame..."
to_chat(user, "You start adding cables to the frame...")
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, src, 20) && C.amount >= 10)
C.use(10)
@@ -83,7 +84,7 @@
return

else if (istype(W, /obj/item/weapon/wirecutters) && opened && (has_electronics & 2))
user << "You begin to cut the cables..."
to_chat(user, "You begin to cut the cables...")
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, src, 50))
new /obj/item/stack/cable_coil(loc,10)
@@ -94,20 +95,20 @@
return

else if (istype(W, /obj/item/weapon/module/rust_fuel_port) && opened && !(has_electronics & 1))
user << "You try to insert the port control board into the frame..."
to_chat(user, "You try to insert the port control board into the frame...")
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, src, 10))
has_electronics &= 1
user << "You place the port control board inside the frame."
to_chat(user, "You place the port control board inside the frame.")
del(W)
return

else if (istype(W, /obj/item/weapon/weldingtool) && opened && !has_electronics)
var/obj/item/weapon/weldingtool/WT = W
if (WT.get_fuel() < 3)
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
to_chat(user, "<span class='notice'>You need more welding fuel to complete this task.</span>")
return
user << "You start welding the port frame..."
to_chat(user, "You start welding the port frame...")
playsound(get_turf(src), 'sound/items/Welder.ogg', 50, 1)
if(do_after(user, src, 50))
if(!src || !WT.remove_fuel(3, user)) return
@@ -80,33 +80,35 @@ var/const/max_assembly_amount = 300
compressed_matter -= 10
ejected = 1
if(ejected)
usr << "<span class='notice'>\icon[src] [src] ejects some compressed matter units.</span>"
to_chat(usr, "<span class='notice'>\icon[src] [src] ejects some compressed matter units.</span>")
else
usr << "<span class='warning'>\icon[src] there are no more compressed matter units in [src].</span>"
to_chat(usr, "<span class='warning'>\icon[src] there are no more compressed matter units in [src].</span>")

if( href_list["activate"] )
//world << "<span class='notice'>New fuel rod assembly</span>"
// to_chat(world, "<span class='notice'>New fuel rod assembly</span>")
var/obj/item/weapon/fuel_assembly/F = new(src)
var/fail = 0
var/old_matter = compressed_matter
for(var/reagent in new_assembly_quantities)
var/req_matter = round(new_assembly_quantities[reagent] / 30)
//world << "[reagent] matter: [req_matter]/[compressed_matter]"
// to_chat(world, "[reagent] matter: [req_matter]/[compressed_matter]")
if(req_matter <= compressed_matter)
F.rod_quantities[reagent] = new_assembly_quantities[reagent]
compressed_matter -= req_matter
if(compressed_matter < 1)
compressed_matter = 0
else
/*world << "bad reagent: [reagent], [req_matter > compressed_matter ? "req_matter > compressed_matter"\
: (req_matter < compressed_matter ? "req_matter < compressed_matter" : "req_matter == compressed_matter")]"*/
/*
to_chat(world, "bad reagent: [reagent], [req_matter > compressed_matter ? "req_matter > compressed_matter"\)
: (req_matter < compressed_matter ? "req_matter < compressed_matter" : "req_matter == compressed_matter")]"
*/
fail = 1
break
//world << "<span class='notice'>[reagent]: new_assembly_quantities[reagent]<br></span>"
// to_chat(world, "<span class='notice'>[reagent]: new_assembly_quantities[reagent]<br></span>")
if(fail)
del(F)
compressed_matter = old_matter
usr << "<span class='warning'>\icon[src] [src] flashes red: \'Out of matter.\'</span>"
to_chat(usr, "<span class='warning'>\icon[src] [src] flashes red: \'Out of matter.\'</span>")
else
F.loc = src.loc//get_step(get_turf(src), src.dir)
F.percent_depleted = 0
@@ -47,7 +47,8 @@
if(opened)
if(has_electronics & 1)
playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1)
user << "You begin removing the circuitboard" //lpeters - fixed grammar issues
to_chat(user, "You begin removing the circuitboard")//lpeters - fixed grammar issues

if(do_after(user, src, 50))
user.visible_message(\
"<span class='warning'>[user.name] has removed the circuitboard from [src.name]!</span>",\
@@ -58,48 +59,48 @@
else
opened = 0
icon_state = "fuel_compressor0"
user << "<span class='notice'>You close the maintenance cover.</span>"
to_chat(user, "<span class='notice'>You close the maintenance cover.</span>")
else
if(compressed_matter > 0)
user << "<span class='warning'>You cannot open the cover while there is compressed matter inside.</span>"
to_chat(user, "<span class='warning'>You cannot open the cover while there is compressed matter inside.</span>")
else
opened = 1
user << "<span class='notice'>You open the maintenance cover.</span>"
to_chat(user, "<span class='notice'>You open the maintenance cover.</span>")
icon_state = "fuel_compressor1"
return

else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card
if(opened)
user << "You must close the cover to swipe an ID card."
to_chat(user, "You must close the cover to swipe an ID card.")
else
if(src.allowed(usr))
locked = !locked
user << "You [ locked ? "lock" : "unlock"] the compressor interface."
to_chat(user, "You [ locked ? "lock" : "unlock"] the compressor interface.")
update_icon()
else
user << "<span class='warning'>Access denied.</span>"
to_chat(user, "<span class='warning'>Access denied.</span>")
return

else if (istype(W, /obj/item/weapon/card/emag) && !emagged) // trying to unlock with an emag card
if(opened)
user << "You must close the cover to swipe an ID card."
to_chat(user, "You must close the cover to swipe an ID card.")
else
flick("apc-spark", src)
if (do_after(user, src,6))
if(prob(50))
emagged = 1
locked = 0
user << "You emag the port interface."
to_chat(user, "You emag the port interface.")
else
user << "You fail to [ locked ? "unlock" : "lock"] the compressor interface."
to_chat(user, "You fail to [ locked ? "unlock" : "lock"] the compressor interface.")
return

else if (istype(W, /obj/item/stack/cable_coil) && opened && !(has_electronics & 2))
var/obj/item/stack/cable_coil/C = W
if(C.amount < 10)
user << "<span class='warning'>You need more wires.</span>"
to_chat(user, "<span class='warning'>You need more wires.</span>")
return
user << "You start adding cables to the compressor frame..."
to_chat(user, "You start adding cables to the compressor frame...")
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, src, 20) && C.amount >= 10)
C.use(10)
@@ -110,7 +111,7 @@
return

else if (istype(W, /obj/item/weapon/wirecutters) && opened && (has_electronics & 2))
user << "You begin to cut the cables..."
to_chat(user, "You begin to cut the cables...")
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, src, 50))
new /obj/item/stack/cable_coil(loc,10)
@@ -121,20 +122,20 @@
return

else if (istype(W, /obj/item/weapon/module/rust_fuel_compressor) && opened && !(has_electronics & 1))
user << "You try to insert the circuitboard into the frame..."
to_chat(user, "You try to insert the circuitboard into the frame...")
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, src, 10))
has_electronics &= 1
user << "You place the circuitboard inside the frame."
to_chat(user, "You place the circuitboard inside the frame.")
qdel(W)
return

else if (istype(W, /obj/item/weapon/weldingtool) && opened && !has_electronics)
var/obj/item/weapon/weldingtool/WT = W
if (WT.get_fuel() < 3)
user << "<span class='notice'>You need more welding fuel to complete this task.</span>"
to_chat(user, "<span class='notice'>You need more welding fuel to complete this task.</span>")
return
user << "You start welding the compressor frame..."
to_chat(user, "You start welding the compressor frame...")
playsound(get_turf(src), 'sound/items/Welder.ogg', 50, 1)
if(do_after(user, src, 50))
if(!src || !WT.remove_fuel(3, user)) return
@@ -35,7 +35,7 @@

/obj/machinery/power/rust_fuel_injector/wrenchAnchor(mob/user)
if(injecting)
user << "Turn off the [src] first."
to_chat(user, "Turn off the [src] first.")
return -1
return ..()

@@ -62,13 +62,13 @@

if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))
if(emagged)
user << "<span class='warning'>The lock seems to be broken</span>"
to_chat(user, "<span class='warning'>The lock seems to be broken</span>")
return
if(src.allowed(user))
src.locked = !src.locked
user << "The controls are now [src.locked ? "locked." : "unlocked."]"
to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]")
else
user << "<span class='warning'>Access denied.</span>"
to_chat(user, "<span class='warning'>Access denied.</span>")
return

if(istype(W, /obj/item/weapon/fuel_assembly) && !cur_assembly)
@@ -164,7 +164,7 @@
if( href_list["fuel_usage"] )
var/new_usage = text2num(input("Enter new fuel usage (0.01% - 100%)", "Modifying fuel usage", fuel_usage * 100))
if(!new_usage)
usr << "<span class='warning'>That's not a valid number.</span>"
to_chat(usr, "<span class='warning'>That's not a valid number.</span>")
return
new_usage = max(new_usage, 0.01)
new_usage = min(new_usage, 100)
@@ -200,15 +200,15 @@
if(cur_assembly)
var/amount_left = 0
for(var/reagent in cur_assembly.rod_quantities)
//world << "checking [reagent]"
// to_chat(world, "checking [reagent]")
if(cur_assembly.rod_quantities[reagent] > 0)
//world << " rods left: [cur_assembly.rod_quantities[reagent]]"
// to_chat(world, " rods left: [cur_assembly.rod_quantities[reagent]]")
var/amount = cur_assembly.rod_quantities[reagent] * fuel_usage
var/numparticles = round(amount * 1000)
if(numparticles < 1)
numparticles = 1
//world << " amount: [amount]"
//world << " numparticles: [numparticles]"
// to_chat(world, " amount: [amount]")
// to_chat(world, " numparticles: [numparticles]")
//

var/obj/effect/accelerated_particle/A = new/obj/effect/accelerated_particle(get_turf(src), dir)
@@ -87,7 +87,7 @@

/obj/machinery/rust/gyrotron/weldToFloor(var/obj/item/weapon/weldingtool/WT, var/mob/user)
if(emitting)
user << "<span class='warning'>Turn \the [src] off first!</span>"
to_chat(user, "<span class='warning'>Turn \the [src] off first!</span>")
return -1
. = ..()

@@ -100,7 +100,7 @@
return

if(anchored)
usr << "<span class='notify'>\the [src] is anchored to the floor!</span>"
to_chat(usr, "<span class='notify'>\the [src] is anchored to the floor!</span>")
return

dir = turn(dir, -90)
@@ -114,7 +114,7 @@
return

if(anchored)
usr << "<span class='notify'>\the [src] is anchored to the floor!</span>"
to_chat(usr, "<span class='notify'>\the [src] is anchored to the floor!</span>")
return

dir = turn(dir, 90)
@@ -95,7 +95,7 @@
if(href_list["modifypower"])
var/new_val = input("Enter new emission power level (0.001 - 0.01)", "Modifying power level (TJ)", gyro.mega_energy) as num
if(!new_val)
usr << "<span class='warning'>That's not a valid number.</span>"
to_chat(usr, "<span class='warning'>That's not a valid number.</span>")
return 1

gyro.mega_energy = Clamp(new_val, 0.001, 0.01)
@@ -107,7 +107,7 @@
if(href_list["modifyrate"])
var/new_val = input("Enter new emission rate (1 - 10)", "Modifying emission rate (1/10th sec)", gyro.rate) as num
if(!new_val)
usr << "<span class='warning'>That's not a valid number.</span>"
to_chat(usr, "<span class='warning'>That's not a valid number.</span>")
return 1

gyro.rate = Clamp(new_val, 10, 100)
@@ -118,7 +118,7 @@
if(href_list["modifyfreq"])
var/new_val = input("Enter new emission frequency (1 - 50000)", "Modifying emission frequency (GHz)", gyro.frequency) as num
if(!new_val)
usr << "<span class='warning'>That's not a valid number.</span>"
to_chat(usr, "<span class='warning'>That's not a valid number.</span>")
return 1

gyro.frequency = Clamp(new_val, 1, 50000)
@@ -44,5 +44,5 @@

/obj/effect/rust_particle_catcher/Bumped(atom/AM)
if(ismob(AM) && density && prob(10))
AM << "<span class='warning'>A powerful force pushes you back.</span>"
to_chat(AM, "<span class='warning'>A powerful force pushes you back.</span>")
..()
@@ -40,7 +40,7 @@
/obj/machinery/shield_capacitor/emag(mob/user)
if(prob(75))
src.locked = !src.locked
user << "Controls are now [src.locked ? "locked." : "unlocked."]"
to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]")
updateDialog()
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
@@ -70,10 +70,10 @@
var/obj/item/weapon/card/id/C = W
if(access_captain in C.access || access_security in C.access || access_engine in C.access)
src.locked = !src.locked
user << "Controls are now [src.locked ? "locked." : "unlocked."]"
to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]")
updateDialog()
else
user << "<span class='warning'>Access denied.</span>"
to_chat(user, "<span class='warning'>Access denied.</span>")

/obj/machinery/shield_capacitor/attack_paw(user as mob)
return src.attack_hand(user)
@@ -178,7 +178,7 @@
set src in oview(1)

if (src.anchored)
usr << "It is fastened to the floor!"
to_chat(usr, "It is fastened to the floor!")
return
src.dir = turn(src.dir, 270)
return
@@ -49,7 +49,7 @@
/obj/machinery/shield_gen/emag(mob/user)
if(prob(75))
src.locked = !src.locked
user << "Controls are now [src.locked ? "locked." : "unlocked."]"
to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]")
updateDialog()
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
@@ -79,10 +79,10 @@
var/obj/item/weapon/card/id/C = W
if(access_captain in C.access || access_security in C.access || access_engine in C.access)
src.locked = !src.locked
user << "Controls are now [src.locked ? "locked." : "unlocked."]"
to_chat(user, "Controls are now [src.locked ? "locked." : "unlocked."]")
updateDialog()
else
user << "<span class='warning'>Access denied.</span>"
to_chat(user, "<span class='warning'>Access denied.</span>")

/obj/machinery/shield_gen/attack_paw(user as mob)
return src.attack_hand(user)
@@ -286,14 +286,14 @@
del covered_turfs

for(var/mob/M in view(5,src))
M << "\icon[src] You hear heavy droning start up."
to_chat(M, "\icon[src] You hear heavy droning start up.")
else
for(var/obj/effect/energy_field/D in field)
field.Remove(D)
del D

for(var/mob/M in view(5,src))
M << "\icon[src] You hear heavy droning fade out."
to_chat(M, "\icon[src] You hear heavy droning fade out.")

//grab the border tiles in a circle around this machine
/obj/machinery/shield_gen/proc/get_shielded_turfs()
@@ -33,7 +33,7 @@
set src in oview(1)

if (src.anchored || usr:stat)
usr << "It is fastened to the floor!"
to_chat(usr, "It is fastened to the floor!")
return 0
src.dir = turn(src.dir, 90)
return 1
@@ -54,19 +54,19 @@
if(!src.locked)
if(src.active==1)
src.active = 0
user << "You turn off the [src]."
to_chat(user, "You turn off the [src].")
src.use_power = 1
else
src.active = 1
user << "You turn on the [src]."
to_chat(user, "You turn on the [src].")
src.shot_number = 0
src.fire_delay = 100
src.use_power = 2
update_icon()
else
user << "<span class='warning'>The controls are locked!</span>"
to_chat(user, "<span class='warning'>The controls are locked!</span>")
else
user << "<span class='warning'>The [src] needs to be firmly secured to the floor first.</span>"
to_chat(user, "<span class='warning'>The [src] needs to be firmly secured to the floor first.</span>")
return 1


@@ -129,17 +129,17 @@

if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))
if(emagged)
user << "<span class='warning'>The lock seems to be broken</span>"
to_chat(user, "<span class='warning'>The lock seems to be broken</span>")
return
if(src.allowed(user))
if(active)
src.locked = !src.locked
user << "The controls are now [src.locked ? "locked." : "unlocked."]"
to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]")
else
src.locked = 0 //just in case it somehow gets locked
user << "<span class='warning'>The controls can only be locked when the [src] is online</span>"
to_chat(user, "<span class='warning'>The controls can only be locked when the [src] is online</span>")
else
user << "<span class='warning'>Access denied.</span>"
to_chat(user, "<span class='warning'>Access denied.</span>")
return
return

@@ -264,5 +264,5 @@
if (src.health <= 0)
src.die()
else
M << "<span class='good'>That object is useless to you.</span>"
to_chat(M, "<span class='good'>That object is useless to you.</span>")
return
@@ -37,7 +37,7 @@

playsound(target.loc, pick(snap_sound), 100, 1, -1)
visible_message("<span class='danger'>[src] [response_snap] [target]!</span>")
target << "<span class='alert'><b>[response_snap_target]</b> Your vision fades away...</span>"
to_chat(target, "<span class='alert'><b>[response_snap_target]</b> Your vision fades away...</span>")
target.attack_log += text("\[[time_stamp()]\] <font color='red'>Had his neck snapped by [src]!</font>")
log_admin("[target] ([target.ckey]) had his neck snapped by an active [src].")
message_admins("ALERT: <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>[target.real_name]</a> had his neck snapped by an active [src].")
@@ -20,17 +20,17 @@
if (istype(W,/obj/item/clothing/mask/cigarette) || istype(W, /obj/item/weapon/match) || istype(W, /obj/item/weapon/cigbutt))
if(user)
if (contents.len >= max_butts)
user << "This ashtray is full."
to_chat(user, "This ashtray is full.")
return
user.drop_item(W, src)
var/obj/item/clothing/mask/cigarette/cig = W
if(istype(cig, /obj/item/weapon/cigbutt))
user << "You drop the [cig] into [src]."
to_chat(user, "You drop the [cig] into [src].")
if (istype(W,/obj/item/clothing/mask/cigarette) || istype(W, /obj/item/weapon/match))
if (cig.lit == 1)
src.visible_message("[user] crushes [cig] in [src], putting it out.")
else if (cig.lit == 0)
user << "You place [cig] in [src] without even lighting it. Why would you do that?"
to_chat(user, "You place [cig] in [src] without even lighting it. Why would you do that?")
else if (cig.lit == -1)
src.visible_message("[user] places [cig] in [src].")
add_fingerprint(user)
@@ -42,7 +42,7 @@
desc = empty_desc + " It's half-filled."
else
health = max(0,health - W.force)
user << "You hit [src] with [W]."
to_chat(user, "You hit [src] with [W].")
if (health < 1)
die()
return
@@ -72,7 +72,8 @@

/datum/medical_effect/headache/cure(mob/living/carbon/human/H)
if(H.reagents.has_reagent("alkysine") || H.reagents.has_reagent("tramadol"))
//H << "<span class='warning'>Your head stops throbbing..</span>" // Halt spam.
// to_chat(H, "<span class='warning'>Your head stops throbbing..</span>")// Halt spam.

return 1
return 0

@@ -94,7 +95,7 @@

/datum/medical_effect/bad_stomach/cure(mob/living/carbon/human/H)
if(H.reagents.has_reagent("anti_toxin"))
H << "<span class='warning'>Your stomach feels a little better now..</span>"
to_chat(H, "<span class='warning'>Your stomach feels a little better now..</span>")
return 1
return 0

@@ -119,7 +120,7 @@

/datum/medical_effect/cramps/cure(mob/living/carbon/human/H)
if(H.reagents.has_reagent("inaprovaline"))
H << "<span class='warning'>The cramps let up..</span>"
to_chat(H, "<span class='warning'>The cramps let up..</span>")
return 1
return 0

@@ -144,6 +145,6 @@

/datum/medical_effect/itch/cure(mob/living/carbon/human/H)
if(H.reagents.has_reagent("inaprovaline"))
H << "<span class='warning'>The itching stops..</span>"
to_chat(H, "<span class='warning'>The itching stops..</span>")
return 1
return 0
@@ -34,7 +34,7 @@

/obj/item/demote_chip/attack_self(mob/user as mob)
if(target_name != null) //Used hand-labeler as example
user << "<span class='notice'>The target name cannot be reset!</span>"
to_chat(user, "<span class='notice'>The target name cannot be reset!</span>")
return
else
var/str = copytext(reject_bad_text(input(user,"Enter the properly capitalized name for demotion","Set name","") as text|null),1,MAX_NAME_LEN)
@@ -46,7 +46,7 @@
target_name = str
name = "[target_name]'s demotion microchip"
desc = desc + " Stamped by:"
user << "<span class='notice'>The demotion microchip for [src.target_name] is now ready to be stamped.</span>"
to_chat(user, "<span class='notice'>The demotion microchip for [src.target_name] is now ready to be stamped.</span>")

/obj/item/demote_chip/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I, /obj/item/weapon/stamp))
@@ -56,39 +56,39 @@
if(cap == 0)
desc = desc + "/Captain"
cap = 1
user << "<span class='notice'>You stamp the demotion microchip of [target_name].</span>"
to_chat(user, "<span class='notice'>You stamp the demotion microchip of [target_name].</span>")
if(istype(S, /obj/item/weapon/stamp/hop))
if(hop == 0)
desc = desc + "/HoP"
hop = 1
user << "<span class='notice'>You stamp the demotion microchip of [target_name].</span>"
to_chat(user, "<span class='notice'>You stamp the demotion microchip of [target_name].</span>")
if(istype(S, /obj/item/weapon/stamp/hos))
if(hos == 0)
desc = desc + "/HoS"
hos = 1
user << "<span class='notice'>You stamp the demotion microchip of [target_name].</span>"
to_chat(user, "<span class='notice'>You stamp the demotion microchip of [target_name].</span>")
if(istype(S, /obj/item/weapon/stamp/ce))
if(ce == 0)
desc = desc + "/CE"
ce = 1
user << "<span class='notice'>You stamp the demotion microchip of [target_name].</span>"
to_chat(user, "<span class='notice'>You stamp the demotion microchip of [target_name].</span>")
if(istype(S, /obj/item/weapon/stamp/rd))
if(rd == 0)
desc = desc + "/RD"
rd = 1
user << "<span class='notice'>You stamp the demotion microchip of [target_name].</span>"
to_chat(user, "<span class='notice'>You stamp the demotion microchip of [target_name].</span>")
if(istype(S, /obj/item/weapon/stamp/cmo))
if(cmo == 0)
desc = desc + "/CMO"
cmo = 1
user << "<span class='notice'>You stamp the demotion microchip of [target_name].</span>"
to_chat(user, "<span class='notice'>You stamp the demotion microchip of [target_name].</span>")
if(istype(S, /obj/item/weapon/stamp/clown))
if(clown == 0)
desc = desc + "/HONK"
clown = 1
user << "<span class='notice'>You stamp the demotion microchip of [target_name].</span>"
to_chat(user, "<span class='notice'>You stamp the demotion microchip of [target_name].</span>")
else
user << "<span class='notice'>The chip has not been initialized.</span>"
to_chat(user, "<span class='notice'>The chip has not been initialized.</span>")
else
return ..()

@@ -97,9 +97,9 @@
if(istype(I, /obj/item/demote_chip/))
var/obj/item/demote_chip/DE = I
if(registered_name != DE.target_name)
user << "<span class='notice'>Failed to apply, names do not match.</span>"
to_chat(user, "<span class='notice'>Failed to apply, names do not match.</span>")
else if(bans != null)
user << "<span class='notice'>This card already has a microchip applied</span>"
to_chat(user, "<span class='notice'>This card already has a microchip applied</span>")
else
icon_state = "centcom_old"
bans = "9" //if get_region_accesses ever uses 9 we're fucked
@@ -112,11 +112,11 @@
if(istype(I, /obj/item/demote_chip))
var/obj/item/demote_chip/D = I
if(registered_name != D.target_name)
user << "<span class='notice'>Failed to apply, names do not match.</span>"
to_chat(user, "<span class='notice'>Failed to apply, names do not match.</span>")
else if(bans != null)
user << "<span class='notice'>This card already has a microchip applied</span>"
to_chat(user, "<span class='notice'>This card already has a microchip applied</span>")
else if(icon_state == "gold")
user << "<span class='notice'>This microchip cannot apply to this card type.</span>"
to_chat(user, "<span class='notice'>This microchip cannot apply to this card type.</span>")
else

if(D.cap == 1)
@@ -139,7 +139,7 @@
access -= get_region_accesses(2)
bans = bans + "2"
if(bans == null)
user << "<span class='notice'>You require at least one stamp.</span>"
to_chat(user, "<span class='notice'>You require at least one stamp.</span>")
return
icon_state = "centcom_old"
del(D)
@@ -114,18 +114,18 @@ log transactions
T.time = worldtime2text()
authenticated_account.transaction_log.Add(T)

user << "<span class='info'>You insert [I] into [src].</span>"
to_chat(user, "<span class='info'>You insert [I] into [src].</span>")
src.attack_hand(user)
qdel(I)
else
..()

/obj/machinery/atm/attack_hand(mob/user as mob,var/fail_safe=0)
if(isobserver(user))
user << "<span class='warning'>Your ghostly limb passes right through \the [src].</span>"
to_chat(user, "<span class='warning'>Your ghostly limb passes right through \the [src].</span>")
return
if(istype(user, /mob/living/silicon))
user << "<span class='warning'>Artificial unit recognized. Artificial units do not currently receive monetary compensation, as per NanoTrasen regulation #1005.</span>"
to_chat(user, "<span class='warning'>Artificial unit recognized. Artificial units do not currently receive monetary compensation, as per NanoTrasen regulation #1005.</span>")
return
if(get_dist(src,user) <= 1)
//check to see if the user has low security enabled
@@ -253,7 +253,7 @@ log transactions
var/target_account_number = text2num(href_list["target_acc_number"])
var/transfer_purpose = href_list["purpose"]
if(linked_db.charge_to_account(target_account_number, authenticated_account.owner_name, transfer_purpose, machine_id, transfer_amount))
usr << "\icon[src]<span class='info'>Funds transfer successful.</span>"
to_chat(usr, "\icon[src]<span class='info'>Funds transfer successful.</span>")
authenticated_account.money -= transfer_amount

//create an entry in the account transaction log
@@ -266,10 +266,10 @@ log transactions
T.amount = "-[transfer_amount]"
authenticated_account.transaction_log.Add(T)
else
usr << "\icon[src]<span class='warning'>Funds transfer failed.</span>"
to_chat(usr, "\icon[src]<span class='warning'>Funds transfer failed.</span>")

else
usr << "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>"
to_chat(usr, "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>")
if("view_screen")
view_screen = text2num(href_list["view_screen"])
if("change_security_level")
@@ -303,11 +303,11 @@ log transactions
T.time = worldtime2text()
failed_account.transaction_log.Add(T)
else
usr << "<span class='warning'>\icon[src] Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining.</span>"
to_chat(usr, "<span class='warning'>\icon[src] Incorrect pin/account combination entered, [max_pin_attempts - number_incorrect_tries] attempts remaining.</span>")
previous_account_number = tried_account_num
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 1)
else
usr << "<span class='warning'>\icon[src] incorrect pin/account combination entered.</span>"
to_chat(usr, "<span class='warning'>\icon[src] incorrect pin/account combination entered.</span>")
number_incorrect_tries = 0
else
playsound(src, 'sound/machines/twobeep.ogg', 50, 1)
@@ -323,7 +323,7 @@ log transactions
T.time = worldtime2text()
authenticated_account.transaction_log.Add(T)

usr << "<span class='notice'>\icon[src] Access granted. Welcome user '[authenticated_account.owner_name].'</span>"
to_chat(usr, "<span class='notice'>\icon[src] Access granted. Welcome user '[authenticated_account.owner_name].'</span>")

previous_account_number = tried_account_num
if("withdrawal")
@@ -336,7 +336,7 @@ log transactions

//remove the money
if(amount > 10000) // prevent crashes
usr << "<span class='notice'>The ATM's screen flashes, 'Maximum single withdrawl limit reached, defaulting to 10,000.'</span>"
to_chat(usr, "<span class='notice'>The ATM's screen flashes, 'Maximum single withdrawl limit reached, defaulting to 10,000.'</span>")
amount = 10000
authenticated_account.money -= amount
withdraw_arbitrary_sum(usr,amount)
@@ -351,11 +351,11 @@ log transactions
T.time = worldtime2text()
authenticated_account.transaction_log.Add(T)
else
usr << "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>"
to_chat(usr, "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>")
if("withdraw_to_wallet")
var/amount = max(text2num(href_list["funds_amount"]),0)
if(!held_card)
usr << "<span class='notice'>You must insert your ID card before you can transfer funds to it.</span>"
to_chat(usr, "<span class='notice'>You must insert your ID card before you can transfer funds to it.</span>")
return
if(amount <= 0)
alert("That is not a valid amount.")
@@ -383,11 +383,11 @@ log transactions
T.time = worldtime2text()
held_card.virtual_wallet.transaction_log.Add(T)
else
usr << "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>"
to_chat(usr, "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>")
if("deposit_from_wallet")
var/amount = max(text2num(href_list["funds_amount"]),0)
if(!held_card)
usr << "<span class='notice'>You must insert your ID card before you can transfer funds from its virtual wallet.</span>"
to_chat(usr, "<span class='notice'>You must insert your ID card before you can transfer funds from its virtual wallet.</span>")
return
if(amount <= 0)
alert("That is not a valid amount.")
@@ -415,11 +415,11 @@ log transactions
T.time = worldtime2text()
held_card.virtual_wallet.transaction_log.Add(T)
else
usr << "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>"
to_chat(usr, "\icon[src]<span class='warning'>You don't have enough funds to do that!</span>")
if("balance_statement")
if(authenticated_account)
if(world.timeofday < lastprint + PRINT_DELAY)
usr << "<span class='notice'>The [src.name] flashes an error on its display.</span>"
to_chat(usr, "<span class='notice'>The [src.name] flashes an error on its display.</span>")
return
lastprint = world.timeofday
var/obj/item/weapon/paper/R = new(src.loc)
@@ -471,7 +471,7 @@ log transactions
var/mob/living/carbon/human/H = user
if(istype(H.wear_id,/obj/item/weapon/storage/wallet))
dispense_cash(arbitrary_sum,H.wear_id)
usr << "\icon[src]<span class='notice'>Funds were transferred into your physical wallet!</span>"
to_chat(usr, "\icon[src]<span class='notice'>Funds were transferred into your physical wallet!</span>")
return
dispense_cash(arbitrary_sum,get_step(get_turf(src),turn(dir,180))) // Spawn on the ATM.

@@ -488,7 +488,7 @@ log transactions
if(I)
authenticated_account = linked_db.attempt_account_access(I.associated_account_number)
if(authenticated_account)
human_user << "<span class='notice'>\icon[src] Access granted. Welcome user '[authenticated_account.owner_name].'</span>"
to_chat(human_user, "<span class='notice'>\icon[src] Access granted. Welcome user '[authenticated_account.owner_name].'</span>")

//create a transaction log entry
var/datum/transaction/T = new()
@@ -294,7 +294,7 @@ var/global/list/atmos_controllers = list()
if(input_temperature==null)
return 0
if(input_temperature > max_temperature || input_temperature < min_temperature)
usr << "Temperature must be between [min_temperature]C and [max_temperature]C"
to_chat(usr, "Temperature must be between [min_temperature]C and [max_temperature]C")
else
current.target_temperature = input_temperature + T0C
return 1
@@ -60,18 +60,18 @@
if(icon_state == "[icon_base]_start")
start = get_turf(src)
if(istype(start,/turf/space))
usr << "<span class='warning'>You can't place [src] in space</span>"
to_chat(usr, "<span class='warning'>You can't place [src] in space</span>")
return
usr << "<span class='notice'>You place the first end of [src].</span>"
to_chat(usr, "<span class='notice'>You place the first end of [src].</span>")
icon_state = "[icon_base]_stop"
else
icon_state = "[icon_base]_start"
end = get_turf(src)
if(istype(end,/turf/space))
usr << "<span class='warning'>You can't place [src] in space</span>"
to_chat(usr, "<span class='warning'>You can't place [src] in space</span>")
return
if(start.y != end.y && start.x != end.x || start.z != end.z)
usr << "<span class='notice'>[src] can only be laid in a straight line.</span>"
to_chat(usr, "<span class='notice'>[src] can only be laid in a straight line.</span>")
return

var/turf/cur = start
@@ -98,7 +98,7 @@
break
cur = get_step_towards(cur,end)
if (!can_place)
usr << "<span class='warning'>You can't run [src] through that!</span>"
to_chat(usr, "<span class='warning'>You can't run [src] through that!</span>")
return

cur = start
@@ -112,7 +112,7 @@
P.icon_state = "[P.icon_base]_[dir]"
cur = get_step_towards(cur,end)
//is_blocked_turf(var/turf/T)
usr << "<span class='notice'>You finish placing [src].</span>"
to_chat(usr, "<span class='notice'>You finish placing [src].</span>")
user.visible_message("<span class='warning'>[user] finishes placing [src].</span>") //Now you know who to whack with a stun baton

/obj/item/taperoll/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
@@ -125,7 +125,7 @@
if(locate(tape_type) in turf) //Don't you dare stack tape // can be remove for a new feature
return

user << "<span class='notice'>You start placing [src].</span>"
to_chat(user, "<span class='notice'>You start placing [src].</span>")

if(!do_mob(user, target, 30))
return
@@ -134,7 +134,7 @@
tape.icon_state = "[icon_base]_door"
tape.layer = 3.2

user << "<span class='notice'>You placed [src].</span>"
to_chat(user, "<span class='notice'>You placed [src].</span>")

/obj/item/tape/Bumped(M as mob)
if(src.allowed(M))
@@ -174,7 +174,7 @@

/obj/item/tape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob)
if(user.a_intent == I_HELP && (!W || !W.is_sharp()) && !src.allowed(user))
user << "<span class='notice'>You can't break [src] [W ? "with \the [W] " : ""]unless you use force.</span>"
to_chat(user, "<span class='notice'>You can't break [src] [W ? "with \the [W] " : ""]unless you use force.</span>")
return
user.visible_message("<span class='warning'>[user] breaks [src]!</span>")

@@ -81,7 +81,7 @@
set src in view(usr, 1)
set name = "Print Data"
if(usr.stat || !(istype(usr,/mob/living/carbon/human)) || (usr.status_flags & FAKEDEATH))
usr << "No."
to_chat(usr, "No.")
return

var/scan_data = ""
@@ -187,16 +187,16 @@
src.wdata = list()
src.chemtraces = list()
src.timeofdeath = null
user << "<span class='warning'>A new patient has been registered.. Purging data for previous patient.</span>"
to_chat(user, "<span class='warning'>A new patient has been registered.. Purging data for previous patient.</span>")

src.timeofdeath = M.timeofdeath

var/datum/organ/external/S = M.get_organ(user.zone_sel.selecting)
if(!S)
usr << "<b>You can't scan this body part.</b>"
to_chat(usr, "<b>You can't scan this body part.</b>")
return
if(!S.open)
usr << "<b>You have to cut the limb open first!</b>"
to_chat(usr, "<b>You have to cut the limb open first!</b>")
return
for(var/mob/O in viewers(M))
O.show_message("<span class='warning'>[user.name] scans the wounds on [M.name]'s [S.display_name] with \the [src.name]</span>", 1)
@@ -78,43 +78,43 @@
Click()
switch(master.cl.buildmode)
if(1)
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Click and drag to do a fill operation</span>"
usr << "<span class='notice'>Left Mouse Button = Construct / Upgrade</span>"
usr << "<span class='notice'>Right Mouse Button = Deconstruct / Delete / Downgrade</span>"
usr << "<span class='notice'>Left Mouse Button + ctrl = R-Window</span>"
usr << "<span class='notice'>Left Mouse Button + alt = Airlock</span>"
usr << ""
usr << "<span class='notice'>Use the button in the upper left corner to</span>"
usr << "<span class='notice'>change the direction of built objects.</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Click and drag to do a fill operation</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button = Construct / Upgrade</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button = Deconstruct / Delete / Downgrade</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button + ctrl = R-Window</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button + alt = Airlock</span>")
to_chat(usr, "")
to_chat(usr, "<span class='notice'>Use the button in the upper left corner to</span>")
to_chat(usr, "<span class='notice'>change the direction of built objects.</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
if(2)
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Click and drag to do a fill operation</span>"
usr << "<span class='notice'>Right Mouse Button on buildmode button = Set object type</span>"
usr << "<span class='notice'>Left Mouse Button on turf/obj = Place objects</span>"
usr << "<span class='notice'>Right Mouse Button = Delete objects</span>"
usr << "<span class='notice'>Middle Mouse Button = Copy atom</span>"
usr << ""
usr << "<span class='notice'>Ctrl+Shift+Left Mouse Button = Sets bottom left corner for fill mode</span>"
usr << "<span class='notice'>Ctrl+Shift+Right Mouse Button = Sets top right corner for fill mode</span>"

usr << ""
usr << "<span class='notice'>Use the button in the upper left corner to</span>"
usr << "<span class='notice'>change the direction of built objects.</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Click and drag to do a fill operation</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on buildmode button = Set object type</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button on turf/obj = Place objects</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button = Delete objects</span>")
to_chat(usr, "<span class='notice'>Middle Mouse Button = Copy atom</span>")
to_chat(usr, "")
to_chat(usr, "<span class='notice'>Ctrl+Shift+Left Mouse Button = Sets bottom left corner for fill mode</span>")
to_chat(usr, "<span class='notice'>Ctrl+Shift+Right Mouse Button = Sets top right corner for fill mode</span>")

to_chat(usr, "")
to_chat(usr, "<span class='notice'>Use the button in the upper left corner to</span>")
to_chat(usr, "<span class='notice'>change the direction of built objects.</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
if(3)
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Click and drag to do a mass edit operation</span>"
usr << "<span class='notice'>Right Mouse Button on buildmode button = Select var(type) & value</span>"
usr << "<span class='notice'>Left Mouse Button on turf/obj/mob = Set var(type) & value</span>"
usr << "<span class='notice'>Right Mouse Button on turf/obj/mob = Reset var's value</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Click and drag to do a mass edit operation</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on buildmode button = Select var(type) & value</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button on turf/obj/mob = Set var(type) & value</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on turf/obj/mob = Reset var's value</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
if(4)
usr << "<span class='notice'>***********************************************************</span>"
usr << "<span class='notice'>Left Mouse Button on turf/obj/mob = Select</span>"
usr << "<span class='notice'>Right Mouse Button on turf/obj/mob = Throw</span>"
usr << "<span class='notice'>***********************************************************</span>"
to_chat(usr, "<span class='notice'>***********************************************************</span>")
to_chat(usr, "<span class='notice'>Left Mouse Button on turf/obj/mob = Select</span>")
to_chat(usr, "<span class='notice'>Right Mouse Button on turf/obj/mob = Throw</span>")
to_chat(usr, "<span class='notice'>***********************************************************</span>")
return 1
DblClick(object,location,control,params)
return Click(object,location,control,params)
@@ -272,7 +272,7 @@ obj/effect/bmode/buildholder/New()
msglog += "at ([formatJumpTo(start)] to [formatJumpTo(end)])</span>"
message_admins(msglog)
log_admin(msglog)
usr << "<span class='notice'>If the server is lagging the operation will periodically sleep so the fill may take longer than typical.</span>"
to_chat(usr, "<span class='notice'>If the server is lagging the operation will periodically sleep so the fill may take longer than typical.</span>")
var/turf_op = ispath(whatfill, /turf)
var/deletions = 0
for(var/turf/T in fillturfs)
@@ -312,7 +312,8 @@ obj/effect/bmode/buildholder/New()
if(istype(A))
A.dir = holder.builddir.dir
tcheck(80,1)
if(deletions) usr << "<span class='info'>Successfully deleted [deletions] [chosen]'\s</span>"
if(deletions)
to_chat(usr, "<span class='info'>Successfully deleted [deletions] [chosen]'\s</span>")
if(3)
var/list/fillturfs = block(start,end)
if(fillturfs.len)
@@ -341,7 +342,7 @@ obj/effect/bmode/buildholder/New()
msglog += "at ([formatJumpTo(start)] to [formatJumpTo(end)])</span>"
message_admins(msglog)
log_admin(msglog)
usr << "<span class='notice'>If the server is lagging the operation will periodically sleep so the mass edit may take longer than typical.</span>"
to_chat(usr, "<span class='notice'>If the server is lagging the operation will periodically sleep so the mass edit may take longer than typical.</span>")
var/edits = 0
for(var/turf/T in fillturfs)
if(ispath(chosen, /turf))
@@ -355,12 +356,10 @@ obj/effect/bmode/buildholder/New()
tcheck(80,1)
edits++
tcheck(80,1)
if(edits) usr << "<span class='info'>Successfully edited [edits] [chosen]'\s</span>"
else return




if(edits)
to_chat(usr, "<span class='info'>Successfully edited [edits] [chosen]'\s</span>")
else
return

/proc/build_click(var/mob/user, buildmode, params, var/obj/object)
var/obj/effect/bmode/buildholder/holder = null
@@ -434,15 +433,15 @@ obj/effect/bmode/buildholder/New()
return
if(pa.Find("left"))
holder.fill_left = RT
usr << "<span class='notice'>Set bottom left fill corner to ([formatJumpTo(RT)])</span>"
to_chat(usr, "<span class='notice'>Set bottom left fill corner to ([formatJumpTo(RT)])</span>")
else if(pa.Find("right"))
holder.fill_right = RT
usr << "<span class='notice'>Set top right fill corner to ([formatJumpTo(RT)])</span>"
to_chat(usr, "<span class='notice'>Set top right fill corner to ([formatJumpTo(RT)])</span>")
if(holder.fill_left && holder.fill_right)
var/turf/start = holder.fill_left
var/turf/end = holder.fill_right
if(start.z != end.z)
usr << "<span class='warning'>You can't do a fill across zlevels you silly person.</span>"
to_chat(usr, "<span class='warning'>You can't do a fill across zlevels you silly person.</span>")
holder.fill_left = null
holder.fill_right = null
return
@@ -453,7 +452,7 @@ obj/effect/bmode/buildholder/New()
if(alert("Are you completely sure about filling [fillturfs.len] tiles?","Panic!!!!","Yes","No") != "Yes")
holder.fill_left = null
holder.fill_right = null
usr << "<span class='notice'>Cleared filling corners.</span>"
to_chat(usr, "<span class='notice'>Cleared filling corners.</span>")
return
var/areaAction = alert("FILL tiles or DELETE them? areaAction will destroy EVERYTHING IN THE SELECTED AREA", "Create or destroy, your chance to be a GOD","FILL","DELETE") == "DELETE"
if(areaAction) areaAction = (alert("Selective(TYPE) Delete or MASS Delete?", "Scorched Earth or selective destruction?", "Selective", "MASS") == "Selective" ? 2 : 1)
@@ -480,7 +479,7 @@ obj/effect/bmode/buildholder/New()
msglog += "at ([formatJumpTo(start)] to [formatJumpTo(end)])</span>"
message_admins(msglog)
log_admin(msglog)
usr << "<span class='notice'>If the server is lagging the operation will periodically sleep so the fill may take longer than typical.</span>"
to_chat(usr, "<span class='notice'>If the server is lagging the operation will periodically sleep so the fill may take longer than typical.</span>")
var/turf_op = ispath(holder.buildmode.objholder,/turf)
var/deletions = 0
for(var/turf/T in fillturfs)
@@ -522,7 +521,8 @@ obj/effect/bmode/buildholder/New()
tcheck(80,1)
holder.fill_left = null
holder.fill_right = null
if(deletions) usr << "<span class='info'>Successfully deleted [deletions] [chosen]'\s</span>"
if(deletions)
to_chat(usr, "<span class='info'>Successfully deleted [deletions] [chosen]'\s</span>")
return
if(pa.Find("left"))
if(holder.buildmode.copycat)
@@ -587,28 +587,28 @@ obj/effect/bmode/buildholder/New()
if(isobj(object)) del(object)
else if(pa.Find("middle"))
if(istype(object,/mob) && !check_rights(R_DEBUG,0))
usr << "<span class='notice'>You don't have sufficient rights to clone [object.type]</span>"
to_chat(usr, "<span class='notice'>You don't have sufficient rights to clone [object.type]</span>")
else
if(ismob(object))
holder.buildmode.objholder = object.type
usr << "<span class='info'>You will now build [object.type] when clicking.</span>"
to_chat(usr, "<span class='info'>You will now build [object.type] when clicking.</span>")
else
holder.buildmode.copycat = object
usr << "<span class='info'>You will now build a lookalike of [object] when clicking.</span>"
to_chat(usr, "<span class='info'>You will now build a lookalike of [object] when clicking.</span>")

if(3)
if(pa.Find("left")) //I cant believe this shit actually compiles.
if(object.vars.Find(holder.buildmode.varholder))
log_admin("[key_name(usr)] modified [object.name]'s [holder.buildmode.varholder] to [holder.buildmode.valueholder]")
object.vars[holder.buildmode.varholder] = holder.buildmode.valueholder
else
usr << "<span class='warning'>[initial(object.name)] does not have a var called '[holder.buildmode.varholder]'</span>"
to_chat(usr, "<span class='warning'>[initial(object.name)] does not have a var called '[holder.buildmode.varholder]'</span>")
if(pa.Find("right"))
if(object.vars.Find(holder.buildmode.varholder))
log_admin("[key_name(usr)] modified [object.name]'s [holder.buildmode.varholder] to [holder.buildmode.valueholder]")
object.vars[holder.buildmode.varholder] = initial(object.vars[holder.buildmode.varholder])
else
usr << "<span class='warning'>[initial(object.name)] does not have a var called '[holder.buildmode.varholder]'</span>"
to_chat(usr, "<span class='warning'>[initial(object.name)] does not have a var called '[holder.buildmode.varholder]'</span>")

if(4)
if(pa.Find("left"))
@@ -629,7 +629,7 @@ obj/effect/bmode/buildholder/New()
matches += path

if(matches.len==0)
usr << "<span class='warning'>No types of [O] found.</span>"
to_chat(usr, "<span class='warning'>No types of [O] found.</span>")
return

if(matches.len==1)
@@ -51,7 +51,7 @@ var/list/alldepartments = list("Central Command")
cooldown_time = initial(cooldown_time) - 300*scancount

/obj/machinery/faxmachine/attack_ghost(mob/user as mob)
usr << "<span class='warning'>Nope.</span>"
to_chat(usr, "<span class='warning'>Nope.</span>")
return 0

/obj/machinery/faxmachine/attack_ai(mob/user as mob)
@@ -132,14 +132,14 @@ var/list/alldepartments = list("Central Command")
else
SendFax(tofax.info, tofax.name, usr, dpt)

usr << "Message transmitted successfully."
to_chat(usr, "Message transmitted successfully.")
faxtime = world.timeofday + cooldown_time

if(href_list["remove"])
if(tofax)
tofax.loc = usr.loc
usr.put_in_hands(tofax)
usr << "<span class='notice'>You take the paper out of \the [src].</span>"
to_chat(usr, "<span class='notice'>You take the paper out of \the [src].</span>")
tofax = null

if(href_list["scan"])
@@ -182,11 +182,11 @@ var/list/alldepartments = list("Central Command")
if(!tofax)
user.drop_item(O, src)
tofax = O
user << "<span class='notice'>You insert the paper into \the [src].</span>"
to_chat(user, "<span class='notice'>You insert the paper into \the [src].</span>")
flick("faxsend", src)
updateUsrDialog()
else
user << "<span class='notice'>There is already something in \the [src].</span>"
to_chat(user, "<span class='notice'>There is already something in \the [src].</span>")

else if(istype(O, /obj/item/weapon/card/id))

@@ -198,15 +198,15 @@ var/list/alldepartments = list("Central Command")
else if(istype(O, /obj/item/weapon/wrench))
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
anchored = !anchored
user << "<span class='notice'>You [anchored ? "wrench" : "unwrench"] \the [src].</span>"
to_chat(user, "<span class='notice'>You [anchored ? "wrench" : "unwrench"] \the [src].</span>")
return

/proc/Centcomm_fax(var/obj/item/weapon/paper/sent, var/sentname, var/mob/Sender)


var/msg = "<span class='notice'><b><font color='orange'>CENTCOMM FAX: </font>[key_name(Sender, 1)] (<A HREF='?_src_=holder;adminplayeropts=\ref[Sender]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[Sender]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[Sender]'>SM</A>) (<A HREF='?_src_=holder;adminplayerobservejump=\ref[Sender]'>JMP</A>) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<a href='?_src_=holder;CentcommFaxReply=\ref[Sender]'>RPLY</a>)</b>: Receiving '[sentname]' via secure connection ... <a href='?_src_=holder;CentcommFaxView=\ref[sent]'>view message</a></span>"
admins << msg
admins << 'sound/effects/fax.ogg'
to_chat(admins, msg)
to_chat(admins, 'sound/effects/fax.ogg')

proc/SendFax(var/sent, var/sentname, var/mob/Sender, var/dpt)

@@ -2,16 +2,16 @@


if(my_atom.next_firetime > world.time)
usr << "<span class='warning'>Your weapons are recharging.</span>"
to_chat(usr, "<span class='warning'>Your weapons are recharging.</span>")
return
var/turf/firstloc
var/turf/secondloc
if(!my_atom.equipment_system || !my_atom.equipment_system.weapon_system)
usr << "<span class='warning'>Missing equipment or weapons.</span>"
to_chat(usr, "<span class='warning'>Missing equipment or weapons.</span>")
my_atom.verbs -= /obj/item/device/spacepod_equipment/weaponry/proc/fire_weapon_system
return
if(!my_atom.battery.use(shot_cost))
usr << "<span class='warning'>\The [my_atom]'s cell is too low on charge!</span>"
to_chat(usr, "<span class='warning'>\The [my_atom]'s cell is too low on charge!</span>")
return
var/olddir
dir = my_atom.dir
@@ -63,11 +63,11 @@
var/obj/item/stack/rods/R = O
var/list/linkedparts = find_square()
if(!linkedparts)
user << "<span class='rose'>You cannot assemble a pod frame because you do not have the necessary assembly.</span>"
to_chat(user, "<span class='rose'>You cannot assemble a pod frame because you do not have the necessary assembly.</span>")
return
var/obj/structure/spacepod_frame/pod = new /obj/structure/spacepod_frame(src.loc)
pod.dir = src.dir
user << "<span class='notice'>You strut the pod frame together.</span>"
to_chat(user, "<span class='notice'>You strut the pod frame together.</span>")
R.use(10)
for(var/obj/item/pod_parts/pod_frame/F in linkedparts)
if(1 == turn(F.dir, -F.link_angle)) //if the part links north during construction, as the bottom left part always does
@@ -76,7 +76,7 @@
qdel(F)
playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1)
if(istype(O, /obj/item/weapon/wrench))
user << "<span class='notice'>You [!anchored ? "secure \the [src] in place." : "remove the securing bolts."]</span>"
to_chat(user, "<span class='notice'>You [!anchored ? "secure \the [src] in place." : "remove the securing bolts."]</span>")
anchored = !anchored
density = anchored
playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1)
@@ -86,7 +86,7 @@
set category = "Object"
set src in oview(1)
if(anchored)
usr << "\The [src] is securely bolted!"
to_chat(usr, "\The [src] is securely bolted!")
return 0
src.dir = turn(src.dir, -90)
return 1
@@ -86,10 +86,10 @@
if(!health)
spawn(0)
if(occupant)
occupant << "<big><span class='warning'>Critical damage to the vessel detected, core explosion imminent!</span></big>"
to_chat(occupant, "<big><span class='warning'>Critical damage to the vessel detected, core explosion imminent!</span></big>")
for(var/i = 10, i >= 0; --i)
if(occupant)
occupant << "<span class='warning'>[i]</span>"
to_chat(occupant, "<span class='warning'>[i]</span>")
if(i == 0)
explosion(loc, 2, 4, 8)
sleep(10)
@@ -103,7 +103,7 @@
if(H)
H.loc = get_turf(src)
H.ex_act(severity + 1)
H << "<span class='warning'>You are forcefully thrown from \the [src]!</span>"
to_chat(H, "<span class='warning'>You are forcefully thrown from \the [src]!</span>")
del(ion_trail)
del(src)
if(2)
@@ -115,12 +115,12 @@
/obj/spacepod/attackby(obj/item/W as obj, mob/user as mob)
if(iscrowbar(W))
hatch_open = !hatch_open
user << "<span class='notice'>You [hatch_open ? "open" : "close"] the maintenance hatch.</span>"
to_chat(user, "<span class='notice'>You [hatch_open ? "open" : "close"] the maintenance hatch.</span>")
if(istype(W, /obj/item/weapon/cell))
if(!hatch_open)
return ..()
if(battery)
user << "<span class='notice'>The pod already has a battery.</span>"
to_chat(user, "<span class='notice'>The pod already has a battery.</span>")
return
user.drop_item(W, src)
battery = W
@@ -129,14 +129,14 @@
if(!hatch_open)
return ..()
if(!equipment_system)
user << "<span class='warning'>The pod has no equipment datum, yell at pomf</span>"
to_chat(user, "<span class='warning'>The pod has no equipment datum, yell at pomf</span>")
return
if(istype(W, /obj/item/device/spacepod_equipment/weaponry))
if(equipment_system.weapon_system)
user << "<span class='notice'>The pod already has a weapon system, remove it first.</span>"
to_chat(user, "<span class='notice'>The pod already has a weapon system, remove it first.</span>")
return
else
user << "<span class='notice'>You insert \the [W] into the equipment system.</span>"
to_chat(user, "<span class='notice'>You insert \the [W] into the equipment system.</span>")
user.drop_item(W, equipment_system)
equipment_system.weapon_system = W
equipment_system.weapon_system.my_atom = src
@@ -148,7 +148,7 @@
if(!hatch_open)
return ..()
if(!equipment_system || !istype(equipment_system))
user << "<span class='warning'>The pod has no equipment datum, or is the wrong type, yell at pomf.</span>"
to_chat(user, "<span class='warning'>The pod has no equipment datum, or is the wrong type, yell at pomf.</span>")
return
var/list/possible = list()
if(battery)
@@ -165,32 +165,32 @@
switch(input(user, "Remove which equipment?", null, null) as null|anything in possible)
if("Energy Cell")
if(user.put_in_any_hand_if_possible(battery))
user << "<span class='notice'>You remove \the [battery] from the space pod</span>"
to_chat(user, "<span class='notice'>You remove \the [battery] from the space pod</span>")
battery = null
if("Weapon System")
SPE = equipment_system.weapon_system
if(user.put_in_any_hand_if_possible(SPE))
user << "<span class='notice'>You remove \the [SPE] from the equipment system.</span>"
to_chat(user, "<span class='notice'>You remove \the [SPE] from the equipment system.</span>")
SPE.my_atom = null
equipment_system.weapon_system = null
verbs -= typesof(/obj/item/device/spacepod_equipment/weaponry/proc)
else
user << "<span class='warning'>You need an open hand to do that.</span>"
to_chat(user, "<span class='warning'>You need an open hand to do that.</span>")
/*
if("engine system")
SPE = equipment_system.engine_system
if(user.put_in_any_hand_if_possible(SPE))
user << "<span class='notice'>You remove \the [SPE] from the equipment system.</span>"
to_chat(user, "<span class='notice'>You remove \the [SPE] from the equipment system.</span>")
equipment_system.engine_system = null
else
user << "<span class='warning'>You need an open hand to do that.</span>"
to_chat(user, "<span class='warning'>You need an open hand to do that.</span>")
if("shield system")
SPE = equipment_system.shield_system
if(user.put_in_any_hand_if_possible(SPE))
user << "<span class='notice'>You remove \the [SPE] from the equipment system.</span>"
to_chat(user, "<span class='notice'>You remove \the [SPE] from the equipment system.</span>")
equipment_system.shield_system = null
else
user << "<span class='warning'>You need an open hand to do that.</span>"
to_chat(user, "<span class='warning'>You need an open hand to do that.</span>")
*/

return
@@ -226,7 +226,7 @@
if(usr!=src.occupant)
return
src.use_internal_tank = !src.use_internal_tank
src.occupant << "<span class='notice'>Now taking air from [use_internal_tank?"internal airtank":"environment"].</span>"
to_chat(src.occupant, "<span class='notice'>Now taking air from [use_internal_tank?"internal airtank":"environment"].</span>")
return

/obj/spacepod/proc/add_cabin()
@@ -314,28 +314,28 @@
if (usr.stat || !ishuman(usr))
return
if (src.occupant)
usr << "<span class='notice'><B>The [src.name] is already occupied!</B></span>"
to_chat(usr, "<span class='notice'><B>The [src.name] is already occupied!</B></span>")
return
/*
if (usr.abiotic())
usr << "<span class='notice'><B>Subject cannot have abiotic items on.</B></span>"
to_chat(usr, "<span class='notice'><B>Subject cannot have abiotic items on.</B></span>")
return
*/
for(var/mob/living/carbon/slime/M in range(1,usr))
if(M.Victim == usr)
usr << "You're too busy getting your life sucked out of you."
to_chat(usr, "You're too busy getting your life sucked out of you.")
return
// usr << "You start climbing into [src.name]"
// to_chat(usr, "You start climbing into [src.name]")

visible_message("<span class='notice'>[usr] starts to climb into [src.name]</span>")

if(enter_after(40,usr))
if(!src.occupant)
moved_inside(usr)
else if(src.occupant!=usr)
usr << "[src.occupant] was faster. Try better next time, loser."
to_chat(usr, "[src.occupant] was faster. Try better next time, loser.")
else
usr << "You stop entering the exosuit."
to_chat(usr, "You stop entering the exosuit.")
return

/obj/spacepod/verb/exit_pod()
@@ -348,7 +348,7 @@
src.inertia_dir = 0 // engage reverse thruster and power down pod
src.occupant.loc = src.loc
src.occupant = null
usr << "<span class='notice'>You climb out of the pod</span>"
to_chat(usr, "<span class='notice'>You climb out of the pod</span>")
return

/obj/spacepod/proc/enter_after(delay as num, var/mob/user as mob, var/numticks = 5)
@@ -451,13 +451,13 @@
inertia_dir = direction
else
if(!battery)
user << "<span class='warning'>No energy cell detected.</span>"
to_chat(user, "<span class='warning'>No energy cell detected.</span>")
else if(battery.charge < 3)
user << "<span class='warning'>Not enough charge left.</span>"
to_chat(user, "<span class='warning'>Not enough charge left.</span>")
else if(!health)
user << "<span class='warning'>She's dead, Jim</span>"
to_chat(user, "<span class='warning'>She's dead, Jim</span>")
else
user << "<span class='warning'>Unknown error has occurred, yell at pomf.</span>"
to_chat(user, "<span class='warning'>Unknown error has occurred, yell at pomf.</span>")
return 0
battery.charge = max(0, battery.charge - 3)

@@ -54,7 +54,7 @@ mob/proc/airflow_stun()
return 0
if(last_airflow_stun > world.time - zas_settings.Get(/datum/ZAS_Setting/airflow_stun_cooldown)) return 0
if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN))
src << "<span class='notice'>You stay upright as the air rushes past you.</span>"
to_chat(src, "<span class='notice'>You stay upright as the air rushes past you.</span>")
return 0

if(weakened <= 0) src << "<span class='warning'>The sudden rush of air knocks you over!</span>"
@@ -74,7 +74,7 @@ mob/living/carbon/human/airflow_stun()
if(shoes)
if(CheckSlip() < 1) return 0
if(!(status_flags & CANSTUN) && !(status_flags & CANWEAKEN))
src << "<span class='notice'>You stay upright as the air rushes past you.</span>"
to_chat(src, "<span class='notice'>You stay upright as the air rushes past you.</span>")
return 0

if(weakened <= 0) src << "<span class='warning'>The sudden rush of air knocks you over!</span>"
@@ -263,7 +263,7 @@ proc/AirflowSpace(zone/A)
if(H.shoes)
if(H.CheckSlip() < 0)
return
src << "<SPAN CLASS='warning'>You are sucked away by airflow!</SPAN>"
to_chat(src, "<SPAN CLASS='warning'>You are sucked away by airflow!</SPAN>")
var/airflow_falloff = 9 - ul_FalloffAmount(airflow_dest) //It's a fast falloff calc. Very useful.
if(airflow_falloff < 1)
airflow_dest = null
@@ -323,7 +323,7 @@ proc/AirflowSpace(zone/A)
if(H.shoes)
if(H.CheckSlip() < 0)
return
src << "<SPAN CLASS='warning'>You are pushed away by airflow!</SPAN>"
to_chat(src, "<SPAN CLASS='warning'>You are pushed away by airflow!</SPAN>")
last_airflow = world.time
var/airflow_falloff = 9 - ul_FalloffAmount(airflow_dest) //It's a fast falloff calc. Very useful.
if(airflow_falloff < 1)
@@ -77,11 +77,11 @@ Class Procs:

/connection/proc/mark_direct()
state |= CONNECTION_DIRECT
//world << "Marked direct."
// to_chat(world, "Marked direct.")

/connection/proc/mark_indirect()
state &= ~CONNECTION_DIRECT
//world << "Marked indirect."
// to_chat(world, "Marked indirect.")

/connection/proc/mark_space()
state |= CONNECTION_SPACE
@@ -95,18 +95,18 @@ Class Procs:
/connection/proc/erase()
edge.remove_connection(src)
state |= CONNECTION_INVALID
//world << "Connection Erased: [state]"
// to_chat(world, "Connection Erased: [state]")

/connection/proc/update()
//world << "Updated, \..."
// to_chat(world, "Updated, \...")
if(!istype(A,/turf/simulated))
//world << "Invalid A."
// to_chat(world, "Invalid A.")
erase()
return

var/block_status = air_master.air_blocked(A,B)
if(block_status & AIR_BLOCKED)
//world << "Blocked connection."
// to_chat(world, "Blocked connection.")
erase()
return
else if(block_status & ZONE_BLOCKED)
@@ -119,47 +119,47 @@ Class Procs:

if(state & CONNECTION_SPACE)
if(!b_is_space)
//world << "Invalid B."
// to_chat(world, "Invalid B.")
erase()
return
if(A.zone != zoneA)
//world << "Zone changed, \..."
// to_chat(world, "Zone changed, \...")
if(!A.zone)
erase()
//world << "erased."
// to_chat(world, "erased.")
return
else
edge.remove_connection(src)
edge = air_master.get_edge(A.zone, B)
edge.add_connection(src)
zoneA = A.zone

//world << "valid."
// to_chat(world, "valid.")
return

else if(b_is_space)
//world << "Invalid B."
// to_chat(world, "Invalid B.")
erase()
return

if(A.zone == B.zone)
//world << "A == B"
// to_chat(world, "A == B")
erase()
return

if(A.zone != zoneA || (zoneB && (B.zone != zoneB)))

//world << "Zones changed, \..."
// to_chat(world, "Zones changed, \...")
if(A.zone && B.zone)
edge.remove_connection(src)
edge = air_master.get_edge(A.zone, B.zone)
edge.add_connection(src)
zoneA = A.zone
zoneB = B.zone
else
//world << "erased."
// to_chat(world, "erased.")
erase()
return


//world << "valid."
// to_chat(world, "valid.")
@@ -69,10 +69,10 @@ Class Procs:

/connection_edge/proc/add_connection(connection/c)
coefficient++
//world << "Connection added: [type] Coefficient: [coefficient]"
// to_chat(world, "Connection added: [type] Coefficient: [coefficient]")

/connection_edge/proc/remove_connection(connection/c)
//world << "Connection removed: [type] Coefficient: [coefficient-1]"
// to_chat(world, "Connection removed: [type] Coefficient: [coefficient-1]")
coefficient--
if(coefficient <= 0)
erase()
@@ -81,7 +81,7 @@ Class Procs:

/connection_edge/proc/erase()
air_master.remove_edge(src)
//world << "[type] Erased."
// to_chat(world, "[type] Erased.")

/connection_edge/proc/tick()

@@ -143,7 +143,7 @@ Class Procs:
A.edges.Add(src)
B.edges.Add(src)
//id = edge_id(A,B)
//world << "New edge between [A] and [B]"
// to_chat(world, "New edge between [A] and [B]")

/connection_edge/zone/add_connection(connection/c)
. = ..()
@@ -167,20 +167,20 @@ Class Procs:
if(A.invalid || B.invalid)
erase()
return
//world << "[id]: Tick [air_master.current_cycle]: \..."
// to_chat(world, "[id]: Tick [air_master.current_cycle]: \...")
if(direct)
if(air_master.equivalent_pressure(A, B))
//world << "merged."
// to_chat(world, "merged.")
erase()
air_master.merge(A, B)
//world << "zones merged."
// to_chat(world, "zones merged.")
return

//air_master.equalize(A, B)
ShareRatio(A.air,B.air,coefficient)
air_master.mark_zone_update(A)
air_master.mark_zone_update(B)
//world << "equalized."
// to_chat(world, "equalized.")

var/differential = A.air.return_pressure() - B.air.return_pressure()
if(abs(differential) < zas_settings.Get(/datum/ZAS_Setting/airflow_lightest_pressure)) return
@@ -213,7 +213,7 @@ Class Procs:
A.edges.Add(src)
air = B.return_air()
//id = 52*A.id
//world << "New edge from [A] to [B]."
// to_chat(world, "New edge from [A] to [B].")

/connection_edge/unsimulated/add_connection(connection/c)
. = ..()
@@ -236,7 +236,7 @@ Class Procs:
if(A.invalid)
erase()
return
//world << "[id]: Tick [air_master.current_cycle]: To [B]!"
// to_chat(world, "[id]: Tick [air_master.current_cycle]: To [B]!")
//A.air.mimic(B, coefficient)
ShareSpace(A.air,air,dbg_out)
air_master.mark_zone_update(A)
@@ -357,7 +357,7 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output)
tileslen = avg_unsim.group_multiplier

if(dbg_output)
world << "O2: [unsim_oxygen] N2: [unsim_nitrogen] Size: [share_size] Tiles: [tileslen]"
to_chat(world, "O2: [unsim_oxygen] N2: [unsim_nitrogen] Size: [share_size] Tiles: [tileslen]")

else if(istype(unsimulated_tiles, /list))
if(!unsimulated_tiles.len)
@@ -416,8 +416,8 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output)
ratio = sharing_lookup_table[tileslen]

if(dbg_output)
world << "Ratio: [ratio]"
world << "Avg O2: [oxy_avg] N2: [nit_avg]"
to_chat(world, "Ratio: [ratio]")
to_chat(world, "Avg O2: [oxy_avg] N2: [nit_avg]")

A.oxygen = max(0, (A.oxygen - oxy_avg) * (1 - ratio) + oxy_avg )
A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1 - ratio) + nit_avg )
@@ -432,7 +432,7 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles, dbg_output)

A.update_values()

if(dbg_output) world << "Result: [abs(old_pressure - A.return_pressure())] kPa"
if(dbg_output) to_chat(world, "Result: [abs(old_pressure - A.return_pressure())] kPa")

return abs(old_pressure - A.return_pressure())

@@ -447,4 +447,4 @@ proc/ShareHeat(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles)
energy_delta = maximum_energy_delta

A.temperature -= energy_delta / (A.heat_capacity() * A.group_multiplier)
B.temperature += energy_delta / (B.heat_capacity() * B.group_multiplier)
B.temperature += energy_delta / (B.heat_capacity() * B.group_multiplier)
@@ -96,7 +96,7 @@ Class Procs:
set background = 1
#endif

world << "<span class='danger'>Processing Geometry...</span>"
to_chat(world, "<span class='danger'>Processing Geometry...</span>")
sleep(-1)

var/start_time = world.timeofday
@@ -107,10 +107,10 @@ Class Procs:
simulated_turf_count++
S.update_air_properties()

world << {"<font color='red'><b>Geometry initialized in [round(0.1*(world.timeofday-start_time),0.1)] seconds.</b>
to_chat(world, {"<font color='red'><b>Geometry initialized in [round(0.1*(world.timeofday-start_time),0.1)] seconds.</b>
Total Simulated Turfs: [simulated_turf_count]
Total Zones: [zones.len]
Total Unsimulated Turfs: [world.maxx*world.maxy*world.maxz - simulated_turf_count]</font>"}
Total Unsimulated Turfs: [world.maxx*world.maxy*world.maxz - simulated_turf_count]</font>"})

// spawn Start()

@@ -161,7 +161,7 @@ Total Unsimulated Turfs: [world.maxx*world.maxy*world.maxz - simulated_turf_coun
#ifdef ZASDBG
if(updated != updating.len)
tick_progress = "[updating.len - updated] tiles left unupdated."
world << "<span class='warning'>[tick_progress]</span>"
to_chat(world, "<span class='warning'>[tick_progress]</span>")
. = 0
#endif

@@ -324,4 +324,4 @@ Total Unsimulated Turfs: [world.maxx*world.maxy*world.maxz - simulated_turf_coun
return 1

/datum/controller/air_system/proc/remove_edge(connection/c)
edges.Remove(c)
edges.Remove(c)
@@ -4,10 +4,10 @@ client/proc/ZoneTick()

var/result = air_master.Tick()
if(result)
src << "Sucessfully Processed."
to_chat(src, "Sucessfully Processed.")

else
src << "Failed to process! ([air_master.tick_progress])"
to_chat(src, "Failed to process! ([air_master.tick_progress])")


client/proc/Zone_Info(turf/T as null|turf)
@@ -16,10 +16,10 @@ client/proc/Zone_Info(turf/T as null|turf)
if(istype(T,/turf/simulated) && T:zone)
T:zone:dbg_data(src)
else
mob << "No zone here."
to_chat(mob, "No zone here.")
var/datum/gas_mixture/mix = T.return_air()
mob << "[mix.return_pressure()] kPa [mix.temperature]C"
mob << "O2: [mix.oxygen] N2: [mix.nitrogen] CO2: [mix.carbon_dioxide] TX: [mix.toxins]"
to_chat(mob, "[mix.return_pressure()] kPa [mix.temperature]C")
to_chat(mob, "O2: [mix.oxygen] N2: [mix.nitrogen] CO2: [mix.carbon_dioxide] TX: [mix.toxins]")
else
if(zone_debug_images)
for(var/zone in zone_debug_images)
@@ -46,9 +46,9 @@ client/proc/Test_ZAS_Connection(var/turf/simulated/T as turf)

if(direction == "N/A")
if(!(T.c_airblock(T) & AIR_BLOCKED))
mob << "The turf can pass air! :D"
to_chat(mob, "The turf can pass air! :D")
else
mob << "No air passage :x"
to_chat(mob, "No air passage :x")
return

var/turf/simulated/other_turf = get_step(T, direction_list[direction])
@@ -60,29 +60,29 @@ client/proc/Test_ZAS_Connection(var/turf/simulated/T as turf)

if(o_block & AIR_BLOCKED)
if(t_block & AIR_BLOCKED)
mob << "Neither turf can connect. :("
to_chat(mob, "Neither turf can connect. :(")

else
mob << "The initial turf only can connect. :\\"
to_chat(mob, "The initial turf only can connect. :\\")
else
if(t_block & AIR_BLOCKED)
mob << "The other turf can connect, but not the initial turf. :/"
to_chat(mob, "The other turf can connect, but not the initial turf. :/")

else
mob << "Both turfs can connect! :)"
to_chat(mob, "Both turfs can connect! :)")

mob << "Additionally, \..."
to_chat(mob, "Additionally, \...")

if(o_block & ZONE_BLOCKED)
if(t_block & ZONE_BLOCKED)
mob << "neither turf can merge."
to_chat(mob, "neither turf can merge.")
else
mob << "the other turf cannot merge."
to_chat(mob, "the other turf cannot merge.")
else
if(t_block & ZONE_BLOCKED)
mob << "the initial turf cannot merge."
to_chat(mob, "the initial turf cannot merge.")
else
mob << "both turfs can merge."
to_chat(mob, "both turfs can merge.")


/*zone/proc/DebugDisplay(client/client)
@@ -103,34 +103,34 @@ client/proc/Test_ZAS_Connection(var/turf/simulated/T as turf)
for(var/turf/S in unsimulated_tiles)
current_zone_images += image('icons/misc/debug_space.dmi', S, null, TURF_LAYER)
client << "<u>Zone Air Contents</u>"
client << "Oxygen: [air.oxygen]"
client << "Nitrogen: [air.nitrogen]"
client << "Plasma: [air.toxins]"
client << "Carbon Dioxide: [air.carbon_dioxide]"
client << "Temperature: [air.temperature] K"
client << "Heat Energy: [air.temperature * air.heat_capacity()] J"
client << "Pressure: [air.return_pressure()] KPa"
client << ""
client << "Unsimulated Zone(space/catwalk) Tiles: [length(unsimulated_tiles)]"
client << "Movable Objects: [length(movables())]"
client << "<u>Connections: [length(connections)]</u>"
to_chat(client, "<u>Zone Air Contents</u>")
to_chat(client, "Oxygen: [air.oxygen]")
to_chat(client, "Nitrogen: [air.nitrogen]")
to_chat(client, "Plasma: [air.toxins]")
to_chat(client, "Carbon Dioxide: [air.carbon_dioxide]")
to_chat(client, "Temperature: [air.temperature] K")
to_chat(client, "Heat Energy: [air.temperature * air.heat_capacity()] J")
to_chat(client, "Pressure: [air.return_pressure()] KPa")
to_chat(client, "")
to_chat(client, "Unsimulated Zone(space/catwalk) Tiles: [length(unsimulated_tiles)]")
to_chat(client, "Movable Objects: [length(movables())]")
to_chat(client, "<u>Connections: [length(connections)]</u>")
for(var/connection/C in connections)
client << "\ref[C] [C.A] --> [C.B] [(C.indirect?"Open":"Closed")]"
to_chat(client, "\ref[C] [C.A] --> [C.B] [(C.indirect?"Open":"Closed")]")
current_zone_images += image('icons/misc/debug_connect.dmi', C.A, null, TURF_LAYER)
current_zone_images += image('icons/misc/debug_connect.dmi', C.B, null, TURF_LAYER)
client << "Connected Zones:"
to_chat(client, "Connected Zones:")
for(var/zone/zone in connected_zones)
client << "\ref[zone] [zone] - [connected_zones[zone]] (Connected)"
to_chat(client, "\ref[zone] [zone] - [connected_zones[zone]] (Connected)")
for(var/zone/zone in closed_connection_zones)
client << "\ref[zone] [zone] - [closed_connection_zones[zone]] (Unconnected)"
to_chat(client, "\ref[zone] [zone] - [closed_connection_zones[zone]] (Unconnected)")
for(var/C in connections)
if(!istype(C,/connection))
client << "[C] (Not Connection!)"
to_chat(client, "[C] (Not Connection!)")
if(!client.zone_debug_images)
client.zone_debug_images = list()
@@ -148,15 +148,16 @@ client/proc/Test_ZAS_Connection(var/turf/simulated/T as turf)
for(var/zone/Z in air_master.zones)
if(Z.air == air && Z != src)
var/turf/zloc = pick(Z.contents)
client << "<span class='warning'>Illegal air datum shared by: [zloc.loc.name]</span>"*/
to_chat(client, "<span class='warning'>Illegal air datum shared by: [zloc.loc.name]</span>")
*/


/*client/proc/TestZASRebuild()
set category = "Debug"
// var/turf/turf = get_turf(mob)
var/zone/current_zone = mob.loc:zone
if(!current_zone)
src << "There is no zone there!"
to_chat(src, "There is no zone there!")
return
var/list/current_adjacents = list()
@@ -224,7 +225,7 @@ client/proc/Test_ZAS_Connection(var/turf/simulated/T as turf)
//lazy but fast
final_arrangement.Remove(null)
src << "There are [final_arrangement.len] unique segments."
to_chat(src, "There are [final_arrangement.len] unique segments.")
for(var/turf/current in turfs)
current.overlays -= overlays
@@ -236,4 +237,4 @@ client/proc/ZASSettings()
set category = "Debug"
vsc.SetDefault(mob)
*/
*/
@@ -251,10 +251,10 @@ var/global/ZAS_Settings/zas_settings = new
fdel(F)
for(var/id in src.settings)
var/datum/ZAS_Setting/setting = src.settings[id]
F << "# [setting.name]"
F << "# [setting.desc]"
F << "[id] [setting.value]"
F << ""
to_chat(F, "# [setting.name]")
to_chat(F, "# [setting.desc]")
to_chat(F, "[id] [setting.value]")
to_chat(F, "")

/ZAS_Settings/proc/Load()
for(var/t in file2list("config/ZAS.txt"))
@@ -312,7 +312,7 @@ var/global/ZAS_Settings/zas_settings = new
else
error("[id] has an invalid typeval.")
return
world << "<span class='notice'><b>[key_name(user)] changed ZAS setting <i>[setting.name]</i> to <i>[displayedValue]</i>.</b></span>"
to_chat(world, "<span class='notice'><b>[key_name(user)] changed ZAS setting <i>[setting.name]</i> to <i>[displayedValue]</i>.</b></span>")

ChangeSettingsDialog(user)

@@ -514,4 +514,4 @@ a { color: white; }
Set("/datum/ZAS_Setting/airflow_speed_decay", 1)
Set("/datum/ZAS_Setting/airflow_delay", 20)
Set("/datum/ZAS_Setting/airflow_mob_slowdown", 3)
world << "<span class='notice'><b>[key_name(usr)] loaded ZAS preset <i>[def]</i></b></span>"
to_chat(world, "<span class='notice'><b>[key_name(usr)] loaded ZAS preset <i>[def]</i></b></span>")