mirror of
https://github.com/KabKebab/GS13.git
synced 2026-08-24 05:26:37 +01:00
Merge branch 'KabKebab:master' into random_junk
This commit is contained in:
@@ -167,6 +167,11 @@
|
||||
#define FATNESS_LEVEL_FATTER 250
|
||||
#define FATNESS_LEVEL_FAT 170
|
||||
|
||||
//Math stuff for fatness movement speed
|
||||
#define FATNESS_DIVISOR 860
|
||||
#define FATNESS_MAX_MOVE_PENALTY 4
|
||||
#define FATNESS_WEAKLEGS_MODIFIER 20
|
||||
|
||||
//Nutrition levels for humans
|
||||
#define NUTRITION_LEVEL_FULL 550
|
||||
#define NUTRITION_LEVEL_WELL_FED 450
|
||||
|
||||
@@ -88,6 +88,16 @@
|
||||
|
||||
init_subtypes(/datum/crafting_recipe, GLOB.crafting_recipes)
|
||||
|
||||
|
||||
|
||||
// Hair Gradients - Initialise all /datum/sprite_accessory/hair_gradient into an list indexed by gradient-style name
|
||||
for(var/path in subtypesof(/datum/sprite_accessory/hair_gradient))
|
||||
var/datum/sprite_accessory/hair_gradient/H = new path()
|
||||
GLOB.hair_gradients_list[H.name] = H
|
||||
|
||||
init_subtypes(/datum/crafting_recipe, GLOB.crafting_recipes)
|
||||
|
||||
|
||||
//creates every subtype of prototype (excluding prototype) and adds it to list L.
|
||||
//if no list/L is provided, one is created.
|
||||
/proc/init_subtypes(prototype, list/L)
|
||||
|
||||
@@ -6,6 +6,7 @@ GLOBAL_LIST_EMPTY(hair_styles_female_list) //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(facial_hair_styles_list) //stores /datum/sprite_accessory/facial_hair indexed by name
|
||||
GLOBAL_LIST_EMPTY(facial_hair_styles_male_list) //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(facial_hair_styles_female_list) //stores only hair names
|
||||
GLOBAL_LIST_EMPTY(hair_gradients_list) //stores /datum/sprite_accessory/hair_gradient indexed by name
|
||||
//Underwear
|
||||
GLOBAL_LIST_EMPTY(underwear_list) //stores /datum/sprite_accessory/underwear/bottom indexed by name
|
||||
GLOBAL_LIST_EMPTY(underwear_m) //stores only underwear name
|
||||
|
||||
@@ -66,8 +66,8 @@ Bonus
|
||||
symptom_delay_min = 15
|
||||
symptom_delay_max = 45
|
||||
threshold_desc = list(
|
||||
"Transmission 7" = "Increases the rate of cell replication.",
|
||||
"Transmission 12" = "Increases the rate of cell replication further"
|
||||
"Stage Speed 7" = "Increases the rate of cell replication.",
|
||||
"Stage Speed 12" = "Increases the rate of cell replication further"
|
||||
)
|
||||
|
||||
|
||||
@@ -83,9 +83,9 @@ Bonus
|
||||
to_chat(M, "<span class='warning'>[pick("You feel oddly full...", "You feel more plush...", "You feel more huggable...", "You hear an odd gurgle from your stomach")]</span>")
|
||||
else
|
||||
to_chat(M, "<span class='warning'><i>[pick("You feel your body churn...", "You feel heavier...", "You hear an ominous gurgle from your belly...", "You feel bulkier...")]</i></span>")
|
||||
if(A.properties["transmittable"] >= 12) //get chunkier quicker
|
||||
if(A.properties["stage_rate"] >= 12) //get chunkier quicker
|
||||
M.adjust_fatness(70, FATTENING_TYPE_VIRUS)
|
||||
else if(A.properties["transmittable"] >= 7)
|
||||
else if(A.properties["stage_rate"] >= 7)
|
||||
M.adjust_fatness(40, FATTENING_TYPE_VIRUS)
|
||||
else
|
||||
M.adjust_fatness(15, FATTENING_TYPE_VIRUS)
|
||||
|
||||
@@ -330,3 +330,11 @@
|
||||
suffix = "fastfood.dmm"
|
||||
name = "Fast Food Restaurant"
|
||||
description = "In GATO controlled space, it isn't uncommon to find various space restaurants, famous for the abundance of corn oil in their foods."
|
||||
|
||||
/datum/map_template/ruin/space/quantum_hub //GS13
|
||||
id = "quantum_hub"
|
||||
suffix = "quantum_hub.dmm"
|
||||
name = "Quantum Hub"
|
||||
description = "A small hub containing a quantum pad connected to xenoarch along with three other rooms containing unlinked quantum pads and the parts needed to make new quantum pads."
|
||||
cost = 0
|
||||
always_place = TRUE
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
/obj/item/dyespray
|
||||
name = "hair dye spray"
|
||||
desc = "A spray to dye your hair any gradients you'd like."
|
||||
icon = 'icons/obj/dyespray.dmi'
|
||||
icon_state = "dyespray"
|
||||
|
||||
var/uses = 10 //SKYRAT EDIT ADDITION
|
||||
|
||||
/obj/item/dyespray/attack_self(mob/user)
|
||||
dye(user)
|
||||
|
||||
/obj/item/dyespray/pre_attack(atom/target, mob/living/user, params)
|
||||
dye(target)
|
||||
return ..()
|
||||
|
||||
/**
|
||||
* Applies a gradient and a gradient color to a mob.
|
||||
*
|
||||
* Arguments:
|
||||
* * target - The mob who we will apply the gradient and gradient color to.
|
||||
*/
|
||||
|
||||
/obj/item/dyespray/proc/dye(mob/target)
|
||||
if(!ishuman(target))
|
||||
return
|
||||
|
||||
if(!uses) //SKYRAT EDIT ADDITION
|
||||
return //SKYRAT EDIT ADDITION
|
||||
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
|
||||
var/new_hair_color = input(usr, "Choose a base hair color:", "Character Preference","#"+human_target.hair_color) as color|null
|
||||
if(!new_hair_color)
|
||||
return
|
||||
|
||||
var/new_grad_style = input(usr, "Choose a color pattern:", "Character Preference") as null|anything in GLOB.hair_gradients_list
|
||||
if(!new_grad_style)
|
||||
return
|
||||
|
||||
var/new_grad_color = input(usr, "Choose a secondary hair color:", "Character Preference","#"+human_target.grad_color) as color|null
|
||||
if(!new_grad_color)
|
||||
return
|
||||
|
||||
human_target.hair_color = sanitize_hexcolor(new_hair_color)
|
||||
human_target.grad_style = new_grad_style
|
||||
human_target.grad_color = sanitize_hexcolor(new_grad_color)
|
||||
to_chat(human_target, "<span class='notice'>You start applying the hair dye...</span>")
|
||||
if(!do_after(usr, 30, target = human_target))
|
||||
return
|
||||
playsound(src, 'sound/effects/spray.ogg', 5, TRUE, 5)
|
||||
human_target.update_hair()
|
||||
|
||||
//SKYRAT EDIT ADDITION
|
||||
uses--
|
||||
|
||||
/obj/item/dyespray/examine(mob/user)
|
||||
. = ..()
|
||||
. += "It has [uses] uses left."
|
||||
|
||||
//SKYRAT EDIT END
|
||||
@@ -75,6 +75,13 @@
|
||||
icon_state = "tile_calorite_strong"
|
||||
turf_type = /turf/open/floor/mineral/calorite/strong
|
||||
|
||||
/obj/item/stack/tile/mineral/calorite/dance //GS13 - glamourous variant!
|
||||
name = "Calorite dance floor"
|
||||
singular_name = "Calorite dance floor tile"
|
||||
desc = "A dance floor made out of calorite, for a party both you and your waistline will never forget!."
|
||||
icon_state = "tile_calorite_dance"
|
||||
turf_type = /turf/open/floor/mineral/calorite/dance
|
||||
|
||||
|
||||
/obj/item/stack/tile/mineral/abductor
|
||||
name = "alien floor tile"
|
||||
|
||||
@@ -322,4 +322,4 @@
|
||||
name = "wall"
|
||||
desc = "A wall made out of a strange metal. The squares on it pulse in a predictable pattern."
|
||||
icon = 'icons/turf/walls/hierophant_wall.dmi'
|
||||
icon_state = "wall"
|
||||
icon_state = "wall"
|
||||
@@ -204,6 +204,23 @@
|
||||
clawfootstep = FOOTSTEP_HARD_CLAW
|
||||
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
|
||||
|
||||
|
||||
/turf/open/indestructible/chocolate
|
||||
name = "chocolate floor"
|
||||
desc = "A rather tasty floor, hopefully it does not ruin your shoes."
|
||||
icon = 'Gainstation13/icons/turf/floor_candy.dmi'
|
||||
icon_state = "choclit_alt2"
|
||||
|
||||
|
||||
/turf/open/indestructible/bubblegum
|
||||
name = "bubblegum floor"
|
||||
desc = "A rather tasty floor, hopefully it does not ruin your shoes."
|
||||
icon = 'Gainstation13/icons/turf/floor_candy.dmi'
|
||||
icon_state = "floor_pinkgum"
|
||||
|
||||
|
||||
|
||||
|
||||
/turf/open/indestructible/clock_spawn_room/Entered()
|
||||
..()
|
||||
START_PROCESSING(SSfastprocess, src)
|
||||
|
||||
@@ -239,6 +239,14 @@
|
||||
floor_tile = /obj/item/stack/tile/mineral/calorite/strong
|
||||
icons = list("calorite_strong","calorite_dam")
|
||||
|
||||
// calorite dance floor, groovy! - GS13
|
||||
|
||||
/turf/open/floor/mineral/calorite/dance
|
||||
name = "Infused calorite floor"
|
||||
icon_state = "calorite_dance"
|
||||
floor_tile = /obj/item/stack/tile/mineral/calorite/dance
|
||||
icons = list("calorite_dance","calorite_dam")
|
||||
|
||||
//DIAMOND
|
||||
|
||||
/turf/open/floor/mineral/diamond
|
||||
|
||||
@@ -12,3 +12,20 @@
|
||||
barefootstep = FOOTSTEP_WATER
|
||||
clawfootstep = FOOTSTEP_WATER
|
||||
heavyfootstep = FOOTSTEP_WATER
|
||||
|
||||
|
||||
|
||||
/turf/open/chocolateriver
|
||||
gender = PLURAL
|
||||
name = "liquid chocolate"
|
||||
desc = "This is probably used for some kind of huge fountain."
|
||||
icon = 'Gainstation13/icons/turf/floor_candy.dmi'
|
||||
icon_state = "chocwater"
|
||||
slowdown = 1
|
||||
bullet_sizzle = TRUE
|
||||
bullet_bounce_sound = null //needs a splashing sound one day.
|
||||
|
||||
footstep = FOOTSTEP_WATER
|
||||
barefootstep = FOOTSTEP_WATER
|
||||
clawfootstep = FOOTSTEP_WATER
|
||||
heavyfootstep = FOOTSTEP_WATER
|
||||
@@ -96,6 +96,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
var/eye_color = "000" //Eye color
|
||||
var/wing_color = "fff" //Wing color
|
||||
|
||||
var/grad_style //Hair gradient style
|
||||
var/grad_color = "FFFFFF" //Hair gradient color
|
||||
|
||||
//HS13
|
||||
var/body_size = 100 //Body Size in percent
|
||||
var/can_get_preg = 0 //if they can get preggers
|
||||
@@ -511,6 +514,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "<a href='?_src_=prefs;preference=previous_facehair_style;task=input'><</a> <a href='?_src_=prefs;preference=next_facehair_style;task=input'>></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[facial_hair_color];'> </span> <a href='?_src_=prefs;preference=facial;task=input'>Change</a><BR>"
|
||||
|
||||
|
||||
dat += "<h3>Hair Gradient</h3>"
|
||||
|
||||
dat += "<a style='display:block;width:100px' href='?_src_=prefs;preference=grad_style;task=input'>[grad_style]</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=previous_grad_style;task=input'><</a> <a href='?_src_=prefs;preference=next_grad_style;task=input'>></a><BR>"
|
||||
dat += "<span style='border: 1px solid #161616; background-color: #[grad_color];'> </span> <a href='?_src_=prefs;preference=grad_color;task=input'>Change</a><BR>"
|
||||
|
||||
|
||||
dat += "</td>"
|
||||
//Mutant stuff
|
||||
var/mutant_category = 0
|
||||
@@ -1020,6 +1031,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "<b>Damage Screen Shake:</b> <a href='?_src_=prefs;preference=damagescreenshake'>[(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]</a><br>"
|
||||
//GS13 stuff goes here
|
||||
dat += "<h2>GS13 Preferences</h2>"
|
||||
|
||||
dat += "<b>Maximum Weight:</b><a href='?_src_=prefs;preference=max_fatness'>[max_weight == FALSE ? "None" : max_weight]</a><BR>"
|
||||
dat += "<b>NonCon - Weight Gain:</b><a href='?_src_=prefs;preference=noncon_weight_gain'>[noncon_weight_gain == TRUE ? "Enabled" : "Disabled"]</a><BR>"
|
||||
|
||||
dat += "<h2>GS13 Weight Gain</h2>"
|
||||
@@ -1866,6 +1879,26 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if("previous_facehair_style")
|
||||
facial_hair_style = previous_list_item(facial_hair_style, GLOB.facial_hair_styles_list)
|
||||
|
||||
|
||||
if("grad_color")
|
||||
var/new_grad_color = input(user, "Choose your character's gradient colour:", "Character Preference","#"+grad_color) as color|null
|
||||
if(new_grad_color)
|
||||
grad_color = sanitize_hexcolor(new_grad_color, 6)
|
||||
|
||||
if("grad_style")
|
||||
var/new_grad_style
|
||||
new_grad_style = input(user, "Choose your character's hair gradient style:", "Character Preference") as null|anything in GLOB.hair_gradients_list
|
||||
if(new_grad_style)
|
||||
grad_style = new_grad_style
|
||||
|
||||
if("next_grad_style")
|
||||
grad_style = next_list_item(grad_style, GLOB.hair_gradients_list)
|
||||
|
||||
if("previous_grad_style")
|
||||
grad_style = previous_list_item(grad_style, GLOB.hair_gradients_list)
|
||||
|
||||
|
||||
|
||||
if("cycle_bg")
|
||||
bgstate = next_list_item(bgstate, bgstate_options)
|
||||
|
||||
@@ -2559,6 +2592,30 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
if("noncon_weight_gain")
|
||||
noncon_weight_gain = !noncon_weight_gain
|
||||
if("max_fatness")
|
||||
var/pickedweight = input(user, "Choose your max fatness level, your weight will not go beyond this. None will let you gain without a limit", "Character Preference", "None") as null|anything in list("None", "Fat", "Fatter", "Very Fat", "Obese", "Morbidly Obese", "Extremely Obese", "Barely Mobile", "Immobile")
|
||||
if(pickedweight)
|
||||
switch(pickedweight)
|
||||
if("None")
|
||||
max_weight = FALSE
|
||||
if("Fat")
|
||||
max_weight = FATNESS_LEVEL_FATTER
|
||||
if("Fatter")
|
||||
max_weight = FATNESS_LEVEL_VERYFAT
|
||||
if("Very Fat")
|
||||
max_weight = FATNESS_LEVEL_OBESE
|
||||
if("Obese")
|
||||
max_weight = FATNESS_LEVEL_MORBIDLY_OBESE
|
||||
if("Morbidly Obese")
|
||||
max_weight = FATNESS_LEVEL_EXTREMELY_OBESE
|
||||
if("Extremely Obese")
|
||||
max_weight = FATNESS_LEVEL_BARELYMOBILE
|
||||
if("Barely Mobile")
|
||||
max_weight = FATNESS_LEVEL_IMMOBILE
|
||||
if("Immobile")
|
||||
max_weight = FATNESS_LEVEL_BLOB
|
||||
|
||||
|
||||
|
||||
if("inflatable_belly")
|
||||
features["inflatable_belly"] = !features["inflatable_belly"]
|
||||
@@ -2865,6 +2922,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
character.skin_tone = skin_tone
|
||||
character.hair_style = hair_style
|
||||
character.facial_hair_style = facial_hair_style
|
||||
|
||||
character.grad_style = grad_style
|
||||
character.grad_color = grad_color
|
||||
character.underwear = underwear
|
||||
|
||||
character.saved_underwear = underwear
|
||||
|
||||
@@ -154,6 +154,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["weight_gain_viruses"] >> weight_gain_viruses
|
||||
S["weight_gain_weapons"] >> weight_gain_weapons
|
||||
S["noncon_weight_gain"] >> noncon_weight_gain
|
||||
S["max_weight"] >> max_weight
|
||||
|
||||
|
||||
//try to fix any outdated data if necessfary
|
||||
if(needs_update >= 0)
|
||||
@@ -285,6 +287,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
WRITE_FILE(S["weight_gain_chems"], weight_gain_chems)
|
||||
WRITE_FILE(S["weight_gain_weapons"], weight_gain_weapons)
|
||||
WRITE_FILE(S["noncon_weight_gain"], noncon_weight_gain)
|
||||
WRITE_FILE(S["max_weight"], max_weight)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -346,6 +349,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["skin_tone"] >> skin_tone
|
||||
S["hair_style_name"] >> hair_style
|
||||
S["facial_style_name"] >> facial_hair_style
|
||||
S["grad_style"] >> grad_style
|
||||
S["grad_color"] >> grad_color
|
||||
S["underwear"] >> underwear
|
||||
S["undie_color"] >> undie_color
|
||||
S["undershirt"] >> undershirt
|
||||
@@ -528,6 +533,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
|
||||
hair_color = sanitize_hexcolor(hair_color, 3, 0)
|
||||
facial_hair_color = sanitize_hexcolor(facial_hair_color, 3, 0)
|
||||
grad_style = sanitize_inlist(grad_style, GLOB.hair_gradients_list)
|
||||
grad_color = sanitize_hexcolor(grad_color, 6, FALSE)
|
||||
eye_color = sanitize_hexcolor(eye_color, 3, 0)
|
||||
skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones)
|
||||
wing_color = sanitize_hexcolor(wing_color, 3, FALSE, "#FFFFFF")
|
||||
@@ -604,6 +611,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
WRITE_FILE(S["skin_tone"] , skin_tone)
|
||||
WRITE_FILE(S["hair_style_name"] , hair_style)
|
||||
WRITE_FILE(S["facial_style_name"] , facial_hair_style)
|
||||
WRITE_FILE(S["grad_style"] , grad_style)
|
||||
WRITE_FILE(S["grad_color"] , grad_color)
|
||||
WRITE_FILE(S["underwear"] , underwear)
|
||||
WRITE_FILE(S["body_size"] , body_size)
|
||||
WRITE_FILE(S["starting_weight"] , starting_weight)
|
||||
|
||||
@@ -190,16 +190,16 @@
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/trumpet
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/cak
|
||||
/datum/crafting_recipe/food/cakeperson
|
||||
name = "Living cake person"
|
||||
reqs = list(
|
||||
/obj/item/organ/brain = 1,
|
||||
/obj/item/organ/heart = 1,
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday = 3, //the cake person is quite fat, so more cake is needed. good thing b-day cakes are in mealvendors
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday = 1,
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab = 3,
|
||||
/datum/reagent/blood = 30,
|
||||
/datum/reagent/consumable/sprinkles = 5,
|
||||
/datum/reagent/teslium = 1 //To shock the whole thing into life
|
||||
)
|
||||
// result = /mob/living/simple_animal/cakegolem
|
||||
// subcategory = CAT_CAKE //Cat! Haha, get it? CAT? GET IT? We get it - Love Catpeople
|
||||
result = /mob/living/simple_animal/friendly/cakegolem
|
||||
subcategory = CAT_CAKE //Cat! Haha, get it? CAT? GET IT? We get it - Love Catpeople
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
|
||||
/datum/sprite_accessory/hair/gloomylong
|
||||
name = "Gloomy (Long)"
|
||||
icon_state = "hair_gloomy"
|
||||
icon_state = "hair_gloomylong"
|
||||
|
||||
/datum/sprite_accessory/hair/glossy
|
||||
name = "Glossy"
|
||||
@@ -535,7 +535,7 @@
|
||||
|
||||
/datum/sprite_accessory/hair/mohawk
|
||||
name = "Mohawk"
|
||||
icon_state = "hair_mohawk"
|
||||
icon_state = "hair_d"
|
||||
|
||||
/datum/sprite_accessory/hair/reversemohawk
|
||||
name = "Mohawk (Reverse)"
|
||||
@@ -833,6 +833,64 @@
|
||||
icon_state = "hair_tailhair2"
|
||||
ckeys_allowed = list("quotefox")
|
||||
|
||||
//Hair gradients
|
||||
|
||||
|
||||
/datum/sprite_accessory/hair_gradient
|
||||
icon = 'icons/mob/hair_gradients.dmi'
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/none
|
||||
name = "None"
|
||||
icon_state = "none"
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/fadeup
|
||||
name = "Fade Up"
|
||||
icon_state = "fadeup"
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/fadedown
|
||||
name = "Fade Down"
|
||||
icon_state = "fadedown"
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/vertical_split
|
||||
name = "Vertical Split"
|
||||
icon_state = "vsplit"
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/_split
|
||||
name = "Horizontal Split"
|
||||
icon_state = "bottomflat"
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/reflected
|
||||
name = "Reflected"
|
||||
icon_state = "reflected_high"
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/reflected_inverse
|
||||
name = "Reflected Inverse"
|
||||
icon_state = "reflected_inverse_high"
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/wavy
|
||||
name = "Wavy"
|
||||
icon_state = "wavy"
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/long_fade_up
|
||||
name = "Long Fade Up"
|
||||
icon_state = "long_fade_up"
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/long_fade_down
|
||||
name = "Long Fade Down"
|
||||
icon_state = "long_fade_down"
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/short_fade_up
|
||||
name = "Short Fade Up"
|
||||
icon_state = "short_fade_up"
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/short_fade_down
|
||||
name = "Short Fade Down"
|
||||
icon_state = "short_fade_down"
|
||||
|
||||
/datum/sprite_accessory/hair_gradient/wavy_spike
|
||||
name = "Spiked Wavy"
|
||||
icon_state = "wavy_spiked"
|
||||
|
||||
|
||||
|
||||
//Pod-people hairs
|
||||
|
||||
@@ -10,6 +10,14 @@
|
||||
var/hair_color = "000"
|
||||
var/hair_style = "Bald"
|
||||
|
||||
|
||||
///Colour used for the hair gradient.
|
||||
var/grad_color = "000"
|
||||
///Style used for the hair gradient.
|
||||
var/grad_style
|
||||
|
||||
|
||||
|
||||
//Facial hair colour and style
|
||||
var/facial_hair_color = "000"
|
||||
var/facial_hair_style = "Shaved"
|
||||
@@ -74,4 +82,4 @@
|
||||
var/last_fire_update
|
||||
var/account_id
|
||||
can_be_held = "micro"
|
||||
appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE
|
||||
appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE
|
||||
|
||||
@@ -16,6 +16,11 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
var/hair_alpha = 255 // the alpha used by the hair. 255 is completely solid, 0 is transparent.
|
||||
var/wing_color
|
||||
|
||||
///The gradient style used for the mob's hair.
|
||||
var/grad_style
|
||||
///The gradient color used to color the gradient.
|
||||
var/grad_color
|
||||
|
||||
var/use_skintones = 0 // does it use skintones or not? (spoiler alert this is only used by humans)
|
||||
var/exotic_blood = "" // If your race wants to bleed something other than bog standard blood, change this to reagent id.
|
||||
var/exotic_bloodtype = "" //If your race uses a non standard bloodtype (A+, O-, AB-, etc)
|
||||
@@ -426,6 +431,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
|
||||
if(!hair_hidden || dynamic_hair_suffix)
|
||||
var/mutable_appearance/hair_overlay = mutable_appearance(layer = -HAIR_LAYER)
|
||||
var/mutable_appearance/gradient_overlay = mutable_appearance(layer = -HAIR_LAYER)
|
||||
if(!hair_hidden && !H.getorgan(/obj/item/organ/brain)) //Applies the debrained overlay if there is no brain
|
||||
if(!(NOBLOOD in species_traits))
|
||||
hair_overlay.icon = 'icons/mob/human_face.dmi'
|
||||
@@ -461,6 +467,20 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
hair_overlay.color = "#" + hair_color
|
||||
else
|
||||
hair_overlay.color = "#" + H.hair_color
|
||||
|
||||
|
||||
//Gradients
|
||||
grad_style = H.grad_style
|
||||
grad_color = H.grad_color
|
||||
if(grad_style)
|
||||
var/datum/sprite_accessory/gradient = GLOB.hair_gradients_list[grad_style]
|
||||
var/icon/temp = icon(gradient.icon, gradient.icon_state)
|
||||
var/icon/temp_hair = icon(hair_file, hair_state)
|
||||
temp.Blend(temp_hair, ICON_ADD)
|
||||
gradient_overlay.icon = temp
|
||||
gradient_overlay.color = "#" + grad_color
|
||||
|
||||
|
||||
else
|
||||
hair_overlay.color = forced_colour
|
||||
hair_overlay.alpha = hair_alpha
|
||||
@@ -469,6 +489,8 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
hair_overlay.pixel_y += H.dna.species.offset_features[OFFSET_FACE][2]
|
||||
if(hair_overlay.icon)
|
||||
standing += hair_overlay
|
||||
standing += gradient_overlay
|
||||
|
||||
|
||||
if(standing.len)
|
||||
H.overlays_standing[HAIR_LAYER] = standing
|
||||
@@ -1818,26 +1840,20 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
. += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR
|
||||
return .
|
||||
*/
|
||||
if(HAS_TRAIT(H, TRAIT_FAT))
|
||||
. += (1 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_FATTER))
|
||||
. += (1.1 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_VERYFAT))
|
||||
. += (1.25 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_OBESE))//GS13 fat levels move speed decrease
|
||||
. += (1.5 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_MORBIDLYOBESE))
|
||||
. += (2 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_EXTREMELYOBESE))
|
||||
. += (2.5 - flight)
|
||||
if(HAS_TRAIT(H, TRAIT_BARELYMOBILE))
|
||||
. += 2.7
|
||||
if(HAS_TRAIT(H, TRAIT_IMMOBILE))
|
||||
. += 3 // No wings are going to lift that much off the ground
|
||||
if(HAS_TRAIT(H, TRAIT_BLOB))
|
||||
. += 4
|
||||
if(H.fatness)
|
||||
var/fatness_delay = (H.fatness / FATNESS_DIVISOR)
|
||||
if(H.fatness < FATNESS_LEVEL_BARELYMOBILE)
|
||||
fatness_delay = fatness_delay - flight
|
||||
|
||||
fatness_delay = min(fatness_delay, FATNESS_MAX_MOVE_PENALTY)
|
||||
if(HAS_TRAIT(H, TRAIT_WEAKLEGS) && (H.fatness > FATNESS_LEVEL_BLOB))
|
||||
fatness_delay += ((H.fatness - FATNESS_LEVEL_BLOB) * FATNESS_WEAKLEGS_MODIFIER) / FATNESS_DIVISOR
|
||||
|
||||
. += fatness_delay
|
||||
|
||||
if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !HAS_TRAIT(H, TRAIT_RESISTCOLD))
|
||||
. += (BODYTEMP_COLD_DAMAGE_LIMIT - H.bodytemperature) / COLD_SLOWDOWN_FACTOR
|
||||
|
||||
return .
|
||||
//////////////////
|
||||
// ATTACK PROCS //
|
||||
|
||||
@@ -85,8 +85,6 @@
|
||||
if(!mob.Process_Spacemove(direct))
|
||||
return FALSE
|
||||
|
||||
if(HAS_TRAIT(mob,TRAIT_BLOB) && HAS_TRAIT(mob,TRAIT_WEAKLEGS)) // 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
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
/mob/living/simple_animal/hostile/lizard,
|
||||
/mob/living/simple_animal/pet/fox,
|
||||
/mob/living/simple_animal/butterfly,
|
||||
// /mob/living/simple_animal/cakegolem //pet/cat/cak,
|
||||
/mob/living/simple_animal/friendly/cakegolem //pet/cat/cak,
|
||||
/mob/living/simple_animal/chick)
|
||||
new_mob = new path(M.loc)
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
pH = 8
|
||||
|
||||
/datum/reagent/toxin/minttoxin/on_mob_life(mob/living/carbon/M)
|
||||
if(HAS_TRAIT(M, TRAIT_FAT))
|
||||
if(HAS_TRAIT(M, TRAIT_BLOB))
|
||||
M.gib()
|
||||
return ..()
|
||||
|
||||
@@ -623,7 +623,7 @@
|
||||
M.nutrition = max(M.nutrition - 3, 0) // making the chef more valuable, one meme trap at a time
|
||||
else
|
||||
M.adjust_fatness(-10, FATTENING_TYPE_WEIGHT_LOSS)
|
||||
|
||||
|
||||
M.overeatduration = 0
|
||||
return ..()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user