From 06eda01ea08414b0574ddd84222b4de0bacf2db2 Mon Sep 17 00:00:00 2001 From: carlarctg <53100513+carlarctg@users.noreply.github.com> Date: Sun, 24 Sep 2023 04:27:43 -0300 Subject: [PATCH] Added the Hippocrates bust to medbay heirlooms (#78121) ## About The Pull Request Remade from #77961 because coders dont like bloat in prs Added the Hippocrates bust to medbay heirlooms. Paramedics don't get one. You can now swear the Hippocratic oath with these busts! It'll give you pacifism but nothing else. The process is reversible. There's a very small chance that the Hippocrates bust was once wielded by a certain German doctor. This chance is increased for coroner heirlooms. ## Why It's Good For The Game > Added the Hippocrates bust to medbay heirlooms. Paramedics don't get one. I got this idea and I just couldn't get it out of my head, it's too funny. Paramedics don't get one because they're powergamers and laugh at the Oath, and also it doesn't feel like a paramedic thing. > You can now swear the Hippocratic oath with these busts! It'll give you pacifism but nothing else. The process is reversible. This is just a little fun thing you can choose to do, i think it'd be cute to see doctors swearing the oath in medbay. Plus it's reversible which can be even funnier depending on the occassion. > There's a very small chance that the Hippocrates bust was once wielded by a certain German doctor. This chance is increased for coroner heirlooms. We DO already have precedent for references with the entrenching tool after all. The buff isn't all that special in reality, getting a medical hud while in your hand is... basically irrelevant for the roles that literally spawn with a med hud? It's just for accuracy and rule of cool's sake. ## Changelog :cl: add: Added the Hippocrates bust to medbay heirlooms. Paramedics don't get one. add: You can now swear the Hippocratic oath with these busts! It'll give you pacifism but nothing else. The process is reversible. add: There's a very small chance that the Hippocrates bust was once wielded by a certain German doctor. This chance is increased for coroner heirlooms. /:cl: --------- Co-authored-by: Arturlang <24881678+Arturlang@users.noreply.github.com> --- code/__DEFINES/combat.dm | 6 +- code/game/objects/items/weaponry.dm | 94 +++++++++++++++++++ .../jobs/job_types/chief_medical_officer.dm | 2 +- code/modules/jobs/job_types/medical_doctor.dm | 2 +- code/modules/jobs/job_types/virologist.dm | 2 +- 5 files changed, 101 insertions(+), 5 deletions(-) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 4c8e407e8f4..92e7749860b 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -99,10 +99,12 @@ DEFINE_BITFIELD(status_flags, list( //click cooldowns, in tenths of a second, used for various combat actions #define CLICK_CD_MELEE 8 -#define CLICK_CD_THROW 8 -#define CLICK_CD_RANGE 4 #define CLICK_CD_RAPID 2 #define CLICK_CD_HYPER_RAPID 1 +#define CLICK_CD_SLOW 10 + +#define CLICK_CD_THROW 8 +#define CLICK_CD_RANGE 4 #define CLICK_CD_CLICK_ABILITY 6 #define CLICK_CD_BREAKOUT 100 #define CLICK_CD_HANDCUFFED 10 diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 5b05cddb806..470448ab244 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -620,6 +620,100 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 desc = "A bust of the famous Greek physician Hippocrates of Kos, often referred to as the father of western medicine." icon_state = "hippocratic" impressiveness = 50 + // If it hits the prob(reference_chance) chance, this is set to TRUE. Adds medical HUD when wielded, but has a 10% slower attack speed and is too bloody to make an oath with. + var/reference = FALSE + // Chance for above. + var/reference_chance = 1 + // Minimum time inbetween oaths. + COOLDOWN_DECLARE(oath_cd) + +/obj/item/statuebust/hippocratic/evil + reference_chance = 100 + +/obj/item/statuebust/hippocratic/Initialize(mapload) + . = ..() + if(prob(reference_chance)) + name = "Solemn Vow" + desc = "Art lovers will cherish the bust of Hippocrates, commemorating a time when medics still thought doing no harm was a good idea." + attack_speed = CLICK_CD_SLOW + reference = TRUE + +/obj/item/statuebust/hippocratic/examine(mob/user) + . = ..() + if(reference) + . += span_notice("You could activate the bust in-hand to swear or forswear a Hippocratic Oath... but it seems like somebody decided it was more of a Hippocratic Suggestion. This thing is caked with bits of blood and gore.") + return + . += span_notice("You can activate the bust in-hand to swear or forswear a Hippocratic Oath! This has no effects except pacifism or bragging rights. Does not remove other sources of pacifism. Do not eat.") + +/obj/item/statuebust/hippocratic/equipped(mob/living/carbon/human/user, slot) + ..() + if(!(slot & ITEM_SLOT_HANDS)) + return + var/datum/atom_hud/our_hud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] + our_hud.show_to(user) + ADD_TRAIT(user, TRAIT_MEDICAL_HUD, type) + +/obj/item/statuebust/hippocratic/dropped(mob/living/carbon/human/user) + ..() + if(HAS_TRAIT_NOT_FROM(user, TRAIT_MEDICAL_HUD, type)) + return + var/datum/atom_hud/our_hud = GLOB.huds[DATA_HUD_MEDICAL_ADVANCED] + our_hud.hide_from(user) + REMOVE_TRAIT(user, TRAIT_MEDICAL_HUD, type) + +/obj/item/statuebust/hippocratic/attack_self(mob/user) + if(!iscarbon(user)) + to_chat(user, span_warning("You remember how the Hippocratic Oath specifies 'my fellow human beings' and realize that it's completely meaningless to you.")) + return + + if(reference) + to_chat(user, span_warning("As you prepare yourself to swear the Oath, you realize that doing so on a blood-caked bust is probably not a good idea.")) + return + + if(!COOLDOWN_FINISHED(src, oath_cd)) + to_chat(user, span_warning("You've sworn or forsworn an oath too recently to undo your decisions. The bust looks at you with disgust.")) + return + + COOLDOWN_START(src, oath_cd, 5 MINUTES) + + if(HAS_TRAIT_FROM(user, TRAIT_PACIFISM, type)) + to_chat(user, span_warning("You've already sworn a vow. You start preparing to rescind it...")) + if(do_after(user, 5 SECONDS, target = user)) + user.say("Yeah this Hippopotamus thing isn't working out. I quit!", forced = "hippocratic hippocrisy") + REMOVE_TRAIT(user, TRAIT_PACIFISM, type) + + // they can still do it for rp purposes + if(HAS_TRAIT_NOT_FROM(user, TRAIT_PACIFISM, type)) + to_chat(user, span_warning("You already don't want to harm people, this isn't going to do anything!")) + + + to_chat(user, span_notice("You remind yourself of the Hippocratic Oath's contents and prepare to swear yourself to it...")) + if(do_after(user, 4 SECONDS, target = user)) + user.say("I swear to fulfill, to the best of my ability and judgment, this covenant:", forced = "hippocratic oath") + else + return fuck_it_up(user) + if(do_after(user, 2 SECONDS, target = user)) + user.say("I will apply, for the benefit of the sick, all measures that are required, avoiding those twin traps of overtreatment and therapeutic nihilism.", forced = "hippocratic oath") + else + return fuck_it_up(user) + if(do_after(user, 3 SECONDS, target = user)) + user.say("I will remember that I remain a member of society, with special obligations to all my fellow human beings, those sound of mind and body as well as the infirm.", forced = "hippocratic oath") + else + + return fuck_it_up(user) + if(do_after(user, 3 SECONDS, target = user)) + user.say("If I do not violate this oath, may I enjoy life and art, respected while I live and remembered with affection thereafter. May I always act so as to preserve the finest traditions of my calling and may I long experience the joy of healing those who seek my help.", forced = "hippocratic oath") + else + return fuck_it_up(user) + + to_chat(user, span_notice("Contentment, understanding, and purpose washes over you as you finish the oath. You consider for a second the concept of harm and shudder.")) + ADD_TRAIT(user, TRAIT_PACIFISM, type) + +// Bully the guy for fucking up. +/obj/item/statuebust/hippocratic/proc/fuck_it_up(mob/living/carbon/user) + to_chat(user, span_warning("You forget what comes next like a dumbass. The Hippocrates bust looks down on you, disappointed.")) + user.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2) + COOLDOWN_RESET(src, oath_cd) /obj/item/tailclub name = "tail club" diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 92c272167a0..998c19a215d 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -38,7 +38,7 @@ /obj/effect/spawner/random/medical/surgery_tool_advanced = 4, /obj/effect/spawner/random/medical/surgery_tool_alien = 1 ) - family_heirlooms = list(/obj/item/storage/medkit/ancient/heirloom, /obj/item/scalpel, /obj/item/hemostat, /obj/item/circular_saw, /obj/item/retractor, /obj/item/cautery) + family_heirlooms = list(/obj/item/storage/medkit/ancient/heirloom, /obj/item/scalpel, /obj/item/hemostat, /obj/item/circular_saw, /obj/item/retractor, /obj/item/cautery, /obj/item/statuebust/hippocratic) rpg_title = "High Cleric" job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index 6f7359ddb7a..e3a396609eb 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -24,7 +24,7 @@ /datum/job_department/medical, ) - family_heirlooms = list(/obj/item/storage/medkit/ancient/heirloom, /obj/item/scalpel, /obj/item/hemostat, /obj/item/circular_saw, /obj/item/retractor, /obj/item/cautery) + family_heirlooms = list(/obj/item/storage/medkit/ancient/heirloom, /obj/item/scalpel, /obj/item/hemostat, /obj/item/circular_saw, /obj/item/retractor, /obj/item/cautery, /obj/item/statuebust/hippocratic) mail_goodies = list( /obj/item/healthanalyzer/advanced = 15, diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index 39cbc0ccce7..bdbfd7d687c 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -26,7 +26,7 @@ /datum/job_department/medical, ) - family_heirlooms = list(/obj/item/reagent_containers/syringe) + family_heirlooms = list(/obj/item/reagent_containers/syringe, /obj/item/statuebust/hippocratic) mail_goodies = list( /obj/item/reagent_containers/cup/bottle/random_virus = 15,