From bd76f977daf6bba824374320ec348c200d806f7e Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Tue, 1 Sep 2015 11:39:22 +0930 Subject: [PATCH] Added a complex holder for human mobs + example icons (for an unadded species) --- code/modules/mob/holder.dm | 41 +++++++++++++++++++++++++++++++++++ icons/mob/holder_complex.dmi | Bin 0 -> 2255 bytes 2 files changed, 41 insertions(+) create mode 100644 icons/mob/holder_complex.dmi diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 8b44fb86273..71a19a2de24 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -1,3 +1,5 @@ +var/list/holder_mob_icon_cache = list() + //Helper object for picking dionaea (and other creatures) up. /obj/item/weapon/holder name = "holder" @@ -86,3 +88,42 @@ grabber.status_flags |= PASSEMOTES H.sync(src) return H + +/obj/item/weapon/holder/human + icon = 'icons/mob/holder_complex.dmi' + var/list/generate_for_slots = list(slot_l_hand_str, slot_r_hand_str, slot_back_str) + slot_flags = SLOT_BACK + +/obj/item/weapon/holder/human/sync(var/mob/living/M) + + // Generate appropriate on-mob icons. + var/mob/living/carbon/human/owner = M + if(istype(owner) && owner.species) + + var/skin_colour = rgb(owner.r_skin, owner.g_skin, owner.b_skin) + var/hair_colour = rgb(owner.r_hair, owner.g_hair, owner.b_hair) + var/eye_colour = rgb(owner.r_eyes, owner.g_eyes, owner.b_eyes) + var/species_name = lowertext(owner.species.get_bodytype()) + + for(var/cache_entry in generate_for_slots) + var/cache_key = "[owner.species]-[cache_entry]-[skin_colour]-[hair_colour]" + if(!holder_mob_icon_cache[cache_key]) + + // Generate individual icons. + var/icon/mob_icon = icon(icon, "[species_name]_holder_[cache_entry]_base") + mob_icon.Blend(skin_colour, ICON_ADD) + var/icon/hair_icon = icon(icon, "[species_name]_holder_[cache_entry]_hair") + hair_icon.Blend(hair_colour, ICON_ADD) + var/icon/eyes_icon = icon(icon, "[species_name]_holder_[cache_entry]_eyes") + eyes_icon.Blend(eye_colour, ICON_ADD) + + // Blend them together. + mob_icon.Blend(eyes_icon, ICON_OVERLAY) + mob_icon.Blend(hair_icon, ICON_OVERLAY) + + // Add to the cache. + holder_mob_icon_cache[cache_key] = mob_icon + item_icons[cache_entry] = holder_mob_icon_cache[cache_key] + + // Handle the rest of sync(). + ..(M) diff --git a/icons/mob/holder_complex.dmi b/icons/mob/holder_complex.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0c0235da0286bde04d2724cab6e57d373b7be6ff GIT binary patch literal 2255 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 literal 0 HcmV?d00001