mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-14 16:44:33 +01:00
Ports over the status effect unification
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
..()
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -0,0 +1,65 @@
|
||||
// These are procs that cause immediate updates to features of the mob - prefixed with `update_`
|
||||
// Procs that have a stacking effect depending on how many times they are called
|
||||
// do not belong in this file - those go in `life.dm` instead, with the prefix `handle_`
|
||||
|
||||
// OVERLAY/SIGHT PROCS
|
||||
|
||||
// These return 0 if they are not applying an overlay, and 1 if they are
|
||||
|
||||
// Call this to immediately apply blindness effects, instead of
|
||||
// waiting for the next `Life` tick
|
||||
/mob/proc/update_blind_effects()
|
||||
// No handling for this on the mob level
|
||||
return 0
|
||||
|
||||
/mob/proc/update_blurry_effects()
|
||||
// No handling for this on the mob level
|
||||
return 0
|
||||
|
||||
/mob/proc/update_druggy_effects()
|
||||
// No handling for this on the mob level
|
||||
return 0
|
||||
|
||||
/mob/proc/update_nearsighted_effects()
|
||||
// No handling for this on the mob level
|
||||
return 0
|
||||
|
||||
/mob/proc/update_sleeping_effects()
|
||||
// No handling for this on the mob level
|
||||
return 0
|
||||
|
||||
/mob/proc/update_tint_effects()
|
||||
// No handling for this on the mob level
|
||||
return 0
|
||||
|
||||
// Procs that give information about the status of the mob
|
||||
|
||||
/mob/proc/can_hear()
|
||||
return 1
|
||||
|
||||
/mob/proc/can_see()
|
||||
return 1
|
||||
|
||||
/mob/proc/can_speak()
|
||||
return 1
|
||||
|
||||
/mob/proc/incapacitated(ignore_restraints, ignore_grab)
|
||||
return 0
|
||||
|
||||
/mob/proc/restrained(ignore_grab)
|
||||
// All are created free
|
||||
return 0
|
||||
|
||||
// Procs that update other things about the mob
|
||||
|
||||
// Does various animations - Jitter, Flying, Spinning
|
||||
/mob/proc/update_animations()
|
||||
if(flying)
|
||||
animate(src, pixel_y = pixel_y + 5 , time = 10, loop = 1, easing = SINE_EASING)
|
||||
animate(pixel_y = pixel_y - 5, time = 10, loop = 1, easing = SINE_EASING)
|
||||
|
||||
/mob/proc/update_stat()
|
||||
return
|
||||
|
||||
/mob/proc/update_canmove()
|
||||
return 1
|
||||
@@ -14,10 +14,10 @@
|
||||
/mob/proc/shared_nano_interaction()
|
||||
if(stat || !client)
|
||||
return STATUS_CLOSE // no updates, close the interface
|
||||
else if(restrained() || lying || stunned || weakened)
|
||||
else if(incapacitated())
|
||||
return STATUS_UPDATE // update only (orange visibility)
|
||||
return STATUS_INTERACTIVE
|
||||
|
||||
|
||||
/mob/dead/observer/shared_nano_interaction()
|
||||
if(check_rights(R_ADMIN, 0, src))
|
||||
return STATUS_INTERACTIVE // Admins are more equal
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
if(ishuman(mob))
|
||||
//Hilariously enough, running into a closet should make you get hit the hardest.
|
||||
var/mob/living/carbon/human/H = mob
|
||||
H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) )
|
||||
H.AdjustHallucinate(max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)))))
|
||||
var/rads = DETONATION_RADS * sqrt( 1 / (get_dist(mob, src) + 1) )
|
||||
mob.apply_effect(rads, IRRADIATE)
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
var/obj/item/organ/internal/eyes/eyes = l.get_int_organ(/obj/item/organ/internal/eyes)
|
||||
if(!istype(eyes))
|
||||
continue
|
||||
l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src)) ) ) )
|
||||
l.Hallucinate(min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src)))))
|
||||
|
||||
for(var/mob/living/l in range(src, round((power / 100) ** 0.25)))
|
||||
var/rads = (power / 10) * sqrt( 1 / max(get_dist(l, src),1) )
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
var/mob_speed = M.movement_delay()
|
||||
switch(M.m_intent)
|
||||
if("run")
|
||||
if(M.drowsyness > 0)
|
||||
if(M.drowsy > 0)
|
||||
mob_speed += 6
|
||||
mob_speed += config.run_speed - 1
|
||||
if("walk")
|
||||
|
||||
@@ -23,18 +23,18 @@
|
||||
/obj/item/projectile/bullet/weakbullet/booze/on_hit(atom/target, blocked = 0)
|
||||
if(..(target, blocked))
|
||||
var/mob/living/M = target
|
||||
M.dizziness += 20
|
||||
M.slurring += 20
|
||||
M.confused += 20
|
||||
M.eye_blurry += 20
|
||||
M.drowsyness += 20
|
||||
M.AdjustDizzy(20)
|
||||
M.AdjustSlur(20)
|
||||
M.AdjustConfused(20)
|
||||
M.AdjustEyeBlurry(20)
|
||||
M.AdjustDrowsy(20)
|
||||
for(var/datum/reagent/ethanol/A in M.reagents.reagent_list)
|
||||
M.AdjustParalysis(2)
|
||||
M.dizziness += 10
|
||||
M.slurring += 10
|
||||
M.confused += 10
|
||||
M.eye_blurry += 10
|
||||
M.drowsyness += 10
|
||||
M.AdjustDizzy(10)
|
||||
M.AdjustSlur(10)
|
||||
M.AdjustConfused(10)
|
||||
M.AdjustEyeBlurry(10)
|
||||
M.AdjustDrowsy(10)
|
||||
A.volume += 5 //Because we can
|
||||
|
||||
/obj/item/projectile/bullet/weakbullet2 //detective revolver instastuns, but multiple shots are better for keeping punks down
|
||||
@@ -216,7 +216,7 @@
|
||||
..(target, blocked)
|
||||
if(iscarbon(target))
|
||||
var/mob/living/carbon/M = target
|
||||
M.silent = max(M.silent, 10)
|
||||
M.Silence(10)
|
||||
else if(istype(target, /obj/mecha/combat/honker))
|
||||
var/obj/mecha/chassis = target
|
||||
chassis.occupant_message("A mimetech anti-honk bullet has hit \the [chassis]!")
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/M = target
|
||||
M.adjustBrainLoss(20)
|
||||
M.hallucination += 20
|
||||
M.AdjustHallucinate(20)
|
||||
|
||||
/obj/item/projectile/clown
|
||||
name = "snap-pop"
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
volume = ..()
|
||||
M.apply_damage(0.4*volume, BRUTE)
|
||||
M.apply_damage(1*volume, OXY)
|
||||
M.losebreath += round(0.3*volume)
|
||||
M.AdjustLoseBreath(round(0.3*volume))
|
||||
|
||||
|
||||
/datum/reagent/blob/kinetic //does semi-random brute damage
|
||||
|
||||
@@ -131,12 +131,12 @@
|
||||
color = "#EC536D" // rgb: 236, 83, 109
|
||||
|
||||
/datum/reagent/synaphydramine/on_mob_life(mob/living/M)
|
||||
M.drowsyness = max(M.drowsyness-5, 0)
|
||||
M.AdjustDrowsy(-5)
|
||||
if(holder.has_reagent("lsd"))
|
||||
holder.remove_reagent("lsd", 5)
|
||||
if(holder.has_reagent("histamine"))
|
||||
holder.remove_reagent("histamine", 5)
|
||||
M.hallucination = max(0, M.hallucination - 10)
|
||||
M.AdjustHallucinate(-10)
|
||||
if(prob(30))
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
@@ -317,4 +317,4 @@
|
||||
if(B && B.data)
|
||||
var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
|
||||
if(D)
|
||||
D.Devolve()
|
||||
D.Devolve()
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
/datum/reagent/ginsonic/on_mob_life(mob/living/M)
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
M.AdjustDrowsy(-5)
|
||||
if(prob(25))
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] looks nervous!</span>")
|
||||
M.confused += 15
|
||||
M.AdjustConfused(15)
|
||||
M.adjustToxLoss(2)
|
||||
M.Jitter(10)
|
||||
M.emote("twitch_s")
|
||||
@@ -55,7 +55,7 @@
|
||||
M.Jitter(10)
|
||||
M.adjustToxLoss(5)
|
||||
M.Weaken(1)
|
||||
M.confused += 33
|
||||
M.AdjustConfused(33)
|
||||
else if(effect <= 7)
|
||||
M.emote("collapse")
|
||||
to_chat(M, "<span class='warning'>Your heart is pounding!</span>")
|
||||
@@ -90,7 +90,7 @@
|
||||
if(prob(4))
|
||||
to_chat(M, "<span class='notice'>You feel kinda awful!</span>")
|
||||
M.adjustToxLoss(1)
|
||||
M.jitteriness += 30
|
||||
M.AdjustJitter(30)
|
||||
M.emote(pick("groan", "moan"))
|
||||
..()
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] looks confused!</span>")
|
||||
M.confused += 20
|
||||
M.AdjustConfused(20)
|
||||
M.Jitter(20)
|
||||
M.emote("scream")
|
||||
else if(effect <= 4)
|
||||
@@ -123,7 +123,7 @@
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustBrainLoss(8)
|
||||
M.Weaken(3)
|
||||
M.confused += 25
|
||||
M.AdjustConfused(25)
|
||||
M.emote("scream")
|
||||
M.reagents.add_reagent("jagged_crystals", 5)
|
||||
else if(effect <= 7)
|
||||
@@ -160,7 +160,7 @@
|
||||
|
||||
|
||||
/datum/reagent/krokodil/on_mob_life(mob/living/M)
|
||||
M.jitteriness -= 40
|
||||
M.AdjustJitter(-40)
|
||||
if(prob(25))
|
||||
M.adjustBrainLoss(1)
|
||||
if(prob(15))
|
||||
@@ -241,8 +241,8 @@
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch_s","blink_r","shiver"))
|
||||
if(current_cycle >= 25)
|
||||
M.jitteriness += 5
|
||||
M.drowsyness = max(0, M.drowsyness-10)
|
||||
M.AdjustJitter(5)
|
||||
M.AdjustDrowsy(-10)
|
||||
M.AdjustParalysis(-2.5)
|
||||
M.AdjustStunned(-2.5)
|
||||
M.AdjustWeakened(-2.5)
|
||||
@@ -262,7 +262,7 @@
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] can't seem to control their legs!</span>")
|
||||
M.confused += 20
|
||||
M.AdjustConfused(20)
|
||||
M.Weaken(4)
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='warning'>[M]'s hands flip out and flail everywhere!</span>")
|
||||
@@ -296,7 +296,7 @@
|
||||
for(var/mob/living/carbon/C in range(T, 1))
|
||||
if(C.can_breathe_gas())
|
||||
C.emote("gasp")
|
||||
C.losebreath++
|
||||
C.AdjustLoseBreath(1)
|
||||
C.reagents.add_reagent("toxin", 10)
|
||||
C.reagents.add_reagent("neurotoxin2", 20)
|
||||
|
||||
@@ -342,15 +342,15 @@
|
||||
M.SetWeakened(0)
|
||||
if(check < 30)
|
||||
M.emote(pick("twitch", "twitch_s", "scream", "drool", "grumble", "mumble"))
|
||||
M.druggy = max(M.druggy, 15)
|
||||
M.Druggy(15)
|
||||
if(check < 20)
|
||||
M.confused += 10
|
||||
M.AdjustConfused(10)
|
||||
if(check < 8)
|
||||
M.reagents.add_reagent(pick("methamphetamine", "crank", "neurotoxin"), rand(1,5))
|
||||
M.visible_message("<span class='warning'>[M] scratches at something under their skin!</span>")
|
||||
M.adjustBruteLoss(5)
|
||||
else if(check < 16)
|
||||
M.hallucination += 30
|
||||
M.AdjustHallucinate(30)
|
||||
else if(check < 24)
|
||||
to_chat(M, "<span class='userdanger'>They're coming for you!</span>")
|
||||
else if(check < 28)
|
||||
@@ -373,7 +373,7 @@
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='danger'>[M] flails around like a lunatic!</span>")
|
||||
M.confused += 25
|
||||
M.AdjustConfused(25)
|
||||
M.Jitter(10)
|
||||
M.emote("scream")
|
||||
M.reagents.add_reagent("jagged_crystals", 5)
|
||||
@@ -383,7 +383,7 @@
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustBrainLoss(1)
|
||||
M.Stun(3)
|
||||
M.eye_blurry = max(M.eye_blurry, 7)
|
||||
M.EyeBlurry(7)
|
||||
M.reagents.add_reagent("jagged_crystals", 5)
|
||||
else if(effect <= 7)
|
||||
M.emote("faint")
|
||||
@@ -394,7 +394,7 @@
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustBrainLoss(1)
|
||||
M.Stun(3)
|
||||
M.eye_blurry = max(M.eye_blurry, 7)
|
||||
M.EyeBlurry(7)
|
||||
M.reagents.add_reagent("jagged_crystals", 5)
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='danger'>[M] convulses violently and falls to the floor!</span>")
|
||||
@@ -479,7 +479,7 @@
|
||||
to_chat(M, "<span class='danger'>You cannot breathe!</span>")
|
||||
M.adjustOxyLoss(15)
|
||||
M.Stun(1)
|
||||
M.losebreath++
|
||||
M.AdjustLoseBreath(1)
|
||||
..()
|
||||
|
||||
/datum/reagent/thc
|
||||
@@ -497,10 +497,10 @@
|
||||
if(prob(5))
|
||||
to_chat(M, "[pick("You feel hungry.","Your stomach rumbles.","You feel cold.","You feel warm.")]")
|
||||
if(prob(4))
|
||||
M.confused = max(M.confused, 10)
|
||||
M.Confused(10)
|
||||
if(volume >= 50 && prob(25))
|
||||
if(prob(10))
|
||||
M.drowsyness = max(M.drowsyness, 10)
|
||||
M.Drowsy(10)
|
||||
..()
|
||||
|
||||
/datum/reagent/fliptonium
|
||||
@@ -545,7 +545,7 @@
|
||||
if(current_cycle == 50)
|
||||
M.SpinAnimation(speed = 4, loops = -1)
|
||||
|
||||
M.drowsyness = max(0, M.drowsyness-6)
|
||||
M.AdjustDrowsy(-6)
|
||||
M.AdjustParalysis(-1.5)
|
||||
M.AdjustStunned(-1.5)
|
||||
M.AdjustWeakened(-1.5)
|
||||
@@ -561,7 +561,7 @@
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] can't seem to control their legs!</span>")
|
||||
M.confused += 33
|
||||
M.AdjustConfused(33)
|
||||
M.Weaken(2)
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='warning'>[M]'s hands flip out and flail everywhere!</span>")
|
||||
@@ -655,7 +655,7 @@
|
||||
|
||||
|
||||
/datum/reagent/surge/on_mob_life(mob/living/M)
|
||||
M.druggy = max(M.druggy, 15)
|
||||
M.Druggy(15)
|
||||
var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
|
||||
if(prob(1))
|
||||
if(prob(1))
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
M.adjustBruteLoss(-2*REM)
|
||||
M.adjustFireLoss(-2*REM)
|
||||
if(prob(50))
|
||||
M.losebreath -= 1
|
||||
M.AdjustLoseBreath(-1)
|
||||
..()
|
||||
|
||||
/datum/reagent/omnizine/overdose_process(mob/living/M, severity)
|
||||
@@ -181,7 +181,7 @@
|
||||
M.Weaken(4)
|
||||
else if(effect <= 3)
|
||||
M.visible_message("<span class='warning'>[M] completely spaces out for a moment.</span>")
|
||||
M.confused += 15
|
||||
M.AdjustConfused(15)
|
||||
else if(effect <= 5)
|
||||
M.visible_message("<span class='warning'>[M] stumbles and staggers.</span>")
|
||||
M.Dizzy(5)
|
||||
@@ -317,7 +317,7 @@
|
||||
|
||||
/datum/reagent/salbutamol/on_mob_life(mob/living/M)
|
||||
M.adjustOxyLoss(-6*REM)
|
||||
M.losebreath = max(0, M.losebreath-4)
|
||||
M.AdjustLoseBreath(-4)
|
||||
..()
|
||||
|
||||
/datum/chemical_reaction/salbutamol
|
||||
@@ -341,8 +341,8 @@
|
||||
/datum/reagent/perfluorodecalin/on_mob_life(mob/living/carbon/human/M)
|
||||
M.adjustOxyLoss(-25*REM)
|
||||
if(volume >= 4)
|
||||
M.losebreath = max(M.losebreath, 6)
|
||||
M.silent = max(M.silent, 6)
|
||||
M.LoseBreath(6)
|
||||
M.Silence(6)
|
||||
if(prob(33))
|
||||
M.adjustBruteLoss(-1*REM)
|
||||
M.adjustFireLoss(-1*REM)
|
||||
@@ -369,13 +369,12 @@
|
||||
addiction_chance = 25
|
||||
|
||||
/datum/reagent/ephedrine/on_mob_life(mob/living/M)
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
M.AdjustDrowsy(-5)
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
M.adjustStaminaLoss(-1*REM)
|
||||
if(M.losebreath > 5)
|
||||
M.losebreath = max(5, M.losebreath-1)
|
||||
M.AdjustLoseBreath(-1, bound_lower = 5)
|
||||
if(M.oxyloss > 75)
|
||||
M.adjustOxyLoss(-1)
|
||||
if(M.health < 0 || M.health > 0 && prob(33))
|
||||
@@ -422,14 +421,14 @@
|
||||
addiction_chance = 10
|
||||
|
||||
/datum/reagent/diphenhydramine/on_mob_life(mob/living/M)
|
||||
M.jitteriness = max(0, M.jitteriness-20)
|
||||
M.AdjustJitter(-20)
|
||||
M.reagents.remove_reagent("histamine",3)
|
||||
M.reagents.remove_reagent("itching_powder",3)
|
||||
if(prob(7))
|
||||
M.emote("yawn")
|
||||
if(prob(3))
|
||||
M.Stun(2)
|
||||
M.drowsyness += 1
|
||||
M.AdjustDrowsy(1)
|
||||
M.visible_message("<span class='notice'>[M] looks a bit dazed.</span>")
|
||||
..()
|
||||
|
||||
@@ -453,16 +452,16 @@
|
||||
shock_reduction = 50
|
||||
|
||||
/datum/reagent/morphine/on_mob_life(mob/living/M)
|
||||
M.jitteriness = max(0, M.jitteriness-25)
|
||||
M.AdjustJitter(-25)
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
if(prob(7))
|
||||
M.emote("yawn")
|
||||
if(16 to 35)
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
M.Drowsy(20)
|
||||
if(36 to INFINITY)
|
||||
M.Paralyse(15)
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
M.Drowsy(20)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.traumatic_shock < 100)
|
||||
@@ -476,16 +475,16 @@
|
||||
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
|
||||
if(istype(E))
|
||||
E.damage = max(E.damage-1, 0)
|
||||
M.eye_blurry = max(M.eye_blurry-1 , 0)
|
||||
M.adjustEarDamage(-1,0)
|
||||
M.AdjustEyeBlurry(-1)
|
||||
M.AdjustEarDamage(-1)
|
||||
if(prob(50))
|
||||
M.disabilities &= ~NEARSIGHTED
|
||||
M.CureNearsighted()
|
||||
if(prob(30))
|
||||
M.disabilities &= ~BLIND
|
||||
M.eye_blind = 0
|
||||
M.CureBlind()
|
||||
M.SetEyeBlind(0)
|
||||
if(M.ear_damage <= 25)
|
||||
if(prob(30))
|
||||
M.setEarDamage(-1,0)
|
||||
M.SetEarDeaf(0)
|
||||
..()
|
||||
|
||||
/datum/chemical_reaction/oculine
|
||||
@@ -515,12 +514,11 @@
|
||||
overdose_threshold = 25
|
||||
|
||||
/datum/reagent/atropine/on_mob_life(mob/living/M)
|
||||
M.dizziness += 1
|
||||
M.confused = max(M.confused, 5)
|
||||
M.AdjustDizzy(1)
|
||||
M.Confused(5)
|
||||
if(prob(4))
|
||||
M.emote("collapse")
|
||||
if(M.losebreath > 5)
|
||||
M.losebreath = max(5, M.losebreath-5)
|
||||
M.AdjustLoseBreath(-5, bound_lower = 5)
|
||||
if(M.oxyloss > 65)
|
||||
M.adjustOxyLoss(-10*REM)
|
||||
if(M.health < -25)
|
||||
@@ -550,7 +548,7 @@
|
||||
overdose_threshold = 20
|
||||
|
||||
/datum/reagent/epinephrine/on_mob_life(mob/living/M)
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
M.AdjustDrowsy(-5)
|
||||
if(prob(20))
|
||||
M.AdjustParalysis(-1)
|
||||
if(prob(20))
|
||||
@@ -562,8 +560,7 @@
|
||||
if(prob(5))
|
||||
M.adjustBrainLoss(-1)
|
||||
holder.remove_reagent("histamine", 15)
|
||||
if(M.losebreath > 3)
|
||||
M.losebreath--
|
||||
M.AdjustLoseBreath(-1, bound_lower = 3)
|
||||
if(M.oxyloss > 35)
|
||||
M.adjustOxyLoss(-10*REM)
|
||||
if(M.health < -10 && M.health > -65)
|
||||
@@ -694,7 +691,7 @@
|
||||
color = "#D1D1F1"
|
||||
|
||||
/datum/reagent/mutadone/on_mob_life(mob/living/carbon/human/M)
|
||||
M.jitteriness = 0
|
||||
M.SetJitter(0)
|
||||
var/needs_update = M.mutations.len > 0 || M.disabilities > 0
|
||||
|
||||
if(needs_update)
|
||||
@@ -733,7 +730,7 @@
|
||||
color = "#009CA8"
|
||||
|
||||
/datum/reagent/antihol/on_mob_life(mob/living/M)
|
||||
M.slurring = 0
|
||||
M.SetSlur(0)
|
||||
M.AdjustDrunk(-4)
|
||||
M.reagents.remove_all_type(/datum/reagent/ethanol, 8, 0, 1)
|
||||
if(M.toxloss <= 25)
|
||||
@@ -763,10 +760,10 @@
|
||||
M.adjustBruteLoss(-10*REM)
|
||||
M.adjustFireLoss(-10*REM)
|
||||
M.setStaminaLoss(0)
|
||||
M.slowed = 0
|
||||
M.dizziness = max(0,M.dizziness-10)
|
||||
M.drowsyness = max(0,M.drowsyness-10)
|
||||
M.confused = 0
|
||||
M.SetSlowed(0)
|
||||
M.AdjustDizzy(-10)
|
||||
M.AdjustDrowsy(-10)
|
||||
M.SetConfused(0)
|
||||
M.SetSleeping(0)
|
||||
var/status = CANSTUN | CANWEAKEN | CANPARALYSE
|
||||
M.status_flags &= ~status
|
||||
@@ -811,7 +808,7 @@
|
||||
if(prob(33))
|
||||
M.adjustStaminaLoss(2.5*REM)
|
||||
M.adjustToxLoss(1*REM)
|
||||
M.losebreath++
|
||||
M.AdjustLoseBreath(1)
|
||||
|
||||
/datum/reagent/insulin
|
||||
name = "Insulin"
|
||||
@@ -882,11 +879,11 @@
|
||||
M.reagents.remove_reagent("bath_salts", 5)
|
||||
M.reagents.remove_reagent("lsd", 5)
|
||||
M.reagents.remove_reagent("thc", 5)
|
||||
M.druggy -= 5
|
||||
M.hallucination -= 5
|
||||
M.jitteriness -= 5
|
||||
M.AdjustDruggy(-5)
|
||||
M.AdjustHallucinate(-5)
|
||||
M.AdjustJitter(-5)
|
||||
if(prob(50))
|
||||
M.drowsyness = max(M.drowsyness, 3)
|
||||
M.Drowsy(3)
|
||||
if(prob(10))
|
||||
M.emote("drool")
|
||||
if(prob(20))
|
||||
@@ -910,16 +907,16 @@
|
||||
color = "#96DEDE"
|
||||
|
||||
/datum/reagent/ether/on_mob_life(mob/living/M)
|
||||
M.jitteriness = max(M.jitteriness-25,0)
|
||||
M.AdjustJitter(-25)
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
if(prob(7))
|
||||
M.emote("yawn")
|
||||
if(16 to 35)
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
M.Drowsy(20)
|
||||
if(36 to INFINITY)
|
||||
M.Paralyse(15)
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
M.Drowsy(20)
|
||||
..()
|
||||
|
||||
/datum/chemical_reaction/ether
|
||||
@@ -960,7 +957,7 @@
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
M.confused = max(0, M.confused-5)
|
||||
M.AdjustConfused(-5)
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
if(R.id == "ultralube" || R.id == "lube")
|
||||
@@ -1037,7 +1034,7 @@
|
||||
M.Weaken(4)
|
||||
else if(effect <= 3)
|
||||
M.visible_message("<span class='warning'>[M] completely spaces out for a moment.</span>")
|
||||
M.confused += 15
|
||||
M.AdjustConfused(15)
|
||||
else if(effect <= 5)
|
||||
M.visible_message("<span class='warning'>[M] stumbles and staggers.</span>")
|
||||
M.Dizzy(5)
|
||||
|
||||
@@ -356,12 +356,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.AdjustEarDamage(rand(0, 5))
|
||||
M.EarDeaf(15)
|
||||
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>")
|
||||
@@ -384,10 +385,11 @@
|
||||
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.AdjustEarDamage(rand(0, 5))
|
||||
M.EarDeaf(15)
|
||||
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
|
||||
else
|
||||
@@ -619,4 +621,4 @@
|
||||
if(method == TOUCH)
|
||||
M.adjust_fire_stacks(volume / 5)
|
||||
return
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='notice'>Your eyes itch.</span>")
|
||||
M.emote(pick("blink", "sneeze"))
|
||||
M.eye_blurry += 3
|
||||
M.AdjustEyeBlurry(3)
|
||||
if(prob(10))
|
||||
M.visible_message("<span class='danger'>[M] scratches at an itch.</span>")
|
||||
M.adjustBruteLoss(1)
|
||||
@@ -141,7 +141,7 @@
|
||||
if(prob(4))
|
||||
M.visible_message("<span class='danger'><B>[M]</B> starts convulsing violently!</span>", "You feel as if your body is tearing itself apart!")
|
||||
M.Weaken(15)
|
||||
M.jitteriness += 1000
|
||||
M.AdjustJitter(1000)
|
||||
spawn(rand(20, 100))
|
||||
M.gib()
|
||||
|
||||
@@ -159,19 +159,19 @@
|
||||
current_cycle++
|
||||
return
|
||||
if(5 to 8)
|
||||
M.dizziness += 1
|
||||
M.confused = max(M.confused, 10)
|
||||
M.AdjustDizzy(1)
|
||||
M.Confused(10)
|
||||
if(9 to 12)
|
||||
M.drowsyness = max(M.drowsyness, 10)
|
||||
M.dizziness += 1
|
||||
M.confused = max(M.confused, 20)
|
||||
M.Drowsy(10)
|
||||
M.AdjustDizzy(1)
|
||||
M.Confused(20)
|
||||
if(13)
|
||||
M.emote("faint")
|
||||
if(14 to INFINITY)
|
||||
M.Paralyse(10)
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
M.Drowsy(20)
|
||||
|
||||
M.jitteriness = max(0, M.jitteriness-30)
|
||||
M.AdjustJitter(-30)
|
||||
if(M.getBrainLoss() <= 80)
|
||||
M.adjustBrainLoss(1)
|
||||
else
|
||||
@@ -207,7 +207,7 @@
|
||||
M.emote("drool")
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='danger'>You cannot breathe!</span>")
|
||||
M.losebreath += 1
|
||||
M.AdjustLoseBreath(1)
|
||||
M.emote("gasp")
|
||||
if(prob(8))
|
||||
to_chat(M, "<span class='danger'>You feel horrendously weak!</span>")
|
||||
@@ -261,7 +261,7 @@
|
||||
to_chat(M, "<span class='danger'>AHHHHHH!</span>")
|
||||
M.adjustBruteLoss(5)
|
||||
M.Weaken(5)
|
||||
M.jitteriness += 6
|
||||
M.AdjustJitter(6)
|
||||
M.visible_message("<span class='danger'>[M] falls to the floor, scratching themselves violently!</span>")
|
||||
M.emote("scream")
|
||||
..()
|
||||
@@ -364,11 +364,11 @@
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='danger'>You cannot breathe!</span>")
|
||||
M.adjustOxyLoss(10)
|
||||
M.losebreath++
|
||||
M.AdjustLoseBreath(1)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='danger'>Your chest is burning with pain!</span>")
|
||||
M.adjustOxyLoss(10)
|
||||
M.losebreath++
|
||||
M.AdjustLoseBreath(1)
|
||||
M.Stun(3)
|
||||
M.Weaken(2)
|
||||
if(ishuman(M))
|
||||
@@ -425,12 +425,12 @@
|
||||
M.Weaken(20)
|
||||
if(prob(10))
|
||||
M.emote(pick("drool", "tremble", "gasp"))
|
||||
M.losebreath++
|
||||
M.AdjustLoseBreath(1)
|
||||
if(prob(9))
|
||||
to_chat(M, "<span class='danger'>You can't [pick("move", "feel your legs", "feel your face", "feel anything")]!</span>")
|
||||
if(prob(7))
|
||||
to_chat(M, "<span class='danger'>You can't breathe!</span>")
|
||||
M.losebreath += 3
|
||||
M.AdjustLoseBreath(3)
|
||||
..()
|
||||
|
||||
/datum/reagent/sodium_thiopental
|
||||
@@ -445,15 +445,15 @@
|
||||
switch(current_cycle)
|
||||
if(1)
|
||||
M.emote("drool")
|
||||
M.confused = max(M.confused, 5)
|
||||
M.Confused(5)
|
||||
if(2 to 4)
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
M.Drowsy(20)
|
||||
if(5)
|
||||
M.emote("faint")
|
||||
M.Weaken(5)
|
||||
if(6 to INFINITY)
|
||||
M.Paralyse(20)
|
||||
M.jitteriness = max(0, M.jitteriness-50)
|
||||
M.AdjustJitter(-50)
|
||||
if(prob(10))
|
||||
M.emote("drool")
|
||||
M.adjustBrainLoss(1)
|
||||
@@ -474,7 +474,7 @@
|
||||
if(prob(25))
|
||||
M.emote("yawn")
|
||||
if(6 to 9)
|
||||
M.eye_blurry += 5
|
||||
M.AdjustEyeBlurry(5)
|
||||
if(prob(35))
|
||||
M.emote("yawn")
|
||||
if(10)
|
||||
@@ -502,20 +502,20 @@
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
/datum/reagent/sulfonal/on_mob_life(mob/living/M)
|
||||
M.jitteriness = max(0, M.jitteriness-30)
|
||||
M.AdjustJitter(-30)
|
||||
switch(current_cycle)
|
||||
if(1 to 10)
|
||||
if(prob(7))
|
||||
M.emote("yawn")
|
||||
if(11 to 20)
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
M.Drowsy(20)
|
||||
if(21)
|
||||
M.emote("faint")
|
||||
if(22 to INFINITY)
|
||||
if(prob(20))
|
||||
M.emote("faint")
|
||||
M.Paralyse(5)
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
M.Drowsy(20)
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
|
||||
@@ -570,7 +570,7 @@
|
||||
|
||||
/datum/reagent/coniine/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(2)
|
||||
M.losebreath += 5
|
||||
M.AdjustLoseBreath(5)
|
||||
..()
|
||||
|
||||
/datum/reagent/curare
|
||||
@@ -590,7 +590,7 @@
|
||||
if(prob(20))
|
||||
M.emote(pick("drool", "pale", "gasp"))
|
||||
if(6 to 10)
|
||||
M.eye_blurry += 5
|
||||
M.AdjustEyeBlurry(5)
|
||||
if(prob(8))
|
||||
to_chat(M, "<span class='danger'>You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")].</span>")
|
||||
M.Stun(1)
|
||||
@@ -598,12 +598,12 @@
|
||||
M.emote(pick("drool","pale", "gasp"))
|
||||
if(11 to INFINITY)
|
||||
M.Stun(30)
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
M.Drowsy(20)
|
||||
if(prob(20))
|
||||
M.emote(pick("drool", "faint", "pale", "gasp", "collapse"))
|
||||
else if(prob(8))
|
||||
to_chat(M, "<span class='danger'>You can't [pick("breathe", "move", "feel your legs", "feel your face", "feel anything")]!</span>")
|
||||
M.losebreath++
|
||||
M.AdjustLoseBreath(1)
|
||||
..()
|
||||
|
||||
/datum/reagent/sarin
|
||||
@@ -636,22 +636,22 @@
|
||||
/datum/reagent/sarin/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
M.jitteriness += 20
|
||||
M.AdjustJitter(20)
|
||||
if(prob(20))
|
||||
M.emote(pick("twitch","twitch_s","quiver"))
|
||||
if(16 to 30)
|
||||
if(prob(25))
|
||||
M.emote(pick("twitch","twitch","drool","quiver","tremble"))
|
||||
M.eye_blurry += 5
|
||||
M.stuttering = max(M.stuttering, 5)
|
||||
M.AdjustEyeBlurry(5)
|
||||
M.Stuttering(5)
|
||||
if(prob(10))
|
||||
M.confused = max(M.confused, 15)
|
||||
M.Confused(15)
|
||||
if(prob(15))
|
||||
M.Stun(1)
|
||||
M.emote("scream")
|
||||
if(30 to 60)
|
||||
M.eye_blurry += 5
|
||||
M.stuttering = max(M.stuttering, 5)
|
||||
M.AdjustEyeBlurry(5)
|
||||
M.Stuttering(5)
|
||||
if(prob(10))
|
||||
M.Stun(1)
|
||||
M.emote(pick("twitch","twitch","drool","shake","tremble"))
|
||||
@@ -660,15 +660,15 @@
|
||||
if(prob(5))
|
||||
M.Weaken(3)
|
||||
M.visible_message("<span class='warning'>[M] has a seizure!</span>")
|
||||
M.jitteriness = 1000
|
||||
M.SetJitter(1000)
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='warning'>You can't breathe!</span>")
|
||||
M.emote(pick("gasp", "choke", "cough"))
|
||||
M.losebreath++
|
||||
M.AdjustLoseBreath(1)
|
||||
if(61 to INFINITY)
|
||||
if(prob(15))
|
||||
M.emote(pick("gasp", "choke", "cough","twitch", "shake", "tremble","quiver","drool", "twitch","collapse"))
|
||||
M.losebreath = max(5, M.losebreath + 5)
|
||||
M.LoseBreath(5)
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustBrainLoss(1)
|
||||
M.Weaken(4)
|
||||
@@ -754,16 +754,16 @@
|
||||
/datum/reagent/capulettium/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
M.eye_blurry += 10
|
||||
M.AdjustEyeBlurry(10)
|
||||
if(6 to 10)
|
||||
M.drowsyness = max(M.drowsyness, 10)
|
||||
M.Drowsy(10)
|
||||
if(11)
|
||||
M.Paralyse(10)
|
||||
M.visible_message("<B>[M]</B> seizes up and falls limp, their eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary.
|
||||
if(12 to 60)
|
||||
M.Paralyse(10)
|
||||
if(61 to INFINITY)
|
||||
M.eye_blurry += 10
|
||||
M.AdjustEyeBlurry(10)
|
||||
..()
|
||||
|
||||
/datum/reagent/capulettium_plus
|
||||
@@ -783,7 +783,7 @@
|
||||
mix_message = "The solution begins to slosh about violently by itself."
|
||||
|
||||
/datum/reagent/capulettium_plus/on_mob_life(mob/living/M)
|
||||
M.silent = max(M.silent, 2)
|
||||
M.Silence(2)
|
||||
..()
|
||||
|
||||
/datum/reagent/toxic_slurry
|
||||
@@ -884,4 +884,4 @@
|
||||
var/location = get_turf(holder.my_atom)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(6, 1, location)
|
||||
s.start()
|
||||
s.start()
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/datum/reagent/ethanol/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
M.AdjustDrunk(alcohol_perc)
|
||||
M.dizziness += dizzy_adj
|
||||
M.AdjustDizzy(dizzy_adj)
|
||||
..()
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
//copy paste from LSD... shoot me
|
||||
/datum/reagent/ethanol/absinthe/on_mob_life(mob/living/M)
|
||||
M.hallucination += 5
|
||||
M.AdjustHallucinate(5)
|
||||
..()
|
||||
|
||||
/datum/reagent/ethanol/absinthe/overdose_process(mob/living/M, severity)
|
||||
@@ -97,10 +97,7 @@
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
overdose_threshold = 30
|
||||
alcohol_perc = 0.4
|
||||
|
||||
/datum/reagent/ethanol/rum/on_mob_life(mob/living/M)
|
||||
M.dizziness +=5
|
||||
..()
|
||||
dizzy_adj = 5
|
||||
|
||||
/datum/reagent/ethanol/rum/overdose_process(mob/living/M, severity)
|
||||
M.adjustToxLoss(1)
|
||||
@@ -182,7 +179,7 @@
|
||||
|
||||
/datum/reagent/ethanol/thirteenloko/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
M.drowsyness = max(0, M.drowsyness-7)
|
||||
M.AdjustDrowsy(-7)
|
||||
M.AdjustSleeping(-2)
|
||||
if(M.bodytemperature > 310)
|
||||
M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
@@ -625,7 +622,7 @@
|
||||
/datum/reagent/ethanol/neurotoxin/on_mob_life(mob/living/M)
|
||||
M.weakened = max(M.weakened, 3)
|
||||
if(current_cycle >=55)
|
||||
M.druggy = max(M.druggy, 55)
|
||||
M.Druggy(55)
|
||||
if(current_cycle >=200)
|
||||
M.adjustToxLoss(2)
|
||||
..()
|
||||
@@ -637,10 +634,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
alcohol_perc = 0.7
|
||||
|
||||
/datum/reagent/ethanol/changelingsting/on_mob_life(mob/living/M)
|
||||
M.dizziness +=5
|
||||
..()
|
||||
dizzy_adj = 5
|
||||
|
||||
/datum/reagent/ethanol/irishcarbomb
|
||||
name = "Irish Car Bomb"
|
||||
@@ -649,10 +643,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
alcohol_perc = 0.3
|
||||
|
||||
/datum/reagent/ethanol/irishcarbomb/on_mob_life(mob/living/M)
|
||||
M.dizziness +=5
|
||||
..()
|
||||
dizzy_adj = 5
|
||||
|
||||
/datum/reagent/ethanol/syndicatebomb
|
||||
name = "Syndicate Bomb"
|
||||
@@ -677,9 +668,9 @@
|
||||
nutriment_factor = 1 * FOOD_METABOLISM
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
alcohol_perc = 0.5
|
||||
dizzy_adj = 10
|
||||
|
||||
/datum/reagent/ethanol/driestmartini/on_mob_life(mob/living/M)
|
||||
M.dizziness +=10
|
||||
if(current_cycle >= 55 && current_cycle < 115)
|
||||
M.stuttering += 10
|
||||
..()
|
||||
@@ -692,8 +683,8 @@
|
||||
alcohol_perc = 0.2
|
||||
|
||||
/datum/reagent/ethanol/kahlua/on_mob_life(mob/living/M)
|
||||
M.dizziness = max(0, M.dizziness-5)
|
||||
M.drowsyness = max(0, M.drowsyness-3)
|
||||
M.AdjustDizzy(-5)
|
||||
M.AdjustDrowsy(-3)
|
||||
M.AdjustSleeping(-2)
|
||||
M.Jitter(5)
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -38,8 +38,8 @@
|
||||
color = "#973800" // rgb: 151, 56, 0
|
||||
|
||||
/datum/reagent/drink/carrotjuicde/on_mob_life(mob/living/M)
|
||||
M.eye_blurry = max(M.eye_blurry-1 , 0)
|
||||
M.eye_blind = max(M.eye_blind-1 , 0)
|
||||
M.AdjustEyeBlurry(-1)
|
||||
M.AdjustEyeBlind(-1)
|
||||
switch(current_cycle)
|
||||
if(1 to 20)
|
||||
//nothing
|
||||
@@ -282,4 +282,4 @@
|
||||
if(ishuman(M) && M.job in list("Mime"))
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
/datum/reagent/drink/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
if(adj_dizzy)
|
||||
M.dizziness = max(0, M.dizziness + adj_dizzy)
|
||||
M.AdjustDizzy(adj_dizzy)
|
||||
if(adj_drowsy)
|
||||
M.drowsyness = max(0, M.drowsyness + adj_drowsy)
|
||||
M.AdjustDrowsy(adj_drowsy)
|
||||
if(adj_sleepy)
|
||||
M.AdjustSleeping(adj_sleepy)
|
||||
if(adj_temp_hot)
|
||||
@@ -25,4 +25,4 @@
|
||||
if(adj_temp_cool)
|
||||
if(M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = max(310, M.bodytemperature - (adj_temp_cool * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -48,9 +48,9 @@
|
||||
|
||||
/datum/reagent/drink/cold/nuka_cola/on_mob_life(mob/living/M)
|
||||
M.Jitter(20)
|
||||
M.druggy = max(M.druggy, 30)
|
||||
M.dizziness +=5
|
||||
M.drowsyness = 0
|
||||
M.Druggy(30)
|
||||
M.AdjustDizzy(5)
|
||||
M.SetDrowsy(0)
|
||||
M.status_flags |= GOTTAGOFAST
|
||||
..()
|
||||
|
||||
@@ -121,4 +121,4 @@
|
||||
|
||||
/datum/reagent/drink/cold/rewriter/on_mob_life(mob/living/M)
|
||||
M.Jitter(5)
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
M.adjustBruteLoss(-5)
|
||||
M.adjustFireLoss(-5)
|
||||
M.adjustToxLoss(-5)
|
||||
M.hallucination = 0
|
||||
M.setBrainLoss(0)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -24,20 +23,28 @@
|
||||
for(var/obj/item/organ/external/E in H.organs)
|
||||
if(E.mend_fracture())
|
||||
E.perma_injury = 0
|
||||
M.disabilities = 0
|
||||
M.eye_blurry = 0
|
||||
M.eye_blind = 0
|
||||
M.SetEyeBlind(0)
|
||||
M.CureNearsighted()
|
||||
M.CureBlind()
|
||||
M.CureMute()
|
||||
M.CureDeaf()
|
||||
M.CureEpilepsy()
|
||||
M.CureTourettes()
|
||||
M.CureCoughing()
|
||||
M.CureNervous()
|
||||
M.SetEyeBlurry(0)
|
||||
M.SetWeakened(0)
|
||||
M.SetStunned(0)
|
||||
M.SetParalysis(0)
|
||||
M.silent = 0
|
||||
M.dizziness = 0
|
||||
M.drowsyness = 0
|
||||
M.stuttering = 0
|
||||
M.slurring = 0
|
||||
M.confused = 0
|
||||
M.SetSilence(0)
|
||||
M.SetHallucinate(0)
|
||||
M.SetDizzy(0)
|
||||
M.SetDrowsy(0)
|
||||
M.SetStuttering(0)
|
||||
M.SetSlur(0)
|
||||
M.SetConfused(0)
|
||||
M.SetSleeping(0)
|
||||
M.jitteriness = 0
|
||||
M.SetJitter(0)
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
if(D.severity == NONTHREAT)
|
||||
continue
|
||||
@@ -73,4 +80,4 @@
|
||||
outgoing += tocheck
|
||||
else
|
||||
outgoing += tocheck
|
||||
return outgoing
|
||||
return outgoing
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
metabolization_rate = 0.2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/hippies_delight/on_mob_life(mob/living/M)
|
||||
M.druggy = max(M.druggy, 50)
|
||||
M.Druggy(50)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
@@ -47,13 +47,13 @@
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
M.Jitter(20)
|
||||
M.Dizzy(20)
|
||||
M.druggy = max(M.druggy, 45)
|
||||
M.Druggy(45)
|
||||
if(prob(20)) M.emote(pick("twitch","giggle"))
|
||||
if(10 to INFINITY)
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
M.Jitter(40)
|
||||
M.Dizzy(40)
|
||||
M.druggy = max(M.druggy, 60)
|
||||
M.Druggy(60)
|
||||
if(prob(30)) M.emote(pick("twitch","giggle"))
|
||||
..()
|
||||
|
||||
@@ -65,8 +65,8 @@
|
||||
color = "#0000D8"
|
||||
|
||||
/datum/reagent/lsd/on_mob_life(mob/living/M)
|
||||
M.druggy = max(M.druggy, 15)
|
||||
M.hallucination += 10
|
||||
M.Druggy(15)
|
||||
M.AdjustHallucinate(10)
|
||||
..()
|
||||
|
||||
/datum/reagent/space_drugs
|
||||
@@ -80,7 +80,7 @@
|
||||
heart_rate_decrease = 1
|
||||
|
||||
/datum/reagent/space_drugs/on_mob_life(mob/living/M)
|
||||
M.druggy = max(M.druggy, 15)
|
||||
M.Druggy(15)
|
||||
if(isturf(M.loc) && !istype(M.loc, /turf/space))
|
||||
if(M.canmove && !M.restrained())
|
||||
step(M, pick(cardinal))
|
||||
@@ -94,22 +94,22 @@
|
||||
color = "#E700E7" // rgb: 231, 0, 231
|
||||
|
||||
/datum/reagent/psilocybin/on_mob_life(mob/living/M)
|
||||
M.druggy = max(M.druggy, 30)
|
||||
M.Druggy(30)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
M.Stuttering(1)
|
||||
M.Dizzy(5)
|
||||
if(prob(10)) M.emote(pick("twitch","giggle"))
|
||||
if(5 to 10)
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
M.Stuttering(1)
|
||||
M.Jitter(10)
|
||||
M.Dizzy(10)
|
||||
M.druggy = max(M.druggy, 35)
|
||||
M.Druggy(35)
|
||||
if(prob(20)) M.emote(pick("twitch","giggle"))
|
||||
if(10 to INFINITY)
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
M.Stuttering(1)
|
||||
M.Jitter(20)
|
||||
M.Dizzy(20)
|
||||
M.druggy = max(M.druggy, 40)
|
||||
M.Druggy(40)
|
||||
if(prob(30)) M.emote(pick("twitch","giggle"))
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
M.adjustBrainLoss(3)
|
||||
if(iscultist(M))
|
||||
M.status_flags |= GOTTAGOFAST
|
||||
M.drowsyness = max(M.drowsyness-5, 0)
|
||||
M.AdjustDrowsy(-5)
|
||||
M.AdjustParalysis(-2)
|
||||
M.AdjustStunned(-2)
|
||||
M.AdjustWeakened(-2)
|
||||
@@ -78,4 +78,4 @@
|
||||
id = "glycerol"
|
||||
description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity."
|
||||
reagent_state = LIQUID
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
|
||||
@@ -370,9 +370,9 @@
|
||||
overdose_threshold = 200 // Hyperglycaemic shock
|
||||
|
||||
/datum/reagent/sugar/on_mob_life(mob/living/M)
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
M.AdjustDrowsy(-5)
|
||||
if(current_cycle >= 90)
|
||||
M.jitteriness += 2
|
||||
M.AdjustJitter(2)
|
||||
if(prob(50))
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
@@ -391,4 +391,3 @@
|
||||
M.Weaken(4 * severity)
|
||||
if(prob(8))
|
||||
M.adjustToxLoss(severity)
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
overdose_threshold = 40
|
||||
|
||||
/datum/reagent/synaptizine/on_mob_life(mob/living/M)
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
M.AdjustDrowsy(-5)
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
@@ -139,4 +139,4 @@
|
||||
description = "An all-purpose antibiotic agent extracted from space fungus."
|
||||
reagent_state = LIQUID
|
||||
color = "#0AB478"
|
||||
metabolization_rate = 0.2
|
||||
metabolization_rate = 0.2
|
||||
|
||||
@@ -326,7 +326,7 @@
|
||||
/datum/reagent/spores/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
M.damageoverlaytemp = 60
|
||||
M.eye_blurry = max(M.eye_blurry, 3)
|
||||
M.EyeBlurry(3)
|
||||
..()
|
||||
|
||||
/datum/reagent/beer2 //disguised as normal beer for use by emagged brobots
|
||||
@@ -385,25 +385,25 @@
|
||||
to_chat(victim, "<span class='danger'>Your [safe_thing] protect you from most of the pepperspray!</span>")
|
||||
if(prob(5))
|
||||
victim.emote("scream")
|
||||
victim.eye_blurry = max(M.eye_blurry, 3)
|
||||
victim.eye_blind = max(M.eye_blind, 1)
|
||||
victim.confused = max(M.confused, 3)
|
||||
victim.EyeBlurry(3)
|
||||
victim.EyeBlind(1)
|
||||
victim.Confused(3)
|
||||
victim.damageoverlaytemp = 60
|
||||
victim.Weaken(3)
|
||||
victim.drop_item()
|
||||
return
|
||||
else if( eyes_covered ) // Eye cover is better than mouth cover
|
||||
to_chat(victim, "<span class='danger'>Your [safe_thing] protects your eyes from the pepperspray!</span>")
|
||||
victim.eye_blurry = max(M.eye_blurry, 3)
|
||||
victim.EyeBlurry(3)
|
||||
victim.damageoverlaytemp = 30
|
||||
return
|
||||
else // Oh dear :D
|
||||
if(prob(5))
|
||||
victim.emote("scream")
|
||||
to_chat(victim, "<span class='danger'>You're sprayed directly in the eyes with pepperspray!</span>")
|
||||
victim.eye_blurry = max(M.eye_blurry, 5)
|
||||
victim.eye_blind = max(M.eye_blind, 2)
|
||||
victim.confused = max(M.confused, 6)
|
||||
victim.EyeBlurry(5)
|
||||
victim.EyeBlind(2)
|
||||
victim.Confused(6)
|
||||
victim.damageoverlaytemp = 75
|
||||
victim.Weaken(5)
|
||||
victim.drop_item()
|
||||
@@ -411,4 +411,4 @@
|
||||
/datum/reagent/condensedcapsaicin/on_mob_life(mob/living/M)
|
||||
if(prob(5))
|
||||
M.visible_message("<span class='warning'>[M] [pick("dry heaves!","coughs!","splutters!")]</span>")
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -264,27 +264,27 @@
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/holywater/on_mob_life(mob/living/M)
|
||||
M.jitteriness = max(M.jitteriness-5,0)
|
||||
M.AdjustJitter(-5)
|
||||
if(current_cycle >= 30) // 12 units, 60 seconds @ metabolism 0.4 units & tick rate 2.0 sec
|
||||
M.stuttering = min(M.stuttering+4, 20)
|
||||
M.AdjustStuttering(4, bound_lower = 0, bound_upper = 20)
|
||||
M.Dizzy(5)
|
||||
if(iscultist(M) && prob(5))
|
||||
M.say(pick("Av'te Nar'sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","Egkau'haom'nai en Chaous","Ho Diak'nos tou Ap'iron","R'ge Na'sie","Diabo us Vo'iscum","Si gn'um Co'nu"))
|
||||
if(current_cycle >= 75 && prob(33)) // 30 units, 150 seconds
|
||||
M.confused += 3
|
||||
M.AdjustConfused(3)
|
||||
if(isvampirethrall(M))
|
||||
ticker.mode.remove_vampire_mind(M.mind)
|
||||
holder.remove_reagent(id, volume)
|
||||
M.jitteriness = 0
|
||||
M.stuttering = 0
|
||||
M.confused = 0
|
||||
M.SetJitter(0)
|
||||
M.SetStuttering(0)
|
||||
M.SetConfused(0)
|
||||
return
|
||||
if(iscultist(M))
|
||||
ticker.mode.remove_cultist(M.mind)
|
||||
holder.remove_reagent(id, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better??
|
||||
M.jitteriness = 0
|
||||
M.stuttering = 0
|
||||
M.confused = 0
|
||||
M.SetJitter(0)
|
||||
M.SetStuttering(0)
|
||||
M.SetConfused(0)
|
||||
return
|
||||
if(ishuman(M) && M.mind && M.mind.vampire && !M.mind.vampire.get_ability(/datum/vampire_passive/full) && prob(80))
|
||||
switch(current_cycle)
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
to_chat(H, "<font color='red'>[pick(messages)]</font>")
|
||||
|
||||
if(prob(50))
|
||||
H.dizziness += rand(3,5)
|
||||
H.AdjustDizzy(rand(3,5))
|
||||
|
||||
/datum/artifact_effect/badfeeling/DoEffectAura()
|
||||
if(holder)
|
||||
@@ -50,7 +50,7 @@
|
||||
to_chat(H, "<font color='red' size='[num2text(rand(1,5))]'><b>[pick(drastic_messages)]</b></font>")
|
||||
|
||||
if(prob(10))
|
||||
H.dizziness += rand(3,5)
|
||||
H.AdjustDizzy(rand(3,5))
|
||||
return 1
|
||||
|
||||
/datum/artifact_effect/badfeeling/DoEffectPulse()
|
||||
@@ -64,7 +64,7 @@
|
||||
to_chat(H, "<font color='red'>[pick(messages)]</font>")
|
||||
|
||||
if(prob(50))
|
||||
H.dizziness += rand(3,5)
|
||||
H.AdjustDizzy(rand(3,5))
|
||||
else if(prob(25))
|
||||
H.dizziness += rand(5,15)
|
||||
H.AdjustDizzy(rand(5,15))
|
||||
return 1
|
||||
|
||||
+4
-4
@@ -35,7 +35,7 @@
|
||||
to_chat(H, "<font color='blue'>[pick(messages)]</font>")
|
||||
|
||||
if(prob(50))
|
||||
H.dizziness += rand(3,5)
|
||||
H.AdjustDizzy(rand(3,5))
|
||||
|
||||
/datum/artifact_effect/goodfeeling/DoEffectAura()
|
||||
if(holder)
|
||||
@@ -48,7 +48,7 @@
|
||||
to_chat(H, "<font color='blue' size='[num2text(rand(1,5))]'><b>[pick(drastic_messages)]</b></font>")
|
||||
|
||||
if(prob(5))
|
||||
H.dizziness += rand(3,5)
|
||||
H.AdjustDizzy(rand(3,5))
|
||||
return 1
|
||||
|
||||
/datum/artifact_effect/goodfeeling/DoEffectPulse()
|
||||
@@ -62,7 +62,7 @@
|
||||
to_chat(H, "<font color='blue'>[pick(messages)]</font>")
|
||||
|
||||
if(prob(50))
|
||||
H.dizziness += rand(3,5)
|
||||
H.AdjustDizzy(rand(3,5))
|
||||
else if(prob(25))
|
||||
H.dizziness += rand(5,15)
|
||||
H.AdjustDizzy(rand(5,15))
|
||||
return 1
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
if(ishuman(toucher) && prob(weakness * 100))
|
||||
var/mob/living/carbon/human/H = toucher
|
||||
to_chat(H, pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired."))
|
||||
H.drowsyness = min(H.drowsyness + rand(5,25) * weakness, 50 * weakness)
|
||||
H.eye_blurry = min(H.eye_blurry + rand(1,3) * weakness, 50 * weakness)
|
||||
H.AdjustDrowsy(rand(5,25) * weakness, bound_lower = 0, bound_upper = 50 * weakness)
|
||||
H.AdjustEyeBlurry(rand(1,3) * weakness, bound_lower = 0, bound_upper = 50 * weakness)
|
||||
return 1
|
||||
else if(isrobot(toucher))
|
||||
to_chat(toucher, "\red SYSTEM ALERT: CPU cycles slowing down.")
|
||||
@@ -28,8 +28,8 @@
|
||||
if(prob(weakness * 100))
|
||||
if(prob(10))
|
||||
to_chat(H, pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired."))
|
||||
H.drowsyness = min(H.drowsyness + 1 * weakness, 25 * weakness)
|
||||
H.eye_blurry = min(H.eye_blurry + 1 * weakness, 25 * weakness)
|
||||
H.AdjustDrowsy(1 * weakness, bound_lower = 0, bound_upper = 25 * weakness)
|
||||
H.AdjustEyeBlurry(1 * weakness, bound_lower = 0, bound_upper = 25 * weakness)
|
||||
for(var/mob/living/silicon/robot/R in range(src.effectrange,holder))
|
||||
to_chat(R, "\red SYSTEM ALERT: CPU cycles slowing down.")
|
||||
return 1
|
||||
@@ -41,8 +41,8 @@
|
||||
var/weakness = GetAnomalySusceptibility(H)
|
||||
if(prob(weakness * 100))
|
||||
to_chat(H, pick("\blue You feel like taking a nap.","\blue You feel a yawn coming on.","\blue You feel a little tired."))
|
||||
H.drowsyness = min(H.drowsyness + rand(5,15) * weakness, 50 * weakness)
|
||||
H.eye_blurry = min(H.eye_blurry + rand(5,15) * weakness, 50 * weakness)
|
||||
H.AdjustDrowsy(rand(5,15) * weakness, bound_lower = 0, bound_upper = 50 * weakness)
|
||||
H.AdjustEyeBlurry(rand(5,15) * weakness, bound_lower = 0, bound_upper = 50 * weakness)
|
||||
for(var/mob/living/silicon/robot/R in range(src.effectrange,holder))
|
||||
to_chat(R, "\red SYSTEM ALERT: CPU cycles slowing down.")
|
||||
return 1
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
'sound/hallucinations/turn_around1.ogg',\
|
||||
'sound/hallucinations/turn_around2.ogg',\
|
||||
), 50, 1, -3)
|
||||
M.sleeping = max(M.sleeping,rand(5,10))
|
||||
M.Sleeping(rand(5,10))
|
||||
src.loc = null
|
||||
else
|
||||
processing_objects.Remove(src)
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
user.visible_message("<span class='warning'> [user]'s hand slips, slicing [target]'s throat wth \the [tool]!</span>" , \
|
||||
"<span class='warning'> Your hand slips, slicing [target]'s throat wth \the [tool]!</span>" )
|
||||
affected.createwound(CUT, 60)
|
||||
target.losebreath += 4
|
||||
target.AdjustLoseBreath(4)
|
||||
|
||||
return 0
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
/datum/surgery_step/face/mend_vocal/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool,datum/surgery/surgery)
|
||||
user.visible_message("<span class='warning'> [user]'s hand slips, clamping [target]'s trachea shut for a moment with \the [tool]!</span>", \
|
||||
"<span class='warning'> Your hand slips, clamping [user]'s trachea shut for a moment with \the [tool]!</span>")
|
||||
target.losebreath += 4
|
||||
target.AdjustLoseBreath(4)
|
||||
return 0
|
||||
|
||||
/datum/surgery_step/face/fix_face
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
else
|
||||
adjustOxyLoss(round((BLOOD_VOLUME_NORMAL - blood_volume) * 0.02, 1))
|
||||
if(prob(5))
|
||||
eye_blurry = max(eye_blurry, 6)
|
||||
EyeBlurry(6)
|
||||
var/word = pick("dizzy","woozy","faint")
|
||||
to_chat(src, "<span class='warning'>You feel very [word].</span>")
|
||||
if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
|
||||
|
||||
@@ -307,7 +307,7 @@
|
||||
owner.drip(10)
|
||||
if(prob(4))
|
||||
spawn owner.custom_emote(1, "gasps for air!")
|
||||
owner.losebreath += 5
|
||||
owner.AdjustLoseBreath(5)
|
||||
|
||||
/obj/item/organ/internal/kidneys
|
||||
name = "kidneys"
|
||||
@@ -357,10 +357,10 @@
|
||||
/obj/item/organ/internal/eyes/surgeryize()
|
||||
if(!owner)
|
||||
return
|
||||
owner.disabilities &= ~NEARSIGHTED
|
||||
owner.disabilities &= ~BLIND
|
||||
owner.eye_blurry = 0
|
||||
owner.eye_blind = 0
|
||||
owner.CureNearsighted()
|
||||
owner.CureBlind()
|
||||
owner.SetEyeBlurry(0)
|
||||
owner.SetEyeBlind(0)
|
||||
|
||||
|
||||
/obj/item/organ/internal/liver
|
||||
@@ -493,6 +493,7 @@
|
||||
slot = "brain_tumor"
|
||||
health = 3
|
||||
var/organhonked = 0
|
||||
var/suffering_delay = 900
|
||||
|
||||
/obj/item/organ/internal/honktumor/New()
|
||||
..()
|
||||
@@ -535,11 +536,11 @@
|
||||
return
|
||||
|
||||
if(organhonked < world.time)
|
||||
organhonked = world.time+900
|
||||
organhonked = world.time + suffering_delay
|
||||
to_chat(owner, "<font color='red' size='7'>HONK</font>")
|
||||
owner.sleeping = 0
|
||||
owner.stuttering = 20
|
||||
owner.adjustEarDamage(0, 30)
|
||||
owner.SetSleeping(0)
|
||||
owner.Stuttering(20)
|
||||
owner.AdjustEarDeaf(30)
|
||||
owner.Weaken(3)
|
||||
owner << 'sound/items/AirHorn.ogg'
|
||||
if(prob(30))
|
||||
|
||||
@@ -15,8 +15,8 @@ mob/living/carbon/proc/pain(var/partname, var/amount, var/force, var/burning = 0
|
||||
if(world.time < next_pain_time && !force)
|
||||
return
|
||||
if(amount > 10 && istype(src,/mob/living/carbon/human))
|
||||
if(src:paralysis)
|
||||
src:paralysis = max(0, src:paralysis-round(amount/10))
|
||||
if(paralysis)
|
||||
AdjustParalysis(-round(amount/10))
|
||||
if(amount > 50 && prob(amount / 5))
|
||||
src:drop_item()
|
||||
var/msg
|
||||
@@ -132,4 +132,4 @@ mob/living/carbon/human/proc/handle_pain()
|
||||
toxDamageMessage = "Your body aches all over, it's driving you mad."
|
||||
|
||||
if(toxDamageMessage && prob(toxMessageProb))
|
||||
src.custom_pain(toxDamageMessage, getToxLoss() >= 15)
|
||||
src.custom_pain(toxDamageMessage, getToxLoss() >= 15)
|
||||
|
||||
@@ -169,10 +169,10 @@
|
||||
/obj/item/organ/internal/diona_receptor/surgeryize()
|
||||
if(!owner)
|
||||
return
|
||||
owner.disabilities &= ~NEARSIGHTED
|
||||
owner.disabilities &= ~BLIND
|
||||
owner.eye_blurry = 0
|
||||
owner.eye_blind = 0
|
||||
owner.CureNearsighted()
|
||||
owner.CureBlind()
|
||||
owner.SetEyeBlurry(0)
|
||||
owner.SetEyeBlind(0)
|
||||
|
||||
|
||||
//TODO:Make absorb rads on insert
|
||||
|
||||
@@ -142,10 +142,10 @@
|
||||
/obj/item/organ/internal/optical_sensor/surgeryize()
|
||||
if(!owner)
|
||||
return
|
||||
owner.disabilities &= ~NEARSIGHTED
|
||||
owner.disabilities &= ~BLIND
|
||||
owner.eye_blurry = 0
|
||||
owner.eye_blind = 0
|
||||
owner.CureNearsighted()
|
||||
owner.CureBlind()
|
||||
owner.SetEyeBlurry(0)
|
||||
owner.SetEyeBlind(0)
|
||||
|
||||
|
||||
// Used for an MMI or posibrain being installed into a human.
|
||||
|
||||
Reference in New Issue
Block a user