mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 12:08:28 +01:00
Adds siemens_coefficient handling to stun batons
This commit is contained in:
@@ -108,12 +108,14 @@
|
||||
return
|
||||
|
||||
var/agony = agonyforce
|
||||
var/stun = stunforce
|
||||
var/mob/living/L = M
|
||||
|
||||
var/contact = 1
|
||||
if(user.a_intent == "harm")
|
||||
contact = ..()
|
||||
agony *= 0.5 //whacking someone causes a much poorer contact than prodding them.
|
||||
stun *= 0.5
|
||||
else
|
||||
//copied from human_defense.dm
|
||||
if (ishuman(L))
|
||||
@@ -145,14 +147,20 @@
|
||||
if (contact)
|
||||
msg_admin_attack("[key_name(user)] attempted to stun [key_name(L)] with the [src].")
|
||||
|
||||
if (stunforce)
|
||||
L.Stun(stunforce)
|
||||
L.Weaken(stunforce)
|
||||
L.apply_effect(STUTTER, stunforce)
|
||||
if (ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
var/datum/organ/external/affected = get_organ(def_zone)
|
||||
var/siemens_coeff = H.get_siemens_coefficient_organ(affected)
|
||||
stun *= siemens_coeff
|
||||
agony *= siemens_coeff
|
||||
|
||||
if (stun)
|
||||
L.Stun(stun)
|
||||
L.Weaken(stun)
|
||||
L.apply_effect(STUTTER, stun)
|
||||
|
||||
if (agony)
|
||||
//Siemens coefficient?
|
||||
//TODO: Merge this with taser effects
|
||||
//perhaps this could be merged with taser effects?
|
||||
L.apply_effect(agony,AGONY,0)
|
||||
L.apply_effect(STUTTER, agony/10)
|
||||
L.apply_effect(EYE_BLUR, agony/10)
|
||||
|
||||
@@ -120,6 +120,20 @@ emp_act
|
||||
protection += C.armor[type]
|
||||
return protection
|
||||
|
||||
//this proc returns the Siemens coefficient of electrical resistivity for a particular external organ.
|
||||
/mob/living/carbon/human/proc/get_siemens_coefficient_organ(var/datum/organ/external/def_zone)
|
||||
if (!def_zone)
|
||||
return 1.0
|
||||
|
||||
var/siemens_coefficient = 1.0
|
||||
|
||||
var/list/clothing_items = list(head, wear_mask, wear_suit, w_uniform, gloves, shoes) // What all are we checking?
|
||||
for(var/obj/item/clothing/C in clothing_items)
|
||||
if(istype(C) && (C.body_parts_covered & def_zone.body_part)) // Is that body part being targeted covered?
|
||||
siemens_coefficient *= C.siemens_coefficient
|
||||
|
||||
return siemens_coefficient
|
||||
|
||||
/mob/living/carbon/human/proc/check_head_coverage()
|
||||
|
||||
var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform)
|
||||
|
||||
Reference in New Issue
Block a user