Merge remote-tracking branch 'polaris/master' into pl-chemistry

This commit is contained in:
GinjaNinja32
2015-12-24 15:06:16 +00:00
243 changed files with 2401 additions and 1971 deletions
@@ -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)