mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
* Refactors ear damage into ear organs 🆑 coiax add: Centcom would like to inform all employees that they have ears. add: Adds "ear" organs to all carbons. These organs store ear damage and deafness. A carbon without any ears is deaf. Genetic deafness functions as before. /🆑 - `ear_damage` and `ear_deaf` vars removed from /mob. - All mobs have a `can_hear` proc, which returns TRUE always except for carbons. - Carbons need to have an ear organ that has 0 `deaf` var. - Explanation of how ear damage works is in the code, it hasn't been changed from previously. Deafness is applied in number of Life ticks until you regain hearing, while damage is long team, heals slower, and when high enough, can cause flashbangs to make you go permamently deaf, as before. - Wearing earmuffs halves the healing time of deafness, and promotes healing long term ear damage, as before. Earmuffs now have a secondary flag HEALS_EARS, which currently only they own. * Changes how soundbang deafness works slightly * Ear organ icon * Code review I * Makes fully healing carbons not dependent on having a dna and species * Gives monkeys and aliens ears * Whoops * Split organs into seperate files * Tweaks. * Un-removes brain damage lines * Moved procs onto /mob for ear stuff * Massages things into compiling * Replacement of spam_flag with world.time tracker
268 lines
7.5 KiB
Plaintext
268 lines
7.5 KiB
Plaintext
|
|
//Here are the procs used to modify status effects of a mob.
|
|
//The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage,
|
|
// eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability.
|
|
|
|
/////////////////////////////////// STUNNED ////////////////////////////////////
|
|
|
|
/mob/proc/Stun(amount, updating = 1, ignore_canstun = 0)
|
|
if(status_flags & CANSTUN || ignore_canstun)
|
|
stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun
|
|
if(updating)
|
|
update_canmove()
|
|
return TRUE
|
|
|
|
/mob/proc/SetStunned(amount, updating = 1, ignore_canstun = 0) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned"
|
|
if(status_flags & CANSTUN || ignore_canstun)
|
|
stunned = max(amount,0)
|
|
if(updating)
|
|
update_canmove()
|
|
return TRUE
|
|
|
|
/mob/proc/AdjustStunned(amount, updating = 1, ignore_canstun = 0)
|
|
if(status_flags & CANSTUN || ignore_canstun)
|
|
stunned = max(stunned + amount,0)
|
|
if(updating)
|
|
update_canmove()
|
|
return TRUE
|
|
|
|
/////////////////////////////////// WEAKENED ////////////////////////////////////
|
|
|
|
/mob/proc/Weaken(amount, updating = 1, ignore_canweaken = 0)
|
|
if((status_flags & CANWEAKEN) || ignore_canweaken)
|
|
weakened = max(max(weakened,amount),0)
|
|
if(updating)
|
|
update_canmove() //updates lying, canmove and icons
|
|
return TRUE
|
|
|
|
/mob/proc/SetWeakened(amount, updating = 1, ignore_canweaken = 0)
|
|
if(status_flags & CANWEAKEN)
|
|
weakened = max(amount,0)
|
|
if(updating)
|
|
update_canmove() //updates lying, canmove and icons
|
|
return TRUE
|
|
|
|
/mob/proc/AdjustWeakened(amount, updating = 1, ignore_canweaken = 0)
|
|
if((status_flags & CANWEAKEN) || ignore_canweaken)
|
|
weakened = max(weakened + amount,0)
|
|
if(updating)
|
|
update_canmove() //updates lying, canmove and icons
|
|
return TRUE
|
|
|
|
/////////////////////////////////// PARALYSIS ////////////////////////////////////
|
|
|
|
/mob/proc/Paralyse(amount, updating = 1, ignore_canparalyse = 0)
|
|
if(status_flags & CANPARALYSE || ignore_canparalyse)
|
|
var/old_paralysis = paralysis
|
|
paralysis = max(max(paralysis,amount),0)
|
|
if((!old_paralysis && paralysis) || (old_paralysis && !paralysis))
|
|
if(updating)
|
|
update_stat()
|
|
return TRUE
|
|
|
|
/mob/proc/SetParalysis(amount, updating = 1, ignore_canparalyse = 0)
|
|
if(status_flags & CANPARALYSE || ignore_canparalyse)
|
|
var/old_paralysis = paralysis
|
|
paralysis = max(amount,0)
|
|
if((!old_paralysis && paralysis) || (old_paralysis && !paralysis))
|
|
if(updating)
|
|
update_stat()
|
|
return TRUE
|
|
|
|
/mob/proc/AdjustParalysis(amount, updating = 1, ignore_canparalyse = 0)
|
|
if(status_flags & CANPARALYSE || ignore_canparalyse)
|
|
var/old_paralysis = paralysis
|
|
paralysis = max(paralysis + amount,0)
|
|
if((!old_paralysis && paralysis) || (old_paralysis && !paralysis))
|
|
if(updating)
|
|
update_stat()
|
|
return TRUE
|
|
|
|
/////////////////////////////////// SLEEPING ////////////////////////////////////
|
|
|
|
/mob/proc/Sleeping(amount, updating = 1, no_alert = FALSE)
|
|
var/old_sleeping = sleeping
|
|
sleeping = max(max(sleeping,amount),0)
|
|
if(!old_sleeping && sleeping)
|
|
if(!no_alert)
|
|
throw_alert("asleep", /obj/screen/alert/asleep)
|
|
if(updating)
|
|
update_stat()
|
|
else if(old_sleeping && !sleeping)
|
|
clear_alert("asleep")
|
|
if(updating)
|
|
update_stat()
|
|
|
|
/mob/proc/SetSleeping(amount, updating = 1, no_alert = FALSE)
|
|
var/old_sleeping = sleeping
|
|
sleeping = max(amount,0)
|
|
if(!old_sleeping && sleeping)
|
|
if(!no_alert)
|
|
throw_alert("asleep", /obj/screen/alert/asleep)
|
|
if(updating)
|
|
update_stat()
|
|
else if(old_sleeping && !sleeping)
|
|
clear_alert("asleep")
|
|
if(updating)
|
|
update_stat()
|
|
|
|
/mob/proc/AdjustSleeping(amount, updating = 1, no_alert = FALSE)
|
|
var/old_sleeping = sleeping
|
|
sleeping = max(sleeping + amount,0)
|
|
if(!old_sleeping && sleeping)
|
|
if(!no_alert)
|
|
throw_alert("asleep", /obj/screen/alert/asleep)
|
|
if(updating)
|
|
update_stat()
|
|
else if(old_sleeping && !sleeping)
|
|
clear_alert("asleep")
|
|
if(updating)
|
|
update_stat()
|
|
|
|
/////////////////////////////////// RESTING ////////////////////////////////////
|
|
|
|
/mob/proc/Resting(amount)
|
|
resting = max(max(resting,amount),0)
|
|
update_canmove()
|
|
|
|
/mob/proc/SetResting(amount)
|
|
resting = max(amount,0)
|
|
update_canmove()
|
|
|
|
/mob/proc/AdjustResting(amount)
|
|
resting = max(resting + amount,0)
|
|
update_canmove()
|
|
|
|
/////////////////////////////////// JITTERINESS ////////////////////////////////////
|
|
|
|
/mob/proc/Jitter(amount)
|
|
jitteriness = max(jitteriness,amount,0)
|
|
|
|
/////////////////////////////////// DIZZINESS ////////////////////////////////////
|
|
|
|
/mob/proc/Dizzy(amount)
|
|
dizziness = max(dizziness,amount,0)
|
|
|
|
/////////////////////////////////// EYE DAMAGE ////////////////////////////////////
|
|
|
|
/mob/proc/damage_eyes(amount)
|
|
return
|
|
|
|
/mob/proc/adjust_eye_damage(amount)
|
|
return
|
|
|
|
/mob/proc/set_eye_damage(amount)
|
|
return
|
|
|
|
/////////////////////////////////// EYE_BLIND ////////////////////////////////////
|
|
|
|
/mob/proc/blind_eyes(amount)
|
|
if(amount>0)
|
|
var/old_eye_blind = eye_blind
|
|
eye_blind = max(eye_blind, amount)
|
|
if(!old_eye_blind)
|
|
if(stat == CONSCIOUS)
|
|
throw_alert("blind", /obj/screen/alert/blind)
|
|
overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
|
|
|
|
/mob/proc/adjust_blindness(amount)
|
|
if(amount>0)
|
|
var/old_eye_blind = eye_blind
|
|
eye_blind += amount
|
|
if(!old_eye_blind)
|
|
if(stat == CONSCIOUS)
|
|
throw_alert("blind", /obj/screen/alert/blind)
|
|
overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
|
|
else if(eye_blind)
|
|
var/blind_minimum = 0
|
|
if(stat != CONSCIOUS || (disabilities & BLIND))
|
|
blind_minimum = 1
|
|
eye_blind = max(eye_blind+amount, blind_minimum)
|
|
if(!eye_blind)
|
|
clear_alert("blind")
|
|
clear_fullscreen("blind")
|
|
|
|
/mob/proc/set_blindness(amount)
|
|
if(amount>0)
|
|
var/old_eye_blind = eye_blind
|
|
eye_blind = amount
|
|
if(client && !old_eye_blind)
|
|
if(stat == CONSCIOUS)
|
|
throw_alert("blind", /obj/screen/alert/blind)
|
|
overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
|
|
else if(eye_blind)
|
|
var/blind_minimum = 0
|
|
if(stat != CONSCIOUS || (disabilities & BLIND))
|
|
blind_minimum = 1
|
|
eye_blind = blind_minimum
|
|
if(!eye_blind)
|
|
clear_alert("blind")
|
|
clear_fullscreen("blind")
|
|
|
|
/////////////////////////////////// EYE_BLURRY ////////////////////////////////////
|
|
|
|
/mob/proc/blur_eyes(amount)
|
|
if(amount>0)
|
|
var/old_eye_blurry = eye_blurry
|
|
eye_blurry = max(amount, eye_blurry)
|
|
if(!old_eye_blurry)
|
|
overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry)
|
|
|
|
/mob/proc/adjust_blurriness(amount)
|
|
var/old_eye_blurry = eye_blurry
|
|
eye_blurry = max(eye_blurry+amount, 0)
|
|
if(amount>0)
|
|
if(!old_eye_blurry)
|
|
overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry)
|
|
else if(old_eye_blurry && !eye_blurry)
|
|
clear_fullscreen("blurry")
|
|
|
|
/mob/proc/set_blurriness(amount)
|
|
var/old_eye_blurry = eye_blurry
|
|
eye_blurry = max(amount, 0)
|
|
if(amount>0)
|
|
if(!old_eye_blurry)
|
|
overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry)
|
|
else if(old_eye_blurry)
|
|
clear_fullscreen("blurry")
|
|
|
|
/////////////////////////////////// DRUGGY ////////////////////////////////////
|
|
|
|
/mob/proc/adjust_drugginess(amount)
|
|
return
|
|
|
|
/mob/proc/set_drugginess(amount)
|
|
return
|
|
|
|
/////////////////////////////////// BLIND DISABILITY ////////////////////////////////////
|
|
|
|
/mob/proc/cure_blind() //when we want to cure the BLIND disability only.
|
|
return
|
|
|
|
/mob/proc/become_blind()
|
|
return
|
|
|
|
/////////////////////////////////// NEARSIGHT DISABILITY ////////////////////////////////////
|
|
|
|
/mob/proc/cure_nearsighted()
|
|
return
|
|
|
|
/mob/proc/become_nearsighted()
|
|
return
|
|
|
|
|
|
//////////////////////////////// HUSK DISABILITY ///////////////////////////:
|
|
|
|
/mob/proc/cure_husk()
|
|
return
|
|
|
|
/mob/proc/become_husk()
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|