Makes species with the NO_BLOOD flag immune to most chemical stuns and effects (#2568)

Makes species with NO_BLOOD (skeletons, shadows, golems, etc) immune to most knock down/stuns/etc chems, no more injecting skeletons with chloral hydrate.
This commit is contained in:
Alberyk
2017-06-02 18:59:41 +03:00
committed by skull132
parent 0038ff84f6
commit e2acfcd38e
@@ -102,6 +102,9 @@
/datum/reagent/toxin/cyanide/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
M.adjustOxyLoss(20 * removed)
M.sleeping += 1
@@ -116,13 +119,14 @@
/datum/reagent/toxin/potassium_chloride/overdose(var/mob/living/carbon/M, var/alien)
..()
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.stat != 1)
if(H.losebreath >= 10)
H.losebreath = max(10, H.losebreath - 10)
H.adjustOxyLoss(2)
H.Weaken(10)
var/mob/living/carbon/human/H = M
if(!istype(H) || (H.species.flags & NO_BLOOD))
return
if(H.stat != 1)
if(H.losebreath >= 10)
H.losebreath = max(10, H.losebreath - 10)
H.adjustOxyLoss(2)
H.Weaken(10)
/datum/reagent/toxin/potassium_chlorophoride
name = "Potassium Chlorophoride"
@@ -135,13 +139,14 @@
/datum/reagent/toxin/potassium_chlorophoride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.stat != 1)
if(H.losebreath >= 10)
H.losebreath = max(10, M.losebreath-10)
H.adjustOxyLoss(2)
H.Weaken(10)
var/mob/living/carbon/human/H = M
if(!istype(H) || (H.species.flags & NO_BLOOD))
return
if(H.stat != 1)
if(H.losebreath >= 10)
H.losebreath = max(10, M.losebreath-10)
H.adjustOxyLoss(2)
H.Weaken(10)
/datum/reagent/toxin/zombiepowder
name = "Zombie Powder"
@@ -156,6 +161,9 @@
..()
if(alien == IS_DIONA)
return
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_SCAN))
return
M.status_flags |= FAKEDEATH
M.adjustOxyLoss(3 * removed)
M.Weaken(10)
@@ -246,6 +254,9 @@
/datum/reagent/lexorin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
M.adjustOxyLoss(2 * removed)
if(M.losebreath < 15)
M.losebreath++
@@ -291,6 +302,9 @@
/datum/reagent/slimejelly/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
if(prob(10))
M << "<span class='danger'>Your insides are burning!</span>"
M.adjustToxLoss(rand(100, 300) * removed)
@@ -309,6 +323,9 @@
/datum/reagent/soporific/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
if(dose < 1)
if(dose == metabolism * 2 || prob(5))
M.emote("yawn")
@@ -334,6 +351,9 @@
/datum/reagent/chloralhydrate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
if(dose == metabolism)
M.confused += 2
M.drowsyness += 2
@@ -372,6 +392,9 @@
/datum/reagent/space_drugs/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
M.druggy = max(M.druggy, 15)
if(prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained())
step(M, pick(cardinal))
@@ -390,6 +413,9 @@
/datum/reagent/serotrotium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
if(prob(7))
M.emote(pick("twitch", "drool", "moan", "gasp"))
return
@@ -406,6 +432,9 @@
/datum/reagent/cryptobiolin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
M.dizziness = max(150, M.dizziness)//Setting dizziness directly works as long as the make_dizzy proc is called after to spawn the process
M.make_dizzy(4)
@@ -455,6 +484,9 @@
/datum/reagent/psilocybin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_BLOOD))
return
M.druggy = max(M.druggy, 30)
if(dose < 1)
M.apply_effect(3, STUTTER)