New taser fix is now in place. Rather than full deflection, armor mitigates the damage. Updates along all sorts of Clothing for minor mitigations to major mitigations.

New define - AGONY. Used as an effect (Like STUN, WEAKN, etc) to cause HALLOSS. Allows use of HALLOSS projectiles without having to worry about them shattering windows/grilles. Future use? Torture tools, pain inducers for interrogation, 'Be Good' modules, Meme, etc.

HALLOSS now regens while standing up (2 per tick), and laying down (Resting, unconscious, paralyzed - 6 per tick). This fixes the 'real damage + HALLOSS = forever crit'.

Sticking a gun in your mouth (Non-stun, damage inducing) and pulling the trigger kills you.

Icon adjustments.
This commit is contained in:
MisterBook
2013-06-04 22:41:23 -05:00
parent 4b970dd3ff
commit fd8d61aa8b
34 changed files with 146 additions and 52 deletions
@@ -14,16 +14,24 @@ emp_act
if(istype(P, /obj/item/projectile/energy/electrode))
var/datum/organ/external/select_area = get_organ(def_zone) // We're checking the outside, buddy!
var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, gloves, shoes) // What all are we checking?
// var/deflectchance=90 //Is it a CRITICAL HIT with that taser?
for(var/bp in body_parts) //Make an unregulated var to pass around.
if(!bp)
continue //Does this thing we're shooting even exist?
if(bp && istype(bp ,/obj/item/clothing)) // If it exists, and it's clothed
var/obj/item/clothing/C = bp // Then call an argument C to be that clothing!
if(C.body_parts_covered & select_area.body_part) // Is that body part being targeted covered?
P.agony=P.agony*C.siemens_coefficient
visible_message("\red [src]'s [C.name] absorbs some of the shock from the [P.name]!</B></red>")
apply_effect(P.agony,AGONY,0)
del P
/* Commenting out new-old taser nerf.
if(C.siemens_coefficient == 0) //If so, is that clothing shock proof?
visible_message("\red <B>The [P.name] gets deflected by [src]'s [C.name]!</B>") //DEFLECT!
del P
if(prob(deflectchance))
visible_message("\red <B>The [P.name] gets deflected by [src]'s [C.name]!</B>") //DEFLECT!
visible_message("\red <B> Taser hit for [P.damage] damage!</B>")
del P
*/
/* Commenting out old Taser nerf
if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor))
if(istype(P, /obj/item/projectile/energy/electrode))
@@ -32,6 +40,7 @@ emp_act
return -1
*/
// END TASER NERF
if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor/laserproof))
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
var/reflectchance = 40 - round(P.damage/3)
+11 -4
View File
@@ -944,19 +944,21 @@
del a
if(halloss > 100)
src << "<span class='notice'>You're too tired to keep going...</span>"
src << "<span class='notice'>You're in too much pain to keep going...</span>"
for(var/mob/O in oviewers(src, null))
O.show_message("<B>[src]</B> slumps to the ground panting, too weak to continue fighting.", 1)
Paralyse(3)
O.show_message("<B>[src]</B> slumps to the ground, too weak to continue fighting.", 1)
Paralyse(10)
setHalLoss(99)
if(paralysis)
AdjustParalysis(-1)
blinded = 1
stat = UNCONSCIOUS
if(halloss > 0)
adjustHalLoss(-6)
else if(sleeping)
handle_dreams()
adjustHalLoss(-5)
adjustHalLoss(-6)
if (mind)
if((mind.active && client != null) || immune_to_ssd) //This also checks whether a client is connected, if not, sleep is not reduced.
sleeping = max(sleeping-1, 0)
@@ -965,9 +967,14 @@
if( prob(10) && health && !hal_crit )
spawn(0)
emote("snore")
else if(resting)
if(halloss > 0)
adjustHalLoss(-6)
//CONSCIOUS
else
stat = CONSCIOUS
if(halloss > 0)
adjustHalLoss(-2)
//Eyes
if(sdisabilities & BLIND) //disabled-blind, doesn't get better on its own
+4 -1
View File
@@ -49,6 +49,8 @@
Weaken(effect/(blocked+1))
if(PARALYZE)
Paralyse(effect/(blocked+1))
if(AGONY)
halloss += effect // Useful for objects that cause "subdual" damage. PAIN!
if(IRRADIATE)
radiation += max((((effect - (effect*(getarmor(null, "rad")/100))))/(blocked+1)),0)//Rads auto check armor
if(STUTTER)
@@ -62,7 +64,7 @@
return 1
/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/blocked = 0)
/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/agony = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/blocked = 0)
if(blocked >= 2) return 0
if(stun) apply_effect(stun, STUN, blocked)
if(weaken) apply_effect(weaken, WEAKEN, blocked)
@@ -71,4 +73,5 @@
if(stutter) apply_effect(stutter, STUTTER, blocked)
if(eyeblur) apply_effect(eyeblur, EYE_BLUR, blocked)
if(drowsy) apply_effect(drowsy, DROWSY, blocked)
if(agony) apply_effect(agony, AGONY, blocked)
return 1