mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-29 08:11:11 +01:00
[MIRROR] Nutrition fix (#11001)
Co-authored-by: Cameron Lennox <killer65311@gmail.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
co-authored by
Cameron Lennox
Kashargul
parent
c0112761bd
commit
991f558472
@@ -1,6 +1,9 @@
|
||||
#define GROWMODE_SHRINK 1
|
||||
#define GROWMODE_GROW 2
|
||||
|
||||
#define GROW_MULTIPLIER 5
|
||||
#define SHRINK_MULTIPLIER 0.3
|
||||
|
||||
/datum/component/nutrition_size_change
|
||||
var/mob/living/owner
|
||||
var/grow_mode = 0 // Don't use base component
|
||||
@@ -28,24 +31,18 @@
|
||||
owner.nutrition = 0.1
|
||||
if(owner.nutrition <= 0)
|
||||
return
|
||||
// Species controls hunger rate for humans, otherwise use defaults
|
||||
var/nutrition_reduction = DEFAULT_HUNGER_FACTOR
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
nutrition_reduction = H.species.hunger_factor
|
||||
// Modifiers can increase or decrease nutrition cost
|
||||
for(var/datum/modifier/mod in owner.modifiers)
|
||||
if(!isnull(mod.metabolism_percent))
|
||||
nutrition_reduction *= mod.metabolism_percent
|
||||
// Time to change size!
|
||||
if(owner.nutrition > 1000 && grow_mode == GROWMODE_GROW) //Removing the strict check against normal max/min size to support dorms/VR oversizing
|
||||
nutrition_reduction *= 5
|
||||
var/nutrition_multiplier = get_nutrition_multiplier()
|
||||
if(nutrition_multiplier == GROW_MULTIPLIER) //Removing the strict check against normal max/min size to support dorms/VR oversizing
|
||||
owner.resize(owner.size_multiplier+0.01, animate = FALSE, uncapped = owner.has_large_resize_bounds()) //Bringing this code in line with micro and macro shrooms
|
||||
if(owner.nutrition < 50 && grow_mode == GROWMODE_SHRINK)
|
||||
nutrition_reduction *= 0.3
|
||||
if(nutrition_multiplier == SHRINK_MULTIPLIER)
|
||||
owner.resize(owner.size_multiplier-0.01, animate = FALSE, uncapped = owner.has_large_resize_bounds()) //Bringing this code in line with micro and macro shrooms
|
||||
// Apply hunger costs
|
||||
owner.adjust_nutrition(-nutrition_reduction)
|
||||
|
||||
/datum/component/nutrition_size_change/proc/get_nutrition_multiplier()
|
||||
if(owner.nutrition > 1000 && grow_mode == GROWMODE_GROW) //Removing the strict check against normal max/min size to support dorms/VR oversizing
|
||||
return GROW_MULTIPLIER
|
||||
else if(owner.nutrition < 50 && grow_mode == GROWMODE_SHRINK)
|
||||
return SHRINK_MULTIPLIER
|
||||
|
||||
/datum/component/nutrition_size_change/Destroy(force = FALSE)
|
||||
UnregisterSignal(owner, COMSIG_LIVING_LIFE)
|
||||
@@ -54,3 +51,6 @@
|
||||
|
||||
#undef GROWMODE_SHRINK
|
||||
#undef GROWMODE_GROW
|
||||
|
||||
#undef GROW_MULTIPLIER
|
||||
#undef SHRINK_MULTIPLIER
|
||||
|
||||
@@ -1169,6 +1169,19 @@
|
||||
return 0 //godmode
|
||||
|
||||
// nutrition decrease
|
||||
// Species controls hunger rate for humans, otherwise use defaults
|
||||
if(nutrition > 0 && stat != DEAD)
|
||||
var/nutrition_reduction = DEFAULT_HUNGER_FACTOR
|
||||
nutrition_reduction = species.hunger_factor
|
||||
// Modifiers can increase or decrease nutrition cost
|
||||
for(var/datum/modifier/mod in modifiers)
|
||||
if(!isnull(mod.metabolism_percent))
|
||||
nutrition_reduction *= mod.metabolism_percent
|
||||
var/datum/component/nutrition_size_change/comp = GetComponent(/datum/component/nutrition_size_change)
|
||||
if(comp)
|
||||
nutrition_reduction *= comp.get_nutrition_multiplier()
|
||||
adjust_nutrition(-nutrition_reduction)
|
||||
|
||||
if(noisy == TRUE && nutrition < 250 && prob(10))
|
||||
var/sound/growlsound = sound(get_sfx("hunger_sounds"))
|
||||
var/growlmultiplier = 100 - (nutrition / 250 * 100)
|
||||
|
||||
@@ -483,7 +483,7 @@ export const ServerTarget = new Juke.Target({
|
||||
const options = {
|
||||
dmbFile: `${DME_NAME}.dmb`,
|
||||
namedDmVersion: get(DmVersionParameter),
|
||||
}
|
||||
};
|
||||
await DreamDaemon(options, port, "-trusted -invisible");
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user