mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 01:49:19 +00:00
([\W\.])Knockdown\(
This commit is contained in:
@@ -136,7 +136,7 @@
|
|||||||
fall_chance += 2
|
fall_chance += 2
|
||||||
if(prob(fall_chance) && !owner.lying && !owner.buckled)
|
if(prob(fall_chance) && !owner.lying && !owner.buckled)
|
||||||
to_chat(owner, "<span class='warning'>Your leg gives out!</span>")
|
to_chat(owner, "<span class='warning'>Your leg gives out!</span>")
|
||||||
owner.Knockdown(35)
|
owner.DefaultCombatKnockdown(35)
|
||||||
|
|
||||||
else if(owner.get_active_held_item())
|
else if(owner.get_active_held_item())
|
||||||
var/drop_chance = 1
|
var/drop_chance = 1
|
||||||
|
|||||||
@@ -59,4 +59,4 @@
|
|||||||
"<span class='userdanger'>You slide on [A]!</span>")
|
"<span class='userdanger'>You slide on [A]!</span>")
|
||||||
|
|
||||||
cooldown = world.time
|
cooldown = world.time
|
||||||
H.Knockdown(60)
|
H.DefaultCombatKnockdown(60)
|
||||||
|
|||||||
@@ -100,7 +100,7 @@
|
|||||||
AM.forceMove(T)
|
AM.forceMove(T)
|
||||||
if(isliving(AM))
|
if(isliving(AM))
|
||||||
var/mob/living/L = AM
|
var/mob/living/L = AM
|
||||||
L.Knockdown(100)
|
L.DefaultCombatKnockdown(100)
|
||||||
L.adjustBruteLoss(30)
|
L.adjustBruteLoss(30)
|
||||||
falling_atoms -= AM
|
falling_atoms -= AM
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
msg += " and knocks [target] [target_buckled? "off of [target.buckled]" : "down"]"
|
msg += " and knocks [target] [target_buckled? "off of [target.buckled]" : "down"]"
|
||||||
if(target_buckled)
|
if(target_buckled)
|
||||||
target.buckled.unbuckle_mob(target)
|
target.buckled.unbuckle_mob(target)
|
||||||
target.Knockdown(knockdown_time)
|
target.DefaultCombatKnockdown(knockdown_time)
|
||||||
if(length(msg))
|
if(length(msg))
|
||||||
user.visible_message("<span class='danger'>[msg]!</span>")
|
user.visible_message("<span class='danger'>[msg]!</span>")
|
||||||
|
|
||||||
|
|||||||
@@ -240,7 +240,7 @@
|
|||||||
/datum/component/riding/human/force_dismount(mob/living/user)
|
/datum/component/riding/human/force_dismount(mob/living/user)
|
||||||
var/atom/movable/AM = parent
|
var/atom/movable/AM = parent
|
||||||
AM.unbuckle_mob(user)
|
AM.unbuckle_mob(user)
|
||||||
user.Knockdown(60)
|
user.DefaultCombatKnockdown(60)
|
||||||
user.visible_message("<span class='warning'>[AM] pushes [user] off of [AM.p_them()]!</span>")
|
user.visible_message("<span class='warning'>[AM] pushes [user] off of [AM.p_them()]!</span>")
|
||||||
|
|
||||||
/datum/component/riding/cyborg
|
/datum/component/riding/cyborg
|
||||||
@@ -298,7 +298,7 @@
|
|||||||
M.Move(targetm)
|
M.Move(targetm)
|
||||||
M.visible_message("<span class='warning'>[M] is thrown clear of [AM]!</span>")
|
M.visible_message("<span class='warning'>[M] is thrown clear of [AM]!</span>")
|
||||||
M.throw_at(target, 14, 5, AM)
|
M.throw_at(target, 14, 5, AM)
|
||||||
M.Knockdown(60)
|
M.DefaultCombatKnockdown(60)
|
||||||
|
|
||||||
/datum/component/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1, mob/living/riding_target_override)
|
/datum/component/riding/proc/equip_buckle_inhands(mob/living/carbon/human/user, amount_required = 1, mob/living/riding_target_override)
|
||||||
var/list/equipped
|
var/list/equipped
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
return //undeads are unaffected by the spook-pocalypse.
|
return //undeads are unaffected by the spook-pocalypse.
|
||||||
if(istype(H.dna.species, /datum/species/zombie))
|
if(istype(H.dna.species, /datum/species/zombie))
|
||||||
H.adjustStaminaLoss(25)
|
H.adjustStaminaLoss(25)
|
||||||
H.Knockdown(15) //zombies can't resist the doot
|
H.DefaultCombatKnockdown(15) //zombies can't resist the doot
|
||||||
C.Jitter(35)
|
C.Jitter(35)
|
||||||
C.stuttering = 20
|
C.stuttering = 20
|
||||||
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)))
|
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)))
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
/datum/component/spooky/proc/spectral_change(mob/living/carbon/human/H, mob/user)
|
/datum/component/spooky/proc/spectral_change(mob/living/carbon/human/H, mob/user)
|
||||||
if((H.getStaminaLoss() > 95) && (!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)))
|
if((H.getStaminaLoss() > 95) && (!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)))
|
||||||
H.Knockdown(20)
|
H.DefaultCombatKnockdown(20)
|
||||||
H.set_species(/datum/species/skeleton)
|
H.set_species(/datum/species/skeleton)
|
||||||
H.visible_message("<span class='warning'>[H] has given up on life as a mortal.</span>")
|
H.visible_message("<span class='warning'>[H] has given up on life as a mortal.</span>")
|
||||||
var/T = get_turf(H)
|
var/T = get_turf(H)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
var/turf/loccheck = get_turf(A)
|
var/turf/loccheck = get_turf(A)
|
||||||
if(is_reebe(loccheck.z))
|
if(is_reebe(loccheck.z))
|
||||||
user.visible_message("<span class='warning'>An unseen force knocks [user] to the ground!</span>", "<span class='big_brass'>\"I think not!\"</span>")
|
user.visible_message("<span class='warning'>An unseen force knocks [user] to the ground!</span>", "<span class='big_brass'>\"I think not!\"</span>")
|
||||||
user.Knockdown(60)
|
user.DefaultCombatKnockdown(60)
|
||||||
return
|
return
|
||||||
if(istype(loccheck.loc, /area/fabric_of_reality))
|
if(istype(loccheck.loc, /area/fabric_of_reality))
|
||||||
to_chat(user, "<span class='danger'>You can't do that here!</span>")
|
to_chat(user, "<span class='danger'>You can't do that here!</span>")
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
for(var/mob/living/M in T)
|
for(var/mob/living/M in T)
|
||||||
if(M.movement_type & FLYING)
|
if(M.movement_type & FLYING)
|
||||||
M.visible_message("<span class='danger'>The bluespace collapse crushes the air towards it, pulling [M] towards the ground...</span>")
|
M.visible_message("<span class='danger'>The bluespace collapse crushes the air towards it, pulling [M] towards the ground...</span>")
|
||||||
M.Knockdown(5, TRUE, TRUE) //Overrides stun absorbs.
|
M.DefaultCombatKnockdown(5, TRUE, TRUE) //Overrides stun absorbs.
|
||||||
T.TerraformTurf(/turf/open/chasm/magic, /turf/open/chasm/magic)
|
T.TerraformTurf(/turf/open/chasm/magic, /turf/open/chasm/magic)
|
||||||
for (var/obj/structure/ladder/unbreakable/binary/ladder in GLOB.ladders)
|
for (var/obj/structure/ladder/unbreakable/binary/ladder in GLOB.ladders)
|
||||||
ladder.ActivateAlmonds()
|
ladder.ActivateAlmonds()
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
if(prob(25))
|
if(prob(25))
|
||||||
affected_mob.vomit(95)
|
affected_mob.vomit(95)
|
||||||
H.emote("cough")
|
H.emote("cough")
|
||||||
H.Knockdown(40)
|
H.DefaultCombatKnockdown(40)
|
||||||
H.losebreath += 4
|
H.losebreath += 4
|
||||||
if(prob(3))
|
if(prob(3))
|
||||||
to_chat(H, "<span class='danger'>You feel very weak and dizzy...</span>")
|
to_chat(H, "<span class='danger'>You feel very weak and dizzy...</span>")
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
"<span class='userdanger'>[A] slams you 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)
|
playsound(get_turf(A), 'sound/weapons/slam.ogg', 50, 1, -1)
|
||||||
D.apply_damage(10, BRUTE)
|
D.apply_damage(10, BRUTE)
|
||||||
D.Knockdown(120)
|
D.DefaultCombatKnockdown(120)
|
||||||
log_combat(A, D, "slammed (CQC)")
|
log_combat(A, D, "slammed (CQC)")
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
"<span class='userdanger'>[A] leg sweeps you!</span>")
|
"<span class='userdanger'>[A] leg sweeps you!</span>")
|
||||||
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
|
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
|
||||||
D.apply_damage(10, BRUTE)
|
D.apply_damage(10, BRUTE)
|
||||||
D.Knockdown(60)
|
D.DefaultCombatKnockdown(60)
|
||||||
log_combat(A, D, "sweeped (CQC)")
|
log_combat(A, D, "sweeped (CQC)")
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
|
|||||||
@@ -102,7 +102,7 @@
|
|||||||
"<span class='userdanger'>[A] leg sweeps you!</span>")
|
"<span class='userdanger'>[A] leg sweeps you!</span>")
|
||||||
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
|
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
|
||||||
D.apply_damage(5, BRUTE)
|
D.apply_damage(5, BRUTE)
|
||||||
D.Knockdown(40, override_hardstun = 0.01, override_stamdmg = 25)
|
D.DefaultCombatKnockdown(40, override_hardstun = 0.01, override_stamdmg = 25)
|
||||||
log_combat(A, D, "leg sweeped")
|
log_combat(A, D, "leg sweeped")
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
playsound(D, 'sound/effects/meteorimpact.ogg', 25, 1, -1)
|
playsound(D, 'sound/effects/meteorimpact.ogg', 25, 1, -1)
|
||||||
var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
|
var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
|
||||||
D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time.
|
D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time.
|
||||||
D.Knockdown(20)
|
D.DefaultCombatKnockdown(20)
|
||||||
if(atk_verb)
|
if(atk_verb)
|
||||||
log_combat(A, D, "[atk_verb] (Mushroom Punch)")
|
log_combat(A, D, "[atk_verb] (Mushroom Punch)")
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
if(!istype(D.head,/obj/item/clothing/head/helmet/) && !istype(D.head,/obj/item/clothing/head/hardhat))
|
if(!istype(D.head,/obj/item/clothing/head/helmet/) && !istype(D.head,/obj/item/clothing/head/hardhat))
|
||||||
D.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5)
|
D.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5)
|
||||||
A.Stun(rand(10,45))
|
A.Stun(rand(10,45))
|
||||||
D.Knockdown(rand(5,30))//CIT CHANGE - makes stuns from martial arts always use Knockdown instead of Stun for the sake of consistency
|
D.DefaultCombatKnockdown(rand(5,30))//CIT CHANGE - makes stuns from martial arts always use Knockdown instead of Stun for the sake of consistency
|
||||||
if(5,6)
|
if(5,6)
|
||||||
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
A.do_attack_animation(D, ATTACK_EFFECT_PUNCH)
|
||||||
atk_verb = pick("punches", "kicks", "hits", "slams into")
|
atk_verb = pick("punches", "kicks", "hits", "slams into")
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
playsound(get_turf(D), 'sound/effects/meteorimpact.ogg', 25, 1, -1)
|
playsound(get_turf(D), 'sound/effects/meteorimpact.ogg', 25, 1, -1)
|
||||||
var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
|
var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
|
||||||
D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time.
|
D.throw_at(throwtarget, 4, 2, A)//So stuff gets tossed around at the same time.
|
||||||
D.Knockdown(60)
|
D.DefaultCombatKnockdown(60)
|
||||||
if(7,8)
|
if(7,8)
|
||||||
basic_hit(A,D)
|
basic_hit(A,D)
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@
|
|||||||
"<span class='userdanger'>[A] kicks you in the side, forcing you to step away!</span>")
|
"<span class='userdanger'>[A] kicks you in the side, forcing you to step away!</span>")
|
||||||
playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||||
D.apply_damage(5, BRUTE, BODY_ZONE_CHEST)
|
D.apply_damage(5, BRUTE, BODY_ZONE_CHEST)
|
||||||
D.Knockdown(60)
|
D.DefaultCombatKnockdown(60)
|
||||||
var/L = H
|
var/L = H
|
||||||
for(var/obj/i in H.contents)
|
for(var/obj/i in H.contents)
|
||||||
if(!istype(i,/mob) && i.density == 1)
|
if(!istype(i,/mob) && i.density == 1)
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
D.apply_damage(10, BRUTE, BODY_ZONE_CHEST)
|
D.apply_damage(10, BRUTE, BODY_ZONE_CHEST)
|
||||||
D.apply_damage(30, BRUTE, BODY_ZONE_HEAD)
|
D.apply_damage(30, BRUTE, BODY_ZONE_HEAD)
|
||||||
D.Sleeping(60)
|
D.Sleeping(60)
|
||||||
D.Knockdown(300)
|
D.DefaultCombatKnockdown(300)
|
||||||
D.forceMove(L)
|
D.forceMove(L)
|
||||||
log_combat(A, D, "shoulder flipped (Rising Bass)")
|
log_combat(A, D, "shoulder flipped (Rising Bass)")
|
||||||
return 1
|
return 1
|
||||||
@@ -83,7 +83,7 @@
|
|||||||
var/atom/F = get_edge_target_turf(D, get_dir(A, get_step_away(D, A)))
|
var/atom/F = get_edge_target_turf(D, get_dir(A, get_step_away(D, A)))
|
||||||
D.throw_at(F, 10, 1)
|
D.throw_at(F, 10, 1)
|
||||||
D.apply_damage(10, BRUTE, BODY_ZONE_CHEST)
|
D.apply_damage(10, BRUTE, BODY_ZONE_CHEST)
|
||||||
D.Knockdown(90)
|
D.DefaultCombatKnockdown(90)
|
||||||
log_combat(A, D, "repulse punched (Rising Bass)")
|
log_combat(A, D, "repulse punched (Rising Bass)")
|
||||||
return 1
|
return 1
|
||||||
return basic_hit(A,D)
|
return basic_hit(A,D)
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
D.emote("scream")
|
D.emote("scream")
|
||||||
D.dropItemToGround(D.get_active_held_item())
|
D.dropItemToGround(D.get_active_held_item())
|
||||||
D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
||||||
D.Knockdown(60)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun()
|
D.DefaultCombatKnockdown(60)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun()
|
||||||
return TRUE
|
return TRUE
|
||||||
return basic_hit(A,D)
|
return basic_hit(A,D)
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
D.visible_message("<span class='warning'>[A] kicks [D] in the back!</span>", \
|
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>")
|
"<span class='userdanger'>[A] kicks you in the back, making you stumble and fall!</span>")
|
||||||
step_to(D,get_step(D,D.dir),1)
|
step_to(D,get_step(D,D.dir),1)
|
||||||
D.Knockdown(80)
|
D.DefaultCombatKnockdown(80)
|
||||||
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1)
|
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1)
|
||||||
return TRUE
|
return TRUE
|
||||||
else
|
else
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
"<span class='userdanger'>[A] winds you with a knee in the stomach!</span>")
|
"<span class='userdanger'>[A] winds you with a knee in the stomach!</span>")
|
||||||
D.audible_message("<b>[D]</b> gags!")
|
D.audible_message("<b>[D]</b> gags!")
|
||||||
D.losebreath += 3
|
D.losebreath += 3
|
||||||
D.Knockdown(40)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun()
|
D.DefaultCombatKnockdown(40)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun()
|
||||||
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1)
|
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1)
|
||||||
return TRUE
|
return TRUE
|
||||||
return basic_hit(A,D)
|
return basic_hit(A,D)
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
D.apply_damage(20, BRUTE, BODY_ZONE_HEAD)
|
D.apply_damage(20, BRUTE, BODY_ZONE_HEAD)
|
||||||
D.drop_all_held_items()
|
D.drop_all_held_items()
|
||||||
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1)
|
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1)
|
||||||
D.Knockdown(80)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun()
|
D.DefaultCombatKnockdown(80)//CIT CHANGE - makes sleepingcarp use knockdown() for its stuns instead of stun()
|
||||||
return TRUE
|
return TRUE
|
||||||
return basic_hit(A,D)
|
return basic_hit(A,D)
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@
|
|||||||
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, 1, -1)
|
playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, 1, -1)
|
||||||
if(prob(D.getBruteLoss()) && !D.lying)
|
if(prob(D.getBruteLoss()) && !D.lying)
|
||||||
D.visible_message("<span class='warning'>[D] stumbles and falls!</span>", "<span class='userdanger'>The blow sends you to the ground!</span>")
|
D.visible_message("<span class='warning'>[D] stumbles and falls!</span>", "<span class='userdanger'>The blow sends you to the ground!</span>")
|
||||||
D.Knockdown(80)
|
D.DefaultCombatKnockdown(80)
|
||||||
log_combat(A, D, "[atk_verb] (Sleeping Carp)")
|
log_combat(A, D, "[atk_verb] (Sleeping Carp)")
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
add_fingerprint(user)
|
add_fingerprint(user)
|
||||||
if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
|
if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
|
||||||
to_chat(user, "<span class ='warning'>You club yourself over the head with [src].</span>")
|
to_chat(user, "<span class ='warning'>You club yourself over the head with [src].</span>")
|
||||||
user.Knockdown(60)
|
user.DefaultCombatKnockdown(60)
|
||||||
if(ishuman(user))
|
if(ishuman(user))
|
||||||
var/mob/living/carbon/human/H = user
|
var/mob/living/carbon/human/H = user
|
||||||
H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD)
|
H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD)
|
||||||
@@ -226,7 +226,7 @@
|
|||||||
if(prob(10))
|
if(prob(10))
|
||||||
H.visible_message("<span class='warning'>[H] collapses!</span>", \
|
H.visible_message("<span class='warning'>[H] collapses!</span>", \
|
||||||
"<span class='userdanger'>Your legs give out!</span>")
|
"<span class='userdanger'>Your legs give out!</span>")
|
||||||
H.Knockdown(80)
|
H.DefaultCombatKnockdown(80)
|
||||||
if(H.staminaloss && !H.IsSleeping())
|
if(H.staminaloss && !H.IsSleeping())
|
||||||
var/total_health = (H.health - H.staminaloss)
|
var/total_health = (H.health - H.staminaloss)
|
||||||
if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat)
|
if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat)
|
||||||
|
|||||||
@@ -303,7 +303,7 @@
|
|||||||
playsound(A.loc, "swing_hit", 50, 1)
|
playsound(A.loc, "swing_hit", 50, 1)
|
||||||
if (!D.stat)
|
if (!D.stat)
|
||||||
D.emote("scream")
|
D.emote("scream")
|
||||||
D.Knockdown(40)
|
D.DefaultCombatKnockdown(40)
|
||||||
|
|
||||||
switch(rand(1,3))
|
switch(rand(1,3))
|
||||||
if (2)
|
if (2)
|
||||||
@@ -361,7 +361,7 @@
|
|||||||
|
|
||||||
var/turf/T = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
|
var/turf/T = get_edge_target_turf(A, get_dir(A, get_step_away(D, A)))
|
||||||
if (T && isturf(T))
|
if (T && isturf(T))
|
||||||
D.Knockdown(20)
|
D.DefaultCombatKnockdown(20)
|
||||||
D.throw_at(T, 3, 2)
|
D.throw_at(T, 3, 2)
|
||||||
log_combat(A, D, "roundhouse-kicked")
|
log_combat(A, D, "roundhouse-kicked")
|
||||||
|
|
||||||
@@ -400,7 +400,7 @@
|
|||||||
if (falling == 1)
|
if (falling == 1)
|
||||||
A.visible_message("<span class = 'danger'><B>...and dives head-first into the ground, ouch!</b></span>")
|
A.visible_message("<span class = 'danger'><B>...and dives head-first into the ground, ouch!</b></span>")
|
||||||
A.adjustBruteLoss(rand(10,20))
|
A.adjustBruteLoss(rand(10,20))
|
||||||
A.Knockdown(60)
|
A.DefaultCombatKnockdown(60)
|
||||||
to_chat(A, "[D] is too far away!")
|
to_chat(A, "[D] is too far away!")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@@ -429,7 +429,7 @@
|
|||||||
else
|
else
|
||||||
D.adjustBruteLoss(rand(20,30))
|
D.adjustBruteLoss(rand(20,30))
|
||||||
|
|
||||||
D.Knockdown(40)
|
D.DefaultCombatKnockdown(40)
|
||||||
|
|
||||||
A.pixel_y = 0
|
A.pixel_y = 0
|
||||||
|
|
||||||
|
|||||||
@@ -97,7 +97,7 @@
|
|||||||
if(owner.stun_absorption[i]["end_time"] > world.time && owner.stun_absorption[i]["priority"] > vanguard["priority"])
|
if(owner.stun_absorption[i]["end_time"] > world.time && owner.stun_absorption[i]["priority"] > vanguard["priority"])
|
||||||
otheractiveabsorptions = TRUE
|
otheractiveabsorptions = TRUE
|
||||||
if(!GLOB.ratvar_awakens && stuns_blocked && !otheractiveabsorptions)
|
if(!GLOB.ratvar_awakens && stuns_blocked && !otheractiveabsorptions)
|
||||||
owner.Knockdown(stuns_blocked)
|
owner.DefaultCombatKnockdown(stuns_blocked)
|
||||||
message_to_owner = "<span class='boldwarning'>The weight of the Vanguard's protection crashes down upon you!</span>"
|
message_to_owner = "<span class='boldwarning'>The weight of the Vanguard's protection crashes down upon you!</span>"
|
||||||
if(stuns_blocked >= 300)
|
if(stuns_blocked >= 300)
|
||||||
message_to_owner += "\n<span class='userdanger'>You faint from the exertion!</span>"
|
message_to_owner += "\n<span class='userdanger'>You faint from the exertion!</span>"
|
||||||
|
|||||||
@@ -179,7 +179,7 @@
|
|||||||
if(iscarbon(owner) && !is_servant_of_ratvar(owner) && !owner.anti_magic_check(chargecost = 0) && number_legs)
|
if(iscarbon(owner) && !is_servant_of_ratvar(owner) && !owner.anti_magic_check(chargecost = 0) && number_legs)
|
||||||
if(force_damage || owner.m_intent != MOVE_INTENT_WALK)
|
if(force_damage || owner.m_intent != MOVE_INTENT_WALK)
|
||||||
if(GLOB.ratvar_awakens)
|
if(GLOB.ratvar_awakens)
|
||||||
owner.Knockdown(20)
|
owner.DefaultCombatKnockdown(20)
|
||||||
if(iscultist(owner))
|
if(iscultist(owner))
|
||||||
owner.apply_damage(cultist_damage_on_toggle * 0.5, BURN, BODY_ZONE_L_LEG)
|
owner.apply_damage(cultist_damage_on_toggle * 0.5, BURN, BODY_ZONE_L_LEG)
|
||||||
owner.apply_damage(cultist_damage_on_toggle * 0.5, BURN, BODY_ZONE_R_LEG)
|
owner.apply_damage(cultist_damage_on_toggle * 0.5, BURN, BODY_ZONE_R_LEG)
|
||||||
@@ -526,7 +526,7 @@
|
|||||||
var/old_oxyloss
|
var/old_oxyloss
|
||||||
|
|
||||||
/datum/status_effect/kindle/tick()
|
/datum/status_effect/kindle/tick()
|
||||||
owner.Knockdown(15, TRUE, FALSE, 15)
|
owner.DefaultCombatKnockdown(15, TRUE, FALSE, 15)
|
||||||
if(iscarbon(owner))
|
if(iscarbon(owner))
|
||||||
var/mob/living/carbon/C = owner
|
var/mob/living/carbon/C = owner
|
||||||
C.silent = max(2, C.silent)
|
C.silent = max(2, C.silent)
|
||||||
|
|||||||
@@ -54,6 +54,6 @@
|
|||||||
return
|
return
|
||||||
var/mob/living/carbon/human/H = gangster_mind.current // we are sure the dude's human cause it's checked in attack()
|
var/mob/living/carbon/human/H = gangster_mind.current // we are sure the dude's human cause it's checked in attack()
|
||||||
H.silent = max(H.silent, 5)
|
H.silent = max(H.silent, 5)
|
||||||
H.Knockdown(100)
|
H.DefaultCombatKnockdown(100)
|
||||||
gangster_mind.add_antag_datum(/datum/antagonist/gang, gang)
|
gangster_mind.add_antag_datum(/datum/antagonist/gang, gang)
|
||||||
return TRUE
|
return TRUE
|
||||||
@@ -217,7 +217,7 @@
|
|||||||
M.vomit(10, distance = 5)
|
M.vomit(10, distance = 5)
|
||||||
if(ORION_TRAIL_FLUX)
|
if(ORION_TRAIL_FLUX)
|
||||||
if(prob(75))
|
if(prob(75))
|
||||||
M.Knockdown(60)
|
M.DefaultCombatKnockdown(60)
|
||||||
say("A sudden gust of powerful wind slams [M] into the floor!")
|
say("A sudden gust of powerful wind slams [M] into the floor!")
|
||||||
M.take_bodypart_damage(25)
|
M.take_bodypart_damage(25)
|
||||||
playsound(loc, 'sound/weapons/genhit.ogg', 100, 1)
|
playsound(loc, 'sound/weapons/genhit.ogg', 100, 1)
|
||||||
|
|||||||
@@ -769,7 +769,7 @@
|
|||||||
if(!istype(H.head, /obj/item/clothing/head/helmet))
|
if(!istype(H.head, /obj/item/clothing/head/helmet))
|
||||||
H.visible_message("<span class='danger'>[user] headbutts the airlock.</span>", \
|
H.visible_message("<span class='danger'>[user] headbutts the airlock.</span>", \
|
||||||
"<span class='userdanger'>You headbutt the airlock!</span>")
|
"<span class='userdanger'>You headbutt the airlock!</span>")
|
||||||
H.Knockdown(100)
|
H.DefaultCombatKnockdown(100)
|
||||||
H.apply_damage(10, BRUTE, BODY_ZONE_HEAD)
|
H.apply_damage(10, BRUTE, BODY_ZONE_HEAD)
|
||||||
else
|
else
|
||||||
visible_message("<span class='danger'>[user] headbutts the airlock. Good thing [user.p_theyre()] wearing a helmet.</span>")
|
visible_message("<span class='danger'>[user] headbutts the airlock. Good thing [user.p_theyre()] wearing a helmet.</span>")
|
||||||
@@ -1033,7 +1033,7 @@
|
|||||||
if(!I.use_tool(src, user, 150, volume=50))
|
if(!I.use_tool(src, user, 150, volume=50))
|
||||||
to_chat(user, "<span class='warning'>You slip and [charge] detonates!</span>")
|
to_chat(user, "<span class='warning'>You slip and [charge] detonates!</span>")
|
||||||
charge.ex_act(EXPLODE_DEVASTATE)
|
charge.ex_act(EXPLODE_DEVASTATE)
|
||||||
user.Knockdown(60)
|
user.DefaultCombatKnockdown(60)
|
||||||
return
|
return
|
||||||
user.visible_message("<span class='notice'>[user] removes [charge] from [src].</span>", \
|
user.visible_message("<span class='notice'>[user] removes [charge] from [src].</span>", \
|
||||||
"<span class='notice'>You gently pry out [charge] from [src] and unhook its wires.</span>")
|
"<span class='notice'>You gently pry out [charge] from [src] and unhook its wires.</span>")
|
||||||
|
|||||||
@@ -508,7 +508,7 @@
|
|||||||
throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(L, src)))
|
throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(L, src)))
|
||||||
SEND_SOUND(L, sound(pick('sound/hallucinations/turn_around1.ogg','sound/hallucinations/turn_around2.ogg'),0,1,50))
|
SEND_SOUND(L, sound(pick('sound/hallucinations/turn_around1.ogg','sound/hallucinations/turn_around2.ogg'),0,1,50))
|
||||||
flash_color(L, flash_color="#960000", flash_time=20)
|
flash_color(L, flash_color="#960000", flash_time=20)
|
||||||
L.Knockdown(40)
|
L.DefaultCombatKnockdown(40)
|
||||||
L.throw_at(throwtarget, 5, 1)
|
L.throw_at(throwtarget, 5, 1)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|||||||
@@ -319,10 +319,10 @@
|
|||||||
else if(ishuman(L)) //For humans
|
else if(ishuman(L)) //For humans
|
||||||
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
||||||
L.emote("scream")
|
L.emote("scream")
|
||||||
L.Knockdown(100)
|
L.DefaultCombatKnockdown(100)
|
||||||
else if(ismonkey(L)) //For monkeys
|
else if(ismonkey(L)) //For monkeys
|
||||||
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
||||||
L.Knockdown(100)
|
L.DefaultCombatKnockdown(100)
|
||||||
else //for simple_animals & borgs
|
else //for simple_animals & borgs
|
||||||
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
||||||
var/turf/location = get_turf(src)
|
var/turf/location = get_turf(src)
|
||||||
|
|||||||
@@ -115,7 +115,7 @@
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
if(L.flash_act(affect_silicon = 1))
|
if(L.flash_act(affect_silicon = 1))
|
||||||
L.Knockdown(strength)
|
L.DefaultCombatKnockdown(strength)
|
||||||
flashed = TRUE
|
flashed = TRUE
|
||||||
|
|
||||||
if(flashed)
|
if(flashed)
|
||||||
|
|||||||
@@ -177,7 +177,7 @@
|
|||||||
M.SetSleeping(0)
|
M.SetSleeping(0)
|
||||||
M.stuttering += 20
|
M.stuttering += 20
|
||||||
M.adjustEarDamage(0, 30)
|
M.adjustEarDamage(0, 30)
|
||||||
M.Knockdown(60)
|
M.DefaultCombatKnockdown(60)
|
||||||
if(prob(30))
|
if(prob(30))
|
||||||
M.Stun(200)
|
M.Stun(200)
|
||||||
M.Unconscious(80)
|
M.Unconscious(80)
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
|
|
||||||
/obj/effect/anomaly/grav/proc/gravShock(mob/living/A)
|
/obj/effect/anomaly/grav/proc/gravShock(mob/living/A)
|
||||||
if(boing && isliving(A) && !A.stat)
|
if(boing && isliving(A) && !A.stat)
|
||||||
A.Knockdown(40)
|
A.DefaultCombatKnockdown(40)
|
||||||
var/atom/target = get_edge_target_turf(A, get_dir(src, get_step_away(A, src)))
|
var/atom/target = get_edge_target_turf(A, get_dir(src, get_step_away(A, src)))
|
||||||
A.throw_at(target, 5, 1)
|
A.throw_at(target, 5, 1)
|
||||||
boing = 0
|
boing = 0
|
||||||
|
|||||||
@@ -112,7 +112,7 @@
|
|||||||
for(var/mob/living/L in viewers(1, location))
|
for(var/mob/living/L in viewers(1, location))
|
||||||
if(prob(50 * amount))
|
if(prob(50 * amount))
|
||||||
to_chat(L, "<span class='danger'>The explosion knocks you down.</span>")
|
to_chat(L, "<span class='danger'>The explosion knocks you down.</span>")
|
||||||
L.Knockdown(rand(20,100))
|
L.DefaultCombatKnockdown(rand(20,100))
|
||||||
return
|
return
|
||||||
else
|
else
|
||||||
dyn_explosion(location, amount, flashing_factor)
|
dyn_explosion(location, amount, flashing_factor)
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
/obj/effect/mine/stun/mineEffect(mob/living/victim)
|
/obj/effect/mine/stun/mineEffect(mob/living/victim)
|
||||||
if(isliving(victim))
|
if(isliving(victim))
|
||||||
victim.Knockdown(stun_time)
|
victim.DefaultCombatKnockdown(stun_time)
|
||||||
|
|
||||||
/obj/effect/mine/kickmine
|
/obj/effect/mine/kickmine
|
||||||
name = "kick mine"
|
name = "kick mine"
|
||||||
|
|||||||
@@ -544,7 +544,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
|
|||||||
to_chat(M, "<span class='danger'>You drop what you're holding and clutch at your eyes!</span>")
|
to_chat(M, "<span class='danger'>You drop what you're holding and clutch at your eyes!</span>")
|
||||||
M.adjust_blurriness(10)
|
M.adjust_blurriness(10)
|
||||||
M.Unconscious(20)
|
M.Unconscious(20)
|
||||||
M.Knockdown(40)
|
M.DefaultCombatKnockdown(40)
|
||||||
if (prob(eyes.damage - 10 + 1))
|
if (prob(eyes.damage - 10 + 1))
|
||||||
M.become_blind(EYE_DAMAGE)
|
M.become_blind(EYE_DAMAGE)
|
||||||
to_chat(M, "<span class='danger'>You go blind!</span>")
|
to_chat(M, "<span class='danger'>You go blind!</span>")
|
||||||
|
|||||||
@@ -853,7 +853,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
|||||||
if(prob(5))//small chance for the vape to break and deal damage if it's emagged
|
if(prob(5))//small chance for the vape to break and deal damage if it's emagged
|
||||||
playsound(get_turf(src), 'sound/effects/pop_expl.ogg', 50, 0)
|
playsound(get_turf(src), 'sound/effects/pop_expl.ogg', 50, 0)
|
||||||
M.apply_damage(20, BURN, BODY_ZONE_HEAD)
|
M.apply_damage(20, BURN, BODY_ZONE_HEAD)
|
||||||
M.Knockdown(300, 1, 0)
|
M.DefaultCombatKnockdown(300, 1, 0)
|
||||||
var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread
|
var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread
|
||||||
sp.set_up(5, 1, src)
|
sp.set_up(5, 1, src)
|
||||||
sp.start()
|
sp.start()
|
||||||
|
|||||||
@@ -695,7 +695,7 @@
|
|||||||
C.blind_eyes(1)
|
C.blind_eyes(1)
|
||||||
if(C.get_eye_protection() <= 0) // no eye protection? ARGH IT BURNS.
|
if(C.get_eye_protection() <= 0) // no eye protection? ARGH IT BURNS.
|
||||||
C.confused = max(C.confused, 3)
|
C.confused = max(C.confused, 3)
|
||||||
C.Knockdown(60)
|
C.DefaultCombatKnockdown(60)
|
||||||
if(ishuman(C) && actually_paints)
|
if(ishuman(C) && actually_paints)
|
||||||
var/mob/living/carbon/human/H = C
|
var/mob/living/carbon/human/H = C
|
||||||
H.lip_style = "spray_face"
|
H.lip_style = "spray_face"
|
||||||
|
|||||||
@@ -473,7 +473,7 @@
|
|||||||
M.visible_message("<span class='danger'>[user] zaps [M] with [src]!</span>", \
|
M.visible_message("<span class='danger'>[user] zaps [M] with [src]!</span>", \
|
||||||
"<span class='userdanger'>[user] zaps [M] with [src]!</span>")
|
"<span class='userdanger'>[user] zaps [M] with [src]!</span>")
|
||||||
M.adjustStaminaLoss(50)
|
M.adjustStaminaLoss(50)
|
||||||
M.Knockdown(100)
|
M.DefaultCombatKnockdown(100)
|
||||||
M.updatehealth() //forces health update before next life tick
|
M.updatehealth() //forces health update before next life tick
|
||||||
playsound(src, 'sound/machines/defib_zap.ogg', 50, 1, -1)
|
playsound(src, 'sound/machines/defib_zap.ogg', 50, 1, -1)
|
||||||
M.emote("gasp")
|
M.emote("gasp")
|
||||||
@@ -530,7 +530,7 @@
|
|||||||
H.set_heartattack(TRUE)
|
H.set_heartattack(TRUE)
|
||||||
H.apply_damage(50, BURN, BODY_ZONE_CHEST)
|
H.apply_damage(50, BURN, BODY_ZONE_CHEST)
|
||||||
log_combat(user, H, "overloaded the heart of", defib)
|
log_combat(user, H, "overloaded the heart of", defib)
|
||||||
H.Knockdown(100)
|
H.DefaultCombatKnockdown(100)
|
||||||
H.Jitter(100)
|
H.Jitter(100)
|
||||||
if(req_defib)
|
if(req_defib)
|
||||||
defib.deductcharge(revivecost)
|
defib.deductcharge(revivecost)
|
||||||
|
|||||||
@@ -108,7 +108,7 @@
|
|||||||
//chance to actually hit the eyes depends on internal component
|
//chance to actually hit the eyes depends on internal component
|
||||||
if(prob(effectchance * diode.rating))
|
if(prob(effectchance * diode.rating))
|
||||||
S.flash_act(affect_silicon = 1)
|
S.flash_act(affect_silicon = 1)
|
||||||
S.Knockdown(rand(100,200))
|
S.DefaultCombatKnockdown(rand(100,200))
|
||||||
to_chat(S, "<span class='danger'>Your sensors were overloaded by a laser!</span>")
|
to_chat(S, "<span class='danger'>Your sensors were overloaded by a laser!</span>")
|
||||||
outmsg = "<span class='notice'>You overload [S] by shining [src] at [S.p_their()] sensors.</span>"
|
outmsg = "<span class='notice'>You overload [S] by shining [src] at [S.p_their()] sensors.</span>"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
s.set_up(3, 1, L)
|
s.set_up(3, 1, L)
|
||||||
s.start()
|
s.start()
|
||||||
|
|
||||||
L.Knockdown(100)
|
L.DefaultCombatKnockdown(100)
|
||||||
|
|
||||||
if(master)
|
if(master)
|
||||||
master.receive_signal()
|
master.receive_signal()
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ effective or pretty fucking useless.
|
|||||||
for(var/mob/living/carbon/human/M in urange(10, user, 1))
|
for(var/mob/living/carbon/human/M in urange(10, user, 1))
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
|
|
||||||
M.Knockdown(rand(200,400))
|
M.DefaultCombatKnockdown(rand(200,400))
|
||||||
to_chat(M, "<span class='userdanger'>You feel a tremendous, paralyzing wave flood your mind.</span>")
|
to_chat(M, "<span class='userdanger'>You feel a tremendous, paralyzing wave flood your mind.</span>")
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -294,7 +294,7 @@
|
|||||||
/obj/item/book/granter/spell/knock/recoil(mob/living/user)
|
/obj/item/book/granter/spell/knock/recoil(mob/living/user)
|
||||||
..()
|
..()
|
||||||
to_chat(user,"<span class='warning'>You're knocked down!</span>")
|
to_chat(user,"<span class='warning'>You're knocked down!</span>")
|
||||||
user.Knockdown(40)
|
user.DefaultCombatKnockdown(40)
|
||||||
|
|
||||||
/obj/item/book/granter/spell/barnyard
|
/obj/item/book/granter/spell/barnyard
|
||||||
spell = /obj/effect/proc_holder/spell/targeted/barnyardcurse
|
spell = /obj/effect/proc_holder/spell/targeted/barnyardcurse
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
M.show_message("<span class='warning'>BANG</span>", MSG_AUDIBLE)
|
M.show_message("<span class='warning'>BANG</span>", MSG_AUDIBLE)
|
||||||
var/distance = get_dist(get_turf(M), source)
|
var/distance = get_dist(get_turf(M), source)
|
||||||
if(!distance || loc == M || loc == M.loc) //Stop allahu akbarring rooms with this.
|
if(!distance || loc == M || loc == M.loc) //Stop allahu akbarring rooms with this.
|
||||||
M.Knockdown(200)
|
M.DefaultCombatKnockdown(200)
|
||||||
M.soundbang_act(1, 200, 10, 15)
|
M.soundbang_act(1, 200, 10, 15)
|
||||||
else
|
else
|
||||||
M.soundbang_act(1, max(200/max(1,distance), 60), rand(0, 5))
|
M.soundbang_act(1, max(200/max(1,distance), 60), rand(0, 5))
|
||||||
@@ -41,4 +41,4 @@
|
|||||||
return
|
return
|
||||||
var/distance = get_dist(get_turf(M), source)
|
var/distance = get_dist(get_turf(M), source)
|
||||||
if(M.flash_act(affect_silicon = 1))
|
if(M.flash_act(affect_silicon = 1))
|
||||||
M.Knockdown(max(200/max(1,distance), 60))
|
M.DefaultCombatKnockdown(max(200/max(1,distance), 60))
|
||||||
|
|||||||
@@ -351,7 +351,7 @@
|
|||||||
C.update_inv_legcuffed()
|
C.update_inv_legcuffed()
|
||||||
SSblackbox.record_feedback("tally", "handcuffs", 1, type)
|
SSblackbox.record_feedback("tally", "handcuffs", 1, type)
|
||||||
to_chat(C, "<span class='userdanger'>\The [src] ensnares you!</span>")
|
to_chat(C, "<span class='userdanger'>\The [src] ensnares you!</span>")
|
||||||
C.Knockdown(knockdown)
|
C.DefaultCombatKnockdown(knockdown)
|
||||||
|
|
||||||
/obj/item/restraints/legcuffs/bola/tactical//traitor variant
|
/obj/item/restraints/legcuffs/bola/tactical//traitor variant
|
||||||
name = "reinforced bola"
|
name = "reinforced bola"
|
||||||
|
|||||||
@@ -92,7 +92,7 @@
|
|||||||
master.emote("scream")
|
master.emote("scream")
|
||||||
master.remove_status_effect(STATUS_EFFECT_HISGRACE)
|
master.remove_status_effect(STATUS_EFFECT_HISGRACE)
|
||||||
REMOVE_TRAIT(src, TRAIT_NODROP, HIS_GRACE_TRAIT)
|
REMOVE_TRAIT(src, TRAIT_NODROP, HIS_GRACE_TRAIT)
|
||||||
master.Knockdown(60)
|
master.DefaultCombatKnockdown(60)
|
||||||
master.adjustBruteLoss(master.maxHealth)
|
master.adjustBruteLoss(master.maxHealth)
|
||||||
playsound(master, 'sound/effects/splat.ogg', 100, 0)
|
playsound(master, 'sound/effects/splat.ogg', 100, 0)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -673,7 +673,7 @@
|
|||||||
add_fingerprint(user)
|
add_fingerprint(user)
|
||||||
if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
|
if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
|
||||||
to_chat(user, "<span class ='warning'>You club yourself over the head with [src].</span>")
|
to_chat(user, "<span class ='warning'>You club yourself over the head with [src].</span>")
|
||||||
user.Knockdown(60)
|
user.DefaultCombatKnockdown(60)
|
||||||
if(ishuman(user))
|
if(ishuman(user))
|
||||||
var/mob/living/carbon/human/H = user
|
var/mob/living/carbon/human/H = user
|
||||||
H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD)
|
H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD)
|
||||||
|
|||||||
@@ -78,7 +78,7 @@
|
|||||||
return
|
return
|
||||||
if(message && imp_in.stat == CONSCIOUS)
|
if(message && imp_in.stat == CONSCIOUS)
|
||||||
imp_in.visible_message("<span class='warning'>[imp_in] doubles over in pain!</span>")
|
imp_in.visible_message("<span class='warning'>[imp_in] doubles over in pain!</span>")
|
||||||
imp_in.Knockdown(140)
|
imp_in.DefaultCombatKnockdown(140)
|
||||||
|
|
||||||
/obj/item/implant/explosive/proc/boom_goes_the_weasel()
|
/obj/item/implant/explosive/proc/boom_goes_the_weasel()
|
||||||
explosion(get_turf(imp_in ? imp_in : src), heavy, medium, weak, weak, flame_range = weak)
|
explosion(get_turf(imp_in ? imp_in : src), heavy, medium, weak, weak, flame_range = weak)
|
||||||
|
|||||||
@@ -199,7 +199,7 @@
|
|||||||
add_fingerprint(user)
|
add_fingerprint(user)
|
||||||
if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
|
if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
|
||||||
to_chat(user, "<span class ='danger'>You club yourself over the head.</span>")
|
to_chat(user, "<span class ='danger'>You club yourself over the head.</span>")
|
||||||
user.Knockdown(60 * force)
|
user.DefaultCombatKnockdown(60 * force)
|
||||||
if(ishuman(user))
|
if(ishuman(user))
|
||||||
var/mob/living/carbon/human/H = user
|
var/mob/living/carbon/human/H = user
|
||||||
H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD)
|
H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD)
|
||||||
@@ -224,7 +224,7 @@
|
|||||||
if(check_martial_counter(H, user))
|
if(check_martial_counter(H, user))
|
||||||
return
|
return
|
||||||
playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1)
|
playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1)
|
||||||
target.Knockdown(softstun_ds, TRUE, FALSE, hardstun_ds, stam_dmg)
|
target.DefaultCombatKnockdown(softstun_ds, TRUE, FALSE, hardstun_ds, stam_dmg)
|
||||||
log_combat(user, target, "stunned", src)
|
log_combat(user, target, "stunned", src)
|
||||||
src.add_fingerprint(user)
|
src.add_fingerprint(user)
|
||||||
target.visible_message("<span class ='danger'>[user] has knocked down [target] with [src]!</span>", \
|
target.visible_message("<span class ='danger'>[user] has knocked down [target] with [src]!</span>", \
|
||||||
|
|||||||
@@ -168,7 +168,7 @@
|
|||||||
if(pressureSetting >= 3 && iscarbon(user))
|
if(pressureSetting >= 3 && iscarbon(user))
|
||||||
var/mob/living/carbon/C = user
|
var/mob/living/carbon/C = user
|
||||||
C.visible_message("<span class='warning'>[C] is thrown down by the force of the cannon!</span>", "<span class='userdanger'>[src] slams into your shoulder, knocking you down!")
|
C.visible_message("<span class='warning'>[C] is thrown down by the force of the cannon!</span>", "<span class='userdanger'>[src] slams into your shoulder, knocking you down!")
|
||||||
C.Knockdown(60)
|
C.DefaultCombatKnockdown(60)
|
||||||
|
|
||||||
/obj/item/pneumatic_cannon/proc/fire_items(turf/target, mob/user)
|
/obj/item/pneumatic_cannon/proc/fire_items(turf/target, mob/user)
|
||||||
if(fire_mode == PCANNON_FIREALL)
|
if(fire_mode == PCANNON_FIREALL)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
user.do_attack_animation(M)
|
user.do_attack_animation(M)
|
||||||
M.Knockdown(100)
|
M.DefaultCombatKnockdown(100)
|
||||||
M.apply_effect(EFFECT_STUTTER, 5)
|
M.apply_effect(EFFECT_STUTTER, 5)
|
||||||
|
|
||||||
M.visible_message("<span class='danger'>[user] has prodded [M] with [src]!</span>", \
|
M.visible_message("<span class='danger'>[user] has prodded [M] with [src]!</span>", \
|
||||||
@@ -330,7 +330,7 @@
|
|||||||
C.stuttering += 10
|
C.stuttering += 10
|
||||||
C.Jitter(10)
|
C.Jitter(10)
|
||||||
if(2)
|
if(2)
|
||||||
C.Knockdown(40)
|
C.DefaultCombatKnockdown(40)
|
||||||
C.confused += 10
|
C.confused += 10
|
||||||
C.stuttering += 15
|
C.stuttering += 15
|
||||||
C.Jitter(25)
|
C.Jitter(25)
|
||||||
|
|||||||
@@ -336,7 +336,7 @@
|
|||||||
|
|
||||||
if(ishuman(M) || ismonkey(M))
|
if(ishuman(M) || ismonkey(M))
|
||||||
if(prob(10))
|
if(prob(10))
|
||||||
M.Knockdown(40)
|
M.DefaultCombatKnockdown(40)
|
||||||
update_icon()
|
update_icon()
|
||||||
|
|
||||||
/obj/item/storage/bag/tray/update_icon()
|
/obj/item/storage/bag/tray/update_icon()
|
||||||
|
|||||||
@@ -188,7 +188,7 @@
|
|||||||
stunpwr *= round(stuncharge/hitcost, 0.1)
|
stunpwr *= round(stuncharge/hitcost, 0.1)
|
||||||
|
|
||||||
|
|
||||||
L.Knockdown(stunpwr)
|
L.DefaultCombatKnockdown(stunpwr)
|
||||||
L.adjustStaminaLoss(stunpwr*0.1)//CIT CHANGE - makes stunbatons deal extra staminaloss. Todo: make this also deal pain when pain gets implemented.
|
L.adjustStaminaLoss(stunpwr*0.1)//CIT CHANGE - makes stunbatons deal extra staminaloss. Todo: make this also deal pain when pain gets implemented.
|
||||||
L.apply_effect(EFFECT_STUTTER, stunforce)
|
L.apply_effect(EFFECT_STUTTER, stunforce)
|
||||||
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK)
|
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK)
|
||||||
@@ -212,7 +212,7 @@
|
|||||||
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>", \
|
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>", \
|
||||||
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
|
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
|
||||||
SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK)
|
SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK)
|
||||||
user.Knockdown(stunforce*3)
|
user.DefaultCombatKnockdown(stunforce*3)
|
||||||
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
|
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
|
||||||
deductcharge(hitcost)
|
deductcharge(hitcost)
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>", \
|
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>", \
|
||||||
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
|
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
|
||||||
SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK)
|
SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK)
|
||||||
user.Knockdown(stunforce*3)
|
user.DefaultCombatKnockdown(stunforce*3)
|
||||||
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
|
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
|
||||||
if(do_teleport(user, get_turf(user), 50, channel = TELEPORT_CHANNEL_BLUESPACE))
|
if(do_teleport(user, get_turf(user), 50, channel = TELEPORT_CHANNEL_BLUESPACE))
|
||||||
deductcharge(hitcost)
|
deductcharge(hitcost)
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
if(structureclimber && structureclimber != user)
|
if(structureclimber && structureclimber != user)
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
user.changeNext_move(CLICK_CD_MELEE)
|
||||||
user.do_attack_animation(src)
|
user.do_attack_animation(src)
|
||||||
structureclimber.Knockdown(40)
|
structureclimber.DefaultCombatKnockdown(40)
|
||||||
structureclimber.visible_message("<span class='warning'>[structureclimber] has been knocked off [src].", "You're knocked off [src]!", "You see [structureclimber] get knocked off [src].</span>")
|
structureclimber.visible_message("<span class='warning'>[structureclimber] has been knocked off [src].", "You're knocked off [src]!", "You see [structureclimber] get knocked off [src].</span>")
|
||||||
|
|
||||||
/obj/structure/ui_act(action, params)
|
/obj/structure/ui_act(action, params)
|
||||||
|
|||||||
@@ -332,7 +332,7 @@
|
|||||||
if(iscarbon(target))
|
if(iscarbon(target))
|
||||||
var/mob/living/carbon/C = target
|
var/mob/living/carbon/C = target
|
||||||
if(C.health < C.maxHealth*0.5)
|
if(C.health < C.maxHealth*0.5)
|
||||||
C.Knockdown(20)
|
C.DefaultCombatKnockdown(20)
|
||||||
smash(user)
|
smash(user)
|
||||||
|
|
||||||
/obj/item/chair/stool
|
/obj/item/chair/stool
|
||||||
|
|||||||
@@ -431,7 +431,7 @@
|
|||||||
"<span class='italics'>You hear a loud metal bang.</span>")
|
"<span class='italics'>You hear a loud metal bang.</span>")
|
||||||
var/mob/living/L = O
|
var/mob/living/L = O
|
||||||
if(!issilicon(L))
|
if(!issilicon(L))
|
||||||
L.Knockdown(40)
|
L.DefaultCombatKnockdown(40)
|
||||||
O.forceMove(T)
|
O.forceMove(T)
|
||||||
close()
|
close()
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
if(S.mind)
|
if(S.mind)
|
||||||
if(petrified_mob)
|
if(petrified_mob)
|
||||||
S.mind.transfer_to(petrified_mob)
|
S.mind.transfer_to(petrified_mob)
|
||||||
petrified_mob.Knockdown(100)
|
petrified_mob.DefaultCombatKnockdown(100)
|
||||||
to_chat(petrified_mob, "<span class='notice'>You slowly come back to your senses. You are in control of yourself again!</span>")
|
to_chat(petrified_mob, "<span class='notice'>You slowly come back to your senses. You are in control of yourself again!</span>")
|
||||||
qdel(S)
|
qdel(S)
|
||||||
|
|
||||||
|
|||||||
@@ -128,7 +128,7 @@
|
|||||||
pushed_mob.pass_flags &= ~PASSTABLE
|
pushed_mob.pass_flags &= ~PASSTABLE
|
||||||
if(pushed_mob.loc != loc) //Something prevented the tabling
|
if(pushed_mob.loc != loc) //Something prevented the tabling
|
||||||
return
|
return
|
||||||
pushed_mob.Knockdown(40)
|
pushed_mob.DefaultCombatKnockdown(40)
|
||||||
pushed_mob.visible_message("<span class='danger'>[user] slams [pushed_mob] onto [src]!</span>", \
|
pushed_mob.visible_message("<span class='danger'>[user] slams [pushed_mob] onto [src]!</span>", \
|
||||||
"<span class='userdanger'>[user] slams you onto [src]!</span>")
|
"<span class='userdanger'>[user] slams you onto [src]!</span>")
|
||||||
log_combat(user, pushed_mob, "tabled", null, "onto [src]")
|
log_combat(user, pushed_mob, "tabled", null, "onto [src]")
|
||||||
@@ -139,7 +139,7 @@
|
|||||||
|
|
||||||
/obj/structure/table/shove_act(mob/living/target, mob/living/user)
|
/obj/structure/table/shove_act(mob/living/target, mob/living/user)
|
||||||
if(!target.resting)
|
if(!target.resting)
|
||||||
target.Knockdown(SHOVE_KNOCKDOWN_TABLE)
|
target.DefaultCombatKnockdown(SHOVE_KNOCKDOWN_TABLE)
|
||||||
user.visible_message("<span class='danger'>[user.name] shoves [target.name] onto \the [src]!</span>",
|
user.visible_message("<span class='danger'>[user.name] shoves [target.name] onto \the [src]!</span>",
|
||||||
"<span class='danger'>You shove [target.name] onto \the [src]!</span>", null, COMBAT_MESSAGE_RANGE)
|
"<span class='danger'>You shove [target.name] onto \the [src]!</span>", null, COMBAT_MESSAGE_RANGE)
|
||||||
target.forceMove(src.loc)
|
target.forceMove(src.loc)
|
||||||
@@ -249,7 +249,7 @@
|
|||||||
debris -= AM
|
debris -= AM
|
||||||
if(istype(AM, /obj/item/shard))
|
if(istype(AM, /obj/item/shard))
|
||||||
AM.throw_impact(L)
|
AM.throw_impact(L)
|
||||||
L.Knockdown(100)
|
L.DefaultCombatKnockdown(100)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
/obj/structure/table/glass/deconstruct(disassembled = TRUE, wrench_disassembly = 0)
|
/obj/structure/table/glass/deconstruct(disassembled = TRUE, wrench_disassembly = 0)
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
pod.visible_message("<span class='warning'>[user] starts putting [GM] into the [pod]!</span>")
|
pod.visible_message("<span class='warning'>[user] starts putting [GM] into the [pod]!</span>")
|
||||||
if(do_after(user, 15, target = src))
|
if(do_after(user, 15, target = src))
|
||||||
if(open_status == STATION_TUBE_OPEN && GM && user.grab_state >= GRAB_AGGRESSIVE && user.pulling == GM && !GM.buckled && !GM.has_buckled_mobs())
|
if(open_status == STATION_TUBE_OPEN && GM && user.grab_state >= GRAB_AGGRESSIVE && user.pulling == GM && !GM.buckled && !GM.has_buckled_mobs())
|
||||||
GM.Knockdown(100)
|
GM.DefaultCombatKnockdown(100)
|
||||||
src.Bumped(GM)
|
src.Bumped(GM)
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -83,7 +83,7 @@
|
|||||||
|
|
||||||
/obj/structure/trap/stun/trap_effect(mob/living/L)
|
/obj/structure/trap/stun/trap_effect(mob/living/L)
|
||||||
L.electrocute_act(30, src, safety=1) // electrocute act does a message.
|
L.electrocute_act(30, src, safety=1) // electrocute act does a message.
|
||||||
L.Knockdown(100)
|
L.DefaultCombatKnockdown(100)
|
||||||
|
|
||||||
/obj/structure/trap/fire
|
/obj/structure/trap/fire
|
||||||
name = "flame trap"
|
name = "flame trap"
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
|
|
||||||
/obj/structure/trap/fire/trap_effect(mob/living/L)
|
/obj/structure/trap/fire/trap_effect(mob/living/L)
|
||||||
to_chat(L, "<span class='danger'><B>Spontaneous combustion!</B></span>")
|
to_chat(L, "<span class='danger'><B>Spontaneous combustion!</B></span>")
|
||||||
L.Knockdown(20)
|
L.DefaultCombatKnockdown(20)
|
||||||
|
|
||||||
/obj/structure/trap/fire/flare()
|
/obj/structure/trap/fire/flare()
|
||||||
..()
|
..()
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
|
|
||||||
/obj/structure/trap/chill/trap_effect(mob/living/L)
|
/obj/structure/trap/chill/trap_effect(mob/living/L)
|
||||||
to_chat(L, "<span class='danger'><B>You're frozen solid!</B></span>")
|
to_chat(L, "<span class='danger'><B>You're frozen solid!</B></span>")
|
||||||
L.Knockdown(20)
|
L.DefaultCombatKnockdown(20)
|
||||||
L.adjust_bodytemperature(-300)
|
L.adjust_bodytemperature(-300)
|
||||||
L.apply_status_effect(/datum/status_effect/freon)
|
L.apply_status_effect(/datum/status_effect/freon)
|
||||||
|
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
|
|
||||||
/obj/structure/trap/damage/trap_effect(mob/living/L)
|
/obj/structure/trap/damage/trap_effect(mob/living/L)
|
||||||
to_chat(L, "<span class='danger'><B>The ground quakes beneath your feet!</B></span>")
|
to_chat(L, "<span class='danger'><B>The ground quakes beneath your feet!</B></span>")
|
||||||
L.Knockdown(100)
|
L.DefaultCombatKnockdown(100)
|
||||||
L.adjustBruteLoss(35)
|
L.adjustBruteLoss(35)
|
||||||
|
|
||||||
/obj/structure/trap/damage/flare()
|
/obj/structure/trap/damage/flare()
|
||||||
|
|||||||
@@ -529,7 +529,7 @@
|
|||||||
if(B.cell.charge > 0 && B.status == 1)
|
if(B.cell.charge > 0 && B.status == 1)
|
||||||
flick("baton_active", src)
|
flick("baton_active", src)
|
||||||
var/stunforce = B.stunforce
|
var/stunforce = B.stunforce
|
||||||
user.Knockdown(stunforce)
|
user.DefaultCombatKnockdown(stunforce)
|
||||||
user.stuttering = stunforce/20
|
user.stuttering = stunforce/20
|
||||||
B.deductcharge(B.hitcost)
|
B.deductcharge(B.hitcost)
|
||||||
user.visible_message("<span class='warning'>[user] shocks [user.p_them()]self while attempting to wash the active [B.name]!</span>", \
|
user.visible_message("<span class='warning'>[user] shocks [user.p_them()]self while attempting to wash the active [B.name]!</span>", \
|
||||||
|
|||||||
@@ -273,7 +273,7 @@
|
|||||||
|
|
||||||
var/olddir = C.dir
|
var/olddir = C.dir
|
||||||
if(!(lube & SLIDE_ICE))
|
if(!(lube & SLIDE_ICE))
|
||||||
C.Knockdown(knockdown_amount)
|
C.DefaultCombatKnockdown(knockdown_amount)
|
||||||
C.stop_pulling()
|
C.stop_pulling()
|
||||||
else
|
else
|
||||||
C.Stun(20)
|
C.Stun(20)
|
||||||
|
|||||||
@@ -21,6 +21,6 @@
|
|||||||
target.gib(1, 1)
|
target.gib(1, 1)
|
||||||
else
|
else
|
||||||
target.adjustBruteLoss(min(99,(target.health - 1)))
|
target.adjustBruteLoss(min(99,(target.health - 1)))
|
||||||
target.Knockdown(400)
|
target.DefaultCombatKnockdown(400)
|
||||||
target.stuttering = 20
|
target.stuttering = 20
|
||||||
|
|
||||||
|
|||||||
@@ -507,7 +507,7 @@
|
|||||||
L.lastattackerckey = user.ckey
|
L.lastattackerckey = user.ckey
|
||||||
|
|
||||||
L.adjustStaminaLoss(35) //because previously it took 5-6 hits to actually "incapacitate" someone for the purposes of the sleep inducement
|
L.adjustStaminaLoss(35) //because previously it took 5-6 hits to actually "incapacitate" someone for the purposes of the sleep inducement
|
||||||
L.Knockdown(140)
|
L.DefaultCombatKnockdown(140)
|
||||||
L.apply_effect(EFFECT_STUTTER, 7)
|
L.apply_effect(EFFECT_STUTTER, 7)
|
||||||
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK)
|
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK)
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,7 @@
|
|||||||
if(rand(5 + powerlevel) >= 5)
|
if(rand(5 + powerlevel) >= 5)
|
||||||
target.visible_message("<span class='danger'>[user] lands a vicious punch, sending [target] away!</span>", \
|
target.visible_message("<span class='danger'>[user] lands a vicious punch, sending [target] away!</span>", \
|
||||||
"<span class='userdanger'>[user] has landed a horrifying punch on you, sending you flying!!</span>", null, COMBAT_MESSAGE_RANGE)
|
"<span class='userdanger'>[user] has landed a horrifying punch on you, sending you flying!!</span>", null, COMBAT_MESSAGE_RANGE)
|
||||||
target.Knockdown(min(5, rand(10, 10 * powerlevel)) )
|
target.DefaultCombatKnockdown(min(5, rand(10, 10 * powerlevel)) )
|
||||||
// Chance of KO
|
// Chance of KO
|
||||||
if(rand(6 + powerlevel) >= 6 && target.stat <= UNCONSCIOUS)
|
if(rand(6 + powerlevel) >= 6 && target.stat <= UNCONSCIOUS)
|
||||||
target.Unconscious(40)
|
target.Unconscious(40)
|
||||||
@@ -147,7 +147,7 @@
|
|||||||
// Knock Down (if Living)
|
// Knock Down (if Living)
|
||||||
if (isliving(M))
|
if (isliving(M))
|
||||||
var/mob/living/L = M
|
var/mob/living/L = M
|
||||||
L.Knockdown(pull_power * 10 + 20)
|
L.DefaultCombatKnockdown(pull_power * 10 + 20)
|
||||||
// Knock Back (before Knockdown, which probably cancels pull)
|
// Knock Back (before Knockdown, which probably cancels pull)
|
||||||
var/send_dir = get_dir(owner, M)
|
var/send_dir = get_dir(owner, M)
|
||||||
var/turf/T = get_ranged_target_turf(M, send_dir, pull_power)
|
var/turf/T = get_ranged_target_turf(M, send_dir, pull_power)
|
||||||
|
|||||||
@@ -306,7 +306,7 @@
|
|||||||
// Bloodsuckers not affected by "the Kiss" of another vampire
|
// Bloodsuckers not affected by "the Kiss" of another vampire
|
||||||
if (!target.mind || !target.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER))
|
if (!target.mind || !target.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER))
|
||||||
target.Unconscious(50,0)
|
target.Unconscious(50,0)
|
||||||
target.Knockdown(40 + 5 * level_current,1)
|
target.DefaultCombatKnockdown(40 + 5 * level_current,1)
|
||||||
// NOTE: THis is based on level of power!
|
// NOTE: THis is based on level of power!
|
||||||
if (ishuman(target))
|
if (ishuman(target))
|
||||||
target.adjustStaminaLoss(5, forced = TRUE)// Base Stamina Damage
|
target.adjustStaminaLoss(5, forced = TRUE)// Base Stamina Damage
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
if (newtarget && newtarget != target && !(newtarget in foundtargets))//!newtarget.IsKnockdown())
|
if (newtarget && newtarget != target && !(newtarget in foundtargets))//!newtarget.IsKnockdown())
|
||||||
if (rand(0, 5) < level_current)
|
if (rand(0, 5) < level_current)
|
||||||
playsound(get_turf(newtarget), "sound/weapons/punch[rand(1,4)].ogg", 15, 1, -1)
|
playsound(get_turf(newtarget), "sound/weapons/punch[rand(1,4)].ogg", 15, 1, -1)
|
||||||
newtarget.Knockdown(10 + level_current * 5)
|
newtarget.DefaultCombatKnockdown(10 + level_current * 5)
|
||||||
if(newtarget.IsStun())
|
if(newtarget.IsStun())
|
||||||
newtarget.spin(10,1)
|
newtarget.spin(10,1)
|
||||||
if (rand(0,4))
|
if (rand(0,4))
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
if(target.Adjacent(owner))
|
if(target.Adjacent(owner))
|
||||||
// LEVEL 2: If behind target, mute or unconscious!
|
// LEVEL 2: If behind target, mute or unconscious!
|
||||||
if(do_knockdown) // && level_current >= 1)
|
if(do_knockdown) // && level_current >= 1)
|
||||||
target.Knockdown(15 + 10 * level_current,1)
|
target.DefaultCombatKnockdown(15 + 10 * level_current,1)
|
||||||
target.adjustStaminaLoss(40 + 10 * level_current)
|
target.adjustStaminaLoss(40 + 10 * level_current)
|
||||||
// Cancel Walk (we were close enough to contact them)
|
// Cancel Walk (we were close enough to contact them)
|
||||||
walk(owner, 0)
|
walk(owner, 0)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
H.confused += 3
|
H.confused += 3
|
||||||
for(var/mob/living/silicon/S in range(2,user))
|
for(var/mob/living/silicon/S in range(2,user))
|
||||||
to_chat(S, "<span class='userdanger'>Your sensors are disabled by a shower of blood!</span>")
|
to_chat(S, "<span class='userdanger'>Your sensors are disabled by a shower of blood!</span>")
|
||||||
S.Knockdown(60)
|
S.DefaultCombatKnockdown(60)
|
||||||
var/turf = get_turf(user)
|
var/turf = get_turf(user)
|
||||||
user.gib()
|
user.gib()
|
||||||
. = TRUE
|
. = TRUE
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
if(issilicon(M))
|
if(issilicon(M))
|
||||||
SEND_SOUND(M, sound('sound/weapons/flash.ogg'))
|
SEND_SOUND(M, sound('sound/weapons/flash.ogg'))
|
||||||
M.Knockdown(rand(100,200))
|
M.DefaultCombatKnockdown(rand(100,200))
|
||||||
|
|
||||||
for(var/obj/machinery/light/L in range(4, user))
|
for(var/obj/machinery/light/L in range(4, user))
|
||||||
L.on = 1
|
L.on = 1
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
changeling.chem_recharge_slowdown -= 0.5
|
changeling.chem_recharge_slowdown -= 0.5
|
||||||
if(stacks >= 20)
|
if(stacks >= 20)
|
||||||
to_chat(user, "<span class='danger'>We collapse in exhaustion.</span>")
|
to_chat(user, "<span class='danger'>We collapse in exhaustion.</span>")
|
||||||
user.Knockdown(60)
|
user.DefaultCombatKnockdown(60)
|
||||||
user.emote("gasp")
|
user.emote("gasp")
|
||||||
|
|
||||||
INVOKE_ASYNC(src, .proc/muscle_loop, user)
|
INVOKE_ASYNC(src, .proc/muscle_loop, user)
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
if(user.stat != CONSCIOUS || user.staminaloss >= 90)
|
if(user.stat != CONSCIOUS || user.staminaloss >= 90)
|
||||||
active = !active
|
active = !active
|
||||||
to_chat(user, "<span class='notice'>Our muscles relax without the energy to strengthen them.</span>")
|
to_chat(user, "<span class='notice'>Our muscles relax without the energy to strengthen them.</span>")
|
||||||
user.Knockdown(40)
|
user.DefaultCombatKnockdown(40)
|
||||||
user.remove_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES)
|
user.remove_movespeed_modifier(MOVESPEED_ID_CHANGELING_MUSCLES)
|
||||||
changeling.chem_recharge_slowdown -= 0.5
|
changeling.chem_recharge_slowdown -= 0.5
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
if(iscultist(L)) //No longer stuns cultists, instead sets them on fire and burns them
|
if(iscultist(L)) //No longer stuns cultists, instead sets them on fire and burns them
|
||||||
to_chat(L, "<span class='heavy_brass'>\"Watch your step, wretch.\"</span>")
|
to_chat(L, "<span class='heavy_brass'>\"Watch your step, wretch.\"</span>")
|
||||||
L.adjustFireLoss(10)
|
L.adjustFireLoss(10)
|
||||||
L.Knockdown(20, FALSE)
|
L.DefaultCombatKnockdown(20, FALSE)
|
||||||
L.adjust_fire_stacks(5) //Burn!
|
L.adjust_fire_stacks(5) //Burn!
|
||||||
L.IgniteMob()
|
L.IgniteMob()
|
||||||
else
|
else
|
||||||
@@ -155,7 +155,7 @@
|
|||||||
if(brutedamage || burndamage)
|
if(brutedamage || burndamage)
|
||||||
L.adjustBruteLoss(-(brutedamage * 0.25))
|
L.adjustBruteLoss(-(brutedamage * 0.25))
|
||||||
L.adjustFireLoss(-(burndamage * 0.25))
|
L.adjustFireLoss(-(burndamage * 0.25))
|
||||||
L.Knockdown(50) //Completely defenseless for five seconds - mainly to give them time to read over the information they've just been presented with
|
L.DefaultCombatKnockdown(50) //Completely defenseless for five seconds - mainly to give them time to read over the information they've just been presented with
|
||||||
if(iscarbon(L))
|
if(iscarbon(L))
|
||||||
var/mob/living/carbon/C = L
|
var/mob/living/carbon/C = L
|
||||||
C.silent += 5
|
C.silent += 5
|
||||||
|
|||||||
@@ -196,7 +196,7 @@
|
|||||||
if(!iscultist(L))
|
if(!iscultist(L))
|
||||||
L.visible_message("<span class='warning'>[L]'s eyes blaze with brilliant light!</span>", \
|
L.visible_message("<span class='warning'>[L]'s eyes blaze with brilliant light!</span>", \
|
||||||
"<span class='userdanger'>Your vision suddenly screams with white-hot light!</span>")
|
"<span class='userdanger'>Your vision suddenly screams with white-hot light!</span>")
|
||||||
L.Knockdown(15, TRUE, FALSE, 15)
|
L.DefaultCombatKnockdown(15, TRUE, FALSE, 15)
|
||||||
L.apply_status_effect(STATUS_EFFECT_KINDLE)
|
L.apply_status_effect(STATUS_EFFECT_KINDLE)
|
||||||
L.flash_act(1, 1)
|
L.flash_act(1, 1)
|
||||||
if(issilicon(target))
|
if(issilicon(target))
|
||||||
|
|||||||
@@ -57,15 +57,15 @@
|
|||||||
else if(!..())
|
else if(!..())
|
||||||
if(!L.anti_magic_check())
|
if(!L.anti_magic_check())
|
||||||
if(issilicon(L))
|
if(issilicon(L))
|
||||||
L.Knockdown(100)
|
L.DefaultCombatKnockdown(100)
|
||||||
else if(iscultist(L))
|
else if(iscultist(L))
|
||||||
L.confused += CLAMP(10 - L.confused, 0, 5) // Spearthrow now confuses enemy cultists + just deals extra damage / sets on fire instead of hardstunning + damage
|
L.confused += CLAMP(10 - L.confused, 0, 5) // Spearthrow now confuses enemy cultists + just deals extra damage / sets on fire instead of hardstunning + damage
|
||||||
to_chat(L, "<span class ='userdanger'>[src] crashes into you with burning force, sending you reeling!</span>")
|
to_chat(L, "<span class ='userdanger'>[src] crashes into you with burning force, sending you reeling!</span>")
|
||||||
L.adjust_fire_stacks(2)
|
L.adjust_fire_stacks(2)
|
||||||
L.Knockdown(1)
|
L.DefaultCombatKnockdown(1)
|
||||||
L.IgniteMob()
|
L.IgniteMob()
|
||||||
else
|
else
|
||||||
L.Knockdown(40)
|
L.DefaultCombatKnockdown(40)
|
||||||
GLOB.clockwork_vitality += L.adjustFireLoss(bonus_burn * 3) //normally a total of 40 damage, 70 with ratvar
|
GLOB.clockwork_vitality += L.adjustFireLoss(bonus_burn * 3) //normally a total of 40 damage, 70 with ratvar
|
||||||
break_spear(T)
|
break_spear(T)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -176,7 +176,7 @@
|
|||||||
var/datum/status_effect/belligerent/B = C.apply_status_effect(STATUS_EFFECT_BELLIGERENT)
|
var/datum/status_effect/belligerent/B = C.apply_status_effect(STATUS_EFFECT_BELLIGERENT)
|
||||||
if(!QDELETED(B))
|
if(!QDELETED(B))
|
||||||
B.duration = world.time + 30
|
B.duration = world.time + 30
|
||||||
C.Knockdown(5) //knocks down for half a second if affected
|
C.DefaultCombatKnockdown(5) //knocks down for half a second if affected
|
||||||
sleep(!GLOB.ratvar_approaches ? 16 : 10)
|
sleep(!GLOB.ratvar_approaches ? 16 : 10)
|
||||||
name = "judicial blast"
|
name = "judicial blast"
|
||||||
layer = ABOVE_ALL_MOB_LAYER
|
layer = ABOVE_ALL_MOB_LAYER
|
||||||
@@ -196,7 +196,7 @@
|
|||||||
L.visible_message("<span class='warning'>Strange energy flows into [L]'s [I.name]!</span>", \
|
L.visible_message("<span class='warning'>Strange energy flows into [L]'s [I.name]!</span>", \
|
||||||
"<span class='userdanger'>Your [I.name] shields you from [src]!</span>")
|
"<span class='userdanger'>Your [I.name] shields you from [src]!</span>")
|
||||||
continue
|
continue
|
||||||
L.Knockdown(15) //knocks down briefly when exploding
|
L.DefaultCombatKnockdown(15) //knocks down briefly when exploding
|
||||||
if(!iscultist(L))
|
if(!iscultist(L))
|
||||||
L.visible_message("<span class='warning'>[L] is struck by a judicial explosion!</span>", \
|
L.visible_message("<span class='warning'>[L] is struck by a judicial explosion!</span>", \
|
||||||
"<span class='userdanger'>[!issilicon(L) ? "An unseen force slams you into the ground!" : "ERROR: Motor servos disabled by external source!"]</span>")
|
"<span class='userdanger'>[!issilicon(L) ? "An unseen force slams you into the ground!" : "ERROR: Motor servos disabled by external source!"]</span>")
|
||||||
|
|||||||
@@ -57,5 +57,5 @@
|
|||||||
L.confused = min(L.confused + 15, 50)
|
L.confused = min(L.confused + 15, 50)
|
||||||
L.dizziness = min(L.dizziness + 15, 50)
|
L.dizziness = min(L.dizziness + 15, 50)
|
||||||
if(L.confused >= 25)
|
if(L.confused >= 25)
|
||||||
L.Knockdown(FLOOR(L.confused * 0.8, 1))
|
L.DefaultCombatKnockdown(FLOOR(L.confused * 0.8, 1))
|
||||||
take_damage(max_integrity)
|
take_damage(max_integrity)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
if(buckled_mobs && LAZYLEN(buckled_mobs))
|
if(buckled_mobs && LAZYLEN(buckled_mobs))
|
||||||
var/mob/living/L = buckled_mobs[1]
|
var/mob/living/L = buckled_mobs[1]
|
||||||
if(iscarbon(L))
|
if(iscarbon(L))
|
||||||
L.Knockdown(100)
|
L.DefaultCombatKnockdown(100)
|
||||||
L.visible_message("<span class='warning'>[L] is maimed as the skewer shatters while still in [L.p_their()] body!</span>")
|
L.visible_message("<span class='warning'>[L] is maimed as the skewer shatters while still in [L.p_their()] body!</span>")
|
||||||
L.adjustBruteLoss(15)
|
L.adjustBruteLoss(15)
|
||||||
unbuckle_mob(L)
|
unbuckle_mob(L)
|
||||||
@@ -117,6 +117,6 @@
|
|||||||
return
|
return
|
||||||
skewee.visible_message("<span class='danger'>[skewee] comes free of [src] with a squelching pop!</span>", \
|
skewee.visible_message("<span class='danger'>[skewee] comes free of [src] with a squelching pop!</span>", \
|
||||||
"<span class='boldannounce'>You come free of [src]!</span>")
|
"<span class='boldannounce'>You come free of [src]!</span>")
|
||||||
skewee.Knockdown(30)
|
skewee.DefaultCombatKnockdown(30)
|
||||||
playsound(skewee, 'sound/misc/desceration-03.ogg', 50, TRUE)
|
playsound(skewee, 'sound/misc/desceration-03.ogg', 50, TRUE)
|
||||||
unbuckle_mob(skewee)
|
unbuckle_mob(skewee)
|
||||||
|
|||||||
@@ -439,7 +439,7 @@
|
|||||||
"<span class='userdanger'>A feeling of warmth washes over you, rays of holy light surround your body and protect you from the flash of light!</span>")
|
"<span class='userdanger'>A feeling of warmth washes over you, rays of holy light surround your body and protect you from the flash of light!</span>")
|
||||||
else
|
else
|
||||||
if(!iscultist(L))
|
if(!iscultist(L))
|
||||||
L.Knockdown(160)
|
L.DefaultCombatKnockdown(160)
|
||||||
L.adjustStaminaLoss(140) //Ensures hard stamcrit
|
L.adjustStaminaLoss(140) //Ensures hard stamcrit
|
||||||
L.flash_act(1,1)
|
L.flash_act(1,1)
|
||||||
if(issilicon(target))
|
if(issilicon(target))
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
/obj/item/melee/cultblade/attack(mob/living/target, mob/living/carbon/human/user)
|
/obj/item/melee/cultblade/attack(mob/living/target, mob/living/carbon/human/user)
|
||||||
if(!iscultist(user))
|
if(!iscultist(user))
|
||||||
user.Knockdown(100)
|
user.DefaultCombatKnockdown(100)
|
||||||
user.dropItemToGround(src, TRUE)
|
user.dropItemToGround(src, TRUE)
|
||||||
user.visible_message("<span class='warning'>A powerful force shoves [user] away from [target]!</span>", \
|
user.visible_message("<span class='warning'>A powerful force shoves [user] away from [target]!</span>", \
|
||||||
"<span class='cultlarge'>\"You shouldn't play with sharp things. You'll poke someone's eye out.\"</span>")
|
"<span class='cultlarge'>\"You shouldn't play with sharp things. You'll poke someone's eye out.\"</span>")
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
user.emote("scream")
|
user.emote("scream")
|
||||||
user.apply_damage(30, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
user.apply_damage(30, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM))
|
||||||
user.dropItemToGround(src, TRUE)
|
user.dropItemToGround(src, TRUE)
|
||||||
user.Knockdown(50)
|
user.DefaultCombatKnockdown(50)
|
||||||
return
|
return
|
||||||
force = initial(force)
|
force = initial(force)
|
||||||
jaunt.Grant(user, src)
|
jaunt.Grant(user, src)
|
||||||
@@ -405,7 +405,7 @@
|
|||||||
to_chat(user, "<span class='warning'>An overwhelming sense of nausea overpowers you!</span>")
|
to_chat(user, "<span class='warning'>An overwhelming sense of nausea overpowers you!</span>")
|
||||||
user.dropItemToGround(src, TRUE)
|
user.dropItemToGround(src, TRUE)
|
||||||
user.Dizzy(30)
|
user.Dizzy(30)
|
||||||
user.Knockdown(100)
|
user.DefaultCombatKnockdown(100)
|
||||||
else
|
else
|
||||||
to_chat(user, "<span class='cultlarge'>\"Trying to use things you don't own is bad, you know.\"</span>")
|
to_chat(user, "<span class='cultlarge'>\"Trying to use things you don't own is bad, you know.\"</span>")
|
||||||
to_chat(user, "<span class='userdanger'>The armor squeezes at your body!</span>")
|
to_chat(user, "<span class='userdanger'>The armor squeezes at your body!</span>")
|
||||||
@@ -457,7 +457,7 @@
|
|||||||
to_chat(user, "<span class='warning'>An overwhelming sense of nausea overpowers you!</span>")
|
to_chat(user, "<span class='warning'>An overwhelming sense of nausea overpowers you!</span>")
|
||||||
user.dropItemToGround(src, TRUE)
|
user.dropItemToGround(src, TRUE)
|
||||||
user.Dizzy(30)
|
user.Dizzy(30)
|
||||||
user.Knockdown(100)
|
user.DefaultCombatKnockdown(100)
|
||||||
else
|
else
|
||||||
to_chat(user, "<span class='cultlarge'>\"Trying to use things you don't own is bad, you know.\"</span>")
|
to_chat(user, "<span class='cultlarge'>\"Trying to use things you don't own is bad, you know.\"</span>")
|
||||||
to_chat(user, "<span class='userdanger'>The robes squeeze at your body!</span>")
|
to_chat(user, "<span class='userdanger'>The robes squeeze at your body!</span>")
|
||||||
@@ -478,7 +478,7 @@
|
|||||||
to_chat(user, "<span class='cultlarge'>\"You want to be blind, do you?\"</span>")
|
to_chat(user, "<span class='cultlarge'>\"You want to be blind, do you?\"</span>")
|
||||||
user.dropItemToGround(src, TRUE)
|
user.dropItemToGround(src, TRUE)
|
||||||
user.Dizzy(30)
|
user.Dizzy(30)
|
||||||
user.Knockdown(100)
|
user.DefaultCombatKnockdown(100)
|
||||||
user.blind_eyes(30)
|
user.blind_eyes(30)
|
||||||
|
|
||||||
/obj/item/reagent_containers/glass/beaker/unholywater
|
/obj/item/reagent_containers/glass/beaker/unholywater
|
||||||
@@ -499,7 +499,7 @@
|
|||||||
/obj/item/shuttle_curse/attack_self(mob/living/user)
|
/obj/item/shuttle_curse/attack_self(mob/living/user)
|
||||||
if(!iscultist(user))
|
if(!iscultist(user))
|
||||||
user.dropItemToGround(src, TRUE)
|
user.dropItemToGround(src, TRUE)
|
||||||
user.Knockdown(100)
|
user.DefaultCombatKnockdown(100)
|
||||||
to_chat(user, "<span class='warning'>A powerful force shoves you away from [src]!</span>")
|
to_chat(user, "<span class='warning'>A powerful force shoves you away from [src]!</span>")
|
||||||
return
|
return
|
||||||
if(curselimit > 1)
|
if(curselimit > 1)
|
||||||
@@ -705,10 +705,10 @@
|
|||||||
if(is_servant_of_ratvar(L))
|
if(is_servant_of_ratvar(L))
|
||||||
to_chat(L, "<span class='cultlarge'>\"Kneel for me, scum\"</span>")
|
to_chat(L, "<span class='cultlarge'>\"Kneel for me, scum\"</span>")
|
||||||
L.confused += CLAMP(10 - L.confused, 0, 5) //confuses and lightly knockdowns + damages hostile cultists instead of hardstunning like before
|
L.confused += CLAMP(10 - L.confused, 0, 5) //confuses and lightly knockdowns + damages hostile cultists instead of hardstunning like before
|
||||||
L.Knockdown(15)
|
L.DefaultCombatKnockdown(15)
|
||||||
L.adjustBruteLoss(10)
|
L.adjustBruteLoss(10)
|
||||||
else
|
else
|
||||||
L.Knockdown(50)
|
L.DefaultCombatKnockdown(50)
|
||||||
break_spear(T)
|
break_spear(T)
|
||||||
else
|
else
|
||||||
..()
|
..()
|
||||||
@@ -843,7 +843,7 @@
|
|||||||
INVOKE_ASYNC(src, .proc/pewpew, user, params)
|
INVOKE_ASYNC(src, .proc/pewpew, user, params)
|
||||||
var/obj/structure/emergency_shield/invoker/N = new(user.loc)
|
var/obj/structure/emergency_shield/invoker/N = new(user.loc)
|
||||||
if(do_after(user, 90, target = user))
|
if(do_after(user, 90, target = user))
|
||||||
user.Knockdown(40)
|
user.DefaultCombatKnockdown(40)
|
||||||
to_chat(user, "<span class='cult italic'>You have exhausted the power of this spell!</span>")
|
to_chat(user, "<span class='cult italic'>You have exhausted the power of this spell!</span>")
|
||||||
firing = FALSE
|
firing = FALSE
|
||||||
if(N)
|
if(N)
|
||||||
@@ -908,7 +908,7 @@
|
|||||||
else
|
else
|
||||||
var/mob/living/L = target
|
var/mob/living/L = target
|
||||||
if(L.density)
|
if(L.density)
|
||||||
L.Knockdown(20)
|
L.DefaultCombatKnockdown(20)
|
||||||
L.adjustBruteLoss(45)
|
L.adjustBruteLoss(45)
|
||||||
playsound(L, 'sound/hallucinations/wail.ogg', 50, 1)
|
playsound(L, 'sound/hallucinations/wail.ogg', 50, 1)
|
||||||
L.emote("scream")
|
L.emote("scream")
|
||||||
@@ -944,7 +944,7 @@
|
|||||||
T.visible_message("<span class='warning'>The sheer force from [P] shatters the mirror shield!</span>")
|
T.visible_message("<span class='warning'>The sheer force from [P] shatters the mirror shield!</span>")
|
||||||
new /obj/effect/temp_visual/cult/sparks(T)
|
new /obj/effect/temp_visual/cult/sparks(T)
|
||||||
playsound(T, 'sound/effects/glassbr3.ogg', 100)
|
playsound(T, 'sound/effects/glassbr3.ogg', 100)
|
||||||
owner.Knockdown(25)
|
owner.DefaultCombatKnockdown(25)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return FALSE
|
return FALSE
|
||||||
if(P.is_reflectable)
|
if(P.is_reflectable)
|
||||||
@@ -1001,9 +1001,9 @@
|
|||||||
else if(!..())
|
else if(!..())
|
||||||
if(!L.anti_magic_check())
|
if(!L.anti_magic_check())
|
||||||
if(is_servant_of_ratvar(L))
|
if(is_servant_of_ratvar(L))
|
||||||
L.Knockdown(60)
|
L.DefaultCombatKnockdown(60)
|
||||||
else
|
else
|
||||||
L.Knockdown(30)
|
L.DefaultCombatKnockdown(30)
|
||||||
if(D.thrower)
|
if(D.thrower)
|
||||||
for(var/mob/living/Next in orange(2, T))
|
for(var/mob/living/Next in orange(2, T))
|
||||||
if(!Next.density || iscultist(Next))
|
if(!Next.density || iscultist(Next))
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
|||||||
L.visible_message("<span class='warning'>[L]'s eyes glow a defiant yellow!</span>", \
|
L.visible_message("<span class='warning'>[L]'s eyes glow a defiant yellow!</span>", \
|
||||||
"<span class='cultlarge'>\"Stop resisting. You <i>will</i> be mi-\"</span>\n\
|
"<span class='cultlarge'>\"Stop resisting. You <i>will</i> be mi-\"</span>\n\
|
||||||
<span class='large_brass'>\"Give up and you will feel pain unlike anything you've ever felt!\"</span>")
|
<span class='large_brass'>\"Give up and you will feel pain unlike anything you've ever felt!\"</span>")
|
||||||
L.Knockdown(80)
|
L.DefaultCombatKnockdown(80)
|
||||||
else if(is_convertable)
|
else if(is_convertable)
|
||||||
do_convert(L, invokers)
|
do_convert(L, invokers)
|
||||||
else
|
else
|
||||||
@@ -908,7 +908,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
|||||||
if(affecting.key)
|
if(affecting.key)
|
||||||
affecting.visible_message("<span class='warning'>[affecting] slowly relaxes, the glow around [affecting.p_them()] dimming.</span>", \
|
affecting.visible_message("<span class='warning'>[affecting] slowly relaxes, the glow around [affecting.p_them()] dimming.</span>", \
|
||||||
"<span class='danger'>You are re-united with your physical form. [src] releases its hold over you.</span>")
|
"<span class='danger'>You are re-united with your physical form. [src] releases its hold over you.</span>")
|
||||||
affecting.Knockdown(40)
|
affecting.DefaultCombatKnockdown(40)
|
||||||
break
|
break
|
||||||
if(affecting.health <= 10)
|
if(affecting.health <= 10)
|
||||||
to_chat(G, "<span class='cultitalic'>Your body can no longer sustain the connection!</span>")
|
to_chat(G, "<span class='cultitalic'>Your body can no longer sustain the connection!</span>")
|
||||||
@@ -970,7 +970,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
|||||||
playsound(T, 'sound/magic/enter_blood.ogg', 100, 1)
|
playsound(T, 'sound/magic/enter_blood.ogg', 100, 1)
|
||||||
visible_message("<span class='warning'>A colossal shockwave of energy bursts from the rune, disintegrating it in the process!</span>")
|
visible_message("<span class='warning'>A colossal shockwave of energy bursts from the rune, disintegrating it in the process!</span>")
|
||||||
for(var/mob/living/L in range(src, 3))
|
for(var/mob/living/L in range(src, 3))
|
||||||
L.Knockdown(30)
|
L.DefaultCombatKnockdown(30)
|
||||||
empulse(T, 0.42*(intensity), 1)
|
empulse(T, 0.42*(intensity), 1)
|
||||||
var/list/images = list()
|
var/list/images = list()
|
||||||
var/zmatch = T.z
|
var/zmatch = T.z
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
if(BANE_HARVEST)
|
if(BANE_HARVEST)
|
||||||
if(istype(weapon, /obj/item/reagent_containers/food/snacks/grown/))
|
if(istype(weapon, /obj/item/reagent_containers/food/snacks/grown/))
|
||||||
visible_message("<span class='warning'>The spirits of the harvest aid in the exorcism.</span>", "<span class='notice'>The harvest spirits are harming you.</span>")
|
visible_message("<span class='warning'>The spirits of the harvest aid in the exorcism.</span>", "<span class='notice'>The harvest spirits are harming you.</span>")
|
||||||
Knockdown(40)
|
DefaultCombatKnockdown(40)
|
||||||
qdel(weapon)
|
qdel(weapon)
|
||||||
return 2
|
return 2
|
||||||
return 1
|
return 1
|
||||||
@@ -584,7 +584,7 @@
|
|||||||
playsound(loc,'sound/effects/snap.ogg',50, 1, -1)
|
playsound(loc,'sound/effects/snap.ogg',50, 1, -1)
|
||||||
L.electrocute_act(0, src, 1, 1, 1)
|
L.electrocute_act(0, src, 1, 1, 1)
|
||||||
if(iscyborg(L))
|
if(iscyborg(L))
|
||||||
L.Knockdown(100)
|
L.DefaultCombatKnockdown(100)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|||||||
@@ -261,7 +261,7 @@
|
|||||||
GiveHint(target)
|
GiveHint(target)
|
||||||
else if(is_pointed(I))
|
else if(is_pointed(I))
|
||||||
to_chat(target, "<span class='userdanger'>You feel a stabbing pain in [parse_zone(user.zone_selected)]!</span>")
|
to_chat(target, "<span class='userdanger'>You feel a stabbing pain in [parse_zone(user.zone_selected)]!</span>")
|
||||||
target.Knockdown(40)
|
target.DefaultCombatKnockdown(40)
|
||||||
GiveHint(target)
|
GiveHint(target)
|
||||||
else if(istype(I, /obj/item/bikehorn))
|
else if(istype(I, /obj/item/bikehorn))
|
||||||
to_chat(target, "<span class='userdanger'>HONK</span>")
|
to_chat(target, "<span class='userdanger'>HONK</span>")
|
||||||
|
|||||||
@@ -150,7 +150,7 @@
|
|||||||
var/mob/living/silicon/robot/R = M
|
var/mob/living/silicon/robot/R = M
|
||||||
log_combat(user, R, "flashed", src)
|
log_combat(user, R, "flashed", src)
|
||||||
update_icon(1)
|
update_icon(1)
|
||||||
R.Knockdown(rand(80,120))
|
R.DefaultCombatKnockdown(rand(80,120))
|
||||||
var/diff = 5 * CONFUSION_STACK_MAX_MULTIPLIER - M.confused
|
var/diff = 5 * CONFUSION_STACK_MAX_MULTIPLIER - M.confused
|
||||||
R.confused += min(5, diff)
|
R.confused += min(5, diff)
|
||||||
R.flash_act(affect_silicon = 1)
|
R.flash_act(affect_silicon = 1)
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
. = ..()
|
. = ..()
|
||||||
new /obj/effect/temp_visual/borgflash(get_turf(src))
|
new /obj/effect/temp_visual/borgflash(get_turf(src))
|
||||||
if(. && !CONFIG_GET(flag/disable_borg_flash_knockdown) && iscarbon(M) && !M.resting && !M.get_eye_protection())
|
if(. && !CONFIG_GET(flag/disable_borg_flash_knockdown) && iscarbon(M) && !M.resting && !M.get_eye_protection())
|
||||||
M.Knockdown(80)
|
M.DefaultCombatKnockdown(80)
|
||||||
|
|
||||||
/obj/item/assembly/flash/cyborg/attack_self(mob/user)
|
/obj/item/assembly/flash/cyborg/attack_self(mob/user)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
if("feet")
|
if("feet")
|
||||||
if(!H.shoes)
|
if(!H.shoes)
|
||||||
affecting = H.get_bodypart(pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
|
affecting = H.get_bodypart(pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG))
|
||||||
H.Knockdown(60)
|
H.DefaultCombatKnockdown(60)
|
||||||
if(BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND)
|
if(BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND)
|
||||||
if(!H.gloves)
|
if(!H.gloves)
|
||||||
affecting = H.get_bodypart(type)
|
affecting = H.get_bodypart(type)
|
||||||
|
|||||||
@@ -220,7 +220,7 @@
|
|||||||
if(user.wear_suit == src)
|
if(user.wear_suit == src)
|
||||||
if(hard_landing)
|
if(hard_landing)
|
||||||
user.electrocute_act(35, src, safety = 1)
|
user.electrocute_act(35, src, safety = 1)
|
||||||
user.Knockdown(200)
|
user.DefaultCombatKnockdown(200)
|
||||||
if(!silent)
|
if(!silent)
|
||||||
to_chat(user, "\nroot@ChronosuitMK4# chronowalk4 --stop\n")
|
to_chat(user, "\nroot@ChronosuitMK4# chronowalk4 --stop\n")
|
||||||
if(camera)
|
if(camera)
|
||||||
|
|||||||
@@ -481,7 +481,7 @@
|
|||||||
adjust_momentum(0, 0, 10)
|
adjust_momentum(0, 0, 10)
|
||||||
wearer.visible_message("<span class='warning'>[wearer]'s flight suit crashes into the ground!</span>")
|
wearer.visible_message("<span class='warning'>[wearer]'s flight suit crashes into the ground!</span>")
|
||||||
if(knockdown)
|
if(knockdown)
|
||||||
wearer.Knockdown(80)
|
wearer.DefaultCombatKnockdown(80)
|
||||||
momentum_x = 0
|
momentum_x = 0
|
||||||
momentum_y = 0
|
momentum_y = 0
|
||||||
calculate_momentum_speed()
|
calculate_momentum_speed()
|
||||||
|
|||||||
@@ -242,7 +242,7 @@
|
|||||||
return
|
return
|
||||||
owner.visible_message("<span class='danger'>The reactive teleport system flings [H] clear of [attack_text] and slams [H.p_them()] into a fabricated table!</span>")
|
owner.visible_message("<span class='danger'>The reactive teleport system flings [H] clear of [attack_text] and slams [H.p_them()] into a fabricated table!</span>")
|
||||||
owner.visible_message("<font color='red' size='3'>[H] GOES ON THE TABLE!!!</font>")
|
owner.visible_message("<font color='red' size='3'>[H] GOES ON THE TABLE!!!</font>")
|
||||||
owner.Knockdown(40)
|
owner.DefaultCombatKnockdown(40)
|
||||||
var/list/turfs = new/list()
|
var/list/turfs = new/list()
|
||||||
for(var/turf/T in orange(tele_range, H))
|
for(var/turf/T in orange(tele_range, H))
|
||||||
if(T.density)
|
if(T.density)
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
if(R.has_buckled_mobs())
|
if(R.has_buckled_mobs())
|
||||||
for(var/mob/living/L in R.buckled_mobs)
|
for(var/mob/living/L in R.buckled_mobs)
|
||||||
L.visible_message("<span class='warning'>[L] is knocked off of [R] by the charge in [R]'s chassis induced by [name]!</span>") //I know it's bad.
|
L.visible_message("<span class='warning'>[L] is knocked off of [R] by the charge in [R]'s chassis induced by [name]!</span>") //I know it's bad.
|
||||||
L.Knockdown(10)
|
L.DefaultCombatKnockdown(10)
|
||||||
R.unbuckle_mob(L)
|
R.unbuckle_mob(L)
|
||||||
do_sparks(5, 0, L)
|
do_sparks(5, 0, L)
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
|
|||||||
/obj/effect/hallucination/simple/xeno/throw_impact(A)
|
/obj/effect/hallucination/simple/xeno/throw_impact(A)
|
||||||
update_icon("alienh_pounce")
|
update_icon("alienh_pounce")
|
||||||
if(A == target && target.stat!=DEAD)
|
if(A == target && target.stat!=DEAD)
|
||||||
target.Knockdown(100)
|
target.DefaultCombatKnockdown(100)
|
||||||
target.visible_message("<span class='danger'>[target] flails around wildly.</span>","<span class ='userdanger'>[name] pounces on you!</span>")
|
target.visible_message("<span class='danger'>[target] flails around wildly.</span>","<span class ='userdanger'>[name] pounces on you!</span>")
|
||||||
|
|
||||||
/datum/hallucination/xeno_attack
|
/datum/hallucination/xeno_attack
|
||||||
@@ -304,7 +304,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
|
|||||||
shake_camera(target, 2, 1)
|
shake_camera(target, 2, 1)
|
||||||
if(bubblegum.Adjacent(target) && !charged)
|
if(bubblegum.Adjacent(target) && !charged)
|
||||||
charged = TRUE
|
charged = TRUE
|
||||||
target.Knockdown(80)
|
target.DefaultCombatKnockdown(80)
|
||||||
target.adjustStaminaLoss(40)
|
target.adjustStaminaLoss(40)
|
||||||
step_away(target, bubblegum)
|
step_away(target, bubblegum)
|
||||||
shake_camera(target, 4, 3)
|
shake_camera(target, 4, 3)
|
||||||
@@ -1102,7 +1102,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
|
|||||||
if(istype(target, /obj/effect/dummy/phased_mob))
|
if(istype(target, /obj/effect/dummy/phased_mob))
|
||||||
return
|
return
|
||||||
to_chat(target, "<span class='userdanger'>You fall into the chasm!</span>")
|
to_chat(target, "<span class='userdanger'>You fall into the chasm!</span>")
|
||||||
target.Knockdown(40)
|
target.DefaultCombatKnockdown(40)
|
||||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, target, "<span class='notice'>It's surprisingly shallow.</span>"), 15)
|
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, target, "<span class='notice'>It's surprisingly shallow.</span>"), 15)
|
||||||
QDEL_IN(src, 30)
|
QDEL_IN(src, 30)
|
||||||
|
|
||||||
@@ -1136,7 +1136,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
|
|||||||
set waitfor = FALSE
|
set waitfor = FALSE
|
||||||
..()
|
..()
|
||||||
target.set_screwyhud(SCREWYHUD_DEAD)
|
target.set_screwyhud(SCREWYHUD_DEAD)
|
||||||
target.Knockdown(300)
|
target.DefaultCombatKnockdown(300)
|
||||||
target.silent += 10
|
target.silent += 10
|
||||||
to_chat(target, "<span class='deadsay'><b>[target.real_name]</b> has died at <b>[get_area_name(target)]</b>.</span>")
|
to_chat(target, "<span class='deadsay'><b>[target.real_name]</b> has died at <b>[get_area_name(target)]</b>.</span>")
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
@@ -1241,7 +1241,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
|
|||||||
|
|
||||||
/datum/hallucination/shock/proc/shock_drop()
|
/datum/hallucination/shock/proc/shock_drop()
|
||||||
target.jitteriness = max(target.jitteriness - 990, 10) //Still jittery, but vastly less
|
target.jitteriness = max(target.jitteriness - 990, 10) //Still jittery, but vastly less
|
||||||
target.Knockdown(60)
|
target.DefaultCombatKnockdown(60)
|
||||||
|
|
||||||
/datum/hallucination/husks
|
/datum/hallucination/husks
|
||||||
|
|
||||||
@@ -1314,7 +1314,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
|
|||||||
"<span class='userdanger'>[G] grabs your wrist and violently wrenches it to the side!</span>")
|
"<span class='userdanger'>[G] grabs your wrist and violently wrenches it to the side!</span>")
|
||||||
C.emote("scream")
|
C.emote("scream")
|
||||||
C.dropItemToGround(C.get_active_held_item())
|
C.dropItemToGround(C.get_active_held_item())
|
||||||
C.Knockdown(60)
|
C.DefaultCombatKnockdown(60)
|
||||||
else
|
else
|
||||||
to_chat(C,"<span class='userdanger'>[G] violently grabs you!</span>")
|
to_chat(C,"<span class='userdanger'>[G] violently grabs you!</span>")
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|||||||
@@ -85,7 +85,7 @@
|
|||||||
head_attack_message = " on the head"
|
head_attack_message = " on the head"
|
||||||
//Knockdown the target for the duration that we calculated and divide it by 5.
|
//Knockdown the target for the duration that we calculated and divide it by 5.
|
||||||
if(armor_duration)
|
if(armor_duration)
|
||||||
target.Knockdown(min(armor_duration, 200)) // Never knockdown more than a flash!
|
target.DefaultCombatKnockdown(min(armor_duration, 200)) // Never knockdown more than a flash!
|
||||||
|
|
||||||
//Display an attack message.
|
//Display an attack message.
|
||||||
if(target != user)
|
if(target != user)
|
||||||
|
|||||||
@@ -225,7 +225,7 @@
|
|||||||
if(iscarbon(M))
|
if(iscarbon(M))
|
||||||
M.visible_message("[src] bursts out of [M]!</span>")
|
M.visible_message("[src] bursts out of [M]!</span>")
|
||||||
M.emote("scream")
|
M.emote("scream")
|
||||||
M.Knockdown(40)
|
M.DefaultCombatKnockdown(40)
|
||||||
M.adjustBruteLoss(60)
|
M.adjustBruteLoss(60)
|
||||||
Expand()
|
Expand()
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
else
|
else
|
||||||
creamoverlay.icon_state = "creampie_human"
|
creamoverlay.icon_state = "creampie_human"
|
||||||
if(stunning)
|
if(stunning)
|
||||||
H.Knockdown(20) //splat!
|
H.DefaultCombatKnockdown(20) //splat!
|
||||||
H.adjust_blurriness(1)
|
H.adjust_blurriness(1)
|
||||||
H.visible_message("<span class='warning'>[H] is creamed by [src]!</span>", "<span class='userdanger'>You've been creamed by [src]!</span>")
|
H.visible_message("<span class='warning'>[H] is creamed by [src]!</span>", "<span class='userdanger'>You've been creamed by [src]!</span>")
|
||||||
playsound(H, "desceration", 50, TRUE)
|
playsound(H, "desceration", 50, TRUE)
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
A.throw_at(T, 1, 1)
|
A.throw_at(T, 1, 1)
|
||||||
M.visible_message("[src] bursts out of [M]!</span>")
|
M.visible_message("[src] bursts out of [M]!</span>")
|
||||||
M.emote("scream")
|
M.emote("scream")
|
||||||
M.Knockdown(40)
|
M.DefaultCombatKnockdown(40)
|
||||||
M.adjustBruteLoss(60)
|
M.adjustBruteLoss(60)
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
|||||||
@@ -150,6 +150,6 @@ God bless America.
|
|||||||
reagents.reaction(C, TOUCH)
|
reagents.reaction(C, TOUCH)
|
||||||
C.apply_damage(min(30, reagents.total_volume), BURN, BODY_ZONE_HEAD)
|
C.apply_damage(min(30, reagents.total_volume), BURN, BODY_ZONE_HEAD)
|
||||||
reagents.remove_any((reagents.total_volume/2))
|
reagents.remove_any((reagents.total_volume/2))
|
||||||
C.Knockdown(60)
|
C.DefaultCombatKnockdown(60)
|
||||||
user.changeNext_move(CLICK_CD_MELEE)
|
user.changeNext_move(CLICK_CD_MELEE)
|
||||||
return ..()
|
return ..()
|
||||||
|
|||||||
@@ -87,7 +87,7 @@
|
|||||||
playsound(src, 'sound/items/dodgeball.ogg', 50, 1)
|
playsound(src, 'sound/items/dodgeball.ogg', 50, 1)
|
||||||
M.apply_damage(10, STAMINA)
|
M.apply_damage(10, STAMINA)
|
||||||
if(prob(5))
|
if(prob(5))
|
||||||
M.Knockdown(60)
|
M.DefaultCombatKnockdown(60)
|
||||||
visible_message("<span class='danger'>[M] is knocked right off [M.p_their()] feet!</span>")
|
visible_message("<span class='danger'>[M] is knocked right off [M.p_their()] feet!</span>")
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -117,7 +117,7 @@
|
|||||||
to_chat(user, "<span class='warning'>You need a better grip to do that!</span>")
|
to_chat(user, "<span class='warning'>You need a better grip to do that!</span>")
|
||||||
return
|
return
|
||||||
L.forceMove(loc)
|
L.forceMove(loc)
|
||||||
L.Knockdown(100)
|
L.DefaultCombatKnockdown(100)
|
||||||
visible_message("<span class='danger'>[user] dunks [L] into \the [src]!</span>")
|
visible_message("<span class='danger'>[user] dunks [L] into \the [src]!</span>")
|
||||||
user.stop_pulling()
|
user.stop_pulling()
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
/obj/item/reagent_containers/food/snacks/grown/nettle/death/pickup(mob/living/carbon/user)
|
/obj/item/reagent_containers/food/snacks/grown/nettle/death/pickup(mob/living/carbon/user)
|
||||||
if(..())
|
if(..())
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
user.Knockdown(100)
|
user.DefaultCombatKnockdown(100)
|
||||||
to_chat(user, "<span class='userdanger'>You are stunned by the Deathnettle as you try picking it up!</span>")
|
to_chat(user, "<span class='userdanger'>You are stunned by the Deathnettle as you try picking it up!</span>")
|
||||||
|
|
||||||
/obj/item/reagent_containers/food/snacks/grown/nettle/death/attack(mob/living/carbon/M, mob/user)
|
/obj/item/reagent_containers/food/snacks/grown/nettle/death/attack(mob/living/carbon/M, mob/user)
|
||||||
@@ -111,5 +111,5 @@
|
|||||||
M.adjust_blurriness(force/7)
|
M.adjust_blurriness(force/7)
|
||||||
if(prob(20))
|
if(prob(20))
|
||||||
M.Unconscious(force / 0.3)
|
M.Unconscious(force / 0.3)
|
||||||
M.Knockdown(force / 0.75)
|
M.DefaultCombatKnockdown(force / 0.75)
|
||||||
M.drop_all_held_items()
|
M.drop_all_held_items()
|
||||||
|
|||||||
@@ -336,7 +336,7 @@
|
|||||||
if(!L || !isliving(L))
|
if(!L || !isliving(L))
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
L.Knockdown(stunforce)
|
L.DefaultCombatKnockdown(stunforce)
|
||||||
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK)
|
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK)
|
||||||
|
|
||||||
message_admins("stunned someone with an assembly. Last touches: Assembly: [assembly.fingerprintslast] Circuit: [fingerprintslast]")
|
message_admins("stunned someone with an assembly. Last touches: Assembly: [assembly.fingerprintslast] Circuit: [fingerprintslast]")
|
||||||
|
|||||||
@@ -93,7 +93,7 @@
|
|||||||
playsound(M,'sound/weapons/resonator_blast.ogg',50,1)
|
playsound(M,'sound/weapons/resonator_blast.ogg',50,1)
|
||||||
if(iscarbon(M))
|
if(iscarbon(M))
|
||||||
var/mob/living/carbon/L = M
|
var/mob/living/carbon/L = M
|
||||||
L.Knockdown(60)
|
L.DefaultCombatKnockdown(60)
|
||||||
if(ishuman(L))
|
if(ishuman(L))
|
||||||
shake_camera(L, 20, 1)
|
shake_camera(L, 20, 1)
|
||||||
addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20)
|
addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20)
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons)
|
|||||||
var/mutable_appearance/balloon3
|
var/mutable_appearance/balloon3
|
||||||
if(isliving(A))
|
if(isliving(A))
|
||||||
var/mob/living/M = A
|
var/mob/living/M = A
|
||||||
M.Knockdown(320) // Keep them from moving during the duration of the extraction
|
M.DefaultCombatKnockdown(320) // Keep them from moving during the duration of the extraction
|
||||||
M.buckled = 0 // Unbuckle them to prevent anchoring problems
|
M.buckled = 0 // Unbuckle them to prevent anchoring problems
|
||||||
else
|
else
|
||||||
A.anchored = TRUE
|
A.anchored = TRUE
|
||||||
|
|||||||
@@ -65,16 +65,16 @@
|
|||||||
var/mob/living/L = A
|
var/mob/living/L = A
|
||||||
if(!L.check_shields(src, 0, "the [name]", attack_type = LEAP_ATTACK))
|
if(!L.check_shields(src, 0, "the [name]", attack_type = LEAP_ATTACK))
|
||||||
L.visible_message("<span class ='danger'>[src] pounces on [L]!</span>", "<span class ='userdanger'>[src] pounces on you!</span>")
|
L.visible_message("<span class ='danger'>[src] pounces on [L]!</span>", "<span class ='userdanger'>[src] pounces on you!</span>")
|
||||||
L.Knockdown(100)
|
L.DefaultCombatKnockdown(100)
|
||||||
sleep(2)//Runtime prevention (infinite bump() calls on hulks)
|
sleep(2)//Runtime prevention (infinite bump() calls on hulks)
|
||||||
step_towards(src,L)
|
step_towards(src,L)
|
||||||
else
|
else
|
||||||
Knockdown(40, 1, 1)
|
DefaultCombatKnockdown(40, 1, 1)
|
||||||
|
|
||||||
toggle_leap(0)
|
toggle_leap(0)
|
||||||
else if(A.density && !A.CanPass(src))
|
else if(A.density && !A.CanPass(src))
|
||||||
visible_message("<span class ='danger'>[src] smashes into [A]!</span>", "<span class ='alertalien'>[src] smashes into [A]!</span>")
|
visible_message("<span class ='danger'>[src] smashes into [A]!</span>", "<span class ='alertalien'>[src] smashes into [A]!</span>")
|
||||||
Knockdown(40, 1, 1)
|
DefaultCombatKnockdown(40, 1, 1)
|
||||||
|
|
||||||
if(leaping)
|
if(leaping)
|
||||||
leaping = 0
|
leaping = 0
|
||||||
|
|||||||
@@ -138,7 +138,7 @@
|
|||||||
else if(ishuman(owner)) //Humans, being more fragile, are more overwhelmed by the mental backlash.
|
else if(ishuman(owner)) //Humans, being more fragile, are more overwhelmed by the mental backlash.
|
||||||
to_chat(owner, "<span class='danger'>You feel a splitting pain in your head, and are struck with a wave of nausea. You cannot hear the hivemind anymore!</span>")
|
to_chat(owner, "<span class='danger'>You feel a splitting pain in your head, and are struck with a wave of nausea. You cannot hear the hivemind anymore!</span>")
|
||||||
owner.emote("scream")
|
owner.emote("scream")
|
||||||
owner.Knockdown(100)
|
owner.DefaultCombatKnockdown(100)
|
||||||
|
|
||||||
owner.jitteriness += 30
|
owner.jitteriness += 30
|
||||||
owner.confused += 30
|
owner.confused += 30
|
||||||
|
|||||||
@@ -105,7 +105,7 @@
|
|||||||
hurt = FALSE
|
hurt = FALSE
|
||||||
if(hit_atom.density && isturf(hit_atom))
|
if(hit_atom.density && isturf(hit_atom))
|
||||||
if(hurt)
|
if(hurt)
|
||||||
Knockdown(20)
|
DefaultCombatKnockdown(20)
|
||||||
take_bodypart_damage(10)
|
take_bodypart_damage(10)
|
||||||
if(iscarbon(hit_atom) && hit_atom != src)
|
if(iscarbon(hit_atom) && hit_atom != src)
|
||||||
var/mob/living/carbon/victim = hit_atom
|
var/mob/living/carbon/victim = hit_atom
|
||||||
@@ -114,8 +114,8 @@
|
|||||||
if(hurt)
|
if(hurt)
|
||||||
victim.take_bodypart_damage(10)
|
victim.take_bodypart_damage(10)
|
||||||
take_bodypart_damage(10)
|
take_bodypart_damage(10)
|
||||||
victim.Knockdown(20)
|
victim.DefaultCombatKnockdown(20)
|
||||||
Knockdown(20)
|
DefaultCombatKnockdown(20)
|
||||||
visible_message("<span class='danger'>[src] crashes into [victim], knocking them both over!</span>",\
|
visible_message("<span class='danger'>[src] crashes into [victim], knocking them both over!</span>",\
|
||||||
"<span class='userdanger'>You violently crash into [victim]!</span>")
|
"<span class='userdanger'>You violently crash into [victim]!</span>")
|
||||||
playsound(src,'sound/weapons/punch1.ogg',50,1)
|
playsound(src,'sound/weapons/punch1.ogg',50,1)
|
||||||
@@ -304,7 +304,7 @@
|
|||||||
|
|
||||||
/mob/living/carbon/resist_fire()
|
/mob/living/carbon/resist_fire()
|
||||||
fire_stacks -= 5
|
fire_stacks -= 5
|
||||||
Knockdown(60, TRUE, TRUE)
|
DefaultCombatKnockdown(60, TRUE, TRUE)
|
||||||
spin(32,2)
|
spin(32,2)
|
||||||
visible_message("<span class='danger'>[src] rolls on the floor, trying to put [p_them()]self out!</span>", \
|
visible_message("<span class='danger'>[src] rolls on the floor, trying to put [p_them()]self out!</span>", \
|
||||||
"<span class='notice'>You stop, drop, and roll!</span>")
|
"<span class='notice'>You stop, drop, and roll!</span>")
|
||||||
@@ -490,7 +490,7 @@
|
|||||||
visible_message("<span class='warning'>[src] dry heaves!</span>", \
|
visible_message("<span class='warning'>[src] dry heaves!</span>", \
|
||||||
"<span class='userdanger'>You try to throw up, but there's nothing in your stomach!</span>")
|
"<span class='userdanger'>You try to throw up, but there's nothing in your stomach!</span>")
|
||||||
if(stun)
|
if(stun)
|
||||||
Knockdown(200)
|
DefaultCombatKnockdown(200)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
if(is_mouth_covered()) //make this add a blood/vomit overlay later it'll be hilarious
|
if(is_mouth_covered()) //make this add a blood/vomit overlay later it'll be hilarious
|
||||||
@@ -576,7 +576,7 @@
|
|||||||
if(total_health <= crit_threshold && !stat)
|
if(total_health <= crit_threshold && !stat)
|
||||||
if(!IsKnockdown())
|
if(!IsKnockdown())
|
||||||
to_chat(src, "<span class='notice'>You're too exhausted to keep going...</span>")
|
to_chat(src, "<span class='notice'>You're too exhausted to keep going...</span>")
|
||||||
Knockdown(100)
|
DefaultCombatKnockdown(100)
|
||||||
update_health_hud()
|
update_health_hud()
|
||||||
|
|
||||||
/mob/living/carbon/update_sight()
|
/mob/living/carbon/update_sight()
|
||||||
|
|||||||
@@ -188,7 +188,7 @@
|
|||||||
|
|
||||||
do_sparks(5, TRUE, src)
|
do_sparks(5, TRUE, src)
|
||||||
var/power = M.powerlevel + rand(0,3)
|
var/power = M.powerlevel + rand(0,3)
|
||||||
Knockdown(power*20)
|
DefaultCombatKnockdown(power*20)
|
||||||
if(stuttering < power)
|
if(stuttering < power)
|
||||||
stuttering = power
|
stuttering = power
|
||||||
if (prob(stunprob) && M.powerlevel >= 8)
|
if (prob(stunprob) && M.powerlevel >= 8)
|
||||||
@@ -262,7 +262,7 @@
|
|||||||
spawn(20)
|
spawn(20)
|
||||||
jitteriness = max(jitteriness - 990, 10) //Still jittery, but vastly less
|
jitteriness = max(jitteriness - 990, 10) //Still jittery, but vastly less
|
||||||
if((!tesla_shock || (tesla_shock && siemens_coeff > 0.5)) && stun)
|
if((!tesla_shock || (tesla_shock && siemens_coeff > 0.5)) && stun)
|
||||||
Knockdown(60)
|
DefaultCombatKnockdown(60)
|
||||||
if(override)
|
if(override)
|
||||||
return override
|
return override
|
||||||
else
|
else
|
||||||
@@ -415,7 +415,7 @@
|
|||||||
var/effect_amount = intensity - ear_safety
|
var/effect_amount = intensity - ear_safety
|
||||||
if(effect_amount > 0)
|
if(effect_amount > 0)
|
||||||
if(stun_pwr)
|
if(stun_pwr)
|
||||||
Knockdown(stun_pwr*effect_amount)
|
DefaultCombatKnockdown(stun_pwr*effect_amount)
|
||||||
|
|
||||||
if(istype(ears) && (deafen_pwr || damage_pwr))
|
if(istype(ears) && (deafen_pwr || damage_pwr))
|
||||||
var/ear_damage = damage_pwr * effect_amount
|
var/ear_damage = damage_pwr * effect_amount
|
||||||
|
|||||||
@@ -842,7 +842,7 @@
|
|||||||
visible_message("<span class='warning'>[src] dry heaves!</span>", \
|
visible_message("<span class='warning'>[src] dry heaves!</span>", \
|
||||||
"<span class='userdanger'>You try to throw up, but there's nothing in your stomach!</span>")
|
"<span class='userdanger'>You try to throw up, but there's nothing in your stomach!</span>")
|
||||||
if(stun)
|
if(stun)
|
||||||
Knockdown(200)
|
DefaultCombatKnockdown(200)
|
||||||
return 1
|
return 1
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|||||||
@@ -176,7 +176,7 @@
|
|||||||
"<span class='userdanger'>[M] disarmed [src]!</span>")
|
"<span class='userdanger'>[M] disarmed [src]!</span>")
|
||||||
else if(!M.client || prob(5)) // only natural monkeys get to stun reliably, (they only do it occasionaly)
|
else if(!M.client || prob(5)) // only natural monkeys get to stun reliably, (they only do it occasionaly)
|
||||||
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
|
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
|
||||||
Knockdown(100)
|
DefaultCombatKnockdown(100)
|
||||||
log_combat(M, src, "tackled")
|
log_combat(M, src, "tackled")
|
||||||
visible_message("<span class='danger'>[M] has tackled down [src]!</span>", \
|
visible_message("<span class='danger'>[M] has tackled down [src]!</span>", \
|
||||||
"<span class='userdanger'>[M] has tackled down [src]!</span>")
|
"<span class='userdanger'>[M] has tackled down [src]!</span>")
|
||||||
@@ -225,9 +225,9 @@
|
|||||||
else
|
else
|
||||||
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
|
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
|
||||||
if(!lying) //CITADEL EDIT
|
if(!lying) //CITADEL EDIT
|
||||||
Knockdown(100, TRUE, FALSE, 30, 25)
|
DefaultCombatKnockdown(100, TRUE, FALSE, 30, 25)
|
||||||
else
|
else
|
||||||
Knockdown(100)
|
DefaultCombatKnockdown(100)
|
||||||
log_combat(M, src, "tackled")
|
log_combat(M, src, "tackled")
|
||||||
visible_message("<span class='danger'>[M] has tackled down [src]!</span>", \
|
visible_message("<span class='danger'>[M] has tackled down [src]!</span>", \
|
||||||
"<span class='userdanger'>[M] has tackled down [src]!</span>")
|
"<span class='userdanger'>[M] has tackled down [src]!</span>")
|
||||||
@@ -294,10 +294,10 @@
|
|||||||
switch(M.damtype)
|
switch(M.damtype)
|
||||||
if("brute")
|
if("brute")
|
||||||
if(M.force > 35) // durand and other heavy mechas
|
if(M.force > 35) // durand and other heavy mechas
|
||||||
Knockdown(50)
|
DefaultCombatKnockdown(50)
|
||||||
src.throw_at(throw_target, rand(1,5), 7)
|
src.throw_at(throw_target, rand(1,5), 7)
|
||||||
else if(M.force >= 20 && !IsKnockdown()) // lightweight mechas like gygax
|
else if(M.force >= 20 && !IsKnockdown()) // lightweight mechas like gygax
|
||||||
Knockdown(30)
|
DefaultCombatKnockdown(30)
|
||||||
src.throw_at(throw_target, rand(1,3), 7)
|
src.throw_at(throw_target, rand(1,3), 7)
|
||||||
update |= temp.receive_damage(dmg, 0)
|
update |= temp.receive_damage(dmg, 0)
|
||||||
playsound(src, 'sound/weapons/punch4.ogg', 50, 1)
|
playsound(src, 'sound/weapons/punch4.ogg', 50, 1)
|
||||||
|
|||||||
@@ -1372,7 +1372,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
|||||||
if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB))
|
if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB))
|
||||||
if(!H.IsKnockdown())
|
if(!H.IsKnockdown())
|
||||||
H.emote("collapse")
|
H.emote("collapse")
|
||||||
H.Knockdown(RAD_MOB_KNOCKDOWN_AMOUNT)
|
H.DefaultCombatKnockdown(RAD_MOB_KNOCKDOWN_AMOUNT)
|
||||||
to_chat(H, "<span class='danger'>You feel weak.</span>")
|
to_chat(H, "<span class='danger'>You feel weak.</span>")
|
||||||
|
|
||||||
if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB))
|
if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB))
|
||||||
@@ -1896,13 +1896,13 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
|||||||
var/directional_blocked = !target.Adjacent(target_shove_turf)
|
var/directional_blocked = !target.Adjacent(target_shove_turf)
|
||||||
var/targetatrest = target.resting
|
var/targetatrest = target.resting
|
||||||
if((directional_blocked || !(target_collateral_human || target_shove_turf.shove_act(target, user))) && !targetatrest)
|
if((directional_blocked || !(target_collateral_human || target_shove_turf.shove_act(target, user))) && !targetatrest)
|
||||||
target.Knockdown(SHOVE_KNOCKDOWN_SOLID)
|
target.DefaultCombatKnockdown(SHOVE_KNOCKDOWN_SOLID)
|
||||||
user.visible_message("<span class='danger'>[user.name] shoves [target.name], knocking them down!</span>",
|
user.visible_message("<span class='danger'>[user.name] shoves [target.name], knocking them down!</span>",
|
||||||
"<span class='danger'>You shove [target.name], knocking them down!</span>", null, COMBAT_MESSAGE_RANGE)
|
"<span class='danger'>You shove [target.name], knocking them down!</span>", null, COMBAT_MESSAGE_RANGE)
|
||||||
log_combat(user, target, "shoved", "knocking them down")
|
log_combat(user, target, "shoved", "knocking them down")
|
||||||
else if(target_collateral_human && !targetatrest)
|
else if(target_collateral_human && !targetatrest)
|
||||||
target.Knockdown(SHOVE_KNOCKDOWN_HUMAN)
|
target.DefaultCombatKnockdown(SHOVE_KNOCKDOWN_HUMAN)
|
||||||
target_collateral_human.Knockdown(SHOVE_KNOCKDOWN_COLLATERAL)
|
target_collateral_human.DefaultCombatKnockdown(SHOVE_KNOCKDOWN_COLLATERAL)
|
||||||
user.visible_message("<span class='danger'>[user.name] shoves [target.name] into [target_collateral_human.name]!</span>",
|
user.visible_message("<span class='danger'>[user.name] shoves [target.name] into [target_collateral_human.name]!</span>",
|
||||||
"<span class='danger'>You shove [target.name] into [target_collateral_human.name]!</span>", null, COMBAT_MESSAGE_RANGE)
|
"<span class='danger'>You shove [target.name] into [target_collateral_human.name]!</span>", null, COMBAT_MESSAGE_RANGE)
|
||||||
log_combat(user, target, "shoved", "into [target_collateral_human.name]")
|
log_combat(user, target, "shoved", "into [target_collateral_human.name]")
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
if(/obj/item/projectile/energy/floramut)
|
if(/obj/item/projectile/energy/floramut)
|
||||||
if(prob(15))
|
if(prob(15))
|
||||||
H.rad_act(rand(30,80))
|
H.rad_act(rand(30,80))
|
||||||
H.Knockdown(100)
|
H.DefaultCombatKnockdown(100)
|
||||||
H.visible_message("<span class='warning'>[H] writhes in pain as [H.p_their()] vacuoles boil.</span>", "<span class='userdanger'>You writhe in pain as your vacuoles boil!</span>", "<span class='italics'>You hear the crunching of leaves.</span>")
|
H.visible_message("<span class='warning'>[H] writhes in pain as [H.p_their()] vacuoles boil.</span>", "<span class='userdanger'>You writhe in pain as your vacuoles boil!</span>", "<span class='italics'>You hear the crunching of leaves.</span>")
|
||||||
if(prob(80))
|
if(prob(80))
|
||||||
H.randmutb()
|
H.randmutb()
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user