From d2b628614050aa1150f92e591fc493c54bb847bf Mon Sep 17 00:00:00 2001 From: Wizardcrying Date: Wed, 8 Jul 2015 00:29:43 -0700 Subject: [PATCH 1/4] Sets suiciding to 0 upon calling revive --- code/modules/mob/living/living.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 788431da0bc..ceddbe2a2e5 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -424,6 +424,7 @@ eye_blurry = 0 ear_deaf = 0 ear_damage = 0 + suiciding = 0 if(!reagents) create_reagents(1000) else From 0a1eb449debed571e687499c44545b1dbe0a04e0 Mon Sep 17 00:00:00 2001 From: Wizardcrying Date: Wed, 8 Jul 2015 15:27:22 -0700 Subject: [PATCH 2/4] Removes suiciding = 0 from rejuvenate, and adds a note for anyone using revive/rejuvenate --- code/modules/mob/living/living.dm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index ceddbe2a2e5..6f6914e8873 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -378,7 +378,13 @@ /mob/living/proc/restore_all_organs() return - +/* +NOTE TO ANYONE MAKING A PROC THAT USES REVIVE/REJUVENATE: +If the proc calling either of these is: + -meant to be an admin/overpowered revival proc, make sure you set suiciding = 0 + -meant to be something that a player uses to heal/revive themself or others, check if suiciding = 1 and prevent them from reviving if true. +Thanks. +*/ /mob/living/proc/revive(animation = 0) rejuvenate(animation) @@ -424,7 +430,6 @@ eye_blurry = 0 ear_deaf = 0 ear_damage = 0 - suiciding = 0 if(!reagents) create_reagents(1000) else From b2efe58ea30dbb452dd8a6bf194c16585c4a3272 Mon Sep 17 00:00:00 2001 From: Wizardcrying Date: Wed, 8 Jul 2015 16:36:28 -0700 Subject: [PATCH 3/4] Condenses copypasted revive code into revive(0), and adds a check that prevents changelings from using stasis after committing suicide. --- .../gamemodes/changeling/changeling_powers.dm | 55 ++----------------- 1 file changed, 5 insertions(+), 50 deletions(-) diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 625772b4869..dbbb8c90e28 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -517,56 +517,7 @@ living_mob_list |= list(C) C.stat = CONSCIOUS C.tod = null - C.setToxLoss(0) - C.setOxyLoss(0) - C.setCloneLoss(0) - C.setBrainLoss(0) - C.SetParalysis(0) - C.SetStunned(0) - C.SetWeakened(0) - C.radiation = 0 - C.heal_overall_damage(C.getBruteLoss(), C.getFireLoss()) - C.reagents.clear_reagents() - C.germ_level = 0 - C.next_pain_time = 0 - C.traumatic_shock = 0 - if(ishuman(C)) - var/mob/living/carbon/human/H = C - H.timeofdeath = 0 - H.vessel.reagent_list = list() - H.vessel.add_reagent("blood",560) - H.shock_stage = 0 - spawn(1) - H.fixblood() - for(var/organ_name in H.organs_by_name) - var/datum/organ/external/O = H.organs_by_name[organ_name] - for(var/obj/item/weapon/shard/shrapnel/s in O.implants) - if(istype(s)) - O.implants -= s - H.contents -= s - qdel(s) - O.amputated = 0 - O.brute_dam = 0 - O.burn_dam = 0 - O.damage_state = "00" - O.germ_level = 0 - O.hidden = null - O.number_wounds = 0 - O.open = 0 - O.perma_injury = 0 - O.stage = 0 - O.status = 0 - O.trace_chemicals = list() - O.wounds = list() - O.wound_update_accuracy = 1 - for(var/organ_name in H.internal_organs_by_name) - var/datum/organ/internal/IO = H.internal_organs_by_name[organ_name] - IO.damage = 0 - IO.trace_chemicals.len = 0 - IO.germ_level = 0 - IO.status = 0 - IO.robotic = 0 - H.updatehealth() + C.revive(0) C << "We have regenerated." C.visible_message("[src] appears to wake from the dead, having healed all wounds.") C.status_flags &= ~(FAKEDEATH) @@ -584,6 +535,10 @@ if(!changeling) return var/mob/living/carbon/C = src + if(C.suiciding) + C << "Why would we wish to regenerate if we have already committed suicide?" + return + if(!C.stat && alert("Are we sure we wish to fake our death?",,"Yes","No") == "No")//Confirmation for living changelings if they want to fake their death return C << "We will attempt to regenerate our form." From b93405e82a7bad91d3e87055f5c7a71b983fd342 Mon Sep 17 00:00:00 2001 From: Wizardcrying Date: Wed, 8 Jul 2015 17:13:07 -0700 Subject: [PATCH 4/4] Sets suiciding to 0 for those that are affected by the admin Rejuvenate verb and also for those affected by the adminbus' Mass Revive. Also corrects a spelling mistake in topic.dm. --- code/game/objects/structures/vehicles/adminbus_powers.dm | 1 + code/modules/admin/topic.dm | 2 +- code/modules/admin/verbs/randomverbs.dm | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/vehicles/adminbus_powers.dm b/code/game/objects/structures/vehicles/adminbus_powers.dm index b202b90b314..462a0ed218f 100644 --- a/code/game/objects/structures/vehicles/adminbus_powers.dm +++ b/code/game/objects/structures/vehicles/adminbus_powers.dm @@ -198,6 +198,7 @@ for(var/mob/living/M in orange(src,3)) M.revive(1) + M.suiciding = 0 M << "THE ADMINBUS IS LOVE. THE ADMINBUS IS LIFE." sleep(2) update_rearview() diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 58ae475c361..c528d0e9d22 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1452,7 +1452,7 @@ if(config.allow_admin_rev) L.revive(0) message_admins("Admin [key_name_admin(usr)] healed / revived [key_name_admin(L)]!", 1) - log_admin("[key_name(usr)] healed / Rrvived [key_name(L)]") + log_admin("[key_name(usr)] healed / revived [key_name(L)]") else usr << "Admin Rejuvinates have been disabled" diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index b5a285e47f0..dc0261f2f56 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -576,6 +576,7 @@ Traitors and the like can also be revived with the previous role mostly intact. return if(config.allow_admin_rev) M.revive(0) + M.suiciding = 0 log_admin("[key_name(usr)] healed / revived [key_name(M)]") message_admins("Admin [key_name_admin(usr)] healed / revived [key_name_admin(M)]!", 1)