diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 37207ba5ecd..72caea5c2e7 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -197,9 +197,134 @@ name = "roller bed" icon = 'icons/obj/rollerbed.dmi' icon_state = "standard_down" + anchored = FALSE var/base_state = "standard" var/item_bedpath = /obj/item/roller - anchored = 0 + var/obj/item/reagent_containers/beaker + var/iv_attached = 0 + var/iv_stand = TRUE + +/obj/structure/bed/roller/update_icon() + overlays.Cut() + if(density) + icon_state = "[base_state]_up" + else + icon_state = "[base_state]_down" + if(beaker) + var/image/iv = image(icon, "iv[iv_attached]") + var/percentage = round((beaker.reagents.total_volume / beaker.volume) * 100, 25) + var/image/filling = image(icon, "iv_filling[percentage]") + filling.color = beaker.reagents.get_color() + iv.overlays += filling + if(percentage < 25) + iv.overlays += image(icon, "light_low") + if(density) + iv.pixel_y = 6 + overlays += iv + +/obj/structure/bed/roller/attackby(obj/item/I, mob/user) + if(iswrench(I) || istype(I, /obj/item/stack) || iswirecutter(I)) + return 1 + if(iv_stand && !beaker && istype(I, /obj/item/reagent_containers)) + if(!user.unEquip(I, target = src)) + return + to_chat(user, SPAN_NOTICE("You attach \the [I] to \the [src].")) + beaker = I + update_icon() + return 1 + ..() + +/obj/structure/bed/roller/attack_hand(mob/living/user) + if(beaker && !buckled_mob) + remove_beaker(user) + else + ..() + +/obj/structure/bed/roller/proc/collapse() + visible_message("[usr] collapses \the [src].") + new item_bedpath(get_turf(src)) + qdel(src) + +/obj/structure/bed/roller/process() + if(!iv_attached || !buckled_mob || !beaker) + return PROCESS_KILL + + if(SSprocessing.times_fired % 2) + return + + if(beaker.volume > 0) + beaker.reagents.trans_to_mob(buckled_mob, beaker.amount_per_transfer_from_this, CHEM_BLOOD) + update_icon() + +/obj/structure/bed/roller/proc/remove_beaker(mob/user) + to_chat(user, SPAN_NOTICE("You detach \the [beaker] from \the [src].")) + iv_attached = FALSE + beaker.dropInto(loc) + beaker = null + update_icon() + +/obj/structure/bed/roller/proc/attach_iv(mob/living/carbon/human/target, mob/user) + if(!beaker) + return + if(do_mob(user, target, 1 SECOND)) + visible_message("[user] attaches [target] to the IV on \the [src].") + iv_attached = TRUE + update_icon() + START_PROCESSING(SSprocessing, src) + +/obj/structure/bed/roller/proc/detach_iv(mob/living/carbon/human/target, mob/user) + visible_message("[user] takes [target] off the IV on \the [src].") + iv_attached = FALSE + update_icon() + STOP_PROCESSING(SSprocessing, src) + +/obj/structure/bed/roller/MouseDrop(over_object, src_location, over_location) + ..() + if(use_check(usr) || !Adjacent(usr)) + return + if(!(ishuman(usr) || isrobot(usr))) + return + if(over_object == buckled_mob && beaker) + if(iv_attached) + detach_iv(buckled_mob, usr) + else + attach_iv(buckled_mob, usr) + return + if(ishuman(over_object)) + if(user_buckle_mob(over_object, usr)) + attach_iv(buckled_mob, usr) + return + if(beaker) + remove_beaker(usr) + return + if(buckled_mob) + return + collapse() + +/obj/structure/bed/roller/Move() + ..() + if(makes_rolling_sound) + playsound(src, 'sound/effects/roll.ogg', 100, 1) + if(buckled_mob) + if(buckled_mob.buckled == src) + buckled_mob.forceMove(src.loc) + else + buckled_mob = null + +/obj/structure/bed/roller/post_buckle_mob(mob/living/M) + . = ..() + if(M == buckled_mob) + density = TRUE + M.pixel_y = 6 + M.old_y = 6 + update_icon() + else + density = FALSE + M.pixel_y = 0 + M.old_y = 0 + if(iv_attached) + detach_iv(M, usr) + update_icon() /obj/structure/bed/roller/hover name = "medical hoverbed" @@ -212,23 +337,6 @@ .=..() set_light(2,1,LIGHT_COLOR_CYAN) -/obj/structure/bed/roller/update_icon() - return // Doesn't care about material or anything else. - -/obj/structure/bed/roller/attackby(obj/item/W as obj, mob/user as mob) - if(W.iswrench() || istype(W,/obj/item/stack) || W.iswirecutter()) - return - else if(istype(W,/obj/item/roller_holder)) - if(buckled_mob) - user_unbuckle_mob(user) - else - visible_message("[user] collapses \the [src.name].") - new/obj/item/roller(get_turf(src)) - spawn(0) - qdel(src) - return - ..() - /obj/item/roller name = "roller bed" desc = "A collapsed roller bed that can be carried around." @@ -285,39 +393,3 @@ R.add_fingerprint(user) qdel(held) held = null - - -/obj/structure/bed/roller/Move() - ..() - if(makes_rolling_sound) - playsound(src, 'sound/effects/roll.ogg', 100, 1) - if(buckled_mob) - if(buckled_mob.buckled == src) - buckled_mob.forceMove(src.loc) - else - buckled_mob = null - -/obj/structure/bed/roller/post_buckle_mob(mob/living/M as mob) - if(M == buckled_mob) - M.pixel_y = 6 - M.old_y = 6 - density = 1 - icon_state = "[base_state]_up" - else - M.pixel_y = 0 - M.old_y = 0 - density = 0 - icon_state = "[base_state]_down" - - return ..() - -/obj/structure/bed/roller/MouseDrop(over_object, src_location, over_location) - ..() - if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src)))) - if(!ishuman(usr)) return - if(buckled_mob) return 0 - visible_message("[usr] collapses \the [src.name].") - new item_bedpath(get_turf(src)) - spawn(0) - qdel(src) - return diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 4c881b78e83..4cb9c78ec7a 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -18,7 +18,6 @@ var/obj/item/organ/internal/parasite/P = M.internal_organs_by_name["blackkois"] if((alien == IS_VAURCA) || (istype(P) && P.stage >= 3)) M.heal_organ_damage(1.2 * removed, 1.2 * removed) - M.adjustToxLoss(-1.2 * removed) M.adjustNutritionLoss(-nutriment_factor * removed) M.add_chemical_effect(CE_BLOODRESTORE, 6 * removed) @@ -833,11 +832,6 @@ glass_name = "glass of lime juice" glass_desc = "A glass of sweet-sour lime juice" -/datum/reagent/drink/limejuice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) - ..() - if(alien != IS_DIONA) - M.adjustToxLoss(-0.5 * removed) - /datum/reagent/drink/orangejuice name = "Orange juice" id = "orangejuice" @@ -972,14 +966,6 @@ glass_name = "glass of dyn juice" glass_desc = "Juice from a dyn leaf. Good for you, but normally not consumed undiluted." -/datum/reagent/drink/dynjuice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) - ..() - M.adjustToxLoss(-0.3 * removed) - - -/datum/reagent/drink/dynjuice/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.adjustToxLoss(-0.3 * removed) - /datum/reagent/drink/dynjuice/hot name = "Dyn Tea" id = "dynhot" @@ -1092,11 +1078,6 @@ var/last_taste_time = -100 -/datum/reagent/drink/tea/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) - ..() - M.adjustToxLoss(-0.1 * removed) - - /datum/reagent/drink/tea/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) if(last_taste_time + 800 < world.time) // Not to spam message @@ -1104,8 +1085,6 @@ last_taste_time = world.time metabolism = REM * 0.33 M.adjustToxLoss(1.5 * removed) - else - M.adjustToxLoss(-0.1 * removed) /datum/reagent/drink/tea/icetea name = "Iced Tea" @@ -1955,7 +1934,6 @@ if(alien != IS_DIONA) M.adjustOxyLoss(-4 * removed) M.heal_organ_damage(2 * removed, 2 * removed) - M.adjustToxLoss(-2 * removed) if(M.dizziness) M.dizziness = max(0, M.dizziness - 15) if(M.confused) @@ -2151,11 +2129,6 @@ var/last_taste_time = -100 -/datum/reagent/drink/toothpaste/teathpaste/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) //contains tea. Gotta get those tea effects. - ..() - M.adjustToxLoss(-0.1 * removed) - - /datum/reagent/drink/toothpaste/teathpaste/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) if(last_taste_time + 800 < world.time) // Not to spam message @@ -2163,8 +2136,6 @@ last_taste_time = world.time metabolism = REM * 0.33 M.adjustToxLoss(1.5 * removed) - else - M.adjustToxLoss(-0.1 * removed) /* Alcohol */ @@ -4462,11 +4433,6 @@ var/last_taste_time = -100 -/datum/reagent/alcohol/butanol/trizkizki_tea/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) //contains tea. Gotta get those tea effects. - ..() - M.adjustToxLoss(-0.1 * removed) - - /datum/reagent/alcohol/butanol/trizkizki_tea/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) if(last_taste_time + 800 < world.time) // Not to spam message @@ -4474,8 +4440,6 @@ last_taste_time = world.time metabolism = REM * 0.33 M.adjustToxLoss(1.5 * removed) - else - M.adjustToxLoss(-0.1 * removed) //ZZZZOOOODDDDAAAAA diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index ac1f68ad49d..bbad9f96c81 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -12,16 +12,11 @@ breathe_mul = 0.5 scannable = 1 taste_description = "bitterness" - var/datum/modifier/modifier /datum/reagent/norepinephrine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) M.add_chemical_effect(CE_STABLE) M.add_chemical_effect(CE_PAINKILLER, 25) -/datum/reagent/norepinephrine/Destroy() - QDEL_NULL(modifier) - return ..() - /datum/reagent/bicaridine name = "Bicaridine" id = "bicaridine" @@ -163,31 +158,7 @@ var/power = 1 + Clamp((get_temperature() - (T0C + 20))*0.1,-0.5,0.5) //Heals 10% more brute and less burn for every 1 celcius above 20 celcius, up 50% more/less. //Heals 10% more burn and less brute for every 1 celcius below 20 celcius, up to 50% more/less. - M.adjustOxyLoss(-6 * removed) M.heal_organ_damage(3 * removed * power,3 * removed * power) - M.adjustToxLoss(-3 * removed) - -/datum/reagent/atropine - name = "Atropine" - id = "atropine" - description = "Atropine is an emergency stabilizing reagent designed to heal suffocation, blunt trauma, and burns in critical condition. Side effects include toxins increase, muscle weakness, and increased heartrate." - reagent_state = LIQUID - metabolism = 1 - color = "#FF40FF" - scannable = 1 - taste_description = "bitterness" - breathe_mul = 0 - -/datum/reagent/atropine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/reagent_strength = Clamp(1 - (M.health/100),0.1,2) - M.adjustOxyLoss(-8 * removed * reagent_strength) - M.adjustBruteLoss(-8 * removed * reagent_strength) - M.adjustFireLoss(-8 * removed * reagent_strength) - M.adjustToxLoss(2 * removed) - M.add_chemical_effect(CE_PULSE, 1) - if(prob(10)) - to_chat(M, span("warning", "Your muscles spasm and you find yourself unable to stand!")) - M.Weaken(3) /datum/reagent/cryoxadone name = "Cryoxadone" @@ -542,7 +513,6 @@ M.adjustToxLoss(115 * removed) // Tested numbers myself else M.apply_radiation(-70 * removed) - M.adjustToxLoss(-10 * removed) if(prob(60)) M.take_organ_damage(4 * removed, 0) @@ -1348,7 +1318,7 @@ M.adjustCloneLoss(-20 * removed) M.adjustOxyLoss(-2 * removed) M.heal_organ_damage(20 * removed, 20 * removed) - M.adjustToxLoss(-20 * removed) + M.adjustToxLoss(-1 * removed) if(dose > 3) M.status_flags &= ~DISFIGURED if(dose > 10) diff --git a/html/changelogs/mattatlas-nerfmed.yml b/html/changelogs/mattatlas-nerfmed.yml new file mode 100644 index 00000000000..b17507a4e4f --- /dev/null +++ b/html/changelogs/mattatlas-nerfmed.yml @@ -0,0 +1,43 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: MattAtlas + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Roller beds now have integrated IVs." + - rscdel: "Atropine has been removed." + - tweak: "Most random chemicals that healed organ damage - like tea - no longer do so. Rest assured though, medical chemicals that heal organ damage still do." diff --git a/icons/obj/rollerbed.dmi b/icons/obj/rollerbed.dmi index 984e5041d5e..7100e6da290 100644 Binary files a/icons/obj/rollerbed.dmi and b/icons/obj/rollerbed.dmi differ