Ports over the status effect unification

This commit is contained in:
Crazylemon64
2016-10-23 15:45:35 -07:00
parent da78a85781
commit 6a7f7394a8
135 changed files with 1501 additions and 743 deletions
+15
View File
@@ -85,3 +85,18 @@ var/gaussian_next
gaussian_next = R2 * working
return (mean + stddev * R1)
#undef ACCURACY
// oof, what a mouthful
// Used in status_procs' "adjust" to let them modify a status effect by a given
// amount, without inadverdently increasing it in the wrong direction
/proc/directional_bounded_sum(orig_val, modifier, bound_lower, bound_upper)
var/new_val = orig_val + modifier
if(modifier > 0)
if(new_val > bound_upper)
new_val = max(orig_val, bound_upper)
else if(modifier < 0)
if(new_val < bound_lower)
new_val = min(orig_val, bound_lower)
return new_val
+1 -1
View File
@@ -62,7 +62,7 @@
CtrlClickOn(A)
return
if(stat || paralysis || stunned || weakened)
if(incapacitated(ignore_restraints = 1, ignore_grab = 1, ignore_lying = 1))
return
face_atom(A)
+1 -1
View File
@@ -39,7 +39,7 @@
CtrlClickOn(A)
return
if(stat || lockcharge || weakened || stunned || paralysis)
if(incapacitated())
return
if(next_move >= world.time)
@@ -35,6 +35,6 @@ Bonus
to_chat(M, "<span class='warning'>[pick("Your head hurts.", "Your mind blanks for a moment.")]</span>")
else
to_chat(M, "<span class='userdanger'>You can't think straight!</span>")
M.confused = min(100, M.confused + 8)
M.AdjustConfused(8, bound_lower = 0, bound_upper = 100)
return
@@ -33,11 +33,11 @@ Bonus
if(3, 4)
to_chat(M, "<span class='warning'>[pick("You hear a ringing in your ear.", "Your ears pop.")]</span>")
if(5)
if(!(M.ear_deaf))
if(!(M.disabilities & DEAF))
to_chat(M, "<span class='userdanger'>Your ears pop and begin ringing loudly!</span>")
M.setEarDamage(-1,INFINITY) //Shall be enough
M.BecomeDeaf()
spawn(200)
if(M)
to_chat(M, "<span class='warning'>The ringing in your ears fades...</span>")
M.setEarDamage(-1,0)
return
M.CureDeaf()
return
@@ -36,6 +36,6 @@ Bonus
to_chat(M, "<span class='warning'><b>[pick("Something is following you.", "You are being watched.", "You hear a whisper in your ear.", "Thumping footsteps slam toward you from nowhere.")]</b></span>")
else
to_chat(M, "<span class='userdanger'>[pick("Oh, your head...", "Your head pounds.", "They're everywhere! Run!", "Something in the shadows...")]</span>")
M.hallucination += 5
M.AdjustHallucinate(5)
return
+4 -4
View File
@@ -24,18 +24,18 @@
to_chat(affected_mob, "<span class='notice'>You feel panicky.</span>")
if(prob(2))
to_chat(affected_mob, "<span class='danger'>You're overtaken with panic!</span>")
affected_mob.confused += (rand(2,3))
affected_mob.AdjustConfused(rand(2,3))
if(4)
if(prob(10))
to_chat(affected_mob, "<span class='danger'>You feel butterflies in your stomach.</span>")
if(prob(5))
affected_mob.visible_message("<span class='danger'>[affected_mob] stumbles around in a panic.</span>", \
"<span class='userdanger'>You have a panic attack!</span>")
affected_mob.confused += (rand(6,8))
affected_mob.jitteriness += (rand(6,8))
affected_mob.AdjustConfused(rand(6,8))
affected_mob.AdjustJitter(rand(6,8))
if(prob(2))
affected_mob.visible_message("<span class='danger'>[affected_mob] coughs up butterflies!</span>", \
"<span class='userdanger'>You cough up butterflies!</span>")
new /mob/living/simple_animal/butterfly(affected_mob.loc)
new /mob/living/simple_animal/butterfly(affected_mob.loc)
return
return
+2 -2
View File
@@ -106,7 +106,7 @@
if(3)
if(prob(4))
to_chat(affected_mob, "<span class='danger'>You feel a stabbing pain in your head.</span>")
affected_mob.confused += 10
affected_mob.AdjustConfused(10)
if(4)
if(prob(3))
affected_mob.say(pick("Eeek, ook ook!", "Eee-eeek!", "Eeee!", "Ungh, ungh."))
@@ -241,4 +241,4 @@
stage3 = list("<span class='danger'>Your appendages are melting away.</span>", "<span class='danger'>Your limbs begin to lose their shape.</span>")
stage4 = list("<span class='danger'>You're ravenous.</span>")
stage5 = list("<span class='danger'>You have become a morph.</span>")
new_form = /mob/living/simple_animal/hostile/morph
new_form = /mob/living/simple_animal/hostile/morph
+1 -2
View File
@@ -44,7 +44,7 @@
affected_mob.AdjustSleeping(5)
if(prob(2))
to_chat(affected_mob, "<span class='userdanger'>You feel your mind relax and your thoughts drift!</span>")
affected_mob.confused = min(100, affected_mob.confused + 8)
affected_mob.AdjustConfused(8, bound_lower = 0, bound_upper = 100)
if(prob(10))
affected_mob.vomit(20)
if(prob(3))
@@ -55,4 +55,3 @@
to_chat(affected_mob, "<span class='danger'>[pick("You feel uncomfortably hot...", "You feel like unzipping your jumpsuit", "You feel like taking off some clothes...")]</span>")
affected_mob.bodytemperature += 40
return
+3 -3
View File
@@ -20,15 +20,15 @@
if(prob(10))
affected_mob.emote(pick("cough","groan", "gasp"))
affected_mob.losebreath++
affected_mob.AdjustLoseBreath(1)
if(prob(15))
if(prob(33))
to_chat(affected_mob, "<span class='danger'>You feel sickly and weak.</span>")
affected_mob.slowed += 3
affected_mob.AdjustSlowed(3)
affected_mob.adjustToxLoss(toxdamage)
if(prob(5))
to_chat(affected_mob, "<span class='danger'>Your joints ache horribly!</span>")
affected_mob.Weaken(stuntime)
affected_mob.Stun(stuntime)
affected_mob.Stun(stuntime)
+3 -3
View File
@@ -16,7 +16,7 @@
adjustBrainLoss(80)
nutrition = 9000
overeatduration = 9000
confused = 30
Confused(30)
if(mind)
mind.assigned_role = "Cluwne"
@@ -44,8 +44,8 @@
adjustBrainLoss(-120)
nutrition = NUTRITION_LEVEL_STARVING
overeatduration = 0
confused = 0
jitteriness = 0
SetConfused(0)
SetJitter(0)
if(mind)
mind.assigned_role = "Lawyer"
+3 -3
View File
@@ -50,8 +50,8 @@
target.Paralyse(amt_paralysis)
target.Stun(amt_stunned)
target.eye_blind += amt_eye_blind
target.eye_blurry += amt_eye_blurry
target.AdjustEyeBlind(amt_eye_blind)
target.AdjustEyeBlurry(amt_eye_blurry)
//summoning
if(summon_type)
new summon_type(target.loc, target)
new summon_type(target.loc, target)
+4 -4
View File
@@ -62,7 +62,7 @@
datum/announcement/proc/Message(message as text, message_title as text)
for(var/mob/M in player_list)
if(!istype(M,/mob/new_player) && !isdeaf(M))
if(M.can_hear())
to_chat(M, "<h2 class='alert'>[title]</h2>")
to_chat(M, "<span class='alert'>[message]</span>")
if(announcer)
@@ -88,7 +88,7 @@ datum/announcement/priority/command/Message(message as text, message_title as te
command += "<br><span class='alert'>[message]</span><br>"
command += "<br>"
for(var/mob/M in player_list)
if(!istype(M,/mob/new_player) && !isdeaf(M))
if(M.can_hear())
to_chat(M, command)
datum/announcement/priority/enemy/Message(message as text, message_title as text, from as text)
@@ -100,7 +100,7 @@ datum/announcement/priority/enemy/Message(message as text, message_title as text
command += "<br><span class='alert'>[message]</span><br>"
command += "<br>"
for(var/mob/M in player_list)
if(!istype(M,/mob/new_player) && !isdeaf(M))
if(M.can_hear())
to_chat(M, command)
datum/announcement/priority/security/Message(message as text, message_title as text)
@@ -125,7 +125,7 @@ datum/announcement/proc/PlaySound(var/message_sound)
if(!message_sound)
return
for(var/mob/M in player_list)
if(!istype(M,/mob/new_player) && !isdeaf(M))
if(M.can_hear())
M << message_sound
datum/announcement/proc/Sound(var/message_sound)
+3 -3
View File
@@ -144,7 +144,7 @@
if(usr.stat != 0)
return
if(usr.restrained() || usr.stat || usr.weakened || usr.stunned || usr.paralysis || usr.resting) //are you cuffed, dying, lying, stunned or other
if(usr.incapacitated()) //are you cuffed, dying, lying, stunned or other
return
if(!ishuman(usr)) //Make sure they're a mob that has dna
to_chat(usr, "<span class='notice'>Try as you might, you can not climb up into the [src].</span>")
@@ -169,7 +169,7 @@
return
if(O.loc == user) //no you can't pull things out of your ass
return
if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis || user.resting) //are you cuffed, dying, lying, stunned or other
if(user.incapacitated()) //are you cuffed, dying, lying, stunned or other
return
if(O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)) // is the mob anchored, too far away from you, or are you too far away from the source
return
@@ -973,4 +973,4 @@
return 1
/////////////////////////// DNA MACHINES
/////////////////////////// DNA MACHINES
+3 -3
View File
@@ -24,7 +24,7 @@
/datum/dna/gene/disability/can_activate(var/mob/M,var/flags)
return 1 // Always set!
/datum/dna/gene/disability/activate(var/mob/M, var/connected, var/flags)
/datum/dna/gene/disability/activate(var/mob/living/M, var/connected, var/flags)
..()
if(mutation && !(mutation in M.mutations))
M.mutations.Add(mutation)
@@ -35,7 +35,7 @@
else
testing("[name] has no activation message.")
/datum/dna/gene/disability/deactivate(var/mob/M, var/connected, var/flags)
/datum/dna/gene/disability/deactivate(var/mob/living/M, var/connected, var/flags)
..()
if(mutation && (mutation in M.mutations))
M.mutations.Remove(mutation)
@@ -127,7 +127,7 @@
/datum/dna/gene/disability/deaf/activate(var/mob/M, var/connected, var/flags)
..(M,connected,flags)
M.ear_deaf = 1
M.EarDeaf(1)
/datum/dna/gene/disability/nearsighted
name="Nearsightedness"
@@ -17,11 +17,11 @@
for(var/mob/living/carbon/human/H in range(2,user))
to_chat(H, "<span class='userdanger'>You are blinded by a shower of blood!</span>")
H.Stun(1)
H.eye_blurry = max(20, H.eye_blurry)
H.EyeBlurry(20)
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
if(istype(E))
E.damage = max(E.damage+5, 0)
H.confused += 3
H.AdjustConfused(3)
for(var/mob/living/silicon/S in range(2,user))
to_chat(S, "<span class='userdanger'>Your sensors are disabled by a shower of blood!</span>")
S.Weaken(3)
@@ -37,4 +37,4 @@
to_chat(crab, "<span class='warning'>You burst out of the remains of your former body in a shower of gore!</span>")
user.gib()
feedback_add_details("changeling_powers","LR")
return 1
return 1
@@ -17,10 +17,14 @@
user.SetStunned(0)
user.SetWeakened(0)
user.radiation = 0
user.eye_blind = 0
user.eye_blurry = 0
user.setEarDamage(0,0)
user.SetEyeBlind(0)
user.SetEyeBlurry(0)
user.SetEarDamage(0)
user.SetEarDeaf(0)
user.heal_overall_damage(user.getBruteLoss(), user.getFireLoss())
user.CureBlind()
user.CureDeaf()
user.CureNearsighted()
user.reagents.clear_reagents()
user.germ_level = 0
user.next_pain_time = 0
@@ -11,8 +11,8 @@
for(var/mob/living/M in get_mobs_in_view(4, user))
if(iscarbon(M))
if(!M.mind || !M.mind.changeling)
M.adjustEarDamage(0, 30)
M.confused += 20
M.AdjustEarDeaf(30)
M.AdjustConfused(20)
M.Jitter(50)
else
M << sound('sound/effects/screech.ogg')
@@ -41,5 +41,3 @@
L.broken()
empulse(get_turf(user), 2, 4, 1)
return 1
@@ -153,7 +153,7 @@ obj/effect/proc_holder/changeling/sting/mute
/obj/effect/proc_holder/changeling/sting/mute/sting_action(var/mob/user, var/mob/living/carbon/target)
add_logs(user, target, "stung", object="mute sting")
target.silent += 30
target.AdjustSilence(30)
feedback_add_details("changeling_powers","MS")
return 1
@@ -165,12 +165,12 @@ obj/effect/proc_holder/changeling/sting/blind
chemical_cost = 25
dna_cost = 1
/obj/effect/proc_holder/changeling/sting/blind/sting_action(var/mob/user, var/mob/target)
/obj/effect/proc_holder/changeling/sting/blind/sting_action(var/mob/living/user, var/mob/living/target)
add_logs(user, target, "stung", object="blind sting")
to_chat(target, "<span class='danger'>Your eyes burn horrifically!</span>")
target.disabilities |= NEARSIGHTED
target.eye_blind = 20
target.eye_blurry = 40
target.BecomeNearsighted()
target.EyeBlind(20)
target.EyeBlurry(40)
feedback_add_details("changeling_powers","BS")
return 1
@@ -186,7 +186,7 @@ obj/effect/proc_holder/changeling/sting/LSD
add_logs(user, target, "stung", object="LSD sting")
spawn(rand(300,600))
if(target)
target.hallucination = max(400, target.hallucination)
target.Hallucinate(400)
feedback_add_details("changeling_powers","HS")
return 1
+9 -9
View File
@@ -840,7 +840,7 @@ var/list/sacrificed = list()
var/obj/item/weapon/nullrod/N = locate() in C
if(N)
continue
C.adjustEarDamage(0,50)
C.AdjustEarDeaf(50)
C.show_message("\red The world around you suddenly becomes quiet.", 3)
affected++
if(prob(1))
@@ -859,7 +859,7 @@ var/list/sacrificed = list()
var/obj/item/weapon/nullrod/N = locate() in C
if(N)
continue
C.adjustEarDamage(0,30)
C.AdjustEarDeaf(30)
//talismans is weaker.
C.show_message("\red The world around you suddenly becomes quiet.", 3)
affected++
@@ -880,12 +880,12 @@ var/list/sacrificed = list()
var/obj/item/weapon/nullrod/N = locate() in C
if(N)
continue
C.eye_blurry += 50
C.eye_blind += 20
C.AdjustEyeBlurry(50)
C.AdjustEyeBlind(20)
if(prob(5))
C.disabilities |= NEARSIGHTED
C.BecomeNearsighted()
if(prob(10))
C.disabilities |= BLIND
C.BecomeBlind()
C.show_message("\red Suddenly you see red flash that blinds you.", 3)
affected++
if(affected)
@@ -902,8 +902,8 @@ var/list/sacrificed = list()
var/obj/item/weapon/nullrod/N = locate() in C
if(N)
continue
C.eye_blurry += 30
C.eye_blind += 10
C.AdjustEyeBlurry(30)
C.AdjustEyeBlind(10)
//talismans is weaker.
affected++
C.show_message("\red You feel a sharp pain in your eyes, and the world disappears into darkness..", 3)
@@ -1016,7 +1016,7 @@ var/list/sacrificed = list()
var/mob/living/carbon/C = T
C.flash_eyes()
if(!(HULK in C.mutations))
C.silent += 15
C.AdjustSilence(15)
C.Weaken(10)
C.Stun(10)
return
@@ -466,7 +466,7 @@ Congratulations! You are now trained for xenobiology research!"}
L.Sleeping(60)
add_logs(user, L, "put to sleep")
else
L.drowsyness += 1
L.AdjustDrowsy(1)
to_chat(user, "<span class='warning'>Sleep inducement works fully only on stunned specimens! </span>")
L.visible_message("<span class='danger'>[user] tried to induce sleep in [L] with [src]!</span>", \
"<span class='userdanger'>You suddenly feel drowsy!</span>")
@@ -98,7 +98,7 @@
if(H == owner)
continue
to_chat(H, "<span class='alien'>You hear a buzz in your head.</span>")
H.confused += 20
H.AdjustConfused(20)
/obj/item/organ/internal/gland/pop
origin_tech = "materials=4;biotech=6;abductor=3"
@@ -253,7 +253,7 @@
to_chat(human, "<span class='warning'>You suddenly feel [pick("sick and tired", "tired and confused", "nauseated", "dizzy")].</span>")
human.adjustStaminaLoss(stamdamage)
human.adjustToxLoss(toxdamage)
human.confused = min(human.confused+confusion, maxconfusion)
human.AdjustConfused(confusion, bound_lower = 0, bound_upper = maxconfusion)
new/obj/effect/overlay/temp/revenant(human.loc)
if(!istype(T, /turf/simulated/shuttle) && !istype(T, /turf/simulated/wall/rust) && !istype(T, /turf/simulated/wall/r_wall) && istype(T, /turf/simulated/wall) && prob(15))
new/obj/effect/overlay/temp/revenant(T)
@@ -317,4 +317,4 @@
playsound(S, 'sound/machines/warning-buzzer.ogg', 50, 1)
new/obj/effect/overlay/temp/revenant(S.loc)
S.spark_system.start()
S.emp_act(1)
S.emp_act(1)
+1 -1
View File
@@ -241,7 +241,7 @@
revolutionaries += rev_mind
if(iscarbon(rev_mind.current))
var/mob/living/carbon/carbon_mob = rev_mind.current
carbon_mob.silent = max(carbon_mob.silent, 5)
carbon_mob.Silence(5)
carbon_mob.flash_eyes(1, 1)
rev_mind.current.Stun(5)
to_chat(rev_mind.current, "<span class='danger'><FONT size = 3> You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!</FONT></span>")
@@ -46,7 +46,7 @@
else //Only alludes to the shadowling if the target is close by
to_chat(target, "<span class='userdanger'>Red lights suddenly dance in your vision, and you are mesmerized by the heavenly lights...</span>")
target.Stun(10)
M.silent += 10
M.AdjustSilence(10)
/obj/effect/proc_holder/spell/targeted/lesser_glare
@@ -79,7 +79,7 @@
else
to_chat(target, "<span class='userdanger'>Red lights suddenly dance in your vision, and you are mesmerized by their heavenly beauty...</span>")
target.Stun(3) //Roughly 30% as long as the normal one
M.silent += 3
M.AdjustSilence(3)
/obj/effect/proc_holder/spell/aoe_turf/veil
@@ -519,7 +519,7 @@
/datum/reagent/shadowling_blindness_smoke/on_mob_life(mob/living/M)
if(!is_shadow_or_thrall(M))
to_chat(M, "<span class='warning'><b>You breathe in the black smoke, and your eyes burn horribly!</b></span>")
M.eye_blind = 5
M.EyeBlind(5)
if(prob(25))
M.visible_message("<b>[M]</b> claws at their eyes!")
M.Stun(3)
@@ -556,8 +556,8 @@
if(iscarbon(target))
var/mob/living/carbon/M = target
to_chat(M, "<span class='danger'><b>A spike of pain drives into your head and scrambles your thoughts!</b></span>")
M.confused += 10
M.setEarDamage(M.ear_damage + 3)
M.AdjustConfused(10)
M.AdjustEarDamage(3)
else if(issilicon(target))
var/mob/living/silicon/S = target
to_chat(S, "<span class='warning'><b>ERROR $!(@ ERROR )#^! SENSORY OVERLOAD \[$(!@#</b></span>")
@@ -259,8 +259,8 @@
continue
to_chat(C, "<span class='warning'><font size='3'><b>You hear a ear piercing shriek and your senses dull!</font></b></span>")
C.Weaken(4)
C.adjustEarDamage(0,20)
C.stuttering = 20
C.AdjustEarDeaf(20)
C.Stuttering(20)
C.Stun(4)
C.Jitter(150)
for(var/obj/structure/window/W in view(4))
+1 -1
View File
@@ -782,7 +782,7 @@ var/global/list/multiverse = list()
else if(istype(I,/obj/item/weapon/bikehorn))
to_chat(target, "<span class='userdanger'>HONK</span>")
target << 'sound/items/AirHorn.ogg'
target.adjustEarDamage(0,3)
target.AdjustEarDeaf(3)
GiveHint(target)
cooldown = world.time +cooldown_time
return
+1 -1
View File
@@ -747,7 +747,7 @@
/obj/item/weapon/spellbook/oneuse/blind/recoil(mob/user as mob)
..()
to_chat(user, "<span class='warning'>You go blind!</span>")
user.eye_blind = 10
user.EyeBlind(10)
/obj/item/weapon/spellbook/oneuse/mindswap
spell = /obj/effect/proc_holder/spell/targeted/mind_transfer
+2 -2
View File
@@ -546,7 +546,7 @@
if(panel_open)
to_chat(usr, "<span class='boldnotice'>Close the maintenance panel first.</span>")
return
if(usr.restrained() || usr.stat || usr.weakened || usr.stunned || usr.paralysis || usr.resting) //are you cuffed, dying, lying, stunned or other
if(usr.incapacitated()) //are you cuffed, dying, lying, stunned or other
return
for(var/mob/living/carbon/slime/M in range(1,usr))
if(M.Victim == usr)
@@ -590,4 +590,4 @@
component_parts += new /obj/item/stack/cable_coil(null, 1)
RefreshParts()
#undef ADDICTION_SPEEDUP_TIME
#undef ADDICTION_SPEEDUP_TIME
+1 -1
View File
@@ -448,7 +448,7 @@
if(ORION_TRAIL_RAIDERS)
if(prob(50))
to_chat(usr, "<span class='userdanger'>You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?</span>")
M.hallucination += 30
M.AdjustHallucinate(30)
else
to_chat(usr, "<span class='userdanger'>Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there...</span>")
M.take_organ_damage(30)
@@ -20,7 +20,7 @@
jump_action.Grant(user)
/obj/machinery/computer/camera_advanced/check_eye(mob/user)
if((stat & (NOPOWER|BROKEN)) || !Adjacent(user) || user.eye_blind || user.incapacitated())
if((stat & (NOPOWER|BROKEN)) || !Adjacent(user) || !user.can_see() || user.incapacitated())
user.unset_machine()
return 0
return 1
@@ -167,4 +167,4 @@
var/camera = input("Choose which camera you want to view", "Cameras") as null|anything in T
var/obj/machinery/camera/final = T[camera]
if(final)
remote_eye.setLoc(get_turf(final))
remote_eye.setLoc(get_turf(final))
+5 -5
View File
@@ -80,10 +80,10 @@
beaker = null
return ..()
/obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
/obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(atom/movable/O as mob|obj, mob/living/user as mob)
if(O.loc == user) //no you can't pull things out of your ass
return
if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis || user.resting) //are you cuffed, dying, lying, stunned or other
if(user.incapacitated()) //are you cuffed, dying, lying, stunned or other
return
if(get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)) // is the mob anchored, too far away from you, or are you too far away from the source
return
@@ -371,7 +371,7 @@
occupant.bodytemperature += 2*(air_contents.temperature - occupant.bodytemperature)*current_heat_capacity/(current_heat_capacity + air_contents.heat_capacity())
occupant.bodytemperature = max(occupant.bodytemperature, air_contents.temperature) // this is so ugly i'm sorry for doing it i'll fix it later i promise
if(occupant.bodytemperature < T0C)
occupant.sleeping = max(5/efficiency, (1/occupant.bodytemperature)*2000/efficiency)
occupant.Sleeping(max(5/efficiency, (1/occupant.bodytemperature)*2000/efficiency))
occupant.Paralyse(max(5/efficiency, (1/occupant.bodytemperature)*3000/efficiency))
if(air_contents.oxygen > 2)
if(occupant.getOxyLoss()) occupant.adjustOxyLoss(-1)
@@ -469,9 +469,9 @@
if(M.Victim == usr)
to_chat(usr, "You're too busy getting your life sucked out of you.")
return
if(usr.stat != 0 || stat & (NOPOWER|BROKEN))
if(usr.stat != CONSCIOUS || stat & (NOPOWER|BROKEN))
return
if(usr.restrained() || usr.stat || usr.weakened || usr.stunned || usr.paralysis || usr.resting) //are you cuffed, dying, lying, stunned or other
if(usr.incapacitated()) //are you cuffed, dying, lying, stunned or other
return
put_mob(usr)
return
+1 -1
View File
@@ -485,7 +485,7 @@
if(O.loc == user) //no you can't pull things out of your ass
return
if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis || user.resting) //are you cuffed, dying, lying, stunned or other
if(user.incapacitated()) //are you cuffed, dying, lying, stunned or other
return
if(get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)) // is the mob anchored, too far away from you, or are you too far away from the source
return
+3 -3
View File
@@ -100,15 +100,15 @@
if(drownee.stat == DEAD) //Dead spacemen don't drown more
return
if(drownee.losebreath > 20) //You've probably got bigger problems than drowning at this point, so we won't add to it until you get that under control.
if(drownee.lose_breath > 20) //You've probably got bigger problems than drowning at this point, so we won't add to it until you get that under control.
return
if(drownee.stat) //Mob is in critical.
drownee.losebreath -= 3 //You're gonna die here.
drownee.AdjustLoseBreath(3, bound_lower = 0, bound_upper = 20)
add_logs(src, drownee, "drowned", null, null, 0) //log it to their VV, but don't spam the admins' chats with the logs
drownee.visible_message("<span class='danger'>\The [drownee] appears to be drowning!</span>","<span class='userdanger'>You're quickly drowning!</span>") //inform them that they are fucked.
else
drownee.losebreath -= 2 //For every time you drown, you miss 2 breath attempts. Hope you catch on quick!
drownee.AdjustLoseBreath(2, bound_lower = 0, bound_upper = 20) //For every time you drown, you miss 2 breath attempts. Hope you catch on quick!
add_logs(src, drownee, "drowned", null, null, 0) //log it to their VV, but don't spam the admins' chats with the logs
if(prob(35)) //35% chance to tell them what is going on. They should probably figure it out before then.
drownee.visible_message("<span class='danger'>\The [drownee] flails, almost like they are drowning!</span>","<span class='userdanger'>You're lacking air!</span>") //*gasp* *gasp* *gasp* *gasp* *gasp*
+3 -3
View File
@@ -164,9 +164,9 @@
if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs))
continue
to_chat(M, "<font color='red' size='7'>HONK</font>")
M.sleeping = 0
M.stuttering = 20
M.adjustEarDamage(0,30)
M.SetSleeping(0)
M.Stuttering(20)
M.AdjustEarDeaf(30)
M.Weaken(3)
if(prob(30))
M.Stun(10)
+2 -2
View File
@@ -583,7 +583,7 @@ steam.start() -- spawns the effect
// if(M.wear_suit, /obj/item/clothing/suit/wizrobe && (M.hat, /obj/item/clothing/head/wizard) && (M.shoes, /obj/item/clothing/shoes/sandal)) // I'll work on it later
else
M.drop_item()
M:sleeping += 5
M.AdjustSleeping(5)
if(M.coughedtime != 1)
M.coughedtime = 1
M.emote("cough")
@@ -600,7 +600,7 @@ steam.start() -- spawns the effect
return
else
M.drop_item()
M:sleeping += 5
M.AdjustSleeping(5)
if(M.coughedtime != 1)
M.coughedtime = 1
M.emote("cough")
+5 -4
View File
@@ -57,10 +57,11 @@
var/close = range(world.view+round(devastation_range,1), epicenter)
// to all distanced mobs play a different sound
for(var/mob/M in world) if(M.z == epicenter.z) if(!(M in close))
// check if the mob can hear
if(M.ear_deaf <= 0 || !M.ear_deaf) if(!istype(M.loc,/turf/space))
M << 'sound/effects/explosionfar.ogg'
for(var/mob/M in world)
if(M.z == epicenter.z && !(M in close))
// check if the mob can hear
if(M.can_hear() && !istype(M.loc,/turf/space))
M << 'sound/effects/explosionfar.ogg'
if(heavy_impact_range > 1)
var/datum/effect/system/explosion/E = new/datum/effect/system/explosion()
+3 -3
View File
@@ -474,10 +474,10 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
if(!(eyes.status & ORGAN_ROBOT) || !(eyes.status & ORGAN_ASSISTED)) //robot eyes bleeding might be a bit silly
to_chat(M, "<span class='danger'>Your eyes start to bleed profusely!</span>")
if(prob(50))
if(M.stat != 2)
if(M.stat != DEAD)
to_chat(M, "<span class='danger'>You drop what you're holding and clutch at your eyes!</span>")
M.drop_item()
M.eye_blurry += 10
M.AdjustEyeBlurry(10)
M.Paralyse(1)
M.Weaken(2)
if(eyes.damage >= eyes.min_broken_damage)
@@ -488,7 +488,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
H.UpdateDamageIcon()
else
M.take_organ_damage(7)
M.eye_blurry += rand(3,4)
M.AdjustEyeBlurry(rand(3,4))
return
/obj/item/clean_blood()
+4 -4
View File
@@ -236,10 +236,10 @@
var/mob/living/carbon/human/C = target
user.visible_message("<span class='danger'> [user] sprays [src] into the face of [target]!</span>")
if(C.client)
C.eye_blurry = max(C.eye_blurry, 3)
C.eye_blind = max(C.eye_blind, 1)
C.EyeBlurry(3)
C.EyeBlind(1)
if(C.check_eye_prot() <= 0) // no eye protection? ARGH IT BURNS.
C.confused = max(C.confused, 3)
C.Confused(3)
C.Weaken(3)
C.lip_style = "spray_face"
C.lip_color = colour
@@ -251,4 +251,4 @@
overlays.Cut()
var/image/I = image('icons/obj/crayons.dmi',icon_state = "[capped ? "spraycan_cap_colors" : "spraycan_colors"]")
I.color = colour
overlays += I
overlays += I
@@ -55,7 +55,7 @@
interact(user)
/obj/item/device/camera_bug/check_eye(var/mob/user as mob)
if(user.stat || loc != user || !user.canmove || user.eye_blind || !current)
if(user.stat || loc != user || !user.canmove || !user.can_see() || !current)
user.reset_view(null)
user.unset_machine()
return null
+2 -2
View File
@@ -81,7 +81,7 @@
if(M.weakeyes)
M.Weaken(3) //quick weaken bypasses eye protection but has no eye flash
if(M.flash_eyes(1, 1))
M.confused += power
M.AdjustConfused(power)
terrible_conversion_proc(M, user)
M.Stun(1)
visible_message("<span class='disarm'>[user] blinds [M] with the flash!</span>")
@@ -96,7 +96,7 @@
to_chat(M, "<span class='danger'>[user] fails to blind you with the flash!</span>")
else
if(M.flash_eyes())
M.confused += power
M.AdjustConfused(power)
/obj/item/device/flash/attack(mob/living/M, mob/user)
if(!try_use_flash(user))
+3 -3
View File
@@ -91,7 +91,7 @@
G.state = GRAB_NECK
G.hud.icon_state = "kill"
G.hud.name = "kill"
M.silent += 1
M.AdjustSilence(1)
garrote_time = world.time + 10
processing_objects.Add(src)
@@ -152,11 +152,11 @@
return
strangling.silent = max(strangling.silent, 3) // Non-improvised effects
strangling.Silence(3) // Non-improvised effects
strangling.apply_damage(4, OXY, "head")
/obj/item/weapon/twohanded/garrote/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is wrapping the [src] around \his neck and pulling the handles! It looks like \he's trying to commit suicide.</span>")
playsound(src.loc, 'sound/weapons/cablecuff.ogg', 15, 1, -1)
return (OXYLOSS)
return (OXYLOSS)
@@ -51,12 +51,13 @@
if(!ear_safety)
M.Stun(max(10/distance, 3))
M.Weaken(max(10/distance, 3))
M.setEarDamage(M.ear_damage + rand(0, 5), max(M.ear_deaf,15))
M.EarDeaf(15)
M.AdjustEarDamage(rand(0, 5))
if(M.ear_damage >= 15)
to_chat(M, "<span class='warning'>Your ears start to ring badly!</span>")
if(prob(M.ear_damage - 10 + 5))
if(prob(M.ear_damage - 5))
to_chat(M, "<span class='warning'>You can't hear anything!</span>")
M.disabilities |= DEAF
M.BecomeDeaf()
else
if(M.ear_damage >= 5)
to_chat(M, "<span class='warning'>Your ears start to ring!</span>")
+1 -1
View File
@@ -115,7 +115,7 @@
if(do_after(user, 50, target = H))
playsound(loc, "sound/weapons/bladeslice.ogg", 50, 1, -1)
user.visible_message("<span class='danger'>[user] abruptly stops cutting [M]'s hair and slices their throat!</span>", "<span class='danger'>You stop cutting [M]'s hair and slice their throat!</span>") //Just a little off the top.
H.losebreath += 10 //30 Oxy damage over time
H.AdjustLoseBreath(10) //30 Oxy damage over time
H.apply_damage(18, BRUTE, "head", sharp =1, edge =1, used_weapon = "scissors")
var/turf/location = get_turf(H)
if(istype(location, /turf/simulated))
@@ -138,8 +138,8 @@
affected_mob.setStaminaLoss(0)
var/status = CANSTUN | CANWEAKEN | CANPARALYSE
affected_mob.status_flags &= ~status
affected_mob.dizziness = max(0, affected_mob.dizziness-10)
affected_mob.drowsyness = max(0, affected_mob.drowsyness-10)
affected_mob.AdjustDizzy(-10)
affected_mob.AdjustDrowsy(-10)
affected_mob.SetSleeping(0)
stage = 1
switch(progenitor.hunger)
@@ -181,4 +181,4 @@
affected_mob.adjustBruteLoss(5)
if(ismob(progenitor.loc))
progenitor.hunger++
progenitor.hunger++
@@ -116,7 +116,7 @@
if(H.get_item_by_slot(slot_head) == src)
if(H.internal)
return
H.losebreath += 1
H.AdjustLoseBreath(1)
else
storage_slots = 7
processing_objects.Remove(src)
+1 -3
View File
@@ -420,8 +420,7 @@
H.lip_style = null //Washes off lipstick
H.lip_color = initial(H.lip_color)
H.regenerate_icons()
user.drowsyness -= rand(2,3) //Washing your face wakes you up if you're falling asleep
user.drowsyness = Clamp(user.drowsyness, 0, INFINITY)
user.AdjustDrowsy(-rand(2,3)) //Washing your face wakes you up if you're falling asleep
else
user.clean_blood()
@@ -459,4 +458,3 @@
icon_state = "puddle-splash"
..()
icon_state = "puddle"
+1 -1
View File
@@ -40,7 +40,7 @@ var/list/ricochet = list('sound/weapons/effects/ric1.ogg', 'sound/weapons/effect
M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, is_global, S)
/mob/proc/playsound_local(var/turf/turf_source, soundin, vol as num, vary, frequency, falloff, is_global, sound/S)
if(!src.client || ear_deaf > 0)
if(!src.client || !can_hear())
return
if(!S)
+2 -2
View File
@@ -36,7 +36,7 @@ var/global/list/frozen_mob_list = list()
anchored = 1
frozen = AO
admin_prev_sleeping = sleeping
sleeping += 20000
AdjustSleeping(20000)
if(!(src in frozen_mob_list))
frozen_mob_list += src
@@ -49,7 +49,7 @@ var/global/list/frozen_mob_list = list()
anchored = 0
overlays -= frozen
frozen = null
sleeping = admin_prev_sleeping
SetSleeping(admin_prev_sleeping)
admin_prev_sleeping = null
if(src in frozen_mob_list)
frozen_mob_list -= src
+6 -5
View File
@@ -411,11 +411,12 @@
var/mob/living/carbon/human/M = src.loc
to_chat(M, "\red The Optical Thermal Scanner overloads and blinds you!")
if(M.glasses == src)
M.eye_blind = 3
M.eye_blurry = 5
M.disabilities |= NEARSIGHTED
spawn(100)
M.disabilities &= ~NEARSIGHTED
M.EyeBlind(3)
M.EyeBlurry(5)
if(!(M.disabilities & NEARSIGHTED))
M.BecomeNearsighted()
spawn(100)
M.CureNearsighted()
..()
/obj/item/clothing/glasses/thermal/syndi //These are now a traitor item, concealed as mesons. -Pete
+1 -1
View File
@@ -335,7 +335,7 @@
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
if(H.head == src)
H.slurring = max(3, H.slurring) //always slur
H.Slur(3) //always slur
/obj/item/clothing/head/beret/fluff/linda //Epic_Charger: Linda Clark
name = "Green beret"
+2 -2
View File
@@ -6,7 +6,7 @@
var/armor = H.getarmor(type = "rad")
if((H.species.flags & RADIMMUNE) || armor >= 75) // Leave radiation-immune species/rad armored players completely unaffected
continue
H.hallucination += rand(50, 100)
H.AdjustHallucinate(rand(50, 100))
/datum/event/mass_hallucination/announce()
command_announcement.Announce("It seems that station [station_name()] is passing through a minor radiation field, this may cause some hallucination, but no further damage")
command_announcement.Announce("It seems that station [station_name()] is passing through a minor radiation field, this may cause some hallucination, but no further damage")
+5 -5
View File
@@ -279,11 +279,11 @@ Gunshots/explosions/opening doors/less rare audio (done)
/obj/effect/hallucination/simple/singularity/proc/Eat(atom/OldLoc, Dir)
var/target_dist = get_dist(src,target)
if(target_dist<=3) //"Eaten"
target.sleeping = 20
target.Sleeping(20)
target.hal_crit = 1
target.hal_screwyhud = 1
spawn(rand(50,100))
target.sleeping = 0
target.SetSleeping(0)
target.hal_crit = 0
target.hal_screwyhud = 0
@@ -480,7 +480,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
my_target.show_message("<span class='danger'>[src.name] has attacked [my_target] with [weapon_name]!</span>", 1)
my_target.staminaloss += 30
if(prob(20))
my_target.eye_blurry += 3
my_target.AdjustEyeBlurry(3)
if(prob(33))
if(!locate(/obj/effect/overlay) in my_target.loc)
fake_blood(my_target)
@@ -752,11 +752,11 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite
halimage = null
if("death")
//Fake death
src.sleeping = 20
Sleeping(20)
hal_crit = 1
hal_screwyhud = 1
spawn(rand(50,100))
src.sleeping = 0
SetSleeping(0)
hal_crit = 0
hal_screwyhud = 0
if("husks")
+1 -1
View File
@@ -98,7 +98,7 @@
to_chat(M, "<span class='danger'>You are stunned by the powerful acid of the Deathnettle!</span>")
add_logs(user, M, "attacked", src)
M.eye_blurry += force/7
M.AdjustEyeBlurry(force/7)
if(prob(20))
M.Paralyse(force / 6)
M.Weaken(force / 15)
+3 -3
View File
@@ -88,7 +88,7 @@
D.visible_message("<span class='warning'>[A] pounds [D] on the chest!</span>", \
"<span class='userdanger'>[A] slams your chest! You can't breathe!</span>")
playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1)
D.losebreath += 5
D.AdjustLoseBreath(5)
D.adjustOxyLoss(10)
return 1
@@ -97,7 +97,7 @@
"<span class='userdanger'>[A] karate chops your neck, rendering you unable to speak for a short time!</span>")
playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1)
D.apply_damage(5, BRUTE)
D.silent += 10
D.AdjustSilence(10)
return 1
datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
@@ -170,4 +170,4 @@ datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/livi
name = "krav maga gloves"
desc = "These gloves can teach you to perform Krav Maga using nanochips."
icon_state = "fightgloves"
item_state = "fightgloves"
item_state = "fightgloves"
+1 -1
View File
@@ -66,7 +66,7 @@
D.visible_message("<span class='warning'>[A] knees [D] in the stomach!</span>", \
"<span class='userdanger'>[A] winds you with a knee in the stomach!</span>")
D.audible_message("<b>[D]</b> gags!")
D.losebreath += 3
D.AdjustLoseBreath(3)
D.Stun(2)
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1)
if(prob(80))
+4 -4
View File
@@ -28,7 +28,7 @@
//non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet.
if(language && (language.flags & NONVERBAL))
if(disabilities & BLIND || blinded) //blind people can't see dumbass
if(!can_see()) //blind people can't see dumbass
message = stars(message)
if(!speaker || !(speaker in view(src)))
@@ -65,7 +65,7 @@
if(client.prefs.toggles & CHAT_GHOSTEARS && speaker in view(src))
message = "<b>[message]</b>"
if(disabilities & DEAF || ear_deaf)
if(!can_hear())
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)
to_chat(src, "<span class='warning'>You cannot hear yourself speak!</span>")
@@ -95,7 +95,7 @@
//non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet.
if(language && (language.flags & NONVERBAL))
if(disabilities & BLIND || blinded) //blind people can't see dumbass
if(!can_see()) //blind people can't see dumbass
message = stars(message)
if(!speaker || !(speaker in view(src)))
@@ -182,7 +182,7 @@
formatted = language.format_message_radio(message, verb)
else
formatted = "[verb], <span class=\"body\">\"[message]\"</span>"
if(disabilities & DEAF || ear_deaf)
if(!can_hear())
if(prob(20))
to_chat(src, "<span class='warning'>You feel your headset vibrate but can hear nothing from it!</span>")
else if(track)
+1 -1
View File
@@ -605,7 +605,7 @@
return ..()
// Can we speak this language, as opposed to just understanding it?
/mob/proc/can_speak(datum/language/speaking)
/mob/proc/can_speak_language(datum/language/speaking)
return (universal_speak || (speaking && speaking.flags & INNATE) || speaking in src.languages)
@@ -16,7 +16,7 @@ In all, this is a lot like the monkey code. /N
switch(M.a_intent)
if(I_HELP)
sleeping = max(0,sleeping-5)
AdjustSleeping(-5)
resting = 0
AdjustParalysis(-3)
AdjustStunned(-3)
@@ -96,13 +96,15 @@
f_loss += 60
adjustEarDamage(30, 120)
AdjustEarDamage(30)
AdjustEarDeaf(120)
if(3.0)
b_loss += 30
if(prob(50) && !shielded)
Paralyse(1)
adjustEarDamage(15,60)
AdjustEarDamage(15)
AdjustEarDeaf(60)
adjustBruteLoss(b_loss)
adjustFireLoss(f_loss)
@@ -298,4 +300,4 @@
return initial(pixel_x)
/mob/living/carbon/alien/humanoid/get_permeability_protection()
return 0.8
return 0.8
@@ -57,13 +57,12 @@
if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP
blinded = 1
silent = 0
SetSilence(0)
else //ALIVE. LIGHTS ARE ON
if(health < config.health_threshold_dead || !get_int_organ(/obj/item/organ/internal/brain))
death()
blinded = 1
stat = DEAD
silent = 0
SetSilence(0)
return 1
//UNCONSCIOUS. NO-ONE IS HOME
@@ -80,7 +79,7 @@
blinded = 1
stat = UNCONSCIOUS
else if(sleeping)
sleeping = max(sleeping-1, 0)
AdjustSleeping(-1)
blinded = 1
stat = UNCONSCIOUS
if( prob(10) && health )
@@ -98,18 +97,18 @@
if(disabilities & BLIND) //disabled-blind, doesn't get better on its own
blinded = 1
else if(eye_blind) //blindness, heals slowly over time
eye_blind = max(eye_blind-1,0)
AdjustEyeBlind(-1)
blinded = 1
else if(eye_blurry) //blurry eyes heal slowly
eye_blurry = max(eye_blurry-1, 0)
AdjustEyeBlurry(-1)
//Ears
if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own
setEarDamage(-1, max(ear_deaf, 1))
EarDeaf(1)
else if(ear_deaf) //deafness, heals slowly over time
adjustEarDamage(0,-1)
AdjustEarDeaf(-1)
else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs
adjustEarDamage(-0.05, 0)
AdjustEarDamage(-0.05)
//Other
if(stunned)
@@ -123,11 +122,11 @@
update_icons()
if(stuttering)
stuttering = max(stuttering-1, 0)
AdjustStuttering(-1)
if(silent)
silent = max(silent-1, 0)
AdjustSilence(-1)
if(druggy)
druggy = max(druggy-1, 0)
return 1
AdjustDruggy(-1)
return 1
@@ -88,13 +88,15 @@
f_loss += 60
adjustEarDamage(30,120)
AdjustEarDamage(30)
AdjustEarDeaf(120)
if(3.0)
b_loss += 30
if(prob(50))
Paralyse(1)
adjustEarDamage(15,60)
AdjustEarDamage(15)
AdjustEarDeaf(60)
adjustBruteLoss(b_loss)
adjustFireLoss(f_loss)
@@ -17,12 +17,12 @@
if(stat == DEAD) //DEAD. BROWN BREAD. SWIMMING WITH THE SPESS CARP
blinded = 1
silent = 0
SetSilence(0)
else //ALIVE. LIGHTS ARE ON
if(health < -25 || !get_int_organ(/obj/item/organ/internal/brain))
death()
blinded = 1
silent = 0
SetSilence(0)
return 1
//UNCONSCIOUS. NO-ONE IS HOME
@@ -39,7 +39,7 @@
blinded = 1
stat = UNCONSCIOUS
else if(sleeping)
sleeping = max(sleeping-1, 0)
AdjustSleeping(-1)
blinded = 1
stat = UNCONSCIOUS
if( prob(10) && health )
@@ -57,32 +57,32 @@
if(disabilities & BLIND) //disabled-blind, doesn't get better on its own
blinded = 1
else if(eye_blind) //blindness, heals slowly over time
eye_blind = max(eye_blind-1,0)
AdjustEyeBlind(-1)
blinded = 1
else if(eye_blurry) //blurry eyes heal slowly
eye_blurry = max(eye_blurry-1, 0)
AdjustEyeBlurry(-1)
//Ears
if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own
setEarDamage(-1, max(ear_deaf, 1))
EarDeaf(1)
else if(ear_deaf) //deafness, heals slowly over time
adjustEarDamage(0,-1)
AdjustEarDeaf(-1)
else if(ear_damage < 25) //ear damage heals slowly under this threshold.
adjustEarDamage(-0.05,0)
AdjustEarDamage(-0.05)
//Other
if(stunned)
AdjustStunned(-1)
if(weakened)
weakened = max(weakened-1,0)
AdjustWeakened(-1)
if(stuttering)
stuttering = max(stuttering-1, 0)
AdjustStuttering(-1)
if(silent)
silent = max(silent-1, 0)
AdjustSilence(-1)
if(druggy)
druggy = max(druggy-1, 0)
return 1
AdjustDruggy(-1)
return 1
@@ -100,8 +100,8 @@ I'm using this for Stat to give it a more nifty interface to work with
/mob/living/carbon/brain/can_safely_leave_loc()
return 0 //You're not supposed to be ethereal jaunting, brains
/mob/living/carbon/brain/adjustEarDamage()
/mob/living/carbon/brain/SetEarDamage() // no ears to damage or heal
return
/mob/living/carbon/brain/setEarDamage() // no ears to damage or heal
return
/mob/living/carbon/brain/SetEarDeaf()
return
@@ -21,7 +21,8 @@
/obj/item/organ/internal/brain/surgeryize()
if(!owner)
return
owner.setEarDamage(0,0) //Yeah, didn't you...hear? The ears are totally inside the brain.
owner.SetEarDeaf(0)
owner.SetEarDamage(0) //Yeah, didn't you...hear? The ears are totally inside the brain.
/obj/item/organ/internal/brain/xeno
name = "xenomorph brain"
+3 -3
View File
@@ -52,12 +52,12 @@
if(stat == DEAD)
blinded = 1
silent = 0
SetSilence(0)
else
if(!container && (health < config.health_threshold_dead || ((world.time - timeofhostdeath) > config.revival_brain_life)))
death()
blinded =1
silent = 0
blinded = 1
SetSilence(0)
return 1
. = 1
@@ -1,3 +1,3 @@
/mob/living/carbon/brain/Login()
..()
sleeping = 0
SetSleeping(0)
@@ -185,7 +185,7 @@
src.brainmob.loc = src
src.brainmob.container = src
src.brainmob.stat = 0
src.brainmob.silent = 0
src.brainmob.SetSilence(0)
dead_mob_list -= src.brainmob
..()
+6 -6
View File
@@ -158,13 +158,13 @@
"<span class='userdanger'>You feel a powerful shock coursing through your body!</span>", \
"<span class='italics'>You hear a heavy electrical crack.</span>" \
)
jitteriness += 1000 //High numbers for violent convulsions
AdjustJitter(1000) //High numbers for violent convulsions
do_jitter_animation(jitteriness)
stuttering += 2
AdjustStuttering(2)
if(!tesla_shock || (tesla_shock && siemens_coeff > 0.5))
Stun(2)
spawn(20)
jitteriness = max(jitteriness - 990, 10) //Still jittery, but vastly less
AdjustJitter(-1000, bound_lower = 10) //Still jittery, but vastly less
if(!tesla_shock || (tesla_shock && siemens_coeff > 0.5))
Stun(3)
Weaken(3)
@@ -268,7 +268,7 @@
if(istype(src,/mob/living/carbon/human) && src:w_uniform)
var/mob/living/carbon/human/H = src
H.w_uniform.add_fingerprint(M)
src.sleeping = max(0,src.sleeping-5)
AdjustSleeping(-5)
if(src.sleeping == 0)
src.resting = 0
AdjustParalysis(-3)
@@ -327,8 +327,8 @@
E.damage += rand(12, 16)
if(E.damage > E.min_bruised_damage)
eye_blind += damage
eye_blurry += damage * rand(3, 6)
AdjustEyeBlind(damage)
AdjustEyeBlurry(damage * rand(3, 6))
if(E.damage > (E.min_bruised_damage + E.min_broken_damage) / 2)
if(!(E.status & ORGAN_ROBOT))
+2 -2
View File
@@ -1,9 +1,9 @@
/mob/living/carbon/death(gibbed)
losebreath = 0
SetLoseBreath(0)
med_hud_set_health()
med_hud_set_status()
if(reagents)
reagents.death_metabolize(src)
..(gibbed)
..(gibbed)
@@ -97,8 +97,8 @@
emote("deathgasp") //let the world KNOW WE ARE DEAD
stat = DEAD
dizziness = 0
jitteriness = 0
SetDizzy(0)
SetJitter(0)
heart_attack = 0
//Handle species-specific deaths.
@@ -10,7 +10,7 @@
act = copytext(act, 1, t1)
var/muzzled = is_muzzled()
if(disabilities & MUTE || silent)
if(!can_speak())
muzzled = 1
//var/m_type = 1
@@ -313,7 +313,7 @@
M = null
if(M)
if(lying || weakened)
if(lying)
message = "<B>[src]</B> flops and flails around on the floor."
else
message = "<B>[src]</B> flips in [M]'s general direction."
@@ -378,7 +378,7 @@
message = "<B>[src]</B> faints."
if(src.sleeping)
return //Can't faint while asleep
src.sleeping += 1
AdjustSleeping(1)
m_type = 1
if("cough", "coughs")
@@ -352,7 +352,8 @@
else valid_limbs -= processing_dismember
if(!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs))
adjustEarDamage(30, 120)
AdjustEarDamage(30)
AdjustEarDeaf(120)
if(prob(70) && !shielded)
Paralyse(10)
@@ -376,7 +377,8 @@
else valid_limbs -= processing_dismember
if(!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs))
adjustEarDamage(15,60)
AdjustEarDamage(15)
AdjustEarDeaf(60)
if(prob(50) && !shielded)
Paralyse(10)
@@ -491,8 +493,7 @@
O.show_message(text("<span class='danger'>The [M.name] has shocked []!</span>", src), 1)
Weaken(power)
if(stuttering < power)
stuttering = power
Stuttering(power)
Stun(power)
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
@@ -1728,7 +1729,7 @@
if(last_special > world.time)
return
if(stat || paralysis || stunned || weakened || lying || restrained() || buckled)
if(!canmove)
to_chat(src, "You cannot leap in your current state.")
return
@@ -1782,7 +1783,7 @@
if(last_special > world.time)
return
if(stat || paralysis || stunned || weakened || lying)
if(!canmove)
to_chat(src, "\red You cannot do that in your current state.")
return
@@ -254,7 +254,7 @@ emp_act
visible_message("<span class='danger'>[src] has been knocked down!</span>", \
"<span class='userdanger'>[src] has been knocked down!</span>")
apply_effect(5, WEAKEN, armor)
confused += 15
AdjustConfused(15)
if(prob(I.force + ((100 - health)/2)) && src != user && I.damtype == BRUTE)
ticker.mode.remove_revolutionary(mind)
+41 -44
View File
@@ -86,8 +86,8 @@
// If we have the gene for being crazy, have random events.
if(dna.GetSEState(HALLUCINATIONBLOCK))
if(prob(1) && hallucination < 1)
hallucination += 20
if(prob(1))
Hallucinate(20)
if(disabilities & COUGHING)
if((prob(5) && paralysis <= 1))
@@ -111,9 +111,9 @@
if(disabilities & NERVOUS)
speech_problem_flag = 1
if(prob(10))
stuttering = max(10, stuttering)
Stuttering(10)
if(getBrainLoss() >= 60 && stat != 2)
if(getBrainLoss() >= 60 && stat != DEAD)
speech_problem_flag = 1
if(prob(3))
var/list/s1 = list("IM A PONY NEEEEEEIIIIIIIIIGH",
@@ -152,8 +152,8 @@
if(getBrainLoss() >= 100 && stat != 2) //you lapse into a coma and die without immediate aid; RIP. -Fox
Weaken(20)
losebreath += 10
silent += 2
AdjustLoseBreath(10)
AdjustSilence(2)
if(getBrainLoss() >= 120 && stat != 2) //they died from stupidity--literally. -Fox
visible_message("<span class='alert'><B>[src]</B> goes limp, their facial expression utterly blank.</span>")
@@ -281,10 +281,10 @@
var/datum/gas_mixture/breath
if(health <= config.health_threshold_crit)
losebreath++
AdjustLoseBreath(1)
if(losebreath > 0)
losebreath--
if(lose_breath > 0)
AdjustLoseBreath(-1)
if(prob(10))
spawn emote("gasp")
if(istype(loc, /obj/))
@@ -695,21 +695,21 @@
else
overeatduration -= 2
if(drowsyness)
drowsyness--
eye_blurry = max(2, eye_blurry)
if(drowsy)
AdjustDrowsy(-1)
EyeBlurry(2)
if(prob(5))
sleeping += 1
AdjustSleeping(1)
Paralyse(5)
confused = max(0, confused - 1)
AdjustConfused(-1)
// decrement dizziness counter, clamped to 0
if(resting)
dizziness = max(0, dizziness - 15)
jitteriness = max(0, jitteriness - 15)
AdjustDizzy(-15)
AdjustJitter(-15)
else
dizziness = max(0, dizziness - 3)
jitteriness = max(0, jitteriness - 3)
AdjustDizzy(-3)
AdjustJitter(-3)
if(species && species.flags & NO_INTORGANS) return
@@ -744,8 +744,7 @@
alcohol_strength *= 5
if(alcohol_strength >= slur_start) //slurring
if(!slurring) slurring = 1
slurring = drunk
Slur(drunk)
if(alcohol_strength >= brawl_start) //the drunken martial art
if(!istype(martial_art, /datum/martial_art/drunk_brawling))
var/datum/martial_art/drunk_brawling/F = new
@@ -754,18 +753,17 @@
if(istype(martial_art, /datum/martial_art/drunk_brawling))
martial_art.remove(src)
if(alcohol_strength >= confused_start && prob(33)) //confused walking
if(!confused) confused = 1
confused = max(confused+(3/sober_str),0)
if(!confused) Confused(1)
AdjustConfused(3/sober_str)
if(alcohol_strength >= blur_start) //blurry eyes
eye_blurry = max(eye_blurry, 10/sober_str)
drowsyness = max(drowsyness, 0)
EyeBlurry(10/sober_str)
if(!isSynthetic()) //stuff only for non-synthetics
if(alcohol_strength >= vomit_start) //vomiting
if(prob(8))
fakevomit()
if(alcohol_strength >= pass_out)
Paralyse(5 / sober_str)
drowsyness = max(drowsyness, 30/sober_str)
Paralyse(5/sober_str)
Drowsy(30/sober_str)
if(L)
L.take_damage(0.1, 1)
adjustToxLoss(0.1)
@@ -837,14 +835,14 @@
vision = get_int_organ(species.vision_organ)
if(!species.vision_organ) // Presumably if a species has no vision organs, they see via some other means.
eye_blind = 0
SetEyeBlind(0)
blinded = 0
eye_blurry = 0
SetEyeBlurry(0)
else if(!vision || vision.is_broken()) // Vision organs cut out or broken? Permablind.
eye_blind = 1
EyeBlind(1)
blinded = 1
eye_blurry = 1
EyeBlurry(1)
else
//blindness
@@ -852,34 +850,34 @@
blinded = 1
else if(eye_blind) // Blindness, heals slowly over time
eye_blind = max(eye_blind-1,0)
AdjustEyeBlind(-1)
blinded = 1
else if(istype(glasses, /obj/item/clothing/glasses/sunglasses/blindfold)) //resting your eyes with a blindfold heals blurry eyes faster
eye_blurry = max(eye_blurry-3, 0)
AdjustEyeBlurry(-3)
blinded = 1
//blurry sight
if(vision.is_bruised()) // Vision organs impaired? Permablurry.
eye_blurry = 1
EyeBlurry(1)
if(eye_blurry) // Blurry eyes heal slowly
eye_blurry = max(eye_blurry-1, 0)
AdjustEyeBlurry(-1)
//Ears
if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own
setEarDamage(-1, max(ear_deaf, 1))
EarDeaf(1)
else if(ear_deaf) //deafness, heals slowly over time
adjustEarDamage(0,-1)
AdjustEarDeaf(-1)
else if(istype(l_ear, /obj/item/clothing/ears/earmuffs) || istype(r_ear, /obj/item/clothing/ears/earmuffs)) //resting your ears with earmuffs heals ear damage faster
adjustEarDamage(-0.15,0)
setEarDamage(-1, max(ear_deaf, 1))
AdjustEarDamage(-0.15)
EarDeaf(1)
else if(ear_damage < 25) //ear damage heals slowly under this threshold. otherwise you'll need earmuffs
adjustEarDamage(-0.05,0)
AdjustEarDamage(-0.05)
if(flying)
animate(src, pixel_y = pixel_y + 5 , time = 10, loop = 1, easing = SINE_EASING)
@@ -896,7 +894,7 @@
else //dead
blinded = 1
silent = 0
SetSilence(0)
/mob/living/carbon/human/handle_vision()
@@ -995,8 +993,8 @@
if(shock_stage >= 30)
if(shock_stage == 30) custom_emote(1,"is having trouble keeping their eyes open.")
eye_blurry = max(2, eye_blurry)
stuttering = max(stuttering, 5)
EyeBlurry(2)
Stuttering(5)
if(shock_stage == 40)
to_chat(src, "<font color='red'><b>"+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!"))
@@ -1183,8 +1181,7 @@
if(!heart_attack)
return
else
if(losebreath < 3)
losebreath += 2
AdjustLoseBreath(2, bound_lower = 0, bound_upper = 3)
adjustOxyLoss(5)
adjustBruteLoss(1)
@@ -189,7 +189,7 @@
if(SA_pp > SA_para_min) // Enough to make us paralysed for a bit
H.Paralyse(3) // 3 gives them one second to wake up and run away a bit!
if(SA_pp > SA_sleep_min) // Enough to make us sleep as well
H.sleeping = min(H.sleeping+2, 10)
H.AdjustSleeping(2, bound_lower = 0, bound_upper = 10)
else if(SA_pp > 0.15) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning
if(prob(20))
spawn(0)
@@ -332,7 +332,7 @@
if(SA_pp > atmos_requirements["sa_para"]) // Enough to make us paralysed for a bit
H.Paralyse(3) // 3 gives them one second to wake up and run away a bit!
if(SA_pp > atmos_requirements["sa_sleep"]) // Enough to make us sleep as well
H.sleeping = max(H.sleeping + 2, 10)
H.AdjustSleeping(2, bound_lower = 0, bound_upper = 10)
else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning
if(prob(20))
spawn(0)
@@ -509,7 +509,7 @@
if(tinted_weldhelh)
H.overlay_fullscreen("tint", /obj/screen/fullscreen/impaired, 2)
if(H.tinttotal >= TINT_BLIND)
H.eye_blind = max(H.eye_blind, 1)
H.EyeBlind(1)
else
H.clear_fullscreen("tint")
+14 -17
View File
@@ -49,10 +49,10 @@
var/datum/gas_mixture/breath
if(health <= config.health_threshold_crit)
losebreath++
AdjustLoseBreath(1)
if(losebreath > 0)
losebreath--
if(lose_breath > 0)
AdjustLoseBreath(-1)
if(prob(10))
spawn emote("gasp")
if(istype(loc, /obj/))
@@ -165,7 +165,7 @@
if(SA_partialpressure > SA_para_min)
Paralyse(3)
if(SA_partialpressure > SA_sleep_min)
sleeping = max(sleeping+2, 10)
AdjustSleeping(2, bound_lower = 0, bound_upper = 10)
else if(SA_partialpressure > 0.01)
if(prob(20))
spawn(0) emote(pick("giggle","laugh"))
@@ -319,30 +319,27 @@
C.pixel_x -= pixel_x_diff
C.pixel_y -= pixel_y_diff
src = oldsrc
dizziness = max(dizziness - restingpwr, 0)
AdjustDizzy(-restingpwr)
if(drowsyness)
drowsyness = max(drowsyness - restingpwr, 0)
eye_blurry = max(2, eye_blurry)
if(drowsy)
AdjustDrowsy(-restingpwr)
EyeBlurry(2)
if(prob(5))
sleeping += 1
AdjustSleeping(1)
Paralyse(5)
if(confused)
confused = max(0, confused - 1)
AdjustConfused(-1)
//Jitteryness
if(jitteriness)
do_jitter_animation(jitteriness)
jitteriness = max(jitteriness - restingpwr, 0)
AdjustJitter(-restingpwr)
if(hallucination)
spawn handle_hallucinations()
if(hallucination<=2)
hallucination = 0
else
hallucination -= 2
AdjustHallucinate(-2)
/mob/living/carbon/handle_sleeping()
if(..())
@@ -352,8 +349,8 @@
spawn(0)
emote("snore")
// Keep SSD people asleep
if(player_logged && sleeping < 2)
sleeping = 2
if(player_logged)
Sleeping(2)
return sleeping
+6 -6
View File
@@ -208,25 +208,25 @@
if(src.stuttering) src.stuttering = 0
if(src.eye_blind)
src.eye_blind = 0
src.SetEyeBlind(0)
src.blinded = 1
if(src.ear_deaf > 0) src.ear_deaf = 0
if(src.ear_deaf > 0) SetEarDeaf(0)
if(src.ear_damage < 25)
src.ear_damage = 0
SetEarDamage(0)
src.density = !( src.lying )
if(src.disabilities & BLIND)
src.blinded = 1
if(src.disabilities & DEAF)
src.ear_deaf = 1
EarDeaf(1)
if(src.eye_blurry > 0)
src.eye_blurry = 0
SetEyeBlurry(0)
if(src.druggy > 0)
src.druggy = 0
SetDruggy(0)
return 1
+5 -6
View File
@@ -57,17 +57,16 @@
rad_damage = max(effect * ((100-run_armor_check(null, "rad", "Your clothes feel warm.", "Your clothes feel warm."))/100),0)
radiation += rad_damage
if(SLUR)
slurring = max(slurring,(effect * blocked))
Slur(effect * blocked)
if(STUTTER)
if(status_flags & CANSTUN) // stun is usually associated with stutter
stuttering = max(stuttering,(effect * blocked))
Stuttering(effect * blocked)
if(EYE_BLUR)
eye_blurry = max(eye_blurry,(effect * blocked))
EyeBlurry(effect * blocked)
if(DROWSY)
drowsyness = max(drowsyness,(effect * blocked))
Drowsy(effect * blocked)
if(JITTER)
if(status_flags & CANSTUN)
jitteriness = max(jitteriness,(effect * blocked))
Jitter(effect * blocked)
updatehealth()
return 1
+10 -9
View File
@@ -136,17 +136,17 @@
/mob/living/proc/handle_silent()
if(silent)
silent = max(silent-1, 0)
AdjustSilence(-1)
return silent
/mob/living/proc/handle_drugged()
if(druggy)
druggy = max(druggy-1, 0)
AdjustDruggy(-1)
return druggy
/mob/living/proc/handle_slurring()
if(slurring)
slurring = max(slurring-1, 0)
AdjustSlur(-1)
return slurring
/mob/living/proc/handle_paralysed()
@@ -164,7 +164,7 @@
/mob/living/proc/handle_slowed()
if(slowed)
slowed = max(slowed-1, 0)
AdjustSlowed(-1)
return slowed
/mob/living/proc/handle_drunk()
@@ -175,19 +175,20 @@
/mob/living/proc/handle_disabilities()
//Eyes
if(disabilities & BLIND || stat) //blindness from disability or unconsciousness doesn't get better on its own
eye_blind = max(eye_blind, 1)
EyeBlind(1)
else if(eye_blind) //blindness, heals slowly over time
eye_blind = max(eye_blind-1,0)
AdjustEyeBlind(-1)
else if(eye_blurry) //blurry eyes heal slowly
eye_blurry = max(eye_blurry-1, 0)
AdjustEyeBlurry(-1)
//Ears
if(disabilities & DEAF) //disabled-deaf, doesn't get better on its own
setEarDamage(-1, max(ear_deaf, 1))
EarDeaf(1)
else
// deafness heals slowly over time, unless ear_damage is over 100
if(ear_damage < 100)
adjustEarDamage(-0.05,-1)
AdjustEarDamage(-0.05)
AdjustEarDeaf(-1)
//this handles hud updates. Calls update_vision() and handle_hud_icons()
/mob/living/proc/handle_regular_hud_updates()
+23 -28
View File
@@ -261,19 +261,6 @@
var/obj/item/organ/external/def_zone = ran_zone(t)
return def_zone
//damage/heal the mob ears and adjust the deaf amount
/mob/living/adjustEarDamage(damage, deaf)
ear_damage = max(0, ear_damage + damage)
ear_deaf = max(0, ear_deaf + deaf)
//pass a negative argument to skip one of the variable
/mob/living/setEarDamage(damage, deaf)
if(damage >= 0)
ear_damage = damage
if(deaf >= 0)
ear_deaf = deaf
// heal ONE external organ, organ gets randomly selected from damaged ones.
/mob/living/proc/heal_organ_damage(var/brute, var/burn)
adjustBruteLoss(-brute)
@@ -328,8 +315,8 @@
dead_mob_list -= src
living_mob_list |= src
mob_list |= src
setEarDamage(-1,0)
timeofdeath = 0
SetEarDeaf(0)
timeofdeath = null
/mob/living/proc/rejuvenate()
var/mob/living/carbon/human/human_mob = null //Get this declared for use later.
@@ -344,22 +331,30 @@
SetParalysis(0)
SetStunned(0)
SetWeakened(0)
slowed = 0
losebreath = 0
dizziness = 0
jitteriness = 0
confused = 0
drowsyness = 0
SetSlowed(0)
SetLoseBreath(0)
SetDizzy(0)
SetJitter(0)
SetConfused(0)
SetDrowsy(0)
radiation = 0
druggy = 0
hallucination = 0
SetDruggy(0)
SetHallucinate(0)
blinded = 0
nutrition = 400
bodytemperature = 310
disabilities = 0
blinded = 0
eye_blind = 0
eye_blurry = 0
setEarDamage(0,0)
CureBlind()
CureNearsighted()
CureMute()
CureDeaf()
CureTourettes()
CureEpilepsy()
CureCoughing()
CureNervous()
SetEyeBlind(0)
SetEyeBlurry(0)
SetEarDamage(0)
SetEarDeaf(0)
heal_overall_damage(1000, 1000)
ExtinguishMob()
fire_stacks = 0
@@ -15,8 +15,6 @@
var/brainloss = 0 //'Retardation' damage caused by someone hitting you in the head with a bible or being infected with brainrot.
var/staminaloss = 0 //Stamina damage, or exhaustion. You recover it slowly naturally, and are stunned if it gets too high. Holodeck and hallucinations deal this.
var/hallucination = 0 //Directly affects how long a mob will hallucinate for
var/last_special = 0 //Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out.
@@ -32,7 +30,6 @@
var/update_slimes = 1
var/implanting = 0 //Used for the mind-slave implant
var/silent = 0 //Can't talk. Value goes down every life proc. //NOTE TO FUTURE CODERS: DO NOT INITIALIZE NUMERICAL VARS AS NULL OR I WILL MURDER YOU.
var/floating = 0
var/mob_size = MOB_SIZE_HUMAN
var/nightvision = 0
+3 -3
View File
@@ -4,6 +4,6 @@
if(!key) //key and mind have become seperated. I believe this is for when a staff member aghosts.
mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body.
//This causes instant sleep and tags a player as SSD. See life.dm for furthering SSD.
if(sleeping < 2 && mind.active)
sleeping = 2
player_logged = 1
if(mind.active)
Sleeping(2)
player_logged = 1
+1 -1
View File
@@ -82,7 +82,7 @@ var/const/VOX_PATH = "sound/vox_fem/"
for(var/mob/M in player_list)
if(M.client)
var/turf/T = get_turf(M)
if(T && T.z == z_level && !isdeaf(M))
if(T && T.z == z_level && M.can_hear())
M << voice
else
only_listener << voice
+2 -2
View File
@@ -1,5 +1,5 @@
/mob/living/silicon/Login()
sleeping = 0
SetSleeping(0)
if(mind && ticker && ticker.mode)
ticker.mode.remove_revolutionary(mind, 1)
ticker.mode.remove_cultist(mind, 1)
@@ -9,4 +9,4 @@
ticker.mode.remove_thrall(mind, 0)
ticker.mode.remove_shadowling(mind)
ticker.mode.remove_abductor(mind)
..()
..()
@@ -62,7 +62,7 @@
if(sleeping)
Paralyse(3)
sleeping--
AdjustSleeping(-1)
if(resting)
Weaken(5)
@@ -90,7 +90,7 @@
stat = UNCONSCIOUS
if(!paralysis > 0)
eye_blind = 0
SetEyeBlind(0)
else
stat = CONSCIOUS
@@ -98,7 +98,7 @@
diag_hud_set_health()
diag_hud_set_status()
else //dead
eye_blind = 1
SetEyeBlind(0)
//update the state of modules and components here
if(stat != CONSCIOUS)
+4 -4
View File
@@ -152,7 +152,7 @@
//Silicon mob language procs
/mob/living/silicon/can_speak(datum/language/speaking)
/mob/living/silicon/can_speak_language(datum/language/speaking)
return universal_speak || (speaking in src.speech_synthesizer_langs) //need speech synthesizer support to vocalize a language
/mob/living/silicon/add_language(var/language, var/can_speak=1)
@@ -355,8 +355,8 @@
/////////////////////////////////// EAR DAMAGE ////////////////////////////////////
/mob/living/silicon/adjustEarDamage()
/mob/living/silicon/SetEarDamage()
return
/mob/living/silicon/setEarDamage()
return
/mob/living/silicon/SetEarDeaf()
return
@@ -118,11 +118,11 @@
for(var/atom/check in check_list)
for(var/mob/living/M in viewers(world.view + 1, check) - src)
if(M.client && CanAttack(M) && !M.has_unlimited_silicon_privilege)
if(!M.eye_blind)
if(M.can_see())
return M
for(var/obj/mecha/M in view(world.view + 1, check)) //assuming if you can see them they can see you
if(M.occupant && M.occupant.client)
if(!M.occupant.eye_blind)
if(M.occupant.can_see())
return M.occupant
return null
@@ -185,7 +185,7 @@
continue
var/turf/T = get_turf(L.loc)
if(T && T in targets)
L.eye_blind = max(L.eye_blind, 4)
L.EyeBlind(4)
return
//Toggle Night Vision
@@ -706,8 +706,8 @@
/mob/living/simple_animal/proc/sentience_act() //Called when a simple animal gains sentience via gold slime potion
return
/mob/living/simple_animal/adjustEarDamage()
/mob/living/simple_animal/SetEarDamage()
return
/mob/living/simple_animal/setEarDamage()
return
/mob/living/simple_animal/SetEarDeaf()
return
+522
View File
@@ -0,0 +1,522 @@
//Here are the procs used to modify status effects of a mob.
// We use these to automatically apply their effects when they are changed, as
// opposed to setting them manually and having to either wait for the next `Life`
// or update by hand
// The `updating` argument is only available on effects that cause a visual/physical effect on the mob itself
// when applied, such as Stun, Weaken, and Jitter - stuff like Blindness, which has a client-side effect,
// lacks this argument.
// Ideally, code should only read the vars in this file, and not ever directly
// modify them
// If you want a mob type to ignore a given status effect, just override the corresponding
// `SetSTATE` proc - since all of the other procs are wrappers around that,
// calling them will have no effect
// BOOLEAN STATES
/*
* EyesBlocked
Your eyes are covered somehow
* EarsBlocked
Your ears are covered somehow
* Resting
You are lying down of your own volition
* Flying
For some reason or another you can move while not touching the ground
*/
// STATUS EFFECTS
// All of these decrement over time - at a rate of 1 per life cycle unless otherwise noted
// Status effects sorted alphabetically:
/*
* Confused *
Movement is scrambled
* Dizzy *
The screen goes all warped
* Drowsy
You begin to yawn, and have a chance of incrementing "Paralysis"
* Druggy *
A trippy overlay appears.
* Drunk *
Essentially what your "BAC" is - the higher it is, the more alcohol you have in you
* EarDamage *
Doesn't do much, but if it's 25+, you go deaf. Heals much slower than other statuses - 0.05 normally
* EarDeaf *
You cannot hear. Prevents EarDamage from healing naturally.
* EyeBlind *
You cannot see. Prevents EyeBlurry from healing naturally.
* EyeBlurry *
A hazy overlay appears on your screen.
* Hallucination *
Your character will imagine various effects happening to them, vividly.
* Jitter *
Your character will visibly twitch. Higher values amplify the effect.
* LoseBreath *
Your character is unable to breathe.
* Paralysis *
Your character is knocked out.
* Silent *
Your character is unable to speak.
* Sleeping *
Your character is asleep.
* Slowed *
Your character moves slower.
* Slurring *
Your character cannot enunciate clearly.
* Stunned *
Your character is unable to move, and drops stuff in their hands. They keep standing, though.
* Stuttering *
Your character stutters parts of their messages.
* Weakened *
Your character collapses, but is still conscious.
*/
// DISABILITIES
// These are more permanent than the above.
// Disabilities sorted alphabetically
/*
* Blind (32)
Can't see. EyeBlind does not heal when this is active.
* Coughing (4)
Cough occasionally, causing you to drop your items
* Deaf (128)
Can't hear. EarDeaf does not heal when this is active
* Epilepsy (2)
Occasionally go "Epileptic", causing you to become very twitchy, drop all items, and fall to the floor
* Mute (64)
Cannot talk.
* Nearsighted (1)
My glasses! I can't see without my glasses! (Nearsighted overlay when not wearing prescription eyewear)
* Nervous (16)
Occasionally begin to stutter.
* Tourettes (8)
SHIT (say bad words, and drop stuff occasionally)
*/
/mob/living
// Booleans
var/resting = FALSE
/*
STATUS EFFECTS
*/
/mob // On `/mob` for now, to support legacy code
var/confused = 0
var/dizziness = 0
var/drowsy = 0
var/druggy = 0
var/drunk = 0
var/ear_damage = 0
var/ear_deaf = 0
var/eye_blind = 0
var/eye_blurry = 0
var/hallucination = 0
var/jitteriness = 0
var/lose_breath = 0
var/paralysis = 0
var/silent = 0
var/sleeping = 0
var/slowed = 0
var/slurring = 0
var/stunned = 0
var/stuttering = 0
var/weakened = 0
/mob/living
// Bitfields
var/disabilities = 0
// RESTING
/mob/living/proc/StartResting(updating = 1)
var/val_change = !resting
resting = TRUE
if(updating && val_change)
update_canmove()
/mob/living/proc/StopResting(updating = 1)
var/val_change = !!resting
resting = FALSE
if(updating && val_change)
update_canmove()
/mob/living/proc/StartFlying()
var/val_change = !flying
flying = TRUE
if(val_change)
update_animations()
/mob/living/proc/StopFlying()
var/val_change = !!flying
flying = FALSE
if(val_change)
update_animations()
// SCALAR STATUS EFFECTS
// CONFUSED
/mob/living/Confused(amount)
SetConfused(max(confused, amount))
/mob/living/SetConfused(amount)
confused = max(amount, 0)
/mob/living/AdjustConfused(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(confused, amount, bound_lower, bound_upper)
SetConfused(new_value)
// DIZZY
/mob/living/Dizzy(amount)
SetDizzy(max(dizziness, amount))
/mob/living/SetDizzy(amount)
dizziness = max(amount, 0)
/mob/living/AdjustDizzy(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(dizziness, amount, bound_lower, bound_upper)
SetDizzy(new_value)
// DROWSY
/mob/living/Drowsy(amount)
SetDrowsy(max(drowsy, amount))
/mob/living/SetDrowsy(amount)
drowsy = max(amount, 0)
/mob/living/AdjustDrowsy(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(drowsy, amount, bound_lower, bound_upper)
SetDrowsy(new_value)
// DRUNK
/mob/living/Drunk(amount)
SetDrunk(max(drunk, amount))
/mob/living/SetDrunk(amount)
drunk = max(amount, 0)
/mob/living/AdjustDrunk(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(drunk, amount, bound_lower, bound_upper)
SetDrunk(new_value)
// DRUGGY
/mob/living/Druggy(amount)
SetDruggy(max(druggy, amount))
/mob/living/SetDruggy(amount)
var/old_val = druggy
druggy = max(amount, 0)
// We transitioned to/from 0, so update the druggy overlays
if((old_val == 0 || druggy == 0) && (old_val != druggy))
update_druggy_effects()
/mob/living/AdjustDruggy(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(druggy, amount, bound_lower, bound_upper)
SetDruggy(new_value)
// EAR_DAMAGE
/mob/living/EarDamage(amount)
SetEarDamage(max(ear_damage, amount))
/mob/living/SetEarDamage(amount)
ear_damage = max(amount, 0)
/mob/living/AdjustEarDamage(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(ear_damage, amount, bound_lower, bound_upper)
SetEarDamage(new_value)
// EAR_DEAF
/mob/living/EarDeaf(amount)
SetEarDeaf(max(ear_deaf, amount))
/mob/living/SetEarDeaf(amount)
ear_deaf = max(amount, 0)
/mob/living/AdjustEarDeaf(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(ear_deaf, amount, bound_lower, bound_upper)
SetEarDeaf(new_value)
// EYE_BLIND
/mob/living/EyeBlind(amount)
SetEyeBlind(max(eye_blind, amount))
/mob/living/SetEyeBlind(amount)
var/old_val = eye_blind
eye_blind = max(amount, 0)
// We transitioned to/from 0, so update the eye blind overlays
if((old_val == 0 || eye_blind == 0) && (old_val != eye_blind))
update_blind_effects()
/mob/living/AdjustEyeBlind(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(eye_blind, amount, bound_lower, bound_upper)
SetEyeBlind(new_value)
// EYE_BLURRY
/mob/living/EyeBlurry(amount)
SetEyeBlurry(max(eye_blurry, amount))
/mob/living/SetEyeBlurry(amount)
var/old_val = eye_blurry
eye_blurry = max(amount, 0)
// We transitioned to/from 0, so update the eye blur overlays
if((old_val == 0 || eye_blurry == 0) && (old_val != eye_blurry))
update_blurry_effects()
/mob/living/AdjustEyeBlurry(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(eye_blurry, amount, bound_lower, bound_upper)
SetEyeBlurry(new_value)
// HALLUCINATION
/mob/living/Hallucinate(amount)
SetHallucinate(max(hallucination, amount))
/mob/living/SetHallucinate(amount)
hallucination = max(amount, 0)
/mob/living/AdjustHallucinate(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(hallucination, amount, bound_lower, bound_upper)
SetHallucinate(new_value)
// JITTER
/mob/living/Jitter(amount, force = 0)
SetJitter(max(jitteriness, amount), force)
/mob/living/SetJitter(amount, force = 0)
// Jitter is also associated with stun
if(status_flags & CANSTUN || force)
jitteriness = max(amount, 0)
else
jitteriness = 0
/mob/living/AdjustJitter(amount, bound_lower = 0, bound_upper = INFINITY, force = 0)
var/new_value = directional_bounded_sum(jitteriness, amount, bound_lower, bound_upper)
SetJitter(new_value, force)
// LOSE_BREATH
/mob/living/LoseBreath(amount)
SetLoseBreath(max(lose_breath, amount))
/mob/living/SetLoseBreath(amount)
lose_breath = max(amount, 0)
/mob/living/AdjustLoseBreath(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(lose_breath, amount, bound_lower, bound_upper)
SetLoseBreath(new_value)
// PARALYSE
/mob/living/Paralyse(amount, updating = 1, force = 0)
SetParalysis(max(paralysis, amount), updating, force)
/mob/living/SetParalysis(amount, updating = 1, force = 0)
if(status_flags & CANPARALYSE || force)
paralysis = max(amount, 0)
else
paralysis = 0
if(updating)
update_canmove()
update_stat()
/mob/living/AdjustParalysis(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1, force = 0)
var/new_value = directional_bounded_sum(paralysis, amount, bound_lower, bound_upper)
SetParalysis(new_value, updating, force)
// SILENT
/mob/living/Silence(amount)
SetSilence(max(silent, amount))
/mob/living/SetSilence(amount)
silent = max(amount, 0)
/mob/living/AdjustSilence(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(silent, amount, bound_lower, bound_upper)
SetSilence(new_value)
// SLEEPING
/mob/living/Sleeping(amount, updating = 1)
SetSleeping(max(sleeping, amount), updating)
/mob/living/SetSleeping(amount, updating = 1)
sleeping = max(amount, 0)
update_sleeping_effects()
if(updating)
update_stat()
/mob/living/AdjustSleeping(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1)
var/new_value = directional_bounded_sum(sleeping, amount, bound_lower, bound_upper)
SetSleeping(new_value, updating)
// SLOWED
/mob/living/Slowed(amount, updating = 1)
SetSlowed(max(slowed, amount), updating)
/mob/living/SetSlowed(amount, updating = 1)
slowed = max(amount, 0)
/mob/living/AdjustSlowed(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1)
var/new_value = directional_bounded_sum(slowed, amount, bound_lower, bound_upper)
SetSlowed(new_value, updating)
// SLURRING
/mob/living/Slur(amount)
SetSlur(max(slurring, amount))
/mob/living/SetSlur(amount)
slurring = max(amount, 0)
/mob/living/AdjustSlur(amount, bound_lower = 0, bound_upper = INFINITY)
var/new_value = directional_bounded_sum(slurring, amount, bound_lower, bound_upper)
SetSlur(new_value)
// STUN
/mob/living/Stun(amount, updating = 1, force = 0)
SetStunned(max(stunned, amount), updating, force)
/mob/living/SetStunned(amount, updating = 1, force = 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 || force)
stunned = max(amount, 0)
else if(stunned)
stunned = 0
if(updating)
update_canmove()
/mob/living/AdjustStunned(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1, force = 0)
var/new_value = directional_bounded_sum(stunned, amount, bound_lower, bound_upper)
SetStunned(new_value, updating, force)
// STUTTERING
/mob/living/Stuttering(amount, force = 0)
SetStuttering(max(stuttering, amount), force)
/mob/living/SetStuttering(amount, force = 0)
//From mob/living/apply_effect: "Stuttering is often associated with Stun"
if(status_flags & CANSTUN || force)
stuttering = max(stuttering, 0)
else
stuttering = 0
/mob/living/AdjustStuttering(amount, bound_lower = 0, bound_upper = INFINITY, force = 0)
var/new_value = directional_bounded_sum(stuttering, amount, bound_lower, bound_upper)
SetStuttering(new_value, force)
// WEAKEN
/mob/living/Weaken(amount, updating = 1, force = 0)
SetWeakened(max(weakened, amount), updating, force)
/mob/living/SetWeakened(amount, updating = 1, force = 0)
if(status_flags & CANWEAKEN || force)
weakened = max(amount, 0)
else
weakened = 0
if(updating)
update_canmove() //updates lying, canmove and icons
/mob/living/AdjustWeakened(amount, bound_lower = 0, bound_upper = INFINITY, updating = 1, force = 0)
var/new_value = directional_bounded_sum(weakened, amount, bound_lower, bound_upper)
SetWeakened(new_value, updating, force)
//
// DISABILITIES
//
// Blind
/mob/living/proc/BecomeBlind()
var/val_change = !(disabilities & BLIND)
disabilities |= BLIND
if(val_change)
update_blind_effects()
/mob/living/proc/CureBlind()
var/val_change = !!(disabilities & BLIND)
disabilities &= ~BLIND
if(val_change)
update_blind_effects()
// Coughing
/mob/living/proc/BecomeCoughing()
disabilities |= COUGHING
/mob/living/proc/CureCoughing()
disabilities &= ~COUGHING
// Deaf
/mob/living/proc/BecomeDeaf()
disabilities |= DEAF
/mob/living/proc/CureDeaf()
disabilities &= ~DEAF
// Epilepsy
/mob/living/proc/BecomeEpilepsy()
disabilities |= EPILEPSY
/mob/living/proc/CureEpilepsy()
disabilities &= ~EPILEPSY
// Mute
/mob/living/proc/BecomeMute()
disabilities |= MUTE
/mob/living/proc/CureMute()
disabilities &= ~MUTE
// Nearsighted
/mob/living/proc/BecomeNearsighted()
var/val_change = !(disabilities & NEARSIGHTED)
disabilities |= NEARSIGHTED
if(val_change)
update_nearsighted_effects()
/mob/living/proc/CureNearsighted()
var/val_change = !!(disabilities & NEARSIGHTED)
disabilities &= ~NEARSIGHTED
if(val_change)
update_nearsighted_effects()
// Nervous
/mob/living/proc/BecomeNervous()
disabilities |= NERVOUS
/mob/living/proc/CureNervous()
disabilities &= ~NERVOUS
// Tourettes
/mob/living/proc/BecomeTourettes()
disabilities |= TOURETTES
/mob/living/proc/CureTourettes()
disabilities &= ~TOURETTES
+97
View File
@@ -0,0 +1,97 @@
/mob/living/update_blind_effects()
if(!can_see())
overlay_fullscreen("blind", /obj/screen/fullscreen/blind)
throw_alert("blind", /obj/screen/alert/blind)
return 1
else
clear_fullscreen("blind")
clear_alert("blind")
return 0
/mob/living/update_blurry_effects()
if(eyes_blurred())
overlay_fullscreen("blurry", /obj/screen/fullscreen/blurry)
return 1
else
clear_fullscreen("blurry")
return 0
/mob/living/update_druggy_effects()
if(druggy)
overlay_fullscreen("high", /obj/screen/fullscreen/high)
throw_alert("high", /obj/screen/alert/high)
else
clear_fullscreen("high")
clear_alert("high")
/mob/living/update_nearsighted_effects()
if(disabilities & NEARSIGHTED)
overlay_fullscreen("nearsighted", /obj/screen/fullscreen/impaired, 1)
else
clear_fullscreen("nearsighted")
/mob/living/update_sleeping_effects()
if(sleeping)
throw_alert("asleep", /obj/screen/alert/asleep)
else
clear_alert("asleep")
// Querying status of the mob
// Whether the mob can hear things
/mob/living/can_hear()
return !(ear_deaf || (disabilities & DEAF))
// Whether the mob is able to see
/mob/living/can_see()
return !(eye_blind || (disabilities & BLIND) || stat)
// Whether the mob is capable of talking
/mob/living/can_speak()
return !(silent || (disabilities & MUTE) || is_muzzled())
// Whether the mob is capable of standing or not
/mob/living/proc/can_stand()
return !(weakened || paralysis || stat || (status_flags & FAKEDEATH))
// Whether the mob is capable of actions or not
/mob/living/incapacitated(ignore_restraints = 0, ignore_grab = 0, ignore_lying = 0)
if(stat || paralysis || stunned || (weakened && lying) || (!ignore_restraints && restrained()) || (!ignore_lying && lying))
return 1
// wonderful proc names, I know - used to check whether the blur overlay
// should show or not
/mob/living/proc/eyes_blurred()
return eye_blurry
//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it.
/mob/living/update_canmove(delay_action_updates = 0)
var/fall_over = !can_stand()
var/buckle_lying = !(buckled && !buckled.buckle_lying)
if(fall_over || resting || stunned)
drop_r_hand()
drop_l_hand()
else
lying = 0
canmove = 1
if(buckled)
lying = 90 * buckle_lying
else if((fall_over || resting) && !lying)
fall(fall_over)
canmove = !(fall_over || resting || stunned || buckled)
density = !lying
if(lying)
if(layer == initial(layer))
layer = MOB_LAYER - 0.2
else
if(layer == MOB_LAYER - 0.2)
layer = initial(layer)
update_transform()
if(!delay_action_updates)
update_action_buttons_icon()
return canmove
/mob/living/proc/update_stamina()
return
+4 -119
View File
@@ -62,22 +62,22 @@
if(!client) return
if(type)
if(type & 1 && (disabilities & BLIND || blinded || paralysis) )//Vision related
if(type & 1 && !can_see())//Vision related
if(!( alt ))
return
else
msg = alt
type = alt_type
if(type & 2 && (disabilities & DEAF || ear_deaf))//Hearing related
if(type & 2 && !can_hear())//Hearing related
if(!( alt ))
return
else
msg = alt
type = alt_type
if((type & 1 && disabilities & BLIND))
if(type & 1 && !can_see())
return
// Added voice muffling for Issue 41.
if(stat == UNCONSCIOUS || (sleeping > 0 && stat != 2))
if(stat == UNCONSCIOUS || (sleeping > 0 && stat != DEAD))
to_chat(src, "<I>... You can almost hear someone talking ...</I>")
else
to_chat(src, msg)
@@ -163,13 +163,6 @@
// handle_typing_indicator()
return
/mob/proc/restrained()
return
/mob/proc/incapacitated()
return
//This proc is called whenever someone clicks an inventory ui slot.
/mob/proc/attack_ui(slot)
var/obj/item/W = get_active_hand()
@@ -1031,36 +1024,6 @@ var/list/slot_equipment_priority = list( \
if(restrained()) return 0
return 1
//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it.
/mob/proc/update_canmove(delay_action_updates = 0)
var/ko = weakened || paralysis || stat || (status_flags & FAKEDEATH)
var/buckle_lying = !(buckled && !buckled.buckle_lying)
if(ko || resting || stunned)
drop_r_hand()
drop_l_hand()
else
lying = 0
canmove = 1
if(buckled)
lying = 90 * buckle_lying
else
if((ko || resting) && !lying)
fall(ko)
canmove = !(ko || resting || stunned || buckled)
density = !lying
if(lying)
if(layer == initial(layer))
layer = MOB_LAYER - 0.2
else
if(layer == MOB_LAYER - 0.2)
layer = initial(layer)
update_transform()
if(!delay_action_updates)
update_action_buttons_icon()
return canmove
/mob/proc/fall(var/forced)
drop_l_hand()
drop_r_hand()
@@ -1101,77 +1064,6 @@ var/list/slot_equipment_priority = list( \
/mob/proc/activate_hand(selhand)
return
/mob/proc/Jitter(amount)
jitteriness = max(jitteriness, amount, 0)
/mob/proc/Dizzy(amount)
dizziness = max(dizziness, amount, 0)
/mob/proc/AdjustDrunk(amount)
drunk = max(drunk + amount, 0)
/mob/proc/Stun(amount)
SetStunned(max(stunned, amount))
/mob/proc/SetStunned(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned"
if(status_flags & CANSTUN)
stunned = max(amount, 0)
update_canmove()
else if(stunned)
stunned = 0
update_canmove()
/mob/proc/AdjustStunned(amount)
SetStunned(stunned + amount)
/mob/proc/Weaken(amount)
SetWeakened(max(weakened, amount))
/mob/proc/SetWeakened(amount)
if(status_flags & CANWEAKEN)
weakened = max(amount, 0)
update_canmove() //updates lying, canmove and icons
else if(weakened)
weakened = 0
update_canmove()
/mob/proc/AdjustWeakened(amount)
SetWeakened(weakened + amount)
/mob/proc/Paralyse(amount)
SetParalysis(max(paralysis, amount))
/mob/proc/SetParalysis(amount)
if(status_flags & CANPARALYSE)
paralysis = max(amount, 0)
update_canmove()
else if(paralysis)
paralysis = 0
update_canmove()
/mob/proc/AdjustParalysis(amount)
SetParalysis(paralysis + amount)
/mob/proc/Sleeping(amount)
SetSleeping(max(sleeping, amount))
/mob/proc/SetSleeping(amount)
sleeping = max(amount, 0)
update_canmove()
/mob/proc/AdjustSleeping(amount)
SetSleeping(sleeping + amount)
/mob/proc/Resting(amount)
SetResting(max(resting, amount))
/mob/proc/SetResting(amount)
resting = max(amount, 0)
update_canmove()
/mob/proc/AdjustResting(amount)
SetResting(resting + amount)
/mob/proc/get_species()
return ""
@@ -1365,13 +1257,6 @@ mob/proc/yank_out_object()
location.add_vomit_floor(src, 1)
playsound(location, 'sound/effects/splat.ogg', 50, 1)
/mob/proc/adjustEarDamage()
return
/mob/proc/setEarDamage()
return
/mob/proc/AddSpell(obj/effect/proc_holder/spell/S)
mob_spell_list += S
S.action.Grant(src)
-20
View File
@@ -33,18 +33,11 @@
var/obj/machinery/machine = null
var/other_mobs = null
var/memory = ""
var/disabilities = 0 //Carbon
var/atom/movable/pulling = null
var/next_move = null
var/notransform = null //Carbon
var/other = 0.0
var/hand = null
var/eye_blind = 0 //Carbon
var/eye_blurry = 0 //Carbon
var/ear_deaf = 0 //Carbon
var/ear_damage = 0 //Carbon
var/stuttering = 0 //Carbon
var/slurring = 0 //Carbon
var/real_name = null
var/flavor_text = ""
var/med_record = ""
@@ -53,11 +46,6 @@
var/blinded = null
var/bhunger = 0 //Carbon
var/ajourn = 0
var/druggy = 0 //Carbon
var/confused = 0 //Carbon
var/drunk = 0
var/sleeping = 0 //Carbon
var/resting = 0 //Carbon
var/lying = 0
var/lying_prev = 0
var/canmove = 1
@@ -77,19 +65,11 @@
var/bodytemperature = 310.055 //98.7 F
var/drowsyness = 0.0//Carbon
var/dizziness = 0//Carbon
var/jitteriness = 0//Carbon
var/flying = 0
var/charges = 0.0
var/nutrition = 400.0//Carbon
var/overeatduration = 0 // How long this guy is overeating //Carbon
var/paralysis = 0
var/stunned = 0
var/weakened = 0
var/slowed = 0
var/losebreath = 0 //Carbon
var/intent = null//Living
var/shakecamera = 0
var/a_intent = I_HELP//Living
+3 -3
View File
@@ -175,9 +175,9 @@
if(state >= GRAB_KILL)
//affecting.apply_effect(STUTTER, 5) //would do this, but affecting isn't declared as mob/living for some stupid reason.
affecting.stuttering = max(affecting.stuttering, 5) //It will hamper your voice, being choked and all.
affecting.Stuttering(5) //It will hamper your voice, being choked and all.
affecting.Weaken(5) //Should keep you down unless you get help.
affecting.losebreath = max(affecting.losebreath + 2, 3)
affecting.AdjustLoseBreath(2, bound_lower = 0, bound_upper = 3)
adjust_position()
@@ -290,7 +290,7 @@
msg_admin_attack("[key_name(assailant)] strangled (kill intent) [key_name(affecting)]")
assailant.next_move = world.time + 10
affecting.losebreath += 1
affecting.AdjustLoseBreath(1)
affecting.set_dir(WEST)
adjust_position()
-6
View File
@@ -75,12 +75,6 @@ proc/iscuffed(A)
return 1
return 0
proc/isdeaf(A)
if(istype(A, /mob))
var/mob/M = A
return (M.disabilities & DEAF) || M.ear_deaf
return 0
proc/hassensorlevel(A, var/level)
var/mob/living/carbon/human/H = A
if(istype(H) && istype(H.w_uniform, /obj/item/clothing/under))
+1 -1
View File
@@ -233,7 +233,7 @@
mob.last_movement = world.time
switch(mob.m_intent)
if("run")
if(mob.drowsyness > 0)
if(mob.drowsy > 0)
move_delay += 6
move_delay += 1+config.run_speed
if("walk")
@@ -565,3 +565,7 @@
/mob/new_player/is_ready()
return ready && ..()
// No hearing announcements
/mob/new_player/can_hear()
return 0
+1 -1
View File
@@ -142,7 +142,7 @@
if(length(message) >= 2)
var/language_prefix = trim_right(lowertext(copytext(message, 1 ,4)))
var/datum/language/L = language_keys[language_prefix]
if(can_speak(L))
if(can_speak_language(L))
return L
return null
+202
View File
@@ -0,0 +1,202 @@
// A bunch of empty procs for all the status procs in living/status_procs.dm, because
// I can't be bothered to deal with all the merge conflicts it would cause to
// typecast every mob in the codebase correctly
/mob/proc/Confused()
return
/mob/proc/SetConfused()
return
/mob/proc/AdjustConfused()
return
/mob/proc/Dizzy()
return
/mob/proc/SetDizzy()
return
/mob/proc/AdjustDizzy()
return
/mob/proc/Drowsy()
return
/mob/proc/SetDrowsy()
return
/mob/proc/AdjustDrowsy()
return
/mob/proc/Drunk()
return
/mob/proc/SetDrunk()
return
/mob/proc/AdjustDrunk()
return
/mob/proc/Druggy()
return
/mob/proc/SetDruggy()
return
/mob/proc/AdjustDruggy()
return
/mob/proc/EarDamage()
return
/mob/proc/SetEarDamage()
return
/mob/proc/AdjustEarDamage()
return
/mob/proc/EarDeaf()
return
/mob/proc/SetEarDeaf()
return
/mob/proc/AdjustEarDeaf()
return
/mob/proc/EyeBlind()
return
/mob/proc/SetEyeBlind()
return
/mob/proc/AdjustEyeBlind()
return
/mob/proc/EyeBlurry()
return
/mob/proc/SetEyeBlurry()
return
/mob/proc/AdjustEyeBlurry()
return
/mob/proc/Hallucinate()
return
/mob/proc/SetHallucinate()
return
/mob/proc/AdjustHallucinate()
return
/mob/proc/Jitter()
return
/mob/proc/SetJitter()
return
/mob/proc/AdjustJitter()
return
/mob/proc/LoseBreath()
return
/mob/proc/SetLoseBreath()
return
/mob/proc/AdjustLoseBreath()
return
/mob/proc/Paralyse()
return
/mob/proc/SetParalysis()
return
/mob/proc/AdjustParalysis()
return
/mob/proc/Silence()
return
/mob/proc/SetSilence()
return
/mob/proc/AdjustSilence()
return
/mob/proc/Sleeping()
return
/mob/proc/SetSleeping()
return
/mob/proc/AdjustSleeping()
return
/mob/proc/Slowed()
return
/mob/proc/SetSlowed()
return
/mob/proc/AdjustSlowed()
return
/mob/proc/Slur()
return
/mob/proc/SetSlur()
return
/mob/proc/AdjustSlur()
return
/mob/proc/Stun()
return
/mob/proc/SetStunned()
return
/mob/proc/AdjustStunned()
return
/mob/proc/Stuttering()
return
/mob/proc/SetStuttering()
return
/mob/proc/AdjustStuttering()
return
/mob/proc/Weaken()
return
/mob/proc/SetWeakened()
return
/mob/proc/AdjustWeakened()
return

Some files were not shown because too many files have changed in this diff Show More