diff --git a/code/__DEFINES/mobfactions.dm b/code/__DEFINES/mobfactions.dm index 9f6362999ab..ae3b506484a 100644 --- a/code/__DEFINES/mobfactions.dm +++ b/code/__DEFINES/mobfactions.dm @@ -11,6 +11,8 @@ /// Ashwalker related creatures #define FACTION_ASHWALKER "ashwalker" +/// Bears of all varieties +#define FACTION_BEAR "bear" /// Megafauna bosses of mining #define FACTION_BOSS "boss" /// CARPS diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 8fddfacecae..f0f1e51a1d3 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -324,6 +324,23 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \ slapcraft_recipes = slapcraft_recipe_list,\ ) +/obj/item/stack/sheet/animalhide/bear + name = "bear hide" + desc = "Fuzzy pelts from a bear. Imagine how warm you could be, wrapped up in a coat of this stuff." + icon_state = "bear_hide" //change + singular_name = "bear pelt" + merge_type = /obj/item/stack/sheet/animalhide/bear + novariants = FALSE + +GLOBAL_LIST_INIT(bear_pelt_recipes, list ( \ + new/datum/stack_recipe("bear costume", /obj/item/clothing/suit/costume/bear_suit, 5, crafting_flags = NONE, category = CAT_CLOTHING), \ + new/datum/stack_recipe("bear hat", /obj/item/clothing/head/costume/bearpelt, 2, crafting_flags = NONE, category = CAT_CLOTHING), \ +)) + +/obj/item/stack/sheet/animalhide/bear/get_main_recipes() + . = ..() + . += GLOB.bear_pelt_recipes + //Step one - dehairing. /obj/item/stack/sheet/animalhide/attackby(obj/item/W, mob/user, list/modifiers) diff --git a/code/modules/clothing/head/hat.dm b/code/modules/clothing/head/hat.dm index f55d45c4578..c66fd47e555 100644 --- a/code/modules/clothing/head/hat.dm +++ b/code/modules/clothing/head/hat.dm @@ -83,6 +83,18 @@ icon_state = "bearpelt" inhand_icon_state = null +/obj/item/clothing/head/costume/bearpelt/equipped(mob/living/user, slot) + ..() + if(!ishuman(user) || !(slot & ITEM_SLOT_HEAD)) + return + + var/mob/living/carbon/human/human_user = user + var/obj/item/clothing/suit/costume/bear_suit/our_suit = human_user.wear_suit + if(!our_suit || !istype(our_suit)) + return + + our_suit.make_friendly(user, src) + /obj/item/clothing/head/flatcap name = "flat cap" desc = "A working man's cap." diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm index 15062c56233..caea796808b 100644 --- a/code/modules/clothing/suits/costume.dm +++ b/code/modules/clothing/suits/costume.dm @@ -678,3 +678,44 @@ inhand_icon_state = null body_parts_covered = CHEST|GROIN|LEGS|ARMS supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + +/obj/item/clothing/suit/costume/bear_suit + name = "bear suit" + desc = "A suit of 100% bear fur. Would probably be a lot more convincing without that HUGE zipper on the front." + icon_state = "bear" + worn_icon_state = "bear" + inhand_icon_state = null + body_parts_covered = CHEST|GROIN|ARMS|LEGS + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + ///Are we friendly with bears (wearing the full head/suit combo)? + var/full_suit = FALSE + +/obj/item/clothing/suit/costume/bear_suit/equipped(mob/living/user, slot) + ..() + if(slot & ITEM_SLOT_OCLOTHING) + var/mob/living/carbon/human/human_user = user + make_friendly(user, human_user.head) + +/obj/item/clothing/suit/costume/bear_suit/dropped(mob/living/user) + ..() + if (!full_suit) + return + full_suit = FALSE + var/mob/living/carbon/human/human_user = user + UnregisterSignal(human_user.head, COMSIG_ITEM_DROPPED) + user.faction -= FACTION_BEAR + +/obj/item/clothing/suit/costume/bear_suit/proc/make_friendly(mob/living/carbon/human/human_user, obj/item/clothing/head/costume/bearpelt/bear_head) + if(!istype(human_user)) + return + if(!bear_head || !istype(bear_head)) + return + RegisterSignal(bear_head, COMSIG_ITEM_DROPPED, PROC_REF(helmet_drop)) + full_suit = TRUE + human_user.faction |= FACTION_BEAR + +/obj/item/clothing/suit/costume/bear_suit/proc/helmet_drop(datum/source, mob/living/user) + SIGNAL_HANDLER + UnregisterSignal(source, COMSIG_ITEM_DROPPED) + full_suit = FALSE + user.faction -= FACTION_BEAR diff --git a/code/modules/jobs/job_types/assistant/gimmick_assistants.dm b/code/modules/jobs/job_types/assistant/gimmick_assistants.dm index a0e8bd47d3c..2c3133ed8d8 100644 --- a/code/modules/jobs/job_types/assistant/gimmick_assistants.dm +++ b/code/modules/jobs/job_types/assistant/gimmick_assistants.dm @@ -210,3 +210,11 @@ backpack_contents = list(/obj/item/storage/crayons) outfit_weight = 3 + +/datum/outfit/job/assistant/gimmick/bear + name = "Gimmick Assistant - Bear" + head = /obj/item/clothing/head/costume/bearpelt + suit = /obj/item/clothing/suit/costume/bear_suit + shoes = /obj/item/clothing/shoes/sneakers/black + uniform = /obj/item/clothing/under/color/black + outfit_weight = 6 diff --git a/code/modules/mob/living/basic/space_fauna/bear/_bear.dm b/code/modules/mob/living/basic/space_fauna/bear/_bear.dm index e6a9833c810..a84ec7a208e 100644 --- a/code/modules/mob/living/basic/space_fauna/bear/_bear.dm +++ b/code/modules/mob/living/basic/space_fauna/bear/_bear.dm @@ -7,7 +7,7 @@ icon_dead = "bear_dead" icon_gib = "bear_gib" mob_biotypes = MOB_ORGANIC|MOB_BEAST - butcher_results = list(/obj/item/food/meat/slab/bear = 5, /obj/item/clothing/head/costume/bearpelt = 1) + butcher_results = list(/obj/item/food/meat/slab/bear = 5, /obj/item/stack/sheet/animalhide/bear = 2) response_help_continuous = "pets" response_help_simple = "pet" @@ -31,7 +31,7 @@ friendly_verb_continuous = "bear hugs" friendly_verb_simple = "bear hug" - faction = list(FACTION_RUSSIAN) + faction = list(FACTION_RUSSIAN, FACTION_BEAR) habitable_atmos = null minimum_survivable_temperature = TCMB diff --git a/icons/mob/clothing/suits/costume.dmi b/icons/mob/clothing/suits/costume.dmi index 4a1c107e844..b5cf2e36055 100644 Binary files a/icons/mob/clothing/suits/costume.dmi and b/icons/mob/clothing/suits/costume.dmi differ diff --git a/icons/obj/clothing/suits/costume.dmi b/icons/obj/clothing/suits/costume.dmi index 0bae97805b7..ebe75b58e3d 100644 Binary files a/icons/obj/clothing/suits/costume.dmi and b/icons/obj/clothing/suits/costume.dmi differ diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi index 489d0459689..a10d56851ad 100644 Binary files a/icons/obj/stack_objects.dmi and b/icons/obj/stack_objects.dmi differ