mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-18 09:39:49 +01:00
Merge remote-tracking branch 'polaris/master' into pl-chemistry
This commit is contained in:
@@ -70,8 +70,10 @@
|
||||
infect_virus2(M, V.getcopy())
|
||||
|
||||
/datum/reagent/blood/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_MACHINE)
|
||||
return
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.isSynthetic())
|
||||
return
|
||||
if(data && data["viruses"])
|
||||
for(var/datum/disease/D in data["viruses"])
|
||||
if(D.spread_type == SPECIAL || D.spread_type == NON_CONTAGIOUS)
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
if(prob(50))
|
||||
M.apply_effect(50, IRRADIATE, check_protection = 0) // curing it that way may kill you instead
|
||||
var/absorbed = 0
|
||||
var/obj/item/organ/diona/nutrients/rad_organ = locate() in M.internal_organs
|
||||
var/obj/item/organ/internal/diona/nutrients/rad_organ = locate() in M.internal_organs
|
||||
if(rad_organ && !rad_organ.is_broken())
|
||||
absorbed = 1
|
||||
if(!absorbed)
|
||||
@@ -323,12 +323,12 @@
|
||||
if(!M.unacidable && removed > 0)
|
||||
if(istype(M, /mob/living/carbon/human) && volume >= meltdose)
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/affecting = H.get_organ("head")
|
||||
var/obj/item/organ/external/affecting = H.get_organ(BP_HEAD)
|
||||
if(affecting)
|
||||
if(affecting.take_damage(0, removed * power * 0.1))
|
||||
H.UpdateDamageIcon()
|
||||
if(prob(100 * removed / meltdose)) // Applies disfigurement
|
||||
if (!(H.species && (H.species.flags & NO_PAIN)))
|
||||
if (affecting.can_feel_pain())
|
||||
H.emote("scream")
|
||||
H.status_flags |= DISFIGURED
|
||||
else
|
||||
|
||||
@@ -233,12 +233,13 @@
|
||||
M.adjustToxLoss(0.5 * removed)
|
||||
|
||||
/datum/reagent/capsaicin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA || alien == IS_MACHINE)
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.species && (H.species.flags & (NO_PAIN)))
|
||||
if(!H.can_feel_pain())
|
||||
return
|
||||
|
||||
if(dose < 5 && (dose == metabolism || prob(5)))
|
||||
M << "<span class='danger'>Your insides feel uncomfortably hot!</span>"
|
||||
if(dose >= 5)
|
||||
@@ -268,7 +269,7 @@
|
||||
var/obj/item/safe_thing = null
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.species && (H.species.flags & NO_PAIN))
|
||||
if(!H.can_feel_pain())
|
||||
return
|
||||
if(H.head)
|
||||
if(H.head.body_parts_covered & EYES)
|
||||
@@ -314,7 +315,7 @@
|
||||
/datum/reagent/condensedcapsaicin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.species && (H.species.flags & (NO_PAIN)))
|
||||
if(!H.can_feel_pain())
|
||||
return
|
||||
if(dose == metabolism)
|
||||
M << "<span class='danger'>You feel like your insides are burning!</span>"
|
||||
@@ -1762,7 +1763,7 @@
|
||||
M.adjustToxLoss(2 * removed)
|
||||
if(dose > 60 && ishuman(M) && prob(5))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/heart/L = H.internal_organs_by_name["heart"]
|
||||
var/obj/item/organ/internal/heart/L = H.internal_organs_by_name[O_HEART]
|
||||
if (L && istype(L))
|
||||
if(dose < 120)
|
||||
L.take_damage(10 * removed, 0)
|
||||
|
||||
@@ -255,7 +255,7 @@
|
||||
M.eye_blind = max(M.eye_blind - 5, 0)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/eyes/E = H.internal_organs_by_name["eyes"]
|
||||
var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
|
||||
if(E && istype(E))
|
||||
if(E.damage > 0)
|
||||
E.damage = max(E.damage - 5 * removed, 0)
|
||||
@@ -274,7 +274,7 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
for(var/obj/item/organ/I in H.internal_organs)
|
||||
if((I.damage > 0) && (I.robotic != 2)) //Peridaxon heals only non-robotic organs
|
||||
if((I.damage > 0) && !(I.status & ORGAN_ROBOT)) //Peridaxon heals only non-robotic organs
|
||||
I.damage = max(I.damage - removed, 0)
|
||||
|
||||
/datum/reagent/ryetalyn
|
||||
|
||||
@@ -234,9 +234,14 @@
|
||||
affect_blood(M, alien, removed)
|
||||
|
||||
/datum/reagent/mutagen/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
|
||||
if(M.isSynthetic())
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(istype(H) && (H.species.flags & NO_SCAN))
|
||||
return
|
||||
|
||||
if(M.dna)
|
||||
if(prob(removed * 0.1)) // Approx. one mutation per 10 injected/20 ingested/30 touching units
|
||||
randmuti(M)
|
||||
|
||||
@@ -1540,42 +1540,6 @@
|
||||
if(wrapped)
|
||||
Unwrap(user)
|
||||
|
||||
/*
|
||||
On_Consume(var/mob/M)
|
||||
M << "<span class = 'warning'>Something inside of you suddently expands!</span>"
|
||||
|
||||
if (istype(M, /mob/living/carbon/human))
|
||||
//Do not try to understand.
|
||||
var/obj/item/weapon/surprise = new/obj/item/weapon(M)
|
||||
var/mob/ook = monkey_type
|
||||
surprise.icon = initial(ook.icon)
|
||||
surprise.icon_state = initial(ook.icon_state)
|
||||
surprise.name = "malformed [initial(ook.name)]"
|
||||
surprise.desc = "Looks like \a very deformed [initial(ook.name)], a little small for its kind. It shows no signs of life."
|
||||
surprise.transform *= 0.6
|
||||
surprise.add_blood(M)
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/E = H.get_organ("chest")
|
||||
E.fracture()
|
||||
for (var/obj/item/organ/I in E.internal_organs)
|
||||
I.take_damage(rand(I.min_bruised_damage, I.min_broken_damage+1))
|
||||
|
||||
if (!E.hidden && prob(60)) //set it snuggly
|
||||
E.hidden = surprise
|
||||
E.cavity = 0
|
||||
else //someone is having a bad day
|
||||
E.createwound(CUT, 30)
|
||||
E.embed(surprise)
|
||||
else if (issmall(M))
|
||||
M.visible_message("<span class='danger'>[M] suddenly tears in half!</span>")
|
||||
var/mob/living/carbon/monkey/ook = new monkey_type(M.loc)
|
||||
ook.name = "malformed [ook.name]"
|
||||
ook.transform *= 0.6
|
||||
ook.add_blood(M)
|
||||
M.gib()
|
||||
..()
|
||||
*/
|
||||
|
||||
proc/Expand()
|
||||
src.visible_message("<span class='notice'>\The [src] expands!</span>")
|
||||
var/mob/living/carbon/human/H = new(src.loc)
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
var/datum/reagent/B
|
||||
if(istype(T, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = T
|
||||
if(H.species && H.species.flags & NO_BLOOD)
|
||||
if(H.species && !H.should_have_organ(O_HEART))
|
||||
H.reagents.trans_to_obj(src, amount)
|
||||
else
|
||||
B = T.take_blood(src, amount)
|
||||
|
||||
Reference in New Issue
Block a user