From 591b51297d3857e0d88fe59877a290f577d696b6 Mon Sep 17 00:00:00 2001 From: moo <11748095+ExcessiveUseOfCobblestone@users.noreply.github.com> Date: Sun, 8 Sep 2019 19:00:35 -0400 Subject: [PATCH] Cobbduceus 1.1/X, Base(d) Healers (THIS KILLS TACTICAL KILLING AND CLONING???) (#46219) About The Pull Request Buffs C2 Healing I should have leaned to more healing initially, especially since they're damaging. Goal here is to make them more enticing. Dilutes Starting Meds / Borg Hydro Microdosing Perhaps this was the biggest issue in that your DEFAULTS carried way too much of the chem specifically designed for lower dosages so people were getting smacked with needless damage consistently. You can still make your own "pure" samples I guess, but I think you'll like the current values. Borgs can now switch between 5u/2u with altclick. Adds a C3 Diluent Specifically for Minor Brute/Burn Wouldn't make much sense to dilute it with air! Granibitaluri is a new C3 that slowly tops off your damage by order of brute then burn. The catch is you must be at 10 damage or less for the healing to apply. ODs at 50. This is the reagent all C2s are diluted with regardless of what they heal (meaning brute/burn chems will heal a tad better but only when you're about healed anyways). Why It's Good For The Game Buffed C2s to make them more viable as contenders to some of the more oddity avenues you guys were using. Dilutes C2s to make the roundstart items viable on their own without chemistry (or at least a chem master). Same with Borg Microdosing option. Added the C3 since it was suggested by zxaber to have a form of healing more minor damage without going through the lengths of surgery. Sorry in advance silicon players, the solutions are still pure in your hypo! Changelog cl Anarcho-Capitalistabital-by add: In General, Buffs healing thoroughput of C2s. You can stop paying your cloners overtime now! tweak: The roundstart C2 methods are now diluted with a new reagent, Granibitaluri. tweak: The borghypo now can switch to "microdosing", which is 2u transfer via AltClick add: Granibitaluri is a C3 (no downside!!!) that tops off your brute THEN burn damage if they are at or below 10 damage. /cl Thank you guys for being so patient and providing constructive feedback! G-g-g-good thing coders "play" haha! --- .../reagents/cat2_medicine_reagents.dm | 24 ++++++++++------- .../chemistry/reagents/medicine_reagents.dm | 26 ++++++++++++++++++- .../reagents/chemistry/recipes/medicine.dm | 7 +++++ .../reagents/reagent_containers/borghydro.dm | 11 ++++++++ .../reagents/reagent_containers/glass.dm | 14 +++++----- .../reagents/reagent_containers/medigel.dm | 8 +++--- .../reagents/reagent_containers/patch.dm | 8 +++--- .../reagents/reagent_containers/pill.dm | 4 +-- .../reagents/reagent_containers/syringes.dm | 10 +++---- 9 files changed, 79 insertions(+), 33 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index ddf86cc4411..ef5fea1f73e 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -1,6 +1,7 @@ // Category 2 medicines are medicines that have an ill effect regardless of volume/OD to dissuade doping. Mostly used as emergency chemicals OR to convert damage (and heal a bit in the process). The type is used to prompt borgs that the medicine is harmful. /datum/reagent/medicine/C2 harmful = TRUE + metabolization_rate = 0.2 /******BRUTE******/ /*Suffix: -bital*/ @@ -37,8 +38,8 @@ reagent_state = SOLID /datum/reagent/medicine/C2/libital/on_mob_life(mob/living/carbon/M) - M.adjustOrganLoss(ORGAN_SLOT_LIVER, 1*REM) - M.adjustBruteLoss(-1*REM) + M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.3*REM) + M.adjustBruteLoss(-3*REM) ..() return TRUE @@ -75,13 +76,14 @@ var/message_cd = 0 /datum/reagent/medicine/C2/aiuri/on_mob_life(mob/living/carbon/M) - M.adjustFireLoss(-0.5*REM) + M.adjustFireLoss(-2*REM) M.adjustOrganLoss(ORGAN_SLOT_EYES,0.25*REM) ..() return TRUE /******OXY******/ /*Suffix: -mol*/ +#define CONVERMOL_RATIO 5 //# Oxygen damage to result in 1 tox /datum/reagent/medicine/C2/convermol name = "Convermol" @@ -94,9 +96,9 @@ /datum/reagent/medicine/C2/convermol/on_mob_life(mob/living/carbon/human/M) var/oxycalc = 2.5*REM*current_cycle if(!overdosed) - oxycalc = min(oxycalc,M.getOxyLoss()+(current_cycle*0.1)) //if NOT overdosing, we lower our toxdamage to only the damage we actually healed with a minimum of 0.1*current_cycle. IE if we only heal 10 oxygen damage but we COULD have healed 20, we will only take toxdamage for the 10. We would take the toxdamage for the extra 10 if we were overdosing. + oxycalc = min(oxycalc,M.getOxyLoss()+0.5) //if NOT overdosing, we lower our toxdamage to only the damage we actually healed with a minimum of 0.1*current_cycle. IE if we only heal 10 oxygen damage but we COULD have healed 20, we will only take toxdamage for the 10. We would take the toxdamage for the extra 10 if we were overdosing. M.adjustOxyLoss(-oxycalc, 0) - M.adjustToxLoss(oxycalc/2.5, 0) + M.adjustToxLoss(oxycalc/CONVERMOL_RATIO, 0) if(prob(current_cycle) && M.losebreath) M.losebreath-- ..() @@ -107,6 +109,8 @@ ..() return TRUE +#undef CONVERMOL_RATIO + /datum/reagent/medicine/C2/tirimol name = "Tirimol" description = "An oxygen deprivation medication that causes fatigue. Prolonged exposure causes the patient to fall asleep once the medicine metabolizes." @@ -114,7 +118,7 @@ var/drowsycd = 0 /datum/reagent/medicine/C2/tirimol/on_mob_life(mob/living/carbon/human/M) - M.adjustOxyLoss(-1) + M.adjustOxyLoss(-3) M.adjustStaminaLoss(2) if(drowsycd && (world.time > drowsycd)) M.drowsyness += 10 @@ -126,7 +130,7 @@ /datum/reagent/medicine/C2/tirimol/on_mob_end_metabolize(mob/living/L) if(current_cycle > 20) - L.Sleeping(200) + L.Sleeping(10 SECONDS) ..() /******TOXIN******/ @@ -170,7 +174,7 @@ return TRUE -/datum/reagent/medicine/C2/multiver //made up chem, it's a PALLETTE cleanser hehe +/datum/reagent/medicine/C2/multiver //amplified with MULTIple medicines name = "Multiver" description = "An antitoxin that scales with the more unique medicines in the body as well as purges chems (including itself). Causes lung damage." @@ -187,7 +191,7 @@ ..() return TRUE -/datum/reagent/medicine/C2/syriniver +/datum/reagent/medicine/C2/syriniver //Inject >> SYRINge name = "Syriniver" description = "A potent antidote for intravenous use with a narrow therapeutic index, it is considered an active prodrug of musiver." reagent_state = LIQUID @@ -226,7 +230,7 @@ ..() . = 1 -/datum/reagent/medicine/C2/musiver +/datum/reagent/medicine/C2/musiver //MUScles name = "Musiver" description = "The active metabolite of syriniver. Causes muscle weakness on overdose" reagent_state = LIQUID diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index d0a85a830e0..90f222c4abf 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -1223,7 +1223,7 @@ M.adjustFireLoss(3*REM, 0.) M.adjust_bodytemperature(-35 * TEMPERATURE_DAMAGE_COEFFICIENT, 50) ..() - + /datum/reagent/medicine/silibinin/on_mob_life(mob/living/carbon/M) M.adjustOrganLoss(ORGAN_SLOT_LIVER, -2)//Add a chance to cure liver trauma once implemented. ..() @@ -1260,3 +1260,27 @@ M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5) ..() . = 1 + +/datum/reagent/medicine/granibitaluri + name = "Granibitaluri" //achieve "GRANular" amounts of C2 + description = "A chemical solution useful as a diluent for more potent medicine. Especially useful when combined with brute/burn medication. Large amounts can cause fluid to appear in both the lungs and the heart." + reagent_state = LIQUID + overdose_threshold = 50 + metabolization_rate = 0.2 //same as C2s + +/datum/reagent/medicine/granibitaluri/on_mob_life(mob/living/carbon/M) + var/tdamage = M.getBruteLoss() //1 var + 2 proccall < 4 proccalls + if(tdamage && tdamage <= 10) + M.adjustBruteLoss(-0.1) + else + tdamage = M.getFireLoss() + if(tdamage && tdamage <= 10) + M.adjustFireLoss(-0.1) + ..() + return TRUE + +/datum/reagent/medicine/granibitaluri/overdose_process(mob/living/M) + . = TRUE + M.adjustOrganLoss(ORGAN_SLOT_HEART,0.2) + M.adjustOrganLoss(ORGAN_SLOT_LUNGS,0.2) + ..() diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index aaacb73884c..5a95ab9e680 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -225,3 +225,10 @@ id = /datum/reagent/medicine/trophazole results = list(/datum/reagent/medicine/trophazole = 4) required_reagents = list(/datum/reagent/copper = 1, /datum/reagent/acetone = 2, /datum/reagent/phosphorus = 1) + +/datum/chemical_reaction/granibitaluri + name = "Granibitaluri" + id = /datum/reagent/medicine/granibitaluri + results = list(/datum/reagent/medicine/granibitaluri = 1) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/space_cleaner/sterilizine = 1) //haha guys totally not some sort of saline reference! + required_temp = 373 diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index ee24757f55f..51ec69a214e 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -138,6 +138,7 @@ Borg Hypospray . += DescribeContents() //Because using the standardized reagents datum was just too cool for whatever fuckwit wrote this var/datum/reagent/loaded = modes[mode] . += "Currently loaded: [initial(loaded.name)]. [initial(loaded.description)]" + . += "Alt+Click to change transfer amount. Currently set to [amount_per_transfer_from_this == 5 ? "dose normally (5u)" : "microdose (2u)"]." /obj/item/reagent_containers/borghypo/proc/DescribeContents() . = list() @@ -152,6 +153,16 @@ Borg Hypospray if(empty) . += "It is currently empty! Allow some time for the internal synthesizer to produce more." +/obj/item/reagent_containers/borghypo/AltClick(mob/living/user) + . = ..() + if(user.stat == DEAD || user != loc) + return //IF YOU CAN HEAR ME SET MY TRANSFER AMOUNT TO 1 + if(amount_per_transfer_from_this == 5) + amount_per_transfer_from_this = 2 + else + amount_per_transfer_from_this = 5 + to_chat(user,"[src] is now set to [amount_per_transfer_from_this == 5 ? "dose normally" : "microdose"].") + /obj/item/reagent_containers/borghypo/hacked icon_state = "borghypo_s" reagent_ids = list (/datum/reagent/toxin/acid/fluacid, /datum/reagent/toxin/mutetoxin, /datum/reagent/toxin/cyanide, /datum/reagent/toxin/sodium_thiopental, /datum/reagent/toxin/heparin, /datum/reagent/toxin/lexorin) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index cf5202d4b36..d92cac0a510 100755 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -223,19 +223,19 @@ list_reagents = list(/datum/reagent/toxin/slimejelly = 50) /obj/item/reagent_containers/glass/beaker/large/libital - name = "libital reserve tank" - list_reagents = list(/datum/reagent/medicine/C2/libital = 50) + name = "libital reserve tank (diluted)" + list_reagents = list(/datum/reagent/medicine/C2/libital = 10,/datum/reagent/medicine/granibitaluri = 40) /obj/item/reagent_containers/glass/beaker/large/aiuri - name = "aiuri reserve tank" - list_reagents = list(/datum/reagent/medicine/C2/aiuri = 50) + name = "aiuri reserve tank (diluted)" + list_reagents = list(/datum/reagent/medicine/C2/aiuri = 10, /datum/reagent/medicine/granibitaluri = 40) /obj/item/reagent_containers/glass/beaker/large/multiver - name = "multiver reserve tank" - list_reagents = list(/datum/reagent/medicine/C2/multiver = 50) + name = "multiver reserve tank (diluted)" + list_reagents = list(/datum/reagent/medicine/C2/multiver = 10, /datum/reagent/medicine/granibitaluri = 40) /obj/item/reagent_containers/glass/beaker/large/epinephrine - name = "epinephrine reserve tank" + name = "epinephrine reserve tank (diluted)" list_reagents = list(/datum/reagent/medicine/epinephrine = 50) /obj/item/reagent_containers/glass/beaker/instabitaluri diff --git a/code/modules/reagents/reagent_containers/medigel.dm b/code/modules/reagents/reagent_containers/medigel.dm index d736fbe451a..9ff2f00db50 100644 --- a/code/modules/reagents/reagent_containers/medigel.dm +++ b/code/modules/reagents/reagent_containers/medigel.dm @@ -68,15 +68,15 @@ /obj/item/reagent_containers/medigel/libital name = "medical gel (libital)" - desc = "A medical gel applicator bottle, designed for precision application, with an unscrewable cap. This one contains libital, for treating cuts and bruises. Libital does minor liver damage." + desc = "A medical gel applicator bottle, designed for precision application, with an unscrewable cap. This one contains libital, for treating cuts and bruises. Libital does minor liver damage. Diluted with Granibitaluri." icon_state = "brutegel" - list_reagents = list(/datum/reagent/medicine/C2/libital = 60) + list_reagents = list(/datum/reagent/medicine/C2/libital = 20, /datum/reagent/medicine/granibitaluri = 40) /obj/item/reagent_containers/medigel/aiuri name = "medical gel (aiuri)" - desc = "A medical gel applicator bottle, designed for precision application, with an unscrewable cap. This one contains aiuri, useful for treating burns. Aiuri does minor eye damage." + desc = "A medical gel applicator bottle, designed for precision application, with an unscrewable cap. This one contains aiuri, useful for treating burns. Aiuri does minor eye damage. Diluted with Granibitaluri" icon_state = "burngel" - list_reagents = list(/datum/reagent/medicine/C2/aiuri = 60) + list_reagents = list(/datum/reagent/medicine/C2/aiuri = 20, /datum/reagent/medicine/granibitaluri = 40) /obj/item/reagent_containers/medigel/instabitaluri name = "medical gel (instabitaluri)" diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index 7761fedd6e9..c22228e3814 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -29,14 +29,14 @@ /obj/item/reagent_containers/pill/patch/libital name = "libital patch (brute)" - desc = "A common pain reliever. Does minor liver damage." - list_reagents = list(/datum/reagent/medicine/C2/libital = 10) + desc = "A pain reliever. Does minor liver damage. Diluted with Granibitaluri." + list_reagents = list(/datum/reagent/medicine/C2/libital = 2, /datum/reagent/medicine/granibitaluri = 8) //10 iterations icon_state = "bandaid_brute" /obj/item/reagent_containers/pill/patch/aiuri name = "aiuri patch (burn)" - desc = "Helps with burn injuries. Does minor eye damage." - list_reagents = list(/datum/reagent/medicine/C2/aiuri = 10) + desc = "Helps with burn injuries. Does minor eye damage. Diluted with Granibitaluri." + list_reagents = list(/datum/reagent/medicine/C2/aiuri = 1, /datum/reagent/medicine/granibitaluri = 9) icon_state = "bandaid_burn" /obj/item/reagent_containers/pill/patch/instabitaluri diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index c297e487854..004df33f20c 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -116,9 +116,9 @@ /obj/item/reagent_containers/pill/multiver name = "multiver pill" - desc = "Neutralizes many common toxins." + desc = "Neutralizes many common toxins and scales with unique medicine in the system. Diluted with granibitaluri." icon_state = "pill17" - list_reagents = list(/datum/reagent/medicine/C2/multiver = 10) + list_reagents = list(/datum/reagent/medicine/C2/multiver = 2, /datum/reagent/medicine/granibitaluri = 8) rename_with_volume = TRUE /obj/item/reagent_containers/pill/epinephrine diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 70eaec30313..5f4716b52a6 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -181,13 +181,13 @@ /obj/item/reagent_containers/syringe/multiver name = "syringe (multiver)" - desc = "Contains multiver." - list_reagents = list(/datum/reagent/medicine/C2/multiver = 15) + desc = "Contains multiver. Diluted with granibitaluri." + list_reagents = list(/datum/reagent/medicine/C2/multiver = 6, /datum/reagent/medicine/granibitaluri = 9) /obj/item/reagent_containers/syringe/convermol name = "syringe (convermol)" - desc = "Contains convermol." - list_reagents = list(/datum/reagent/medicine/C2/convermol = 15) + desc = "Contains convermol. Diluted with granibitaluri." + list_reagents = list(/datum/reagent/medicine/C2/convermol = 6, /datum/reagent/medicine/granibitaluri = 9) /obj/item/reagent_containers/syringe/antiviral name = "syringe (spaceacillin)" @@ -276,4 +276,4 @@ /obj/item/reagent_containers/syringe/syriniver name = "syringe (syriniver)" desc = "Contains syriniver, used to treat toxins and purge chemicals.The tag on the syringe states 'Inject one time per minute'" - list_reagents = list(/datum/reagent/medicine/C2/syriniver = 15) \ No newline at end of file + list_reagents = list(/datum/reagent/medicine/C2/syriniver = 15)