mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 03:27:05 +01:00
Stamina Damage Rework (#12591)
This commit is contained in:
committed by
variableundefined
parent
573d390d93
commit
00f5e0613c
@@ -13,7 +13,7 @@
|
||||
desc = "It looks pretty sciency."
|
||||
icon = 'icons/obj/rig_modules.dmi'
|
||||
icon_state = "module"
|
||||
|
||||
|
||||
toolspeed = 1
|
||||
|
||||
var/damage = 0
|
||||
@@ -155,7 +155,7 @@
|
||||
to_chat(usr, "<span class='warning'>The suit is not initialized.</span>")
|
||||
return 0
|
||||
|
||||
if(usr.lying || usr.stat || usr.stunned || usr.paralysis || usr.weakened)
|
||||
if(usr.lying || usr.stat || usr.stunned || usr.paralysis || usr.IsWeakened())
|
||||
to_chat(usr, "<span class='warning'>You cannot use the suit in this state.</span>")
|
||||
return 0
|
||||
|
||||
|
||||
@@ -1052,7 +1052,7 @@
|
||||
if(user.restrained())
|
||||
to_chat(user, "<span class='notice'>You need your hands free for this.</span>")
|
||||
return 0
|
||||
if(user.stat || user.paralysis || user.sleeping || user.lying || user.weakened)
|
||||
if(user.stat || user.paralysis || user.sleeping || user.lying || user.IsWeakened())
|
||||
return 0
|
||||
return 1
|
||||
#undef ONLY_DEPLOY
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
/datum/martial_art/cqc/proc/Slam(mob/living/carbon/human/A, mob/living/carbon/human/D)
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
if(!D.weakened && !D.resting && !D.lying)
|
||||
if(!D.IsWeakened() && !D.resting && !D.lying)
|
||||
D.visible_message("<span class='warning'>[A] slams [D] into the ground!</span>", \
|
||||
"<span class='userdanger'>[A] slams you into the ground!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/slam.ogg', 50, 1, -1)
|
||||
@@ -70,7 +70,7 @@
|
||||
if(!can_use(A))
|
||||
return FALSE
|
||||
var/success = FALSE
|
||||
if(!D.stat || !D.weakened)
|
||||
if(!D.stat || !D.IsWeakened())
|
||||
D.visible_message("<span class='warning'>[A] kicks [D] back!</span>", \
|
||||
"<span class='userdanger'>[A] kicks you back!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1)
|
||||
@@ -79,7 +79,7 @@
|
||||
D.apply_damage(10, BRUTE)
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : Kick", ATKLOG_ALL)
|
||||
success = TRUE
|
||||
if(D.weakened && !D.stat)
|
||||
if(D.IsWeakened() && !D.stat)
|
||||
D.visible_message("<span class='warning'>[A] kicks [D]'s head, knocking [D.p_them()] out!</span>", \
|
||||
"<span class='userdanger'>[A] kicks your head, knocking you out!</span>")
|
||||
playsound(get_turf(A), 'sound/weapons/genhit1.ogg', 50, 1, -1)
|
||||
@@ -164,7 +164,7 @@
|
||||
A.do_attack_animation(D)
|
||||
var/picked_hit_type = pick("CQC'd", "neck chopped", "gut punched", "Big Bossed")
|
||||
var/bonus_damage = 13
|
||||
if(D.weakened || D.resting || D.lying)
|
||||
if(D.IsWeakened() || D.resting || D.lying)
|
||||
bonus_damage += 5
|
||||
picked_hit_type = "stomps on"
|
||||
D.apply_damage(bonus_damage, BRUTE)
|
||||
@@ -175,7 +175,7 @@
|
||||
D.visible_message("<span class='danger'>[A] [picked_hit_type] [D]!</span>", \
|
||||
"<span class='userdanger'>[A] [picked_hit_type] you!</span>")
|
||||
add_attack_logs(A, D, "Melee attacked with martial-art [src] : [picked_hit_type]", ATKLOG_ALL)
|
||||
if(A.resting && !D.stat && !D.weakened)
|
||||
if(A.resting && !D.stat && !D.IsWeakened())
|
||||
D.visible_message("<span class='warning'>[A] leg sweeps [D]!", \
|
||||
"<span class='userdanger'>[A] leg sweeps you!</span>")
|
||||
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
|
||||
@@ -204,7 +204,7 @@
|
||||
restraining = FALSE
|
||||
|
||||
if(prob(65))
|
||||
if(!D.stat || !D.weakened || !restraining)
|
||||
if(!D.stat || !D.IsWeakened() || !restraining)
|
||||
I = D.get_active_hand()
|
||||
D.visible_message("<span class='warning'>[A] strikes [D]'s jaw with their hand!</span>", \
|
||||
"<span class='userdanger'>[A] strikes your jaw, disorienting you!</span>")
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
return 0
|
||||
|
||||
/datum/martial_art/krav_maga/proc/leg_sweep(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
if(D.stat || D.weakened)
|
||||
if(D.stat || D.IsWeakened())
|
||||
return 0
|
||||
D.visible_message("<span class='warning'>[A] leg sweeps [D]!</span>", \
|
||||
"<span class='userdanger'>[A] leg sweeps you!</span>")
|
||||
@@ -111,7 +111,7 @@ datum/martial_art/krav_maga/grab_act(var/mob/living/carbon/human/A, var/mob/livi
|
||||
add_attack_logs(A, D, "Melee attacked with [src]")
|
||||
var/picked_hit_type = pick("punches", "kicks")
|
||||
var/bonus_damage = 10
|
||||
if(D.weakened || D.resting || D.lying)
|
||||
if(D.IsWeakened() || D.resting || D.lying)
|
||||
bonus_damage += 5
|
||||
picked_hit_type = "stomps on"
|
||||
D.apply_damage(bonus_damage, BRUTE)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
return 0
|
||||
|
||||
/datum/martial_art/mimejutsu/proc/mimeChuck(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
if(!D.stat && !D.stunned && !D.weakened)
|
||||
if(!D.stat && !D.stunned && !D.IsWeakened())
|
||||
var/damage = rand(5, 8) + A.dna.species.punchdamagelow
|
||||
if(!damage)
|
||||
playsound(D.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
@@ -54,7 +54,7 @@
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/mimejutsu/proc/mimePalm(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
if(!D.stat && !D.stunned && !D.weakened)
|
||||
if(!D.stat && !D.stunned && !D.IsWeakened())
|
||||
D.visible_message("<span class='danger'>[A] has barely touched [D] with [A.p_their()] palm!</span>", \
|
||||
"<span class='userdanger'>[A] hovers [A.p_their()] palm over your face!</span>")
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
return 0
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/proc/wristWrench(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
if(!D.stat && !D.stunned && !D.weakened)
|
||||
if(!D.stat && !D.stunned && !D.IsWeakened())
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
D.visible_message("<span class='warning'>[A] grabs [D]'s wrist and wrenches it sideways!</span>", \
|
||||
"<span class='userdanger'>[A] grabs your wrist and violently wrenches it to the side!</span>")
|
||||
@@ -50,7 +50,7 @@
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/proc/backKick(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
if(A.dir == D.dir && !D.stat && !D.weakened)
|
||||
if(A.dir == D.dir && !D.stat && !D.IsWeakened())
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
|
||||
D.visible_message("<span class='warning'>[A] kicks [D] in the back!</span>", \
|
||||
"<span class='userdanger'>[A] kicks you in the back, making you stumble and fall!</span>")
|
||||
@@ -63,7 +63,7 @@
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/proc/kneeStomach(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
if(!D.stat && !D.weakened)
|
||||
if(!D.stat && !D.IsWeakened())
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
|
||||
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>")
|
||||
@@ -77,7 +77,7 @@
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/proc/headKick(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
if(!D.stat && !D.weakened)
|
||||
if(!D.stat && !D.IsWeakened())
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_KICK)
|
||||
D.visible_message("<span class='warning'>[A] kicks [D] in the head!</span>", \
|
||||
"<span class='userdanger'>[A] kicks you in the jaw!</span>")
|
||||
@@ -91,7 +91,7 @@
|
||||
return basic_hit(A,D)
|
||||
|
||||
/datum/martial_art/the_sleeping_carp/proc/elbowDrop(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
|
||||
if(D.weakened || D.resting || D.stat)
|
||||
if(D.IsWeakened() || D.resting || D.stat)
|
||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||
D.visible_message("<span class='warning'>[A] elbow drops [D]!</span>", \
|
||||
"<span class='userdanger'>[A] piledrives you with [A.p_their()] elbow!</span>")
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
icon_state = "alien[caste]_dead"
|
||||
pixel_y = 0
|
||||
|
||||
else if(stat == UNCONSCIOUS || weakened)
|
||||
else if(stat == UNCONSCIOUS || IsWeakened())
|
||||
icon_state = "alien[caste]_unconscious"
|
||||
pixel_y = 0
|
||||
else if(leap_on_click)
|
||||
|
||||
@@ -383,7 +383,7 @@
|
||||
message = "<B>[src]</B> flips in [M]'s general direction."
|
||||
SpinAnimation(5,1)
|
||||
else
|
||||
if(lying || weakened)
|
||||
if(lying || IsWeakened())
|
||||
message = "<B>[src]</B> flops and flails around on the floor."
|
||||
else
|
||||
var/obj/item/grab/G
|
||||
|
||||
@@ -633,7 +633,7 @@ emp_act
|
||||
if("brute")
|
||||
if(M.force > 35) // durand and other heavy mechas
|
||||
Paralyse(1)
|
||||
else if(M.force > 20 && !weakened) // lightweight mechas like gygax
|
||||
else if(M.force > 20 && !IsWeakened()) // lightweight mechas like gygax
|
||||
Weaken(2)
|
||||
update |= affecting.receive_damage(dmg, 0)
|
||||
playsound(src, 'sound/weapons/punch4.ogg', 50, TRUE)
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
if(H.r_hand && (H.r_hand.flags & HANDSLOW))
|
||||
. += H.r_hand.slowdown
|
||||
|
||||
var/health_deficiency = (H.maxHealth - H.health + H.staminaloss)
|
||||
var/health_deficiency = max(H.maxHealth - H.health, H.staminaloss)
|
||||
var/hungry = (500 - H.nutrition)/5 // So overeat would be 100 and default level would be 80
|
||||
if(H.reagents)
|
||||
for(var/datum/reagent/R in H.reagents.reagent_list)
|
||||
@@ -751,7 +751,7 @@
|
||||
return FALSE //Unsupported slot
|
||||
|
||||
/datum/species/proc/get_perceived_trauma(mob/living/carbon/human/H)
|
||||
return H.health - H.getStaminaLoss()
|
||||
return min(H.health, H.maxHealth - H.getStaminaLoss())
|
||||
|
||||
/datum/species/proc/handle_hud_icons(mob/living/carbon/human/H)
|
||||
if(!H.client)
|
||||
|
||||
@@ -258,8 +258,10 @@
|
||||
//this updates all special effects: stunned, sleeping, weakened, druggy, stuttering, etc..
|
||||
/mob/living/carbon/handle_status_effects()
|
||||
..()
|
||||
|
||||
setStaminaLoss(max((staminaloss - 3), 0))
|
||||
if(stam_regen_start_time <= world.time)
|
||||
if(stam_paralyzed)
|
||||
update_stamina()
|
||||
setStaminaLoss(0, FALSE)
|
||||
|
||||
var/restingpwr = 1 + 4 * resting
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/mob/living/carbon/IsWeakened(include_stamcrit = TRUE)
|
||||
return ..() || (include_stamcrit && stam_paralyzed)
|
||||
|
||||
/mob/living/carbon/proc/enter_stamcrit()
|
||||
if(!(status_flags & CANWEAKEN))
|
||||
return
|
||||
if(absorb_stun(0)) //continuous effect, so we don't want it to increment the stuns absorbed.
|
||||
return
|
||||
if(!IsWeakened())
|
||||
to_chat(src, "<span class='notice'>You're too exhausted to keep going...</span>")
|
||||
var/prev = stam_paralyzed
|
||||
stam_paralyzed = TRUE
|
||||
update_canmove()
|
||||
if(!prev && getStaminaLoss() < 120) // Puts you a little further into the initial stamcrit, makes stamcrit harder to outright counter with chems.
|
||||
adjustStaminaLoss(30, FALSE)
|
||||
@@ -18,15 +18,13 @@
|
||||
create_debug_log("woke up, trigger reason: [reason]")
|
||||
|
||||
/mob/living/carbon/update_stamina()
|
||||
..()
|
||||
if(staminaloss)
|
||||
var/total_health = (health - staminaloss)
|
||||
if(total_health <= HEALTH_THRESHOLD_CRIT && !stat)
|
||||
to_chat(src, "<span class='notice'>You're too exhausted to keep going...</span>")
|
||||
Weaken(5)
|
||||
setStaminaLoss(health - 2)
|
||||
handle_hud_icons_health()
|
||||
return
|
||||
var/stam = getStaminaLoss()
|
||||
if(stam > DAMAGE_PRECISION && (maxHealth - stam) <= HEALTH_THRESHOLD_CRIT && !stat)
|
||||
enter_stamcrit()
|
||||
else if(stam_paralyzed)
|
||||
stam_paralyzed = FALSE
|
||||
update_canmove()
|
||||
handle_hud_icons_health()
|
||||
|
||||
/mob/living/carbon/can_hear()
|
||||
. = FALSE
|
||||
|
||||
@@ -260,28 +260,30 @@
|
||||
if(status_flags & GODMODE)
|
||||
return FALSE
|
||||
var/old_stamloss = staminaloss
|
||||
staminaloss = max(staminaloss + amount, 0)
|
||||
staminaloss = min(max(staminaloss + amount, 0), 120)
|
||||
if(old_stamloss == staminaloss)
|
||||
updating = FALSE
|
||||
. = STATUS_UPDATE_NONE
|
||||
else
|
||||
. = STATUS_UPDATE_STAMINA
|
||||
if(amount > 0)
|
||||
stam_regen_start_time = world.time + STAMINA_REGEN_BLOCK_TIME
|
||||
if(updating)
|
||||
handle_hud_icons_health()
|
||||
update_stamina()
|
||||
|
||||
/mob/living/proc/setStaminaLoss(amount, updating = TRUE)
|
||||
if(status_flags & GODMODE)
|
||||
return FALSE
|
||||
var/old_stamloss = staminaloss
|
||||
staminaloss = amount
|
||||
staminaloss = min(max(amount, 0), 120)
|
||||
if(old_stamloss == staminaloss)
|
||||
updating = FALSE
|
||||
. = STATUS_UPDATE_NONE
|
||||
else
|
||||
. = STATUS_UPDATE_STAMINA
|
||||
if(amount > 0)
|
||||
stam_regen_start_time = world.time + STAMINA_REGEN_BLOCK_TIME
|
||||
if(updating)
|
||||
handle_hud_icons_health()
|
||||
update_stamina()
|
||||
|
||||
/mob/living/proc/getMaxHealth()
|
||||
|
||||
@@ -69,3 +69,5 @@
|
||||
var/deathgasp_on_death = FALSE
|
||||
|
||||
var/stun_absorption = null //converted to a list of stun absorption sources this mob has when one is added
|
||||
var/stam_regen_start_time = 0 //used to halt stamina regen temporarily
|
||||
var/stam_paralyzed = FALSE //knocks you down
|
||||
@@ -318,7 +318,7 @@
|
||||
set category = "pAI Commands"
|
||||
set name = "Unfold Chassis"
|
||||
|
||||
if(stat || sleeping || paralysis || weakened)
|
||||
if(stat || sleeping || paralysis || IsWeakened())
|
||||
return
|
||||
|
||||
if(loc != card)
|
||||
@@ -353,7 +353,7 @@
|
||||
set category = "pAI Commands"
|
||||
set name = "Collapse Chassis"
|
||||
|
||||
if(stat || sleeping || paralysis || weakened)
|
||||
if(stat || sleeping || paralysis || IsWeakened())
|
||||
return
|
||||
|
||||
if(loc == card)
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
weaponlock_time = 120
|
||||
|
||||
/mob/living/silicon/robot/update_canmove(delay_action_updates = 0)
|
||||
if(paralysis || stunned || weakened || buckled || lockcharge || stat)
|
||||
if(paralysis || stunned || IsWeakened() || buckled || lockcharge || stat)
|
||||
canmove = 0
|
||||
else
|
||||
canmove = 1
|
||||
|
||||
@@ -906,7 +906,7 @@ var/list/robot_verbs_default = list(
|
||||
/mob/living/silicon/robot/update_icons()
|
||||
|
||||
overlays.Cut()
|
||||
if(stat != DEAD && !(paralysis || stunned || weakened || low_power_mode)) //Not dead, not stunned.
|
||||
if(stat != DEAD && !(paralysis || stunned || IsWeakened() || low_power_mode)) //Not dead, not stunned.
|
||||
if(custom_panel in custom_eye_names)
|
||||
overlays += "eyes-[custom_panel]"
|
||||
else
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// No args for restraints because robots don't have those
|
||||
/mob/living/silicon/robot/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, ignore_lying = FALSE)
|
||||
if(stat || lockcharge || weakened || stunned || paralysis || !is_component_functioning("actuator"))
|
||||
if(stat || lockcharge || IsWeakened() || stunned || paralysis || !is_component_functioning("actuator"))
|
||||
return TRUE
|
||||
|
||||
/mob/living/silicon/robot/has_vision(information_only = FALSE)
|
||||
@@ -14,7 +14,7 @@
|
||||
death()
|
||||
create_debug_log("died of damage, trigger reason: [reason]")
|
||||
return
|
||||
if(!is_component_functioning("actuator") || !is_component_functioning("power cell") || paralysis || sleeping || resting || stunned || weakened || getOxyLoss() > maxHealth * 0.5)
|
||||
if(!is_component_functioning("actuator") || !is_component_functioning("power cell") || paralysis || sleeping || resting || stunned || IsWeakened() || getOxyLoss() > maxHealth * 0.5)
|
||||
if(stat == CONSCIOUS)
|
||||
KnockOut()
|
||||
create_debug_log("fell unconscious, trigger reason: [reason]")
|
||||
|
||||
@@ -500,7 +500,7 @@
|
||||
. |= pcollar.GetAccess()
|
||||
|
||||
/mob/living/simple_animal/update_canmove(delay_action_updates = 0)
|
||||
if(paralysis || stunned || weakened || stat || resting)
|
||||
if(paralysis || stunned || IsWeakened() || stat || resting)
|
||||
drop_r_hand()
|
||||
drop_l_hand()
|
||||
canmove = 0
|
||||
|
||||
@@ -62,11 +62,11 @@
|
||||
|
||||
// Whether the mob is capable of standing or not
|
||||
/mob/living/proc/can_stand()
|
||||
return !(weakened || paralysis || stat || (status_flags & FAKEDEATH))
|
||||
return !(IsWeakened() || paralysis || stat || (status_flags & FAKEDEATH))
|
||||
|
||||
// Whether the mob is capable of actions or not
|
||||
/mob/living/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, ignore_lying = FALSE)
|
||||
if(stat || paralysis || stunned || weakened || (!ignore_restraints && restrained()) || (!ignore_lying && lying))
|
||||
if(stat || paralysis || stunned || IsWeakened() || (!ignore_restraints && restrained()) || (!ignore_lying && lying))
|
||||
return TRUE
|
||||
|
||||
// wonderful proc names, I know - used to check whether the blur overlay
|
||||
|
||||
@@ -190,6 +190,9 @@
|
||||
return
|
||||
|
||||
|
||||
/mob/proc/IsWeakened()
|
||||
return weakened
|
||||
|
||||
/mob/proc/Weaken()
|
||||
return
|
||||
|
||||
|
||||
@@ -317,7 +317,7 @@
|
||||
src.add_fingerprint(user)
|
||||
if(target == user && !user.incapacitated())
|
||||
visible_message("<span class='warning'>[usr] jumps onto [src]!</span>")
|
||||
else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
|
||||
else if(target != user && !user.restrained() && !user.stat && !user.IsWeakened() && !user.stunned && !user.paralysis)
|
||||
if(target.anchored) return
|
||||
if(!ishuman(user)) return
|
||||
visible_message("<span class='warning'>[usr] drags [target.name] onto [src]!</span>")
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
/obj/item/projectile/beam/disabler
|
||||
name = "disabler beam"
|
||||
icon_state = "omnilaser"
|
||||
damage = 36
|
||||
damage = 30
|
||||
damage_type = STAMINA
|
||||
flag = "energy"
|
||||
hitsound = 'sound/weapons/tap.ogg'
|
||||
|
||||
@@ -314,7 +314,6 @@ var/const/INGEST = 2
|
||||
if(update_flags & STATUS_UPDATE_CANMOVE)
|
||||
M.update_canmove()
|
||||
if(update_flags & STATUS_UPDATE_STAMINA)
|
||||
M.handle_hud_icons_health()
|
||||
M.update_stamina()
|
||||
if(update_flags & STATUS_UPDATE_BLIND)
|
||||
M.update_blind_effects()
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
if(method == TOUCH)
|
||||
volume = ..()
|
||||
M.apply_damage(0.6*volume, BRUTE)
|
||||
M.adjustStaminaLoss(0.4*volume)
|
||||
M.adjustStaminaLoss(volume)
|
||||
if(iscarbon(M))
|
||||
M.emote("scream")
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
if(method == TOUCH)
|
||||
volume = ..()
|
||||
M.apply_damage(0.4*volume, BURN)
|
||||
M.adjustStaminaLoss(0.4*volume)
|
||||
M.adjustStaminaLoss(volume)
|
||||
if(M.reagents)
|
||||
M.reagents.add_reagent("frostoil", 0.4*volume)
|
||||
|
||||
|
||||
@@ -189,20 +189,20 @@
|
||||
var/target_loc = target.loc
|
||||
var/msg
|
||||
for(var/mob/V in viewers(usr))
|
||||
if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
|
||||
if(target == user && !user.stat && !user.IsWeakened() && !user.stunned && !user.paralysis)
|
||||
V.show_message("[usr] starts climbing into the disposal.", 3)
|
||||
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
|
||||
if(target != user && !user.restrained() && !user.stat && !user.IsWeakened() && !user.stunned && !user.paralysis)
|
||||
if(target.anchored) return
|
||||
V.show_message("[usr] starts stuffing [target.name] into the disposal.", 3)
|
||||
if(!do_after(usr, 20, target = target))
|
||||
return
|
||||
if(target_loc != target.loc)
|
||||
return
|
||||
if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) // if drop self, then climbed in
|
||||
if(target == user && !user.stat && !user.IsWeakened() && !user.stunned && !user.paralysis) // if drop self, then climbed in
|
||||
// must be awake, not stunned or whatever
|
||||
msg = "[user.name] climbs into the [src]."
|
||||
to_chat(user, "You climb into the [src].")
|
||||
else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
|
||||
else if(target != user && !user.restrained() && !user.stat && !user.IsWeakened() && !user.stunned && !user.paralysis)
|
||||
msg = "[user.name] stuffs [target.name] into the [src]!"
|
||||
to_chat(user, "You stuff [target.name] into the [src]!")
|
||||
|
||||
|
||||
@@ -144,9 +144,9 @@
|
||||
/proc/can_operate(mob/living/carbon/M)
|
||||
if(locate(/obj/machinery/optable, M.loc) && (M.lying || M.resting))
|
||||
return TRUE
|
||||
if(locate(/obj/structure/bed, M.loc) && (M.buckled || M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat))
|
||||
if(locate(/obj/structure/bed, M.loc) && (M.buckled || M.lying || M.IsWeakened() || M.stunned || M.paralysis || M.sleeping || M.stat))
|
||||
return TRUE
|
||||
if(locate(/obj/structure/table, M.loc) && (M.lying || M.weakened || M.stunned || M.paralysis || M.sleeping || M.stat))
|
||||
if(locate(/obj/structure/table, M.loc) && (M.lying || M.IsWeakened() || M.stunned || M.paralysis || M.sleeping || M.stat))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
Reference in New Issue
Block a user