mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 05:00:55 +01:00
Converts jittering to status effect, striking yet another mob level status value (#66852)
Converts jittering to status effect, striking yet another mob level status value
This commit is contained in:
@@ -56,7 +56,6 @@
|
||||
#define EFFECT_IMMOBILIZE "immobilize"
|
||||
#define EFFECT_EYE_BLUR "eye_blur"
|
||||
#define EFFECT_DROWSY "drowsy"
|
||||
#define EFFECT_JITTER "jitter"
|
||||
|
||||
//Bitflags defining which status effects could be or are inflicted on a mob
|
||||
#define CANSTUN (1<<0)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
victim.Unconscious(40)
|
||||
victim.Stun(100)
|
||||
victim.adjust_timed_status_effect(30 SECONDS, /datum/status_effect/speech/stutter)
|
||||
victim.Jitter(500)
|
||||
victim.set_timed_status_effect(1000 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
var/obj/item/organ/ears/ears = victim.getorganslot(ORGAN_SLOT_EARS)
|
||||
ears?.adjustEarDamage(10, 15)
|
||||
to_chat(victim, "<font color='red' size='8'>HONK</font>")
|
||||
@@ -34,14 +34,14 @@
|
||||
for(var/mob/living/carbon/victim in properly_honked)
|
||||
victim.Paralyze(20)
|
||||
victim.Stun(50)
|
||||
victim.Jitter(250)
|
||||
victim.set_timed_status_effect(500 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
var/obj/item/organ/ears/ears = victim.getorganslot(ORGAN_SLOT_EARS)
|
||||
ears?.adjustEarDamage(7, 10)
|
||||
to_chat(victim, "<font color='red' size='5'>HONK</font>")
|
||||
|
||||
for(var/mob/living/carbon/victim in lightly_honked)
|
||||
victim.Knockdown(20)
|
||||
victim.Jitter(100)
|
||||
victim.set_timed_status_effect(200 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
var/obj/item/organ/ears/ears = victim.getorganslot(ORGAN_SLOT_EARS)
|
||||
ears?.adjustEarDamage(4, 5)
|
||||
to_chat(victim, "<font color='red' size='2'>HONK</font>")
|
||||
|
||||
@@ -111,21 +111,21 @@
|
||||
if(1)
|
||||
to_chat(owner, span_warning("You are paralyzed with fear!"))
|
||||
owner.Stun(70)
|
||||
owner.Jitter(8)
|
||||
owner.set_timed_status_effect(16 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
if(2)
|
||||
owner.emote("scream")
|
||||
owner.Jitter(5)
|
||||
owner.set_timed_status_effect(10 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
owner.say("AAAAH!!", forced = "phobia")
|
||||
if(reason)
|
||||
owner.pointed(reason)
|
||||
if(3)
|
||||
to_chat(owner, span_warning("You shut your eyes in terror!"))
|
||||
owner.Jitter(5)
|
||||
owner.set_timed_status_effect(10 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
owner.blind_eyes(10)
|
||||
if(4)
|
||||
owner.adjust_timed_status_effect(20 SECONDS, /datum/status_effect/dizziness)
|
||||
owner.adjust_timed_status_effect(10 SECONDS, /datum/status_effect/confusion)
|
||||
owner.Jitter(10)
|
||||
owner.set_timed_status_effect(20 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
owner.adjust_timed_status_effect(20 SECONDS, /datum/status_effect/speech/stutter)
|
||||
|
||||
// Defined phobia types for badminry, not included in the RNG trauma pool to avoid diluting.
|
||||
|
||||
@@ -179,36 +179,33 @@
|
||||
return
|
||||
|
||||
var/high_stress = (stress > 60) //things get psychosomatic from here on
|
||||
switch(rand(1,6))
|
||||
switch(rand(1, 6))
|
||||
if(1)
|
||||
if(!high_stress)
|
||||
to_chat(owner, span_warning("You feel sick..."))
|
||||
else
|
||||
if(high_stress)
|
||||
to_chat(owner, span_warning("You feel really sick at the thought of being alone!"))
|
||||
else
|
||||
to_chat(owner, span_warning("You feel sick..."))
|
||||
addtimer(CALLBACK(owner, /mob/living/carbon.proc/vomit, high_stress), 50) //blood vomit if high stress
|
||||
if(2)
|
||||
if(!high_stress)
|
||||
to_chat(owner, span_warning("You can't stop shaking..."))
|
||||
else
|
||||
if(high_stress)
|
||||
to_chat(owner, span_warning("You feel weak and scared! If only you weren't alone..."))
|
||||
owner.adjustStaminaLoss(50)
|
||||
else
|
||||
to_chat(owner, span_warning("You can't stop shaking..."))
|
||||
|
||||
owner.adjust_timed_status_effect(40 SECONDS, /datum/status_effect/dizziness)
|
||||
owner.adjust_timed_status_effect(20 SECONDS, /datum/status_effect/confusion)
|
||||
owner.Jitter(20)
|
||||
owner.set_timed_status_effect(40 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
|
||||
if(3, 4)
|
||||
if(!high_stress)
|
||||
to_chat(owner, span_warning("You feel really lonely..."))
|
||||
else
|
||||
if(high_stress)
|
||||
to_chat(owner, span_warning("You're going mad with loneliness!"))
|
||||
owner.hallucination += 30
|
||||
else
|
||||
to_chat(owner, span_warning("You feel really lonely..."))
|
||||
|
||||
if(5)
|
||||
if(!high_stress)
|
||||
to_chat(owner, span_warning("Your heart skips a beat."))
|
||||
owner.adjustOxyLoss(8)
|
||||
else
|
||||
if(high_stress)
|
||||
if(prob(15) && ishuman(owner))
|
||||
var/mob/living/carbon/human/H = owner
|
||||
H.set_heartattack(TRUE)
|
||||
@@ -216,6 +213,10 @@
|
||||
else
|
||||
to_chat(owner, span_userdanger("You feel your heart lurching in your chest..."))
|
||||
owner.adjustOxyLoss(8)
|
||||
else
|
||||
to_chat(owner, span_warning("Your heart skips a beat."))
|
||||
owner.adjustOxyLoss(8)
|
||||
|
||||
else
|
||||
//No effect
|
||||
return
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
affected_mob.visible_message(span_danger("[affected_mob] stumbles around in a panic."), \
|
||||
span_userdanger("You have a panic attack!"))
|
||||
affected_mob.adjust_timed_status_effect(rand(6 SECONDS, 8 SECONDS), /datum/status_effect/confusion)
|
||||
affected_mob.jitteriness += (rand(6,8))
|
||||
affected_mob.adjust_timed_status_effect(rand(12 SECONDS, 16 SECONDS), /datum/status_effect/jitter)
|
||||
if(DT_PROB(1, delta_time))
|
||||
affected_mob.visible_message(span_danger("[affected_mob] coughs up butterflies!"), \
|
||||
span_userdanger("You cough up butterflies!"))
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
var/mob/living/carbon/human/U = user
|
||||
if(!istype(U.dna.species, /datum/species/skeleton))
|
||||
U.adjustStaminaLoss(35) //Extra Damage
|
||||
U.Jitter(35)
|
||||
U.set_timed_status_effect(70 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
U.set_timed_status_effect(40 SECONDS, /datum/status_effect/speech/stutter)
|
||||
if(U.getStaminaLoss() > 95)
|
||||
to_chat(U, "<font color ='red', size ='4'><B>Your ears weren't meant for this spectral sound.</B></font>")
|
||||
@@ -35,7 +35,7 @@
|
||||
if(istype(H.dna.species, /datum/species/zombie))
|
||||
H.adjustStaminaLoss(25)
|
||||
H.Paralyze(15) //zombies can't resist the doot
|
||||
C.Jitter(35)
|
||||
C.set_timed_status_effect(70 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
C.set_timed_status_effect(40 SECONDS, /datum/status_effect/speech/stutter)
|
||||
if((!istype(H.dna.species, /datum/species/skeleton)) && (!istype(H.dna.species, /datum/species/golem)) && (!istype(H.dna.species, /datum/species/android)) && (!istype(H.dna.species, /datum/species/jelly)))
|
||||
C.adjustStaminaLoss(25) //boneless humanoids don't lose the will to live
|
||||
@@ -43,7 +43,7 @@
|
||||
INVOKE_ASYNC(src, .proc/spectral_change, H)
|
||||
|
||||
else //the sound will spook monkeys.
|
||||
C.Jitter(15)
|
||||
C.set_timed_status_effect(30 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
C.set_timed_status_effect(40 SECONDS, /datum/status_effect/speech/stutter)
|
||||
|
||||
/datum/element/spooky/proc/spectral_change(mob/living/carbon/human/H, mob/user)
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
playsound(get_turf(D), 'sound/weapons/cqchit1.ogg', 50, TRUE, -1)
|
||||
if(I && D.temporarilyRemoveItemFromInventory(I))
|
||||
A.put_in_hands(I)
|
||||
D.Jitter(2)
|
||||
D.set_timed_status_effect(4 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
D.apply_damage(5, A.get_attack_type())
|
||||
else
|
||||
D.visible_message(span_danger("[A] fails to disarm [D]!"), \
|
||||
|
||||
@@ -13,14 +13,15 @@
|
||||
if(DT_PROB(0.5 * GET_MUTATION_SYNCHRONIZER(src), delta_time) && owner.stat == CONSCIOUS)
|
||||
owner.visible_message(span_danger("[owner] starts having a seizure!"), span_userdanger("You have a seizure!"))
|
||||
owner.Unconscious(200 * GET_MUTATION_POWER(src))
|
||||
owner.Jitter(1000 * GET_MUTATION_POWER(src))
|
||||
owner.set_timed_status_effect(2000 SECONDS * GET_MUTATION_POWER(src), /datum/status_effect/jitter)
|
||||
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "epilepsy", /datum/mood_event/epilepsy)
|
||||
addtimer(CALLBACK(src, .proc/jitter_less), 90)
|
||||
|
||||
/datum/mutation/human/epilepsy/proc/jitter_less()
|
||||
if(owner)
|
||||
owner.jitteriness = 10
|
||||
if(QDELETED(owner))
|
||||
return
|
||||
|
||||
owner.set_timed_status_effect(20 SECONDS, /datum/status_effect/jitter)
|
||||
|
||||
//Unstable DNA induces random mutations!
|
||||
/datum/mutation/human/bad_dna
|
||||
|
||||
@@ -589,7 +589,7 @@
|
||||
|
||||
switch(rand(1,3))
|
||||
if(1)
|
||||
quirk_holder.Jitter(10)
|
||||
quirk_holder.set_timed_status_effect(20 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
msg += "causing you to start fidgeting!"
|
||||
if(2)
|
||||
quirk_holder.set_timed_status_effect(6 SECONDS, /datum/status_effect/speech/stutter, only_if_higher = TRUE)
|
||||
|
||||
@@ -319,7 +319,7 @@
|
||||
/datum/status_effect/good_music/tick()
|
||||
if(owner.can_hear())
|
||||
owner.adjust_timed_status_effect(-4 SECONDS, /datum/status_effect/dizziness)
|
||||
owner.jitteriness = max(0, owner.jitteriness - 2)
|
||||
owner.adjust_timed_status_effect(-4 SECONDS, /datum/status_effect/jitter)
|
||||
owner.adjust_timed_status_effect(-1 SECONDS, /datum/status_effect/confusion)
|
||||
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "goodmusic", /datum/mood_event/goodmusic)
|
||||
|
||||
|
||||
@@ -848,8 +848,11 @@
|
||||
if(prob(40))
|
||||
var/obj/item/I = H.get_active_held_item()
|
||||
if(I && H.dropItemToGround(I))
|
||||
H.visible_message(span_notice("[H]'s hand convulses, and they drop their [I.name]!"),span_userdanger("Your hand convulses violently, and you drop what you were holding!"))
|
||||
H.jitteriness += 5
|
||||
H.visible_message(
|
||||
span_notice("[H]'s hand convulses, and they drop their [I.name]!"),
|
||||
span_userdanger("Your hand convulses violently, and you drop what you were holding!"),
|
||||
)
|
||||
H.adjust_timed_status_effect(10 SECONDS, /datum/status_effect/jitter)
|
||||
|
||||
/atom/movable/screen/alert/status_effect/convulsing
|
||||
name = "Shaky Hands"
|
||||
@@ -969,7 +972,7 @@
|
||||
human_owner.vomit()
|
||||
if(20 to 30)
|
||||
human_owner.set_timed_status_effect(100 SECONDS, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
human_owner.Jitter(50)
|
||||
human_owner.set_timed_status_effect(100 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
if(30 to 40)
|
||||
human_owner.adjustOrganLoss(ORGAN_SLOT_LIVER, 5)
|
||||
if(40 to 50)
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
owner.adjust_timed_status_effect(4 SECONDS, /datum/status_effect/speech/slurring/drunk)
|
||||
|
||||
// And drunk people will always lose jitteriness
|
||||
owner.jitteriness = max(owner.jitteriness - 3, 0)
|
||||
owner.adjust_timed_status_effect(-6 SECONDS, /datum/status_effect/jitter)
|
||||
|
||||
// Over 11, we will constantly gain slurring up to 10 seconds of slurring.
|
||||
if(drunk_value >= 11)
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/datum/status_effect/jitter
|
||||
id = "jitter"
|
||||
tick_interval = 2 SECONDS
|
||||
alert_type = null
|
||||
|
||||
/datum/status_effect/jitter/on_creation(mob/living/new_owner, duration = 10 SECONDS)
|
||||
src.duration = duration
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/jitter/on_apply()
|
||||
RegisterSignal(owner, list(COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_LIVING_DEATH), .proc/remove_jitter)
|
||||
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, id, /datum/mood_event/jittery)
|
||||
return TRUE
|
||||
|
||||
/datum/status_effect/jitter/on_remove()
|
||||
UnregisterSignal(owner, list(COMSIG_LIVING_POST_FULLY_HEAL, COMSIG_LIVING_DEATH))
|
||||
SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, id)
|
||||
// juuust in case, reset our x and y's from our jittering
|
||||
owner.pixel_x = 0
|
||||
owner.pixel_y = 0
|
||||
|
||||
/datum/status_effect/jitter/get_examine_text()
|
||||
switch(duration - world.time)
|
||||
if(5 MINUTES to INFINITY)
|
||||
return span_boldwarning("[owner.p_they(TRUE)] [owner.p_are()] convulsing violently!")
|
||||
if(3 MINUTES to 5 MINUTES)
|
||||
return span_warning("[owner.p_they(TRUE)] [owner.p_are()] extremely jittery.")
|
||||
if(1 MINUTES to 3 MINUTES)
|
||||
return span_warning("[owner.p_they(TRUE)] [owner.p_are()] twitching ever so slightly.")
|
||||
|
||||
return null
|
||||
|
||||
/// Removes all of our jitteriness on a signal
|
||||
/datum/status_effect/jitter/proc/remove_jitter(datum/source)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
qdel(src)
|
||||
|
||||
/datum/status_effect/jitter/tick()
|
||||
|
||||
var/time_left_in_seconds = (duration - world.time) / 10
|
||||
owner.do_jitter_animation(time_left_in_seconds)
|
||||
|
||||
// Decrease the duration by our resting_modifier, effectively skipping resting_modifier ticks per tick
|
||||
var/resting_modifier = owner.resting ? 5 : 1
|
||||
duration -= ((resting_modifier - 1) * initial(tick_interval))
|
||||
|
||||
/// Helper proc that causes the mob to do a jittering animation by jitter_amount.
|
||||
/// jitter_amount will only apply up to 300 (maximum jitter effect).
|
||||
/mob/living/proc/do_jitter_animation(jitter_amount = 100)
|
||||
var/amplitude = min(4, (jitter_amount / 100) + 1)
|
||||
var/pixel_x_diff = rand(-amplitude, amplitude)
|
||||
var/pixel_y_diff = rand(-amplitude / 3, amplitude / 3)
|
||||
animate(src, pixel_x = pixel_x_diff, pixel_y = pixel_y_diff , time = 0.2 SECONDS, loop = 6, flags = ANIMATION_RELATIVE|ANIMATION_PARALLEL)
|
||||
animate(pixel_x = -pixel_x_diff , pixel_y = -pixel_y_diff , time = 0.2 SECONDS, flags = ANIMATION_RELATIVE)
|
||||
@@ -48,7 +48,7 @@
|
||||
return FALSE
|
||||
var/amplitude = rand(1 SECONDS, 3 SECONDS)
|
||||
duration = amplitude
|
||||
owner.Jitter(50)
|
||||
owner.set_timed_status_effect(100 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
owner.Paralyze(duration)
|
||||
owner.visible_message(span_warning("[owner] drops to the ground as [owner.p_they()] start seizing up."), \
|
||||
span_warning("[pick("You can't collect your thoughts...", "You suddenly feel extremely dizzy...", "You cant think straight...","You can't move your face properly anymore...")]"))
|
||||
|
||||
@@ -343,14 +343,14 @@
|
||||
|
||||
//phase 1
|
||||
if(1 to EIGENSTASIUM_PHASE_1_END)
|
||||
owner.Jitter(2)
|
||||
owner.set_timed_status_effect(4 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
owner.adjust_nutrition(-4)
|
||||
|
||||
//phase 2
|
||||
if(EIGENSTASIUM_PHASE_1_END to EIGENSTASIUM_PHASE_2_END)
|
||||
if(current_cycle == 51)
|
||||
to_chat(owner, span_userdanger("You start to convlse violently as you feel your consciousness merges across realities, your possessions flying wildy off your body!"))
|
||||
owner.Jitter(200)
|
||||
owner.set_timed_status_effect(400 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
owner.Knockdown(10)
|
||||
|
||||
var/list/items = list()
|
||||
@@ -378,7 +378,7 @@
|
||||
//Clone function - spawns a clone then deletes it - simulates multiple copies of the player teleporting in
|
||||
switch(phase_3_cycle) //Loops 0 -> 1 -> 2 -> 1 -> 2 -> 1 ...ect.
|
||||
if(0)
|
||||
owner.Jitter(100)
|
||||
owner.set_timed_status_effect(200 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
to_chat(owner, span_userdanger("Your eigenstate starts to rip apart, drawing in alternative reality versions of yourself!"))
|
||||
if(1)
|
||||
var/typepath = owner.type
|
||||
@@ -407,7 +407,7 @@
|
||||
do_teleport(owner, get_turf(owner), 2, no_effects=TRUE) //teleports clone so it's hard to find the real one!
|
||||
do_sparks(5, FALSE, owner)
|
||||
owner.Sleeping(100)
|
||||
owner.Jitter(50)
|
||||
owner.set_timed_status_effect(100 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
to_chat(owner, span_userdanger("You feel your eigenstate settle, as \"you\" become an alternative version of yourself!"))
|
||||
owner.emote("me",1,"flashes into reality suddenly, gasping as they gaze around in a bewildered and highly confused fashion!",TRUE)
|
||||
log_game("FERMICHEM: [owner] ckey: [owner.key] has become an alternative universe version of themselves.")
|
||||
|
||||
@@ -513,7 +513,7 @@
|
||||
span_userdanger("[user] touches [M] with [src]!"))
|
||||
M.adjustStaminaLoss(60)
|
||||
M.Knockdown(75)
|
||||
M.Jitter(50)
|
||||
M.set_timed_status_effect(100 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
M.apply_status_effect(/datum/status_effect/convulsing)
|
||||
playsound(src, 'sound/machines/defib_zap.ogg', 50, TRUE, -1)
|
||||
if(HAS_TRAIT(M,MOB_ORGANIC))
|
||||
@@ -559,7 +559,7 @@
|
||||
H.apply_damage(50, BURN, BODY_ZONE_CHEST)
|
||||
log_combat(user, H, "overloaded the heart of", defib)
|
||||
H.Paralyze(100)
|
||||
H.Jitter(100)
|
||||
H.set_timed_status_effect(200 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
do_success()
|
||||
return
|
||||
do_cancel()
|
||||
@@ -634,7 +634,7 @@
|
||||
H.grab_ghost()
|
||||
H.revive(full_heal = FALSE, admin_revive = FALSE)
|
||||
H.emote("gasp")
|
||||
H.Jitter(100)
|
||||
H.set_timed_status_effect(200 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
SEND_SIGNAL(H, COMSIG_LIVING_MINOR_SHOCK)
|
||||
SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "saved_life", /datum/mood_event/saved_life)
|
||||
log_combat(user, H, "revived", defib)
|
||||
|
||||
@@ -370,7 +370,7 @@
|
||||
return span_danger("The baton is still charging!")
|
||||
|
||||
/obj/item/melee/baton/telescopic/contractor_baton/additional_effects_non_cyborg(mob/living/target, mob/living/user)
|
||||
target.Jitter(20)
|
||||
target.set_timed_status_effect(40 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
target.adjust_timed_status_effect(40 SECONDS, /datum/status_effect/speech/stutter)
|
||||
|
||||
/obj/item/melee/baton/security
|
||||
@@ -562,7 +562,7 @@
|
||||
* After a period of time, we then check to see what stun duration we give.
|
||||
*/
|
||||
/obj/item/melee/baton/security/additional_effects_non_cyborg(mob/living/target, mob/living/user)
|
||||
target.Jitter(20)
|
||||
target.set_timed_status_effect(40 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
target.set_timed_status_effect(10 SECONDS, /datum/status_effect/confusion, only_if_higher = TRUE)
|
||||
target.set_timed_status_effect(16 SECONDS, /datum/status_effect/speech/stutter, only_if_higher = TRUE)
|
||||
|
||||
|
||||
@@ -343,12 +343,12 @@
|
||||
if(1)
|
||||
carbon.adjust_timed_status_effect(5 SECONDS, /datum/status_effect/confusion)
|
||||
carbon.adjust_timed_status_effect(20 SECONDS, /datum/status_effect/speech/stutter)
|
||||
carbon.Jitter(10)
|
||||
carbon.adjust_timed_status_effect(20 SECONDS, /datum/status_effect/jitter)
|
||||
if(2)
|
||||
carbon.Paralyze(40)
|
||||
carbon.adjust_timed_status_effect(10 SECONDS, /datum/status_effect/confusion)
|
||||
carbon.adjust_timed_status_effect(30 SECONDS, /datum/status_effect/speech/stutter)
|
||||
carbon.Jitter(25)
|
||||
carbon.adjust_timed_status_effect(50 SECONDS, /datum/status_effect/jitter)
|
||||
playsound(get_turf(src), 'sound/machines/warning-buzzer.ogg', 130, 3)
|
||||
COOLDOWN_START(src, alarm_cooldown, HARM_ALARM_NO_SAFETY_COOLDOWN)
|
||||
user.log_message("used an emagged Cyborg Harm Alarm in [AREACOORD(user)]", LOG_ATTACK)
|
||||
|
||||
@@ -512,7 +512,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
|
||||
if(BATON_STUN)
|
||||
target.visible_message(span_danger("[user] stuns [target] with [src]!"),
|
||||
span_userdanger("[user] stuns you with [src]!"))
|
||||
target.Jitter(20)
|
||||
target.set_timed_status_effect(40 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
target.set_timed_status_effect(10 SECONDS, /datum/status_effect/confusion, only_if_higher = TRUE)
|
||||
target.set_timed_status_effect(16 SECONDS, /datum/status_effect/speech/stutter, only_if_higher = TRUE)
|
||||
SEND_SIGNAL(target, COMSIG_LIVING_MINOR_SHOCK)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
if(ears)
|
||||
ears.adjustEarDamage(0, 30)
|
||||
C.adjust_timed_status_effect(25 SECONDS, /datum/status_effect/confusion)
|
||||
C.Jitter(50)
|
||||
C.set_timed_status_effect(100 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
else
|
||||
SEND_SOUND(C, sound('sound/effects/screech.ogg'))
|
||||
|
||||
|
||||
@@ -444,7 +444,7 @@
|
||||
carbon_target.silent += 6
|
||||
carbon_target.adjust_timed_status_effect(30 SECONDS, /datum/status_effect/speech/stutter)
|
||||
carbon_target.adjust_timed_status_effect(30 SECONDS, /datum/status_effect/speech/slurring/cult)
|
||||
carbon_target.Jitter(1.5 SECONDS)
|
||||
carbon_target.set_timed_status_effect(30 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
uses--
|
||||
..()
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
human_in_range.hallucination = min(human_in_range.hallucination + 5, 120)
|
||||
|
||||
if(DT_PROB(40, delta_time))
|
||||
human_in_range.Jitter(5)
|
||||
human_in_range.set_timed_status_effect(10 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
|
||||
if(human_in_range.getStaminaLoss() <= 85 && DT_PROB(30, delta_time))
|
||||
human_in_range.emote(pick("giggle", "laugh"))
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
healing_amount *= -0.5
|
||||
|
||||
if(owner.health > owner.crit_threshold && prob(4))
|
||||
owner.Jitter(10)
|
||||
owner.set_timed_status_effect(20 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
owner.set_timed_status_effect(10 SECONDS, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
owner.hallucination = min(owner.hallucination + 3, 24)
|
||||
|
||||
|
||||
+5
-5
@@ -226,11 +226,11 @@
|
||||
sac_target.set_handcuffed(new /obj/item/restraints/handcuffs/energy/cult(sac_target))
|
||||
sac_target.update_handcuffed()
|
||||
sac_target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 85, 150)
|
||||
sac_target.do_jitter_animation(100)
|
||||
sac_target.do_jitter_animation()
|
||||
log_combat(heretic_mind.current, sac_target, "sacrificed")
|
||||
|
||||
addtimer(CALLBACK(sac_target, /mob/living/carbon.proc/do_jitter_animation, 100), SACRIFICE_SLEEP_DURATION * (1/3))
|
||||
addtimer(CALLBACK(sac_target, /mob/living/carbon.proc/do_jitter_animation, 100), SACRIFICE_SLEEP_DURATION * (2/3))
|
||||
addtimer(CALLBACK(sac_target, /mob/living/carbon.proc/do_jitter_animation), SACRIFICE_SLEEP_DURATION * (1/3))
|
||||
addtimer(CALLBACK(sac_target, /mob/living/carbon.proc/do_jitter_animation), SACRIFICE_SLEEP_DURATION * (2/3))
|
||||
|
||||
// If our target is dead, try to revive them
|
||||
// and if we fail to revive them, don't proceede the chain
|
||||
@@ -311,7 +311,7 @@
|
||||
|
||||
sac_target.flash_act()
|
||||
sac_target.blur_eyes(15)
|
||||
sac_target.Jitter(10)
|
||||
sac_target.set_timed_status_effect(20 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
sac_target.set_timed_status_effect(20 SECONDS, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
sac_target.hallucination += 12
|
||||
sac_target.emote("scream")
|
||||
@@ -432,7 +432,7 @@
|
||||
// Oh god where are we?
|
||||
sac_target.flash_act()
|
||||
sac_target.adjust_timed_status_effect(60 SECONDS, /datum/status_effect/confusion)
|
||||
sac_target.Jitter(60)
|
||||
sac_target.set_timed_status_effect(120 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
sac_target.blur_eyes(50)
|
||||
sac_target.set_timed_status_effect(1 MINUTES, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
sac_target.AdjustKnockdown(80)
|
||||
|
||||
@@ -241,7 +241,7 @@
|
||||
carbon_victim.silent += 10
|
||||
carbon_victim.adjust_timed_status_effect(1 MINUTES, /datum/status_effect/speech/stutter)
|
||||
carbon_victim.adjust_timed_status_effect(5 SECONDS, /datum/status_effect/confusion)
|
||||
carbon_victim.Jitter(10)
|
||||
carbon_victim.set_timed_status_effect(20 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
carbon_victim.set_timed_status_effect(40 SECONDS, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
carbon_victim.blind_eyes(2)
|
||||
SEND_SIGNAL(carbon_victim, COMSIG_ADD_MOOD_EVENT, "gates_of_mansus", /datum/mood_event/gates_of_mansus)
|
||||
|
||||
@@ -607,7 +607,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module))
|
||||
if(isspaceturf(victim_turf) && !victim_turf.Adjacent(found_intercom)) //Prevents getting honked in space
|
||||
continue
|
||||
if(honk_victim.soundbang_act(intensity = 1, stun_pwr = 20, damage_pwr = 30, deafen_pwr = 60)) //Ear protection will prevent these effects
|
||||
honk_victim.Jitter(60)
|
||||
honk_victim.set_timed_status_effect(120 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
to_chat(honk_victim, span_clown("HOOOOONK!"))
|
||||
|
||||
/// Robotic Factory: Places a large machine that converts humans that go through it into cyborgs. Unlocking this ability removes shunting.
|
||||
|
||||
@@ -1567,19 +1567,17 @@ GLOBAL_LIST_INIT(hallucination_list, list(
|
||||
addtimer(CALLBACK(src, .proc/reset_shock_animation), 40)
|
||||
target.playsound_local(get_turf(src), SFX_SPARKS, 100, 1)
|
||||
target.staminaloss += 50
|
||||
target.Stun(40)
|
||||
target.jitteriness += 1000
|
||||
target.do_jitter_animation(target.jitteriness)
|
||||
addtimer(CALLBACK(src, .proc/shock_drop), 20)
|
||||
target.Stun(4 SECONDS)
|
||||
target.do_jitter_animation(300) // Maximum jitter
|
||||
target.adjust_timed_status_effect(20 SECONDS, /datum/status_effect/jitter)
|
||||
addtimer(CALLBACK(src, .proc/shock_drop), 2 SECONDS)
|
||||
|
||||
/datum/hallucination/shock/proc/reset_shock_animation()
|
||||
if(target.client)
|
||||
target.client.images.Remove(shock_image)
|
||||
target.client.images.Remove(electrocution_skeleton_anim)
|
||||
target.client?.images.Remove(shock_image)
|
||||
target.client?.images.Remove(electrocution_skeleton_anim)
|
||||
|
||||
/datum/hallucination/shock/proc/shock_drop()
|
||||
target.jitteriness = max(target.jitteriness - 990, 10) //Still jittery, but vastly less
|
||||
target.Paralyze(60)
|
||||
target.Paralyze(6 SECONDS)
|
||||
|
||||
/datum/hallucination/husks
|
||||
var/image/halbody
|
||||
|
||||
@@ -784,7 +784,7 @@
|
||||
living_target.apply_status_effect(/datum/status_effect/stagger)
|
||||
var/datum/status_effect/agent_pinpointer/scan_pinpointer = ranged_ability_user.apply_status_effect(/datum/status_effect/agent_pinpointer/scan)
|
||||
scan_pinpointer.scan_target = living_target
|
||||
living_target.Jitter(5 SECONDS)
|
||||
living_target.set_timed_status_effect(100 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
to_chat(living_target, span_warning("You've been staggered!"))
|
||||
living_target.add_filter("scan", 2, list("type" = "outline", "color" = COLOR_YELLOW, "size" = 1))
|
||||
addtimer(CALLBACK(living_target, /atom/.proc/remove_filter, "scan"), 30 SECONDS)
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
owner.emote("scream")
|
||||
owner.Paralyze(100)
|
||||
|
||||
owner.jitteriness += 30
|
||||
owner.adjust_timed_status_effect(1 MINUTES, /datum/status_effect/jitter)
|
||||
owner.adjust_timed_status_effect(30 SECONDS, /datum/status_effect/confusion)
|
||||
owner.adjust_timed_status_effect(1 MINUTES, /datum/status_effect/speech/stutter)
|
||||
|
||||
|
||||
@@ -385,15 +385,14 @@
|
||||
if(should_stun)
|
||||
Paralyze(40)
|
||||
//Jitter and other fluff.
|
||||
jitteriness += 1000
|
||||
do_jitter_animation(jitteriness)
|
||||
do_jitter_animation(300)
|
||||
adjust_timed_status_effect(20 SECONDS, /datum/status_effect/jitter)
|
||||
adjust_timed_status_effect(4 SECONDS, /datum/status_effect/speech/stutter)
|
||||
addtimer(CALLBACK(src, .proc/secondary_shock, should_stun), 20)
|
||||
addtimer(CALLBACK(src, .proc/secondary_shock, should_stun), 2 SECONDS)
|
||||
return shock_damage
|
||||
|
||||
///Called slightly after electrocute act to reduce jittering and apply a secondary stun.
|
||||
///Called slightly after electrocute act to apply a secondary stun.
|
||||
/mob/living/carbon/proc/secondary_shock(should_stun)
|
||||
jitteriness = max(jitteriness - 990, 10)
|
||||
if(should_stun)
|
||||
Paralyze(60)
|
||||
|
||||
|
||||
@@ -27,7 +27,6 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift)
|
||||
|
||||
. = ..()
|
||||
|
||||
jitteriness = 0
|
||||
if(client && !suiciding && !(client in GLOB.dead_players_during_shift))
|
||||
GLOB.dead_players_during_shift += client
|
||||
GLOB.deaths_during_shift++
|
||||
|
||||
@@ -100,15 +100,6 @@
|
||||
if (length(status_examines))
|
||||
. += status_examines
|
||||
|
||||
//Jitters
|
||||
switch(jitteriness)
|
||||
if(300 to INFINITY)
|
||||
. += span_warning("<B>[t_He] [t_is] convulsing violently!</B>")
|
||||
if(200 to 300)
|
||||
. += span_warning("[t_He] [t_is] extremely jittery.")
|
||||
if(100 to 200)
|
||||
. += span_warning("[t_He] [t_is] twitching ever so slightly.")
|
||||
|
||||
var/appears_dead = FALSE
|
||||
var/just_sleeping = FALSE
|
||||
|
||||
|
||||
@@ -1017,7 +1017,7 @@
|
||||
H.show_message(span_narsiesmall("You cringe with pain as your body rings around you!"), MSG_AUDIBLE)
|
||||
H.playsound_local(H, 'sound/effects/gong.ogg', 100, TRUE)
|
||||
H.soundbang_act(2, 0, 100, 1)
|
||||
H.jitteriness += 7
|
||||
H.adjust_timed_status_effect(14 SECONDS, /datum/status_effect/jitter)
|
||||
var/distance = max(0,get_dist(get_turf(H),get_turf(M)))
|
||||
switch(distance)
|
||||
if(0 to 1)
|
||||
@@ -1025,13 +1025,13 @@
|
||||
M.playsound_local(H, 'sound/effects/gong.ogg', 100, TRUE)
|
||||
M.soundbang_act(1, 0, 30, 3)
|
||||
M.adjust_timed_status_effect(10 SECONDS, /datum/status_effect/confusion)
|
||||
M.jitteriness += 4
|
||||
M.adjust_timed_status_effect(8 SECONDS, /datum/status_effect/jitter)
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "gonged", /datum/mood_event/loud_gong)
|
||||
if(2 to 3)
|
||||
M.show_message(span_cult("GONG!"), MSG_AUDIBLE)
|
||||
M.playsound_local(H, 'sound/effects/gong.ogg', 75, TRUE)
|
||||
M.soundbang_act(1, 0, 15, 2)
|
||||
M.jitteriness += 3
|
||||
M.adjust_timed_status_effect(6 SECONDS, /datum/status_effect/jitter)
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "gonged", /datum/mood_event/loud_gong)
|
||||
else
|
||||
M.show_message(span_warning("GONG!"), MSG_AUDIBLE)
|
||||
|
||||
@@ -434,14 +434,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
if(DT_PROB(2.5, delta_time))
|
||||
AdjustSleeping(10 SECONDS)
|
||||
|
||||
//Jitteriness
|
||||
if(jitteriness)
|
||||
do_jitter_animation(jitteriness)
|
||||
jitteriness = max(jitteriness - (restingpwr * delta_time), 0)
|
||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "jittery", /datum/mood_event/jittery)
|
||||
else
|
||||
SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "jittery")
|
||||
|
||||
if(silent)
|
||||
silent = max(silent - (0.5 * delta_time), 0)
|
||||
|
||||
|
||||
@@ -108,9 +108,6 @@
|
||||
blur_eyes(effect * hit_percent)
|
||||
if(EFFECT_DROWSY)
|
||||
adjust_drowsyness(effect * hit_percent)
|
||||
if(EFFECT_JITTER)
|
||||
if((status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE))
|
||||
jitteriness = max(jitteriness,(effect * hit_percent))
|
||||
return TRUE
|
||||
|
||||
/**
|
||||
@@ -129,7 +126,7 @@
|
||||
drowsy = 0,
|
||||
blocked = 0, // This one's not an effect, don't be confused - it's block chance
|
||||
stamina = 0, // This one's a damage type, and not an effect
|
||||
jitter = 0,
|
||||
jitter = 0 SECONDS,
|
||||
paralyze = 0,
|
||||
immobilize = 0,
|
||||
)
|
||||
@@ -151,12 +148,12 @@
|
||||
apply_effect(eyeblur, EFFECT_EYE_BLUR, blocked)
|
||||
if(drowsy)
|
||||
apply_effect(drowsy, EFFECT_DROWSY, blocked)
|
||||
if(jitter)
|
||||
apply_effect(jitter, EFFECT_JITTER, blocked)
|
||||
|
||||
if(stamina)
|
||||
apply_damage(stamina, STAMINA, null, blocked)
|
||||
|
||||
if(jitter && (status_flags & CANSTUN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE))
|
||||
adjust_timed_status_effect(jitter, /datum/status_effect/jitter)
|
||||
if(slur)
|
||||
adjust_timed_status_effect(slur, /datum/status_effect/speech/slurring/drunk)
|
||||
if(stutter)
|
||||
|
||||
@@ -840,7 +840,6 @@
|
||||
heal_overall_damage(INFINITY, INFINITY, INFINITY, null, TRUE) //heal brute and burn dmg on both organic and robotic limbs, and update health right away.
|
||||
extinguish_mob()
|
||||
set_drowsyness(0)
|
||||
jitteriness = 0
|
||||
stop_sound_channel(CHANNEL_HEARTBEAT)
|
||||
SEND_SIGNAL(src, COMSIG_LIVING_POST_FULLY_HEAL, admin_revive)
|
||||
|
||||
@@ -1110,13 +1109,6 @@
|
||||
else if(!src.mob_negates_gravity())
|
||||
step_towards(src,S)
|
||||
|
||||
/mob/living/proc/do_jitter_animation(jitteriness)
|
||||
var/amplitude = min(4, (jitteriness/100) + 1)
|
||||
var/pixel_x_diff = rand(-amplitude, amplitude)
|
||||
var/pixel_y_diff = rand(-amplitude/3, amplitude/3)
|
||||
animate(src, pixel_x = pixel_x_diff, pixel_y = pixel_y_diff , time = 2, loop = 6, flags = ANIMATION_RELATIVE|ANIMATION_PARALLEL)
|
||||
animate(pixel_x = -pixel_x_diff , pixel_y = -pixel_y_diff , time = 2, flags = ANIMATION_RELATIVE)
|
||||
|
||||
/mob/living/proc/get_temperature(datum/gas_mixture/environment)
|
||||
var/loc_temp = environment ? environment.temperature : T0C
|
||||
if(isobj(loc))
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
var/obj/item/organ/ears/target_ears = current_target.getorganslot(ORGAN_SLOT_EARS)
|
||||
if(target_ears && !HAS_TRAIT_FROM(current_target, TRAIT_DEAF, CLOTHING_TRAIT))
|
||||
target_ears.adjustEarDamage(0, 5) //far less damage than the H.O.N.K.
|
||||
current_target.Jitter(5 SECONDS)
|
||||
current_target.set_timed_status_effect(100 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
current_target.Paralyze(6 SECONDS)
|
||||
if(client) //prevent spam from players
|
||||
limiting_spam = TRUE
|
||||
|
||||
@@ -108,8 +108,6 @@
|
||||
var/old_bodytemperature = 0
|
||||
/// Drowsyness level of the mob
|
||||
var/drowsyness = 0//Carbon
|
||||
/// Jitteryness level of the mob
|
||||
var/jitteriness = 0//Carbon
|
||||
/// Hunger level of the mob
|
||||
var/nutrition = NUTRITION_LEVEL_START_MIN // randomised in Initialize
|
||||
/// Satiation level of the mob
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
|
||||
//Here are the procs used to modify status effects of a mob.
|
||||
//The effects include: stun, knockdown, unconscious, sleeping, resting, jitteriness, dizziness, drowsyness, ear damage,
|
||||
// eye damage, eye_blind, eye_blurry, druggy, TRAIT_BLIND trait, and TRAIT_NEARSIGHT trait.
|
||||
|
||||
///Set the jitter of a mob
|
||||
/mob/proc/Jitter(amount)
|
||||
jitteriness = max(jitteriness,amount,0)
|
||||
|
||||
/**
|
||||
* Set drowsyness of a mob to passed value
|
||||
|
||||
@@ -420,7 +420,7 @@
|
||||
damage_type = BURN
|
||||
armor_flag = ENERGY
|
||||
range = 150
|
||||
jitter = 10
|
||||
jitter = 20 SECONDS
|
||||
var/obj/item/gun/energy/beam_rifle/gun
|
||||
var/structure_pierce_amount = 0 //All set to 0 so the gun can manually set them during firing.
|
||||
var/structure_bleed_coeff = 0
|
||||
|
||||
@@ -153,7 +153,8 @@
|
||||
var/unconscious = 0
|
||||
var/eyeblur = 0
|
||||
var/drowsy = 0
|
||||
var/jitter = 0
|
||||
/// Jittering applied on projectile hit
|
||||
var/jitter = 0 SECONDS
|
||||
/// Extra stamina damage applied on projectile hit (in addition to the main damage)
|
||||
var/stamina = 0
|
||||
/// Stuttering applied on projectile hit
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
damage = 5
|
||||
paralyze = 100
|
||||
stutter = 10 SECONDS
|
||||
jitter = 20
|
||||
jitter = 40 SECONDS
|
||||
range = 7
|
||||
icon_state = "spark"
|
||||
color = "#FFFF00"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
nodamage = FALSE
|
||||
paralyze = 100
|
||||
stutter = 10 SECONDS
|
||||
jitter = 20
|
||||
jitter = 40 SECONDS
|
||||
hitsound = 'sound/weapons/taserhit.ogg'
|
||||
range = 7
|
||||
tracer_type = /obj/effect/projectile/tracer/stun
|
||||
@@ -23,7 +23,7 @@
|
||||
if(C.dna && C.dna.check_mutation(/datum/mutation/human/hulk))
|
||||
C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk")
|
||||
else if((C.status_flags & CANKNOCKDOWN) && !HAS_TRAIT(C, TRAIT_STUNIMMUNE))
|
||||
addtimer(CALLBACK(C, /mob/living/carbon.proc/do_jitter_animation, jitter), 5)
|
||||
addtimer(CALLBACK(C, /mob/living/carbon.proc/do_jitter_animation, 20), 5)
|
||||
|
||||
/obj/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet
|
||||
do_sparks(1, TRUE, src)
|
||||
|
||||
@@ -168,7 +168,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
drinker.adjust_drowsyness(-3 * REM * delta_time)
|
||||
drinker.AdjustSleeping(-40 * REM * delta_time)
|
||||
if(!HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE))
|
||||
drinker.Jitter(0.5 SECONDS)
|
||||
drinker.set_timed_status_effect(10 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
..()
|
||||
. = TRUE
|
||||
|
||||
@@ -230,13 +230,13 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
drinker.AdjustSleeping(-40 * REM * delta_time)
|
||||
drinker.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, drinker.get_body_temp_normal())
|
||||
if(!HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE))
|
||||
drinker.Jitter(0.5 SECONDS)
|
||||
drinker.set_timed_status_effect(10 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
..()
|
||||
return TRUE
|
||||
|
||||
/datum/reagent/consumable/ethanol/thirteenloko/overdose_start(mob/living/drinker)
|
||||
to_chat(drinker, span_userdanger("Your entire body violently jitters as you start to feel queasy. You really shouldn't have drank all of that [name]!"))
|
||||
drinker.Jitter(2 SECONDS)
|
||||
drinker.set_timed_status_effect(40 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
drinker.Stun(1.5 SECONDS)
|
||||
|
||||
/datum/reagent/consumable/ethanol/thirteenloko/overdose_process(mob/living/drinker, delta_time, times_fired)
|
||||
@@ -245,7 +245,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
if(held_item)
|
||||
drinker.dropItemToGround(held_item)
|
||||
to_chat(drinker, span_notice("Your hands jitter and you drop what you were holding!"))
|
||||
drinker.Jitter(1 SECONDS)
|
||||
drinker.set_timed_status_effect(20 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
|
||||
if(DT_PROB(3.5, delta_time))
|
||||
to_chat(drinker, span_notice("[pick("You have a really bad headache.", "Your eyes hurt.", "You find it hard to stay still.", "You feel your heart practically beating out of your chest.")]"))
|
||||
@@ -267,7 +267,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
if(DT_PROB(1.5, delta_time) && iscarbon(drinker))
|
||||
drinker.visible_message(span_danger("[drinker] starts having a seizure!"), span_userdanger("You have a seizure!"))
|
||||
drinker.Unconscious(10 SECONDS)
|
||||
drinker.Jitter(35 SECONDS)
|
||||
drinker.set_timed_status_effect(700 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
|
||||
if(DT_PROB(0.5, delta_time) && iscarbon(drinker))
|
||||
var/datum/disease/heart_attack = new /datum/disease/heart_failure
|
||||
@@ -797,7 +797,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/carbon/drinker, delta_time, times_fired)
|
||||
drinker.Jitter(2)
|
||||
drinker.set_timed_status_effect(4 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
var/obj/item/organ/liver/liver = drinker.getorganslot(ORGAN_SLOT_LIVER)
|
||||
// if you have a liver and that liver is an officer's liver
|
||||
if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
|
||||
@@ -1581,19 +1581,19 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
if(DT_PROB(5, delta_time))
|
||||
drinker.emote(pick("twitch","giggle"))
|
||||
if(5 to 10)
|
||||
drinker.Jitter(20 * REM * delta_time)
|
||||
drinker.set_timed_status_effect(40 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
drinker.set_timed_status_effect(40 SECONDS * REM * delta_time, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
drinker.set_timed_status_effect(1.5 MINUTES * REM * delta_time, /datum/status_effect/drugginess)
|
||||
if(DT_PROB(10, delta_time))
|
||||
drinker.emote(pick("twitch","giggle"))
|
||||
if (10 to 200)
|
||||
drinker.Jitter(40 * REM * delta_time)
|
||||
drinker.set_timed_status_effect(80 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
drinker.set_timed_status_effect(80 SECONDS * REM * delta_time, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
drinker.set_timed_status_effect(2 MINUTES * REM * delta_time, /datum/status_effect/drugginess)
|
||||
if(DT_PROB(16, delta_time))
|
||||
drinker.emote(pick("twitch","giggle"))
|
||||
if(200 to INFINITY)
|
||||
drinker.Jitter(60 * REM * delta_time)
|
||||
drinker.set_timed_status_effect(120 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
drinker.set_timed_status_effect(120 SECONDS * REM * delta_time, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
drinker.set_timed_status_effect(2.5 MINUTES * REM * delta_time, /datum/status_effect/drugginess)
|
||||
if(DT_PROB(23, delta_time))
|
||||
@@ -2386,7 +2386,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
/datum/reagent/consumable/ethanol/trappist/on_mob_life(mob/living/carbon/drinker, delta_time, times_fired)
|
||||
if(drinker.mind?.holy_role)
|
||||
drinker.adjustFireLoss(-2.5 * REM * delta_time, 0)
|
||||
drinker.jitteriness = max(drinker.jitteriness - (1 * REM * delta_time), 0)
|
||||
drinker.adjust_timed_status_effect(-2 SECONDS * REM * delta_time, /datum/status_effect/jitter)
|
||||
drinker.adjust_timed_status_effect(-2 SECONDS * REM * delta_time, /datum/status_effect/speech/stutter)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -535,7 +535,7 @@
|
||||
|
||||
H.adjustOrganLoss(ORGAN_SLOT_HEART, max(volume/10, 1) * REM * delta_time) // your heart is barely keeping up!
|
||||
|
||||
H.Jitter(rand(0, 2) * REM * delta_time)
|
||||
H.set_timed_status_effect(rand(0 SECONDS, 4 SECONDS) * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
H.set_timed_status_effect(rand(0 SECONDS, 4 SECONDS) * REM * delta_time, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
|
||||
if(DT_PROB(18, delta_time))
|
||||
|
||||
@@ -284,7 +284,7 @@
|
||||
glass_price = DRINK_PRICE_STOCK
|
||||
|
||||
/datum/reagent/consumable/coffee/overdose_process(mob/living/M, delta_time, times_fired)
|
||||
M.Jitter(5 * REM * delta_time)
|
||||
M.set_timed_status_effect(10 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/coffee/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
@@ -313,7 +313,7 @@
|
||||
/datum/reagent/consumable/tea/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
M.adjust_timed_status_effect(-4 SECONDS * REM * delta_time, /datum/status_effect/dizziness)
|
||||
M.adjust_drowsyness(-1 * REM * delta_time)
|
||||
M.jitteriness = max(M.jitteriness - (3 * REM * delta_time), 0)
|
||||
M.adjust_timed_status_effect(-6 SECONDS * REM * delta_time, /datum/status_effect/jitter)
|
||||
M.AdjustSleeping(-20 * REM * delta_time)
|
||||
if(M.getToxLoss() && DT_PROB(10, delta_time))
|
||||
M.adjustToxLoss(-1, 0)
|
||||
@@ -367,7 +367,7 @@
|
||||
M.adjust_drowsyness(-3 * REM * delta_time)
|
||||
M.AdjustSleeping(-40 * REM * delta_time)
|
||||
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
|
||||
M.Jitter(5 * REM * delta_time)
|
||||
M.set_timed_status_effect(10 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
..()
|
||||
. = TRUE
|
||||
|
||||
@@ -387,7 +387,7 @@
|
||||
M.adjust_drowsyness(-3 * REM * delta_time)
|
||||
M.AdjustSleeping(-60 * REM * delta_time)
|
||||
M.adjust_bodytemperature(-7 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
|
||||
M.Jitter(5 * REM * delta_time)
|
||||
M.set_timed_status_effect(10 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
M.adjustToxLoss(1 * REM * delta_time, 0)
|
||||
..()
|
||||
. = TRUE
|
||||
@@ -440,7 +440,7 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/roy_rogers/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
M.Jitter(6 * REM * delta_time) //not as strong as coffe, still this is a lot of sugar
|
||||
M.set_timed_status_effect(12 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
M.adjust_drowsyness(-5 * REM * delta_time)
|
||||
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
|
||||
return ..()
|
||||
@@ -465,7 +465,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
M.Jitter(20 * REM * delta_time)
|
||||
M.set_timed_status_effect(40 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
M.set_timed_status_effect(1 MINUTES * REM * delta_time, /datum/status_effect/drugginess)
|
||||
M.adjust_timed_status_effect(3 SECONDS * REM * delta_time, /datum/status_effect/dizziness)
|
||||
M.set_drowsyness(0)
|
||||
@@ -504,7 +504,7 @@
|
||||
ADD_TRAIT(M, TRAIT_DOUBLE_TAP, type)
|
||||
effect_enabled = TRUE
|
||||
|
||||
M.Jitter(2 * REM * delta_time)
|
||||
M.set_timed_status_effect(4 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
if(prob(50))
|
||||
M.adjust_timed_status_effect(2 SECONDS * REM * delta_time, /datum/status_effect/dizziness)
|
||||
if(current_cycle > 10)
|
||||
@@ -533,7 +533,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/grey_bull/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
M.Jitter(20 * REM * delta_time)
|
||||
M.set_timed_status_effect(40 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
M.adjust_timed_status_effect(2 SECONDS * REM * delta_time, /datum/status_effect/dizziness)
|
||||
M.set_drowsyness(0)
|
||||
M.AdjustSleeping(-40 * REM * delta_time)
|
||||
@@ -554,7 +554,7 @@
|
||||
M.adjust_drowsyness(-7 * REM * delta_time)
|
||||
M.AdjustSleeping(-20 * REM * delta_time)
|
||||
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
|
||||
M.Jitter(5 * REM * delta_time)
|
||||
M.set_timed_status_effect(10 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
..()
|
||||
. = TRUE
|
||||
|
||||
@@ -696,7 +696,7 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/monkey_energy/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
M.Jitter(40 * REM * delta_time)
|
||||
M.set_timed_status_effect(80 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
M.adjust_timed_status_effect(2 SECONDS * REM * delta_time, /datum/status_effect/dizziness)
|
||||
M.set_drowsyness(0)
|
||||
M.AdjustSleeping(-40 * REM * delta_time)
|
||||
@@ -749,7 +749,7 @@
|
||||
M.adjust_drowsyness(-3 *REM * delta_time)
|
||||
M.SetSleeping(0)
|
||||
M.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, 0, M.get_body_temp_normal())
|
||||
M.Jitter(5 * REM * delta_time)
|
||||
M.set_timed_status_effect(10 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
if(M.getBruteLoss() && DT_PROB(10, delta_time))
|
||||
M.heal_bodypart_damage(1,0, 0)
|
||||
..()
|
||||
@@ -772,7 +772,7 @@
|
||||
M.adjust_drowsyness(-6 * REM * delta_time)
|
||||
M.SetSleeping(0)
|
||||
M.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, 0, M.get_body_temp_normal())
|
||||
M.Jitter(5 * REM * delta_time)
|
||||
M.set_timed_status_effect(10 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
if(M.getBruteLoss() && DT_PROB(10, delta_time))
|
||||
M.heal_bodypart_damage(1, 0, 0)
|
||||
..()
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
var/smoke_message = pick("You feel relaxed.", "You feel calmed.","You feel alert.","You feel rugged.")
|
||||
to_chat(M, span_notice("[smoke_message]"))
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "smoked", /datum/mood_event/smoked, name)
|
||||
M.Jitter(0) //calms down any withdrawal jitters
|
||||
M.remove_status_effect(/datum/status_effect/jitter)
|
||||
M.AdjustStun(-50 * REM * delta_time)
|
||||
M.AdjustKnockdown(-50 * REM * delta_time)
|
||||
M.AdjustUnconscious(-50 * REM * delta_time)
|
||||
@@ -164,7 +164,7 @@
|
||||
M.AdjustParalyzed(-40 * REM * delta_time)
|
||||
M.AdjustImmobilized(-40 * REM * delta_time)
|
||||
M.adjustStaminaLoss(-2 * REM * delta_time, 0)
|
||||
M.Jitter(2 * REM * delta_time)
|
||||
M.set_timed_status_effect(4 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(1, 4) * REM * delta_time)
|
||||
if(DT_PROB(2.5, delta_time))
|
||||
M.emote(pick("twitch", "shiver"))
|
||||
@@ -279,7 +279,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/happiness/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
M.jitteriness = 0
|
||||
M.remove_status_effect(/datum/status_effect/jitter)
|
||||
M.remove_status_effect(/datum/status_effect/confusion)
|
||||
M.disgust = 0
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.2 * REM * delta_time)
|
||||
@@ -322,7 +322,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/drug/pumpup/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
M.Jitter(5 * REM * delta_time)
|
||||
M.set_timed_status_effect(10 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
|
||||
if(DT_PROB(2.5, delta_time))
|
||||
to_chat(M, span_notice("[pick("Go! Go! GO!", "You feel ready...", "You feel invincible...")]"))
|
||||
@@ -336,7 +336,7 @@
|
||||
to_chat(M, span_userdanger("You can't stop shaking, your heart beats faster and faster..."))
|
||||
|
||||
/datum/reagent/drug/pumpup/overdose_process(mob/living/M, delta_time, times_fired)
|
||||
M.Jitter(5 * REM * delta_time)
|
||||
M.set_timed_status_effect(10 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
if(DT_PROB(2.5, delta_time))
|
||||
M.drop_all_held_items()
|
||||
if(DT_PROB(7.5, delta_time))
|
||||
@@ -456,11 +456,11 @@
|
||||
if(DT_PROB(5, delta_time))
|
||||
psychonaut.emote(pick("twitch","giggle"))
|
||||
if(5 to 10)
|
||||
psychonaut.Jitter(10 * REM * delta_time)
|
||||
psychonaut.set_timed_status_effect(20 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
if(DT_PROB(10, delta_time))
|
||||
psychonaut.emote(pick("twitch","giggle"))
|
||||
if (10 to INFINITY)
|
||||
psychonaut.Jitter(20 * REM * delta_time)
|
||||
psychonaut.set_timed_status_effect(40 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
if(DT_PROB(16, delta_time))
|
||||
psychonaut.emote(pick("twitch","giggle"))
|
||||
..()
|
||||
@@ -761,7 +761,7 @@
|
||||
. = ..()
|
||||
SEND_SIGNAL(kronkaine_fiend, COMSIG_ADD_MOOD_EVENT, "tweaking", /datum/mood_event/stimulant_medium, name)
|
||||
kronkaine_fiend.adjustOrganLoss(ORGAN_SLOT_HEART, 0.4 * REM * delta_time)
|
||||
kronkaine_fiend.Jitter(10 * REM * delta_time)
|
||||
kronkaine_fiend.set_timed_status_effect(20 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
kronkaine_fiend.AdjustSleeping(-20 * REM * delta_time)
|
||||
kronkaine_fiend.adjust_drowsyness(-5 * REM * delta_time)
|
||||
if(volume < 10)
|
||||
@@ -774,6 +774,6 @@
|
||||
/datum/reagent/drug/kronkaine/overdose_process(mob/living/kronkaine_fiend, delta_time, times_fired)
|
||||
. = ..()
|
||||
kronkaine_fiend.adjustOrganLoss(ORGAN_SLOT_HEART, 1 * REM * delta_time)
|
||||
kronkaine_fiend.Jitter(10 * REM * delta_time)
|
||||
kronkaine_fiend.set_timed_status_effect(20 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
if(DT_PROB(10, delta_time))
|
||||
to_chat(kronkaine_fiend, span_danger(pick("You feel like your heart is going to explode!", "Your ears are ringing!", "You sweat like a pig!", "You clench your jaw and grind your teeth.", "You feel prickles of pain in your chest.")))
|
||||
|
||||
@@ -440,7 +440,7 @@
|
||||
if(DT_PROB(min(current_cycle/2, 12.5), delta_time))
|
||||
to_chat(M, span_danger("You can't get the scent of garlic out of your nose! You can barely think..."))
|
||||
M.Paralyze(10)
|
||||
M.Jitter(10)
|
||||
M.set_timed_status_effect(20 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
else
|
||||
var/obj/item/organ/liver/liver = M.getorganslot(ORGAN_SLOT_LIVER)
|
||||
if(liver && HAS_TRAIT(liver, TRAIT_CULINARY_METABOLISM))
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
// Remove all speech related status effects
|
||||
for(var/effect in typesof(/datum/status_effect/speech))
|
||||
M.remove_status_effect(effect)
|
||||
M.jitteriness = 0
|
||||
M.remove_status_effect(/datum/status_effect/jitter)
|
||||
M.hallucination = 0
|
||||
REMOVE_TRAITS_NOT_IN(M, list(SPECIES_TRAIT, ROUNDSTART_TRAIT, ORGAN_TRAIT))
|
||||
M.reagents.remove_all_type(/datum/reagent/toxin, 5 * REM * delta_time, FALSE, TRUE)
|
||||
@@ -253,7 +253,7 @@
|
||||
/datum/reagent/medicine/rezadone/overdose_process(mob/living/M, delta_time, times_fired)
|
||||
M.adjustToxLoss(1 * REM * delta_time, 0)
|
||||
M.set_timed_status_effect(10 SECONDS * REM * delta_time, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
M.Jitter(5 * REM * delta_time)
|
||||
M.set_timed_status_effect(10 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
..()
|
||||
. = TRUE
|
||||
|
||||
@@ -555,7 +555,7 @@
|
||||
var/obj/item/I = M.get_active_held_item()
|
||||
if(I && M.dropItemToGround(I))
|
||||
to_chat(M, span_notice("Your hands spaz out and you drop what you were holding!"))
|
||||
M.Jitter(10)
|
||||
M.set_timed_status_effect(20 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
|
||||
M.AdjustAllImmobility(-20 * REM * delta_time * normalise_creation_purity())
|
||||
M.adjustStaminaLoss(-1 * REM * delta_time * normalise_creation_purity(), FALSE)
|
||||
@@ -590,7 +590,7 @@
|
||||
/datum/reagent/medicine/diphenhydramine/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
if(DT_PROB(5, delta_time))
|
||||
M.adjust_drowsyness(1)
|
||||
M.jitteriness -= 1 * REM * delta_time
|
||||
M.adjust_timed_status_effect(-2 SECONDS * REM * delta_time, /datum/status_effect/jitter)
|
||||
holder.remove_reagent(/datum/reagent/toxin/histamine, 3 * REM * delta_time)
|
||||
..()
|
||||
|
||||
@@ -630,7 +630,7 @@
|
||||
if(DT_PROB(18, delta_time))
|
||||
M.drop_all_held_items()
|
||||
M.set_timed_status_effect(4 SECONDS, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
M.Jitter(2)
|
||||
M.set_timed_status_effect(4 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
..()
|
||||
|
||||
|
||||
@@ -774,14 +774,14 @@
|
||||
M.losebreath = 0
|
||||
if(DT_PROB(10, delta_time))
|
||||
M.set_timed_status_effect(10 SECONDS, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
M.Jitter(5)
|
||||
M.set_timed_status_effect(10 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/atropine/overdose_process(mob/living/M, delta_time, times_fired)
|
||||
M.adjustToxLoss(0.5 * REM * delta_time, 0)
|
||||
. = TRUE
|
||||
M.set_timed_status_effect(2 SECONDS * REM * delta_time, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
M.Jitter(1 * REM * delta_time)
|
||||
M.set_timed_status_effect(2 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/epinephrine
|
||||
@@ -973,7 +973,7 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/medicine/mutadone/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
M.jitteriness = 0
|
||||
M.remove_status_effect(/datum/status_effect/jitter)
|
||||
if(M.has_dna())
|
||||
M.dna.remove_all_mutations(list(MUT_NORMAL, MUT_EXTRA), TRUE)
|
||||
if(!QDELETED(M)) //We were a monkey, now a human
|
||||
@@ -1148,7 +1148,7 @@
|
||||
M.adjustToxLoss(-3 * REM * delta_time, 0)
|
||||
M.adjustCloneLoss(-1 * REM * delta_time, 0)
|
||||
M.adjustStaminaLoss(-3 * REM * delta_time, 0)
|
||||
M.jitteriness = clamp(M.jitteriness + (3 * REM * delta_time), 0, 30)
|
||||
M.adjust_timed_status_effect(6 SECONDS * REM * delta_time, /datum/status_effect/jitter, max_duration = 1 MINUTES)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2 * REM * delta_time, 150)
|
||||
if(DT_PROB(5, delta_time))
|
||||
M.say(pick("Yeah, well, you know, that's just, like, uh, your opinion, man.", "Am I glad he's frozen in there and that we're out here, and that he's the sheriff and that we're frozen out here, and that we're in there, and I just remembered, we're out here. What I wanna know is: Where's the caveman?", "It ain't me, it ain't me...", "Make love, not war!", "Stop, hey, what's that sound? Everybody look what's going down...", "Do you believe in magic in a young girl's heart?"), forced = /datum/reagent/medicine/earthsblood)
|
||||
@@ -1190,8 +1190,10 @@
|
||||
for(var/datum/reagent/drug/R in M.reagents.reagent_list)
|
||||
M.reagents.remove_reagent(R.type, 5 * REM * delta_time)
|
||||
M.adjust_drowsyness(2 * REM * delta_time)
|
||||
if(M.jitteriness >= 3)
|
||||
M.jitteriness -= 3 * REM * delta_time
|
||||
|
||||
if(M.get_timed_status_effect_duration(/datum/status_effect/jitter) >= 6 SECONDS)
|
||||
M.adjust_timed_status_effect(-6 SECONDS * REM * delta_time, /datum/status_effect/jitter)
|
||||
|
||||
if (M.hallucination >= 5)
|
||||
M.hallucination -= 5 * REM * delta_time
|
||||
if(DT_PROB(10, delta_time))
|
||||
@@ -1212,7 +1214,7 @@
|
||||
..()
|
||||
metabolizer.AdjustAllImmobility(-20 * REM * delta_time)
|
||||
metabolizer.adjustStaminaLoss(-10 * REM * delta_time, 0)
|
||||
metabolizer.Jitter(10 * REM * delta_time)
|
||||
metabolizer.set_timed_status_effect(20 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
metabolizer.set_timed_status_effect(20 SECONDS * REM * delta_time, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
return TRUE
|
||||
|
||||
@@ -1228,7 +1230,7 @@
|
||||
REMOVE_TRAIT(L, TRAIT_BATON_RESISTANCE, type)
|
||||
L.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown)
|
||||
L.remove_status_effect(/datum/status_effect/dizziness)
|
||||
L.Jitter(0)
|
||||
L.remove_status_effect(/datum/status_effect/jitter)
|
||||
|
||||
/datum/reagent/medicine/changelingadrenaline/overdose_process(mob/living/metabolizer, delta_time, times_fired)
|
||||
metabolizer.adjustToxLoss(1 * REM * delta_time, 0)
|
||||
@@ -1325,7 +1327,7 @@
|
||||
overdose_threshold = overdose_threshold + ((rand(-10, 10) / 10) * REM * delta_time) // for extra fun
|
||||
metabolizer.AdjustAllImmobility(-5 * REM * delta_time)
|
||||
metabolizer.adjustStaminaLoss(-0.5 * REM * delta_time, 0)
|
||||
metabolizer.Jitter(1)
|
||||
metabolizer.set_timed_status_effect(1 SECONDS * REM * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
metabolization_rate = 0.005 * REAGENTS_METABOLISM * rand(5, 20) // randomizes metabolism between 0.02 and 0.08 per second
|
||||
. = TRUE
|
||||
..()
|
||||
@@ -1338,7 +1340,7 @@
|
||||
overdose_progress++
|
||||
switch(overdose_progress)
|
||||
if(1 to 40)
|
||||
M.jitteriness = min(M.jitteriness + (1 * REM * delta_time), 10)
|
||||
M.adjust_timed_status_effect(2 SECONDS * REM * delta_time, /datum/status_effect/jitter, max_duration = 20 SECONDS)
|
||||
M.adjust_timed_status_effect(2 SECONDS * REM * delta_time, /datum/status_effect/speech/stutter, max_duration = 20 SECONDS)
|
||||
M.set_timed_status_effect(10 SECONDS * REM * delta_time, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
if(DT_PROB(30, delta_time))
|
||||
@@ -1346,7 +1348,7 @@
|
||||
if(41 to 80)
|
||||
M.adjustOxyLoss(0.1 * REM * delta_time, 0)
|
||||
M.adjustStaminaLoss(0.1 * REM * delta_time, 0)
|
||||
M.jitteriness = min(M.jitteriness + (1 * REM * delta_time), 20)
|
||||
M.adjust_timed_status_effect(2 SECONDS * REM * delta_time, /datum/status_effect/jitter, max_duration = 40 SECONDS)
|
||||
M.adjust_timed_status_effect(2 SECONDS * REM * delta_time, /datum/status_effect/speech/stutter, max_duration = 40 SECONDS)
|
||||
M.set_timed_status_effect(20 SECONDS * REM * delta_time, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
if(DT_PROB(30, delta_time))
|
||||
@@ -1385,7 +1387,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/psicodine/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
M.jitteriness = max(M.jitteriness - (6 * REM * delta_time), 0)
|
||||
M.adjust_timed_status_effect(-12 SECONDS * REM * delta_time, /datum/status_effect/jitter)
|
||||
M.adjust_timed_status_effect(-12 SECONDS * REM * delta_time, /datum/status_effect/dizziness)
|
||||
M.adjust_timed_status_effect(-6 SECONDS * REM * delta_time, /datum/status_effect/confusion)
|
||||
M.disgust = max(M.disgust - (6 * REM * delta_time), 0)
|
||||
|
||||
@@ -284,7 +284,7 @@
|
||||
data = list("misc" = 0)
|
||||
|
||||
data["misc"] += delta_time SECONDS * REM
|
||||
M.jitteriness = min(M.jitteriness + (2 * delta_time), 10)
|
||||
M.adjust_timed_status_effect(4 SECONDS * delta_time, /datum/status_effect/jitter, max_duration = 20 SECONDS)
|
||||
if(IS_CULTIST(M))
|
||||
for(var/datum/action/innate/cult/blood_magic/BM in M.actions)
|
||||
to_chat(M, span_cultlarge("Your blood rites falter as holy water scours your body!"))
|
||||
@@ -304,7 +304,7 @@
|
||||
if(IS_CULTIST(M))
|
||||
M.mind.remove_antag_datum(/datum/antagonist/cult)
|
||||
M.Unconscious(100)
|
||||
M.jitteriness = 0
|
||||
M.remove_status_effect(/datum/status_effect/jitter)
|
||||
M.remove_status_effect(/datum/status_effect/speech/stutter)
|
||||
holder.remove_reagent(type, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better??
|
||||
return
|
||||
@@ -1112,7 +1112,7 @@
|
||||
/datum/reagent/bluespace/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
if(current_cycle > 10 && DT_PROB(7.5, delta_time))
|
||||
to_chat(M, span_warning("You feel unstable..."))
|
||||
M.Jitter(2)
|
||||
M.set_timed_status_effect(2 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
current_cycle = 1
|
||||
addtimer(CALLBACK(M, /mob/living/proc/bluespace_shuffle), 30)
|
||||
..()
|
||||
@@ -1252,7 +1252,7 @@
|
||||
addiction_types = list(/datum/addiction/opiods = 10)
|
||||
|
||||
/datum/reagent/impedrezene/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
|
||||
M.jitteriness = max(M.jitteriness - (2.5*delta_time),0)
|
||||
M.adjust_timed_status_effect(-5 SECONDS * delta_time, /datum/status_effect/jitter)
|
||||
if(DT_PROB(55, delta_time))
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2)
|
||||
if(DT_PROB(30, delta_time))
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
/datum/reagent/eigenstate/overdose_start(mob/living/living_mob) //Overdose, makes you teleport randomly
|
||||
to_chat(living_mob, span_userdanger("You feel like your perspective is being ripped apart as you begin flitting in and out of reality!"))
|
||||
living_mob.Jitter(20)
|
||||
living_mob.set_timed_status_effect(40 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
metabolization_rate += 0.5 //So you're not stuck forever teleporting.
|
||||
if(iscarbon(living_mob))
|
||||
var/mob/living/carbon/carbon_mob = living_mob
|
||||
|
||||
@@ -54,16 +54,16 @@
|
||||
|
||||
/datum/addiction/alcohol/withdrawal_stage_1_process(mob/living/carbon/affected_carbon, delta_time)
|
||||
. = ..()
|
||||
affected_carbon.Jitter(5 * delta_time)
|
||||
affected_carbon.set_timed_status_effect(10 SECONDS * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
|
||||
/datum/addiction/alcohol/withdrawal_stage_2_process(mob/living/carbon/affected_carbon, delta_time)
|
||||
. = ..()
|
||||
affected_carbon.Jitter(10 * delta_time)
|
||||
affected_carbon.set_timed_status_effect(20 SECONDS * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
affected_carbon.hallucination = max(5 SECONDS, affected_carbon.hallucination)
|
||||
|
||||
/datum/addiction/alcohol/withdrawal_stage_3_process(mob/living/carbon/affected_carbon, delta_time)
|
||||
. = ..()
|
||||
affected_carbon.Jitter(15 * delta_time)
|
||||
affected_carbon.set_timed_status_effect(30 SECONDS * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
affected_carbon.hallucination = max(5 SECONDS, affected_carbon.hallucination)
|
||||
if(DT_PROB(4, delta_time))
|
||||
if(!HAS_TRAIT(affected_carbon, TRAIT_ANTICONVULSANT))
|
||||
@@ -241,16 +241,16 @@
|
||||
|
||||
/datum/addiction/nicotine/withdrawal_enters_stage_1(mob/living/carbon/affected_carbon, delta_time)
|
||||
. = ..()
|
||||
affected_carbon.Jitter(5 * delta_time)
|
||||
affected_carbon.set_timed_status_effect(10 SECONDS * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
|
||||
/datum/addiction/nicotine/withdrawal_stage_2_process(mob/living/carbon/affected_carbon, delta_time)
|
||||
. = ..()
|
||||
affected_carbon.Jitter(10 * delta_time)
|
||||
affected_carbon.set_timed_status_effect(20 SECONDS * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
if(DT_PROB(10, delta_time))
|
||||
affected_carbon.emote("cough")
|
||||
|
||||
/datum/addiction/nicotine/withdrawal_stage_3_process(mob/living/carbon/affected_carbon, delta_time)
|
||||
. = ..()
|
||||
affected_carbon.Jitter(15 * delta_time)
|
||||
affected_carbon.set_timed_status_effect(30 SECONDS * delta_time, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
if(DT_PROB(15, delta_time))
|
||||
affected_carbon.emote("cough")
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
/datum/status_effect/bonechill/tick()
|
||||
if(prob(50))
|
||||
owner.adjustFireLoss(1)
|
||||
owner.Jitter(3)
|
||||
owner.set_timed_status_effect(6 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
owner.adjust_bodytemperature(-10)
|
||||
if(ishuman(owner))
|
||||
var/mob/living/carbon/human/humi = owner
|
||||
|
||||
@@ -79,10 +79,11 @@
|
||||
owner.stop_sound_channel(CHANNEL_HEARTBEAT)
|
||||
beat = BEAT_NONE
|
||||
|
||||
if(owner.jitteriness)
|
||||
if(owner.has_status_effect(/datum/status_effect/jitter))
|
||||
if(owner.health > HEALTH_THRESHOLD_FULLCRIT && (!beat || beat == BEAT_SLOW))
|
||||
owner.playsound_local(get_turf(owner), fastbeat, 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE)
|
||||
beat = BEAT_FAST
|
||||
|
||||
else if(beat == BEAT_FAST)
|
||||
owner.stop_sound_channel(CHANNEL_HEARTBEAT)
|
||||
beat = BEAT_NONE
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
else if(human.satiety < 0)
|
||||
human.satiety++
|
||||
if(DT_PROB(round(-human.satiety/77), delta_time))
|
||||
human.Jitter(5)
|
||||
human.set_timed_status_effect(10 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
hunger_rate = 3 * HUNGER_FACTOR
|
||||
hunger_rate *= human.physiology.hunger_mod
|
||||
human.adjust_nutrition(-hunger_rate * delta_time)
|
||||
@@ -220,12 +220,12 @@
|
||||
disgusted.adjust_timed_status_effect(2 SECONDS, /datum/status_effect/confusion)
|
||||
if(DT_PROB(5, delta_time) && !disgusted.stat)
|
||||
to_chat(disgusted, span_warning("You feel kind of iffy..."))
|
||||
disgusted.jitteriness = max(disgusted.jitteriness - 3, 0)
|
||||
disgusted.adjust_timed_status_effect(-6 SECONDS, /datum/status_effect/jitter)
|
||||
if(disgust >= DISGUST_LEVEL_VERYGROSS)
|
||||
if(DT_PROB(pukeprob, delta_time)) //iT hAndLeS mOrE ThaN PukInG
|
||||
disgusted.adjust_timed_status_effect(2.5 SECONDS, /datum/status_effect/confusion)
|
||||
disgusted.adjust_timed_status_effect(2 SECONDS, /datum/status_effect/speech/stutter)
|
||||
disgusted.vomit(10, 0, 1, 0, 1, 0)
|
||||
disgusted.vomit(10, distance = 0, vomit_type = NONE)
|
||||
disgusted.set_timed_status_effect(10 SECONDS, /datum/status_effect/dizziness, only_if_higher = TRUE)
|
||||
if(disgust >= DISGUST_LEVEL_DISGUSTED)
|
||||
if(DT_PROB(13, delta_time))
|
||||
|
||||
@@ -399,7 +399,7 @@
|
||||
playsound(get_turf(patient), 'sound/items/ratchet.ogg', 20, TRUE)
|
||||
if(patient.stat >= UNCONSCIOUS || HAS_TRAIT(patient, TRAIT_INCAPACITATED)) //if you're incapacitated (due to paralysis, a stun, being in staminacrit, etc.), critted, unconscious, or dead, it's much easier to properly line up a snip
|
||||
amputation_speed_mod *= 0.5
|
||||
if(patient.stat != DEAD && patient.jitteriness) //jittering will make it harder to secure the shears, even if you can't otherwise move
|
||||
if(patient.stat != DEAD && patient.has_status_effect(/datum/status_effect/jitter)) //jittering will make it harder to secure the shears, even if you can't otherwise move
|
||||
amputation_speed_mod *= 1.5 //15*0.5*1.5=11.25, so staminacritting someone who's jittering (from, say, a stun baton) won't give you enough time to snip their head off, but staminacritting someone who isn't jittering will
|
||||
|
||||
if(do_after(user, toolspeed * 15 SECONDS * amputation_speed_mod, target = patient))
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
M.Stun(200)
|
||||
M.Unconscious(80)
|
||||
else
|
||||
M.Jitter(500)
|
||||
M.set_timed_status_effect(1000 SECONDS, /datum/status_effect/jitter, only_if_higher = TRUE)
|
||||
|
||||
log_message("Honked from [src.name]. HONK!", LOG_MECHA)
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
@@ -1134,6 +1134,7 @@
|
||||
#include "code\datums\status_effects\debuffs\drugginess.dm"
|
||||
#include "code\datums\status_effects\debuffs\drunk.dm"
|
||||
#include "code\datums\status_effects\debuffs\fire_stacks.dm"
|
||||
#include "code\datums\status_effects\debuffs\jitteriness.dm"
|
||||
#include "code\datums\status_effects\debuffs\speech_debuffs.dm"
|
||||
#include "code\datums\status_effects\debuffs\strandling.dm"
|
||||
#include "code\datums\votes\_vote_datum.dm"
|
||||
|
||||
Reference in New Issue
Block a user