diff --git a/code/defines/procs/helpers.dm b/code/defines/procs/helpers.dm index a429fd6082a..de353cf9c8c 100644 --- a/code/defines/procs/helpers.dm +++ b/code/defines/procs/helpers.dm @@ -108,8 +108,8 @@ var/list/old_list = shufflelist.Copy() while(old_list.len) var/item = pick(old_list) - new_list += item - old_list -= item + new_list.Add(item) + old_list.Remove(item) return new_list /proc/uniquelist(var/list/L) @@ -198,9 +198,16 @@ var/list/result = new() while(Li <= L.len && Ri <= R.len) if(sorttext(L[Li], R[Ri]) < 1) - result += R[Ri++] + var/item = R[Ri++] + result += item + if(R[item]) + result[item] = R[item] + else - result += L[Li++] + var/item = L[Li++] + result += item + if(L[item]) + result[item] = L[item] if(Li <= L.len) return (result + L.Copy(Li, 0)) @@ -800,28 +807,62 @@ Turf and target are seperate in case you want to teleport some distance from a t /proc/sortmobs() var/list/mob_list = list() + var/list/temp_list = list() for(var/mob/living/silicon/ai/M in world) - mob_list.Add(M) + temp_list.Add(M) + sortList(temp_list) + mob_list += temp_list + temp_list = list() for(var/mob/living/silicon/pai/M in world) - mob_list.Add(M) + temp_list.Add(M) + sortList(temp_list) + mob_list += temp_list + temp_list = list() for(var/mob/living/silicon/robot/M in world) - mob_list.Add(M) + temp_list.Add(M) + sortList(temp_list) + mob_list += temp_list + temp_list = list() for(var/mob/living/carbon/human/M in world) - mob_list.Add(M) + temp_list.Add(M) + sortList(temp_list) + mob_list += temp_list + temp_list = list() for(var/mob/living/carbon/brain/M in world) - mob_list.Add(M) + temp_list.Add(M) + sortList(temp_list) + mob_list += temp_list + temp_list = list() for(var/mob/living/carbon/alien/M in world) - mob_list.Add(M) + temp_list.Add(M) + sortList(temp_list) + mob_list += temp_list + temp_list = list() for(var/mob/dead/observer/M in world) - mob_list.Add(M) + temp_list.Add(M) + sortList(temp_list) + mob_list += temp_list + temp_list = list() for(var/mob/new_player/M in world) - mob_list.Add(M) + temp_list.Add(M) + sortList(temp_list) + mob_list += temp_list + temp_list = list() for(var/mob/living/carbon/monkey/M in world) - mob_list.Add(M) + temp_list.Add(M) + sortList(temp_list) + mob_list += temp_list + temp_list = list() for(var/mob/living/carbon/metroid/M in world) - mob_list.Add(M) + temp_list.Add(M) + sortList(temp_list) + mob_list += temp_list + temp_list = list() for(var/mob/living/simple_animal/M in world) - mob_list.Add(M) + temp_list.Add(M) + sortList(temp_list) + mob_list += temp_list + temp_list = list() // for(var/mob/living/silicon/hivebot/M in world) // mob_list.Add(M) // for(var/mob/living/silicon/hive_mainframe/M in world) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 22bac2a5936..dbd6c617458 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -83,7 +83,7 @@ areaindex[tmpname] = 1 L[tmpname] = I - var/desc = input("Please select a location to lock in.", "Locking Computer") in L|null + var/desc = input("Please select a location to lock in.", "Locking Computer") as null|anything in L if(desc) src.locked = L[desc] for(var/mob/O in hearers(src, null)) diff --git a/code/game/magic/library.dm b/code/game/magic/library.dm index 7b5e7adefd8..b99bf925756 100644 --- a/code/game/magic/library.dm +++ b/code/game/magic/library.dm @@ -140,7 +140,7 @@ for(var/obj/item/weapon/book/b in src.contents) books.Add(b) if(books.len) - var/obj/item/weapon/book/choice = input("Which book would you like to remove from the shelf?") in books|null as obj|null + var/obj/item/weapon/book/choice = input("Which book would you like to remove from the shelf?") as null|anything in books if(choice) choice.loc = src.loc else diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index e9c3497c49e..30fa62e440f 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -28,7 +28,7 @@ alert("Admin jumping disabled") return -/client/proc/jumptomob(var/mob/M in world) +/client/proc/jumptomob() set category = "Admin" set name = "Jump to Mob" @@ -37,15 +37,18 @@ return if(config.allow_admin_jump) - log_admin("[key_name(usr)] jumped to [key_name(M)]") - message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1) - if(src.mob) - var/mob/A = src.mob - var/turf/T = get_turf(M) - if(T && isturf(T)) - A.loc = T - else - A << "This mob is not located in the game world." + var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortmobs() + var/mob/M = selection + if(!istype(M)) + return + var/mob/A = src.mob + var/turf/T = get_turf(M) + if(T && isturf(T)) + A.loc = T + log_admin("[key_name(usr)] jumped to [key_name(M)]") + message_admins("[key_name_admin(usr)] jumped to [key_name_admin(M)]", 1) + else + A << "This mob is not located in the game world." else alert("Admin jumping disabled") @@ -71,7 +74,7 @@ else alert("Admin jumping disabled") -/client/proc/Getmob(var/mob/M in world) +/client/proc/Getmob() set category = "Admin" set name = "Get Mob" set desc = "Mob to teleport" @@ -79,9 +82,18 @@ src << "Only administrators may use this command." return if(config.allow_admin_jump) - log_admin("[key_name(usr)] teleported [key_name(M)]") - message_admins("[key_name_admin(usr)] teleported [key_name_admin(M)]", 1) - M.loc = get_turf(usr) + var/selection = input("Please, select a player!", "Admin Jumping", null, null) as null|anything in sortmobs() + var/mob/M = selection + if(!istype(M)) + return + var/mob/A = src.mob + var/turf/T = get_turf(A) + if(T && isturf(T)) + M.loc = T + log_admin("[key_name(usr)] teleported [key_name(M)]") + message_admins("[key_name_admin(usr)] teleported [key_name_admin(M)]", 1) + else + A << "You are not located in the game world." else alert("Admin jumping disabled") diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 00dbc514aef..07448d60fe2 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -50,7 +50,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if("Obj") target = input("Enter target:","Target",usr) as obj in world if("Mob") - target = input("Enter target:","Target",usr) as mob in world + target = input("Enter target:","Target",usr) as mob in sortmobs() if("Area or Turf") target = input("Enter target:","Target",usr.loc) as area|turf in world if("Client") @@ -105,7 +105,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that lst[i] = input("Select reference:","Reference") as null|mob|obj|turf|area in world if("mob reference") - lst[i] = input("Select reference:","Reference",usr) as mob in world + lst[i] = input("Select reference:","Reference",usr) as mob in sortmobs() if("file") lst[i] = input("Pick file:","File") as file @@ -117,10 +117,11 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that var/list/keys = list() for(var/mob/M in world) keys += M.client + sortList(keys) lst[i] = input("Please, select a player!", "Selection", null, null) as null|anything in keys if("mob's area") - var/mob/temp = input("Select mob", "Selection", usr) as mob in world + var/mob/temp = input("Select mob", "Selection", usr) as mob in sortmobs() lst[i] = temp.loc diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index 15871fcf712..8ba910f2eb0 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -62,7 +62,7 @@ var_value = input("Select reference:","Reference") as null|mob|obj|turf|area in world if("mob reference") - var_value = input("Select reference:","Reference") as null|mob in world + var_value = input("Select reference:","Reference") as null|mob in sortmobs() if("file") var_value = input("Pick file:","File") as null|file @@ -127,7 +127,7 @@ var_value = input("Select reference:","Reference") as null|mob|obj|turf|area in world if("mob reference") - var_value = input("Select reference:","Reference") as mob in world + var_value = input("Select reference:","Reference") as mob in sortmobs() if("file") var_value = input("Pick file:","File") as file @@ -294,7 +294,7 @@ if("mob reference") variable = input("Select reference:","Reference",\ - variable) as mob in world + variable) as mob in sortmobs() if("file") variable = input("Pick file:","File",variable) \ @@ -533,7 +533,7 @@ O.vars[variable] = var_new if("mob reference") - var/var_new = input("Select reference:","Reference",O.vars[variable]) as null|mob in world + var/var_new = input("Select reference:","Reference",O.vars[variable]) as null|mob in sortmobs() if(var_new==null) return O.vars[variable] = var_new diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index ba3e1abc800..8b9bf5aa6af 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -15,9 +15,6 @@ var/fire_alert = 0 var/temperature_alert = 0 - var/list/body_standing = list() - var/list/body_lying = list() - /mob/living/carbon/monkey/Life() set invisibility = 0 diff --git a/icons/mob/monkey.dmi b/icons/mob/monkey.dmi index 38824dd8615..41a6451fa46 100644 Binary files a/icons/mob/monkey.dmi and b/icons/mob/monkey.dmi differ