diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm index 4f087411f3..a0b3ae0620 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm @@ -55,6 +55,9 @@ has_langs = list(LANGUAGE_SIGN) + var/obj/item/clothing/head/hat = null // Scughat. + var/can_wear_hat = TRUE // Some have inbuilt hats + var/picked_color = FALSE can_enter_vent_with = list( @@ -135,8 +138,16 @@ verbs += /mob/living/proc/hide verbs += /mob/living/simple_mob/vore/alienanimals/catslug/proc/catslug_color +/mob/living/simple_mob/vore/alienanimals/catslug/Destroy() + if(hat) + drop_hat() + return ..() + /mob/living/simple_mob/vore/alienanimals/catslug/attackby(var/obj/item/weapon/reagent_containers/food/snacks/O as obj, var/mob/user as mob) - if(!istype(O, /obj/item/weapon/reagent_containers/food/snacks)) + if(istype(O, /obj/item/clothing/head)) // Handle hat simulator. + give_hat(O, user) + return + else if(!istype(O, /obj/item/weapon/reagent_containers/food/snacks)) return ..() if(resting) to_chat(user, "\The [src] is napping, and doesn't respond to \the [O].") @@ -170,6 +181,9 @@ if(stat == DEAD) return ..() if(M.a_intent != I_HELP) + if(M.a_intent == I_GRAB && hat) + remove_hat(M) + return return ..() playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) if(resting) @@ -215,6 +229,52 @@ else return ..() +/mob/living/simple_mob/vore/alienanimals/catslug/update_icon() + ..() + + if(hat) + var/hat_state = hat.item_state ? hat.item_state : hat.icon_state + var/image/I = image('icons/inventory/head/mob.dmi', src, hat_state) + I.pixel_y = -7 + I.color = hat.color + I.appearance_flags = RESET_COLOR | KEEP_APART + I.blend_mode = BLEND_OVERLAY + add_overlay(I) + +/mob/living/simple_mob/vore/alienanimals/catslug/proc/give_hat(var/obj/item/clothing/head/new_hat, var/mob/living/user) + if(!istype(new_hat)) + to_chat(user, span("warning", "\The [new_hat] isn't a hat.")) + return + if(hat) + to_chat(user, span("warning", "\The [src] is already wearing \a [hat].")) + return + else if(!can_wear_hat) + to_chat(user, span("warning", "\The [src] is unable to wear \a [hat].")) + else + user.drop_item(new_hat) + hat = new_hat + new_hat.forceMove(src) + to_chat(user, span("notice", "You place \a [new_hat] on \the [src]. How adorable!")) + update_icon() + return + +/mob/living/simple_mob/vore/alienanimals/catslug/proc/remove_hat(var/mob/living/user) + if(!hat) + to_chat(user, "\The [src] doesn't have a hat to remove.") + else + hat.forceMove(get_turf(src)) + user.put_in_hands(hat) + to_chat(user, "You take away \the [src]'s [hat.name]. How mean.") + hat = null + update_icon() + +/mob/living/simple_mob/vore/alienanimals/catslug/proc/drop_hat() + if(!hat) + return + hat.forceMove(get_turf(src)) + hat = null + update_icon() + /mob/living/simple_mob/vore/alienanimals/catslug/Login() //If someone plays as us let's just be a passive mob in case accidents happen if the player D/Cs . = ..() ai_holder.hostile = FALSE @@ -292,6 +352,7 @@ digestable = 0 humanoid_hands = 1 //These should all be ones requiring admin-intervention to play as, so they can get decent tool-usage, as a treat. var/siemens_coefficient = 1 //Referenced later by others. + can_wear_hat = FALSE /mob/living/simple_mob/vore/alienanimals/catslug/custom/Initialize() . = ..() @@ -907,6 +968,7 @@ var/image/eye_image var/is_impostor = FALSE var/kill_cooldown + can_wear_hat = FALSE /mob/living/simple_mob/vore/alienanimals/catslug/suslug/impostor is_impostor = TRUE