mirror of
https://github.com/KabKebab/GS13.git
synced 2026-08-31 09:00:47 +01:00
Fatness Hiding System and Bluespace Belt
Applied changes to fatness.dm to allow the creation of objects, events and such that hide a character's actual fatness level to display and treat it as another. Fixes to other files to support said change. Added bluespace belt, an item that hides a character's current weight and treats it as if were 0. (Belt has currently no way to be created/accessed besides admin spawns. Haven't tested ALL things that interact with weight yet)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
Reference in New Issue
Block a user