From 8b01f8bcc3e834e4188de777186f081ab151f922 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Tue, 21 May 2013 05:40:00 +0400 Subject: [PATCH] Finished up tentacle abominations. Clone damage will cause body parts to mutate. The more damage you have, the more chance to get a sweet tentacle. Healing works other way, the less damage you have, the more chance to unmutate it. Healing all the damage fixes everything. --- code/modules/mob/living/carbon/carbon.dm | 8 ----- .../living/carbon/human/human_attackhand.dm | 7 +++++ .../mob/living/carbon/human/human_damage.dm | 29 ++++++++++++++++++ .../mob/living/carbon/human/update_icons.dm | 11 ++++--- code/modules/organs/organ_external.dm | 25 +++++++-------- icons/mob/human_races/r_def_human.dmi | Bin 8739 -> 8613 bytes 6 files changed, 54 insertions(+), 26 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index c730a175b95..a0d9749744c 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -76,14 +76,6 @@ /mob/living/carbon/attack_paw(mob/M as mob) if(!istype(M, /mob/living/carbon)) return - if (hasorgans(M)) - var/datum/organ/external/temp = M:organs_by_name["r_hand"] - if (M.hand) - temp = M:organs_by_name["l_hand"] - if(temp && !temp.is_usable()) - M << "\red You can't use your [temp.display_name]" - return - for(var/datum/disease/D in viruses) if(D.spread_by_touch()) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 4ce561eff16..92fb75a1c17 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -3,6 +3,13 @@ M << "No attacking people at spawn, you jackass." return + var/datum/organ/external/temp = M:organs_by_name["r_hand"] + if (M.hand) + temp = M:organs_by_name["l_hand"] + if(temp && !temp.is_usable()) + M << "\red You can't use your [temp.display_name]." + return + ..() if((M != src) && check_shields(0, M.name)) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index c12dc980240..e33d788fd97 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -63,6 +63,35 @@ if(HULK in mutations) return ..() +/mob/living/carbon/human/adjustCloneLoss(var/amount) + ..() + var/heal_prob = max(0, 80 - getCloneLoss()) + var/mut_prob = min(80, getCloneLoss()+10) + if (amount > 0) + if (prob(mut_prob)) + var/list/datum/organ/external/candidates = list() + for (var/datum/organ/external/O in organs) + if(!(O.status & ORGAN_MUTATED)) + candidates |= O + if (candidates.len) + var/datum/organ/external/O = pick(candidates) + O.mutate() + src << "Something is not right with your [O.display_name]..." + return + else + if (prob(heal_prob)) + for (var/datum/organ/external/O in organs) + if (O.status & ORGAN_MUTATED) + O.unmutate() + src << "Your [O.display_name] is shaped normally again." + return + + if (getCloneLoss() < 1) + for (var/datum/organ/external/O in organs) + world << "[O.display_name]!" + if (O.status & ORGAN_MUTATED) + O.unmutate() + src << "Your [O.display_name] is shaped normally again." //////////////////////////////////////////// //Returns a list of damaged organs diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 18f4d643c7f..c765bf9711f 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -235,8 +235,9 @@ proc/get_damage_icon_part(damage_state, body_part) var/g = "m" if(gender == FEMALE) g = "f" + var/datum/organ/external/chest = get_organ("chest") + stand_icon = chest.get_icon(g) if(!skeleton) - stand_icon = new /icon(race_icon, "torso_[g][fat?"_fat":""]") if(husk) stand_icon.ColorTone(husk_color_mod) else if(hulk) @@ -244,8 +245,6 @@ proc/get_damage_icon_part(damage_state, body_part) stand_icon.MapColors(rgb(TONE[1],0,0),rgb(0,TONE[2],0),rgb(0,0,TONE[3])) else if(plant) stand_icon.ColorTone(plant_color_mod) - else - stand_icon = new /icon(race_icon, "torso") var/datum/organ/external/head = get_organ("head") var/has_head = 0 @@ -254,7 +253,11 @@ proc/get_damage_icon_part(damage_state, body_part) for(var/datum/organ/external/part in organs) if(!istype(part, /datum/organ/external/chest) && !(part.status & ORGAN_DESTROYED)) - var/icon/temp = part.get_icon() + var/icon/temp + if (istype(part, /datum/organ/external/groin) || istype(part, /datum/organ/external/head)) + temp = part.get_icon(g) + else + temp = part.get_icon() if(part.status & ORGAN_ROBOT) temp.GrayScale() diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index e7c71525826..8495094abdf 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -549,7 +549,10 @@ /datum/organ/external/proc/mutate() src.status |= ORGAN_MUTATED - owner << "Something is not right with your [display_name]..." + owner.update_body() + +/datum/organ/external/proc/unmutate() + src.status &= ~ORGAN_MUTATED owner.update_body() /datum/organ/external/proc/get_damage() //returns total damage @@ -561,11 +564,12 @@ return 1 return 0 -/datum/organ/external/get_icon() +/datum/organ/external/get_icon(gender="") if (status & ORGAN_MUTATED) - . = new /icon(owner.deform_icon, "[icon_name]") + return new /icon(owner.deform_icon, "[icon_name][gender ? "_[gender]" : ""]") else - . = new /icon(owner.race_icon, "[icon_name]") + return new /icon(owner.race_icon, "[icon_name][gender ? "_[gender]" : ""]") + /datum/organ/external/proc/is_usable() return !(status & (ORGAN_DESTROYED|ORGAN_MUTATED|ORGAN_DEAD)) @@ -576,28 +580,21 @@ /datum/organ/external/chest name = "chest" - icon_name = "chest" + icon_name = "torso" display_name = "chest" max_damage = 150 min_broken_damage = 75 body_part = UPPER_TORSO + /datum/organ/external/groin name = "groin" - icon_name = "diaper" + icon_name = "groin" display_name = "groin" max_damage = 115 min_broken_damage = 70 body_part = LOWER_TORSO -/datum/organ/external/groin/get_icon() - var/g = "m" - if(owner.gender == FEMALE) g = "f" - if (status & ORGAN_MUTATED) - . = new /icon(owner.deform_icon, "[icon_name]_[g]") - else - . = new /icon(owner.race_icon, "[icon_name]_[g]") - /datum/organ/external/l_arm name = "l_arm" display_name = "left arm" diff --git a/icons/mob/human_races/r_def_human.dmi b/icons/mob/human_races/r_def_human.dmi index 4bdcb4ee0d84a2c00b681539fdc8cc29db3ee990..e622ef14b5a5abd2aa2b2837dc3fc47e4b07d55c 100644 GIT binary patch delta 8006 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