Merge pull request #138 from Alphas00/master

Changes to Fatness system, Fatness Hiding System added and Bluespace Belt
This commit is contained in:
evilew
2023-12-26 15:28:25 +01:00
committed by GitHub
9 changed files with 60 additions and 8 deletions
+36 -4
View File
@@ -1,6 +1,17 @@
/mob/living/carbon
///What level of fatness is the parent mob at?
//Due to the changes needed to create the system to hide fatness, here's some notes:
// -If you are making a mob simply gain or lose weight, use adjust_fatness. Try to not touch the variables directly unless you know 'em well
// -fatness is the value a mob is being displayed and calculated as by most things. Changes to fatness are not permanent
// -realfatness is the value a mob is actually at, even if it's being hidden. For permanent changes, use this one
// -overfatnes
//What level of fatness is the parent mob currently at?
var/fatness = 0
//Is something overriding the actual fatness value of a character?
var/fatness_hidden = FALSE
//The actual value a mob is at. Is equal to fatness if fatness_hidden is FALSE.
var/realfatness = 0
//The value a mob's fatness is being overwritten with if fatness_hidden is TRUE.
var/overfatness = 0
///At what rate does the parent mob gain weight? 1 = 100%
var/weight_gain_rate = 1
//At what rate does the parent mob lose weight? 1 = 100%
@@ -26,11 +37,19 @@
else
amount_to_change = amount_to_change * weight_loss_rate
fatness += amount_to_change
fatness = max(fatness, MINIMUM_FATNESS_LEVEL) //It would be a little silly if someone got negative fat.
realfatness += amount_to_change
realfatness = max(realfatness, MINIMUM_FATNESS_LEVEL) //It would be a little silly if someone got negative fat.
if(client?.prefs?.max_weight) // GS13
fatness = min(fatness, (client?.prefs?.max_weight - 1))
realfatness = min(realfatness, (client?.prefs?.max_weight - 1))
if(fatness_hidden) //If a character's real fatness is being hidden
if(client?.prefs?.max_weight) //Check their prefs
overfatness = min(overfatness, (client?.prefs?.max_weight - 1)) //And make sure it's not above their preferred max
fatness = overfatness //Then, make that value their current fatness
else //If it's not being hidden
fatness = realfatness //Make their current fatness their real fatness
return TRUE
@@ -77,3 +96,16 @@
return FALSE
return TRUE
/mob/living/carbon/proc/fat_hide(hide_amount) //If something wants to hide realfatness, it'll call this method and give it an amount to cover it with
fatness_hidden = TRUE
overfatness = hide_amount
fatness = overfatness //To update a mob's fatness with the new amount to be shown immediately
return TRUE
/mob/living/carbon/proc/fat_show() //If something that hides fatness is removed or expires, it'll call this method
fatness_hidden = FALSE
fatness = realfatness //To update a mob's fatness with their real one immediately
return TRUE
+1 -1
View File
@@ -57,7 +57,7 @@
if(!proximity || !target || target == user)
return FALSE
if(weight_to_add > user.fatness || !user.adjust_fatness(-weight_to_add, FATTENING_TYPE_MAGIC))
if(weight_to_add > user.realfatness || !user.adjust_fatness(-weight_to_add, FATTENING_TYPE_MAGIC))
to_chat(user, "<span class='warning'You don't have enough spare weight to transfer</span>")
return FALSE
@@ -0,0 +1,18 @@
/obj/item/bluespace_belt
name = "bluespace belt"
desc = "A belt made using bluespace technology. The power of space and time, used to hide the fact you are fat."
icon = 'GainStation13/icons/obj/clothing/bluespace_belt.dmi'
icon_state = "bluespace_belt"
item_state = "bluespace_belt"
slot_flags = ITEM_SLOT_BELT
equip_sound = 'sound/items/equip/toolbelt_equip.ogg'
drop_sound = 'sound/items/handling/toolbelt_drop.ogg'
pickup_sound = 'sound/items/handling/toolbelt_pickup.ogg'
/obj/item/bluespace_belt/equipped(mob/user, slot)
..()
var/mob/living/carbon/U = user
if(slot == SLOT_BELT)
U.fat_hide(0)
else
U.fat_show()
Binary file not shown.

After

Width:  |  Height:  |  Size: 793 B

+1
View File
@@ -2934,6 +2934,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
//GS13
character.fatness = starting_weight
character.realfatness = starting_weight
character.weight_gain_rate = wg_rate
character.weight_loss_rate = wl_rate
@@ -620,7 +620,7 @@
/datum/reagent/medicine/lipolicide/on_mob_life(mob/living/carbon/M)
if(M.nutrition <= NUTRITION_LEVEL_STARVING)
M.adjustToxLoss(1*REM, 0)
if(M.fatness == 0)
if(M.realfatness == 0)
M.nutrition = max(M.nutrition - 3, 0) // making the chef more valuable, one meme trap at a time
if(HAS_TRAIT(M, TRAIT_LIPOLICIDE_TOLERANCE)) //GS13 edit
M.adjust_fatness(-0.5, FATTENING_TYPE_WEIGHT_LOSS)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

@@ -112,8 +112,8 @@
var/mob/living/carbon/gainer = owner
if(iscarbon(gainer) && owner?.client?.prefs?.weight_gain_food)
var/mob/living/carbon/prey = M
if(iscarbon(prey) && prey.fatness)
var/fatness_to_add = (prey.fatness * 0.75)
if(iscarbon(prey) && prey.realfatness)
var/fatness_to_add = (prey.realfatness * 0.75)
gainer.adjust_fatness(fatness_to_add, FATTENING_TYPE_FOOD)
//GS13 edit end
+1
View File
@@ -3105,6 +3105,7 @@
#include "GainStation13\code\modules\surgery\organs\augments.dm"
#include "GainStation13\code\modules\vending\gatocola.dm"
#include "GainStation13\code\modules\vending\mealdor.dm"
#include "GainStation13\code\obj\items\bluespace_belt.dm"
#include "GainStation13\code\obj\items\minor_items.dm"
#include "GainStation13\code\obj\structure\calorite_doors.dm"
#include "GainStation13\code\obj\structure\candylight.dm"