mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-11 07:59:08 +01:00
Merge branch 'master' into plant-adding
This commit is contained in:
@@ -389,7 +389,10 @@
|
||||
if(!arrivals_docked)
|
||||
var/obj/screen/splash/Spl = new(character.client, TRUE)
|
||||
Spl.Fade(TRUE)
|
||||
character.playsound_local(get_turf(character), 'sound/voice/ApproachingTG.ogg', 25)
|
||||
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.update_parallax_teleport()
|
||||
|
||||
@@ -589,12 +592,9 @@
|
||||
H.name = real_name
|
||||
//h13 assign your characters custom height.
|
||||
if (H.custom_body_size) //Do they have it set?
|
||||
//H.size_multiplier = (max(min( round((H.custom_body_size)), MAX_BODYSIZE),MIN_BODYSIZE)* 0.01) //Old method
|
||||
H.resize(H.custom_body_size * 0.01)
|
||||
//h13 give your starting impregchance (30%)
|
||||
if (H.breedable == TRUE)
|
||||
H.impregchance = 30
|
||||
|
||||
. = H
|
||||
new_character = .
|
||||
if(transfer_after)
|
||||
|
||||
@@ -470,7 +470,17 @@
|
||||
/datum/sprite_accessory/hair/quotey
|
||||
name = "Tail Hair"
|
||||
icon_state = "hair_tailhair"
|
||||
ckeys_allowed = list("quotefox")
|
||||
|
||||
/datum/sprite_accessory/hair/mommy
|
||||
name = "Hairfre"
|
||||
name = "(Hyper) Hairfre"
|
||||
icon_state = "hair_hairfre"
|
||||
|
||||
/datum/sprite_accessory/hair/sidehair
|
||||
name = "(Hyper) Side Hair"
|
||||
icon_state = "hair_tailhair2"
|
||||
ckeys_allowed = list("quotefox")
|
||||
|
||||
/datum/sprite_accessory/hair/curtains
|
||||
name = "(Hyper) Curtains"
|
||||
icon_state = "hair_curtains"
|
||||
|
||||
@@ -85,6 +85,10 @@
|
||||
icon_state = "socks_short"
|
||||
has_color = TRUE
|
||||
|
||||
/datum/sprite_accessory/underwear/socks/stockings_black
|
||||
name = "Stockings - Black"
|
||||
icon_state = "stockings_black"
|
||||
|
||||
/datum/sprite_accessory/underwear/socks/stockings_blue
|
||||
name = "Stockings - Blue"
|
||||
icon_state = "stockings_blue"
|
||||
|
||||
@@ -343,3 +343,10 @@
|
||||
/datum/sprite_accessory/underwear/top/cowboyshirt/red/s
|
||||
name = "Cowboy Shirt Shortsleeved Red"
|
||||
icon_state = "cowboyshirt_reds"
|
||||
|
||||
|
||||
/datum/sprite_accessory/underwear/top/arms
|
||||
name = "Arm Warmers"
|
||||
icon_state = "armwarmer"
|
||||
has_color = TRUE
|
||||
gender = FEMALE
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
if(bleed_rate < 0)
|
||||
bleed_rate = 0
|
||||
|
||||
|
||||
if(HAS_TRAIT(src, TRAIT_NOMARROW)) //Bloodsuckers don't need to be here.
|
||||
return
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
//Blood regeneration if there is some space
|
||||
if(blood_volume < (BLOOD_VOLUME_NORMAL * blood_ratio) && !HAS_TRAIT(src, TRAIT_NOHUNGER))
|
||||
var/nutrition_ratio = 0
|
||||
var/thirst_ratio = 1
|
||||
switch(nutrition)
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
nutrition_ratio = 0.2
|
||||
@@ -60,6 +61,7 @@
|
||||
if(satiety > 80)
|
||||
nutrition_ratio *= 1.25
|
||||
nutrition = max(0, nutrition - nutrition_ratio * HUNGER_FACTOR)
|
||||
thirst = max(0, thirst - thirst_ratio * THIRST_FACTOR)
|
||||
blood_volume = min((BLOOD_VOLUME_NORMAL * blood_ratio), blood_volume + 0.5 * nutrition_ratio)
|
||||
|
||||
//Effects of bloodloss
|
||||
|
||||
@@ -286,7 +286,19 @@
|
||||
var/mob/living/carbon/human/H = src
|
||||
var/datum/species/pref_species = H.dna.species
|
||||
|
||||
if(HAS_TRAIT(H, TRAIT_HEADPAT_SLUT))
|
||||
if(HAS_TRAIT(H, TRAIT_DISTANT)) //No mood buff since you're not really liking it.
|
||||
M.visible_message("<span class='notice'>[M] gives [H] a pat on the head to make [p_them()] feel better! They seem annoyed...</span>", \
|
||||
"<span class='warning'>You give [H] a pat on the head to make [p_them()] feel better! They seem annoyed as they're now glaring towards you...</span>")
|
||||
H.adjustArousalLoss(-5) //Why are you touching me?
|
||||
if(prob(5))
|
||||
M.visible_message("<span class='warning'>[H] quickly twists [M]\'s arm!</span>", \
|
||||
"<span class='boldwarning'>Your arm gets twisted in [H]\'s grasp. Maybe you should have taken the hint...</span>")
|
||||
playsound(get_turf(H), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
M.emote("scream")
|
||||
M.dropItemToGround(M.get_active_held_item())
|
||||
M.apply_damage(50, STAMINA, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
||||
M.Knockdown(60)//STOP TOUCHING ME! For those spam head pat individuals
|
||||
else if(HAS_TRAIT(H, TRAIT_HEADPAT_SLUT))
|
||||
M.visible_message("<span class='notice'>[M] gives [H] a pat on the head to make [p_them()] feel better! They seem incredibly pleased!</span>", \
|
||||
"<span class='notice'>You give [H] a pat on the head to make [p_them()] feel better! They seem to like it way too much</span>")
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "lewd_headpat", /datum/mood_event/lewd_headpat)
|
||||
@@ -302,7 +314,10 @@
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/besthug, M)
|
||||
else if (mood.sanity >= SANITY_DISTURBED)
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/betterhug, M)
|
||||
if(H.dna.species.can_wag_tail(H))
|
||||
|
||||
if(HAS_TRAIT(H, TRAIT_DISTANT))
|
||||
return
|
||||
else if(H.dna.species.can_wag_tail(H))
|
||||
if("tail_human" in pref_species.default_features)
|
||||
if(H.dna.features["tail_human"] == "None")
|
||||
return
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
if(HAS_TRAIT(src, TRAIT_NOHUNGER))
|
||||
nutrition = NUTRITION_LEVEL_FED - 1 //just less than feeling vigorous
|
||||
else if(nutrition && stat != DEAD)
|
||||
nutrition -= HUNGER_FACTOR/10
|
||||
nutrition -= HUNGER_FACTOR/12
|
||||
thirst -= THIRST_FACTOR/12
|
||||
if(m_intent == MOVE_INTENT_RUN)
|
||||
nutrition -= HUNGER_FACTOR/10
|
||||
nutrition -= HUNGER_FACTOR/5
|
||||
thirst -= THIRST_FACTOR/5 //running around depleats thirst more so.
|
||||
@@ -100,6 +100,7 @@
|
||||
stat("Unique Identity:", "[dna.unique_enzymes]")
|
||||
stat("Overall Status:", "[stat > 1 ? "dead" : "[health]% healthy"]")
|
||||
stat("Nutrition Status:", "[nutrition]")
|
||||
stat("Hydration Status:", "[thirst]")
|
||||
stat("Oxygen Loss:", "[getOxyLoss()]")
|
||||
stat("Toxin Levels:", "[getToxLoss()]")
|
||||
stat("Burn Severity:", "[getFireLoss()]")
|
||||
|
||||
@@ -68,5 +68,5 @@
|
||||
var/static/list/can_ride_typecache = typecacheof(list(/mob/living/carbon/human, /mob/living/simple_animal/slime, /mob/living/simple_animal/parrot))
|
||||
var/lastpuke = 0
|
||||
var/last_fire_update
|
||||
|
||||
var/account_id
|
||||
can_be_held = "micro"
|
||||
|
||||
@@ -132,6 +132,7 @@
|
||||
to_chat(src, "<span class='warning'>Use of ranged weaponry would bring dishonor to the clan.</span>")
|
||||
return FALSE
|
||||
|
||||
|
||||
/mob/living/carbon/human/can_see_reagents()
|
||||
. = ..()
|
||||
if(.) //No need to run through all of this if it's already true.
|
||||
|
||||
@@ -1243,6 +1243,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if (H.nutrition > 0 && H.stat != DEAD && !HAS_TRAIT(H, TRAIT_NOHUNGER))
|
||||
// THEY HUNGER
|
||||
var/hunger_rate = HUNGER_FACTOR
|
||||
var/thirst_rate = THIRST_FACTOR
|
||||
var/datum/component/mood/mood = H.GetComponent(/datum/component/mood)
|
||||
if(mood && mood.sanity > SANITY_DISTURBED)
|
||||
hunger_rate *= max(0.5, 1 - 0.002 * mood.sanity) //0.85 to 0.75
|
||||
@@ -1261,6 +1262,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
hunger_rate = 3 * HUNGER_FACTOR
|
||||
hunger_rate *= H.physiology.hunger_mod
|
||||
H.nutrition = max(0, H.nutrition - hunger_rate)
|
||||
H.thirst = max(0, H.thirst - thirst_rate)
|
||||
|
||||
|
||||
if (H.nutrition > NUTRITION_LEVEL_FULL)
|
||||
@@ -1296,6 +1298,14 @@ GLOBAL_LIST_EMPTY(roundstart_races)
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
H.throw_alert("nutrition", /obj/screen/alert/starving)
|
||||
|
||||
switch(H.thirst)
|
||||
if(NUTRITION_LEVEL_HUNGRY to INFINITY)
|
||||
H.clear_alert("thirst")
|
||||
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
|
||||
H.throw_alert("thirst", /obj/screen/alert/thirsty)
|
||||
if(0 to NUTRITION_LEVEL_STARVING)
|
||||
H.throw_alert("thirst", /obj/screen/alert/dehydrated)
|
||||
|
||||
/datum/species/proc/update_health_hud(mob/living/carbon/human/H)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -26,9 +26,6 @@
|
||||
use_skintones = FALSE
|
||||
var/datum/martial_art/mushpunch/mush
|
||||
|
||||
/datum/species/mush/after_equip_job(datum/job/J, mob/living/carbon/human/H)
|
||||
H.grant_language(/datum/language/mushroom) //pomf pomf
|
||||
|
||||
/datum/species/mush/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
. = ..()
|
||||
if(ishuman(C))
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
if(HAS_TRAIT(B, TRAIT_CHOKE_SLUT))
|
||||
B.adjustArousalLoss(7)
|
||||
if (B.getArousalLoss() >= 100 && ishuman(B) && B.has_dna())
|
||||
B.mob_climax(forced_climax=TRUE)
|
||||
B.mob_climax(forced_climax=TRUE)
|
||||
else
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "suffocation", /datum/mood_event/suffocation)
|
||||
else
|
||||
@@ -285,6 +285,27 @@
|
||||
var/nitryl_partialpressure = (breath_gases[/datum/gas/nitryl]/breath.total_moles())*breath_pressure
|
||||
adjustFireLoss(nitryl_partialpressure/4)
|
||||
|
||||
//PHEROMONE
|
||||
if(breath_gases[/datum/gas/pheromone])
|
||||
var/pheromone_partialpressure = (breath_gases[/datum/gas/pheromone]/breath.total_moles())*breath_pressure
|
||||
if(pheromone_partialpressure > MINIMUM_MOLES_DELTA_TO_MOVE)
|
||||
|
||||
//pheromone side effects
|
||||
switch(pheromone_partialpressure)
|
||||
if(1 to 5)
|
||||
// At lower pp, give out a little warning
|
||||
SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "smell")
|
||||
if(prob(5))
|
||||
to_chat(src, "<span class='notice'>There is an entracing smell in the air.</span>")
|
||||
if(5 to 20)
|
||||
//At somewhat higher pp, warning becomes more obvious
|
||||
if(prob(15))
|
||||
to_chat(src, "<span class='warning'>You smell something enticing inside this room.</span>")
|
||||
if(15 to INFINITY)
|
||||
//Small chance to vomit. By now, people have internals on anyway
|
||||
if(prob(5))
|
||||
to_chat(src, "<span class='warning'>The enticing smell is unbearable!</span>")
|
||||
|
||||
//MIASMA
|
||||
if(breath_gases[/datum/gas/miasma])
|
||||
var/miasma_partialpressure = (breath_gases[/datum/gas/miasma]/breath.total_moles())*breath_pressure
|
||||
@@ -407,7 +428,7 @@
|
||||
if(O)
|
||||
O.on_life()
|
||||
else
|
||||
if(reagents.has_reagent("formaldehyde", 1)) // No organ decay if the body contains formaldehyde.
|
||||
if(reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 1)) // No organ decay if the body contains formaldehyde.
|
||||
return
|
||||
for(var/V in internal_organs)
|
||||
var/obj/item/organ/O = V
|
||||
|
||||
@@ -174,6 +174,10 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
|
||||
src.log_talk(message, LOG_SAY, forced_by=forced)
|
||||
|
||||
message = treat_message(message) // unfortunately we still need this
|
||||
|
||||
if(client?.prefs.autocorrect)
|
||||
message = autocorrect(message)
|
||||
|
||||
var/sigreturn = SEND_SIGNAL(src, COMSIG_MOB_SAY, args)
|
||||
if (sigreturn & COMPONENT_UPPERCASE_SPEECH)
|
||||
message = uppertext(message)
|
||||
|
||||
@@ -106,6 +106,7 @@
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 10
|
||||
poison_per_bite = 3
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
var/atom/movable/cocoon_target
|
||||
var/fed = 0
|
||||
var/obj/effect/proc_holder/wrap/wrap
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
var/dizziness = 0//Carbon
|
||||
var/jitteriness = 0//Carbon
|
||||
var/nutrition = NUTRITION_LEVEL_START_MIN // randomised in Initialize
|
||||
var/thirst = NUTRITION_LEVEL_START_MIN // randomised in Initialize
|
||||
var/satiety = 0//Carbon
|
||||
|
||||
var/overeatduration = 0 // How long this guy is overeating //Carbon
|
||||
|
||||
@@ -528,3 +528,12 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
|
||||
//Can the mob see reagents inside of containers?
|
||||
/mob/proc/can_see_reagents()
|
||||
return stat == DEAD || has_unlimited_silicon_privilege //Dead guys and silicons can always see reagents
|
||||
|
||||
/mob/proc/can_read(obj/O)
|
||||
if(is_blind())
|
||||
to_chat(src, "<span class='warning'>As you are trying to read [O], you suddenly feel very stupid!</span>")
|
||||
return
|
||||
if(!is_literate())
|
||||
to_chat(src, "<span class='notice'>You try to read [O], but can't comprehend any of it.</span>")
|
||||
return
|
||||
return TRUE
|
||||
|
||||
Reference in New Issue
Block a user