Merged the old gs code with the new Hyper code

This commit is contained in:
KabKebab
2021-10-16 18:45:58 +02:00
parent 1c37b0652a
commit d1eda326c8
87 changed files with 940 additions and 54 deletions
+15 -1
View File
@@ -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
+12 -9
View File
@@ -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
+108 -9
View File
@@ -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 .
+2
View File
@@ -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)
+2
View File
@@ -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
+3
View File
@@ -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