diff --git a/Code/!atoms.dm b/Code/!atoms.dm
index 45e0aba..99933e9 100644
--- a/Code/!atoms.dm
+++ b/Code/!atoms.dm
@@ -32,8 +32,7 @@
#define ONBELT 128 // can be put in belt slot
#define FPRINT 256 // takes a fingerprint
#define WINDOW 512 // window or window/door (or injector)
-
-
+
// channel numbers for power
#define EQUIP 1
@@ -47,8 +46,6 @@
#define POWEROFF 4 // tbd
#define MAINT 8 // under maintaince
-
-
/atom
layer = 2.0
var/level = 2.0
@@ -161,6 +158,7 @@
var/mode = "random"
var/event_time = null
var/event = 0
+ var/burningo2 = 0
/datum/control/poll
//name = "poll"
@@ -217,13 +215,19 @@
var/votenodefault = 0 // vote does not default to nochange/norestart (tbi)
var/votenodead = 0 // dead people can't vote (tbi)
var/list/modes = list("extended", "traitor", "meteor", "monkey", "blob", "nuclear") // modes to choose between
- var/list/pickprob = list() // relative probability of each mode
+ var/list/pickprob = list() // relative probability of each mode
var/allowai = 1 // allow ai job
var/bombtemp_determines_range = 0
var/crowbars_close_depowered_doors = 0
var/ai_can_call_shuttle = 0
var/ai_can_uncall_shuttle = 0
var/alternate_ai_laws = 0
+ var/air_pressure_flow = 0
+ var/min_gas_for_fire = 900000 // This sets the amount of gas needed for a fire in a tile to keep going, or for it to spread to another tile. The default is 900,000 units.
+ var/meteorchance = 0.1
+ var/enable_drones = 0
+ var/humans_can_use_drones = 0
+ var/walkable_not_pullable_drones = 0
/datum/vote
var/voting = 0 // true if currently voting
@@ -346,7 +350,11 @@
var/start = null
var/disable_one_click = 0
var/favorite_hud = 0
-
+ var/currentDrone = null
+ var/droneTransitioning = 0
+ var/cameraFollow = null
+ var/now_pushing = null
+
var/list/organs = list( )
var/list/grabbed_by = list( )
var/list/requests = list( )
@@ -397,7 +405,6 @@
var/obj/item/weapon/l_store = null
var/icon/stand_icon = null
var/icon/lying_icon = null
- var/now_pushing = null
var/t_plasma = 0.0
var/t_oxygen = 0.0
var/last_b_state = 1.0
@@ -405,8 +412,7 @@
var/image/face2 = null
var/h_style_r = "hair_a"
weight = 2500000.0
- var/cameraFollow = null
-
+
var/list/body_standing = list( )
var/list/body_lying = list( )
@@ -419,9 +425,7 @@
var/t_oxygen = null
var/t_sl_gas = null
var/t_n2 = null
- var/now_pushing = null
flags = 258.0
- var/cameraFollow = null
/mob/megamonkey
name = "mutant monkey"
diff --git a/Code/Item/Weapon/aimodules.dm b/Code/Item/Weapon/aimodules.dm
index d54cc05..323d66e 100644
--- a/Code/Item/Weapon/aimodules.dm
+++ b/Code/Item/Weapon/aimodules.dm
@@ -25,18 +25,18 @@
/obj/item/weapon/aiModule/proc/install(var/obj/machinery/computer/aiupload/comp)
if(comp.stat & NOPOWER)
- usr << "The upload computer has no power!"
+ usr.client_mob() << "The upload computer has no power!"
return
if(comp.stat & BROKEN)
- usr << "The upload computer is broken!"
+ usr.client_mob() << "The upload computer is broken!"
return
var/found=0
for(var/mob/ai/M in world)
if (M.stat == 2)
- usr << "Upload failed. No signal is being detected from the AI."
+ usr.client_mob() << "Upload failed. No signal is being detected from the AI."
else if (M.see_in_dark == 0)
- usr << "Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power."
+ usr.client_mob() << "Upload failed. Only a faint signal is being detected from the AI, and it is not responding to our requests. It may be low on power."
else
src.transmitInstructions(M, usr)
if (M != ticker.killer)
@@ -45,7 +45,7 @@
usr << "Upload complete. The AI's laws have been modified."
found=1
if (!found)
- usr << "Upload failed. No signal is being detected from the AI."
+ usr.client_mob() << "Upload failed. No signal is being detected from the AI."
/obj/item/weapon/aiModule/proc/transmitInstructions(var/mob/ai/target, var/mob/sender)
if (ticker.killer == target)
diff --git a/Code/Machinery/Atmoalter/canister.dm b/Code/Machinery/Atmoalter/canister.dm
index 3f34ddd..9fd7047 100644
--- a/Code/Machinery/Atmoalter/canister.dm
+++ b/Code/Machinery/Atmoalter/canister.dm
@@ -245,13 +245,15 @@ Pipe Valve Status: [ct]
Close
"}
- user << browse(dat, "window=canister;size=600x300")
+ user.client_mob() << browse(dat, "window=canister;size=600x300")
return
// Process topic link from interaction window
Topic(href, href_list)
+ usr.client_mob() << "Topic on canister, usr is [usr], src is [src], usr.client_mob() is [usr.client_mob()], href is ([href]), href_list is ([href_list])."
+
..()
if (usr.stat || usr.restrained())
return
@@ -306,7 +308,7 @@ Pipe Valve Status: [ct]
update_icon()
else
- usr << browse(null, "window=canister")
+ usr.client_mob() << browse(null, "window=canister")
// Attack by an object
diff --git a/Code/Machinery/Atmoalter/heater.dm b/Code/Machinery/Atmoalter/heater.dm
index 501bb77..a09387b 100644
--- a/Code/Machinery/Atmoalter/heater.dm
+++ b/Code/Machinery/Atmoalter/heater.dm
@@ -151,7 +151,7 @@ obj/machinery/atmoalter/heater
ct = "Disconnected"
var/dat = text("Canister Valves
\nContains/Capacity [] / []
\nUpper Valve Status: [][]
\n\tM - - - - [] + + + + M
\nHeater Status: [] - []
\n\tTrg Tmp: - - - [] + + +
\n
\nPipe Valve Status: []
\n\tM - - - - [] + + + + M
\n
\nClose
\n", src.gas.tot_gas(), src.maximum, tt, (src.holding ? text("
Tank ([])", src, src.holding.gas.tot_gas()) : null), src, num2text(1000000.0, 7), src, src, src, src, src.t_per, src, src, src, src, src, num2text(1000000.0, 7), ht, (src.gas.tot_gas() ? (src.gas.temperature-T0C) : 20), src, src, src, src.h_tar, src, src, src, ct, src, num2text(1000000.0, 7), src, src, src, src, src.c_per, src, src, src, src, src, num2text(1000000.0, 7), user)
- user << browse(dat, "window=canister;size=600x300")
+ user.client_mob() << browse(dat, "window=canister;size=600x300")
return
@@ -215,7 +215,7 @@ obj/machinery/atmoalter/heater
src.updateDialog()
src.add_fingerprint(usr)
else
- usr << browse(null, "window=canister")
+ usr.client_mob() << browse(null, "window=canister")
return
return
diff --git a/Code/Machinery/Atmoalter/siphs.dm b/Code/Machinery/Atmoalter/siphs.dm
index f98d4a6..fd354eb 100644
--- a/Code/Machinery/Atmoalter/siphs.dm
+++ b/Code/Machinery/Atmoalter/siphs.dm
@@ -36,8 +36,8 @@ obj/machinery/atmoalter/siphs
* fullairsiphon/air_vent - Air Regulator - Vent on floor, same as fullairsiphon but cannot hold a tank.
*
* scrubbers - Scrubber - Can hold a tank. Starts empty. Automatic process removes toxins from air and stores in gas content.
- * scubbers/port - Portable Scrubber - same as scrubbers but pushable.
- * scubbers/air_filter - Air Filter - Vent on floor, same as scrubbers but cannot hold a tank.
+ * scrubbers/port - Portable Scrubber - same as scrubbers but pushable.
+ * scrubbers/air_filter - Air Filter - Vent on floor, same as scrubbers but cannot hold a tank.
*/
// new siphon object, create the gas content and set maximum capacity
@@ -212,7 +212,7 @@ obj/machinery/atmoalter/siphs
use_power(50, ENVIRON)
if (T)
- if (T.firelevel > 900000.0)
+ if (T.firelevel > config.min_gas_for_fire)
src.f_time = world.time + 300 // shut off automatic operation for 30 seconds if fire present
else
if (world.time > src.f_time)
@@ -273,7 +273,7 @@ obj/machinery/atmoalter/siphs
if (src.t_status == 4)
at = "Automatic On Stop"
var/dat = text("Canister Valves []
\n\tContains/Capacity [] / []
\n\tUpper Valve Status: [] []
\n\t\tM - - - - [] + + + + M
\n\tPipe Valve Status: []
\n\t\tM - - - - [] + + + + M
\n
\n\nClose
\n\t", (!( src.alterable ) ? "Valves are locked. Unlock with wrench!" : "You can lock this interface with a wrench."), num2text(src.gas.tot_gas(), 10), num2text(src.maximum, 10), (src.t_status == 4 ? text("[]", at) : text("[]", tt)), (src.holding ? text("
(Tank ([])", src, src.holding.gas.tot_gas()) : null), src, num2text(max_valve, 7), src, src, src, src, src.t_per, src, src, src, src, src, num2text(max_valve, 7), ct, src, num2text(max_valve, 7), src, src, src, src, src.c_per, src, src, src, src, src, num2text(max_valve, 7), user)
- user << browse(dat, "window=siphon;size=600x300")
+ user.client_mob() << browse(dat, "window=siphon;size=600x300")
return
@@ -332,7 +332,7 @@ obj/machinery/atmoalter/siphs
src.updateDialog()
src.add_fingerprint(usr)
else
- usr << browse(null, "window=canister")
+ usr.client_mob() << browse(null, "window=canister")
return
return
@@ -373,9 +373,9 @@ obj/machinery/atmoalter/siphs
else if (istype(W, /obj/item/weapon/wrench)) // lock/unlock the interface
src.alterable = !( src.alterable )
if (src.alterable)
- user << "\blue You unlock the interface!"
+ user.client_mob() << "\blue You unlock the interface!"
else
- user << "\blue You lock the interface!"
+ user.client_mob() << "\blue You lock the interface!"
/*
@@ -509,7 +509,7 @@ obj/machinery/atmoalter/siphs
if (istype(T, /turf))
if (locate(/obj/move, T))
T = locate(/obj/move, T)
- if (T.firelevel < 900000.0)
+ if (T.firelevel < config.min_gas_for_fire)
src.gas.turf_add_all_oxy(T)
else
@@ -555,7 +555,7 @@ obj/machinery/atmoalter/siphs
if(4.0) // 4 = automatic mode
if( !portable() ) use_power(50, ENVIRON)
if (T)
- if (T.firelevel > 900000.0)
+ if (T.firelevel > config.min_gas_for_fire)
src.f_time = world.time + 300 // disable automatic mode for 30 seconds if a fire present
else
if (world.time > src.f_time)
@@ -568,10 +568,7 @@ obj/machinery/atmoalter/siphs
// Pipe valve status handled by /obj/machinery/connector/process()
src.setstate()
- for(var/mob/M in viewers(1, src))
- if ((M.client && M.machine == src))
- src.attack_hand(M)
- //Foreach goto(654)
+ src.updateDialog()
return
diff --git a/Code/Machinery/Computer/airtunnel.dm b/Code/Machinery/Computer/airtunnel.dm
index 51fee05..e7e7d82 100644
--- a/Code/Machinery/Computer/airtunnel.dm
+++ b/Code/Machinery/Computer/airtunnel.dm
@@ -112,7 +112,7 @@ obj/machinery/computer/airtunnel
dat += "RELEASE (Siphons only) Siphon (Siphons only) Stop Regulate
"
dat += "
Close