mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 03:33:21 +00:00
Teshari Tweaks
This commit is contained in:
@@ -32,3 +32,10 @@
|
|||||||
if(!available_turfs.len)
|
if(!available_turfs.len)
|
||||||
available_turfs = start_turfs
|
available_turfs = start_turfs
|
||||||
return pick(available_turfs)
|
return pick(available_turfs)
|
||||||
|
|
||||||
|
/proc/is_below_sound_pressure(var/turf/T)
|
||||||
|
var/datum/gas_mixture/environment = T ? T.return_air() : null
|
||||||
|
var/pressure = environment ? environment.return_pressure() : 0
|
||||||
|
if(pressure < SOUND_MINIMUM_PRESSURE)
|
||||||
|
return TRUE
|
||||||
|
return FALSE
|
||||||
@@ -73,14 +73,14 @@
|
|||||||
// Turns a direction into text
|
// Turns a direction into text
|
||||||
/proc/dir2text(direction)
|
/proc/dir2text(direction)
|
||||||
switch (direction)
|
switch (direction)
|
||||||
if (1.0) return "north"
|
if (NORTH) return "north"
|
||||||
if (2.0) return "south"
|
if (SOUTH) return "south"
|
||||||
if (4.0) return "east"
|
if (EAST) return "east"
|
||||||
if (8.0) return "west"
|
if (WEST) return "west"
|
||||||
if (5.0) return "northeast"
|
if (NORTHEAST) return "northeast"
|
||||||
if (6.0) return "southeast"
|
if (SOUTHEAST) return "southeast"
|
||||||
if (9.0) return "northwest"
|
if (NORTHWEST) return "northwest"
|
||||||
if (10.0) return "southwest"
|
if (SOUTHWEST) return "southwest"
|
||||||
|
|
||||||
// Turns text into proper directions
|
// Turns text into proper directions
|
||||||
/proc/text2dir(direction)
|
/proc/text2dir(direction)
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
if(is_preference_enabled(/datum/client_preference/ghost_ears) && (speaker in view(src)))
|
if(is_preference_enabled(/datum/client_preference/ghost_ears) && (speaker in view(src)))
|
||||||
message = "<b>[message]</b>"
|
message = "<b>[message]</b>"
|
||||||
|
|
||||||
if((sdisabilities & DEAF) || ear_deaf)
|
if(is_deaf())
|
||||||
if(!language || !(language.flags & INNATE)) // INNATE is the flag for audible-emote-language, so we don't want to show an "x talks but you cannot hear them" message if it's set
|
if(!language || !(language.flags & INNATE)) // INNATE is the flag for audible-emote-language, so we don't want to show an "x talks but you cannot hear them" message if it's set
|
||||||
if(speaker == src)
|
if(speaker == src)
|
||||||
src << "<span class='warning'>You cannot hear yourself speak!</span>"
|
src << "<span class='warning'>You cannot hear yourself speak!</span>"
|
||||||
|
|||||||
@@ -90,6 +90,54 @@
|
|||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
/mob/living/carbon/human
|
||||||
|
var/next_sonar_ping = 0
|
||||||
|
|
||||||
|
/mob/living/carbon/human/proc/sonar_ping()
|
||||||
|
set name = "Listen In"
|
||||||
|
set desc = "Allows you to listen in to movement and noises around you."
|
||||||
|
set category = "Abilities"
|
||||||
|
|
||||||
|
if(incapacitated())
|
||||||
|
src << "<span class='warning'>You need to recover before you can use this ability.</span>"
|
||||||
|
return
|
||||||
|
if(world.time < next_sonar_ping)
|
||||||
|
src << "<span class='warning'>You need another moment to focus.</span>"
|
||||||
|
return
|
||||||
|
if(is_deaf() || is_below_sound_pressure(get_turf(src)))
|
||||||
|
src << "<span class='warning'>You are for all intents and purposes currently deaf!</span>"
|
||||||
|
return
|
||||||
|
next_sonar_ping += 10 SECONDS
|
||||||
|
var/heard_something = FALSE
|
||||||
|
src << "<span class='notice'>You take a moment to listen in to your environment...</span>"
|
||||||
|
for(var/mob/living/L in range(client.view, src))
|
||||||
|
var/turf/T = get_turf(L)
|
||||||
|
if(!T || L == src || L.stat == DEAD || is_below_sound_pressure(T))
|
||||||
|
continue
|
||||||
|
heard_something = TRUE
|
||||||
|
var/feedback = list()
|
||||||
|
feedback += "<span class='notice'>There are noises of movement "
|
||||||
|
var/direction = get_dir(src, L)
|
||||||
|
if(direction)
|
||||||
|
feedback += "towards the [dir2text(direction)], "
|
||||||
|
switch(get_dist(src, L) / client.view)
|
||||||
|
if(0 to 0.2)
|
||||||
|
feedback += "very close by."
|
||||||
|
if(0.2 to 0.4)
|
||||||
|
feedback += "close by."
|
||||||
|
if(0.4 to 0.6)
|
||||||
|
feedback += "some distance away."
|
||||||
|
if(0.6 to 0.8)
|
||||||
|
feedback += "further away."
|
||||||
|
else
|
||||||
|
feedback += "far away."
|
||||||
|
else // No need to check distance if they're standing right on-top of us
|
||||||
|
feedback += "right on top of you."
|
||||||
|
feedback += "</span>"
|
||||||
|
src << jointext(feedback,null)
|
||||||
|
if(!heard_something)
|
||||||
|
src << "<span class='notice'>You hear no movement but your own.</span>"
|
||||||
|
|
||||||
#undef HUMAN_EATING_NO_ISSUE
|
#undef HUMAN_EATING_NO_ISSUE
|
||||||
#undef HUMAN_EATING_NO_MOUTH
|
#undef HUMAN_EATING_NO_MOUTH
|
||||||
#undef HUMAN_EATING_BLOCKED_MOUTH
|
#undef HUMAN_EATING_BLOCKED_MOUTH
|
||||||
|
|||||||
@@ -31,8 +31,9 @@
|
|||||||
brute_mod = 1.35
|
brute_mod = 1.35
|
||||||
burn_mod = 1.35
|
burn_mod = 1.35
|
||||||
mob_size = MOB_SMALL
|
mob_size = MOB_SMALL
|
||||||
|
pass_flags = PASSTABLE
|
||||||
holder_type = /obj/item/weapon/holder/human
|
holder_type = /obj/item/weapon/holder/human
|
||||||
short_sighted = 1
|
// short_sighted = 1
|
||||||
gluttonous = 1
|
gluttonous = 1
|
||||||
blood_volume = 400
|
blood_volume = 400
|
||||||
hunger_factor = 0.2
|
hunger_factor = 0.2
|
||||||
@@ -84,40 +85,13 @@
|
|||||||
/datum/unarmed_attack/claws,
|
/datum/unarmed_attack/claws,
|
||||||
/datum/unarmed_attack/stomp/weak
|
/datum/unarmed_attack/stomp/weak
|
||||||
)
|
)
|
||||||
/*
|
|
||||||
var/shock_cap = 30
|
|
||||||
var/hallucination_cap = 25
|
|
||||||
|
|
||||||
// I'm... so... ronrery, so ronery...
|
inherent_verbs = list(
|
||||||
/datum/species/teshari/handle_environment_special(var/mob/living/carbon/human/H)
|
/mob/living/carbon/human/proc/sonar_ping,
|
||||||
|
/mob/living/proc/hide
|
||||||
// If they're dead or unconcious they're a bit beyond this kind of thing.
|
)
|
||||||
if(H.stat)
|
|
||||||
return
|
|
||||||
|
|
||||||
// No point processing if we're already stressing the hell out.
|
|
||||||
if(H.hallucination >= hallucination_cap && H.shock_stage >= shock_cap)
|
|
||||||
return
|
|
||||||
|
|
||||||
// Check for company.
|
|
||||||
for(var/mob/living/M in viewers(H))
|
|
||||||
if(M == H || M.stat == DEAD || M.invisibility > H.see_invisible)
|
|
||||||
continue
|
|
||||||
if(M.faction == "neutral" || M.faction == H.faction)
|
|
||||||
return
|
|
||||||
|
|
||||||
// No company? Suffer :(
|
|
||||||
if(H.shock_stage < shock_cap)
|
|
||||||
H.shock_stage += 1
|
|
||||||
if(H.shock_stage >= shock_cap && H.hallucination < hallucination_cap)
|
|
||||||
H.hallucination += 2.5
|
|
||||||
*/
|
|
||||||
/datum/species/teshari/get_vision_flags(var/mob/living/carbon/human/H)
|
|
||||||
if(!(H.sdisabilities & DEAF) && !H.ear_deaf)
|
|
||||||
return SEE_SELF|SEE_MOBS
|
|
||||||
else
|
|
||||||
return SEE_SELF
|
|
||||||
|
|
||||||
/datum/species/teshari/equip_survival_gear(var/mob/living/carbon/human/H)
|
/datum/species/teshari/equip_survival_gear(var/mob/living/carbon/human/H)
|
||||||
..()
|
..()
|
||||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)
|
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes)
|
||||||
|
|
||||||
|
|||||||
@@ -50,13 +50,13 @@
|
|||||||
if(!client) return
|
if(!client) return
|
||||||
|
|
||||||
if (type)
|
if (type)
|
||||||
if((type & 1) && ((sdisabilities & BLIND) || blinded || paralysis) )//Vision related
|
if((type & 1) && (is_blind() || paralysis) )//Vision related
|
||||||
if (!( alt ))
|
if (!( alt ))
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
msg = alt
|
msg = alt
|
||||||
type = alt_type
|
type = alt_type
|
||||||
if ((type & 2) && ((sdisabilities & DEAF) || ear_deaf))//Hearing related
|
if ((type & 2) && is_deaf())//Hearing related
|
||||||
if (!( alt ))
|
if (!( alt ))
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
@@ -154,6 +154,12 @@
|
|||||||
return UNBUCKLED
|
return UNBUCKLED
|
||||||
return restrained() ? FULLY_BUCKLED : PARTIALLY_BUCKLED
|
return restrained() ? FULLY_BUCKLED : PARTIALLY_BUCKLED
|
||||||
|
|
||||||
|
/mob/proc/is_blind()
|
||||||
|
return ((sdisabilities & BLIND) || blinded || incapacitated(INCAPACITATION_KNOCKOUT))
|
||||||
|
|
||||||
|
/mob/proc/is_deaf()
|
||||||
|
return ((sdisabilities & DEAF) || ear_deaf || incapacitated(INCAPACITATION_KNOCKOUT))
|
||||||
|
|
||||||
/mob/proc/is_physically_disabled()
|
/mob/proc/is_physically_disabled()
|
||||||
return incapacitated(INCAPACITATION_DISABLED)
|
return incapacitated(INCAPACITATION_DISABLED)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user