diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 5dd92752716..9e51ee6aff1 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -167,6 +167,7 @@ var/list/admin_verbs_debug = list( /client/proc/make_invulnerable, /client/proc/cmd_admin_dump_delprofile, /client/proc/mob_list, + /client/proc/cure_disease, #ifdef PROFILE_MACHINES /client/proc/cmd_admin_dump_macprofile, #endif diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index dc54666e49e..32238af71f6 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -1310,4 +1310,42 @@ client/proc/mob_list() usr << msg if(foundnull) usr << "Found [foundnull] null entries in the mob list, running null clearer." - listclearnulls(mob_list) \ No newline at end of file + listclearnulls(mob_list) + +client/proc/cure_disease() + set name = "Cure Disease" + set category = "Debug" + if(!holder) return + + var/list/disease_by_name = list("-Cure All-" = null) + disease2_list + active_diseases + + var/disease_name = input(src, "Disease to cure?") as null|anything in sortTim(disease_by_name, /proc/cmp_text_asc) + if(!disease_name) return + var/count = 0 + if(disease_name == "-Cure All-") + for(var/mob/living/carbon/C in mob_list) + for(var/ID in C.virus2) + if(ID && C.virus2[ID]) + var/datum/disease2/disease/DD = C.virus2[ID] + DD.cure(C) + count++ + for(var/datum/disease/D in C.viruses) + if(D) + D.cure(1) + count++ + active_diseases -= D + else + for(var/mob/living/carbon/C in mob_list) + for(var/ID in C.virus2) + if(ID == disease_name) + var/datum/disease2/disease/DD = C.virus2[ID] + DD.cure(C) + count++ + for(var/datum/disease/D in C.viruses) + if(D && D.name == disease_name) + D.cure(1) + count++ + active_diseases -= D + src << "Cured [count] mob\s of [disease_name == "-Cure All-" ? "all diseases." : "[disease_name]"]" + log_admin("[src]/([ckey(src.key)] Cured all mobs of [disease_name == "-Cure All-" ? "all diseases." : "[disease_name]"]") + message_admins("[src]/([ckey(src.key)] Cured all mobs of [disease_name == "-Cure All-" ? "all diseases." : "[disease_name]"]") \ No newline at end of file diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm index d2b55892d8b..1a9da4106b4 100644 --- a/code/modules/virus2/disease2.dm +++ b/code/modules/virus2/disease2.dm @@ -1,3 +1,4 @@ +var/global/list/disease2_list = list() /datum/disease2/disease var/infectionchance = 70 var/speed = 1 @@ -17,6 +18,7 @@ /datum/disease2/disease/New(var/notes="No notes.") uniqueID = rand(0,10000) log += "
[timestamp()] CREATED - [notes]
" + disease2_list["[uniqueID]"] = src ..() /datum/disease2/disease/proc/makerandom(var/greater=0) @@ -29,6 +31,7 @@ holder.getrandomeffect() effects += holder uniqueID = rand(0,10000) + disease2_list["[uniqueID]"] = src infectionchance = rand(60,90) antigen |= text2num(pick(ANTIGENS)) antigen |= text2num(pick(ANTIGENS)) @@ -55,7 +58,9 @@ D.log += "[f.name] [holder.chance]%
" D.effects += holder // add the holder to the disease + disease2_list -= D.uniqueID D.uniqueID = rand(0, 10000) + disease2_list["[D.uniqueID]"] = D D.infectionchance = input(C, "Choose an infection rate percent", "Infection Rate") as num if(D.infectionchance > 100 || D.infectionchance < 0) return 0 diff --git a/code/unused/disease2/base.dm b/code/unused/disease2/base.dm index eab69ba69cb..a69833024c5 100644 --- a/code/unused/disease2/base.dm +++ b/code/unused/disease2/base.dm @@ -39,6 +39,7 @@ M.virus2 = disease.getcopy() M.virus2.minormutate() + M.virus2.uniqueID = disease.uniqueID for(var/datum/disease2/resistance/res in M.resistances) if(res.resistsdisease(M.virus2))