diff --git a/code/datums/components/crafting/tailoring.dm b/code/datums/components/crafting/tailoring.dm index eb217803c3e..b487aa6a814 100644 --- a/code/datums/components/crafting/tailoring.dm +++ b/code/datums/components/crafting/tailoring.dm @@ -119,7 +119,7 @@ /datum/crafting_recipe/grass_sheath name = "Grass Sabre Sheath" - result = /obj/item/storage/belt/grass_sabre + result = /obj/item/storage/belt/sheath/grass_sabre reqs = list(/obj/item/food/grown/grass = 4, /obj/item/food/grown/grass/fairy = 2) time = 4 SECONDS diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index d64f2e83535..904646f2408 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -964,11 +964,11 @@ GLOBAL_DATUM_INIT(steal_item_handler, /datum/objective_item_handler, new()) /datum/objective_item/steal/spy/captain_sabre_sheathe name = "the captain's sabre sheathe" - targetitem = /obj/item/storage/belt/sabre + targetitem = /obj/item/storage/belt/sheath/sabre excludefromjob = list(JOB_CAPTAIN) exists_on_map = TRUE difficulty = 3 steal_hint = "The sheathe for the captain's sabre, found in their closet or strapped to their waist at all times." -/obj/item/storage/belt/sabre/add_stealing_item_objective() - return add_item_to_steal(src, /obj/item/storage/belt/sabre) +/obj/item/storage/belt/sheath/sabre/add_stealing_item_objective() + return add_item_to_steal(src, /obj/item/storage/belt/sheath/sabre) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index b762e0ee6b7..c708962ca29 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -583,88 +583,63 @@ new /obj/item/reagent_containers/cup/blastoff_ampoule(src) new /obj/item/reagent_containers/hypospray/medipen/methamphetamine(src) -/obj/item/storage/belt/sabre +/obj/item/storage/belt/sheath + desc = "holds like, blades and stuff. You should not be seeing this." + w_class = WEIGHT_CLASS_BULKY + interaction_flags_click = parent_type::interaction_flags_click | NEED_DEXTERITY | NEED_HANDS + var/stored_blade + +/obj/item/storage/belt/sheath/Initialize(mapload) + . = ..() + AddElement(/datum/element/update_icon_updates_onmob) + +/obj/item/storage/belt/sheath/examine(mob/user) + . = ..() + if(length(contents)) + . += span_notice("Alt-click it to quickly draw the blade.") + +/obj/item/storage/belt/sheath/click_alt(mob/user) + if(length(contents)) + var/obj/item/I = contents[1] + user.visible_message(span_notice("[user] takes [I] out of [src]."), span_notice("You take [I] out of [src].")) + user.put_in_hands(I) + update_appearance() + else + balloon_alert(user, "it's empty!") + return CLICK_ACTION_SUCCESS + +/obj/item/storage/belt/sheath/update_icon_state() + icon_state = initial(inhand_icon_state) + inhand_icon_state = initial(inhand_icon_state) + worn_icon_state = initial(worn_icon_state) + if(contents.len) + icon_state += "-full" + inhand_icon_state += "-full" + worn_icon_state += "-full" + return ..() + +/obj/item/storage/belt/sheath/PopulateContents() + if(stored_blade) + new stored_blade(src) + update_appearance() + +/obj/item/storage/belt/sheath/sabre name = "sabre sheath" desc = "An ornate sheath designed to hold an officer's blade." icon_state = "sheath" inhand_icon_state = "sheath" worn_icon_state = "sheath" - w_class = WEIGHT_CLASS_BULKY - interaction_flags_click = parent_type::interaction_flags_click | NEED_DEXTERITY | NEED_HANDS storage_type = /datum/storage/sabre_belt + stored_blade = /obj/item/melee/sabre -/obj/item/storage/belt/sabre/Initialize(mapload) - . = ..() - AddElement(/datum/element/update_icon_updates_onmob) - -/obj/item/storage/belt/sabre/examine(mob/user) - . = ..() - if(length(contents)) - . += span_notice("Alt-click it to quickly draw the blade.") - -/obj/item/storage/belt/sabre/click_alt(mob/user) - if(length(contents)) - var/obj/item/I = contents[1] - user.visible_message(span_notice("[user] takes [I] out of [src]."), span_notice("You take [I] out of [src].")) - user.put_in_hands(I) - update_appearance() - else - balloon_alert(user, "it's empty!") - return CLICK_ACTION_SUCCESS - -/obj/item/storage/belt/sabre/update_icon_state() - icon_state = initial(inhand_icon_state) - inhand_icon_state = initial(inhand_icon_state) - worn_icon_state = initial(worn_icon_state) - if(contents.len) - icon_state += "-sabre" - inhand_icon_state += "-sabre" - worn_icon_state += "-sabre" - return ..() - -/obj/item/storage/belt/sabre/PopulateContents() - new /obj/item/melee/sabre(src) - update_appearance() - -/obj/item/storage/belt/grass_sabre +/obj/item/storage/belt/sheath/grass_sabre name = "sabre sheath" desc = "A simple grass sheath designed to hold a sabre of... some sort. An actual metal one might be too sharp, though..." icon_state = "grass_sheath" inhand_icon_state = "grass_sheath" worn_icon_state = "grass_sheath" - w_class = WEIGHT_CLASS_BULKY - interaction_flags_click = parent_type::interaction_flags_click | NEED_DEXTERITY | NEED_HANDS storage_type = /datum/storage/green_sabre_belt -/obj/item/storage/belt/grass_sabre/Initialize(mapload) - . = ..() - AddElement(/datum/element/update_icon_updates_onmob) - -/obj/item/storage/belt/grass_sabre/examine(mob/user) - . = ..() - if(length(contents)) - . += span_notice("Alt-click it to quickly draw the blade.") - -/obj/item/storage/belt/grass_sabre/click_alt(mob/user) - if(length(contents)) - var/obj/item/I = contents[1] - user.visible_message(span_notice("[user] takes [I] out of [src]."), span_notice("You take [I] out of [src].")) - user.put_in_hands(I) - update_appearance() - else - balloon_alert(user, "it's empty!") - return CLICK_ACTION_SUCCESS - -/obj/item/storage/belt/grass_sabre/update_icon_state() - icon_state = initial(inhand_icon_state) - inhand_icon_state = initial(inhand_icon_state) - worn_icon_state = initial(worn_icon_state) - if(contents.len) - icon_state += "-sabre" - inhand_icon_state += "-sabre" - worn_icon_state += "-sabre" - return ..() - /obj/item/storage/belt/plant name = "botanical belt" desc = "A sturdy leather belt used to hold most hydroponics supplies." diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index c1a646f5740..51a41063e71 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -21,7 +21,7 @@ /obj/structure/closet/secure_closet/captains/populate_contents_immediate() new /obj/item/gun/energy/e_gun(src) - new /obj/item/storage/belt/sabre(src) + new /obj/item/storage/belt/sheath/sabre(src) /obj/structure/closet/secure_closet/hop name = "head of personnel's locker" diff --git a/code/game/objects/structures/mystery_box.dm b/code/game/objects/structures/mystery_box.dm index cf76ad29ea7..764e5b25f8e 100644 --- a/code/game/objects/structures/mystery_box.dm +++ b/code/game/objects/structures/mystery_box.dm @@ -55,7 +55,7 @@ GLOBAL_LIST_INIT(mystery_box_extended, list( /obj/item/clothing/gloves/rapid, /obj/item/shield/riot/flash, /obj/item/grenade/stingbang/mega, - /obj/item/storage/belt/sabre, + /obj/item/storage/belt/sheath/sabre, /obj/item/knife/combat, /obj/item/melee/baton/security/loaded, /obj/item/reagent_containers/hypospray/combat, diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index f0a72ea79da..0d964b4e554 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -420,7 +420,7 @@ /obj/item/food/cake/birthday = 1, /obj/item/storage/box/fireworks = 3, ) - belt = /obj/item/storage/belt/sabre + belt = /obj/item/storage/belt/sheath/sabre head = /obj/item/clothing/head/hats/coordinator l_pocket = /obj/item/knife/kitchen l_hand = /obj/item/toy/balloon diff --git a/code/modules/deathmatch/deathmatch_loadouts.dm b/code/modules/deathmatch/deathmatch_loadouts.dm index c8c5755169b..32d66ba3831 100644 --- a/code/modules/deathmatch/deathmatch_loadouts.dm +++ b/code/modules/deathmatch/deathmatch_loadouts.dm @@ -585,7 +585,7 @@ neck = /obj/item/bedsheet/captain glasses = /obj/item/clothing/glasses/sunglasses gloves = /obj/item/clothing/gloves/captain - belt = /obj/item/storage/belt/sabre + belt = /obj/item/storage/belt/sheath/sabre l_hand = /obj/item/gun/energy/laser/captain r_pocket = /obj/item/assembly/flash l_pocket = /obj/item/melee/baton/telescopic diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index 787d2867042..b1d374ae7a7 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/inhands/equipment/belt_lefthand.dmi b/icons/mob/inhands/equipment/belt_lefthand.dmi index d5c4f7c4424..e4f8d4bd397 100644 Binary files a/icons/mob/inhands/equipment/belt_lefthand.dmi and b/icons/mob/inhands/equipment/belt_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/belt_righthand.dmi b/icons/mob/inhands/equipment/belt_righthand.dmi index 0e0c7b817ee..248776ad593 100644 Binary files a/icons/mob/inhands/equipment/belt_righthand.dmi and b/icons/mob/inhands/equipment/belt_righthand.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 14ed534744f..6e9c45ff112 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/tools/UpdatePaths/Scripts/92300_sheath_parent_type.txt b/tools/UpdatePaths/Scripts/92300_sheath_parent_type.txt new file mode 100644 index 00000000000..84575bd2b96 --- /dev/null +++ b/tools/UpdatePaths/Scripts/92300_sheath_parent_type.txt @@ -0,0 +1,2 @@ +/obj/item/storage/belt/sabre : /obj/item/storage/belt/sheath/sabre +/obj/item/storage/belt/grass_sabre : /obj/item/storage/belt/sheath/grass_sabre