diff --git a/code/WorkInProgress/buildmode.dm b/code/WorkInProgress/buildmode.dm
index 2a92f647b1..0c42c913d5 100644
--- a/code/WorkInProgress/buildmode.dm
+++ b/code/WorkInProgress/buildmode.dm
@@ -1,4 +1,4 @@
-/proc/togglebuildmode(mob/M as mob in world)
+/proc/togglebuildmode(mob/M as mob in player_list)
set name = "Toggle Build Mode"
set category = "Special Verbs"
if(M.client)
@@ -165,7 +165,7 @@
if("number")
master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value", 123) as num
if("mob-reference")
- master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as mob in world
+ master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as mob in mob_list
if("obj-reference")
master.buildmode.valueholder = input(usr,"Enter variable value:" ,"Value") as obj in world
if("turf-reference")
diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm
index 315eb9603f..029cdcbe12 100644
--- a/code/datums/datacore.dm
+++ b/code/datums/datacore.dm
@@ -3,7 +3,7 @@
spawn()
if(!nosleep)
sleep(40)
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in player_list)
if (!isnull(H.mind) && (H.mind.assigned_role != "MODE"))
var/datum/data/record/G = new()
var/datum/data/record/M = new()
diff --git a/code/datums/diseases/alien_embryo.dm b/code/datums/diseases/alien_embryo.dm
index d4008522eb..5fe6528969 100644
--- a/code/datums/diseases/alien_embryo.dm
+++ b/code/datums/diseases/alien_embryo.dm
@@ -5,7 +5,7 @@
if(!holder) return
if(holder == affected_mob)
stage_act()
-
+
if(affected_mob.stat == DEAD)
if(prob(50))
if(--longevity<=0)
@@ -70,7 +70,7 @@
if(prob(40))
if(gibbed != 0) return 0
var/list/candidates = list() // Picks a random ghost in the world to shove in the larva -- TLE
- for(var/mob/dead/observer/G in world)
+ for(var/mob/dead/observer/G in player_list)
if(G.client)
if(G.client.be_alien)
if(((G.client.inactivity/10)/60) <= 5)
diff --git a/code/datums/helper_datums/tension.dm b/code/datums/helper_datums/tension.dm
index 831ee74572..87213afdcc 100644
--- a/code/datums/helper_datums/tension.dm
+++ b/code/datums/helper_datums/tension.dm
@@ -101,8 +101,8 @@ var/global/datum/tension/tension_master
if(forcenexttick)
forcenexttick = 0
- for (var/mob/M in world)
- if (M.client && M.client.holder)
+ for (var/mob/M in admin_list)
+ if (M.client)
M << " The tensioner wishes to create additional antagonists! Press (this) in 60 seconds to abort!"
spawn(600)
@@ -201,7 +201,7 @@ var/global/datum/tension/tension_master
proc/get_num_players()
var/peeps = 0
- for (var/mob/M in world)
+ for (var/mob/M in player_list)
if (!M.client)
continue
peeps += 1
@@ -296,7 +296,7 @@ var/global/datum/tension/tension_master
var/mob/living/silicon/malfAI = null
var/datum/mind/themind = null
- for(var/mob/living/silicon/ai/ai in world)
+ for(var/mob/living/silicon/ai/ai in player_list)
if(ai.client)
AIs += ai
@@ -336,7 +336,7 @@ var/global/datum/tension/tension_master
var/list/mob/living/carbon/human/candidates = list()
var/mob/living/carbon/human/H = null
- for(var/mob/living/carbon/human/applicant in world)
+ for(var/mob/living/carbon/human/applicant in player_list)
var/datum/preferences/preferences = new
@@ -373,7 +373,7 @@ var/global/datum/tension/tension_master
var/list/mob/living/carbon/human/candidates = list()
var/mob/living/carbon/human/H = null
- for(var/mob/living/carbon/human/applicant in world)
+ for(var/mob/living/carbon/human/applicant in player_list)
var/datum/preferences/preferences = new
@@ -409,7 +409,7 @@ var/global/datum/tension/tension_master
var/list/mob/living/carbon/human/candidates = list()
var/mob/living/carbon/human/H = null
- for(var/mob/living/carbon/human/applicant in world)
+ for(var/mob/living/carbon/human/applicant in player_list)
var/datum/preferences/preferences = new
@@ -440,7 +440,7 @@ var/global/datum/tension/tension_master
var/mob/dead/observer/theghost = null
var/time_passed = world.time
- for(var/mob/dead/observer/G in world)
+ for(var/mob/dead/observer/G in player_list)
if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate"))
spawn(0)
switch(alert(G, "Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","Yes","No"))
@@ -482,7 +482,7 @@ var/global/datum/tension/tension_master
var/list/mob/living/carbon/human/candidates = list()
var/mob/living/carbon/human/H = null
- for(var/mob/living/carbon/human/applicant in world)
+ for(var/mob/living/carbon/human/applicant in player_list)
var/datum/preferences/preferences = new
@@ -523,7 +523,7 @@ var/global/datum/tension/tension_master
var/mob/dead/observer/theghost = null
var/time_passed = world.time
- for(var/mob/dead/observer/G in world)
+ for(var/mob/dead/observer/G in player_list)
if(!jobban_isbanned(G, "operative") && !jobban_isbanned(G, "Syndicate"))
spawn(0)
switch(alert(G,"Do you wish to be considered for a nuke team being sent in?","Please answer in 30 seconds!","Yes","No"))
@@ -570,7 +570,7 @@ var/global/datum/tension/tension_master
if(closet_spawn)
new /obj/structure/closet/syndicate/nuclear(closet_spawn.loc)
- for (var/obj/effect/landmark/A in world)
+ for (var/obj/effect/landmark/A in /area/syndicate_station/start)//Because that's the only place it can BE -Sieve
if (A.name == "Syndicate-Gear-Closet")
new /obj/structure/closet/syndicate/personal(A.loc)
del(A)
@@ -635,7 +635,7 @@ var/global/datum/tension/tension_master
//Generates a list of commandos from active ghosts. Then the user picks which characters to respawn as the commandos.
- for(var/mob/dead/observer/G in world)
+ for(var/mob/dead/observer/G in player_list)
spawn(0)
switch(alert(G,"Do you wish to be considered for an elite syndicate strike team being sent in?","Please answer in 30 seconds!","Yes","No"))
if("Yes")
@@ -653,7 +653,7 @@ var/global/datum/tension/tension_master
if(candidates.len)
var/numagents = 6
//Spawns commandos and equips them.
- for (var/obj/effect/landmark/L in world)
+ for (var/obj/effect/landmark/L in /area/syndicate_mothership/elite_squad)
if(numagents<=0)
break
if (L.name == "Syndicate-Commando")
@@ -692,7 +692,7 @@ var/global/datum/tension/tension_master
// P.info = "
Good morning soldier!. This compact guide will familiarize you with standard operating procedure. There are three basic rules to follow:
#1 Work as a team.
#2 Accomplish your objective at all costs.
#3 Leave no witnesses.
You are fully equipped and stocked for your mission--before departing on the Spec. Ops. Shuttle due South, make sure that all operatives are ready. Actual mission objective will be relayed to you by Central Command through your headsets.
If deemed appropriate, Central Command will also allow members of your team to equip assault power-armor for the mission. You will find the armor storage due West of your position. Once you are ready to leave, utilize the Special Operations shuttle console and toggle the hull doors via the other console.
In the event that the team does not accomplish their assigned objective in a timely manner, or finds no other way to do so, attached below are instructions on how to operate a Nanotrasen Nuclear Device. Your operations LEADER is provided with a nuclear authentication disk and a pin-pointer for this reason. You may easily recognize them by their rank: Lieutenant, Captain, or Major. The nuclear device itself will be present somewhere on your destination.
Hello and thank you for choosing Nanotrasen for your nuclear information needs. Today's crash course will deal with the operation of a Fission Class Nanotrasen made Nuclear Device.
First and foremost, DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE. Pressing any button on the compacted bomb will cause it to extend and bolt itself into place. If this is done to unbolt it one must completely log in which at this time may not be possible.
To make the device functional:
#1 Place bomb in designated detonation zone
#2 Extend and anchor bomb (attack with hand).
#3 Insert Nuclear Auth. Disk into slot.
#4 Type numeric code into keypad ([nuke_code]).
Note: If you make a mistake press R to reset the device.
#5 Press the E button to log onto the device.
You now have activated the device. To deactivate the buttons at anytime, for example when you have already prepped the bomb for detonation, remove the authentication disk OR press the R on the keypad. Now the bomb CAN ONLY be detonated using the timer. A manual detonation is not an option.
Note: Toggle off the SAFETY.
Use the - - and + + to set a detonation time between 5 seconds and 10 minutes. Then press the timer toggle button to start the countdown. Now remove the authentication disk so that the buttons deactivate.
Note: THE BOMB IS STILL SET AND WILL DETONATE
Now before you remove the disk if you need to move the bomb you can: Toggle off the anchor, move it, and re-anchor.
The nuclear authorization code is: [nuke_code ? nuke_code : "None provided"]
Good luck, soldier!
"
// P.name = "Spec. Ops. Manual"
- for (var/obj/effect/landmark/L in world)
+ for (var/obj/effect/landmark/L in /area/shuttle/syndicate_elite)
if (L.name == "Syndicate-Commando-Bomb")
new /obj/effect/spawner/newbomb/timer/syndicate(L.loc)
// del(L)
@@ -708,7 +708,7 @@ var/global/datum/tension/tension_master
//Generates a list of commandos from active ghosts. Then the user picks which characters to respawn as the commandos.
- for(var/mob/dead/observer/G in world)
+ for(var/mob/dead/observer/G in player_list)
spawn(0)
switch(alert(G,"Do you wish to be considered for a cyborg strike team being sent in?","Please answer in 30 seconds!","Yes","No"))
if("Yes")
@@ -727,7 +727,7 @@ var/global/datum/tension/tension_master
var/numagents = 3
//Spawns commandos and equips them.
- for (var/obj/effect/landmark/L in world)
+ for (var/obj/effect/landmark/L in /area/borg_deathsquad)
if(numagents<=0)
break
if (L.name == "Borg-Deathsquad")
diff --git a/code/datums/shuttle_controller.dm b/code/datums/shuttle_controller.dm
index 6554ecf7fc..0f1710a00c 100644
--- a/code/datums/shuttle_controller.dm
+++ b/code/datums/shuttle_controller.dm
@@ -287,10 +287,9 @@ datum/shuttle_controller
settimeleft(SHUTTLETRANSITTIME)
start_location.move_contents_to(end_location, null, NORTH)
- for(var/obj/machinery/door/D in world)
- if( get_area(D) == end_location )
- spawn(0)
- D.close()
+ for(var/obj/machinery/door/D in end_location)
+ spawn(0)
+ D.close()
// Some aesthetic turbulance shaking
for(var/mob/M in end_location)
if(M.client)
@@ -307,10 +306,9 @@ datum/shuttle_controller
start_location = locate(/area/shuttle/escape_pod1/station)
end_location = locate(/area/shuttle/escape_pod1/transit)
start_location.move_contents_to(end_location, null, NORTH)
- for(var/obj/machinery/door/D in world)
- if( get_area(D) == end_location )
- spawn(0)
- D.close()
+ for(var/obj/machinery/door/D in end_location)
+ spawn(0)
+ D.close()
for(var/mob/M in end_location)
if(M.client)
@@ -326,10 +324,9 @@ datum/shuttle_controller
start_location = locate(/area/shuttle/escape_pod2/station)
end_location = locate(/area/shuttle/escape_pod2/transit)
start_location.move_contents_to(end_location, null, NORTH)
- for(var/obj/machinery/door/D in world)
- if( get_area(D) == end_location )
- spawn(0)
- D.close()
+ for(var/obj/machinery/door/D in end_location)
+ spawn(0)
+ D.close()
for(var/mob/M in end_location)
if(M.client)
@@ -345,10 +342,9 @@ datum/shuttle_controller
start_location = locate(/area/shuttle/escape_pod3/station)
end_location = locate(/area/shuttle/escape_pod3/transit)
start_location.move_contents_to(end_location, null, NORTH)
- for(var/obj/machinery/door/D in world)
- if( get_area(D) == end_location )
- spawn(0)
- D.close()
+ for(var/obj/machinery/door/D in end_location)
+ spawn(0)
+ D.close()
for(var/mob/M in end_location)
if(M.client)
@@ -364,10 +360,9 @@ datum/shuttle_controller
start_location = locate(/area/shuttle/escape_pod5/station)
end_location = locate(/area/shuttle/escape_pod5/transit)
start_location.move_contents_to(end_location, null, EAST)
- for(var/obj/machinery/door/D in world)
- if( get_area(D) == end_location )
- spawn(0)
- D.close()
+ for(var/obj/machinery/door/D in end_location)
+ spawn(0)
+ D.close()
for(var/mob/M in end_location)
if(M.client)
diff --git a/code/defines/obj/costume.dm b/code/defines/obj/costume.dm
index 2dd6fc327c..f710a5875d 100644
--- a/code/defines/obj/costume.dm
+++ b/code/defines/obj/costume.dm
@@ -131,4 +131,9 @@
/obj/effect/landmark/costume/sexymime/New()
new /obj/item/clothing/mask/gas/sexymime(src.loc)
new /obj/item/clothing/under/sexymime(src.loc)
- del(src)
\ No newline at end of file
+ del(src)
+
+///obj/effect/landmark/costume/hidden/master/New()
+// var/list/templist = list()
+// templist += src
+// for(var/obj/effect/landmark/costume/hidden/H in z1
\ No newline at end of file
diff --git a/code/defines/procs/gamehelpers.dm b/code/defines/procs/gamehelpers.dm
index 9925ee0072..6180cffc2f 100644
--- a/code/defines/procs/gamehelpers.dm
+++ b/code/defines/procs/gamehelpers.dm
@@ -173,11 +173,11 @@
// Brains/MMIs/pAIs
- for(var/mob/living/carbon/brain/C in world)
+ for(var/mob/living/carbon/brain/C in player_list)
if(get_turf(C) in V)
if(isInSight(source,C))
hear += C
- for(var/mob/living/silicon/pai/C in world)
+ for(var/mob/living/silicon/pai/C in player_list)
if(get_turf(C) in V)
if(isInSight(source,C))
hear += C
diff --git a/code/defines/procs/global_lists.dm b/code/defines/procs/global_lists.dm
new file mode 100644
index 0000000000..3dcf6ee788
--- /dev/null
+++ b/code/defines/procs/global_lists.dm
@@ -0,0 +1,122 @@
+//Since it didn't really belong in any other category, I'm putting this here
+//This is for procs to replace all the goddamn 'in world's that are chilling around the code
+
+var/global/list/player_list = list()//List of all logged in players (Based on mob reference)
+var/global/list/admin_list = list()//List of all logged in admins (Based on mob reference)
+var/global/list/mob_list = list()//List of all mobs, including clientless
+var/global/list/living_mob_list = list()//List of all living mobs, including clientless
+var/global/list/dead_mob_list = list()//List of all dead mobs, including clientless
+var/global/list/client_list = list()//List of all clients, based on ckey
+var/global/list/cable_list = list()//Index for all cables, so that powernets don't have to look through the entire world all the time
+
+//////////////////////////
+/////Initial Building/////
+//////////////////////////
+//Realistically, these should never be run, but ideally, they should only be run once at round-start
+
+proc/make_player_list()//Global proc that rebuilds the player list
+ for(var/mob/p in player_list)//Clears out everyone that logged out
+ if(!(p.client))
+ player_list -= p
+ for(var/mob/M in world)//Adds everyone that has logged in
+ if(M.client)
+ player_list += M
+
+proc/make_admin_list()//Rebuild that shit to try and avoid issues with stealthmins
+ admin_list = list()
+ for(var/mob/M in player_list)
+ if(M.client && M.client.holder)
+ admin_list += M
+
+proc/make_mob_list()
+ for(var/mob/p in mob_list)
+ if(!p)//If it's a null reference, remove it
+ mob_list -= p
+ for(var/mob/M in world)
+ mob_list += M
+
+proc/make_extra_mob_list()
+ for(var/mob/p in living_mob_list)
+ if(!p)
+ living_mob_list -= p
+ if(p.stat == DEAD)//Transfer
+ living_mob_list -= p
+ dead_mob_list += p
+ for(var/mob/p in dead_mob_list)
+ if(!p)
+ dead_mob_list -= p
+ if(p.stat != DEAD)
+ dead_mob_list -= p
+ living_mob_list += p
+ for(var/mob/M in world)
+ if(M.stat == DEAD)
+ living_mob_list += M
+ else
+ dead_mob_list += M
+
+
+//Alright, this proc should NEVER be called in the code, ever. This is more of an 'oh god everything is broken'-emergency button.
+proc/rebuild_mob_lists()
+ player_list = list()
+ admin_list = list()
+ mob_list = list()
+ living_mob_list = list()
+ dead_mob_list = list()
+ client_list = list()
+ for(var/mob/M in world)
+ mob_list += M
+ if(M.client)
+ player_list += M
+ if(M.client.holder)
+ admin_list += M
+ if(M.stat != DEAD)
+ living_mob_list += M
+ else
+ dead_mob_list += M
+ for(var/client/C)
+ client_list += C.ckey
+
+proc/add_to_mob_list(var/mob/A)//Adds an individual mob
+ if(A)
+ mob_list |= A
+ if(A.client)
+ player_list |= A
+ if(A.client.holder)
+ admin_list |= A
+
+proc/remove_from_mob_list(var/mob/R)//Removes an individual mob
+ mob_list -= R
+ if(R.client)
+ player_list -= R
+ if(R.client.holder)
+ admin_list -= R
+
+
+proc/make_client_list()//Rebuilds client list
+ for(var/mob/c in client_list)
+ if(!c.client)
+ client_list -= c.ckey
+ for(var/mob/M in world)
+ if(M.client)
+ client_list += M.ckey
+
+
+
+/obj/item/listdebug//Quick debugger for the global lists
+ icon = 'icons/obj/assemblies.dmi'
+ icon_state = "radio-igniter-tank"
+
+/obj/item/listdebug/attack_self()
+ switch(input("Which list?") in list("Players","Admins","Mobs","Living Mobs","Dead Mobs", "Clients"))
+ if("Players")
+ usr << dd_list2text(player_list,",")
+ if("Admins")
+ usr << dd_list2text(admin_list,",")
+ if("Mobs")
+ usr << dd_list2text(mob_list,",")
+ if("Living Mobs")
+ usr << dd_list2text(living_mob_list,",")
+ if("Dead Mobs")
+ usr << dd_list2text(dead_mob_list,",")
+ if("Clients")
+ usr << dd_list2text(client_list,",")
\ No newline at end of file
diff --git a/code/defines/procs/helpers.dm b/code/defines/procs/helpers.dm
index 75814b751e..be595a66b1 100644
--- a/code/defines/procs/helpers.dm
+++ b/code/defines/procs/helpers.dm
@@ -813,7 +813,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
if( newname == "Inactive AI" || findtext(newname,"cyborg") ) //To prevent common meta-gaming name-choices
M << "That name is reserved."
return
- for (var/mob/living/silicon/ai/A in world)
+ for (var/mob/living/silicon/ai/A in player_list)
if (A.real_name == newname && newname!=randomname)
M << "There's already an AI with that name."
return
@@ -843,7 +843,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
if(badname)
M << "That name is reserved."
return clname(M)
- for (var/mob/A in world)
+ for (var/mob/A in player_list)
if(A.real_name == newname)
M << "That name is reserved."
return clname(M)
@@ -870,7 +870,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
var/list/names = list()
var/list/borgs = list()
var/list/namecounts = list()
- for (var/mob/living/silicon/robot/A in world)
+ for (var/mob/living/silicon/robot/A in player_list)
var/name = A.real_name
if (A.stat == 2)
continue
@@ -892,7 +892,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
var/list/names = list()
var/list/ais = list()
var/list/namecounts = list()
- for (var/mob/living/silicon/ai/A in world)
+ for (var/mob/living/silicon/ai/A in player_list)
var/name = A.real_name
if (A.stat == 2)
continue
@@ -934,34 +934,34 @@ Turf and target are seperate in case you want to teleport some distance from a t
/proc/sortmobs()
- var/list/mob_list = list()
- for(var/mob/living/silicon/ai/M in world)
- mob_list.Add(M)
- for(var/mob/living/silicon/pai/M in world)
- mob_list.Add(M)
- for(var/mob/living/silicon/robot/M in world)
- mob_list.Add(M)
- for(var/mob/living/carbon/human/M in world)
- mob_list.Add(M)
- for(var/mob/living/carbon/brain/M in world)
- mob_list.Add(M)
- for(var/mob/living/carbon/alien/M in world)
- mob_list.Add(M)
- for(var/mob/dead/observer/M in world)
- mob_list.Add(M)
- for(var/mob/new_player/M in world)
- mob_list.Add(M)
- for(var/mob/living/carbon/monkey/M in world)
- mob_list.Add(M)
- for(var/mob/living/carbon/metroid/M in world)
- mob_list.Add(M)
- for(var/mob/living/simple_animal/M in world)
- mob_list.Add(M)
+ var/list/moblist = list()
+ for(var/mob/living/silicon/ai/M in mob_list)
+ moblist.Add(M)
+ for(var/mob/living/silicon/pai/M in mob_list)
+ moblist.Add(M)
+ for(var/mob/living/silicon/robot/M in mob_list)
+ moblist.Add(M)
+ for(var/mob/living/carbon/human/M in mob_list)
+ moblist.Add(M)
+ for(var/mob/living/carbon/brain/M in mob_list)
+ moblist.Add(M)
+ for(var/mob/living/carbon/alien/M in mob_list)
+ moblist.Add(M)
+ for(var/mob/dead/observer/M in mob_list)
+ moblist.Add(M)
+ for(var/mob/new_player/M in mob_list)
+ moblist.Add(M)
+ for(var/mob/living/carbon/monkey/M in mob_list)
+ moblist.Add(M)
+ for(var/mob/living/carbon/metroid/M in mob_list)
+ moblist.Add(M)
+ for(var/mob/living/simple_animal/M in mob_list)
+ moblist.Add(M)
// for(var/mob/living/silicon/hivebot/M in world)
// mob_list.Add(M)
// for(var/mob/living/silicon/hive_mainframe/M in world)
// mob_list.Add(M)
- return mob_list
+ return moblist
/proc/convert2energy(var/M)
var/E = M*(SPEED_OF_LIGHT_SQ)
diff --git a/code/defines/procs/statistics.dm b/code/defines/procs/statistics.dm
index 08183aaf17..8dbdff063c 100644
--- a/code/defines/procs/statistics.dm
+++ b/code/defines/procs/statistics.dm
@@ -2,7 +2,7 @@ proc/sql_poll_players()
if(!sqllogging)
return
var/playercount = 0
- for(var/mob/M in world)
+ for(var/mob/M in player_list)
if(M.client)
playercount += 1
var/DBConnection/dbcon = new()
@@ -22,8 +22,8 @@ proc/sql_poll_admins()
if(!sqllogging)
return
var/admincount = 0
- for (var/mob/M in world)
- if(M && M.client && M.client.holder)
+ for (var/mob/M in admin_list)
+ if(M && M.client)
admincount += 1
var/DBConnection/dbcon = new()
dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]")
diff --git a/code/game/algorithm.dm b/code/game/algorithm.dm
index 09152ae939..6fb0970dad 100644
--- a/code/game/algorithm.dm
+++ b/code/game/algorithm.dm
@@ -46,14 +46,14 @@ Starting up. [time2text(world.timeofday, "hh:mm.ss")]
// This function counts a passed job.
proc/countJob(rank)
var/jobCount = 0
- for(var/mob/H in world)
+ for(var/mob/H in player_list)
if(H.mind && H.mind.assigned_role == rank)
jobCount++
return jobCount
/proc/AutoUpdateAI(obj/subject)
if (subject!=null)
- for(var/mob/living/silicon/ai/M in world)
+ for(var/mob/living/silicon/ai/M in player_list)
if ((M.client && M.machine == subject))
subject.attack_ai(M)
diff --git a/code/game/area/ai_monitored.dm b/code/game/area/ai_monitored.dm
index 43718104c4..d56f8f37c8 100644
--- a/code/game/area/ai_monitored.dm
+++ b/code/game/area/ai_monitored.dm
@@ -53,14 +53,14 @@
/obj/machinery/camera/motion/proc/cancelAlarm()
if (detectTime == -1)
- for (var/mob/living/silicon/aiPlayer in world)
+ for (var/mob/living/silicon/aiPlayer in player_list)
if (status) aiPlayer.cancelAlarm("Motion", src.loc.loc)
detectTime = 0
return 1
/obj/machinery/camera/motion/proc/triggerAlarm()
if (!detectTime) return 0
- for (var/mob/living/silicon/aiPlayer in world)
+ for (var/mob/living/silicon/aiPlayer in player_list)
if (status) aiPlayer.triggerAlarm("Motion", src.loc.loc, src)
detectTime = -1
return 1
@@ -82,5 +82,5 @@
detectTime = world.time - 301
triggerAlarm()
else
- for (var/mob/living/silicon/aiPlayer in world) // manually cancel, to not disturb internal state
+ for (var/mob/living/silicon/aiPlayer in player_list) // manually cancel, to not disturb internal state
aiPlayer.cancelAlarm("Motion", src.loc.loc)
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 38d2a333f0..820147954e 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -84,12 +84,12 @@
var/list/cameras = list()
for (var/obj/machinery/camera/C in src)
cameras += C
- for (var/mob/living/silicon/aiPlayer in world)
+ for (var/mob/living/silicon/aiPlayer in player_list)
if (state == 1)
aiPlayer.cancelAlarm("Power", src, source)
else
aiPlayer.triggerAlarm("Power", src, cameras, source)
- for(var/obj/machinery/computer/station_alert/a in world)
+ for(var/obj/machinery/computer/station_alert/a in player_list)
if(state == 1)
a.cancelAlarm("Power", src, source)
else
@@ -108,12 +108,12 @@
//src.updateicon()
for(var/obj/machinery/camera/C in RA)
cameras += C
- for(var/mob/living/silicon/aiPlayer in world)
+ for(var/mob/living/silicon/aiPlayer in player_list)
aiPlayer.triggerAlarm("Atmosphere", src, cameras, src)
for(var/obj/machinery/computer/station_alert/a in world)
a.triggerAlarm("Atmosphere", src, cameras, src)
else if (src.atmosalm == 2)
- for(var/mob/living/silicon/aiPlayer in world)
+ for(var/mob/living/silicon/aiPlayer in player_list)
aiPlayer.cancelAlarm("Atmosphere", src, src)
for(var/obj/machinery/computer/station_alert/a in world)
a.cancelAlarm("Atmosphere", src, src)
@@ -138,7 +138,7 @@
var/list/cameras = list()
for (var/obj/machinery/camera/C in src)
cameras += C
- for (var/mob/living/silicon/ai/aiPlayer in world)
+ for (var/mob/living/silicon/ai/aiPlayer in player_list)
aiPlayer.triggerAlarm("Fire", src, cameras, src)
for (var/obj/machinery/computer/station_alert/a in world)
a.triggerAlarm("Fire", src, cameras, src)
@@ -156,9 +156,9 @@
else if(D.density)
spawn(0)
D.open()
- for (var/mob/living/silicon/ai/aiPlayer in world)
+ for (var/mob/living/silicon/ai/aiPlayer in player_list)
aiPlayer.cancelAlarm("Fire", src, src)
- for (var/obj/machinery/computer/station_alert/a in world)
+ for (var/obj/machinery/computer/station_alert/a in player_list)
a.cancelAlarm("Fire", src, src)
return
diff --git a/code/game/dna.dm b/code/game/dna.dm
index 6714e61e2c..a85049f118 100644
--- a/code/game/dna.dm
+++ b/code/game/dna.dm
@@ -705,7 +705,7 @@
|| locate(/obj/machinery/computer/cloning, get_step(src, WEST)))
if (!M.client)
- for(var/mob/dead/observer/ghost in world)
+ for(var/mob/dead/observer/ghost in player_list)
if(ghost.corpse == M && ghost.client)
ghost << "Your corpse has been placed into a cloning scanner. Return to your body if you want to be resurrected/cloned! (Verbs -> Ghost -> Re-enter corpse)"
break
diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm
index 7ae3c8b261..13cf9b1bc7 100644
--- a/code/game/gamemodes/blob/blob.dm
+++ b/code/game/gamemodes/blob/blob.dm
@@ -94,7 +94,7 @@ var/list/blob_nodes = list()
switch(stage)
if (0)
send_intercept(1)
- for (var/mob/living/silicon/ai/aiPlayer in world)
+ for (var/mob/living/silicon/ai/aiPlayer in living_mob_list)
if (aiPlayer.client)
var/law = "The station is under quarantine. Do not permit anyone to leave. Disregard laws 1-3 if necessary to prevent, by any means necessary, anyone from leaving. NanoTrasen will not send an emergency shuttle under any circumstances."
//var/law = "The station is under quarantine. The biohazard must be destroyed at all costs and must not be allowed to spread. Anyone using a space suit for any reason other than to destroy the biohazard is to be terminated. NanoTrasen will not send an emergency shuttle under any circumstances."
diff --git a/code/game/gamemodes/blob/blob_finish.dm b/code/game/gamemodes/blob/blob_finish.dm
index d0c9620383..8cdc9ffd1f 100644
--- a/code/game/gamemodes/blob/blob_finish.dm
+++ b/code/game/gamemodes/blob/blob_finish.dm
@@ -52,8 +52,8 @@
var/numAlive = 0
var/numSpace = 0
var/numOffStation = 0
- for (var/mob/living/silicon/ai/aiPlayer in world)
- for(var/mob/M in world)
+ for (var/mob/living/silicon/ai/aiPlayer in mob_list)
+ for(var/mob/living/carbon/human/M in mob_list)
if ((M != aiPlayer && M.client))
if (M.stat == 2)
numDead += 1
diff --git a/code/game/gamemodes/blob/blob_report.dm b/code/game/gamemodes/blob/blob_report.dm
index a8074b9bfb..731ac0ea39 100644
--- a/code/game/gamemodes/blob/blob_report.dm
+++ b/code/game/gamemodes/blob/blob_report.dm
@@ -33,7 +33,7 @@
intercepttext += "Nuclear Authentication Code: [nukecode]
"
intercepttext += "Message ends."
- for (var/mob/living/silicon/ai/aiPlayer in world)
+ for (var/mob/living/silicon/ai/aiPlayer in player_list)
if (aiPlayer.client)
var/law = "The station is under quarantine. Do not permit anyone to leave. Disregard laws 1-3 if necessary to prevent, by any means necessary, anyone from leaving. The nuclear failsafe must be activated at any cost, the code is: [nukecode]."
aiPlayer.set_zeroth_law(law)
diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm
index 04a86b7345..ed62e4dd4d 100644
--- a/code/game/gamemodes/blob/blobs/core.dm
+++ b/code/game/gamemodes/blob/blobs/core.dm
@@ -40,8 +40,8 @@
proc/create_fragments(var/wave_size = 1)
var/list/candidates = list()
- for(var/mob/dead/observer/G in world)
- if(G.client && G.client.be_alien)
+ for(var/mob/dead/observer/G in player_list)
+ if(G.client.be_alien)
if(G.corpse)
if(G.corpse.stat==2)
candidates.Add(G)
diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
index 26b47c38f4..877edc3431 100644
--- a/code/game/gamemodes/changeling/changeling.dm
+++ b/code/game/gamemodes/changeling/changeling.dm
@@ -210,7 +210,7 @@
..()
var/list/possibleIDs = list("Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega")
- for(var/mob/living/carbon/aChangeling in world)
+ for(var/mob/living/carbon/aChangeling in player_list)
if(aChangeling.changeling)
possibleIDs -= aChangeling.changeling.changelingID
diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm
index 895e1acc05..c29df024cb 100644
--- a/code/game/gamemodes/changeling/changeling_powers.dm
+++ b/code/game/gamemodes/changeling/changeling_powers.dm
@@ -477,7 +477,7 @@
spawn(10)
var/list/candidates = list()
- for(var/mob/dead/observer/G in world)
+ for(var/mob/dead/observer/G in player_list)
candidates += G
for(var/mob/dead/observer/G in candidates)
diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm
index 83dbbf3045..741b14b99f 100644
--- a/code/game/gamemodes/cult/cult.dm
+++ b/code/game/gamemodes/cult/cult.dm
@@ -84,7 +84,7 @@
var/list/possible_targets = get_unconvertables()
if(!possible_targets.len)
- for(var/mob/living/carbon/human/player in world)
+ for(var/mob/living/carbon/human/player in player_list)
if(player.mind && !(player.mind in cult))
possible_targets += player.mind
@@ -266,7 +266,7 @@
/datum/game_mode/cult/proc/get_unconvertables()
var/list/ucs = list()
- for(var/mob/living/carbon/human/player in world)
+ for(var/mob/living/carbon/human/player in mob_list)
if(!is_convertable_to_cult(player.mind))
ucs += player.mind
return ucs
diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm
index a1c16df6dd..6a513ed43c 100644
--- a/code/game/gamemodes/events.dm
+++ b/code/game/gamemodes/events.dm
@@ -163,7 +163,7 @@
A.power_change()
/proc/appendicitis()
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in living_mob_list)
var/foundAlready = 0 // don't infect someone that already has the virus
for(var/datum/disease/D in H.viruses)
foundAlready = 1
@@ -204,7 +204,7 @@
// virus_type = /datum/disease/t_virus
if("pierrot's throat")
virus_type = /datum/disease/pierrot_throat
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in living_mob_list)
var/foundAlready = 0 // don't infect someone that already has the virus
for(var/datum/disease/D in H.viruses)
@@ -249,7 +249,7 @@
var/list/candidates = list() // Picks a random ghost in the world to shove in the larva -- TLE; If there's no ghost... well, sucks. Wasted event. -- Urist
- for(var/mob/dead/observer/G in world)
+ for(var/mob/dead/observer/G in player_list)
if(G.client)
if(G.client.be_alien)
if(((G.client.inactivity/10)/60) <= 5)
@@ -282,7 +282,7 @@
sleep(100)
*/
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in living_mob_list)
if(istype(H,/mob/living/carbon/human))
H.apply_effect((rand(15,75)),IRRADIATE,0)
if (prob(5))
@@ -294,7 +294,7 @@
else
randmutg(H)
domutcheck(H,null,1)
- for(var/mob/living/carbon/monkey/M in world)
+ for(var/mob/living/carbon/monkey/M in living_mob_list)
M.apply_effect((rand(15,75)),IRRADIATE,0)
sleep(100)
command_alert("High levels of radiation detected near the station. Please report to the Med-bay if you feel strange.", "Anomaly Alert")
@@ -395,7 +395,7 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
*/
//AI laws
- for(var/mob/living/silicon/ai/M in world)
+ for(var/mob/living/silicon/ai/M in living_mob_list)
if(M.stat != 2 && M.see_in_dark != 0)
var/who2 = pick("ALIENS", "BEARS", "CLOWNS", "XENOS", "PETES", "BOMBS", "FETISHES", "WIZARDS", "SYNDICATE AGENTS", "CENTCOM OFFICERS", "SPACE PIRATES", "TRAITORS", "MONKEYS", "BEES", "CARP", "CRABS", "EELS", "BANDITS", "LIGHTS")
var/what2 = pick("BOLTERS", "STAVES", "DICE", "SINGULARITIES", "TOOLBOXES", "NETTLES", "AIRLOCKS", "CLOTHES", "WEAPONS", "MEDKITS", "BOMBS", "CANISTERS", "CHAIRS", "BBQ GRILLS", "ID CARDS", "CAPTAINS")
@@ -414,7 +414,7 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
var/allergysev = pick("deathly", "mildly", "severely", "contagiously")
var/crew
var/list/pos_crew = list()
- for(var/mob/living/carbon/human/pos in world)
+ for(var/mob/living/carbon/human/pos in player_list)
pos_crew += pos.real_name
crew = pick(pos_crew)
switch(rand(1,14))
diff --git a/code/game/gamemodes/events/ninja_equipment.dm b/code/game/gamemodes/events/ninja_equipment.dm
index ea17d2b135..0a92cba6dc 100644
--- a/code/game/gamemodes/events/ninja_equipment.dm
+++ b/code/game/gamemodes/events/ninja_equipment.dm
@@ -1064,7 +1064,7 @@ ________________________________________________________________________________
U << "\blue Hacking \the [A]..."
spawn(0)
var/turf/location = get_turf(U)
- for(var/mob/living/silicon/ai/AI in world)
+ for(var/mob/living/silicon/ai/AI in player_list)
AI << "\red Network Alert: Hacking attempt detected[location?" in [location]":". Unable to pinpoint location"]."
if(A:files&&A:files.known_tech.len)
for(var/datum/tech/current_data in S.stored_research)
@@ -1239,7 +1239,7 @@ ________________________________________________________________________________
voice = "[pick(wizard_first)] [pick(wizard_second)]"
if(91 to 100)//Small chance of an existing crew name.
var/names[] = new()
- for(var/mob/living/carbon/human/M in world)
+ for(var/mob/living/carbon/human/M in player_list)
if(M==U||!M.client||!M.real_name) continue
names.Add(M.real_name)
voice = !names.len ? "Cuban Pete" : pick(names)
diff --git a/code/game/gamemodes/events/space_ninja.dm b/code/game/gamemodes/events/space_ninja.dm
index 67cb140a03..3dde2854cd 100644
--- a/code/game/gamemodes/events/space_ninja.dm
+++ b/code/game/gamemodes/events/space_ninja.dm
@@ -139,10 +139,9 @@ Malf AIs/silicons aren't added. Monkeys aren't added. Messes with objective comp
var/mob/dead/observer/G
var/list/candidates = list()
- for(G in world)
- if(G.client)//Now everyone can ninja!
- if(((G.client.inactivity/10)/60) <= 5)
- candidates.Add(G)
+ for(G in player_list)
+ if(((G.client.inactivity/10)/60) <= 5)
+ candidates.Add(G)
//The ninja will be created on the right spawn point or at late join.
var/mob/living/carbon/human/new_ninja = create_space_ninja(pick(spawn_list.len ? spawn_list : latejoin ))
@@ -165,7 +164,7 @@ Malf AIs/silicons aren't added. Monkeys aren't added. Messes with objective comp
//Xenos and deathsquads take precedence over everything else.
//Unless the xenos are hiding in a locker somewhere, this'll find em.
- for(var/mob/living/carbon/alien/humanoid/xeno in world)
+ for(var/mob/living/carbon/alien/humanoid/xeno in player_list)
if(istype(xeno))
xeno_list += xeno
@@ -362,7 +361,7 @@ As such, it's hard-coded for now. No reason for it not to be, really.
//=======//CURRENT PLAYER VERB//=======//
-/client/proc/cmd_admin_ninjafy(var/mob/M in world)
+/client/proc/cmd_admin_ninjafy(var/mob/M in player_list)
set category = null
set name = "Make Space Ninja"
@@ -426,8 +425,8 @@ As such, it's hard-coded for now. No reason for it not to be, really.
return
var/mob/dead/observer/G
- for(var/mob/dead/observer/G_find in world)
- if(G_find.client&&ckey(G_find.key)==ckey(input))
+ for(var/mob/dead/observer/G_find in player_list)
+ if(ckey(G_find.key)==ckey(input))
G = G_find
break
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index ab46d4db18..66d2cb61f2 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -80,7 +80,7 @@ Whitespace:Seperator;
///Checks to see if the game can be setup and ran with the current number of players or whatnot.
/datum/game_mode/proc/can_start()
var/playerC = 0
- for(var/mob/new_player/player in world)
+ for(var/mob/new_player/player in player_list)
if((player.client)&&(player.ready))
playerC++
if(playerC >= required_players)
@@ -133,7 +133,7 @@ Whitespace:Seperator;
var/list/area/escape_locations = list(/area/shuttle/escape/centcom, /area/shuttle/escape_pod1/centcom, /area/shuttle/escape_pod2/centcom, /area/shuttle/escape_pod3/centcom, /area/shuttle/escape_pod5/centcom)
- for(var/mob/M in world)
+ for(var/mob/M in player_list)
if(M.client)
clients++
if(ishuman(M))
@@ -249,7 +249,7 @@ Whitespace:Seperator;
// Ultimate randomizing code right here
- for(var/mob/new_player/player in world)
+ for(var/mob/new_player/player in player_list)
if(player.client && player.ready)
players += player
@@ -331,7 +331,7 @@ Whitespace:Seperator;
/datum/game_mode/proc/num_players()
. = 0
- for(var/mob/new_player/P in world)
+ for(var/mob/new_player/P in player_list)
if(P.client && P.ready)
. ++
@@ -341,7 +341,7 @@ Whitespace:Seperator;
///////////////////////////////////
/datum/game_mode/proc/get_living_heads()
var/list/heads = list()
- for(var/mob/living/carbon/human/player in world)
+ for(var/mob/living/carbon/human/player in player_list)
if(player.stat!=2 && player.mind && (player.mind.assigned_role in command_positions))
heads += player.mind
return heads
@@ -352,7 +352,7 @@ Whitespace:Seperator;
////////////////////////////
/datum/game_mode/proc/get_all_heads()
var/list/heads = list()
- for(var/mob/player in world)
+ for(var/mob/player in player_list)
if(player.mind && (player.mind.assigned_role in command_positions))
heads += player.mind
return heads
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index bee4cf063f..95ab805265 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -75,7 +75,6 @@ var/global/datum/controller/gameticker/ticker
src.mode = new mtype
else
src.mode = config.pick_mode(master_mode)
-
if (!src.mode.can_start())
world << "Unable to start [mode.name]. Not enough players, [mode.required_players] players needed. Reverting to pre-game lobby."
del(mode)
@@ -160,12 +159,12 @@ var/global/datum/controller/gameticker/ticker
var/obj/structure/stool/bed/temp_buckle = new(src)
//Incredibly hackish. It creates a bed within the gameticker (lol) to stop mobs running around
if(station_missed)
- for(var/mob/living/M in world)
+ for(var/mob/living/M in living_mob_list)
M.buckled = temp_buckle //buckles the mob so it can't do anything
if(M.client)
M.client.screen += cinematic //show every client the cinematic
else //nuke kills everyone on z-level 1 to prevent "hurr-durr I survived"
- for(var/mob/living/M in world)
+ for(var/mob/living/M in living_mob_list)
M.buckled = temp_buckle
if(M.client)
M.client.screen += cinematic
@@ -243,7 +242,7 @@ var/global/datum/controller/gameticker/ticker
proc/create_characters()
- for(var/mob/new_player/player in world)
+ for(var/mob/new_player/player in player_list)
if(player.ready)
if(player.mind && player.mind.assigned_role=="AI")
player.close_spawn_windows()
@@ -254,14 +253,14 @@ var/global/datum/controller/gameticker/ticker
proc/collect_minds()
- for(var/mob/living/player in world)
+ for(var/mob/living/player in player_list)
if(player.mind)
ticker.minds += player.mind
proc/equip_characters()
var/captainless=1
- for(var/mob/living/carbon/human/player in world)
+ for(var/mob/living/carbon/human/player in player_list)
if(player && player.mind && player.mind.assigned_role)
if(player.mind.assigned_role == "Captain")
captainless=0
@@ -315,7 +314,7 @@ var/global/datum/controller/gameticker/ticker
/datum/controller/gameticker/proc/declare_completion()
- for (var/mob/living/silicon/ai/aiPlayer in world)
+ for (var/mob/living/silicon/ai/aiPlayer in mob_list)
if (aiPlayer.stat != 2)
world << "[aiPlayer.name] (Played by: [aiPlayer.key])'s laws at the end of the game were:"
else
@@ -328,7 +327,7 @@ var/global/datum/controller/gameticker/ticker
robolist += "[robo.name][robo.stat?" (Deactivated) (Played by: [robo.key]), ":" (Played by: [robo.key]), "]"
world << "[robolist]"
- for (var/mob/living/silicon/robot/robo in world)
+ for (var/mob/living/silicon/robot/robo in mob_list)
if (!robo.connected_ai)
if (robo.stat != 2)
world << "[robo.name] (Played by: [robo.key]) survived as an AI-less borg! Its laws were:"
@@ -346,7 +345,7 @@ var/global/datum/controller/gameticker/ticker
//Print a list of antagonists to the server log
var/list/total_antagonists = list()
//Look into all mobs in world, dead or alive
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if(M.mind && M.mind.special_role) //If they have a mind and are an antagonist of some sort...
var/temprole = M.mind.special_role
diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm
index 48de925403..f07934fd2c 100644
--- a/code/game/gamemodes/intercept_report.dm
+++ b/code/game/gamemodes/intercept_report.dm
@@ -88,7 +88,7 @@
/datum/intercept_text/proc/pick_mob()
var/list/dudes = list()
- for(var/mob/living/carbon/human/man in world)
+ for(var/mob/living/carbon/human/man in player_list)
if (!man.mind) continue
if (man.mind.assigned_role=="MODE") continue
dudes += man
diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm
index 5bda8305e7..3264e86315 100644
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm
+++ b/code/game/gamemodes/malfunction/Malf_Modules.dm
@@ -36,7 +36,7 @@ rcd light flash thingy on matter drain
/client/proc/fireproof_core()
set category = "Malfunction"
set name = "Fireproof Core"
- for(var/mob/living/silicon/ai/ai in world)
+ for(var/mob/living/silicon/ai/ai in player_list)
ai.fire_res_on_core = 1
usr.verbs -= /client/proc/fireproof_core
usr << "\red Core fireproofed."
@@ -49,7 +49,7 @@ rcd light flash thingy on matter drain
set category = "Malfunction"
set name = "Upgrade Turrets"
usr.verbs -= /client/proc/upgrade_turrets
- for(var/obj/machinery/turret/turret in world)
+ for(var/obj/machinery/turret/turret in player_list)
turret.health += 30
turret.shot_delay = 20
diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm
index 29786685e0..c23d8f6922 100644
--- a/code/game/gamemodes/malfunction/malfunction.dm
+++ b/code/game/gamemodes/malfunction/malfunction.dm
@@ -28,7 +28,7 @@
/datum/game_mode/malfunction/pre_setup()
- for(var/mob/new_player/player in world)
+ for(var/mob/new_player/player in player_list)
if(player.mind && player.mind.assigned_role == "AI")
malf_ai+=player.mind
if(malf_ai.len)
@@ -178,9 +178,8 @@
for(var/datum/mind/AI_mind in ticker.mode:malf_ai)
AI_mind.current.verbs -= /datum/game_mode/malfunction/proc/ai_win
ticker.mode:explosion_in_progress = 1
- for(var/mob/M in world)
- if(M.client)
- M << 'Alarm.ogg'
+ for(var/mob/M in player_list)
+ M << 'Alarm.ogg'
world << "Self-destructing in 10"
for (var/i=9 to 1 step -1)
sleep(10)
diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm
index 76113946fb..e620c9be0d 100644
--- a/code/game/gamemodes/meteor/meteor.dm
+++ b/code/game/gamemodes/meteor/meteor.dm
@@ -41,16 +41,15 @@
var/area/escape_zone = locate(/area/shuttle/escape/centcom)
var/area/pod_zone = list( /area/shuttle/escape_pod1/centcom, /area/shuttle/escape_pod2/centcom, /area/shuttle/escape_pod3/centcom, /area/shuttle/escape_pod5/centcom )
- for(var/mob/living/player in world)
- if (player.client)
- if (player.stat != 2)
- var/turf/location = get_turf(player.loc)
- if (location in escape_zone)
- survivors[player.real_name] = "shuttle"
- else if (location.loc.type in pod_zone)
- survivors[player.real_name] = "pod"
- else
- survivors[player.real_name] = "alive"
+ for(var/mob/living/player in player_list)
+ if (player.stat != 2)
+ var/turf/location = get_turf(player.loc)
+ if (location in escape_zone)
+ survivors[player.real_name] = "shuttle"
+ else if (location.loc.type in pod_zone)
+ survivors[player.real_name] = "pod"
+ else
+ survivors[player.real_name] = "alive"
feedback_set_details("round_end_result","end - evacuation")
feedback_set("round_end_result",survivors.len)
diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm
index 2507d56eab..54f8a37f34 100644
--- a/code/game/gamemodes/nuclear/pinpointer.dm
+++ b/code/game/gamemodes/nuclear/pinpointer.dm
@@ -162,7 +162,7 @@
var/DNAstring = input("Input DNA string to search for." , "Please Enter String." , "")
if(!DNAstring)
return
- for(var/mob/living/carbon/M in world)
+ for(var/mob/living/carbon/M in mob_list)
if(!M.dna)
continue
if(M.dna.unique_enzymes == DNAstring)
diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm
index 622cefa423..db86c7a762 100644
--- a/code/game/gamemodes/objective.dm
+++ b/code/game/gamemodes/objective.dm
@@ -171,7 +171,7 @@ datum/objective/hijack
return 0
var/area/shuttle = locate(/area/shuttle/escape/centcom)
var/protected_mobs[] = list(/mob/living/silicon/ai, /mob/living/silicon/pai)
- for(var/mob/living/player in world)
+ for(var/mob/living/player in player_list)
if(player.type in protected_mobs) continue
if (player.mind && (player.mind != owner))
if (!player.stat) //they're not dead or in crit
@@ -194,7 +194,7 @@ datum/objective/block
return 0
var/area/shuttle = locate(/area/shuttle/escape/centcom)
var/protected_mobs[] = list(/mob/living/silicon/ai, /mob/living/silicon/pai, /mob/living/silicon/robot)
- for(var/mob/living/player in world)
+ for(var/mob/living/player in player_list)
if(player.type in protected_mobs) continue
if (player.mind)
if (player.stat != 2)
@@ -215,7 +215,7 @@ datum/objective/silence
var/area/pod3 = locate(/area/shuttle/escape_pod3/centcom)
var/area/pod4 = locate(/area/shuttle/escape_pod5/centcom)
- for(var/mob/living/player in world)
+ for(var/mob/living/player in player_list)
if (player == owner.current)
continue
if (player.mind)
@@ -457,11 +457,11 @@ datum/objective/absorb
if (ticker)
var/n_p = 1 //autowin
if (ticker.current_state == GAME_STATE_SETTING_UP)
- for(var/mob/new_player/P in world)
+ for(var/mob/new_player/P in player_list)
if(P.client && P.ready && P.mind!=owner)
n_p ++
else if (ticker.current_state == GAME_STATE_PLAYING)
- for(var/mob/living/carbon/human/P in world)
+ for(var/mob/living/carbon/human/P in player_list)
if(P.client && !(P.mind in ticker.mode.changelings) && P.mind!=owner)
n_p ++
target_amount = min(target_amount, n_p)
diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm
index 74e7f3d39a..d507ddd2df 100644
--- a/code/game/gamemodes/revolution/revolution.dm
+++ b/code/game/gamemodes/revolution/revolution.dm
@@ -47,7 +47,7 @@
var/list/datum/mind/possible_headrevs = get_players_for_role(BE_REV)
var/head_check = 0
- for(var/mob/new_player/player in world)
+ for(var/mob/new_player/player in player_list)
if(player.mind.assigned_role in command_positions)
head_check = 1
break
diff --git a/code/game/gamemodes/sandbox/sandbox.dm b/code/game/gamemodes/sandbox/sandbox.dm
index 35fa7f1e13..3bace4756e 100644
--- a/code/game/gamemodes/sandbox/sandbox.dm
+++ b/code/game/gamemodes/sandbox/sandbox.dm
@@ -11,9 +11,8 @@
world << "Build your own station with the sandbox-panel command!"
/datum/game_mode/sandbox/pre_setup()
- for(var/mob/M in world)
- if(M.client)
- M.CanBuild()
+ for(var/mob/M in player_list)
+ M.CanBuild()
return 1
/datum/game_mode/sandbox/check_finished()
diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm
index 4db15b0553..070d555b85 100644
--- a/code/game/gamemodes/wizard/rightandwrong.dm
+++ b/code/game/gamemodes/wizard/rightandwrong.dm
@@ -5,7 +5,7 @@
set desc = "Summon Guns"
set name = "Wizards: No sense of right and wrong!"
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in player_list)
if(H.stat == 2 || !(H.client)) continue
if(is_special_character(H)) continue
if(prob(25))
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index e25f8ad683..8797fe64f5 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -104,7 +104,7 @@ var/global/datum/controller/occupations/job_master
break
proc/ResetOccupations()
- for(var/mob/new_player/player in world)
+ for(var/mob/new_player/player in player_list)
if((player) && (player.mind))
player.mind.assigned_role = null
player.mind.special_role = null
@@ -172,7 +172,7 @@ var/global/datum/controller/occupations/job_master
A.spawn_positions = 3
//Get the players who are ready
- for(var/mob/new_player/player in world)
+ for(var/mob/new_player/player in player_list)
if((player) && (player.client) && (player.ready) && (player.mind) && (!player.mind.assigned_role))
unassigned += player
@@ -415,7 +415,7 @@ var/global/datum/controller/occupations/job_master
var/level3 = 0 //low
var/level4 = 0 //never
var/level5 = 0 //banned
- for(var/mob/new_player/player in world)
+ for(var/mob/new_player/player in player_list)
if(!((player) && (player.client) && (player.ready) && (player.mind) && (!player.mind.assigned_role)))
continue //This player is not ready
if(jobban_isbanned(player, job.title))
diff --git a/code/game/machinery/camera.dm b/code/game/machinery/camera.dm
index bb4ba9d3e0..cec954a2d4 100644
--- a/code/game/machinery/camera.dm
+++ b/code/game/machinery/camera.dm
@@ -55,7 +55,7 @@ var/global/list/obj/machinery/camera/Cameras = list()
var/list/namecounts = list()
var/list/humans = list()
var/list/others = list()
- for(var/mob/living/M in world)
+ for(var/mob/living/M in mob_list)
//Cameras can't track people wearing an agent card or a ninja hood.
var/human = 0
if(istype(M, /mob/living/carbon/human))
@@ -242,11 +242,11 @@ var/global/list/obj/machinery/camera/Cameras = list()
spawn(900)
network = initial(network)
icon_state = initial(icon_state)
- for(var/mob/living/silicon/ai/O in world)
+ for(var/mob/living/silicon/ai/O in mob_list)
if (O.current == src)
O.cancel_camera()
O << "Your connection to the camera has been lost."
- for(var/mob/O in world)
+ for(var/mob/O in mob_list)
if (istype(O.machine, /obj/machinery/computer/security))
var/obj/machinery/computer/security/S = O.machine
if (S.current == src)
@@ -307,12 +307,12 @@ var/global/list/obj/machinery/camera/Cameras = list()
itemname = P.name
info = P.notehtml
U << "You hold \a [itemname] up to the camera ..."
- for(var/mob/living/silicon/ai/O in world)
+ for(var/mob/living/silicon/ai/O in player_list)
//if (O.current == src)
if(U.name == "Unknown") O << "[U] holds \a [itemname] up to one of your cameras ..."
else O << "[U] holds \a [itemname] up to one of your cameras ..."
O << browse(text("[][]", itemname, info), text("window=[]", itemname))
- for(var/mob/O in world)
+ for(var/mob/O in player_list)
if (istype(O.machine, /obj/machinery/computer/security))
var/obj/machinery/computer/security/S = O.machine
if (S.current == src)
@@ -388,11 +388,11 @@ var/global/list/obj/machinery/camera/Cameras = list()
// now disconnect anyone using the camera
//Apparently, this will disconnect anyone even if the camera was re-activated.
//I guess that doesn't matter since they can't use it anyway?
- for(var/mob/living/silicon/ai/O in world)
+ for(var/mob/living/silicon/ai/O in player_list)
if (O.current == src)
O.cancel_camera()
O << "Your connection to the camera has been lost."
- for(var/mob/O in world)
+ for(var/mob/O in player_list)
if (istype(O.machine, /obj/machinery/computer/security))
var/obj/machinery/computer/security/S = O.machine
if (S.current == src)
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 96a0a6f201..448fa8e667 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -52,7 +52,7 @@
return
var/mob/selected = null
- for(var/mob/M in world)
+ for(var/mob/M in player_list)
//Dead people only thanks!
if ((M.stat != 2) || (!M.client))
continue
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index aa31b18874..229dcc8e1b 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -516,7 +516,7 @@
if(istype(commboard.loc,/turf) || istype(commboard.loc,/obj/item/weapon/storage))
return ..()
- for(var/mob/living/silicon/ai/shuttlecaller in world)
+ for(var/mob/living/silicon/ai/shuttlecaller in player_list)
if(!shuttlecaller.stat && shuttlecaller.client && istype(shuttlecaller.loc,/turf))
return ..()
@@ -541,7 +541,7 @@
if((istype(commboard.loc,/turf) || istype(commboard.loc,/obj/item/weapon/storage)) && commboard != src)
return ..()
- for(var/mob/living/silicon/ai/shuttlecaller in world)
+ for(var/mob/living/silicon/ai/shuttlecaller in player_list)
if(!shuttlecaller.stat && shuttlecaller.client && istype(shuttlecaller.loc,/turf))
return ..()
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index a4b0a49536..746d00fbd8 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -38,7 +38,7 @@
dat += "1. Cyborg Status
"
dat += "2. Emergency Full Destruct
"
if(screen == 1)
- for(var/mob/living/silicon/robot/R in world)
+ for(var/mob/living/silicon/robot/R in mob_list)
if(istype(user, /mob/living/silicon/ai))
if (R.connected_ai != user)
continue
@@ -224,7 +224,7 @@
sleep(10)
while(src.timeleft)
- for(var/mob/living/silicon/robot/R in world)
+ for(var/mob/living/silicon/robot/R in mob_list)
if(!R.scrambledcodes)
R.self_destruct()
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index d87660817f..c623dff9a4 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -19,7 +19,7 @@ Possible to do for anyone motivated enough:
last_request = world.time
user << "You request an AI's presence."
var/area/area = get_area(src)
- for(var/mob/living/silicon/ai/AI in world)
+ for(var/mob/living/silicon/ai/AI in player_list)
if(!AI.client) continue
AI << "Your presence is requested at \the [area]."
else
diff --git a/code/game/magic/cultist/ritual.dm b/code/game/magic/cultist/ritual.dm
index acb0f1849b..52da774616 100644
--- a/code/game/magic/cultist/ritual.dm
+++ b/code/game/magic/cultist/ritual.dm
@@ -98,9 +98,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
..()
var/image/blood = image(loc = src)
blood.override = 1
- for(var/mob/living/silicon/ai/AI in world)
- if(AI.client)
- AI.client.images += blood
+ for(var/mob/living/silicon/ai/AI in player_list)
+ AI.client.images += blood
examine()
set src in view(2)
diff --git a/code/game/master_controller.dm b/code/game/master_controller.dm
index 157cc9cdb6..775c18badc 100644
--- a/code/game/master_controller.dm
+++ b/code/game/master_controller.dm
@@ -224,4 +224,40 @@ datum/controller/game_controller
process()
- return 1
\ No newline at end of file
+ return 1
+
+
+
+/datum/failsafe // This thing pretty much just keeps poking the master controller
+ var/spinning = 1
+ var/current_iteration = 0
+
+/datum/failsafe/proc/spin()
+ if(!master_controller) // Well fuck. How did this happen?
+ sleep(50)
+ if(!master_controller)
+ master_controller = new /datum/controller/game_controller()
+ spawn(-1)
+ master_controller.setup()
+
+ else
+ while(spinning)
+ current_iteration = controller_iteration
+ sleep(600) // Wait 15 seconds
+ if(current_iteration == controller_iteration) // Mm. The master controller hasn't ticked yet.
+
+ for (var/mob/M in admin_list)
+ if (M.client)
+ M << " Warning. The Master Controller has not fired in the last 60 seconds. Restart recommended. Automatic restart in 60 seconds."
+
+ sleep(600)
+ if(current_iteration == controller_iteration)
+ for (var/mob/M in admin_list)
+ if (M.client)
+ M << " Warning. The Master Controller has not fired in the last 2 minutes. Automatic restart beginning."
+ master_controller.process()
+ sleep(150)
+ else
+ for (var/mob/M in admin_list)
+ if (M.client)
+ M << " The Master Controller has fired. Automatic restart aborted."
\ No newline at end of file
diff --git a/code/game/objects/devices/PDA/PDA.dm b/code/game/objects/devices/PDA/PDA.dm
index 8c3e4e339e..1b5791d875 100644
--- a/code/game/objects/devices/PDA/PDA.dm
+++ b/code/game/objects/devices/PDA/PDA.dm
@@ -766,7 +766,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
var/who = src.owner
if(prob(50))
who = P:owner
- for(var/mob/living/silicon/ai/ai in world)
+ for(var/mob/living/silicon/ai/ai in mob_list)
// Allows other AIs to intercept the message but the AI won't intercept their own message.
if(ai.aiPDA != P && ai.aiPDA != src)
ai.show_message("Intercepted message from [who]: [t]")
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index b7ae0eefbd..6053abf0e7 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -298,7 +298,7 @@
/obj/effect/manifest/proc/manifest()
var/dat = "Crew Manifest:
"
- for(var/mob/living/carbon/human/M in world)
+ for(var/mob/living/carbon/human/M in mob_list)
dat += text(" [] - []
", M.name, M.get_assignment())
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
P.info = dat
diff --git a/code/game/objects/items/robot_parts.dm b/code/game/objects/items/robot_parts.dm
index fef99602a1..c7cb9726d9 100644
--- a/code/game/objects/items/robot_parts.dm
+++ b/code/game/objects/items/robot_parts.dm
@@ -189,8 +189,8 @@
if (M.brainmob && M.brainmob.mind)
M.brainmob.mind.transfer_to(O)
else
- for(var/mob/dead/observer/G in world)
- if(G.corpse == M.brainmob && G.client && G.corpse.mind)
+ for(var/mob/dead/observer/G in player_list)
+ if(G.corpse == M.brainmob && G.corpse.mind)
G.corpse.mind.transfer_to(O)
del(G)
break
diff --git a/code/game/objects/items/robot_upgrades.dm b/code/game/objects/items/robot_upgrades.dm
index ced9855756..3972e95ccf 100644
--- a/code/game/objects/items/robot_upgrades.dm
+++ b/code/game/objects/items/robot_upgrades.dm
@@ -50,8 +50,8 @@
/obj/item/borg/upgrade/restart/action(var/mob/living/silicon/robot/R)
if(!R.key)
- for(var/mob/dead/observer/ghost in world)
- if(ghost.corpse == R && ghost.client)
+ for(var/mob/dead/observer/ghost in player_list)
+ if(ghost.corpse == R)
ghost.client.mob = ghost.corpse
if(R.health < 0)
diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm
index 7117b2ad44..f8566fb4ff 100644
--- a/code/game/objects/items/weapons/AI_modules.dm
+++ b/code/game/objects/items/weapons/AI_modules.dm
@@ -46,7 +46,7 @@ AI MODULES
src.transmitInstructions(comp.current, usr)
comp.current << "These are your laws now:"
comp.current.show_laws()
- for(var/mob/living/silicon/robot/R in world)
+ for(var/mob/living/silicon/robot/R in mob_list)
if(R.lawupdate && (R.connected_ai == comp.current))
R << "Your AI has set your 'laws waiting' flag."
usr << "Upload complete. The AI's laws have been modified."
diff --git a/code/game/status.dm b/code/game/status.dm
index 945df7e2d0..cf8026701e 100644
--- a/code/game/status.dm
+++ b/code/game/status.dm
@@ -33,7 +33,7 @@
features += "AI allowed"
var/n = 0
- for (var/mob/M in world)
+ for (var/mob/M in player_list)
if (M.client)
n++
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index ac7b5aa0f3..d19e87a9a5 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -163,7 +163,7 @@ var/list/mechtoys = list(
//I know this is an absolutly horrendous way to do this, very inefficient, but it's the only reliable way I can think of.
//Check for mobs
- for(var/mob/living/M in world)
+ for(var/mob/living/M in mob_list)
var/area/A = get_area(M)
if(!A || !A.type) continue
if(A.type == /area/supply/station)
diff --git a/code/game/topic.dm b/code/game/topic.dm
index a8a22ff122..49dbbc1bc7 100644
--- a/code/game/topic.dm
+++ b/code/game/topic.dm
@@ -9,7 +9,7 @@
else if(T == "players")
var/n = 0
- for(var/mob/M in world)
+ for(var/mob/M in player_list)
if(M.client)
n++
return n
@@ -27,7 +27,7 @@
var/n = 0
var/admins = 0
- for(var/mob/M in world)
+ for(var/mob/M in player_list)
if(M.client)
if(M.client.holder)
diff --git a/code/game/verbs/sound.dm b/code/game/verbs/sound.dm
index 650c844a00..ae330a908a 100644
--- a/code/game/verbs/sound.dm
+++ b/code/game/verbs/sound.dm
@@ -27,4 +27,4 @@
if(M.client)
M << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // stop the jamsz
- return
\ No newline at end of file
+ return
diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm
index c8f519c071..73b28283d6 100644
--- a/code/game/verbs/who.dm
+++ b/code/game/verbs/who.dm
@@ -1,9 +1,7 @@
proc/get_all_clients()
var/list/client/clients = list()
- for (var/mob/M in world)
- if (!M.client)
- continue
+ for (var/mob/M in player_list)
clients += M.client
@@ -12,12 +10,7 @@ proc/get_all_clients()
proc/get_all_admin_clients()
var/list/client/clients = list()
- for (var/mob/M in world)
- if (!M.client)
- continue
-
- if (!M.client.holder)
- continue
+ for (var/mob/M in admin_list)
clients += M.client
@@ -32,14 +25,11 @@ proc/get_all_admin_clients()
var/list/peeps = list()
- for (var/mob/M in world)
- if (!M.client)
- continue
-
- if (M.client.stealth && !usr.client.holder)
- peeps += "\t[M.client.fakekey]"
+ for (var/client/C in client_list)
+ if (C.stealth && !usr.client.holder)
+ peeps += "\t[C.fakekey]"
else
- peeps += "\t[M.client][M.client.stealth ? " (as [M.client.fakekey])" : ""]"
+ peeps += "\t[C.key][C.stealth ? " (as [C.fakekey])" : ""]"
peeps = sortList(peeps)
@@ -54,9 +44,9 @@ proc/get_all_admin_clients()
usr << "Current Admins:"
- for (var/mob/M in world)
- if(M && M.client && M.client.holder)
- if(usr.client.holder)
+ for (var/mob/M in admin_list)
+ if(M && M.client)
+ if(usr.client)
var/afk = 0
if( M.client.inactivity > AFK_THRESHOLD ) //When I made this, the AFK_THRESHOLD was 3000ds = 300s = 5m, see setup.dm for the new one.
afk = 1
diff --git a/code/game/vote.dm b/code/game/vote.dm
index 19721c604d..6369b425a6 100644
--- a/code/game/vote.dm
+++ b/code/game/vote.dm
@@ -33,7 +33,7 @@
/datum/vote/proc/getvotes()
var/list/L = list()
- for(var/mob/M in world)
+ for(var/mob/M in player_list)
if(M.client && M.client.inactivity < 1200) // clients inactive for 2 minutes don't count
L[M.client.vote] += 1
@@ -51,7 +51,7 @@
voting = 0
nextvotetime = world.timeofday + 10*config.vote_delay
- for(var/mob/M in world) // clear vote window from all clients
+ for(var/mob/M in player_list) // clear vote window from all clients
if(M.client)
M << browse(null, "window=vote")
M.client.showvote = 0
@@ -322,7 +322,7 @@
log_vote("Voting to [vote.mode ? "change mode" : "restart round"] started by [usr.name]/[usr.key]")
- for(var/mob/CM in world)
+ for(var/mob/CM in player_list)
if(CM.client)
if( config.vote_no_default || (config.vote_no_dead && CM.stat == 2) )
CM.client.vote = "none"
diff --git a/code/global.dm b/code/global.dm
index bb5c86e28c..60d4028847 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -11,10 +11,6 @@ var/global/list/processing_objects = list()
var/global/list/active_diseases = list()
//items that ask to be called every cycle
-// This list will map client ckeys to client objects
-// It will be automatically kept up to date by client/New and client/Del
-var/global/list/client_list = list()
-
var/global/defer_powernet_rebuild = 0 // true if net rebuild will be called manually after an event
var/global/list/global_map = null
diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm
index 1796b2f232..e4106a6435 100644
--- a/code/modules/admin/DB ban/functions.dm
+++ b/code/modules/admin/DB ban/functions.dm
@@ -53,9 +53,9 @@ obj/admins/proc/DB_ban_record(var/bantype, var/mob/banned_mob, var/duration = -1
a_computerid = src.owner:computer_id
a_ip = src.owner:address
- var/list/client/clients = get_all_clients()
+// var/list/client/clients = get_all_clients()
var/who
- for(var/client/C in clients)
+ for(var/client/C in client_list)
if(!who)
who = "[C]"
else
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 46ed65fbde..bd65dfc5df 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -6,8 +6,8 @@ var/global/BSACooldown = 0
/proc/message_admins(var/text, var/admin_ref = 0, var/admin_holder_ref = 0)
var/rendered = "ADMIN LOG: [text]"
log_adminwarn(rendered)
- for (var/mob/M in world)
- if (M && M.client && M.client.holder)
+ for (var/mob/M in admin_list)
+ if (M)
var/msg = rendered
if (admin_ref)
msg = dd_replaceText(msg, "%admin_ref%", "\ref[M]")
@@ -1630,14 +1630,14 @@ var/global/BSACooldown = 0
if("monkey")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","M")
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in mob_list)
spawn(0)
H.monkeyize()
ok = 1
if("corgi")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","M")
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in mob_list)
spawn(0)
H.corgize()
ok = 1
@@ -1688,7 +1688,7 @@ var/global/BSACooldown = 0
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","PW")
message_admins("\blue [key_name_admin(usr)] teleported all players to the prison station.", 1)
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in mob_list)
var/turf/loc = find_loc(H)
var/security = 0
if(loc.z > 1 || prisonwarped.Find(H))
@@ -1731,7 +1731,7 @@ var/global/BSACooldown = 0
return
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","TA([objective])")
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in player_list)
if(H.stat == 2 || !H.client || !H.mind) continue
if(is_special_character(H)) continue
//traitorize(H, objective, 0)
@@ -1744,7 +1744,7 @@ var/global/BSACooldown = 0
ticker.mode.greet_traitor(H)
//ticker.mode.forge_traitor_objectives(H.mind)
ticker.mode.finalize_traitor(H)
- for(var/mob/living/silicon/A in world)
+ for(var/mob/living/silicon/A in player_list)
ticker.mode.traitors += A.mind
A.mind.special_role = "traitor"
var/datum/objective/new_objective = new
@@ -1825,8 +1825,8 @@ var/global/BSACooldown = 0
feedback_add_details("admin_secrets_fun_used","FL")
while(!usr.stat)
//knock yourself out to stop the ghosts
- for(var/mob/M in world)
- if(M.client && M.stat != 2 && prob(25))
+ for(var/mob/M in player_list)
+ if(M.stat != 2 && prob(25))
var/area/AffectedArea = get_area(M)
if(AffectedArea.name != "Space" && AffectedArea.name != "Engine Walls" && AffectedArea.name != "Chemical Lab Test Chamber" && AffectedArea.name != "Escape Shuttle" && AffectedArea.name != "Arrival Area" && AffectedArea.name != "Arrival Shuttle" && AffectedArea.name != "start area" && AffectedArea.name != "Engine Combustion Chamber")
AffectedArea.power_light = 0
@@ -1848,8 +1848,8 @@ var/global/BSACooldown = 0
if(prob(25) && !W.anchored)
step_rand(W)
sleep(rand(100,1000))
- for(var/mob/M in world)
- if(M.client && M.stat != 2)
+ for(var/mob/M in player_list)
+ if(M.stat != 2)
M.show_message(text("\blue The chilling wind suddenly stops..."), 1)
/* if("shockwave")
ok = 1
@@ -1998,9 +1998,8 @@ var/global/BSACooldown = 0
if (src.rank in list("Badmin", "Game Admin", "Game Master"))
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","RET")
- for(var/mob/living/carbon/human/H in world)
- if(H.client)
- H << "\red You suddenly feel stupid."
+ for(var/mob/living/carbon/human/H in player_list)
+ H << "\red You suddenly feel stupid."
H.setBrainLoss(60)
message_admins("[key_name_admin(usr)] made everybody retarded")
else
@@ -2037,7 +2036,7 @@ var/global/BSACooldown = 0
if (src.rank in list("Badmin","Game Admin", "Game Master"))
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","DF")
- for(var/mob/living/carbon/human/B in world)
+ for(var/mob/living/carbon/human/B in mob_list)
B.face_icon_state = "facial_wise"
B.update_hair()
message_admins("[key_name_admin(usr)] activated dorf mode")
@@ -2102,7 +2101,7 @@ var/global/BSACooldown = 0
if("check_antagonist")
check_antagonists()
if("showailaws")
- for(var/mob/living/silicon/ai/ai in world)
+ for(var/mob/living/silicon/ai/ai in mob_list)
usr << "[key_name(ai, usr)]'s Laws:"
if (ai.laws == null)
usr << "[key_name(ai, usr)]'s Laws are null??"
@@ -2117,7 +2116,7 @@ var/global/BSACooldown = 0
if("manifest")
var/dat = "Showing Crew Manifest.
"
dat += "| Name | Position |
"
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in mob_list)
if(H.ckey)
dat += text("| [] | [] |
", H.name, H.get_assignment())
dat += "
"
@@ -2125,7 +2124,7 @@ var/global/BSACooldown = 0
if("DNA")
var/dat = "Showing DNA from blood.
"
dat += "| Name | DNA | Blood Type |
"
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in mob_list)
if(H.dna && H.ckey)
dat += "| [H] | [H.dna.unique_enzymes] | [H.b_type] |
"
dat += "
"
@@ -2133,7 +2132,7 @@ var/global/BSACooldown = 0
if("fingerprints")
var/dat = "Showing Fingerprints.
"
dat += "| Name | Fingerprints |
"
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in mob_list)
if(H.ckey)
if(H.dna && H.dna.uni_identity)
dat += "| [H] | [md5(H.dna.uni_identity)] |
"
@@ -2181,7 +2180,7 @@ var/global/BSACooldown = 0
///////////////////////////////////////////////////////////////////////////////////////////////Panels
-/obj/admins/proc/show_player_panel(var/mob/M in world)
+/obj/admins/proc/show_player_panel(var/mob/M in mob_list)
set category = "Admin"
set name = "Show Player Panel"
set desc="Edit player (respawn, ban, heal, etc)"
@@ -2559,19 +2558,17 @@ var/global/BSACooldown = 0
log_admin("Voting to [vote.mode?"change mode":"restart round"] forced by admin [key_name(usr)]")
- for(var/mob/CM in world)
- if(CM.client)
- if(config.vote_no_default || (config.vote_no_dead && CM.stat == 2))
- CM.client.vote = "none"
- else
- CM.client.vote = "default"
+ for(var/mob/CM in player_list)
+ if(config.vote_no_default || (config.vote_no_dead && CM.stat == 2))
+ CM.client.vote = "none"
+ else
+ CM.client.vote = "default"
- for(var/mob/CM in world)
- if(CM.client)
- if(config.vote_no_default || (config.vote_no_dead && CM.stat == 2))
- CM.client.vote = "none"
- else
- CM.client.vote = "default"
+ for(var/mob/CM in player_list)
+ if(config.vote_no_default || (config.vote_no_dead && CM.stat == 2))
+ CM.client.vote = "none"
+ else
+ CM.client.vote = "default"
feedback_add_details("admin_verb","SV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/obj/admins/proc/votekill()
@@ -2588,11 +2585,10 @@ var/global/BSACooldown = 0
vote.voting = 0
vote.nextvotetime = world.timeofday + 10*config.vote_delay
- for(var/mob/M in world)
+ for(var/mob/M in player_list)
// clear vote window from all clients
- if(M.client)
- M << browse(null, "window=vote")
- M.client.showvote = 0
+ M << browse(null, "window=vote")
+ M.client.showvote = 0
feedback_add_details("admin_verb","AV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/obj/admins/proc/voteres()
@@ -2841,7 +2837,7 @@ var/global/BSACooldown = 0
usr << "Prayer visibility turned off"
feedback_add_details("admin_verb","TP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/obj/admins/proc/unprison(var/mob/M in world)
+/obj/admins/proc/unprison(var/mob/M in mob_list)
set category = "Admin"
set name = "Unprison"
if (M.z == 2)
@@ -2954,7 +2950,7 @@ var/global/BSACooldown = 0
feedback_add_details("admin_verb","SA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/obj/admins/proc/show_traitor_panel(var/mob/M in world)
+/obj/admins/proc/show_traitor_panel(var/mob/M in mob_list)
set category = "Admin"
set desc = "Edit mobs's memory and role"
set name = "Show Traitor Panel"
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index cd86afdaca..3838a0c059 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -473,14 +473,13 @@
/client/proc/get_admin_state()
set name = "Get Admin State"
set category = "Debug"
- for(var/mob/M in world)
- if(M.client && M.client.holder)
- if(M.client.holder.state == 1)
- src << "[M.key] is playing - [M.client.holder.state]"
- else if(M.client.holder.state == 2)
- src << "[M.key] is observing - [M.client.holder.state]"
- else
- src << "[M.key] is undefined - [M.client.holder.state]"
+ for(var/mob/M in admin_list)
+ if(M.client.holder.state == 1)
+ src << "[M.key] is playing - [M.client.holder.state]"
+ else if(M.client.holder.state == 2)
+ src << "[M.key] is observing - [M.client.holder.state]"
+ else
+ src << "[M.key] is undefined - [M.client.holder.state]"
feedback_add_details("admin_verb","GAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -578,7 +577,7 @@
feedback_add_details("admin_verb","SM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
#define AUTOBATIME 10
-/client/proc/warn(var/mob/M in world)
+/client/proc/warn(var/mob/M in player_list)
/*set category = "Special Verbs"
set name = "Warn"
set desc = "Warn a player"*/ //Based on the information I gathered via stat logging this verb was not used. Use the show player panel alternative. --erro
@@ -631,7 +630,7 @@
message_admins("\blue [ckey] creating an admin explosion at [epicenter.loc].")
feedback_add_details("admin_verb","DB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/give_spell(mob/T as mob in world) // -- Urist
+/client/proc/give_spell(mob/T as mob in mob_list) // -- Urist
set category = "Fun"
set name = "Give Spell"
set desc = "Gives a spell to a mob."
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index 4f6b03097b..be703d9c1e 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -33,7 +33,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an", "monkey", "ali
var/list/mob/mobs = list()
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
mobs += M
var/list/replacement_value = list() //When a word match is found, the word matched will get replaced with an × (fancy multiplication symbol).
diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm
index 824aa930f0..b5adf4391f 100644
--- a/code/modules/admin/verbs/adminjump.dm
+++ b/code/modules/admin/verbs/adminjump.dm
@@ -30,7 +30,7 @@
alert("Admin jumping disabled")
return
-/client/proc/jumptomob(var/mob/M in world)
+/client/proc/jumptomob(var/mob/M in mob_list)
set category = "Admin"
set name = "Jump to Mob"
@@ -82,7 +82,7 @@
if(config.allow_admin_jump)
var/list/keys = list()
- for(var/mob/M in world)
+ for(var/mob/M in player_list)
keys += M.client
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in keys
if(!selection)
@@ -95,7 +95,7 @@
else
alert("Admin jumping disabled")
-/client/proc/Getmob(var/mob/M in world)
+/client/proc/Getmob(var/mob/M in mob_list)
set category = "Admin"
set name = "Get Mob"
set desc = "Mob to teleport"
@@ -121,7 +121,7 @@
if(config.allow_admin_jump)
var/list/keys = list()
- for(var/mob/M in world)
+ for(var/mob/M in player_list)
keys += M.client
var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in keys
if(!selection)
@@ -138,7 +138,7 @@
else
alert("Admin jumping disabled")
-/client/proc/sendmob(var/mob/M in world, var/area/A in world)
+/client/proc/sendmob(var/mob/M in mob_list, var/area/A in world)
set category = "Admin"
set name = "Send Mob"
if(!src.holder)
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 897257de40..09ca719093 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -1,5 +1,5 @@
//allows right clicking mobs to send an admin PM to their client, forwards the selected mob's client to cmd_admin_pm
-/client/proc/cmd_admin_pm_context(mob/M as mob in world)
+/client/proc/cmd_admin_pm_context(mob/M as mob in mob_list)
set category = null
set name = "Admin PM Mob"
if(!holder)
diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm
index f82d6ef045..5159a4c501 100644
--- a/code/modules/admin/verbs/adminsay.dm
+++ b/code/modules/admin/verbs/adminsay.dm
@@ -22,10 +22,9 @@
return
feedback_add_details("admin_verb","M") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
- for (var/mob/M in world)
- if (M.client && M.client.holder)
- if (src.holder.rank == "Admin Observer")
- M << "ADMIN: [key_name(usr, M)]: [msg]"
- else
- M << "ADMIN: [key_name(usr, M)] (JMP): [msg]"
+ for (var/mob/M in admin_list)
+ if (src.holder.rank == "Admin Observer")
+ M << "ADMIN: [key_name(usr, M)]: [msg]"
+ else
+ M << "ADMIN: [key_name(usr, M)] (JMP): [msg]"
diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm
index 9e4d5dc876..4d2c707c02 100644
--- a/code/modules/admin/verbs/deadsay.dm
+++ b/code/modules/admin/verbs/deadsay.dm
@@ -22,7 +22,7 @@
var/rendered = "DEAD: ADMIN([src.stealth ? pick("BADMIN", "hornigranny", "TLF", "scaredforshadows", "KSI", "Silnazi", "HerpEs", "BJ69", "SpoofedEdd", "Uhangay", "Wario90900", "Regarity", "MissPhareon", "LastFish", "unMportant", "Deurpyn", "Fatbeaver") : src.key]) says, \"[msg]\""
- for (var/mob/M in world)
+ for (var/mob/M in player_list)
if (istype(M, /mob/new_player))
continue
if (M.stat == 2 || (M.client && M.client.holder && M.client.deadchat)) //admins can toggle deadchat on and off. This is a proc in admin.dm and is only give to Administrators and above
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 112e2b71ba..3e12cb8561 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -157,7 +157,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
usr.show_message(t, 1)
feedback_add_details("admin_verb","ASL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_robotize(var/mob/M in world)
+/client/proc/cmd_admin_robotize(var/mob/M in mob_list)
set category = "Fun"
set name = "Make Robot"
@@ -172,13 +172,13 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
else
alert("Invalid mob")
-/client/proc/makepAI(var/turf/T in world)
+/client/proc/makepAI(var/turf/T in mob_list)
set category = "Fun"
set name = "Make pAI"
set desc = "Specify a location to spawn a pAI device, then specify a key to play that pAI"
var/list/available = list()
- for(var/mob/C in world)
+ for(var/mob/C in mob_list)
if(C.key)
available.Add(C)
var/mob/choice = input("Choose a player to play the pAI", "Spawn pAI") in available
@@ -199,7 +199,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
paiController.pai_candidates.Remove(candidate)
feedback_add_details("admin_verb","MPAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_alienize(var/mob/M in world)
+/client/proc/cmd_admin_alienize(var/mob/M in mob_list)
set category = "Fun"
set name = "Make Alien"
@@ -216,7 +216,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
else
alert("Invalid mob")
-/client/proc/cmd_admin_metroidize(var/mob/M in world)
+/client/proc/cmd_admin_metroidize(var/mob/M in mob_list)
set category = "Fun"
set name = "Make Metroid"
@@ -356,7 +356,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
message_admins("[key_name_admin(src)] has turned aliens [aliens_allowed ? "on" : "off"].", 0)
feedback_add_details("admin_verb","TAL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_grantfullaccess(var/mob/M in world)
+/client/proc/cmd_admin_grantfullaccess(var/mob/M in mob_list)
set category = "Admin"
set name = "Grant Full Access"
@@ -387,7 +387,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
log_admin("[key_name(src)] has granted [M.key] full access.")
message_admins("\blue [key_name_admin(usr)] has granted [M.key] full access.", 1)
-/client/proc/cmd_assume_direct_control(var/mob/M in world)
+/client/proc/cmd_assume_direct_control(var/mob/M in mob_list)
set category = "Admin"
set name = "Assume direct control"
set desc = "Direct intervention"
@@ -421,7 +421,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
feedback_add_details("admin_verb","SRM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_dress(var/mob/living/carbon/human/M in world)
+/client/proc/cmd_admin_dress(var/mob/living/carbon/human/M in mob_list)
set category = "Fun"
set name = "Select equipment"
if(!ishuman(M))
diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm
index 9703dfa39a..c1d9e4e0a3 100644
--- a/code/modules/admin/verbs/diagnostics.dm
+++ b/code/modules/admin/verbs/diagnostics.dm
@@ -7,7 +7,7 @@
usr << alert("Master_controller not found.")
var/mobs = 0
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
mobs++
var/output = {"GENERAL SYSTEMS REPORT
diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm
index 41370d4edd..3dc89498ad 100644
--- a/code/modules/admin/verbs/massmodvar.dm
+++ b/code/modules/admin/verbs/massmodvar.dm
@@ -138,7 +138,7 @@
O.vars[variable] = initial(O.vars[variable])
if(method)
if(istype(O, /mob))
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if ( istype(M , O.type) )
M.vars[variable] = O.vars[variable]
@@ -154,7 +154,7 @@
else
if(istype(O, /mob))
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if (M.type == O.type)
M.vars[variable] = O.vars[variable]
@@ -178,7 +178,7 @@
if(method)
if(istype(O, /mob))
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if ( istype(M , O.type) )
M.vars[variable] = O.vars[variable]
@@ -193,7 +193,7 @@
A.vars[variable] = O.vars[variable]
else
if(istype(O, /mob))
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if (M.type == O.type)
M.vars[variable] = O.vars[variable]
@@ -219,7 +219,7 @@
if(method)
if(istype(O, /mob))
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if ( istype(M , O.type) )
if(variable=="luminosity")
M.sd_SetLuminosity(new_value)
@@ -244,7 +244,7 @@
else
if(istype(O, /mob))
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if (M.type == O.type)
if(variable=="luminosity")
M.sd_SetLuminosity(new_value)
@@ -274,7 +274,7 @@
O.vars[variable] = new_value
if(method)
if(istype(O, /mob))
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if ( istype(M , O.type) )
M.vars[variable] = O.vars[variable]
@@ -289,7 +289,7 @@
A.vars[variable] = O.vars[variable]
else
if(istype(O, /mob))
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if (M.type == O.type)
M.vars[variable] = O.vars[variable]
@@ -310,7 +310,7 @@
if(method)
if(istype(O, /mob))
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if ( istype(M , O.type) )
M.vars[variable] = O.vars[variable]
@@ -325,7 +325,7 @@
A.vars[variable] = O.vars[variable]
else
if(istype(O, /mob))
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if (M.type == O.type)
M.vars[variable] = O.vars[variable]
@@ -345,7 +345,7 @@
O.vars[variable] = new_value
if(method)
if(istype(O, /mob))
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if ( istype(M , O.type) )
M.vars[variable] = O.vars[variable]
@@ -361,7 +361,7 @@
else
if(istype(O, /mob))
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if (M.type == O.type)
M.vars[variable] = O.vars[variable]
diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm
index e9d20d662e..837f8ef918 100644
--- a/code/modules/admin/verbs/modifyvariables.dm
+++ b/code/modules/admin/verbs/modifyvariables.dm
@@ -459,6 +459,16 @@ var/list/forbidden_varedit_object_types = list(
var/var_new = input("Enter new number:","Num",O.vars[variable]) as null|num
if(var_new == null) return
O.sd_SetLuminosity(var_new)
+ else if(variable=="stat")
+ var/var_new = input("Enter new number:","Num",O.vars[variable]) as null|num
+ if(var_new == null) return
+ if((O.vars[variable] == 2) && (var_new < 2))//Bringing the dead back to life
+ dead_mob_list -= O
+ living_mob_list += O
+ if((O.vars[variable] < 2) && (var_new == 2))//Kill he
+ living_mob_list -= O
+ dead_mob_list += O
+ O.vars[variable] = var_new
else
var/var_new = input("Enter new number:","Num",O.vars[variable]) as null|num
if(var_new==null) return
diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm
index 256d0c1145..f10e9736c1 100644
--- a/code/modules/admin/verbs/onlyone.dm
+++ b/code/modules/admin/verbs/onlyone.dm
@@ -9,7 +9,7 @@
return
feedback_add_details("admin_verb","TCBOO") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in player_list)
if(H.stat == 2 || !(H.client)) continue
if(is_special_character(H)) continue
diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm
index 7586e4af5a..0550f3c66a 100644
--- a/code/modules/admin/verbs/playsound.dm
+++ b/code/modules/admin/verbs/playsound.dm
@@ -14,19 +14,17 @@
if(src.holder.rank == "Game Master" || src.holder.rank == "Game Admin" || src.holder.rank == "Badmin")
log_admin("[key_name(src)] played sound [S]")
message_admins("[key_name_admin(src)] played sound [S]", 1)
- for(var/mob/M in world)
- if(M.client)
- if(M.client.midis)
- M << uploaded_sound
+ for(var/mob/M in player_list)
+ if(M.client.midis)
+ M << uploaded_sound
else
if(usr.client.canplaysound)
usr.client.canplaysound = 0
log_admin("[key_name(src)] played sound [S]")
message_admins("[key_name_admin(src)] played sound [S]", 1)
- for(var/mob/M in world)
- if(M.client)
- if(M.client.midis)
- M << uploaded_sound
+ for(var/mob/M in player_list)
+ if(M.client.midis)
+ M << uploaded_sound
else
usr << "You already used up your jukebox monies this round!"
del(uploaded_sound)
diff --git a/code/modules/admin/verbs/possess.dm b/code/modules/admin/verbs/possess.dm
index ea2cce7898..8406d1c047 100644
--- a/code/modules/admin/verbs/possess.dm
+++ b/code/modules/admin/verbs/possess.dm
@@ -44,7 +44,7 @@
usr.control_object = null
feedback_add_details("admin_verb","RO") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/proc/givetestverbs(mob/M as mob in world)
+/proc/givetestverbs(mob/M as mob in mob_list)
set desc = "Give this guy possess/release verbs"
set category = "Debug"
set name = "Give Possessing Verbs"
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index 92103a8e0f..925265b2e4 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -16,8 +16,8 @@
var/icon/cross = icon('icons/obj/storage.dmi',"bible")
- for (var/mob/M in world)
- if (M.client && M.client.holder && M.client.seeprayers)
+ for (var/mob/M in admin_list)
+ if (M.client.seeprayers)
M << "\blue \icon[cross] PRAY: [key_name(src, M)] (?) (PP) (VV) (SM) (JMP) (CA) (SC): [msg]"
usr << "Your prayers have been received by the gods."
@@ -31,9 +31,8 @@
// log_admin("[key_name(Sender)] sent a message to Centcomm! The message was [msg]") // Handled somewhere else
- for (var/mob/M in world)
- if (M.client && M.client.holder)
- M << "\blue CENTCOMM:[key_name(Sender, M)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]"
+ for (var/mob/M in admin_list)
+ M << "\blue CENTCOMM:[key_name(Sender, M)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]"
//
/proc/Syndicate_announce(var/text , var/mob/Sender)
@@ -41,7 +40,6 @@
// log_admin("[key_name(Sender)] sent a message to the Syndicate! The message was [msg]") // Handled somewhere else
- for (var/mob/M in world)
- if (M.client && M.client.holder)
- M << "\blue SYNDICATE:[key_name(Sender, M)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]"
+ for (var/mob/M in admin_list)
+ M << "\blue SYNDICATE:[key_name(Sender, M)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]"
//
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 0822256a69..e8f67021b8 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -1,4 +1,4 @@
-/client/proc/cmd_admin_drop_everything(mob/M as mob in world)
+/client/proc/cmd_admin_drop_everything(mob/M as mob in mob_list)
set category = null
set name = "Drop Everything"
if(!holder)
@@ -16,7 +16,7 @@
message_admins("[key_name_admin(usr)] made [key_name_admin(M)] drop everything!", 1)
feedback_add_details("admin_verb","DEVR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_prison(mob/M as mob in world)
+/client/proc/cmd_admin_prison(mob/M as mob in mob_list)
set category = "Admin"
set name = "Prison"
if(!holder)
@@ -43,7 +43,7 @@
message_admins("\blue [key_name_admin(usr)] sent [key_name_admin(M)] to the prison station.", 1)
feedback_add_details("admin_verb","PRISON") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_subtle_message(mob/M as mob in world)
+/client/proc/cmd_admin_subtle_message(mob/M as mob in mob_list)
set category = "Special Verbs"
set name = "Subtle Message"
@@ -106,7 +106,7 @@
message_admins("\blue \bold DirectNarrate: [key_name(usr)] to ([M.name]/[M.key]): [msg]
", 1)
feedback_add_details("admin_verb","DIRN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_godmode(mob/M as mob in world)
+/client/proc/cmd_admin_godmode(mob/M as mob in mob_list)
set category = "Special Verbs"
set name = "Godmode"
if(!holder)
@@ -249,10 +249,9 @@ proc/cmd_admin_mute(mob/M as mob, mute_type, automute = 0)
if(G)//If G exists through a passed argument.
candidates_list += G.client
else//Else we need to find them.
- for(G in world)
- if(G.client)
- if(!G.client.holder && ((G.client.inactivity/10)/60) <= 5)
- candidates_list += G.client//We want their client, not their ghost.
+ for(G in player_list)
+ if(!G.client.holder && ((G.client.inactivity/10)/60) <= 5)
+ candidates_list += G.client//We want their client, not their ghost.
if(candidates_list.len)//If there are people to spawn.
if(!G)//If G was not passed through an argument.
var/client/G_client = input("Pick the client you want to respawn as a xeno.", "Active Players") as null|anything in candidates_list//It will auto-pick a person when there is only one candidate.
@@ -290,7 +289,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
return
var/mob/dead/observer/G_found
- for(var/mob/dead/observer/G in world)
+ for(var/mob/dead/observer/G in player_list)
if(G.client&&ckey(G.key)==ckey(input))
G_found = G
break
@@ -508,14 +507,14 @@ Traitors and the like can also be revived with the previous role mostly intact.
var/input = input(usr, "Please enter anything you want the AI to do. Anything. Serious.", "What?", "") as text|null
if(!input)
return
- for(var/mob/living/silicon/ai/M in world)
+ for(var/mob/living/silicon/ai/M in mob_list)
if (M.stat == 2)
usr << "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."
else
M.add_ion_law(input)
- for(var/mob/living/silicon/ai/O in world)
+ for(var/mob/living/silicon/ai/O in mob_list)
O << "\red " + input
log_admin("Admin [key_name(usr)] has added a new AI law - [input]")
@@ -527,7 +526,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
world << sound('ionstorm.ogg')
feedback_add_details("admin_verb","IONC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
-/client/proc/cmd_admin_rejuvenate(mob/living/M as mob in world)
+/client/proc/cmd_admin_rejuvenate(mob/living/M as mob in mob_list)
set category = "Special Verbs"
set name = "Rejuvenate"
if(!holder)
@@ -662,7 +661,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
else
return
-/client/proc/cmd_admin_gib(mob/M as mob in world)
+/client/proc/cmd_admin_gib(mob/M as mob in mob_list)
set category = "Special Verbs"
set name = "Gib"
@@ -761,7 +760,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
// I will both remove their SVN access and permanently ban them from my servers.
return
-/client/proc/cmd_admin_check_contents(mob/living/M as mob in world)
+/client/proc/cmd_admin_check_contents(mob/living/M as mob in mob_list)
set category = "Special Verbs"
set name = "Check Contents"
@@ -868,7 +867,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
return
-/client/proc/cmd_admin_attack_log(mob/M as mob in world)
+/client/proc/cmd_admin_attack_log(mob/M as mob in mob_list)
set category = "Special Verbs"
set name = "Attack Log"
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index 5647cd1c55..a5199e835f 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -54,11 +54,10 @@ var/global/sent_strike_team = 0
var/mob/dead/observer/G//Basic variable to search for later.
var/candidates_list[] = list()//candidates for being a commando out of all the active ghosts in world.
var/commandos_list[] = list()//actual commando ghosts as picked by the user.
- for(G in world)
- if(G.client)
- if(!G.client.holder && ((G.client.inactivity/10)/60) <= 5) //Whoever called/has the proc won't be added to the list.
-// if(((G.client.inactivity/10)/60) <= 5) //Removing it allows even the caller to jump in. Good for testing.
- candidates_list += G.client//Add their client to list.
+ for(G in admin_list)
+ if(!G.client.holder && ((G.client.inactivity/10)/60) <= 5) //Whoever called/has the proc won't be added to the list.
+// if(((G.client.inactivity/10)/60) <= 5) //Removing it allows even the caller to jump in. Good for testing.
+ candidates_list += G.client//Add their client to list.
for(var/i=commandos_possible,(i>0&&candidates_list.len),i--)//Decrease with every commando selected.
var/client/G_client = input("Pick characters to spawn as the commandos. This will go on until there either no more ghosts to pick from or the slots are full.", "Active Players") as null|anything in candidates_list//It will auto-pick a person when there is only one candidate.
if(G_client)//They may have logged out when the admin was choosing people. Or were not chosen. Would run time error otherwise.
diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm
index ed60770de6..487d31ec6c 100644
--- a/code/modules/admin/verbs/striketeam_syndicate.dm
+++ b/code/modules/admin/verbs/striketeam_syndicate.dm
@@ -54,11 +54,10 @@ var/global/sent_syndicate_strike_team = 0
var/mob/dead/observer/G//Basic variable to search for later.
var/candidates_list[] = list()//candidates for being a commando out of all the active ghosts in world.
var/syndicate_commandos_list[] = list()//actual commando ghosts as picked by the user.
- for(G in world)
- if(G.client)
- if(!G.client.holder && ((G.client.inactivity/10)/60) <= 5) //Whoever called/has the proc won't be added to the list.
-// if(((G.client.inactivity/10)/60) <= 5) //Removing it allows even the caller to jump in. Good for testing.
- candidates_list += G.client//Add their client to list.
+ for(G in admin_list)
+ if(!G.client.holder && ((G.client.inactivity/10)/60) <= 5) //Whoever called/has the proc won't be added to the list.
+// if(((G.client.inactivity/10)/60) <= 5) //Removing it allows even the caller to jump in. Good for testing.
+ candidates_list += G.client//Add their client to list.
for(var/i=syndicate_commandos_possible,(i>0&&candidates_list.len),i--)//Decrease with every commando selected.
var/client/G_client = input("Pick characters to spawn as the commandos. This will go on until there either no more ghosts to pick from or the slots are full.", "Active Players") as null|anything in candidates_list//It will auto-pick a person when there is only one candidate.
if(G_client)//They may have logged out when the admin was choosing people. Or were not chosen. Would run time error otherwise.
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index 4124a70614..68f830749f 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -90,12 +90,11 @@
if( connection != "seeker" )
del(src)
return
-
+ client_list |= src
if ( (world.address == address || !address) && !host )
host = key
world.update_status()
- client_list[ckey] = src
..() //calls mob.Login()
@@ -104,6 +103,7 @@
holder = new /obj/admins(src)
holder.rank = admins[ckey]
update_admins(admins[ckey])
+ make_admin_list()
admin_memo_show()
@@ -116,4 +116,5 @@
spawn(0)
if(holder)
del(holder)
+ client_list -= src
return ..()
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 85471756c6..a99a3b5c6e 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -351,7 +351,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite
var/mob/living/carbon/human/clone = null
var/clone_weapon = null
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in living_mob_list)
if(H.stat || H.lying) continue
// possible_clones += H
clone = H
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index a02c45b7bd..b01b92e21c 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -270,9 +270,9 @@
..()
if(istype(AM,/mob/living/carbon/human))
var/mob/living/carbon/human/H = AM
- if(istype(H.l_hand,/obj/item/weapon/pickaxe))
+ if((istype(H.l_hand,/obj/item/weapon/pickaxe)) && (!H.hand))
src.attackby(H.l_hand,H)
- else if(istype(H.r_hand,/obj/item/weapon/pickaxe))
+ else if((istype(H.r_hand,/obj/item/weapon/pickaxe)) && H.hand)
src.attackby(H.r_hand,H)
return
else if(istype(AM,/mob/living/silicon/robot))
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index f7b232fa2e..4e13f81579 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -6,6 +6,8 @@
verbs += /mob/dead/observer/proc/dead_tele
stat = DEAD
+ dead_mob_list += src
+ add_to_mob_list(src)
if(body)
var/turf/T = get_turf(body) //Where is the body located?
if(!T) T = pick(latejoin) //Safety in case we cannot find the body's position
@@ -38,7 +40,7 @@ Works together with spawning an observer, noted above.
ghost.key = key
else if(transfer_mind) //Body getting destroyed but the person is not present inside.
- for(var/mob/dead/observer/O in world)
+ for(var/mob/dead/observer/O in dead_mob_list)
if(O.corpse == src && O.key) //If they have the same corpse and are keyed.
if(mind)
O.mind = mind //Transfer their mind if they have one.
@@ -135,6 +137,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(corpse.ajourn)
corpse.ajourn=0
client.mob = corpse
+ remove_from_mob_list(src)
+ dead_mob_list -= src
del(src)
/mob/dead/observer/proc/dead_tele()
@@ -226,5 +230,4 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/dead/observer/add_memory()
set hidden = 1
- src << "\red You are dead! You have no mind to store memory!"
-
+ src << "\red You are dead! You have no mind to store memory!"
\ No newline at end of file
diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm
index c4278b71fa..4cbf91a010 100644
--- a/code/modules/mob/death.dm
+++ b/code/modules/mob/death.dm
@@ -16,6 +16,7 @@
// flick("gibbed-m", animation)
gibs(loc, viruses, dna)
+ dead_mob_list -= src
spawn(15)
if(animation) del(animation)
if(src) del(src)
@@ -40,6 +41,7 @@
// flick("dust-m", animation)
new /obj/effect/decal/cleanable/ash(loc)
+ dead_mob_list -= src
spawn(15)
if(animation) del(animation)
if(src) del(src)
@@ -49,16 +51,16 @@
timeofdeath = world.time
var/cancel = 0
- for(var/mob/M in world)
- if(M.client && (M.stat != DEAD))
+ for(var/mob/M in player_list)
+ if(M.stat != DEAD)
cancel = 1
break
if(!cancel)
world << "Everyone is dead! Resetting in 30 seconds!"
spawn(300)
- for(var/mob/M in world)
- if(M.client && (M.stat != DEAD))
+ for(var/mob/M in player_list)
+ if(M.stat != DEAD)
world << "Aborting world restart!"
return
@@ -73,4 +75,6 @@
world.Reboot()
return
+ living_mob_list -= src
+ dead_mob_list += src
return ..(gibbed)
diff --git a/code/modules/mob/living/blob/blob.dm b/code/modules/mob/living/blob/blob.dm
index e32e2cdce2..1d81426c8c 100644
--- a/code/modules/mob/living/blob/blob.dm
+++ b/code/modules/mob/living/blob/blob.dm
@@ -215,14 +215,13 @@
var/mob/dead/observer/G_found
if(!input)
var/list/ghosts = list()
- for(var/mob/dead/observer/G in world)
- if(G.client)
- ghosts += G
+ for(var/mob/dead/observer/G in player_list)
+ ghosts += G
if(ghosts.len)
G_found = pick(ghosts)
else
- for(var/mob/dead/observer/G in world)
+ for(var/mob/dead/observer/G in player_list)
if(G.client&&ckey(G.key)==ckey(input))
G_found = G
break
diff --git a/code/modules/mob/living/carbon/alien/death.dm b/code/modules/mob/living/carbon/alien/death.dm
index bd8ecf3a80..0f9607f16b 100644
--- a/code/modules/mob/living/carbon/alien/death.dm
+++ b/code/modules/mob/living/carbon/alien/death.dm
@@ -13,6 +13,7 @@
flick("gibbed-a", animation)
xgibs(loc, viruses)
+ dead_mob_list -= src
spawn(15)
if(animation) del(animation)
@@ -33,6 +34,7 @@
flick("dust-a", animation)
new /obj/effect/decal/remains/xeno(loc)
+ dead_mob_list -= src
spawn(15)
if(animation) del(animation)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm
index 966bc68815..db58a3483a 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm
@@ -7,6 +7,7 @@
src.real_name = src.name
verbs.Add(/mob/living/carbon/alien/humanoid/proc/resin,/mob/living/carbon/alien/humanoid/proc/corrosive_acid)
verbs -= /mob/living/carbon/alien/humanoid/verb/ActivateHuggers //<-- pointless
+ living_mob_list += src
//Drones use the same base as generic humanoids.
//Drone verbs
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
index 5274f5c580..dd85201692 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
@@ -5,6 +5,7 @@
if(name == "alien hunter")
name = text("alien hunter ([rand(1, 1000)])")
real_name = name
+ living_mob_list += src
/mob/living/carbon/alien/humanoid/hunter
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
index cc7e270e3a..0cf3a322ad 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
@@ -6,6 +6,7 @@
name = text("alien sentinel ([rand(1, 1000)])")
real_name = name
verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/neurotoxin)
+ living_mob_list += src
/mob/living/carbon/alien/humanoid/sentinel
diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
index fd04097130..0677e9c7e9 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
@@ -4,7 +4,7 @@
R.my_atom = src
//there should only be one queen
- for(var/mob/living/carbon/alien/humanoid/queen/Q in world)
+ for(var/mob/living/carbon/alien/humanoid/queen/Q in living_mob_list)
if(Q == src) continue
if(Q.stat == DEAD) continue
if(Q.client)
@@ -14,7 +14,7 @@
real_name = src.name
verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/neurotoxin,/mob/living/carbon/alien/humanoid/proc/resin)
verbs -= /mob/living/carbon/alien/verb/ventcrawl
-
+ living_mob_list += src
/mob/living/carbon/alien/humanoid/queen
diff --git a/code/modules/mob/living/carbon/alien/larva/death.dm b/code/modules/mob/living/carbon/alien/larva/death.dm
index 9965292233..4334a37577 100644
--- a/code/modules/mob/living/carbon/alien/larva/death.dm
+++ b/code/modules/mob/living/carbon/alien/larva/death.dm
@@ -10,5 +10,6 @@
tod = worldtime2text() //weasellos time of death patch
if(mind) mind.store_memory("Time of death: [tod]", 0)
+ living_mob_list -= src
return ..(gibbed)
diff --git a/code/modules/mob/living/carbon/alien/say.dm b/code/modules/mob/living/carbon/alien/say.dm
index 05bb2e708e..6c6ee04950 100644
--- a/code/modules/mob/living/carbon/alien/say.dm
+++ b/code/modules/mob/living/carbon/alien/say.dm
@@ -38,7 +38,7 @@
var/message_a = say_quote(message)
var/rendered = "Hivemind, [name] [message_a]"
- for (var/mob/living/S in world)
+ for (var/mob/living/S in player_list)
if(!S.stat)
if(S.alien_talk_understand)
if(S.alien_talk_understand == alien_talk_understand)
@@ -72,7 +72,7 @@
rendered = "Hivemind, [name] [message_a]"
- for (var/mob/M in world)
+ for (var/mob/M in player_list)
if (istype(M, /mob/new_player))
continue
if (M.stat > 1)
diff --git a/code/modules/mob/living/carbon/brain/emote.dm b/code/modules/mob/living/carbon/brain/emote.dm
index 2667422352..80b4ed69be 100644
--- a/code/modules/mob/living/carbon/brain/emote.dm
+++ b/code/modules/mob/living/carbon/brain/emote.dm
@@ -47,11 +47,9 @@
if (message)
log_emote("[name]/[key] : [message]")
- for(var/mob/M in world)
+ for(var/mob/M in dead_mob_list)
if (!M.client)
continue //skip monkeys and leavers
- if (istype(M, /mob/new_player))
- continue
if(M.stat == 2 && M.client.ghost_sight && !(M in viewers(src,null)))
M.show_message(message)
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 194f609a78..14ed799ac6 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -474,11 +474,9 @@
//Hearing gasp and such every five seconds is not good emotes were not global for a reason.
// Maybe some people are okay with that.
- for(var/mob/M in world)
+ for(var/mob/M in dead_mob_list)
if (!M.client)
continue //skip monkeys and leavers
- if (istype(M, /mob/new_player))
- continue
if(M.stat == 2 && M.client.ghost_sight && !(M in viewers(src,null)))
M.show_message(message)
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 63e643751a..fac388c4f9 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -191,11 +191,10 @@
if(!client)
var/foundghost = 0
- for(var/mob/dead/observer/G in world)
- if(G.client)
- if(G.corpse == src)
- foundghost++
- break
+ for(var/mob/dead/observer/G in player_list)
+ if(G.corpse == src)
+ foundghost++
+ break
if(!foundghost)
msg += " and [t_his] soul has departed"
msg += "...\n"
diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm
index 35608a15a0..5a9c56602a 100644
--- a/code/modules/mob/living/carbon/human/whisper.dm
+++ b/code/modules/mob/living/carbon/human/whisper.dm
@@ -161,8 +161,8 @@
else
rendered = "[real_name][alt_name] whispers, \"[message]\""
- for (var/mob/M in world)
- if (istype(M, /mob/new_player))
+ for (var/mob/M in dead_mob_list)
+ if (!(M.client))
continue
if (M.stat > 1 && !(M in heard_a))
M.show_message(rendered, 2)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 9c751551d7..a1246986b5 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -263,6 +263,9 @@
heal_overall_damage(1000, 1000)
buckled = initial(src.buckled)
handcuffed = initial(src.handcuffed)
+ if(stat == 2)
+ dead_mob_list -= src
+ living_mob_list += src
stat = CONSCIOUS
regenerate_icons()
..()
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index ab225e82fa..25b7f0f205 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -245,7 +245,7 @@ var/list/department_radio_keys = list(
if("changeling")
if(src.changeling)
- for(var/mob/aChangeling in world)
+ for(var/mob/aChangeling in mob_list)
if(aChangeling.changeling || istype(aChangeling, /mob/dead/observer))
aChangeling << "[gender=="male"?"Mr.":"Mrs."] [changeling.changelingID]: [message]"
return
@@ -263,7 +263,7 @@ var/list/department_radio_keys = list(
var/list/listening
listening = get_mobs_in_view(message_range, src)
- for(var/mob/M in world)
+ for(var/mob/M in player_list)
if (!M.client)
continue //skip monkeys and leavers
if (istype(M, /mob/new_player))
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 15c6ba555d..9474c1b869 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -4,7 +4,7 @@
var/pickedName = null
while(!pickedName)
pickedName = pick(ai_names)
- for (var/mob/living/silicon/ai/A in world)
+ for (var/mob/living/silicon/ai/A in mob_list)
if (A.real_name == pickedName && possibleNames.len > 1) //fixing the theoretically possible infinite loop
possibleNames -= pickedName
pickedName = null
@@ -59,7 +59,7 @@
spawn(0)
ainame(src)
-
+ living_mob_list += src
return
diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm
index de8ac18962..ea25b9fcc5 100644
--- a/code/modules/mob/living/silicon/ai/death.dm
+++ b/code/modules/mob/living/silicon/ai/death.dm
@@ -25,7 +25,7 @@
break
callshuttle++
- for(var/mob/living/silicon/ai/shuttlecaller in world)
+ for(var/mob/living/silicon/ai/shuttlecaller in player_list)
if(shuttlecaller.z == 2)
continue
if(!shuttlecaller.stat && shuttlecaller.client && istype(shuttlecaller.loc,/turf))
diff --git a/code/modules/mob/living/silicon/death.dm b/code/modules/mob/living/silicon/death.dm
index a139e1cb8c..8e1f035ce6 100644
--- a/code/modules/mob/living/silicon/death.dm
+++ b/code/modules/mob/living/silicon/death.dm
@@ -14,6 +14,7 @@
// flick("gibbed-r", animation)
robogibs(loc, viruses)
+ dead_mob_list -= src
spawn(15)
if(animation) del(animation)
if(src) del(src)
@@ -34,6 +35,7 @@
// flick("dust-r", animation)
new /obj/effect/decal/remains/robot(loc)
+ dead_mob_list -= src
spawn(15)
if(animation) del(animation)
if(src) del(src)
diff --git a/code/modules/mob/living/silicon/pai/death.dm b/code/modules/mob/living/silicon/pai/death.dm
index c43eaa6ecd..8491008b0b 100644
--- a/code/modules/mob/living/silicon/pai/death.dm
+++ b/code/modules/mob/living/silicon/pai/death.dm
@@ -13,5 +13,6 @@
//New pAI's get a brand new mind to prevent meta stuff from their previous life. This new mind causes problems down the line if it's not deleted here.
//Read as: I have no idea what I'm doing but asking for help got me nowhere so this is what you get. - Nodrak
if(mind) del(mind)
+ living_mob_list -= src
ghostize(0)
del(src)
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm
index e50f2d6280..1910bd69ab 100644
--- a/code/modules/mob/living/silicon/pai/recruit.dm
+++ b/code/modules/mob/living/silicon/pai/recruit.dm
@@ -151,7 +151,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates
for(var/datum/paiCandidate/c in paiController.pai_candidates)
if(c.ready)
var/found = 0
- for(var/mob/dead/observer/o in world)
+ for(var/mob/dead/observer/o in player_list)
if(o.key == c.key)
found = 1
if(found)
@@ -192,7 +192,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates
user << browse(dat, "window=findPai")
proc/requestRecruits()
- for(var/mob/dead/observer/O in world)
+ for(var/mob/dead/observer/O in player_list)
if(jobban_isbanned(O, "pAI"))
continue
if(asked.Find(O.key))
diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm
index 4845d77efa..a0ea74386e 100644
--- a/code/modules/mob/living/silicon/pai/software.dm
+++ b/code/modules/mob/living/silicon/pai/software.dm
@@ -609,7 +609,7 @@
// Door Jack - supporting proc
/mob/living/silicon/pai/proc/hackloop()
var/turf/T = get_turf_or_move(src.loc)
- for(var/mob/living/silicon/ai/AI in world)
+ for(var/mob/living/silicon/ai/AI in player_list)
if(T.loc)
AI << "Network Alert: Brute-force encryption crack in progress in [T.loc]."
else
diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm
index 4435af4ad5..0ecc28c073 100644
--- a/code/modules/mob/living/silicon/robot/death.dm
+++ b/code/modules/mob/living/silicon/robot/death.dm
@@ -14,6 +14,7 @@
flick("gibbed-r", animation)
robogibs(loc, viruses)
+ living_mob_list -= src
spawn(15)
if(animation) del(animation)
if(src) del(src)
@@ -35,6 +36,7 @@
new /obj/effect/decal/remains/robot(loc)
if(mmi) del(mmi) //Delete the MMI first so that it won't go popping out.
+ dead_mob_list -= src
spawn(15)
if(animation) del(animation)
if(src) del(src)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index d4447a6313..b9551cd290 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -65,12 +65,13 @@
//Improved /N
/mob/living/silicon/robot/Del()
if(mmi)//Safety for when a cyborg gets dust()ed. Or there is no MMI inside.
+ living_mob_list += mmi
var/turf/T = get_turf(loc)//To hopefully prevent run time errors.
if(T)
mmi.loc = T
if(!key) //if we don't have an associated key, try to find the ghost of this body
- for(var/mob/dead/observer/ghost in world)
+ for(var/mob/dead/observer/ghost in player_list)
if(ghost.corpse == src && ghost.client)
ghost.client.mob = ghost.corpse
diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm
index 96369dc814..ce585a10dd 100644
--- a/code/modules/mob/living/silicon/say.dm
+++ b/code/modules/mob/living/silicon/say.dm
@@ -83,22 +83,21 @@
var/message_a = say_quote(message)
var/rendered = "Robotic Talk, [name] [message_a]"
- for (var/mob/living/S in world)
- if(!S.stat)
- if(S.robot_talk_understand && (S.robot_talk_understand == robot_talk_understand)) // This SHOULD catch everything caught by the one below, but I'm not going to change it.
- if(istype(S , /mob/living/silicon/ai))
- var/renderedAI = "Robotic Talk, [name] [message_a]"
- S.show_message(renderedAI, 2)
- else
- S.show_message(rendered, 2)
+ for (var/mob/living/S in living_mob_list)
+ if(S.robot_talk_understand && (S.robot_talk_understand == robot_talk_understand)) // This SHOULD catch everything caught by the one below, but I'm not going to change it.
+ if(istype(S , /mob/living/silicon/ai))
+ var/renderedAI = "Robotic Talk, [name] [message_a]"
+ S.show_message(renderedAI, 2)
+ else
+ S.show_message(rendered, 2)
- else if (S.binarycheck())
- if(istype(S , /mob/living/silicon/ai))
- var/renderedAI = "Robotic Talk, [name] [message_a]"
- S.show_message(renderedAI, 2)
- else
- S.show_message(rendered, 2)
+ else if (S.binarycheck())
+ if(istype(S , /mob/living/silicon/ai))
+ var/renderedAI = "Robotic Talk, [name] [message_a]"
+ S.show_message(renderedAI, 2)
+ else
+ S.show_message(rendered, 2)
var/list/listening = hearers(1, src)
listening -= src
@@ -125,8 +124,5 @@
rendered = "Robotic Talk, [name] [message_a]"
- for (var/mob/M in world)
- if (istype(M, /mob/new_player))
- continue
- if (M.stat > 1)
- M.show_message(rendered, 2)
\ No newline at end of file
+ for (var/mob/M in dead_mob_list)
+ M.show_message(rendered, 2)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/crab.dm b/code/modules/mob/living/simple_animal/crab.dm
index ec6d18e074..5fb148df7c 100644
--- a/code/modules/mob/living/simple_animal/crab.dm
+++ b/code/modules/mob/living/simple_animal/crab.dm
@@ -1,6 +1,7 @@
//Look Sir, free crabs!
/mob/living/simple_animal/crab
name = "crab"
+ real_name = "crab"
desc = "Free crabs!"
icon = 'icons/mob/mob.dmi'
icon_state = "crab"
@@ -17,6 +18,8 @@
response_harm = "stomps the"
stop_automated_movement = 1
friendly = "pinches"
+ var/obj/item/inventory_head
+ var/obj/item/inventory_mask
/mob/living/simple_animal/crab/Life()
..()
@@ -27,21 +30,27 @@
if(turns_since_move >= turns_per_move)
Move(get_step(src,pick(4,8)))
turns_since_move = 0
+ regenerate_icons()
//COFFEE! SQUEEEEEEEEE!
/mob/living/simple_animal/crab/Coffee
name = "Coffee"
+ real_name = "Coffee"
desc = "It's Coffee, the other pet!"
response_help = "pets"
response_disarm = "gently pushes aside"
response_harm = "stomps"
//LOOK AT THIS - ..()??
-/mob/living/simple_animal/crab/attackby(var/obj/item/O as obj, var/mob/user as mob)
+/*/mob/living/simple_animal/crab/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O, /obj/item/weapon/wirecutters))
- user << "\red \b This kills the crab."
- health -= 20
- Die()
+ if(prob(50))
+ user << "\red \b This kills the crab."
+ health -= 20
+ Die()
+ else
+ GetMad()
+ get
if(istype(O, /obj/item/stack/medical))
if(stat != DEAD)
var/obj/item/stack/medical/MED = O
@@ -66,4 +75,205 @@
usr << "\red This weapon is ineffective, it does no damage."
for(var/mob/M in viewers(src, null))
if ((M.client && !( M.blinded )))
- M.show_message("\red [user] gently taps [src] with the [O]. ")
\ No newline at end of file
+ M.show_message("\red [user] gently taps [src] with the [O]. ")
+
+/mob/living/simple_animal/crab/Topic(href, href_list)
+ if(usr.stat) return
+
+ //Removing from inventory
+ if(href_list["remove_inv"])
+ if(get_dist(src,usr) > 1 || !(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr)))
+ return
+ var/remove_from = href_list["remove_inv"]
+ switch(remove_from)
+ if("head")
+ if(inventory_head)
+ name = real_name
+ desc = initial(desc)
+ speak_emote = list("clicks")
+ emote_hear = list("clicks")
+ emote_see = list("clacks")
+ desc = "Free crabs!"
+ src.sd_SetLuminosity(0)
+ inventory_head.loc = src.loc
+ inventory_head = null
+ else
+ usr << "\red There is nothing to remove from its [remove_from]."
+ return
+ if("mask")
+ if(inventory_mask)
+ inventory_mask.loc = src.loc
+ inventory_mask = null
+ else
+ usr << "\red There is nothing to remove from its [remove_from]."
+ return
+
+ //show_inv(usr) //Commented out because changing Ian's name and then calling up his inventory opens a new inventory...which is annoying.
+
+ //Adding things to inventory
+ else if(href_list["add_inv"])
+ if(get_dist(src,usr) > 1 || !(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr)))
+ return
+ var/add_to = href_list["add_inv"]
+ if(!usr.get_active_hand())
+ usr << "\red You have nothing in your hand to put on its [add_to]."
+ return
+ switch(add_to)
+ if("head")
+ if(inventory_head)
+ usr << "\red It's is already wearing something."
+ return
+ else
+ var/obj/item/item_to_add = usr.get_active_hand()
+ if(!item_to_add)
+ return
+
+ //Corgis are supposed to be simpler, so only a select few objects can actually be put
+ //to be compatible with them. The objects are below.
+ //Many hats added, Some will probably be removed, just want to see which ones are popular.
+
+ var/list/allowed_types = list(
+ /obj/item/clothing/head/helmet,
+ /obj/item/clothing/glasses/sunglasses,
+ /obj/item/clothing/head/caphat,
+ /obj/item/clothing/head/collectable/captain,
+ /obj/item/clothing/head/that,
+ /obj/item/clothing/head/that,
+ /obj/item/clothing/head/kitty,
+ /obj/item/clothing/head/collectable/kitty,
+ /obj/item/clothing/head/rabbitears,
+ /obj/item/clothing/head/collectable/rabbitears,
+ /obj/item/clothing/head/beret,
+ /obj/item/clothing/head/collectable/beret,
+ /obj/item/clothing/head/det_hat,
+ /obj/item/clothing/head/nursehat,
+ /obj/item/clothing/head/pirate,
+ /obj/item/clothing/head/collectable/pirate,
+ /obj/item/clothing/head/chefhat,
+ /obj/item/clothing/head/collectable/chef,
+ /obj/item/clothing/head/collectable/police,
+ /obj/item/clothing/head/wizard/fake,
+ /obj/item/clothing/head/wizard,
+ /obj/item/clothing/head/collectable/wizard,
+ /obj/item/clothing/head/hardhat,
+ /obj/item/clothing/head/collectable/hardhat,
+ /obj/item/clothing/head/hardhat/white,
+ /obj/item/weapon/bedsheet,
+ /obj/item/clothing/head/soft
+ )
+
+ if( ! ( item_to_add.type in allowed_types ) )
+ usr << "\red It doesn't seem too keen on wearing that item."
+ return
+
+ usr.drop_item()
+ item_to_add.loc = src
+ src.inventory_head = item_to_add
+ regenerate_icons()
+
+ //Various hats and items (worn on his head) change Ian's behaviour. His attributes are reset when a HAT is removed.
+
+
+ switch(inventory_head && inventory_head.type)
+ if(/obj/item/clothing/head/caphat, /obj/item/clothing/head/collectable/captain)
+ name = "Captain [real_name]"
+ desc = "Probably better than the last captain."
+ if(/obj/item/clothing/head/kitty, /obj/item/clothing/head/collectable/kitty)
+ name = "Runtime"
+ emote_see = list("coughs up a furball", "stretches")
+ emote_hear = list("purrs")
+ speak = list("Purrr", "Meow!", "MAOOOOOW!", "HISSSSS", "MEEEEEEW")
+ desc = "It's a cute little kitty-cat! ... wait ... what the hell?"
+ if(/obj/item/clothing/head/rabbitears, /obj/item/clothing/head/collectable/rabbitears)
+ name = "Hoppy"
+ emote_see = list("twitches its nose", "hops around a bit")
+ desc = "This is hoppy. It's a corgi-...urmm... bunny rabbit"
+ if(/obj/item/clothing/head/beret, /obj/item/clothing/head/collectable/beret)
+ name = "Yann"
+ desc = "Mon dieu! C'est un chien!"
+ speak = list("le woof!", "le bark!", "JAPPE!!")
+ emote_see = list("cowers in fear", "surrenders", "plays dead","looks as though there is a wall in front of /him")
+ if(/obj/item/clothing/head/det_hat)
+ name = "Detective [real_name]"
+ desc = "[name] sees through your lies..."
+ emote_see = list("investigates the area","sniffs around for clues","searches for scooby snacks")
+ if(/obj/item/clothing/head/nursehat)
+ name = "Nurse [real_name]"
+ desc = "[name] needs 100cc of beef jerky...STAT!"
+ if(/obj/item/clothing/head/pirate, /obj/item/clothing/head/collectable/pirate)
+ name = "'[pick("Ol'","Scurvy","Black","Rum","Gammy","Bloody","Gangrene","Death","Long-John")] [pick("kibble","leg","beard","tooth","poop-deck","Threepwood","Le Chuck","corsair","Silver","Crusoe")]'"
+ desc = "Yaarghh!! Thar' be a scurvy dog!"
+ emote_see = list("hunts for treasure","stares coldly...","gnashes his tiny corgi teeth")
+ emote_hear = list("growls ferociously", "snarls")
+ speak = list("Arrrrgh!!","Grrrrrr!")
+ if(/obj/item/clothing/head/collectable/police)
+ name = "Officer [real_name]"
+ emote_see = list("drools","looks for donuts")
+ desc = "Stop right there criminal scum!"
+ if(/obj/item/clothing/head/wizard/fake, /obj/item/clothing/head/wizard, /obj/item/clothing/head/collectable/wizard)
+ name = "Grandwizard [real_name]"
+ speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "EI NATH!")
+ if(/obj/item/weapon/bedsheet)
+ name = "\improper Ghost"
+ speak = list("WoooOOOooo~","AUUUUUUUUUUUUUUUUUU")
+ emote_see = list("stumbles around", "shivers")
+ emote_hear = list("howls","groans")
+ desc = "Spooky!"
+ if(/obj/item/clothing/head/soft)
+ name = "Corgi Tech [real_name]"
+ speak = list("Needs a stamp!", "Request DENIED!", "Fill these out in triplicate!")
+ desc = "The reason your yellow gloves have chew-marks."
+
+ if("mask")
+ if(inventory_mask)
+ usr << "\red It's already wearing something."
+ return
+ else
+ var/obj/item/item_to_add = usr.get_active_hand()
+ if(!item_to_add)
+ return
+
+ //Corgis are supposed to be simpler, so only a select few objects can actually be put
+ //to be compatible with them. The objects are below.
+
+ var/list/allowed_types = list(
+ /obj/item/clothing/suit/armor/vest,
+ /obj/item/device/radio
+ )
+
+ if( ! ( item_to_add.type in allowed_types ) )
+ usr << "\red This object won't fit."
+ return
+
+ usr.drop_item()
+ item_to_add.loc = src
+ src.inventory_mask = item_to_add
+ regenerate_icons()
+
+ //show_inv(usr) //Commented out because changing Ian's name and then calling up his inventory opens a new inventory...which is annoying.
+ else
+ ..()
+
+/mob/living/simple_animal/crab/GetMad()
+ name = "MEGAMADCRAB"
+ real_name = "MEGAMADCRAB"
+ desc = "OH NO YOU DUN IT NOW."
+ icon = 'mob.dmi'
+ icon_state = "madcrab"
+ icon_living = "madcrab"
+ icon_dead = "madcrab_dead"
+ speak_emote = list("clicks")
+ emote_hear = list("clicks with fury", "clicks angrily")
+ emote_see = list("clacks")
+ speak_chance = 1
+ turns_per_move = 15//Gotta go fast
+ maxHealth = 100//So they don't die as quickly
+ health = 100
+ melee_damage_lower = 3
+ melee_damage_upper = 10//Kill them. Kill them all
+ if(inventory_head)//Drops inventory so it doesn't have to be dealt with
+ inventory_head.loc = src.loc
+ inventory_head = null
+ if(inventory_mask)
+ inventory_mask.loc = src.loc
+ inventory_mask = null*/
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/life.dm b/code/modules/mob/living/simple_animal/life.dm
index d9fd499752..51af460178 100644
--- a/code/modules/mob/living/simple_animal/life.dm
+++ b/code/modules/mob/living/simple_animal/life.dm
@@ -16,7 +16,7 @@
var/meat_type
var/stop_automated_movement = 0 //Use this to temporarely stop random movement or to if you write special movement code for animals.
var/stop_automated_movement_when_pulled = 1 //When set to 1 this stops the animal from moving when someone is pulling it.
-
+
//Interaction
var/response_help = "You try to help"
var/response_disarm = "You try to disarm"
@@ -67,6 +67,8 @@
if(stat == DEAD)
if(health > 0)
icon_state = icon_living
+ dead_mob_list -= src
+ living_mob_list += src
stat = CONSCIOUS
density = 1
return
@@ -348,6 +350,8 @@
stat(null, "Health: [round((health / maxHealth) * 100)]%")
/mob/living/simple_animal/proc/Die()
+ living_mob_list -= src
+ dead_mob_list += src
icon_state = icon_dead
stat = DEAD
density = 0
diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm
index 22921fa7e1..f70e7cf2a1 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -4,7 +4,7 @@
computer_id = client.computer_id
log_access("Login: [key_name(src)] from [lastKnownIP ? lastKnownIP : "localhost"]-[computer_id] || BYOND v[client.byond_version]")
if(config.log_access)
- for(var/mob/M in world)
+ for(var/mob/M in player_list)
if(M == src) continue
if( M.key && (M.key != key) )
var/matches
@@ -23,6 +23,9 @@
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).")
/mob/Login()
+ player_list |= list(src)
+ if(client.holder)
+ admin_list |= list(src)
update_Login_details()
world.update_status()
client.images = null //remove the images such as AIs being unable to see runes
diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm
index 1b67df3041..7b86c6e1fa 100644
--- a/code/modules/mob/logout.dm
+++ b/code/modules/mob/logout.dm
@@ -1,4 +1,6 @@
/mob/Logout()
+ player_list -= src
+ admin_list -= src
log_access("Logout: [key_name(src)]")
if (admins[src.ckey])
if (ticker && ticker.current_state == GAME_STATE_PLAYING) //Only report this stuff if we are currently playing.
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 0432bfc88c..7c5469fd1a 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -1,5 +1,13 @@
/mob/Del()//This makes sure that mobs with clients/keys are not just deleted from the game.
ghostize(1)
+ remove_from_mob_list(src)
+ living_mob_list -= src
+ dead_mob_list -= src
+ ..()
+
+/mob/New()
+ add_to_mob_list(src)
+ living_mob_list += src//No way this can possibly fail
..()
/mob/proc/Cell()
@@ -87,7 +95,7 @@
/mob/proc/findname(msg)
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if (M.real_name == text("[]", msg))
return M
return 0
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index c0d759505f..9cb16f141f 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -249,7 +249,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
/proc/findname(msg)
- for(var/mob/M in world)
+ for(var/mob/M in mob_list)
if (M.real_name == text("[msg]"))
return 1
return 0
diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm
index e61e251b43..9fa0a180a5 100644
--- a/code/modules/mob/new_player/login.dm
+++ b/code/modules/mob/new_player/login.dm
@@ -19,6 +19,9 @@
lastarea = starting_loc
sight |= SEE_TURFS
+ player_list |= src
+ if(src.client.holder)
+ admin_list |= src
var/list/watch_locations = list()
for(var/obj/effect/landmark/landmark in world)
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index a87b74f46b..acd202e8cf 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -108,7 +108,7 @@
stat("Players: [totalPlayers]", "Players Ready: [totalPlayersReady]")
totalPlayers = 0
totalPlayersReady = 0
- for(var/mob/new_player/player in world)
+ for(var/mob/new_player/player in player_list)
stat("[player.key]", (player.ready)?("(Playing)"):(null))
totalPlayers++
if(player.ready)totalPlayersReady++
@@ -272,9 +272,8 @@
proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank)
if (ticker.current_state == GAME_STATE_PLAYING)
var/ailist[] = list()
- for (var/mob/living/silicon/ai/A in world)
- if (!A.stat)
- ailist += A
+ for (var/mob/living/silicon/ai/A in living_mob_list)
+ ailist += A
if (ailist.len)
var/mob/living/silicon/ai/announcer = pick(ailist)
if(character.mind)
diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm
index 2b8f31f0cd..8652806f47 100644
--- a/code/modules/mob/say.dm
+++ b/code/modules/mob/say.dm
@@ -34,7 +34,7 @@
message = src.say_quote(message)
var/rendered = "DEAD: [name][alt_name] [message]"
- for (var/mob/M in world)
+ for (var/mob/M in player_list)
if (istype(M, /mob/new_player))
continue
if (M.stat == 2 || (M.client && M.client.holder && M.client.deadchat)) //admins can toggle deadchat on and off. This is a proc in admin.dm and is only give to Administrators and above
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 75ef2cd3fe..970827f773 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -79,6 +79,7 @@
var/turf/T = src.loc // hide if turf is not intact
if(level==1) hide(T.intact)
+ cable_list += src
/obj/structure/cable/Del() // called when a cable is deleted
@@ -87,6 +88,7 @@
if(netnum && powernets && (powernets.len >= netnum) && (netnum >= 1) ) // make sure cable & powernet data is valid
var/datum/powernet/PN = powernets[netnum]
PN.cut_cable(src) // updated the powernets
+ cable_list -= src
// else
// if(Debug) diary << "Defered cable deletion at [x],[y]: #[netnum]"
..() // then go ahead and delete the cable
diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm
index 386fc4c4b1..4d0ebdc215 100644
--- a/code/modules/power/power.dm
+++ b/code/modules/power/power.dm
@@ -76,14 +76,14 @@
var/netcount = 0
powernets = list()
- for(var/obj/structure/cable/PC in world)
+ for(var/obj/structure/cable/PC in cable_list)
PC.netnum = 0
for(var/obj/machinery/power/M in machines)
if(M.netnum >=0)
M.netnum = 0
- for(var/obj/structure/cable/PC in world)
+ for(var/obj/structure/cable/PC in cable_list)
if(!PC.netnum)
PC.netnum = ++netcount
@@ -99,7 +99,7 @@
PN.number = L
- for(var/obj/structure/cable/C in world)
+ for(var/obj/structure/cable/C in cable_list)
var/datum/powernet/PN = powernets[C.netnum]
PN.cables += C
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index e33099dc1b..b23c354626 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -496,7 +496,7 @@ var/global/list/uneatable = list(
acquire(pick(cultists))
return
//If there was living cultists, it picks one to follow.
- for(var/mob/living/carbon/human/food in world)
+ for(var/mob/living/carbon/human/food in living_mob_list)
if(food.stat)
continue
cultists += food
@@ -504,7 +504,7 @@ var/global/list/uneatable = list(
acquire(pick(cultists))
return
//no living cultists, pick a living human instead.
- for(var/mob/dead/observer/ghost in world)
+ for(var/mob/dead/observer/ghost in player_list)
if(!ghost.client)
continue
cultists += ghost
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 88c011c501..505862b3bd 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -338,7 +338,7 @@
if(src.trackrate) nexttime = world.timeofday + 3600/abs(trackrate)
track = text2num(href_list["track"])
if(track == 2)
- var/obj/machinery/power/tracker/T = locate() in world
+ var/obj/machinery/power/tracker/T = locate() in powernet.nodes
if(T)
cdir = T.sun_angle
diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm
index a187069b2b..89752d8996 100644
--- a/code/modules/projectiles/projectile/change.dm
+++ b/code/modules/projectiles/projectile/change.dm
@@ -18,7 +18,7 @@
-/obj/item/projectile/change/proc/wabbajack (mob/M as mob in world)
+/obj/item/projectile/change/proc/wabbajack (mob/M as mob in living_mob_list)
if(istype(M, /mob/living) && M.stat != 2)
for(var/obj/item/W in M)
if (istype(M, /mob/living/silicon/robot)||istype(W, /obj/item/weapon/implant))
diff --git a/code/unused/gamemodes/ctf_items.dm b/code/unused/gamemodes/ctf_items.dm
index 7d15adb481..74c907826b 100644
--- a/code/unused/gamemodes/ctf_items.dm
+++ b/code/unused/gamemodes/ctf_items.dm
@@ -45,7 +45,7 @@
/obj/item/weapon/ctf_flag/proc/check_if_equipped()
var/equipped = 0
- for(var/mob/M in world)
+ for(var/mob/M in living_mob_list)
if(M &&!M.stat)
var/list/L = M.get_contents()
if(src in L)
diff --git a/code/unused/gamemodes/monkey.dm b/code/unused/gamemodes/monkey.dm
index 52d98fce20..04b0689f6a 100644
--- a/code/unused/gamemodes/monkey.dm
+++ b/code/unused/gamemodes/monkey.dm
@@ -19,7 +19,7 @@
/datum/game_mode/monkey/can_start()
if (num_players()<2)
return 0
- for(var/mob/new_player/P in world)
+ for(var/mob/new_player/P in player_list)
if(P.client && P.ready && !jobban_isbanned(P, "Syndicate"))
return 1
return 0
@@ -56,7 +56,7 @@
var/mob/living/carbon/monkey/new_monkey = H.monkeyize()
new_monkey << "Your goal is to capture the entire human civilization and your first target is Centcom. Hijack the shuttle without humans aboard!"
- for (var/mob/living/carbon/monkey/rabid_monkey in world)
+ for (var/mob/living/carbon/monkey/rabid_monkey in mob_list)
if (!(rabid_monkey.mind in initial_monkeys) && (!isturf(rabid_monkey.loc) || rabid_monkey.z!=1))
continue
rabid_monkey.contract_disease(new /datum/disease/jungle_fever,1,0)
@@ -77,7 +77,7 @@
if (state==MONKEY_MODE_SHUTTLE_CAPTURED || state==MONKEY_MODE_SHUTTLE_WITH_HUMANS)
return
var/infected_count = 0
- for (var/mob/living/carbon/monkey/rabid_monkey in world)
+ for (var/mob/living/carbon/monkey/rabid_monkey in mob_list)
if (is_important_monkey(rabid_monkey))
infected_count++
if (infected_count==0)
@@ -89,7 +89,7 @@
/datum/game_mode/monkey/declare_completion()
var/monkeywin = 0
if (state != MONKEY_MODE_NO_RABID_LEFT)
- for(var/mob/living/carbon/monkey/monkey_player in world)
+ for(var/mob/living/carbon/monkey/monkey_player in mob_list)
if (is_important_monkey(monkey_player))
var/area/A = get_area(monkey_player)
if ( is_type_in_list(A, centcom_areas))
@@ -97,7 +97,7 @@
break
if(monkeywin)
- for(var/mob/living/carbon/human/human_player in world)
+ for(var/mob/living/carbon/human/human_player in mob_list)
if (human_player.stat != 2)
var/area/A = get_area(human_player)
if (istype(A, /area/shuttle/escape/centcom))
@@ -107,10 +107,9 @@
if (monkeywin)
feedback_set_details("round_end_result","win - monkey win")
world << "The monkeys have won! Humanity is doomed!"
- for (var/mob/living/carbon/human/player in world)
- if (player.client)
- spawn(rand(0,150))
- player.monkeyize()
+ for (var/mob/living/carbon/human/player in player_list)
+ spawn(rand(0,150))
+ player.monkeyize()
sleep(200)
else
feedback_set_details("round_end_result","loss - crew win")
@@ -120,7 +119,7 @@
/datum/game_mode/proc/auto_declare_completion_monkey()
- for(var/mob/living/carbon/monkey/monkey_player in world)
+ for(var/mob/living/carbon/monkey/monkey_player in mob_list)
for(var/datum/disease/D in monkey_player.viruses)
if (istype(D, /datum/disease/jungle_fever) && monkey_player.ckey)
world << "[monkey_player.ckey] was played infested [monkey_player]. [monkey_player.stat == 2 ? "(DEAD)" : ""]"
diff --git a/code/unused/gamemodes/ruby.dm b/code/unused/gamemodes/ruby.dm
index 8921bfc7cc..28c523c8aa 100644
--- a/code/unused/gamemodes/ruby.dm
+++ b/code/unused/gamemodes/ruby.dm
@@ -172,7 +172,7 @@
set category = "Abomination"
set desc = "Everything must come to an end. After you have freed them, you must free yourself."
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in player_list)
if(!H.client || H.client == src)
continue
src << "Your work is not done. You will not find release until they are all free."
@@ -187,7 +187,7 @@
var/list/candidates = list()
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in player_list)
if(!H.client || H.client == src) continue
//if(!H.client) continue
candidates.Add(H)
@@ -277,7 +277,7 @@
proc/search_for_new_owner()
var/list/possible_owners = list()
- for(var/mob/living/carbon/human/H in world)
+ for(var/mob/living/carbon/human/H in mob_list)
possible_owners.Add(H)
var/mob/living/carbon/human/H = pick(possible_owners)
diff --git a/code/unused/hivebot/mainframe.dm b/code/unused/hivebot/mainframe.dm
index b8c3a99327..ca65e940f1 100644
--- a/code/unused/hivebot/mainframe.dm
+++ b/code/unused/hivebot/mainframe.dm
@@ -108,7 +108,7 @@
var/list/bodies = new/list()
- for(var/mob/living/silicon/hivebot/H in world)
+ for(var/mob/living/silicon/hivebot/H in mob_list)
if(H.z == src.z)
if(H.shell)
if(!H.stat)
diff --git a/html/changelog.html b/html/changelog.html
index 562f445664..574c65c771 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -59,6 +59,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
Nuke Ops get a new pinpointer, changing modes with the verb will switch between pointing to the disk, and pointing to the shuttle. Also provides a notification when you leave the station z-level
Reworked how MMI Life() was done, now they will never lose consciousness, and many less things affect them now(Like deafening/blindness from explosions). However, they are vulnerable to EMPs, but all damage is temporary.
Clowns will no longer be killed trying to use holo eswords
+ Major tweaking to try and optimize many operations on the game's backend. Hopefully, this will reduce a large amount of lag by steamlining CPU-intensive operations, but at the same time there was so much changed that there is no real way for a small group to test everything. If anyone spots a bug involving being unable to 'find' mobs, characters, whatever, then put it on the issue tracker or at the very least let #coderbus know. We can't fix shit unless we know about it.
Icarus updated:
diff --git a/tgstation.dme b/tgstation.dme
index dd30e5da61..8aa875c227 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -5,6 +5,266 @@
// END_INTERNALS
// BEGIN_FILE_DIR
#define FILE_DIR .
+#define FILE_DIR ".svn"
+#define FILE_DIR ".svn/pristine"
+#define FILE_DIR ".svn/pristine/00"
+#define FILE_DIR ".svn/pristine/01"
+#define FILE_DIR ".svn/pristine/02"
+#define FILE_DIR ".svn/pristine/03"
+#define FILE_DIR ".svn/pristine/04"
+#define FILE_DIR ".svn/pristine/05"
+#define FILE_DIR ".svn/pristine/06"
+#define FILE_DIR ".svn/pristine/07"
+#define FILE_DIR ".svn/pristine/08"
+#define FILE_DIR ".svn/pristine/09"
+#define FILE_DIR ".svn/pristine/0a"
+#define FILE_DIR ".svn/pristine/0b"
+#define FILE_DIR ".svn/pristine/0c"
+#define FILE_DIR ".svn/pristine/0d"
+#define FILE_DIR ".svn/pristine/0e"
+#define FILE_DIR ".svn/pristine/0f"
+#define FILE_DIR ".svn/pristine/10"
+#define FILE_DIR ".svn/pristine/11"
+#define FILE_DIR ".svn/pristine/12"
+#define FILE_DIR ".svn/pristine/13"
+#define FILE_DIR ".svn/pristine/14"
+#define FILE_DIR ".svn/pristine/15"
+#define FILE_DIR ".svn/pristine/16"
+#define FILE_DIR ".svn/pristine/17"
+#define FILE_DIR ".svn/pristine/18"
+#define FILE_DIR ".svn/pristine/19"
+#define FILE_DIR ".svn/pristine/1a"
+#define FILE_DIR ".svn/pristine/1b"
+#define FILE_DIR ".svn/pristine/1c"
+#define FILE_DIR ".svn/pristine/1d"
+#define FILE_DIR ".svn/pristine/1e"
+#define FILE_DIR ".svn/pristine/1f"
+#define FILE_DIR ".svn/pristine/20"
+#define FILE_DIR ".svn/pristine/21"
+#define FILE_DIR ".svn/pristine/22"
+#define FILE_DIR ".svn/pristine/23"
+#define FILE_DIR ".svn/pristine/24"
+#define FILE_DIR ".svn/pristine/25"
+#define FILE_DIR ".svn/pristine/26"
+#define FILE_DIR ".svn/pristine/27"
+#define FILE_DIR ".svn/pristine/28"
+#define FILE_DIR ".svn/pristine/29"
+#define FILE_DIR ".svn/pristine/2a"
+#define FILE_DIR ".svn/pristine/2b"
+#define FILE_DIR ".svn/pristine/2c"
+#define FILE_DIR ".svn/pristine/2d"
+#define FILE_DIR ".svn/pristine/2e"
+#define FILE_DIR ".svn/pristine/2f"
+#define FILE_DIR ".svn/pristine/30"
+#define FILE_DIR ".svn/pristine/31"
+#define FILE_DIR ".svn/pristine/32"
+#define FILE_DIR ".svn/pristine/33"
+#define FILE_DIR ".svn/pristine/34"
+#define FILE_DIR ".svn/pristine/35"
+#define FILE_DIR ".svn/pristine/36"
+#define FILE_DIR ".svn/pristine/37"
+#define FILE_DIR ".svn/pristine/38"
+#define FILE_DIR ".svn/pristine/39"
+#define FILE_DIR ".svn/pristine/3a"
+#define FILE_DIR ".svn/pristine/3b"
+#define FILE_DIR ".svn/pristine/3c"
+#define FILE_DIR ".svn/pristine/3d"
+#define FILE_DIR ".svn/pristine/3e"
+#define FILE_DIR ".svn/pristine/3f"
+#define FILE_DIR ".svn/pristine/40"
+#define FILE_DIR ".svn/pristine/41"
+#define FILE_DIR ".svn/pristine/42"
+#define FILE_DIR ".svn/pristine/43"
+#define FILE_DIR ".svn/pristine/44"
+#define FILE_DIR ".svn/pristine/45"
+#define FILE_DIR ".svn/pristine/46"
+#define FILE_DIR ".svn/pristine/47"
+#define FILE_DIR ".svn/pristine/48"
+#define FILE_DIR ".svn/pristine/49"
+#define FILE_DIR ".svn/pristine/4a"
+#define FILE_DIR ".svn/pristine/4b"
+#define FILE_DIR ".svn/pristine/4c"
+#define FILE_DIR ".svn/pristine/4d"
+#define FILE_DIR ".svn/pristine/4e"
+#define FILE_DIR ".svn/pristine/4f"
+#define FILE_DIR ".svn/pristine/50"
+#define FILE_DIR ".svn/pristine/51"
+#define FILE_DIR ".svn/pristine/52"
+#define FILE_DIR ".svn/pristine/53"
+#define FILE_DIR ".svn/pristine/54"
+#define FILE_DIR ".svn/pristine/55"
+#define FILE_DIR ".svn/pristine/56"
+#define FILE_DIR ".svn/pristine/57"
+#define FILE_DIR ".svn/pristine/58"
+#define FILE_DIR ".svn/pristine/59"
+#define FILE_DIR ".svn/pristine/5a"
+#define FILE_DIR ".svn/pristine/5b"
+#define FILE_DIR ".svn/pristine/5c"
+#define FILE_DIR ".svn/pristine/5d"
+#define FILE_DIR ".svn/pristine/5e"
+#define FILE_DIR ".svn/pristine/5f"
+#define FILE_DIR ".svn/pristine/60"
+#define FILE_DIR ".svn/pristine/61"
+#define FILE_DIR ".svn/pristine/62"
+#define FILE_DIR ".svn/pristine/63"
+#define FILE_DIR ".svn/pristine/64"
+#define FILE_DIR ".svn/pristine/65"
+#define FILE_DIR ".svn/pristine/66"
+#define FILE_DIR ".svn/pristine/67"
+#define FILE_DIR ".svn/pristine/68"
+#define FILE_DIR ".svn/pristine/69"
+#define FILE_DIR ".svn/pristine/6a"
+#define FILE_DIR ".svn/pristine/6b"
+#define FILE_DIR ".svn/pristine/6c"
+#define FILE_DIR ".svn/pristine/6d"
+#define FILE_DIR ".svn/pristine/6e"
+#define FILE_DIR ".svn/pristine/6f"
+#define FILE_DIR ".svn/pristine/70"
+#define FILE_DIR ".svn/pristine/71"
+#define FILE_DIR ".svn/pristine/72"
+#define FILE_DIR ".svn/pristine/73"
+#define FILE_DIR ".svn/pristine/74"
+#define FILE_DIR ".svn/pristine/75"
+#define FILE_DIR ".svn/pristine/76"
+#define FILE_DIR ".svn/pristine/77"
+#define FILE_DIR ".svn/pristine/78"
+#define FILE_DIR ".svn/pristine/79"
+#define FILE_DIR ".svn/pristine/7a"
+#define FILE_DIR ".svn/pristine/7b"
+#define FILE_DIR ".svn/pristine/7c"
+#define FILE_DIR ".svn/pristine/7d"
+#define FILE_DIR ".svn/pristine/7e"
+#define FILE_DIR ".svn/pristine/7f"
+#define FILE_DIR ".svn/pristine/80"
+#define FILE_DIR ".svn/pristine/81"
+#define FILE_DIR ".svn/pristine/82"
+#define FILE_DIR ".svn/pristine/83"
+#define FILE_DIR ".svn/pristine/84"
+#define FILE_DIR ".svn/pristine/85"
+#define FILE_DIR ".svn/pristine/86"
+#define FILE_DIR ".svn/pristine/87"
+#define FILE_DIR ".svn/pristine/88"
+#define FILE_DIR ".svn/pristine/89"
+#define FILE_DIR ".svn/pristine/8a"
+#define FILE_DIR ".svn/pristine/8b"
+#define FILE_DIR ".svn/pristine/8c"
+#define FILE_DIR ".svn/pristine/8d"
+#define FILE_DIR ".svn/pristine/8e"
+#define FILE_DIR ".svn/pristine/8f"
+#define FILE_DIR ".svn/pristine/90"
+#define FILE_DIR ".svn/pristine/91"
+#define FILE_DIR ".svn/pristine/92"
+#define FILE_DIR ".svn/pristine/93"
+#define FILE_DIR ".svn/pristine/94"
+#define FILE_DIR ".svn/pristine/95"
+#define FILE_DIR ".svn/pristine/96"
+#define FILE_DIR ".svn/pristine/97"
+#define FILE_DIR ".svn/pristine/98"
+#define FILE_DIR ".svn/pristine/99"
+#define FILE_DIR ".svn/pristine/9a"
+#define FILE_DIR ".svn/pristine/9b"
+#define FILE_DIR ".svn/pristine/9c"
+#define FILE_DIR ".svn/pristine/9d"
+#define FILE_DIR ".svn/pristine/9e"
+#define FILE_DIR ".svn/pristine/9f"
+#define FILE_DIR ".svn/pristine/a0"
+#define FILE_DIR ".svn/pristine/a1"
+#define FILE_DIR ".svn/pristine/a2"
+#define FILE_DIR ".svn/pristine/a3"
+#define FILE_DIR ".svn/pristine/a4"
+#define FILE_DIR ".svn/pristine/a5"
+#define FILE_DIR ".svn/pristine/a6"
+#define FILE_DIR ".svn/pristine/a7"
+#define FILE_DIR ".svn/pristine/a8"
+#define FILE_DIR ".svn/pristine/a9"
+#define FILE_DIR ".svn/pristine/aa"
+#define FILE_DIR ".svn/pristine/ab"
+#define FILE_DIR ".svn/pristine/ac"
+#define FILE_DIR ".svn/pristine/ad"
+#define FILE_DIR ".svn/pristine/ae"
+#define FILE_DIR ".svn/pristine/af"
+#define FILE_DIR ".svn/pristine/b0"
+#define FILE_DIR ".svn/pristine/b1"
+#define FILE_DIR ".svn/pristine/b2"
+#define FILE_DIR ".svn/pristine/b3"
+#define FILE_DIR ".svn/pristine/b4"
+#define FILE_DIR ".svn/pristine/b5"
+#define FILE_DIR ".svn/pristine/b6"
+#define FILE_DIR ".svn/pristine/b7"
+#define FILE_DIR ".svn/pristine/b8"
+#define FILE_DIR ".svn/pristine/b9"
+#define FILE_DIR ".svn/pristine/ba"
+#define FILE_DIR ".svn/pristine/bb"
+#define FILE_DIR ".svn/pristine/bc"
+#define FILE_DIR ".svn/pristine/bd"
+#define FILE_DIR ".svn/pristine/be"
+#define FILE_DIR ".svn/pristine/bf"
+#define FILE_DIR ".svn/pristine/c0"
+#define FILE_DIR ".svn/pristine/c1"
+#define FILE_DIR ".svn/pristine/c2"
+#define FILE_DIR ".svn/pristine/c3"
+#define FILE_DIR ".svn/pristine/c4"
+#define FILE_DIR ".svn/pristine/c5"
+#define FILE_DIR ".svn/pristine/c6"
+#define FILE_DIR ".svn/pristine/c7"
+#define FILE_DIR ".svn/pristine/c8"
+#define FILE_DIR ".svn/pristine/c9"
+#define FILE_DIR ".svn/pristine/ca"
+#define FILE_DIR ".svn/pristine/cb"
+#define FILE_DIR ".svn/pristine/cc"
+#define FILE_DIR ".svn/pristine/cd"
+#define FILE_DIR ".svn/pristine/ce"
+#define FILE_DIR ".svn/pristine/cf"
+#define FILE_DIR ".svn/pristine/d0"
+#define FILE_DIR ".svn/pristine/d1"
+#define FILE_DIR ".svn/pristine/d2"
+#define FILE_DIR ".svn/pristine/d3"
+#define FILE_DIR ".svn/pristine/d4"
+#define FILE_DIR ".svn/pristine/d5"
+#define FILE_DIR ".svn/pristine/d6"
+#define FILE_DIR ".svn/pristine/d7"
+#define FILE_DIR ".svn/pristine/d8"
+#define FILE_DIR ".svn/pristine/d9"
+#define FILE_DIR ".svn/pristine/da"
+#define FILE_DIR ".svn/pristine/db"
+#define FILE_DIR ".svn/pristine/dc"
+#define FILE_DIR ".svn/pristine/dd"
+#define FILE_DIR ".svn/pristine/de"
+#define FILE_DIR ".svn/pristine/df"
+#define FILE_DIR ".svn/pristine/e0"
+#define FILE_DIR ".svn/pristine/e1"
+#define FILE_DIR ".svn/pristine/e2"
+#define FILE_DIR ".svn/pristine/e3"
+#define FILE_DIR ".svn/pristine/e4"
+#define FILE_DIR ".svn/pristine/e5"
+#define FILE_DIR ".svn/pristine/e6"
+#define FILE_DIR ".svn/pristine/e7"
+#define FILE_DIR ".svn/pristine/e8"
+#define FILE_DIR ".svn/pristine/e9"
+#define FILE_DIR ".svn/pristine/ea"
+#define FILE_DIR ".svn/pristine/eb"
+#define FILE_DIR ".svn/pristine/ec"
+#define FILE_DIR ".svn/pristine/ed"
+#define FILE_DIR ".svn/pristine/ee"
+#define FILE_DIR ".svn/pristine/ef"
+#define FILE_DIR ".svn/pristine/f0"
+#define FILE_DIR ".svn/pristine/f1"
+#define FILE_DIR ".svn/pristine/f2"
+#define FILE_DIR ".svn/pristine/f3"
+#define FILE_DIR ".svn/pristine/f4"
+#define FILE_DIR ".svn/pristine/f5"
+#define FILE_DIR ".svn/pristine/f6"
+#define FILE_DIR ".svn/pristine/f7"
+#define FILE_DIR ".svn/pristine/f8"
+#define FILE_DIR ".svn/pristine/f9"
+#define FILE_DIR ".svn/pristine/fa"
+#define FILE_DIR ".svn/pristine/fb"
+#define FILE_DIR ".svn/pristine/fc"
+#define FILE_DIR ".svn/pristine/fd"
+#define FILE_DIR ".svn/pristine/fe"
+#define FILE_DIR ".svn/pristine/ff"
+#define FILE_DIR "bot"
+#define FILE_DIR "bot/Marakov"
#define FILE_DIR "code"
#define FILE_DIR "code/ATMOSPHERICS"
#define FILE_DIR "code/ATMOSPHERICS/components"
@@ -166,6 +426,22 @@
#define FILE_DIR "code/WorkInProgress/mapload"
#define FILE_DIR "code/WorkInProgress/organs"
#define FILE_DIR "code/WorkInProgress/virus2"
+#define FILE_DIR "config"
+#define FILE_DIR "config/names"
+#define FILE_DIR "data"
+#define FILE_DIR "data/logs"
+#define FILE_DIR "data/logs/2012"
+#define FILE_DIR "data/logs/2012/06-June"
+#define FILE_DIR "data/logs/2012/07-July"
+#define FILE_DIR "data/player_saves"
+#define FILE_DIR "data/player_saves/a"
+#define FILE_DIR "data/player_saves/a/ammy55"
+#define FILE_DIR "data/player_saves/c"
+#define FILE_DIR "data/player_saves/c/cheridan"
+#define FILE_DIR "data/player_saves/r"
+#define FILE_DIR "data/player_saves/r/rockdtben"
+#define FILE_DIR "data/player_saves/s"
+#define FILE_DIR "data/player_saves/s/sieve"
#define FILE_DIR "html"
#define FILE_DIR "icons"
#define FILE_DIR "icons/48x48"
@@ -181,6 +457,7 @@
#define FILE_DIR "icons/obj/machines"
#define FILE_DIR "icons/obj/pipes"
#define FILE_DIR "icons/pda_icons"
+#define FILE_DIR "icons/PSD files"
#define FILE_DIR "icons/spideros_icons"
#define FILE_DIR "icons/Testing"
#define FILE_DIR "icons/turf"
@@ -190,7 +467,9 @@
#define FILE_DIR "interface"
#define FILE_DIR "maps"
#define FILE_DIR "maps/RandomZLevels"
+#define FILE_DIR "music"
#define FILE_DIR "Redirector"
+#define FILE_DIR "Runtime Condenser"
#define FILE_DIR "sound"
#define FILE_DIR "sound/AI"
#define FILE_DIR "sound/ambience"
@@ -203,6 +482,16 @@
#define FILE_DIR "sound/piano"
#define FILE_DIR "sound/voice"
#define FILE_DIR "sound/weapons"
+#define FILE_DIR "SQL"
+#define FILE_DIR "tools"
+#define FILE_DIR "tools/UnstandardnessTestForDM"
+#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM"
+#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/bin"
+#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/bin/Debug"
+#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj"
+#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86"
+#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86/Debug"
+#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Properties"
// END_FILE_DIR
// BEGIN_PREFERENCES
@@ -336,6 +625,7 @@
#include "code\defines\procs\dbcore.dm"
#include "code\defines\procs\forum_activation.dm"
#include "code\defines\procs\gamehelpers.dm"
+#include "code\defines\procs\global_lists.dm"
#include "code\defines\procs\helpers.dm"
#include "code\defines\procs\icon_procs.dm"
#include "code\defines\procs\icon_procs_readme.dm"
@@ -966,6 +1256,7 @@
#include "code\modules\mob\living\carbon\alien\larva\update_icons.dm"
#include "code\modules\mob\living\carbon\brain\brain.dm"
#include "code\modules\mob\living\carbon\brain\death.dm"
+#include "code\modules\mob\living\carbon\brain\emote.dm"
#include "code\modules\mob\living\carbon\brain\hud.dm"
#include "code\modules\mob\living\carbon\brain\life.dm"
#include "code\modules\mob\living\carbon\brain\MMI.dm"