mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-26 01:52:29 +00:00
Added a complex holder for human mobs + example icons (for an unadded species)
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user