mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-13 08:57:01 +01:00
Merged the old gs code with the new Hyper code
This commit is contained in:
+15
-1
@@ -148,8 +148,22 @@
|
||||
#define SANITY_CRAZY 25
|
||||
#define SANITY_INSANE 0
|
||||
|
||||
//Fullness levels, no more infinite eating my dudes!
|
||||
#define FULLNESS_LEVEL_NOMOREPLZ 70
|
||||
#define FULLNESS_LEVEL_BEEG 35
|
||||
#define FULLNESS_LEVEL_BLOATED 20
|
||||
#define FULLNESS_LEVEL_FILLED 10
|
||||
#define FULLNESS_LEVEL_HALF_FULL 5
|
||||
#define FULLNESS_LEVEL_EMPTY 0
|
||||
|
||||
//Fatness levels, Here we go!
|
||||
#define FATNESS_LEVEL_BLOB 1671
|
||||
#define FATNESS_LEVEL_IMMOBILE 950
|
||||
#define FATNESS_LEVEL_MORBIDLY_OBESE 650
|
||||
#define FATNESS_LEVEL_OBESE 350
|
||||
#define FATNESS_LEVEL_FAT 100
|
||||
|
||||
//Nutrition levels for humans
|
||||
#define NUTRITION_LEVEL_FAT 600
|
||||
#define NUTRITION_LEVEL_FULL 550
|
||||
#define NUTRITION_LEVEL_WELL_FED 450
|
||||
#define NUTRITION_LEVEL_FED 350
|
||||
|
||||
@@ -64,6 +64,10 @@
|
||||
#define TRAIT_DEAF "deaf"
|
||||
#define TRAIT_NEARSIGHT "nearsighted"
|
||||
#define TRAIT_FAT "fat"
|
||||
#define TRAIT_OBESE "obese"
|
||||
#define TRAIT_MORBIDLYOBESE "morbildyobese"
|
||||
#define TRAIT_IMMOBILE "immobile"
|
||||
#define TRAIT_BLOB "blobweight"
|
||||
#define TRAIT_HUSK "husk"
|
||||
#define TRAIT_NOCLONE "noclone"
|
||||
#define TRAIT_CLUMSY "clumsy"
|
||||
|
||||
@@ -36,6 +36,7 @@ GLOBAL_VAR_INIT(vending_m_choices, list(
|
||||
"NanoMed Plus" = image(icon = 'icons/obj/vending.dmi', icon_state = "med"),
|
||||
"NanoMed" = image(icon = 'icons/obj/vending.dmi', icon_state = "wallmed"),
|
||||
"KinkMate" = image(icon = 'icons/obj/citvending.dmi', icon_state = "kink"),
|
||||
"Meal Vendor" = image(icon = 'icons/obj/vending.dmi', icon_state = "mealdor"),
|
||||
))
|
||||
// This GLOBAL list is just here to be here.
|
||||
GLOBAL_VAR_INIT(vending_machines, list(
|
||||
@@ -74,5 +75,6 @@ GLOBAL_VAR_INIT(vending_machines, list(
|
||||
/obj/machinery/vending/clothing,
|
||||
/obj/machinery/vending/medical,
|
||||
/obj/machinery/vending/wallmed,
|
||||
/obj/machinery/vending/kink
|
||||
/obj/machinery/vending/kink,
|
||||
/obj/machinery/vending/mealdor
|
||||
))
|
||||
|
||||
@@ -151,12 +151,48 @@
|
||||
icon_state = "too_much_tox"
|
||||
//End gas alerts
|
||||
|
||||
//GS13 fat alerts
|
||||
/obj/screen/alert/blob
|
||||
name = "Fatty blob"
|
||||
desc = "Every last piece of your corpulent body is now flush and bloated with vast globs of blubber. Your corpulence is such that you are akin to a gigantic, towering wad of dough. Your thoughts are scattered, and the only thing in your mind is that you want to eat more and more"
|
||||
icon_state = "blob"
|
||||
|
||||
/obj/screen/alert/immobile
|
||||
name = "Immobile"
|
||||
desc = "Fat has taken over your body, now colossal in size and loaded with cumbersome flab. You are completely unable to move the bulk that has set upon your body. But for whatever reason, you can't help but blush with strange fascination at every moment you're aware of your tremendous size..."
|
||||
icon_state = "immobile"
|
||||
|
||||
/obj/screen/alert/morbidlyobese
|
||||
name = "Morbidly Obese"
|
||||
desc = "Every inch of you is stuffed with copious amounts of fat, you feel yourself struggling to haul the heft of your body. Your thoughts wander to strange, fleeting fantasies of growing bigger yet..."
|
||||
icon_state = "morbobese"
|
||||
|
||||
/obj/screen/alert/obese
|
||||
name = "Obese"
|
||||
desc = "Your body is swollen with lard, and it's challenging to move. Despite this, there's something... pleasing about being so large."
|
||||
icon_state = "obese"
|
||||
|
||||
/obj/screen/alert/fat
|
||||
name = "Fat"
|
||||
desc = "You ate too much food, lardass. Run around the station and lose some weight."
|
||||
desc = "You ate too much food, and now your body has plumped up, let's hope your clothes don't rip."
|
||||
icon_state = "fat"
|
||||
|
||||
/obj/screen/alert/bloated
|
||||
name = "Bloated stomach"
|
||||
desc = "Your stomach is a bit too full"
|
||||
icon_state = "fat"
|
||||
|
||||
/obj/screen/alert/stuffed
|
||||
name = "Completely stuffed"
|
||||
desc = "Whatever you ate, you ate too much. Your stomach has stretched to accomodate its contents, forming a very obvious belly"
|
||||
icon_state = "fat"
|
||||
|
||||
/obj/screen/alert/beegbelly
|
||||
name = "Walking belly"
|
||||
desc = "You've somehow managed to fit even more in your stomach. Can you even stand?"
|
||||
icon_state = "obese"
|
||||
|
||||
|
||||
/obj/screen/alert/hungry
|
||||
name = "Hungry"
|
||||
desc = "Some food would be good right about now."
|
||||
|
||||
@@ -255,6 +255,7 @@ SUBSYSTEM_DEF(mapping)
|
||||
if(config.minetype == "lavaland")
|
||||
INIT_ANNOUNCE("Loading Mining...")
|
||||
LoadGroup(FailedZs, "Lavaland_Lower", "map_files/Mining", "Lavaland_Lower.dmm", default_traits = ZTRAITS_LAVALAND_UNDERRGOUND)
|
||||
LoadGroup(FailedZs, "Lavaland_Demone", "map_files/Mining", "Lavaland_Demone.dmm", default_traits = ZTRAITS_LAVALAND_UNDERRGOUND)
|
||||
LoadGroup(FailedZs, "Lavaland", "map_files/Mining", "Lavaland.dmm", default_traits = ZTRAITS_LAVALAND)
|
||||
LoadGroup(FailedZs, "Diner", "map_files/hyper", "Diner.dmm", default_traits = ZTRAITS_DINER)
|
||||
else if (!isnull(config.minetype))
|
||||
|
||||
@@ -163,6 +163,7 @@
|
||||
holdmyinsanityeffect = insanity_effect
|
||||
|
||||
HandleNutrition(owner)
|
||||
HandleFatness(owner)
|
||||
HandleThirst(owner)
|
||||
|
||||
/datum/component/mood/proc/setSanity(amount, minimum=SANITY_INSANE, maximum=SANITY_NEUTRAL)//I'm sure bunging this in here will have no negative repercussions.
|
||||
@@ -290,11 +291,14 @@
|
||||
/datum/component/mood/proc/hud_click(datum/source, location, control, params, mob/user)
|
||||
print_mood(user)
|
||||
|
||||
/datum/component/mood/proc/HandleFatness(mob/living/L)
|
||||
switch(L.fatness)
|
||||
if(FATNESS_LEVEL_FAT to INFINITY)
|
||||
add_event(null, "fatness", /datum/mood_event/fat)
|
||||
|
||||
/datum/component/mood/proc/HandleNutrition(mob/living/L)
|
||||
switch(L.nutrition)
|
||||
if(NUTRITION_LEVEL_FULL to INFINITY)
|
||||
add_event(null, "nutrition", /datum/mood_event/fat)
|
||||
if(NUTRITION_LEVEL_WELL_FED to NUTRITION_LEVEL_FULL)
|
||||
if(NUTRITION_LEVEL_WELL_FED to INFINITY)
|
||||
add_event(null, "nutrition", /datum/mood_event/wellfed)
|
||||
if( NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
|
||||
add_event(null, "nutrition", /datum/mood_event/fed)
|
||||
|
||||
@@ -308,3 +308,13 @@
|
||||
name = "snowman"
|
||||
desc = "Several lumps of snow put together to form a snowman."
|
||||
icon_state = "snowman"
|
||||
|
||||
/////////////////////V Statues from GS13 V/////////////////////////////////////////
|
||||
|
||||
/obj/structure/statue/blueberry
|
||||
max_integrity = 500
|
||||
|
||||
/obj/structure/statue/blueberry
|
||||
name = "blueberry statue"
|
||||
desc = "A statue resembling a poor humanoid creature shaped like a ball."
|
||||
icon_state = "blueberry"
|
||||
|
||||
@@ -100,6 +100,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
var/body_size = 100 //Body Size in percent
|
||||
var/can_get_preg = 0 //if they can get preggers
|
||||
|
||||
//GS13
|
||||
var/starting_weight = 0 //how thicc you wanna be at start
|
||||
|
||||
//HS13 jobs
|
||||
var/sillyroles = FALSE //for clown and mime
|
||||
var/roleplayroles = FALSE //for the roleplay roles
|
||||
@@ -315,6 +318,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
//H13 make body size compatable with the current save.
|
||||
if (body_size == null)
|
||||
body_size = 100
|
||||
if (starting_weight == null)
|
||||
starting_weight = 0
|
||||
|
||||
dat += "</center>"
|
||||
|
||||
@@ -467,6 +472,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if (body_size == null)
|
||||
dat += "<b>Sprite Size:</b> <a href='?_src_=prefs;preference=bodysize;task=input'>[body_size]%</a><br>"
|
||||
mutant_colors = TRUE
|
||||
//GS13 fatness
|
||||
dat += "<b>Starting weight :</b> <a href='?_src_=prefs;preference=fatness;task=input'>[starting_weight]</a><br>"
|
||||
|
||||
if((EYECOLOR in pref_species.species_traits) && !(NOEYES in pref_species.species_traits))
|
||||
|
||||
@@ -2465,7 +2472,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if (new_bodysize)
|
||||
body_size = max(min( round(text2num(new_bodysize)), MAX_BODYSIZE),MIN_BODYSIZE)
|
||||
|
||||
|
||||
//GS13 fatness
|
||||
|
||||
if("fatness")
|
||||
var/new_fatness = input(user, "Choose your amount of fat at start :\n(0-2000), Fat changes appearance and move speed. \nThresholds are 100, 350, 650, 950 and 1671. Fair warning : being too fat will make you immobile", "Character Preference") as num|null
|
||||
if (new_fatness)
|
||||
starting_weight = max(min( round(text2num(new_fatness)), 2000),0)
|
||||
|
||||
if("ui")
|
||||
var/pickedui = input(user, "Choose your UI style.", "Character Preference", UI_style) as null|anything in GLOB.available_ui_styles
|
||||
@@ -2804,6 +2816,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
character.custom_body_size = body_size
|
||||
character.breedable = 0
|
||||
|
||||
character.fatness = starting_weight
|
||||
|
||||
character.gender = gender
|
||||
character.age = age
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
checkLiked(fraction, M)
|
||||
reagents.reaction(M, INGEST, fraction)
|
||||
reagents.trans_to(M, gulp_size)
|
||||
M.fullness += min(gulp_size, reagents.total_volume) // GS13 drinks will fill your stomach
|
||||
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ All foods are distributed among various categories. Use common sense.
|
||||
righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi'
|
||||
obj_flags = UNIQUE_RENAME
|
||||
grind_results = list() //To let them be ground up to transfer their reagents
|
||||
var/bitevolume = 1 //GS13 how much space in the stomach this food takes.
|
||||
var/bitesize = 2
|
||||
var/bitecount = 0
|
||||
var/trash = null
|
||||
@@ -93,30 +94,31 @@ All foods are distributed among various categories. Use common sense.
|
||||
if(!canconsume(M, user))
|
||||
return 0
|
||||
|
||||
var/fullness = M.nutrition + 10
|
||||
for(var/datum/reagent/consumable/C in M.reagents.reagent_list) //we add the nutrition value of what we're currently digesting
|
||||
fullness += C.nutriment_factor * C.volume / C.metabolization_rate
|
||||
// GS13 Changed fullness mechanic
|
||||
//var/fullness = M.nutrition + 10
|
||||
//for(var/datum/reagent/consumable/C in M.reagents.reagent_list) //we add the nutrition value of what we're currently digesting
|
||||
// fullness += C.nutriment_factor * C.volume / C.metabolization_rate
|
||||
|
||||
if(M == user) //If you're eating it yourself.
|
||||
if(junkiness && M.satiety < -150 && M.nutrition > NUTRITION_LEVEL_STARVING + 50 )
|
||||
to_chat(M, "<span class='notice'>You don't feel like eating any more junk food at the moment.</span>")
|
||||
return 0
|
||||
else if(fullness <= 50)
|
||||
else if(M.fullness < FULLNESS_LEVEL_HALF_FULL)
|
||||
user.visible_message("<span class='notice'>[user] hungrily takes a [eatverb] from \the [src], gobbling it down!</span>", "<span class='notice'>You hungrily take a [eatverb] from \the [src], gobbling it down!</span>")
|
||||
else if(fullness > 50 && fullness < 150)
|
||||
else if(M.fullness >= FULLNESS_LEVEL_HALF_FULL && M.fullness < FULLNESS_LEVEL_FILLED)
|
||||
user.visible_message("<span class='notice'>[user] hungrily takes a [eatverb] from \the [src].</span>", "<span class='notice'>You hungrily take a [eatverb] from \the [src].</span>")
|
||||
else if(fullness > 150 && fullness < 500)
|
||||
else if(M.fullness >= FULLNESS_LEVEL_FILLED && M.fullness < FULLNESS_LEVEL_BLOATED)
|
||||
user.visible_message("<span class='notice'>[user] takes a [eatverb] from \the [src].</span>", "<span class='notice'>You take a [eatverb] from \the [src].</span>")
|
||||
else if(fullness > 500 && fullness < 600)
|
||||
else if(M.fullness >= FULLNESS_LEVEL_BLOATED && M.fullness < FULLNESS_LEVEL_BEEG)
|
||||
user.visible_message("<span class='notice'>[user] unwillingly takes a [eatverb] of a bit of \the [src].</span>", "<span class='warning'>You unwillingly take a [eatverb] of a bit of \the [src].</span>")
|
||||
else if(fullness > (600 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat
|
||||
else if(M.fullness >= (FULLNESS_LEVEL_BEEG * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat
|
||||
user.visible_message("<span class='warning'>[user] cannot force any more of \the [src] to go down [user.p_their()] throat!</span>", "<span class='danger'>You cannot force any more of \the [src] to go down your throat!</span>")
|
||||
return 0
|
||||
if(HAS_TRAIT(M, TRAIT_VORACIOUS))
|
||||
M.changeNext_move(CLICK_CD_MELEE * 0.5) //nom nom nom
|
||||
else
|
||||
if(!isbrain(M)) //If you're feeding it to someone else.
|
||||
if(fullness <= (600 * (1 + M.overeatduration / 1000)))
|
||||
if(M.fullness <= (FULLNESS_LEVEL_NOMOREPLZ * (1 + M.overeatduration / 1000)))
|
||||
M.visible_message("<span class='danger'>[user] attempts to feed [M] [src].</span>", \
|
||||
"<span class='userdanger'>[user] attempts to feed [M] [src].</span>")
|
||||
else
|
||||
@@ -138,6 +140,7 @@ All foods are distributed among various categories. Use common sense.
|
||||
if(M.satiety > -200)
|
||||
M.satiety -= junkiness
|
||||
playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
|
||||
M.fullness += bitevolume;
|
||||
if(reagents.total_volume)
|
||||
SEND_SIGNAL(src, COMSIG_FOOD_EATEN, M, user)
|
||||
var/fraction = min(bitesize / reagents.total_volume, 1)
|
||||
|
||||
@@ -77,6 +77,7 @@
|
||||
trash = /obj/item/trash/popcorn
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 2)
|
||||
bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0
|
||||
bitevolume = 0.1
|
||||
filling_color = "#FFEFD5"
|
||||
tastes = list("popcorn" = 3, "butter" = 1)
|
||||
foodtype = JUNKFOOD
|
||||
|
||||
@@ -144,6 +144,14 @@
|
||||
is_decorated = TRUE
|
||||
filling_color = "#879630"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/donut/purefat //DEBUG DONUT THAT MAKES YOU FAT
|
||||
name = "Donut-that-makes-you-fat"
|
||||
desc = "Careful, it'll go to your hips"
|
||||
bitesize = 9999
|
||||
list_reagents = list("nutriment" = 9999)
|
||||
icon_state = "donut1"
|
||||
foodtype = JUNKFOOD | GRAIN | FRIED | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/donut/semen
|
||||
name = "\"cream\" donut"
|
||||
desc = "That cream looks a little runny..."
|
||||
|
||||
@@ -399,10 +399,7 @@
|
||||
if(!arrivals_docked)
|
||||
var/obj/screen/splash/Spl = new(character.client, TRUE)
|
||||
Spl.Fade(TRUE)
|
||||
if(!prob(1))
|
||||
character.playsound_local(get_turf(character), 'sound/voice/Approaching.ogg', 25)
|
||||
else
|
||||
character.playsound_local(get_turf(character), 'sound/voice/boat.ogg', 35) //boatbomber easter egg. (love your videos man, thanks for visiting!)
|
||||
character.playsound_local(get_turf(character), 'sound/voice/Approaching.ogg', 25)
|
||||
|
||||
character.update_parallax_teleport()
|
||||
|
||||
|
||||
@@ -39,10 +39,15 @@
|
||||
if(. && mob_has_gravity()) //floating is easy
|
||||
if(HAS_TRAIT(src, TRAIT_NOHUNGER))
|
||||
nutrition = NUTRITION_LEVEL_FED - 1 //just less than feeling vigorous
|
||||
else if(nutrition && stat != DEAD)
|
||||
nutrition -= HUNGER_FACTOR/12
|
||||
if(m_intent == MOVE_INTENT_RUN)
|
||||
nutrition -= HUNGER_FACTOR/5
|
||||
else if(nutrition && stat != DEAD) // GS13 : one fourth of the consumed energy comes from fat
|
||||
var/fat_burned = min(HUNGER_FACTOR/40, fatness)
|
||||
var/nutrition_lost_divider = 12
|
||||
if(m_intent == MOVE_INTENT_RUN) // GS13 : running will burn more fat (you'll get more tired tho)
|
||||
fat_burned = min(HUNGER_FACTOR/20, fatness)
|
||||
nutrition_lost_divider = 5
|
||||
nutrition -= (HUNGER_FACTOR/nutrition_lost_divider - fat_burned)
|
||||
fatness -= fat_burned
|
||||
|
||||
|
||||
if(HAS_TRAIT(src, TRAIT_NOTHIRST))
|
||||
thirst = THIRST_LEVEL_QUENCHED - 1
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
var/list/obscured = check_obscured_slots()
|
||||
var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
|
||||
|
||||
|
||||
if(skipface || get_visible_name() == "Unknown")
|
||||
. += "You can't make out what species they are."
|
||||
else
|
||||
@@ -245,9 +245,24 @@
|
||||
if(pulledby && pulledby.grab_state)
|
||||
msg += "[t_He] [t_is] restrained by [pulledby]'s grip.\n"
|
||||
|
||||
//GS13 fat examine
|
||||
switch(fullness)
|
||||
if(FULLNESS_LEVEL_BLOATED to FULLNESS_LEVEL_BEEG)
|
||||
msg += "[t_He] look[p_s()] like [t_He] ate a bit too much.\n"
|
||||
if(FULLNESS_LEVEL_BEEG to FULLNESS_LEVEL_NOMOREPLZ)
|
||||
msg += "[t_His] stomach looks very round and very full.\n"
|
||||
if(FULLNESS_LEVEL_NOMOREPLZ to INFINITY)
|
||||
msg += "[t_His] stomach has been stretched to enormous proportions.\n"
|
||||
|
||||
if(nutrition < NUTRITION_LEVEL_STARVING - 50)
|
||||
msg += "[t_He] [t_is] severely malnourished.\n"
|
||||
else if(nutrition >= NUTRITION_LEVEL_FAT)
|
||||
if(fatness >= FATNESS_LEVEL_IMMOBILE)
|
||||
msg += "[t_His] body is buried in an overflowing surplus of adipose, and [t_His] legs are completely buried beneath layers of meaty, obese flesh.\n"
|
||||
else if(fatness >= FATNESS_LEVEL_MORBIDLY_OBESE)
|
||||
msg += "[t_He] [t_is] utterly stuffed with abundant lard, [t_He] doesn't seem to be able to move much.\n"
|
||||
else if(fatness >= FATNESS_LEVEL_OBESE)
|
||||
msg += "[t_He] [t_is] engorged with fat, [t_His] body laden in rolls of fattened flesh.\n"
|
||||
else if(fatness >= FATNESS_LEVEL_FAT)
|
||||
if(user.nutrition < NUTRITION_LEVEL_STARVING - 50)
|
||||
msg += "[t_He] [t_is] plump and delicious looking - Like a fat little piggy. A tasty piggy.\n"
|
||||
else
|
||||
|
||||
@@ -1233,15 +1233,77 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
|
||||
//The fucking TRAIT_FAT mutation is the dumbest shit ever. It makes the code so difficult to work with
|
||||
if(HAS_TRAIT(H, TRAIT_FAT))//I share your pain, past coder.
|
||||
if(H.overeatduration < 100)
|
||||
to_chat(H, "<span class='notice'>You feel fit again!</span>")
|
||||
if(H.fatness < FATNESS_LEVEL_FAT)//this is a mess, indeed.
|
||||
to_chat(H, "<span class='notice'>You feel fit again!</span>")//GS13 Added a whole bunch of new fatness traits. Truly I am a masochist
|
||||
REMOVE_TRAIT(H, TRAIT_FAT, OBESITY)
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.fatness >= FATNESS_LEVEL_OBESE)
|
||||
to_chat(H, "<span class='danger'>You feel even plumper!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_FAT, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_OBESE, OBESITY)
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_OBESE))
|
||||
if(H.fatness < FATNESS_LEVEL_OBESE)
|
||||
to_chat(H, "<span class='notice'>You feel like you've lost weight!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_OBESE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_FAT, OBESITY)
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.fatness >= FATNESS_LEVEL_MORBIDLY_OBESE)
|
||||
to_chat(H, "<span class='danger'>You feel a lot fatter than before</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_OBESE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_MORBIDLYOBESE, OBESITY)
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_MORBIDLYOBESE))
|
||||
if(H.fatness < FATNESS_LEVEL_MORBIDLY_OBESE)
|
||||
to_chat(H, "<span class='notice'>You feel a bit less fat!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_MORBIDLYOBESE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_OBESE, OBESITY)
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.fatness >= FATNESS_LEVEL_IMMOBILE)
|
||||
to_chat(H, "<span class='danger'>You feel your fat belly rubbing on the floor!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_MORBIDLYOBESE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_IMMOBILE))
|
||||
if(H.fatness < FATNESS_LEVEL_IMMOBILE)
|
||||
to_chat(H, "<span class='notice'>You feel less restrained by your fat!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_MORBIDLYOBESE, OBESITY)
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(H.fatness >= FATNESS_LEVEL_BLOB)
|
||||
to_chat(H, "<span class='danger'>You feel like you've become a mountain of fat!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_BLOB, OBESITY)
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else if(HAS_TRAIT(H, TRAIT_BLOB))
|
||||
if(H.fatness < FATNESS_LEVEL_BLOB)
|
||||
to_chat(H, "<span class='notice'>You feel like you've regained some mobility!</span>")
|
||||
REMOVE_TRAIT(H, TRAIT_BLOB, OBESITY)
|
||||
ADD_TRAIT(H, TRAIT_IMMOBILE, OBESITY)
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
else
|
||||
if(H.overeatduration >= 100)
|
||||
if(H.fatness >= FATNESS_LEVEL_FAT)
|
||||
to_chat(H, "<span class='danger'>You suddenly feel blubbery!</span>")
|
||||
ADD_TRAIT(H, TRAIT_FAT, OBESITY)
|
||||
H.update_body()
|
||||
H.update_inv_w_uniform()
|
||||
H.update_inv_wear_suit()
|
||||
|
||||
@@ -1270,14 +1332,22 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
|
||||
|
||||
if (H.nutrition > NUTRITION_LEVEL_FULL)
|
||||
if(H.overeatduration < 600) //capped so people don't take forever to unfat
|
||||
var/fatConversionRate = 100 //GS13 what percentage of the excess nutrition should go to fat (total nutrition to transfer can't be under 1)
|
||||
var/nutritionThatBecomesFat = max((H.nutrition - NUTRITION_LEVEL_FULL)*(fatConversionRate / 100),1)
|
||||
H.nutrition -= nutritionThatBecomesFat
|
||||
H.fatness += nutritionThatBecomesFat
|
||||
if(H.fullness > FULLNESS_LEVEL_EMPTY)//GS13 stomach-emptying routine
|
||||
var/ticksToEmptyStomach = 20 // GS13 how many ticks it takes to decrease the fullness by 1
|
||||
H.fullness -= 1/ticksToEmptyStomach
|
||||
if (H.fullness > FULLNESS_LEVEL_BLOATED) //GS13 overeating depends on fullness now
|
||||
if(H.overeatduration < 5000) //capped so people don't take forever to unfat
|
||||
H.overeatduration++
|
||||
else
|
||||
if(H.overeatduration > 1)
|
||||
H.overeatduration -= 2 //doubled the unfat rate
|
||||
H.overeatduration -= 1 //doubled the unfat rate -- GS13 Nah, put it back
|
||||
|
||||
//metabolism change
|
||||
if(H.nutrition > NUTRITION_LEVEL_FAT)
|
||||
if(H.nutrition > NUTRITION_LEVEL_FULL +100)
|
||||
H.metabolism_efficiency = 1
|
||||
else if(H.nutrition > NUTRITION_LEVEL_FED && H.satiety > 80)
|
||||
if(H.metabolism_efficiency != 1.25 && !HAS_TRAIT(H, TRAIT_NOHUNGER))
|
||||
@@ -1293,14 +1363,37 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
H.metabolism_efficiency = 1
|
||||
|
||||
switch(H.nutrition)
|
||||
if(NUTRITION_LEVEL_FULL to INFINITY)
|
||||
H.throw_alert("nutrition", /obj/screen/alert/fat)
|
||||
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FULL)
|
||||
H.clear_alert("nutrition")
|
||||
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
|
||||
H.throw_alert("nutrition", /obj/screen/alert/hungry)
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
H.throw_alert("nutrition", /obj/screen/alert/starving)
|
||||
|
||||
switch(H.fullness)
|
||||
if(0 to FULLNESS_LEVEL_BLOATED)
|
||||
H.clear_alert("fullness")
|
||||
if(FULLNESS_LEVEL_BLOATED to FULLNESS_LEVEL_BEEG)
|
||||
H.throw_alert("fullness", /obj/screen/alert/bloated)
|
||||
if(FULLNESS_LEVEL_BEEG to FULLNESS_LEVEL_NOMOREPLZ)
|
||||
H.throw_alert("fullness", /obj/screen/alert/stuffed)
|
||||
if(FULLNESS_LEVEL_NOMOREPLZ to INFINITY)
|
||||
H.throw_alert("fullness", /obj/screen/alert/beegbelly)
|
||||
|
||||
|
||||
switch(H.fatness)
|
||||
if(FATNESS_LEVEL_BLOB to INFINITY)
|
||||
H.throw_alert("fatness", /obj/screen/alert/blob)
|
||||
if(FATNESS_LEVEL_IMMOBILE to FATNESS_LEVEL_BLOB)
|
||||
H.throw_alert("fatness", /obj/screen/alert/immobile)
|
||||
if(FATNESS_LEVEL_MORBIDLY_OBESE to FATNESS_LEVEL_IMMOBILE)
|
||||
H.throw_alert("fatness", /obj/screen/alert/morbidlyobese)
|
||||
if(FATNESS_LEVEL_OBESE to FATNESS_LEVEL_MORBIDLY_OBESE)
|
||||
H.throw_alert("fatness", /obj/screen/alert/obese)
|
||||
if(FATNESS_LEVEL_FAT to FATNESS_LEVEL_OBESE)
|
||||
H.throw_alert("fatness", /obj/screen/alert/fat)
|
||||
if(0 to FATNESS_LEVEL_FAT)
|
||||
H.clear_alert("fatness")
|
||||
|
||||
/datum/species/proc/handle_thirst(mob/living/carbon/human/H)
|
||||
if(HAS_TRAIT(src, TRAIT_NOTHIRST))
|
||||
@@ -1440,7 +1533,13 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
. += 0.5
|
||||
*/
|
||||
if(HAS_TRAIT(H, TRAIT_FAT))
|
||||
. += (1.2 - flight)
|
||||
. += (1.5 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_OBESE))//GS13 fat levels move speed decrease
|
||||
. += (3 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_MORBIDLYOBESE))
|
||||
. += (6 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_IMMOBILE))
|
||||
. += 10 // No wings are going to lift that much off the ground
|
||||
if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !HAS_TRAIT(H, TRAIT_RESISTCOLD))
|
||||
. += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR
|
||||
return .
|
||||
|
||||
@@ -516,6 +516,8 @@
|
||||
SetSleeping(0, FALSE)
|
||||
radiation = 0
|
||||
nutrition = NUTRITION_LEVEL_FED + 50
|
||||
fullness = FULLNESS_LEVEL_HALF_FULL // GS13
|
||||
fatness = 0 // GS13
|
||||
thirst = THIRST_LEVEL_QUENCHED + 50
|
||||
bodytemperature = BODYTEMP_NORMAL
|
||||
set_blindness(0)
|
||||
|
||||
@@ -60,6 +60,8 @@
|
||||
var/drowsyness = 0//Carbon
|
||||
var/dizziness = 0//Carbon
|
||||
var/jitteriness = 0//Carbon
|
||||
var/fatness = 0//Carbon, GS13 addition
|
||||
var/fullness = FULLNESS_LEVEL_HALF_FULL//Carbon, GS13 addition
|
||||
var/nutrition = NUTRITION_LEVEL_START_MIN // randomised in Initialize
|
||||
var/thirst = THIRST_LEVEL_START_MIN //same for this
|
||||
var/satiety = 0//Carbon
|
||||
|
||||
@@ -84,6 +84,9 @@
|
||||
|
||||
if(!mob.Process_Spacemove(direct))
|
||||
return FALSE
|
||||
|
||||
if(HAS_TRAIT(mob,TRAIT_BLOB)) // GS13 are we too fat to move?
|
||||
return FALSE
|
||||
//We are now going to move
|
||||
var/add_delay = mob.movement_delay()
|
||||
mob.set_glide_size(DELAY_TO_GLIDE_SIZE(add_delay * (((direct & 3) && (direct & 12)) ? 2 : 1))) // set it now in case of pulled objects
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
/obj/effect/gluttony/CanPass(atom/movable/mover, turf/target)//So bullets will fly over and stuff.
|
||||
if(ishuman(mover))
|
||||
var/mob/living/carbon/human/H = mover
|
||||
if(H.nutrition >= NUTRITION_LEVEL_FAT)
|
||||
if(H.nutrition >= FATNESS_LEVEL_FAT)
|
||||
H.visible_message("<span class='warning'>[H] pushes through [src]!</span>", "<span class='notice'>You've seen and eaten worse than this.</span>")
|
||||
return TRUE
|
||||
else
|
||||
@@ -294,4 +294,4 @@
|
||||
to_chat(user, "<span class='userdanger'>You feel overpowering pleasure surge through your entire body.</span>")
|
||||
var/A = new /obj/item/reagent_containers/chalice/lust
|
||||
user.put_in_hands(A)
|
||||
chalice_taken = 1
|
||||
chalice_taken = 1
|
||||
|
||||
Reference in New Issue
Block a user