diff --git a/code/ATMOSPHERICS/he_pipes.dm b/code/ATMOSPHERICS/he_pipes.dm
new file mode 100644
index 0000000000..11a879b248
--- /dev/null
+++ b/code/ATMOSPHERICS/he_pipes.dm
@@ -0,0 +1,83 @@
+
+obj/machinery/atmospherics/pipe/simple/heat_exchanging
+ icon = 'heat.dmi'
+ icon_state = "intact"
+ level = 2
+ var/initialize_directions_he
+
+ minimum_temperature_difference = 20
+ thermal_conductivity = WINDOW_HEAT_TRANSFER_COEFFICIENT
+
+
+ initialize()
+ normalize_dir()
+ var/node1_dir
+ var/node2_dir
+
+ for(var/direction in cardinal)
+ if(direction&initialize_directions_he)
+ if (!node1_dir)
+ node1_dir = direction
+ else if (!node2_dir)
+ node2_dir = direction
+
+ for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,node1_dir))
+ if(target.initialize_directions_he & get_dir(target,src))
+ node1 = target
+ break
+ for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,node2_dir))
+ if(target.initialize_directions_he & get_dir(target,src))
+ node2 = target
+ break
+ update_icon()
+ return
+
+
+ process()
+ if(!parent)
+ ..()
+ else
+ var/environment_temperature = 0
+ if(istype(loc, /turf/simulated/))
+ if(loc:blocks_air)
+ environment_temperature = loc:temperature
+ else
+ var/datum/gas_mixture/environment = loc.return_air()
+ environment_temperature = environment.temperature
+ else
+ environment_temperature = loc:temperature
+ var/datum/gas_mixture/pipe_air = return_air()
+ if(abs(environment_temperature-pipe_air.temperature) > minimum_temperature_difference)
+ parent.temperature_interact(loc, volume, thermal_conductivity)
+
+
+
+obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction
+ icon = 'junction.dmi'
+ icon_state = "intact"
+ level = 2
+ minimum_temperature_difference = 300
+ thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT
+
+ update_icon()
+ if(node1&&node2)
+ icon_state = "intact"
+ else
+ var/have_node1 = node1?1:0
+ var/have_node2 = node2?1:0
+ icon_state = "exposed[have_node1][have_node2]"
+ if(!node1&&!node2)
+ del(src)
+
+ initialize()
+ for(var/obj/machinery/atmospherics/target in get_step(src,initialize_directions))
+ if(target.initialize_directions & get_dir(target,src))
+ node1 = target
+ break
+ for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,initialize_directions_he))
+ if(target.initialize_directions_he & get_dir(target,src))
+ node2 = target
+ break
+
+ update_icon()
+ return
diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm
index 909d75ae30..ecc8928498 100644
--- a/code/ATMOSPHERICS/pipes.dm
+++ b/code/ATMOSPHERICS/pipes.dm
@@ -302,68 +302,6 @@ obj/machinery/atmospherics/pipe
level = 2
- simple/heat_exchanging/junction
- icon = 'junction.dmi'
- icon_state = "intact"
- level = 2
- minimum_temperature_difference = 300
- thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT
-
- update_icon()
- if(node1&&node2)
- icon_state = "intact"
- else
- var/have_node1 = node1?1:0
- var/have_node2 = node2?1:0
- icon_state = "exposed[have_node1][have_node2]"
- if(!node1&&!node2)
- del(src)
-
- initialize()
- for(var/obj/machinery/atmospherics/target in get_step(src,initialize_directions))
- if(target.initialize_directions & get_dir(target,src))
- node1 = target
- break
- for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,initialize_directions_he))
- if(target.initialize_directions_he & get_dir(target,src))
- node2 = target
- break
-
- update_icon()
-
- simple/heat_exchanging
- icon = 'heat.dmi'
- icon_state = "intact"
- level = 2
- var/initialize_directions_he
-
- minimum_temperature_difference = 20
- thermal_conductivity = WINDOW_HEAT_TRANSFER_COEFFICIENT
-
- initialize()
- normalize_dir()
- var/node1_dir
- var/node2_dir
-
- for(var/direction in cardinal)
- if(direction&initialize_directions_he)
- if (!node1_dir)
- node1_dir = direction
- else if (!node2_dir)
- node2_dir = direction
-
- for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,node1_dir))
- if(target.initialize_directions_he & get_dir(target,src))
- node1 = target
- break
- for(var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/target in get_step(src,node2_dir))
- if(target.initialize_directions_he & get_dir(target,src))
- node2 = target
- break
-
- update_icon()
-
-
tank
icon = 'pipe_tank.dmi'
icon_state = "intact"
diff --git a/code/datums/diseases/robotic_transformation.dm b/code/datums/diseases/robotic_transformation.dm
index b1f9346307..51f4251ac0 100644
--- a/code/datums/diseases/robotic_transformation.dm
+++ b/code/datums/diseases/robotic_transformation.dm
@@ -57,5 +57,8 @@
gibs(T)
src.cure(0)
gibbed = 1
- affected_mob:Robotize()
+ if(!jobban_isbanned(src, "Cyborg"))
+ affected_mob:Robotize()
+ else
+ affected_mob.death(1)
diff --git a/code/game/algorithm.dm b/code/game/algorithm.dm
index d49bdd90d5..9169d04965 100644
--- a/code/game/algorithm.dm
+++ b/code/game/algorithm.dm
@@ -11,8 +11,6 @@ Starting up. [time2text(world.timeofday, "hh:mm.ss")]
jobban_loadbanfile()
jobban_updatelegacybans()
-// goon_loadfile() Somehow I doubt we need this anymore
-// beta_tester_loadfile()
LoadBans()
process_teleport_locs() //Sets up the wizard teleport locations
process_ghost_teleport_locs() //Sets up ghost teleport locations.
@@ -20,33 +18,19 @@ Starting up. [time2text(world.timeofday, "hh:mm.ss")]
if (config.kick_inactive)
spawn(30)
- //EXPERIMENTAL
- Optimize()
- //EXPERIMENTAL
+ KickInactiveClients()
-
-/// EXPERIMENTAL STUFF
-var/opt_inactive = null
-/world/proc/Optimize()
- if(!opt_inactive) opt_inactive = world.timeofday
-
- if(world.timeofday - opt_inactive >= 600)
- KickInactiveClients()
- opt_inactive = world.timeofday
-
- spawn(100) Optimize()
-
/world/proc/KickInactiveClients()
for(var/client/C)
- if(!C.holder && ((C.inactivity/10)/60) >= 10) // Used to be 15 -- TLE
- //C << "\red You have been inactive for more than 10 minutes and have been disconnected."
+ if(!C.holder && ((C.inactivity/10)/60) >= 10)
if(C.mob)
if(!istype(C.mob, /mob/dead/))
log_access("AFK: [key_name(C)]")
C << "\red You have been inactive for more than 10 minutes and have been disconnected."
C.mob.logged_in = 0
del(C)
+ spawn(3000) KickInactiveClients()//more or less five minutes
/// EXPERIMENTAL STUFF
diff --git a/code/game/jobs/jobprocs.dm b/code/game/jobs/jobprocs.dm
index 429e39f381..59b0efb46e 100644
--- a/code/game/jobs/jobprocs.dm
+++ b/code/game/jobs/jobprocs.dm
@@ -105,12 +105,15 @@
for (var/i = 1 to occupation_eligible[occ])
vacancies += occ
- while (unassigned.len && vacancies.len)
- var/mob/new_player/candidate = pick_n_take(unassigned)
- var/occupation = pick_n_take(vacancies)
- candidate.mind.assigned_role = occupation
+ for(var/mob/new_player/candidate in unassigned)
+ if(!unassigned.len || !vacancies.len) break
+ var/occupation = pick(vacancies)
+ if(!jobban_isbanned(candidate, occupation))
+ candidate.mind.assigned_role = occupation
+ unassigned -= candidate
+ vacancies -= occupation
- for (var/mob/new_player/player in unassigned)
+ for(var/mob/new_player/player in unassigned)
if (unassigned.len == 0)
break
player.mind.assigned_role = pick(assistant_occupations)
diff --git a/code/game/objects/devices/flash.dm b/code/game/objects/devices/flash.dm
index 48134601ef..95c09cb44d 100644
--- a/code/game/objects/devices/flash.dm
+++ b/code/game/objects/devices/flash.dm
@@ -61,6 +61,7 @@
flick("blspell", animation)
sleep(5)
del(animation)
+ user.weakened = max(user.weakened, 10)
if(!flashfail)
diff --git a/code/game/objects/items/clothing/powerarmor.dm b/code/game/objects/items/clothing/powerarmor.dm
index 92b4655b83..02e5bf74eb 100644
--- a/code/game/objects/items/clothing/powerarmor.dm
+++ b/code/game/objects/items/clothing/powerarmor.dm
@@ -1,3 +1,6 @@
+/obj/item/clothing/suit/armor/powered
+/obj/item/clothing/head/helmet/powered
+
/obj/item/clothing/suit/powered
name = "Powered armor"
desc = "Not for rookies."
diff --git a/code/game/objects/items/robot_parts.dm b/code/game/objects/items/robot_parts.dm
index 026c5764d3..e929121ceb 100644
--- a/code/game/objects/items/robot_parts.dm
+++ b/code/game/objects/items/robot_parts.dm
@@ -162,6 +162,10 @@
user << "\red Sticking a dead brain into the frame would sort of defeat the purpose."
return
+ if(jobban_isbanned(M.brainmob, "Cyborg"))
+ user << "\red This MMI does not seem to fit."
+ return
+
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc))
if(!O) return
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 4b8571fe2c..d3f2e79f46 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -6,16 +6,16 @@
//Some verbs that are still in the code but not used atm
// Debug
// verbs += /client/proc/radio_report //for radio debugging dont think its been used in a very long time
-// verbs += /client/proc/air_status //does next to nothing
// verbs += /client/proc/fix_next_move //has not been an issue in a very very long time
-// verbs += /client/proc/Cell //More air things
- // Mapping helpers
+
+ // Mapping helpers added via enable_mapping_debug verb
// verbs += /client/proc/do_not_use_these
// verbs += /client/proc/camera_view
// verbs += /client/proc/sec_camera_report
// verbs += /client/proc/intercom_view
-// verbs += /client/proc/enable_mapping_debug
+// verbs += /client/proc/air_status //Air things
+// verbs += /client/proc/Cell //More air things
/client/proc/update_admins(var/rank)
@@ -120,7 +120,7 @@
if (holder)//Slightly easier to edit way of granting powers
holder.owner = src
if (holder.level >= 6)//Game Master********************************************************************
-
+ verbs += /client/proc/callproc
verbs += /client/proc/colorooc
verbs += /obj/admins/proc/toggle_aliens //toggle aliens
verbs += /obj/admins/proc/toggle_space_ninja //toggle ninjas
@@ -132,7 +132,7 @@
verbs += /client/proc/cmd_debug_make_powernets
verbs += /client/proc/object_talk
verbs += /client/proc/strike_team
-
+ verbs += /client/proc/enable_mapping_debug
if (holder.level >= 5)//Game Admin********************************************************************
verbs += /obj/admins/proc/view_txt_log
@@ -140,7 +140,6 @@
verbs += /client/proc/cmd_admin_list_open_jobs
verbs += /client/proc/cmd_admin_direct_narrate
verbs += /client/proc/cmd_admin_world_narrate
- verbs += /client/proc/callproc
verbs += /client/proc/cmd_debug_del_all
verbs += /client/proc/cmd_debug_tog_aliens
verbs += /client/proc/ticklag
@@ -182,7 +181,6 @@
verbs += /client/proc/togglebuildmodeself
verbs += /client/proc/hide_most_verbs
-
if (holder.level >= 3)//Trial Admin********************************************************************
verbs += /obj/admins/proc/toggleaban //abandon mob
verbs += /client/proc/cmd_admin_remove_plasma
@@ -364,6 +362,7 @@
verbs -= /client/proc/cmd_admin_say
verbs -= /client/proc/cmd_admin_gib_self
verbs -= /client/proc/restartcontroller
+ verbs -= /client/proc/enable_mapping_debug
return
@@ -616,6 +615,7 @@
verbs += /client/proc/game_panel
verbs += /client/proc/player_panel
verbs += /client/proc/cmd_admin_subtle_message
+ verbs += /client/proc/cmd_admin_pm
verbs += /client/proc/cmd_admin_gib_self
verbs += /client/proc/deadchat //toggles deadchat
diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm
index da110a10aa..e3e11fe4a6 100644
--- a/code/modules/admin/verbs/mapping.dm
+++ b/code/modules/admin/verbs/mapping.dm
@@ -117,3 +117,5 @@ var/intercom_range_display_status = 0
src.verbs += /client/proc/camera_view //-errorage
src.verbs += /client/proc/sec_camera_report //-errorage
src.verbs += /client/proc/intercom_view //-errorage
+ src.verbs += /client/proc/air_status //Air things
+ src.verbs += /client/proc/Cell //More air things
diff --git a/code/modules/food/food.dm b/code/modules/food/food.dm
index e2b21409f5..588ea31d58 100644
--- a/code/modules/food/food.dm
+++ b/code/modules/food/food.dm
@@ -309,10 +309,8 @@
icon_state = "roburger"
New()
..()
- reagents.add_reagent("nutriment", 2)
- reagents.add_reagent("nanites", 10)
- bitesize = 3
-
+ reagents.add_reagent("nanites", 2)
+ bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/roburgerbig
name = "roburger"
diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm
index 451b36a88d..2ef64ff9d4 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -35,13 +35,14 @@
src.next_move = 1
src.sight |= SEE_SELF
src.logged_in = 1
-
+
if(istype (src, /mob/living))
if(ticker)
- if(ticker.mode.name == "revolution")
- if ((src.mind in ticker.mode:revolutionaries) || (src.mind in ticker.mode:head_revolutionaries))
- ticker.mode:update_rev_icons_added(src.mind)
- if(ticker.mode.name == "cult")
- if (src.mind in ticker.mode:cult)
- ticker.mode:update_cult_icons_added(src.mind)
- ..()
+ if(ticker.mode)
+ if(ticker.mode.name == "revolution")
+ if ((src.mind in ticker.mode:revolutionaries) || (src.mind in ticker.mode:head_revolutionaries))
+ ticker.mode:update_rev_icons_added(src.mind)
+ if(ticker.mode.name == "cult")
+ if (src.mind in ticker.mode:cult)
+ ticker.mode:update_cult_icons_added(src.mind)
+ ..()
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 3acf443ca8..a6bf67207e 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -143,6 +143,7 @@ mob/new_player
stat("[player.key]", (player.ready)?("(Playing)"):(null))
Topic(href, href_list[])
+ if(!src.client) return
if(href_list["show_preferences"])
preferences.ShowChoices(src)
return 1
@@ -252,8 +253,6 @@ mob/new_player
AttemptLateSpawn("Shaft Miner", minerMax)
if ("30")
AttemptLateSpawn("Mime", mimeMax)
- //if ("31") < Nope. Latejoining cyborgs can fuck a lot of shit up since it's sudden and nobody is near the robotics console etc. -- Urist
- //AttemptLateSpawn("Cyborg", borgMax)
if(!ready && href_list["preferences"])
preferences.process_link(src, href_list)
@@ -273,10 +272,6 @@ mob/new_player
if (character)
character.Equip_Rank(rank, joined_late=1)
- //add to manifest -- Commented out in favor of ManifestLateSpawn() -- TLE
- //for(var/datum/data/record/t in data_core.general)
- // if((t.fields["name"] == character.real_name) && (t.fields["rank"] == "Unassigned"))
- // t.fields["rank"] = rank
if(character.mind.assigned_role != "Cyborg")
ManifestLateSpawn(character,char_icon)
if(ticker)
@@ -435,22 +430,28 @@ mob/new_player
if (IsJobAvailable("Botanist",hydroponicsMax))
dat += "Botanist
"
+
if (IsJobAvailable("Librarian",librarianMax))
dat += "Librarian
"
+
if (IsJobAvailable("Virologist",viroMax))
dat += "Virologist
"
+
if (IsJobAvailable("Lawyer",lawyerMax))
dat += "Lawyer
"
+
if (IsJobAvailable("Cargo Technician",cargotechMax))
dat += "Cargo Technician
"
+
if (IsJobAvailable("Chief Medical Officer",cmoMax))
dat += "Chief Medical Officer
"
+
if (IsJobAvailable("Warden", wardenMax))
dat += "Warden
"
+
if (IsJobAvailable("Shaft Miner",minerMax))
dat += "Shaft Miner
"
- //if (IsJobAvailable("Cyborg",borgMax))
- //dat += "Cyborg
"
+
if (!jobban_isbanned(src,"Assistant"))
dat += "Assistant
"
@@ -478,118 +479,3 @@ mob/new_player
proc/close_spawn_windows()
src << browse(null, "window=latechoices") //closes late choices window
src << browse(null, "window=playersetup") //closes the player setup window
-
-/*
-/obj/begin/verb/enter()
- log_game("[usr.key] entered as [usr.real_name]")
-
- if (ticker)
- for (var/mob/living/silicon/ai/A in world)
- if (!A.stat)
- A.say("[usr.real_name] has arrived on the station!")
- break
-
- usr << "Game mode is [master_mode]."
-
- var/mob/living/carbon/human/H = usr
-
-//find spawn points for normal game modes
-
- if(!(ticker && ticker.mode.name == "ctf"))
- var/list/L = list()
- var/area/A = locate(/area/arrival/start)
- for(var/turf/T in A)
- L += T
-
- while(!L.len)
- usr << "\blue You were unable to enter because the arrival shuttle has been destroyed! The game will reattempt to spawn you in 30 seconds!"
- sleep(300)
- for(var/turf/T in A)
- L += T
- H << "\blue Now teleporting."
- H.loc = pick(L)
-
-//for capture the flag
-
- else if(ticker && ticker.mode.name == "ctf")
- if(H.client.team == "Red")
- var/obj/R = locate("landmark*Red-Spawn")
- H << "\blue Now teleporting."
- H.loc = R.loc
- else if(H.client.team == "Green")
- var/obj/G = locate("landmark*Green-Spawn")
- H << "\blue Now teleporting."
- H.loc = G.loc
-
-//error check
-
- else
- usr << "Invalid start please report this to the admins"
-
-//add to manifest
-
- if(ticker)
- //add to manifest
- var/datum/data/record/G = new /datum/data/record( )
- var/datum/data/record/M = new /datum/data/record( )
- var/datum/data/record/S = new /datum/data/record( )
- var/obj/item/weapon/card/id/C = H.wear_id
- if (C)
- G.fields["rank"] = C.assignment
- else
- G.fields["rank"] = "Unassigned"
- G.fields["name"] = H.real_name
- G.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6))
- M.fields["name"] = G.fields["name"]
- M.fields["id"] = G.fields["id"]
- S.fields["name"] = G.fields["name"]
- S.fields["id"] = G.fields["id"]
- if (H.gender == "female")
- G.fields["sex"] = "Female"
- else
- G.fields["sex"] = "Male"
- G.fields["age"] = text("[]", H.age)
- G.fields["fingerprint"] = text("[]", md5(H.dna.uni_identity))
- G.fields["p_stat"] = "Active"
- G.fields["m_stat"] = "Stable"
- M.fields["b_type"] = text("[]", H.b_type)
- M.fields["mi_dis"] = "None"
- M.fields["mi_dis_d"] = "No minor disabilities have been declared."
- M.fields["ma_dis"] = "None"
- M.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
- M.fields["alg"] = "None"
- M.fields["alg_d"] = "No allergies have been detected in this patient."
- M.fields["cdi"] = "None"
- M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
- M.fields["notes"] = "No notes."
- S.fields["criminal"] = "None"
- S.fields["mi_crim"] = "None"
- S.fields["mi_crim_d"] = "No minor crime convictions."
- S.fields["ma_crim"] = "None"
- S.fields["ma_crim_d"] = "No minor crime convictions."
- S.fields["notes"] = "No notes."
- for(var/obj/datacore/D in world)
- D.general += G
- D.medical += M
- D.security += S
-//DNA!
- reg_dna[H.dna.unique_enzymes] = H.real_name
-//Other Stuff
- if(ticker.mode.name == "sandbox")
- H.CanBuild()
-
-*/
-/*
- say(var/message)
- message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
-
- if (!message)
- return
-
- log_say("[key] : [message]")
-
- if (muted)
- return
-
- . = say_dead(message)
-*/
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index 2469864e04..b32e8e4231 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -135,7 +135,6 @@
#define FILE_DIR "icons/turf"
#define FILE_DIR "interface"
#define FILE_DIR "maps"
-#define FILE_DIR "maps/backup"
#define FILE_DIR "sound"
#define FILE_DIR "sound/ambience"
#define FILE_DIR "sound/announcer"
@@ -159,6 +158,7 @@
#include "code\ATMOSPHERICS\atmospherics.dm"
#include "code\ATMOSPHERICS\datum_pipe_network.dm"
#include "code\ATMOSPHERICS\datum_pipeline.dm"
+#include "code\ATMOSPHERICS\he_pipes.dm"
#include "code\ATMOSPHERICS\pipes.dm"
#include "code\ATMOSPHERICS\components\filter.dm"
#include "code\ATMOSPHERICS\components\mixer.dm"