diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index cbbd9bc7052..88dd74669d2 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -54,6 +54,7 @@ #define ui_borg_camera "CENTER+3:21,SOUTH:5" //borgs #define ui_borg_album "CENTER+4:21,SOUTH:5" //borgs +#define ui_monkey_head "CENTER-4:13,SOUTH:5" //monkey #define ui_monkey_mask "CENTER-3:14,SOUTH:5" //monkey #define ui_monkey_back "CENTER-2:15,SOUTH:5" //monkey diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index c96e2556de9..ad2d394d7b3 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -73,6 +73,15 @@ inv_box.layer = 19 adding += inv_box + inv_box = new /obj/screen/inventory() + inv_box.name = "head" + inv_box.icon = ui_style + inv_box.icon_state = "head" + inv_box.screen_loc = ui_monkey_head + inv_box.slot_id = slot_head + inv_box.layer = 19 + adding += inv_box + inv_box = new /obj/screen/inventory() inv_box.name = "back" inv_box.icon = ui_style diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 8559fa5d0f7..f66371e3005 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -322,6 +322,7 @@
[name]
+
Head: [(head && !(head.flags&ABSTRACT)) ? head : "Nothing"]
Mask: [(wear_mask && !(wear_mask.flags&ABSTRACT)) ? wear_mask : "Nothing"]
Left Hand: [(l_hand && !(l_hand.flags&ABSTRACT)) ? l_hand : "Nothing"]
Right Hand: [(r_hand && !(r_hand.flags&ABSTRACT)) ? r_hand : "Nothing"]"} diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 7904c7cfb0f..1f96e677eaf 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -13,6 +13,7 @@ var/obj/item/back = null var/obj/item/clothing/mask/wear_mask = null var/obj/item/weapon/tank/internal = null + var/obj/item/head = null var/datum/dna/dna = null//Carbon var/heart_attack = 0 diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 189124770a2..df617e2c68e 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -31,7 +31,6 @@ var/obj/item/belt = null var/obj/item/gloves = null var/obj/item/glasses = null - var/obj/item/head = null var/obj/item/ears = null var/obj/item/wear_id = null var/obj/item/r_store = null diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 6da553aaf24..c1e89721f8a 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -268,11 +268,6 @@ else if(I == glasses) glasses = null update_inv_glasses(0) - else if(I == head) - head = null - if(I.flags & BLOCKHAIR) - update_hair(0) //rebuild hair - update_inv_head(0) else if(I == ears) ears = null update_inv_ears(0) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 3c324b4081d..8d1c801472a 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -138,7 +138,7 @@ Please contact me on #coderbus IRC. ~Carnie x //HAIR OVERLAY -/mob/living/carbon/human/proc/update_hair() +/mob/living/carbon/human/update_hair() //Reset our hair remove_overlay(HAIR_LAYER) diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index 5a7455748cf..8dc0e485288 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -4,6 +4,8 @@ return back if(slot_wear_mask) return wear_mask + if(slot_head) + return head if(slot_handcuffed) return handcuffed if(slot_legcuffed) @@ -12,4 +14,17 @@ return l_hand if(slot_r_hand) return r_hand - return null \ No newline at end of file + return null + + +/mob/living/carbon/unEquip(obj/item/I) + . = ..() + if(!. || !I) + return + + if(I == head) + head = null + if(I.flags & BLOCKHAIR) + update_hair(0) + update_inv_head(0) + diff --git a/code/modules/mob/living/carbon/monkey/examine.dm b/code/modules/mob/living/carbon/monkey/examine.dm index a3686d7a478..48963b00eed 100644 --- a/code/modules/mob/living/carbon/monkey/examine.dm +++ b/code/modules/mob/living/carbon/monkey/examine.dm @@ -3,8 +3,10 @@ if (src.handcuffed) msg += "It is \icon[src.handcuffed] handcuffed!\n" + if (src.head) + msg += "It has \icon[src.head] \a [src.head] on its head. \n" if (src.wear_mask) - msg += "It has \icon[src.wear_mask] \a [src.wear_mask] on its head.\n" + msg += "It has \icon[src.wear_mask] \a [src.wear_mask] on its face.\n" if (src.l_hand) msg += "It has \icon[src.l_hand] \a [src.l_hand] in its left hand.\n" if (src.r_hand) diff --git a/code/modules/mob/living/carbon/monkey/inventory.dm b/code/modules/mob/living/carbon/monkey/inventory.dm index 95ff775c0a4..c0ae3e21920 100644 --- a/code/modules/mob/living/carbon/monkey/inventory.dm +++ b/code/modules/mob/living/carbon/monkey/inventory.dm @@ -14,6 +14,12 @@ if( !(I.slot_flags & SLOT_MASK) ) return 0 return 1 + if(slot_head) + if(head) + return 0 + if( !(I.slot_flags & SLOT_HEAD) ) + return 0 + return 1 if(slot_back) if(back) return 0 @@ -43,6 +49,10 @@ wear_mask = I I.equipped(src, slot) update_inv_wear_mask(redraw_mob) + if(slot_head) + head = I + I.equipped(src, slot) + update_inv_head(redraw_mob) if(slot_handcuffed) handcuffed = I update_inv_handcuffed(redraw_mob) @@ -70,3 +80,6 @@ I.loc = src I.equipped(src, slot) I.layer = 20 + + + diff --git a/code/modules/mob/living/carbon/monkey/update_icons.dm b/code/modules/mob/living/carbon/monkey/update_icons.dm index bcdbbb6b633..5be5fbc43b8 100644 --- a/code/modules/mob/living/carbon/monkey/update_icons.dm +++ b/code/modules/mob/living/carbon/monkey/update_icons.dm @@ -1,11 +1,12 @@ //Monkey Overlays Indexes//////// -#define M_FIRE_LAYER 6 -#define M_MASK_LAYER 5 +#define M_FIRE_LAYER 7 +#define M_MASK_LAYER 6 +#define M_HEAD_LAYER 5 #define M_BACK_LAYER 4 #define M_HANDCUFF_LAYER 3 #define M_L_HAND_LAYER 2 #define M_R_HAND_LAYER 1 -#define M_TOTAL_LAYERS 6 +#define M_TOTAL_LAYERS 7 ///////////////////////////////// /mob/living/carbon/monkey @@ -14,6 +15,7 @@ /mob/living/carbon/monkey/regenerate_icons() ..() update_inv_wear_mask(0) + update_inv_head(0) update_inv_back(0) update_inv_r_hand(0) update_inv_l_hand(0) @@ -39,7 +41,7 @@ if(client && hud_used) client.screen += wear_mask overlays -= overlays_standing[M_MASK_LAYER] - var/image/standing = image("icon" = 'icons/mob/monkey.dmi', "icon_state" = "[wear_mask.icon_state]", "layer" = -M_MASK_LAYER) + var/image/standing = image("icon" = 'icons/mob/mask.dmi', "icon_state" = "[wear_mask.icon_state]", "layer" = -M_MASK_LAYER) if(!istype(wear_mask, /obj/item/clothing/mask/cigarette) && wear_mask.blood_DNA ) standing.overlays += image("icon" = 'icons/effects/blood.dmi', "icon_state" = "maskblood") overlays_standing[M_MASK_LAYER] = standing @@ -50,6 +52,21 @@ if(update_icons) update_icons() +/mob/living/carbon/monkey/update_inv_head(var/update_icons=1) + if(head) + head.screen_loc = ui_monkey_head + if(client && hud_used) + client.screen += head + overlays -= overlays_standing[M_HEAD_LAYER] + var/image/standing = image("icon" = 'icons/mob/head.dmi', "icon_state" = "[head.icon_state]", "layer" = -M_HEAD_LAYER) + overlays_standing[M_HEAD_LAYER] = standing + overlays += overlays_standing[M_HEAD_LAYER] + else + overlays -= overlays_standing[M_HEAD_LAYER] + overlays_standing[M_HEAD_LAYER] = null + if(update_icons) update_icons() + + /mob/living/carbon/monkey/update_inv_r_hand(var/update_icons=1) if (handcuffed) drop_r_hand() @@ -61,7 +78,9 @@ var/t_state = r_hand.item_state if(!t_state) t_state = r_hand.icon_state overlays -= overlays_standing[M_R_HAND_LAYER] - overlays_standing[M_R_HAND_LAYER] = image("icon" = r_hand.righthand_file, "icon_state" = t_state, "layer" = -M_R_HAND_LAYER) + var/image/standing = image("icon" = r_hand.righthand_file, "icon_state" = t_state, "layer" = -M_R_HAND_LAYER) + standing.pixel_y = 2 + overlays_standing[M_R_HAND_LAYER] = standing overlays += overlays_standing[M_R_HAND_LAYER] else overlays -= overlays_standing[M_R_HAND_LAYER] @@ -80,7 +99,9 @@ var/t_state = l_hand.item_state if(!t_state) t_state = l_hand.icon_state overlays -= overlays_standing[M_L_HAND_LAYER] - overlays_standing[M_L_HAND_LAYER] = image("icon" = l_hand.lefthand_file, "icon_state" = t_state, "layer" = -M_L_HAND_LAYER) + var/image/standing = image("icon" = l_hand.lefthand_file, "icon_state" = t_state, "layer" = -M_L_HAND_LAYER) + standing.pixel_y = 2 + overlays_standing[M_L_HAND_LAYER] = standing overlays += overlays_standing[M_L_HAND_LAYER] else overlays -= overlays_standing[M_L_HAND_LAYER] diff --git a/code/modules/mob/update_icons.dm b/code/modules/mob/update_icons.dm index 28934e23b88..13ec3f05463 100644 --- a/code/modules/mob/update_icons.dm +++ b/code/modules/mob/update_icons.dm @@ -43,6 +43,9 @@ /mob/proc/update_inv_head() return +/mob/proc/update_hair() + return + /mob/proc/update_inv_gloves() return diff --git a/html/changelogs/RemieRichards-PR-8554.yml b/html/changelogs/RemieRichards-PR-8554.yml new file mode 100644 index 00000000000..580c5c98167 --- /dev/null +++ b/html/changelogs/RemieRichards-PR-8554.yml @@ -0,0 +1,5 @@ +author: RemieRichards +delete-after: True +changes: + - rscadd: "Monkeys can now wear ANY mask, not just ones they had specific icons for." + - rscadd: "Monkeys can now wear HATS, That's right, Monkey Hats!" diff --git a/icons/mob/monkey.dmi b/icons/mob/monkey.dmi index d1872d6aaff..fd2ca052740 100644 Binary files a/icons/mob/monkey.dmi and b/icons/mob/monkey.dmi differ