diff --git a/code/datums/disease.dm b/code/datums/disease.dm
index 6a4bece7994..12956dc8ca5 100644
--- a/code/datums/disease.dm
+++ b/code/datums/disease.dm
@@ -153,7 +153,10 @@ to null does not delete the object itself. Thank you.
affected_mob.alien_egg_flag = 0
// world << "Removing [src]"
spawn(0)
- del(src)
+ affected_mob.viruses -= src //I am a silly person for trying affected_mob.viruses.Find(src_type) instead of what it's like now and getting LOL WHAT IS THIS PROC
+ del(src) //IT'LL TAKE MORE THAN A LIST REMOVE TO DEFEAT US!
+ //world <<"Virus deleted successfully."
+ //world <<"Cured the disease, deleting virus..."
return
diff --git a/code/game/objects/devices/paicard.dm b/code/game/objects/devices/paicard.dm
index a875dc383ec..c3c3f65f339 100644
--- a/code/game/objects/devices/paicard.dm
+++ b/code/game/objects/devices/paicard.dm
@@ -76,6 +76,8 @@
var/t1 = text2num(href_list["wires"])
if (radio.wires & t1)
radio.wires &= ~t1
+ else
+ radio.wires |= t1
if(href_list["setlaws"])
var/newlaws = copytext(sanitize(input("Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", pai.pai_laws) as message),1,MAX_MESSAGE_LEN)
if(newlaws)
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 969f9b96c3b..6344c0f9701 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -576,11 +576,12 @@ var/global/BSACooldown = 0
if (href_list["removejobban"])
if ((src.rank in list("Game Admin", "Game Master" )))
var/t = href_list["removejobban"]
- if(t)
- log_admin("[key_name(usr)] removed [t]")
- message_admins("\blue [key_name_admin(usr)] removed [t]", 1)
- jobban_remove(t)
- href_list["ban"] = 1 // lets it fall through and refresh
+ if(input(alert("Do you want to unjobban [t]?","Unjobban confirmation", "Yes", "No") == "Yes")) //No more misclicks! Unless you do it twice.
+ if(t)
+ log_admin("[key_name(usr)] removed [t]")
+ message_admins("\blue [key_name_admin(usr)] removed [t]", 1)
+ jobban_remove(t)
+ href_list["ban"] = 1 // lets it fall through and refresh
if (href_list["newban"])
if ((src.rank in list( "Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
@@ -1133,6 +1134,7 @@ var/global/BSACooldown = 0
return
if(src && src.owner)
+// //world <<"Passed the owner-check. Owner is [src.owner]. The mob is [M]."
var/location_description = ""
var/special_role_description = ""
var/health_description = ""
@@ -1140,10 +1142,11 @@ var/global/BSACooldown = 0
//Location
if(T && isturf(T))
+// //world <<"Has a location."
if(T.loc && isarea(T.loc))
- location_description = "([T.x], [T.y], [T.z] in area [T.loc])"
+ location_description = "([M.loc == T ? "at coordinates " : "in [M.loc] at coordinates "] [T.x], [T.y], [T.z] in area [T.loc])"
else
- location_description = "([T.x], [T.y], [T.z])"
+ location_description = "([M.loc == T ? "at coordinates " : "in [M.loc] at coordinates "] [T.x], [T.y], [T.z])"
//Job + antagonist
if(M.mind)
@@ -1153,11 +1156,19 @@ var/global/BSACooldown = 0
//Health
if(isliving(M))
- var/mob/living/L
- health_description = "Oxy: [L.oxyloss] - Tox: [L.toxloss] - Fire: [L.fireloss] - Brute: [L.bruteloss] - Clone: [L.cloneloss] - Brain: [L.brainloss]"
+ var/mob/living/L = M
+ var/status
+ switch (M.stat)
+ if (0) status = "Alive"
+ if (1) status = "\yellow Unconscious"
+ if (2) status = "\red Dead"
+ health_description = "Status - [status]"
+ health_description += "
Oxy: [L.getOxyLoss()] - Tox: [L.getToxLoss()] - Fire: [L.getFireLoss()] - Brute: [L.getBruteLoss()] - Clone: [L.getCloneLoss()] - Brain: [L.getBrainLoss()]"
else
+// world <<"Has no health."
health_description = "This mob type has no health to speak of."
+// world <<"Displaying info about the mob..."
src.owner << "Info about [M.name]: "
src.owner << "Mob type = [M.type]; Damage = [health_description]"
src.owner << "Name = [M.name]; Real_name = [M.real_name]; Original_name = [M.original_name]; Key = [M.key];"
diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm
index f21fc02a619..e9d20d662e8 100644
--- a/code/modules/admin/verbs/modifyvariables.dm
+++ b/code/modules/admin/verbs/modifyvariables.dm
@@ -127,7 +127,6 @@ var/list/forbidden_varedit_object_types = list(
if(!istype(L,/list)) src << "Not a List."
var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "viruses", "cuffed", "ka", "last_eaten", "urine", "poo", "icon", "icon_state")
-
var/list/names = sortList(L)
var/variable = input("Which var?","Var") as null|anything in names + "(ADD VAR)"
@@ -211,10 +210,10 @@ var/list/forbidden_varedit_object_types = list(
var/class = "text"
if(src.holder && src.holder.marked_datum)
class = input("What kind of variable?","Variable Type",default) as null|anything in list("text",
- "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default","marked datum ([holder.marked_datum.type])")
+ "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default","marked datum ([holder.marked_datum.type])", "DELETE FROM LIST")
else
class = input("What kind of variable?","Variable Type",default) as null|anything in list("text",
- "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default")
+ "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default", "DELETE FROM LIST")
if(!class)
return
@@ -222,51 +221,45 @@ var/list/forbidden_varedit_object_types = list(
if(holder.marked_datum && class == "marked datum ([holder.marked_datum.type])")
class = "marked datum"
- switch(class)
+ switch(class) //Spits a runtime error if you try to modify an entry in the contents list. Dunno how to fix it, yet.
if("list")
mod_list(variable)
if("restore to default")
- variable = initial(variable)
+ L[L.Find(variable)]=initial(variable)
if("edit referenced object")
modify_variables(variable)
- if("(DELETE FROM LIST)")
+ if("DELETE FROM LIST")
L -= variable
return
if("text")
- variable = input("Enter new text:","Text",\
- variable) as text
+ L[L.Find(variable)] = input("Enter new text:","Text") as text
if("num")
- variable = input("Enter new number:","Num",\
- variable) as num
+ L[L.Find(variable)] = input("Enter new number:","Num") as num
if("type")
- variable = input("Enter type:","Type",variable) \
- in typesof(/obj,/mob,/area,/turf)
+ L[L.Find(variable)] = input("Enter type:","Type") in typesof(/obj,/mob,/area,/turf)
if("reference")
- variable = input("Select reference:","Reference",\
- variable) as mob|obj|turf|area in world
+ L[L.Find(variable)] = input("Select reference:","Reference") as mob|obj|turf|area in world
if("mob reference")
- variable = input("Select reference:","Reference",\
- variable) as mob in world
+ L[L.Find(variable)] = input("Select reference:","Reference") as mob in world
if("file")
- variable = input("Pick file:","File",variable) \
- as file
+ L[L.Find(variable)] = input("Pick file:","File") as file
if("icon")
- variable = input("Pick icon:","Icon",variable) \
- as icon
+ L[L.Find(variable)] = input("Pick icon:","Icon") as icon
if("marked datum")
- variable = holder.marked_datum
+ L[L.Find(variable)] = holder.marked_datum
+
/client/proc/modify_variables(var/atom/O, var/param_var_name = null, var/autodetect_class = 0)
var/list/locked = list("vars", "key", "ckey", "client", "firemut", "ishulk", "telekinesis", "xray", "virus", "cuffed", "ka", "last_eaten", "icon", "icon_state", "mutantrace")
diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm
index 804d10c1003..3d1469516f5 100644
--- a/code/modules/chemical/Chemistry-Tools.dm
+++ b/code/modules/chemical/Chemistry-Tools.dm
@@ -694,6 +694,13 @@
afterattack(obj/target, mob/user , flag)
return
+ proc/reagentlist(var/obj/item/weapon/reagent_containers/snack) //Attack logs for regents in pills
+ var/data
+ if(snack.reagents.reagent_list && snack.reagents.reagent_list.len) //find a reagent list if there is and check if it has entries
+ for (var/datum/reagent/R in snack.reagents.reagent_list) //no reagents will be left behind
+ data += "[R.id]([R.volume] units); " //Using IDs because SOME chemicals(I'm looking at you, chlorhydrate-beer) have the same names as other chemicals.
+ return data
+ else return "No reagents"
////////////////////////////////////////////////////////////////////////////////
/// (Mixing)Glass.
////////////////////////////////////////////////////////////////////////////////
@@ -1461,8 +1468,8 @@
if(!do_mob(user, M)) return
- M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: \ref[reagents]")
- user.attack_log += text("\[[time_stamp()]\] Fed [M.name] by [M.name] ([M.ckey]) Reagents: \ref[reagents]")
+ M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]")
+ user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]")
log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
@@ -1635,8 +1642,8 @@
for(var/mob/O in viewers(world.view, user))
O.show_message("\red [user] feeds [M] [src].", 1)
- M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: \ref[reagents]")
- user.attack_log += text("\[[time_stamp()]\] Fed [M.name] by [M.name] ([M.ckey]) Reagents: \ref[reagents]")
+ M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]")
+ user.attack_log += text("\[[time_stamp()]\] Fed [M.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]")
log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
@@ -1773,8 +1780,8 @@
for(var/mob/O in viewers(world.view, user))
O.show_message("\red [user] forces [M] to swallow [src].", 1)
- M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: \ref[reagents]")
- user.attack_log += text("\[[time_stamp()]\] Fed [M.name] by [M.name] ([M.ckey]) Reagents: \ref[reagents]")
+ M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]")
+ user.attack_log += text("\[[time_stamp()]\] Fed [M.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]")
log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
@@ -2410,8 +2417,8 @@
for(var/mob/O in viewers(world.view, user))
O.show_message("\red [user] feeds [M] [src].", 1)
- M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: \ref[reagents]")
- user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: \ref[reagents]")
+ M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]")
+ user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]")
log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
diff --git a/code/modules/mob/mob_cleanup.dm b/code/modules/mob/mob_cleanup.dm
index 30c7f7c1cdb..60b4e36a0fd 100644
--- a/code/modules/mob/mob_cleanup.dm
+++ b/code/modules/mob/mob_cleanup.dm
@@ -8,7 +8,7 @@ Put (mob/proc)s here that are in dire need of a code cleanup.
// This proc has some procs that should be extracted from it. I believe we can develop some helper procs from it - Rockdtben
/mob/proc/contract_disease(var/datum/disease/virus, var/skip_this = 0, var/force_species_check=1)
// world << "Contract_disease called by [src] with virus [virus]"
- if(stat >=2) return
+ if(stat >=2 || src.resistances.Find(virus.type)) return
//This gives a chance to re-infect cured/vaccinated mobs
// if(virus.type in resistances)
@@ -59,7 +59,7 @@ Put (mob/proc)s here that are in dire need of a code cleanup.
clothing_areas[Covers] += Clothing
*/
- if(prob(15/virus.permeability_mod)) return //the power of immunity compels this disease!
+ if(prob(15/virus.permeability_mod)) return //the power of immunity compels this disease! but then you forgot resistances
var/obj/item/clothing/Cl = null
var/passed = 1