diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index beeda302eb..be8f025922 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -426,4 +426,6 @@ #define EXAMINE_SKIPARMS 0x0020 #define EXAMINE_SKIPHANDS 0x0040 #define EXAMINE_SKIPLEGS 0x0080 -#define EXAMINE_SKIPFEET 0x0100 \ No newline at end of file +#define EXAMINE_SKIPFEET 0x0100 + +#define MAX_NUTRITION 500 \ No newline at end of file diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm index a76311c335..e532396176 100644 --- a/code/game/gamemodes/changeling/powers/absorb.dm +++ b/code/game/gamemodes/changeling/powers/absorb.dm @@ -3,11 +3,11 @@ desc = "Permits us to syphon the DNA from a human. They become one with us, and we become stronger if they were of our kind." ability_icon_state = "ling_absorb_dna" genomecost = 0 - verbpath = /mob/proc/changeling_absorb_dna + verbpath = /mob/living/proc/changeling_absorb_dna //Absorbs the victim's DNA. Requires a strong grip on the victim. //Doesn't cost anything as it's the most basic ability. -/mob/proc/changeling_absorb_dna() +/mob/living/proc/changeling_absorb_dna() set category = "Changeling" set name = "Absorb DNA" @@ -67,8 +67,7 @@ to_chat(src, "We have absorbed [T]!") src.visible_message("[src] sucks the fluids from [T]!") to_chat(T, "You have been absorbed by the changeling!") - if(src.nutrition < 400) - src.nutrition = min((src.nutrition + T.nutrition), 400) + adjust_nutrition(T.nutrition) changeling.chem_charges += 10 if(changeling.readapts <= 0) changeling.readapts = 0 //SANITYYYYYY diff --git a/code/game/gamemodes/technomancer/spells/energy_siphon.dm b/code/game/gamemodes/technomancer/spells/energy_siphon.dm index 1bfcb4e2d2..21f7c6e1e7 100644 --- a/code/game/gamemodes/technomancer/spells/energy_siphon.dm +++ b/code/game/gamemodes/technomancer/spells/energy_siphon.dm @@ -83,7 +83,7 @@ #define SIPHON_CORE_TO_ENERGY 0.5 // This is called every tick, so long as a link exists between the target and the Technomancer. -/obj/item/weapon/spell/energy_siphon/proc/siphon(atom/movable/siphoning, mob/user) +/obj/item/weapon/spell/energy_siphon/proc/siphon(atom/movable/siphoning, mob/living/user) var/list/things_to_drain = things_to_siphon // Temporary list copy of what we're gonna steal from. var/charge_to_give = 0 // How much energy to give to the Technomancer at the end. var/flow_remaining = calculate_spell_power(flow_rate) @@ -141,7 +141,7 @@ if( (core.max_energy - core.energy) < charge_to_give ) // We have some overflow, if this is true. if(user.isSynthetic()) // Let's do something with it, if we're a robot. charge_to_give = charge_to_give - (core.max_energy - core.energy) - user.nutrition = min(user.nutrition + (charge_to_give / SIPHON_FBP_TO_ENERGY), 400) + user.adjust_nutrition(charge_to_give / SIPHON_FBP_TO_ENERGY) to_chat(user, "Redirected energy to internal microcell.") else to_chat(user, "Stolen [charge_to_give * CELLRATE] kJ.") diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index c5542777a2..86f3fe93da 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -384,7 +384,7 @@ spaceport_freebie = 0 last_spaceport_action = "" -/obj/machinery/computer/arcade/orion_trail/attack_hand(mob/user) +/obj/machinery/computer/arcade/orion_trail/attack_hand(mob/living/user) if(..()) return if(fuel <= 0 || food <=0 || settlers.len == 0) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index cef633f73a..5d24832be6 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -115,8 +115,8 @@ H.adjustBrainLoss(-(rand(1,3))) // Also recharge their internal battery. - if(H.isSynthetic() && H.nutrition < 450) - H.nutrition = min(H.nutrition+10, 450) + if(H.isSynthetic() && H.nutrition < MAX_NUTRITION) + H.nutrition = min(H.nutrition+10, MAX_NUTRITION) cell.use(7000/450*10) // And clear up radiation diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 45ad1fa5b8..198288311c 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -109,7 +109,7 @@ qdel(src) return -/obj/item/weapon/pen/crayon/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/pen/crayon/attack(mob/living/M as mob, mob/living/user as mob) if(M == user) to_chat(user, "You take a bite of the crayon and swallow it.") user.nutrition += 1 @@ -195,7 +195,7 @@ shadeColour = input(user, "Please select the shade colour.", "Marker colour") as color return -/obj/item/weapon/pen/crayon/marker/attack(mob/M as mob, mob/user as mob) +/obj/item/weapon/pen/crayon/marker/attack(mob/living/M as mob, mob/living/user as mob) if(M == user) to_chat(user, "You take a bite of the marker and swallow it.") user.nutrition += 1 diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 294c453524..f16cb7ea72 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -486,7 +486,7 @@ HALOGEN COUNTER - Radcount on mobs for(var/potential_color in S.slime_mutation) var/mob/living/simple_mob/slime/xenobio/slime = potential_color mutations.Add(initial(slime.slime_color)) - user.show_message("Potental to mutate into [english_list(mutations)] colors.
Extract potential: [S.cores]
Nutrition: [S.nutrition]/[S.get_max_nutrition()]") + user.show_message("Potental to mutate into [english_list(mutations)] colors.
Extract potential: [S.cores]
Nutrition: [S.nutrition]/[S.max_nutrition]") if (S.nutrition < S.get_starve_nutrition()) user.show_message("Warning: Subject is starving!") diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index a1a23bb3e5..1731710492 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -43,7 +43,7 @@ /obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user as mob) return -/obj/item/weapon/reagent_containers/food/snacks/attack(mob/M as mob, mob/user as mob, def_zone) +/obj/item/weapon/reagent_containers/food/snacks/attack(mob/living/M as mob, mob/user as mob, def_zone) if(reagents && !reagents.total_volume) to_chat(user, "None of [src] left!") user.drop_from_inventory(src) @@ -78,9 +78,6 @@ to_chat(M, "You take a bite of [src].") if (fullness > 350 && fullness <= 550) to_chat(M, "You unwillingly chew a bit of [src].") - if (fullness > (550 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat - to_chat(M, "You cannot force any more of [src] to go down your throat.") - return 0 else if(user.a_intent == I_HURT) return ..() @@ -108,11 +105,7 @@ to_chat(user, "\The [blocked] is in the way!") return - if (fullness <= (550 * (1 + M.overeatduration / 1000))) - user.visible_message("[user] attempts to feed [M] [src].") - else - user.visible_message("[user] cannot force anymore of [src] down [M]'s throat.") - return 0 + user.visible_message("[user] attempts to feed [M] [src].") user.setClickCooldown(user.get_attack_speed(src)) if(!do_mob(user, M)) return diff --git a/code/modules/mob/_modifiers/modifiers_misc.dm b/code/modules/mob/_modifiers/modifiers_misc.dm index 8e6a094910..e7af15895c 100644 --- a/code/modules/mob/_modifiers/modifiers_misc.dm +++ b/code/modules/mob/_modifiers/modifiers_misc.dm @@ -83,7 +83,7 @@ the artifact triggers the rage. /datum/modifier/berserk/on_applied() if(ishuman(holder)) // Most other mobs don't really use nutrition and can't get it back. - holder.nutrition = max(0, holder.nutrition - nutrition_cost) + holder.adjust_nutrition(-nutrition_cost) holder.visible_message("\The [holder] descends into an all consuming rage!") // End all stuns. diff --git a/code/modules/mob/_modifiers/unholy.dm b/code/modules/mob/_modifiers/unholy.dm index 730e57691c..64d7a99d38 100644 --- a/code/modules/mob/_modifiers/unholy.dm +++ b/code/modules/mob/_modifiers/unholy.dm @@ -184,7 +184,7 @@ if(ishuman(holder)) var/mob/living/carbon/human/H = holder var/starting_nutrition = H.nutrition - H.nutrition = max(0, H.nutrition - 10) + H.adjust_nutrition(-10) var/healing_amount = starting_nutrition - H.nutrition if(healing_amount < 0) // If you are eating enough to somehow outpace this, congratulations, you are gluttonous enough to gain a boon. healing_amount *= -2 diff --git a/code/modules/mob/living/carbon/alien/diona/life.dm b/code/modules/mob/living/carbon/alien/diona/life.dm index aa178f93c1..fe97e96674 100644 --- a/code/modules/mob/living/carbon/alien/diona/life.dm +++ b/code/modules/mob/living/carbon/alien/diona/life.dm @@ -6,16 +6,14 @@ var/turf/T = loc light_amount = T.get_lumcount() * 5 - nutrition += light_amount + adjust_nutrition(light_amount) - if(nutrition > 500) - nutrition = 500 if(light_amount > 2) //if there's enough light, heal adjustBruteLoss(-1) adjustFireLoss(-1) adjustToxLoss(-1) adjustOxyLoss(-1) - - + + if(!client) - handle_npc(src) + handle_npc(src) diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm index 3b57c6a5f7..0bd0ac89b1 100644 --- a/code/modules/mob/living/carbon/alien/life.dm +++ b/code/modules/mob/living/carbon/alien/life.dm @@ -28,7 +28,7 @@ var/rads = radiation/25 radiation -= rads - nutrition += rads + adjust_nutrition(rads) heal_overall_damage(rads,rads) adjustOxyLoss(-(rads)) adjustToxLoss(-(rads)) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 94dde27c45..ff72f96fac 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -37,9 +37,10 @@ . = ..() if(.) if(src.nutrition && src.stat != 2) - src.nutrition -= DEFAULT_HUNGER_FACTOR/10 + adjust_nutrition(-DEFAULT_HUNGER_FACTOR / 10) if(src.m_intent == "run") - src.nutrition -= DEFAULT_HUNGER_FACTOR/10 + adjust_nutrition(-DEFAULT_HUNGER_FACTOR / 10) + if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360) src.bodytemperature += 2 @@ -109,7 +110,7 @@ src.apply_damage(0.4 * shock_damage, BURN, BP_TORSO, used_weapon="Electrocution") //shock the torso more src.apply_damage(0.2 * shock_damage, BURN, null, used_weapon="Electrocution") //shock a random part! src.apply_damage(0.2 * shock_damage, BURN, null, used_weapon="Electrocution") //shock a random part! - + playsound(loc, "sparks", 50, 1, -1) if (shock_damage > 15) src.visible_message( diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 4e61c86399..176ec6a3de 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -27,7 +27,7 @@ if(can_feel_pain()) if(halloss >= 10) tally += (halloss / 10) //halloss shouldn't slow you down if you can't even feel it - var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80 + var/hungry = (MAX_NUTRITION - nutrition) / 5 if (hungry >= 70) tally += hungry/50 if(istype(buckled, /obj/structure/bed/chair/wheelchair)) diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index 3d0dbfc3bd..a0aa2363b8 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -302,7 +302,7 @@ var/delay_length = round(active_regen_delay * species.active_regen_mult) if(do_after(src,delay_length)) - nutrition -= 200 + adjust_nutrition(-200) for(var/obj/item/organ/I in internal_organs) if(I.robotic >= ORGAN_ROBOT) // No free robofix. @@ -345,5 +345,5 @@ active_regen = FALSE else to_chat(src, "Your regeneration is interrupted!") - nutrition -= 75 + adjust_nutrition(-75) active_regen = FALSE diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index db0ff10881..b206cca7e7 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -274,7 +274,7 @@ if(rad_organ && !rad_organ.is_broken()) var/rads = radiation/25 radiation -= rads - nutrition += rads + adjust_nutrition(rads) adjustBruteLoss(-(rads)) adjustFireLoss(-(rads)) adjustOxyLoss(-(rads)) @@ -786,7 +786,7 @@ if(bodytemperature < species.cold_level_1) //260.15 is 310.15 - 50, the temperature where you start to feel effects. if(nutrition >= 2) //If we are very, very cold we'll use up quite a bit of nutriment to heat us up. - nutrition -= 2 + adjust_nutrition(-2) var/recovery_amt = max((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), BODYTEMP_AUTORECOVERY_MINIMUM) //to_world("Cold. Difference = [body_temperature_difference]. Recovering [recovery_amt]") // log_debug("Cold. Difference = [body_temperature_difference]. Recovering [recovery_amt]") @@ -916,15 +916,7 @@ for(var/datum/modifier/mod in modifiers) if(!isnull(mod.metabolism_percent)) nutrition_reduction *= mod.metabolism_percent - - nutrition = max (0, nutrition - nutrition_reduction) - - if (nutrition > 450) - if(overeatduration < 600) //capped so people don't take forever to unfat - overeatduration++ - else - if(overeatduration > 1) - overeatduration -= 2 //doubled the unfat rate + adjust_nutrition(-nutrition_reduction) // TODO: stomach and bloodstream organ. if(!isSynthetic()) @@ -1448,7 +1440,7 @@ if(air_master.current_cycle%3==1) if(!(M.status_flags & GODMODE)) M.adjustBruteLoss(5) - nutrition += 10 + adjust_nutrition(10) /mob/living/carbon/human/proc/handle_changeling() if(mind && mind.changeling) diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm index 0e5fab2280..be8761c01a 100644 --- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm +++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm @@ -180,32 +180,32 @@ var/datum/species/shapeshifter/promethean/prometheans if(!(H.shoes || (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)))) for(var/obj/O in T) O.clean_blood() - H.nutrition = min(500, max(0, H.nutrition + rand(5, 15))) + H.adjust_nutrition(rand(5, 15)) if (istype(T, /turf/simulated)) var/turf/simulated/S = T T.clean_blood() S.dirt = 0 - H.nutrition = min(500, max(0, H.nutrition + rand(10, 20))) + H.adjust_nutrition(rand(10, 20)) if(H.clean_blood(1)) - H.nutrition = min(500, max(0, H.nutrition + rand(5, 15))) + H.adjust_nutrition(rand(5, 15)) if(H.r_hand) if(H.r_hand.clean_blood()) - H.nutrition = min(500, max(0, H.nutrition + rand(5, 15))) + H.adjust_nutrition(rand(5, 15)) if(H.l_hand) if(H.l_hand.clean_blood()) - H.nutrition = min(500, max(0, H.nutrition + rand(5, 15))) + H.adjust_nutrition(rand(5, 15)) if(H.head) if(H.head.clean_blood()) H.update_inv_head(0) - H.nutrition = min(500, max(0, H.nutrition + rand(5, 15))) + H.adjust_nutrition(rand(5, 15)) if(H.wear_suit) if(H.wear_suit.clean_blood()) H.update_inv_wear_suit(0) - H.nutrition = min(500, max(0, H.nutrition + rand(5, 15))) + H.adjust_nutrition(rand(5, 15)) if(H.w_uniform) if(H.w_uniform.clean_blood()) H.update_inv_w_uniform(0) - H.nutrition = min(500, max(0, H.nutrition + rand(5, 15))) + H.adjust_nutrition(rand(5, 15)) //End cleaning code. var/datum/gas_mixture/environment = T.return_air() @@ -288,8 +288,7 @@ var/datum/species/shapeshifter/promethean/prometheans if(ToxReg) strain_negation += to_pay * max(0, (1 - ToxReg.get_strain_percent())) - H.nutrition -= (3 * nutrition_cost) //Costs Nutrition when damage is being repaired, corresponding to the amount of damage being repaired. - H.nutrition = max(0, H.nutrition) //Ensure it's not below 0. + H.adjust_nutrition(-(3 * nutrition_cost)) // Costs Nutrition when damage is being repaired, corresponding to the amount of damage being repaired. var/agony_to_apply = ((1 / starve_mod) * (nutrition_cost - strain_negation)) //Regenerating damage causes minor pain over time, if the organs responsible are nonexistant or too high on strain. Small injures will be no issue, large ones will cause problems. diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 4e64d59d72..6e06efef0c 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -586,11 +586,9 @@ if(isturf(H.loc)) //else, there's considered to be no light var/turf/T = H.loc light_amount = T.get_lumcount() * 10 - H.nutrition += light_amount + H.adjust_nutrition(light_amount) H.shock_stage -= light_amount - if(H.nutrition > 450) - H.nutrition = 450 if(light_amount >= 3) //if there's enough light, heal H.adjustBruteLoss(-(round(light_amount/2))) H.adjustFireLoss(-(round(light_amount/2))) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 89ded4940c..0638df73e6 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1039,7 +1039,7 @@ default behaviour is: if(getBruteLoss() < 50) adjustBruteLoss(3) else - nutrition -= 40 + adjust_nutrition(-40) adjustToxLoss(-3) spawn(350) @@ -1302,6 +1302,9 @@ default behaviour is: /mob/living/proc/needs_to_breathe() return !isSynthetic() +/mob/living/proc/adjust_nutrition(amount) + nutrition = between(0, nutrition + amount, max_nutrition) + /mob/living/vv_get_header() . = ..() . += {" diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 8e3b9fb9a4..92416a25f3 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -18,6 +18,9 @@ var/brainloss = 0 //'Retardation' damage caused by someone hitting you in the head with a bible or being infected with brainrot. var/halloss = 0 //Hallucination damage. 'Fake' damage obtained through hallucinating or the holodeck. Sleeping should cause it to wear off. + var/nutrition = 400 + var/max_nutrition = MAX_NUTRITION + var/hallucination = 0 //Directly affects how long a mob will hallucinate for var/list/atom/hallucinations = list() //A list of hallucinated people that try to attack the mob. See /obj/effect/fake_attacker in hallucinations.dm diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm index 84af3fcc3c..21e4abcd48 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/consumption.dm @@ -1,8 +1,7 @@ // Handles hunger, starvation, growth, and eatting humans. -// Might be best to make this a /mob/living proc and override. -/mob/living/simple_mob/slime/xenobio/proc/adjust_nutrition(input, var/heal = 1) - nutrition = between(0, nutrition + input, get_max_nutrition()) +/mob/living/simple_mob/slime/xenobio/adjust_nutrition(input, var/heal = 1) + ..(input) if(input > 0) // Gain around one level per 50 nutrition. @@ -19,10 +18,6 @@ adjustOxyLoss(-input * 0.2) adjustCloneLoss(-input * 0.2) - -/mob/living/simple_mob/slime/xenobio/proc/get_max_nutrition() // Can't go above it - return is_adult ? 1200 : 1000 - /mob/living/simple_mob/slime/xenobio/proc/get_grow_nutrition() // Above it we grow, below it we can eat return is_adult ? 1000 : 800 diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm index 82e303c2aa..79144d704e 100644 --- a/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm +++ b/code/modules/mob/living/simple_mob/subtypes/slime/xenobio/xenobio.dm @@ -4,6 +4,7 @@ desc = "The most basic of slimes. The grey slime has no remarkable qualities, however it remains one of the most useful colors for scientists." layer = MOB_LAYER + 1 // Need them on top of other mobs or it looks weird when consuming something. ai_holder_type = /datum/ai_holder/simple_mob/xenobio_slime // This should never be changed for xenobio slimes. + max_nutrition = 1000 var/is_adult = FALSE // Slimes turn into adults when fed enough. Adult slimes are somewhat stronger, and can reproduce if fed enough. var/maxHealth_adult = 200 var/power_charge = 0 // Disarm attacks can shock someone if high/lucky enough. @@ -101,6 +102,7 @@ melee_damage_lower = round(melee_damage_lower * 2) // 20 melee_damage_upper = round(melee_damage_upper * 2) // 30 maxHealth = maxHealth_adult + max_nutrition = 1200 amount_grown = 0 update_icon() update_name() diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 6fab127084..27029f7e08 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -112,9 +112,7 @@ var/bodytemperature = 310.055 //98.7 F var/drowsyness = 0.0//Carbon var/charges = 0.0 - var/nutrition = 400.0//Carbon - var/overeatduration = 0 // How long this guy is overeating //Carbon var/paralysis = 0.0 var/stunned = 0.0 var/weakened = 0.0 diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 4d4b23c31d..de2ca99ff5 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -133,9 +133,9 @@ var/const/CE_STABLE_THRESHOLD = 0.5 // Without enough blood you slowly go hungry. if(blood_volume < BLOOD_VOLUME_SAFE) if(nutrition >= 300) - nutrition -= 10 + adjust_nutrition(-10) else if(nutrition >= 200) - nutrition -= 3 + adjust_nutrition(-3) //Bleeding out var/blood_max = 0 diff --git a/code/modules/organs/subtypes/machine.dm b/code/modules/organs/subtypes/machine.dm index fef02ada36..f0ee2eb824 100644 --- a/code/modules/organs/subtypes/machine.dm +++ b/code/modules/organs/subtypes/machine.dm @@ -19,7 +19,7 @@ /obj/item/organ/internal/cell/emp_act(severity) ..() - owner.nutrition = max(0, owner.nutrition - rand(10/severity, 50/severity)) + owner.adjust_nutrition(-rand(10 / severity, 50 / severity)) // Used for an MMI or posibrain being installed into a human. /obj/item/organ/internal/mmi_holder diff --git a/code/modules/power/cells/power_cells.dm b/code/modules/power/cells/power_cells.dm index 3638c625f1..ca6f96ec9b 100644 --- a/code/modules/power/cells/power_cells.dm +++ b/code/modules/power/cells/power_cells.dm @@ -130,7 +130,7 @@ used = TRUE desc += " This one has already been used." overlays.Cut() - target.nutrition += amount + target.adjust_nutrition(amount) user.custom_emote(message = "connects \the [src] to [user == target ? "their" : "[target]'s"] charging port, expending it.") /obj/item/weapon/cell/emergency_light diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index ef14388d9f..a12ceb38f5 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -76,7 +76,7 @@ var/start_nutrition = H.nutrition var/end_nutrition = 0 - H.nutrition -= rechargeamt / 15 + H.adjust_nutrition(-rechargeamt / 15) end_nutrition = H.nutrition diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 8f81ed16cd..2cd0519285 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -197,11 +197,11 @@ impact_effect_type = /obj/effect/temp_visual/impact_effect/monochrome_laser /obj/item/projectile/energy/florayield/on_hit(var/atom/target, var/blocked = 0) - var/mob/M = target + var/mob/living/M = target if(ishuman(target)) //These rays make plantmen fat. var/mob/living/carbon/human/H = M if((H.species.flags & IS_PLANT) && (M.nutrition < 500)) - M.nutrition += 30 + M.adjust_nutrition(30) else if (istype(target, /mob/living/carbon/)) M.show_message("The radiation beam dissipates harmlessly through your body.") else diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index 489378b533..24692b3243 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm @@ -44,7 +44,7 @@ if(alien == IS_SLIME) // Treat it like nutriment for the jello, but not equivalent. M.heal_organ_damage(0.2 * removed * volume_mod, 0) // More 'effective' blood means more usable material. - M.nutrition += 20 * removed * volume_mod + M.adjust_nutrition(20 * removed * volume_mod) M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) M.adjustToxLoss(removed / 2) // Still has some water in the form of plasma. return diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm index 3698839d74..fc44dbf9ee 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm @@ -138,7 +138,7 @@ /datum/reagent/ethanol/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) if(issmall(M)) removed *= 2 - M.nutrition += nutriment_factor * removed + M.adjust_nutrition(nutriment_factor * removed) var/strength_mod = 1 if(alien == IS_SKRELL) strength_mod *= 5 @@ -448,7 +448,7 @@ glass_icon = DRINK_ICON_NOISY /datum/reagent/sugar/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.nutrition += removed * 3 + M.adjust_nutrition(removed * 3) var/effective_dose = dose if(issmall(M)) 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 3d1a78f083..d536dc585e 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -45,7 +45,7 @@ if(IS_UNATHI) removed *= 0.5 if(issmall(M)) removed *= 2 // Small bodymass, more effect from lower volume. M.heal_organ_damage(0.5 * removed, 0) - M.nutrition += nutriment_factor * removed // For hunger and fatness + M.adjust_nutrition(nutriment_factor * removed) M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) /datum/reagent/nutriment/glucose @@ -382,10 +382,7 @@ overdose = REAGENTS_OVERDOSE /datum/reagent/lipozine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.nutrition = max(M.nutrition - 10 * removed, 0) - M.overeatduration = 0 - if(M.nutrition < 0) - M.nutrition = 0 + M.adjust_nutrition(-10 * removed) /* Non-food stuff like condiments */ @@ -653,7 +650,7 @@ return /datum/reagent/drink/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) - M.nutrition += nutrition * removed + M.adjust_nutrition(nutrition * removed) M.dizziness = max(0, M.dizziness + adj_dizzy) M.drowsyness = max(0, M.drowsyness + adj_drowsy) M.sleeping = max(0, M.sleeping + adj_sleepy) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 851521d430..5e2fed5c3e 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -519,7 +519,7 @@ return if(alien == IS_SLIME) if(dose >= 5) //Not effective in small doses, though it causes toxloss at higher ones, it will make the regeneration for brute and burn more 'efficient' at the cost of more nutrition. - M.nutrition -= removed * 2 + M.adjust_nutrition(removed * 2) M.adjustBruteLoss(-2 * removed) M.adjustFireLoss(-1 * removed) chem_effective = 0.5 @@ -547,7 +547,7 @@ if(alien == IS_SLIME) M.make_jittery(4) //Hyperactive fluid pumping results in unstable 'skeleton', resulting in vibration. if(dose >= 5) - M.nutrition = (M.nutrition - (removed * 2)) //Sadly this movement starts burning food in higher doses. + M.adjust_nutrition(-removed * 2) // Sadly this movement starts burning food in higher doses. ..() if(prob(5)) M.emote(pick("twitch", "blink_r", "shiver")) @@ -737,7 +737,7 @@ if(prob(10)) H.vomit(1) else if(H.nutrition > 30) - H.nutrition = max(0, H.nutrition - round(30 * removed)) + M.adjust_nutrition(-removed * 30) else H.adjustToxLoss(-10 * removed) // Carthatoline based, considering cost. @@ -1091,7 +1091,7 @@ M.make_jittery(5) if(dose >= 20 || M.toxloss >= 60) //Core disentigration, cellular mass begins treating itself as an enemy, while maintaining regeneration. Slime-cancer. M.adjustBrainLoss(2 * removed) - M.nutrition = max(H.nutrition - 20, 0) + M.adjust_nutrition(-20) if(M.bruteloss >= 60 && M.toxloss >= 60 && M.brainloss >= 30) //Total Structural Failure. Limbs start splattering. var/obj/item/organ/external/O = pick(H.organs) if(prob(20) && !istype(O, /obj/item/organ/external/chest/unbreakable/slime) && !istype(O, /obj/item/organ/external/groin/unbreakable/slime)) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index 135e8686cc..bee8702d0f 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -19,7 +19,7 @@ if(alien == IS_SLIME) removed *= 0.25 // Results in half the standard tox as normal. Prometheans are 'Small' for flaps. if(dose >= 10) - M.nutrition += strength * removed //Body has to deal with the massive influx of toxins, rather than try using them to repair. + M.adjust_nutrition(strength * removed) // Body has to deal with the massive influx of toxins, rather than try using them to repair. else M.heal_organ_damage((10/strength) * removed, (10/strength) * removed) //Doses of toxins below 10 units, and 10 strength, are capable of providing useful compounds for repair. M.adjustToxLoss(strength * removed) @@ -396,7 +396,7 @@ /datum/reagent/toxin/sifslurry/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(alien == IS_DIONA) // Symbiotic bacteria. - M.nutrition += strength * removed + M.adjust_nutrition(strength * removed) return else M.add_modifier(/datum/modifier/slow_pulse, 30 SECONDS) diff --git a/code/modules/spells/spellbook.dm b/code/modules/spells/spellbook.dm index 3ae280a65b..831d44ba2f 100644 --- a/code/modules/spells/spellbook.dm +++ b/code/modules/spells/spellbook.dm @@ -300,13 +300,11 @@ icon_state ="booksmoke" desc = "This book is overflowing with the dank arts." -/obj/item/weapon/spellbook/oneuse/smoke/recoil(mob/user as mob) +/obj/item/weapon/spellbook/oneuse/smoke/recoil(mob/living/user as mob) ..() to_chat(user, "Your stomach rumbles...") if(user.nutrition) - user.nutrition -= 200 - if(user.nutrition <= 0) - user.nutrition = 0 + user.adjust_nutrition(-200) /obj/item/weapon/spellbook/oneuse/blind spell = /spell/targeted/genetic/blind diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index ea7de6ccac..742af67d46 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -424,7 +424,7 @@ stage = 2 /datum/disease2/effect/hungry/activate(var/mob/living/carbon/mob,var/multiplier) - mob.nutrition = max(0, mob.nutrition - 200) + mob.adjust_nutrition(-200) /datum/disease2/effect/fridge name = "Reduced Circulation" diff --git a/code/modules/xenoarcheaology/effects/heal.dm b/code/modules/xenoarcheaology/effects/heal.dm index b195c736c1..39bb09d04e 100644 --- a/code/modules/xenoarcheaology/effects/heal.dm +++ b/code/modules/xenoarcheaology/effects/heal.dm @@ -17,7 +17,7 @@ affecting.heal_damage(25 * weakness, 25 * weakness) //H:heal_organ_damage(25, 25) H.vessel.add_reagent("blood",5) - H.nutrition += 50 * weakness + H.adjust_nutrition(50 * weakness) H.adjustBrainLoss(-25 * weakness) H.radiation -= min(H.radiation, 25 * weakness) H.bodytemperature = initial(H.bodytemperature) diff --git a/code/modules/xenoarcheaology/effects/hurt.dm b/code/modules/xenoarcheaology/effects/hurt.dm index fb38214e23..14aff4e624 100644 --- a/code/modules/xenoarcheaology/effects/hurt.dm +++ b/code/modules/xenoarcheaology/effects/hurt.dm @@ -14,6 +14,7 @@ C.adjustFireLoss(rand(5,25) * weakness) C.adjustBrainLoss(rand(1,5) * weakness) C.apply_effect(25 * weakness, IRRADIATE) + C.adjust_nutrition(-50 * weakness) C.nutrition -= min(50 * weakness, C.nutrition) C.make_dizzy(6 * weakness) C.weakened += 6 * weakness diff --git a/html/changelogs/neerti_all_the_food.yml b/html/changelogs/neerti_all_the_food.yml new file mode 100644 index 0000000000..f0c1b4ab61 --- /dev/null +++ b/html/changelogs/neerti_all_the_food.yml @@ -0,0 +1,36 @@ +################################ +# 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 +################################# + +# Your name. +author: Neerti + +# 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: "You can now eat as much food as you want, even while 'full'."