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 += "" - 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 += "
NamePosition
[][]
" @@ -2125,7 +2124,7 @@ var/global/BSACooldown = 0 if("DNA") var/dat = "Showing DNA from blood.
" dat += "" - 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 += "" dat += "
NameDNABlood Type
[H][H.dna.unique_enzymes][H.b_type]
" @@ -2133,7 +2132,7 @@ var/global/BSACooldown = 0 if("fingerprints") var/dat = "Showing Fingerprints.
" dat += "" - 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 += "" @@ -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:

    NameFingerprints
    [H][md5(H.dna.uni_identity)]