Merge pull request #5147 from KasparoVy/tail-markings

Refactors Markings, Adds Tail (some body and head) markings, Adds Alt heads, Secondary (F)Hair Themes, Darkens Vulp/Taj + Unathi horns/frills, Sprite adjustments and more...
This commit is contained in:
Fox McCloud
2016-08-08 21:58:45 -04:00
committed by GitHub
38 changed files with 1682 additions and 596 deletions
+3 -1
View File
@@ -104,9 +104,11 @@
var/obj/item/organ/external/head/H = target.get_organ("head")
var/datum/robolimb/robohead = all_robolimbs[H.model]
if(robohead.is_monitor) //Ensures that if an IPC gets a head that's got a human hair wig attached to their body, the hair won't wipe.
var/list/marking_styles = params2list(target.m_styles)
H.h_style = ""
H.f_style = ""
target.m_style = ""
marking_styles["head"] = "None"
target.m_styles = list2params(marking_styles)
E.status &= ~ORGAN_DESTROYED
if(E.children)
for(var/obj/item/organ/external/C in E.children)
@@ -856,11 +856,11 @@ Note that amputating the affected organ does in fact remove the infection from t
/obj/item/organ/external/proc/mutate()
src.status |= ORGAN_MUTATED
if(owner) owner.update_body()
if(owner) owner.update_body(0, 1) //Forces all bodyparts to update in order to correctly render the deformed sprite.
/obj/item/organ/external/proc/unmutate()
src.status &= ~ORGAN_MUTATED
if(owner) owner.update_body()
if(owner) owner.update_body(0, 1) //Forces all bodyparts to update in order to correctly return them to normal.
/obj/item/organ/external/proc/get_damage() //returns total damage
return max(brute_dam + burn_dam - perma_injury, perma_injury) //could use health?
+15 -7
View File
@@ -73,13 +73,17 @@ var/global/list/limb_icon_cache = list()
overlays |= lip_icon
mob_icon.Blend(lip_icon, ICON_OVERLAY)
if(owner.m_style)
var/datum/sprite_accessory/marking_style = marking_styles_list[owner.m_style]
if(marking_style && marking_style.species_allowed && (species.name in marking_style.species_allowed) && marking_style.marking_location == "head")
var/icon/markings_s = new/icon("icon" = marking_style.icon, "icon_state" = "[marking_style.icon_state]_s")
if(marking_style.do_colouration)
markings_s.Blend(rgb(owner.r_markings, owner.g_markings, owner.b_markings), ICON_ADD)
overlays |= markings_s
var/list/marking_styles = params2list(owner.m_styles)
var/head_marking = marking_styles["head"]
if(head_marking != "None")
var/list/marking_colours = params2list(owner.m_colours)
marking_colours["head"] = sanitize_hexcolor(marking_colours["head"])
var/datum/sprite_accessory/head_marking_style = marking_styles_list[head_marking]
if(head_marking_style && head_marking_style.species_allowed && (species.name in head_marking_style.species_allowed) && head_marking_style.marking_location == "head")
var/icon/h_marking_s = new/icon("icon" = head_marking_style.icon, "icon_state" = "[head_marking_style.icon_state]_s")
if(head_marking_style.do_colouration)
h_marking_s.Blend(rgb(hex2num(copytext(marking_colours["head"], 2, 4)), hex2num(copytext(marking_colours["head"], 4, 6)), hex2num(copytext(marking_colours["head"], 6, 8))), ICON_ADD)
overlays |= h_marking_s
if(H.ha_style)
var/datum/sprite_accessory/head_accessory_style = head_accessory_styles_list[H.ha_style]
@@ -135,6 +139,10 @@ var/global/list/limb_icon_cache = list()
else if(status & ORGAN_ROBOT)
mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]")
else
if(limb_name == "head")
var/obj/item/organ/external/head/head_organ = src
head_organ.handle_alt_icon()
if(status & ORGAN_MUTATED)
mob_icon = new /icon(species.deform, "[icon_name][gender ? "_[gender]" : ""]")
else
@@ -140,11 +140,15 @@
gendered_icon = 1
encased = "skull"
var/can_intake_reagents = 1
var/alt_head = "None"
//Hair colour and style
var/r_hair = 0
var/g_hair = 0
var/b_hair = 0
var/r_hair_sec = 0
var/g_hair_sec = 0
var/b_hair_sec = 0
var/h_style = "Bald"
//Head accessory colour and style
@@ -157,6 +161,9 @@
var/r_facial = 0
var/g_facial = 0
var/b_facial = 0
var/r_facial_sec = 0
var/g_facial_sec = 0
var/b_facial_sec = 0
var/f_style = "Shaved"
/obj/item/organ/external/head/remove()
@@ -193,3 +200,14 @@
disfigure("brute")
if(burn_dam > 40)
disfigure("burn")
/obj/item/organ/external/head/proc/handle_alt_icon()
if(alt_head && alt_heads_list[alt_head])
var/datum/sprite_accessory/alt_heads/alternate_head = alt_heads_list[alt_head]
if(alternate_head.icon_state)
icon_name = alternate_head.icon_state
else //If alternate_head.icon_state doesn't exist, that means alternate_head is "None", so default icon_name back to "head".
icon_name = initial(icon_name)
else //If alt_head is null, set it to "None" and default icon_name for sanity.
alt_head = initial(alt_head)
icon_name = initial(icon_name)