Merge pull request #3438 from Crazylemon64/skele_drinks_milk

Milk is now a strong healing reagent for skeletons
This commit is contained in:
TheDZD
2016-02-02 21:00:28 -05:00
5 changed files with 45 additions and 6 deletions
@@ -104,7 +104,7 @@
icon_state = "green slime extract"
/obj/item/organ/brain/golem
name = "chem"
name = "Runic mind"
desc = "A tightly furled roll of paper, covered with indecipherable runes."
icon = 'icons/obj/wizard.dmi'
icon_state = "scroll"
@@ -31,8 +31,31 @@
heat_level_2 = 999999999
heat_level_3 = 999999999
heat_level_3_breathe = 999999999
suicide_messages = list(
"is snapping their own bones!",
"is collapsing into a pile!",
"is twisting their skull off!")
"is twisting their skull off!")
has_organ = list(
"brain" = /obj/item/organ/brain/golem,
)
/datum/species/skeleton/handle_reagents(var/mob/living/carbon/human/H, var/datum/reagent/R)
// Crazylemon is still silly
if(R.id == "milk")
H.heal_overall_damage(4,4)
if(prob(5)) // 5% chance per proc to find a random limb, and mend it
var/list/our_organs = H.organs.Copy()
shuffle(our_organs)
for(var/obj/item/organ/external/L in our_organs)
if(istype(L))
if(L.brute_dam < L.min_broken_damage)
L.status &= ~ORGAN_BROKEN
L.status &= ~ORGAN_SPLINTED
L.perma_injury = 0
break // We're only checking one limb here, bucko
if(prob(3))
H.say(pick("Thanks Mr Skeltal", "Thank for strong bones", "Doot doot!"))
return 1
return ..()
@@ -613,4 +613,11 @@ It'll return null if the organ doesn't correspond, so include null checks when u
/datum/species/proc/return_organ(var/organ_slot)
if(!(organ_slot in has_organ))
return null
return has_organ[organ_slot]
return has_organ[organ_slot]
// Do species-specific reagent handling here
// Return 1 if it should do normal processing too
// Return 0 if it shouldn't deplete and do its normal effect
// Other return values will cause weird badness
/datum/species/proc/handle_reagents(var/mob/living/carbon/human/H, var/datum/reagent/R)
return 1
+5 -1
View File
@@ -566,7 +566,11 @@ Note that amputating the affected organ does in fact remove the infection from t
if(!(status & ORGAN_ROBOT) && W.bleeding())
W.bleed_timer--
status |= ORGAN_BLEEDING
if(H && (H.species.flags & NO_BLOOD)) // Bloodless organic races are finicky
W.clamped = 1
W.bleed_timer = 0
else
status |= ORGAN_BLEEDING
clamped |= W.clamped
@@ -32,9 +32,14 @@ datum/reagents/proc/metabolize(var/mob/M)
//Species with PROCESS_DUO are only affected by reagents that affect both organics and synthetics, like acid and hellwater
if((R.process_flags & ORGANIC) && (R.process_flags & SYNTHETIC) && (H.species.reagent_tag & PROCESS_DUO))
can_process = 1
//If handle_reagents returns 0, it's doing the reagent removal on its own
var/species_handled = !(H.species.handle_reagents(H, R))
can_process = can_process && !species_handled
//If the mob can't process it, remove the reagent at it's normal rate without doing any addictions, overdoses, or on_mob_life() for the reagent
if(can_process == 0)
R.holder.remove_reagent(R.id, R.metabolization_rate)
if(!species_handled)
R.holder.remove_reagent(R.id, R.metabolization_rate)
continue
//We'll assume that non-human mobs lack the ability to process synthetic-oriented reagents (adjust this if we need to change that assumption)
else