Files
30fbcfe9b4 Belts & Trashbags (#7443)
requires #6644 

Entirely replaces how (most) belts perform insertion checks.

This pretty much allows belts to hold most things.

Armor vests are next.

Trashbags will also use the systems we use on main.

Closes #7256 and #7435

---------

Co-authored-by: silicons <silicons@silicons.dev>
2025-12-28 22:05:06 -05:00

660 lines
25 KiB
Plaintext

/*
* Backpack
*/
/obj/item/storage/backpack
name = "backpack"
desc = "You wear this on your back and put items into it."
icon = 'icons/obj/clothing/backpack.dmi'
icon_state = "backpack"
w_class = WEIGHT_CLASS_BULKY
slot_flags = SLOT_BACK
weight = ITEM_WEIGHT_STORAGE_BACKPACK
encumbrance = ITEM_ENCUMBRANCE_STORAGE_BACKPACK
var/flippable = 0
var/side = 0 //0 = right, 1 = left
var/hide_under_tail = 1
drop_sound = 'sound/items/drop/backpack.ogg'
pickup_sound = 'sound/items/pickup/backpack.ogg'
storage_datum_path = /datum/object_system/storage/backpack
/*
* Backpack Types
*/
/obj/item/storage/backpack/holding
name = "bag of holding"
desc = "A backpack that opens into a localized pocket of Blue Space."
origin_tech = list(TECH_BLUESPACE = 4)
icon_state = "holdingpack"
max_combined_volume = WEIGHT_VOLUME_NORMAL * 14 // 56
/obj/item/storage/backpack/holding/duffle
name = "dufflebag of holding"
icon_state = "holdingduffle"
/obj/item/storage/backpack/holding/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/storage/backpack/holding))
to_chat(user, "<span class='warning'>The Bluespace interfaces of the two devices conflict and malfunction.</span>")
//qdel(W) - fuck this holy shit
return
. = ..()
/obj/item/storage/backpack/holding/singularity_act(obj/singularity/S, current_size)
var/turf/lastLoc = get_turf(src)
. = ..()
if(lastLoc)
var/dist = max((current_size - 2),1)
log_game("Bag of holding detonated at [COORD(lastLoc)]")
explosion(lastLoc, (dist), (dist*2), (dist*4))
//Please don't clutter the parent storage item with stupid hacks.
/*/obj/item/storage/backpack/holding/can_be_inserted(obj/item/W as obj, stop_messages = 0)
if(istype(W, /obj/item/storage/backpack/holding))
return 1
return ..()*/ //- let's not
/obj/item/storage/backpack/santabag
name = "\improper Santa's gift bag"
desc = "Space Santa uses this to deliver toys to all the nice children in space in Christmas! Wow, it's pretty big!"
icon_state = "giftbag0"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "giftbag", SLOT_ID_LEFT_HAND = "giftbag")
w_class = WEIGHT_CLASS_BULKY
max_single_weight_class = WEIGHT_CLASS_NORMAL
max_combined_volume = WEIGHT_VOLUME_NORMAL * 100 // can store a ton of shit!
item_state_slots = null
/obj/item/storage/backpack/cultpack
name = "trophy rack"
desc = "It's useful for both carrying extra gear and proudly declaring your insanity."
icon_state = "cultpack"
/obj/item/storage/backpack/clown
name = "Giggles von Honkerton"
desc = "It's a backpack made by Honk! Co."
icon_state = "clownpack"
/obj/item/storage/backpack/mime
name = "Parcel Parceaux"
desc = "A silent backpack made for those silent workers. Silence Co."
icon_state = "mimepack"
/obj/item/storage/backpack/medic
name = "medical backpack"
desc = "It's a backpack especially designed for use in a sterile environment."
icon_state = "medicalpack"
/obj/item/storage/backpack/security
name = "security backpack"
desc = "It's a very robust backpack."
icon_state = "securitypack"
/obj/item/storage/backpack/blueshield
name = "blueshield backpack"
desc = "It's a very robust backpack."
icon_state = "blueshieldpack"
/obj/item/storage/backpack/captain
name = "Facility Director's backpack"
desc = "It's a special backpack made exclusively for officers."
icon_state = "captainpack"
/obj/item/storage/backpack/captain/talon
name = "talon captain's backpack"
desc = "It's a special backpack made exclusively for the Talon's captain."
/obj/item/storage/backpack/industrial
name = "industrial backpack"
desc = "It's a tough backpack for the daily grind of station life."
icon_state = "engiepack"
/obj/item/storage/backpack/toxins
name = "laboratory backpack"
desc = "It's a light backpack modeled for use in laboratories and other scientific institutions."
icon_state = "scipack"
/obj/item/storage/backpack/hydroponics
name = "herbalist's backpack"
desc = "It's a green backpack with many pockets to store plants and tools in."
icon_state = "hydpack"
/obj/item/storage/backpack/genetics
name = "geneticist backpack"
desc = "It's a backpack fitted with slots for diskettes and other workplace tools."
icon_state = "genpack"
/obj/item/storage/backpack/virology
name = "sterile backpack"
desc = "It's a sterile backpack able to withstand different pathogens from entering its fabric."
icon_state = "viropack"
/obj/item/storage/backpack/chemistry
name = "chemistry backpack"
desc = "It's an orange backpack which was designed to hold beakers, pill bottles and bottles."
icon_state = "chempack"
/obj/item/storage/backpack/voyager
name = "voyager backpack"
desc = "A leather pack designed for expeditions, covered in multi-purpose pouches and pockets."
icon_state = "explorerpack"
/*
* Duffle Types
*/
/obj/item/storage/backpack/dufflebag
name = "dufflebag"
desc = "A large dufflebag for holding extra things."
icon_state = "duffle"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "duffle", SLOT_ID_LEFT_HAND = "duffle")
weight = ITEM_WEIGHT_STORAGE_DUFFLEBAG
encumbrance = ITEM_ENCUMBRANCE_STORAGE_DUFFLEBAG
flat_encumbrance = ITEM_FLAT_ENCUMBRANCE_DUFFLEBAG
// todo: remove when weight system is used
slowdown = 0.25
storage_datum_path = /datum/object_system/storage/backpack/dufflebag
/obj/item/storage/backpack/dufflebag/syndie
name = "black dufflebag"
desc = "A large dufflebag for holding extra tactical supplies. This one appears to be made out of lighter material than usual."
icon_state = "duffle-syndie"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "duffle_syndie", SLOT_ID_LEFT_HAND = "duffle_syndie")
weight = ITEM_WEIGHT_BASELINE
encumbrance = ITEM_ENCUMBRANCE_STORAGE_BACKPACK
flat_encumbrance = 0
slowdown = 0
/obj/item/storage/backpack/dufflebag/syndie/med
name = "medical dufflebag"
desc = "A large dufflebag for holding extra tactical medical supplies. This one appears to be made out of lighter material than usual."
icon_state = "duffle-syndiemed"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "duffle_syndiemed", SLOT_ID_LEFT_HAND = "duffle_syndiemed")
/obj/item/storage/backpack/dufflebag/syndie/ammo
name = "ammunition dufflebag"
desc = "A large dufflebag for holding extra weapons ammunition and supplies. This one appears to be made out of lighter material than usual."
icon_state = "duffle-syndieammo"
/obj/item/storage/backpack/dufflebag/captain
name = "Facility Director's dufflebag"
desc = "A large dufflebag for holding extra captainly goods."
icon_state = "duffle-captain"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "duffle_captain", SLOT_ID_LEFT_HAND = "duffle_captain")
/obj/item/storage/backpack/dufflebag/captain/talon
name = "talon captain's dufflebag"
desc = "A large dufflebag for holding extra loot."
/obj/item/storage/backpack/dufflebag/med
name = "medical dufflebag"
desc = "A large dufflebag for holding extra medical supplies."
icon_state = "duffle-med"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "duffle_med", SLOT_ID_LEFT_HAND = "duffle_med")
/obj/item/storage/backpack/dufflebag/chemistry
name = "chemistry duffle bag"
desc = "A large duffle bag for holding extra chemical substances."
icon_state = "duffle-chemistry"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "duffle_med", SLOT_ID_LEFT_HAND = "duffle_med")
/obj/item/storage/backpack/dufflebag/genetics
name = "geneticist's duffel bag"
desc = "A large duffel bag for holding extra genetic mutations."
icon_state = "duffle-genetics"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "duffle_med", SLOT_ID_LEFT_HAND = "duffle_med")
/obj/item/storage/backpack/dufflebag/emt
name = "EMT dufflebag"
desc = "A large dufflebag for holding extra medical supplies. This one has reflective stripes!"
icon_state = "duffle-emt"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "duffle_emt", SLOT_ID_LEFT_HAND = "duffle_emt")
/obj/item/storage/backpack/dufflebag/virology
name = "virologist's duffle bag"
desc = "A large duffle bag for holding extra viral bottles."
icon_state = "duffle-virology"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "duffle_med", SLOT_ID_LEFT_HAND = "duffle_med")
/obj/item/storage/backpack/dufflebag/sec
name = "security dufflebag"
desc = "A large dufflebag for holding extra security supplies and ammunition."
icon_state = "duffle-sec"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "duffle_sec", SLOT_ID_LEFT_HAND = "duffle_sec")
/obj/item/storage/backpack/dufflebag/blueshield
name = "blueshield dufflebag"
desc = "A large dufflebag for holding extra supplies and ammunition."
icon_state = "duffle-blueshield"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "duffle_blueshield", SLOT_ID_LEFT_HAND = "duffle_blueshield")
/obj/item/storage/backpack/dufflebag/eng
name = "industrial dufflebag"
desc = "A large dufflebag for holding extra tools and supplies."
icon_state = "duffle-eng"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "duffle_eng", SLOT_ID_LEFT_HAND = "duffle_eng")
/obj/item/storage/backpack/dufflebag/sci
name = "science dufflebag"
desc = "A large dufflebag for holding circuits and beakers."
icon_state = "duffle-sci"
/obj/item/storage/backpack/dufflebag/hydroponics
name = "hydroponic's duffle bag"
desc = "A large duffle bag for holding extra gardening tools."
icon_state = "duffle-hydroponics"
/obj/item/storage/backpack/dufflebag/voyager
name = "voyager duffle bag"
desc = "A large dufflebag for expeditions, covered in multi-purpose pouches and pockets."
icon_state = "duffle-explorer"
/obj/item/storage/backpack/dufflebag/clown
name = "clown's duffle bag"
desc = "A large duffle bag for holding lots of funny gags!"
icon_state = "duffle-clown"
//! ## Satchel Types
/obj/item/storage/backpack/satchel
name = "leather satchel"
desc = "It's a very fancy satchel made with fine leather."
icon_state = "satchel"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "briefcase", SLOT_ID_LEFT_HAND = "briefcase")
/obj/item/storage/backpack/satchel/withwallet
starts_with = list(/obj/item/storage/wallet/random)
/obj/item/storage/backpack/satchel/norm
name = "satchel"
desc = "A trendy looking satchel."
icon_state = "satchel-norm"
/obj/item/storage/backpack/satchel/eng
name = "industrial satchel"
desc = "A tough satchel with extra pockets."
icon_state = "satchel-eng"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "engiepack", SLOT_ID_LEFT_HAND = "engiepack")
/obj/item/storage/backpack/satchel/med
name = "medical satchel"
desc = "A sterile satchel used in medical departments."
icon_state = "satchel-med"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "medicalpack", SLOT_ID_LEFT_HAND = "medicalpack")
/obj/item/storage/backpack/satchel/vir
name = "virologist satchel"
desc = "A sterile satchel with virologist colours."
icon_state = "satchel-vir"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "viropack", SLOT_ID_LEFT_HAND = "viropack")
/obj/item/storage/backpack/satchel/chem
name = "chemist satchel"
desc = "A sterile satchel with chemist colours."
icon_state = "satchel-chem"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "chempack", SLOT_ID_LEFT_HAND = "chempack")
/obj/item/storage/backpack/satchel/gen
name = "geneticist satchel"
desc = "A sterile satchel with geneticist colours."
icon_state = "satchel-gen"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "genpack", SLOT_ID_LEFT_HAND = "genpack")
/obj/item/storage/backpack/satchel/tox
name = "scientist satchel"
desc = "Useful for holding research materials."
icon_state = "satchel-sci"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "toxpack", SLOT_ID_LEFT_HAND = "toxpack")
/obj/item/storage/backpack/satchel/sec
name = "security satchel"
desc = "A robust satchel for security related needs."
icon_state = "satchel-sec"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "securitypack", SLOT_ID_LEFT_HAND = "securitypack")
/obj/item/storage/backpack/satchel/blueshield
name = "blueshield satchel"
desc = "A robust satchel for a blueshield's needs."
icon_state = "satchel-blueshield"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "blueshieldpack", SLOT_ID_LEFT_HAND = "blueshieldpack")
/obj/item/storage/backpack/satchel/hyd
name = "hydroponics satchel"
desc = "A green satchel for plant related work."
icon_state = "satchel-hyd"
/obj/item/storage/backpack/satchel/cap
name = "Facility Director's satchel"
desc = "An exclusive satchel for officers."
icon_state = "satchel-cap"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "captainpack", SLOT_ID_LEFT_HAND = "captainpack")
/obj/item/storage/backpack/satchel/cap/talon
name = "Talon captain's satchel"
desc = "An exclusive satchel for the Talon's captain."
/obj/item/storage/backpack/satchel/voyager
name = "voyager satchel"
desc = "A leather satchel designed for expeditions."
icon_state = "satchel-explorer"
/obj/item/storage/backpack/satchel/bone
name = "bone satchel"
desc = "A grotesque satchel made of sinew and bone."
icon_state = "satchel-bone"
/obj/item/storage/backpack/satchel/invisible
name = "integrated satchel"
desc = "A minimalist satchel designed to fit inside of clothing, directly against the skin."
item_state = "none"
/obj/item/storage/satchel/roguetown
name = "hide satchel"
desc = "A satchel made from an unknown hide."
icon = 'icons/clothing/uniform/casual/roguetown/hide_satchel.dmi'
icon_state = "hidesatchel"
slot_flags = SLOT_BACK
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
worn_bodytypes = BODYTYPE_DEFAULT
icon_override = null
weight = ITEM_WEIGHT_STORAGE_BACKPACK
encumbrance = ITEM_ENCUMBRANCE_STORAGE_BACKPACK
drop_sound = 'sound/items/drop/backpack.ogg'
pickup_sound = 'sound/items/pickup/backpack.ogg'
//ERT backpacks.
/obj/item/storage/backpack/ert
name = "emergency response team backpack"
desc = "A spacious backpack with lots of pockets, used by members of the Emergency Response Team."
icon_state = "ert_commander"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "securitypack", SLOT_ID_LEFT_HAND = "securitypack")
//Commander
/obj/item/storage/backpack/ert/commander
name = "emergency response team commander backpack"
desc = "A spacious backpack with lots of pockets, worn by the commander of an Emergency Response Team."
//Security
/obj/item/storage/backpack/ert/security
name = "emergency response team security backpack"
desc = "A spacious backpack with lots of pockets, worn by security members of an Emergency Response Team."
icon_state = "ert_security"
//Engineering
/obj/item/storage/backpack/ert/engineer
name = "emergency response team engineer backpack"
desc = "A spacious backpack with lots of pockets, worn by engineering members of an Emergency Response Team."
icon_state = "ert_engineering"
//Medical
/obj/item/storage/backpack/ert/medical
name = "emergency response team medical backpack"
desc = "A spacious backpack with lots of pockets, worn by medical members of an Emergency Response Team."
icon_state = "ert_medical"
/*
* Courier Bags
*/
/obj/item/storage/backpack/messenger
name = "messenger bag"
desc = "A sturdy backpack worn over one shoulder."
icon_state = "courierbag"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "backpack", SLOT_ID_LEFT_HAND = "backpack")
/obj/item/storage/backpack/messenger/chem
name = "chemistry messenger bag"
desc = "A serile backpack worn over one shoulder. This one is in Chemsitry colors."
icon_state = "courierbagchem"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "chempack", SLOT_ID_LEFT_HAND = "chempack")
/obj/item/storage/backpack/messenger/med
name = "medical messenger bag"
desc = "A sterile backpack worn over one shoulder used in medical departments."
icon_state = "courierbagmed"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "medicalpack", SLOT_ID_LEFT_HAND = "medicalpack")
/obj/item/storage/backpack/messenger/viro
name = "virology messenger bag"
desc = "A sterile backpack worn over one shoulder. This one is in Virology colors."
icon_state = "courierbagviro"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "viropack", SLOT_ID_LEFT_HAND = "viropack")
/obj/item/storage/backpack/messenger/tox
name = "research messenger bag"
desc = "A backpack worn over one shoulder. Useful for holding science materials."
icon_state = "courierbagsci"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "toxpack", SLOT_ID_LEFT_HAND = "toxpack")
/obj/item/storage/backpack/messenger/com
name = "command messenger bag"
desc = "A special backpack worn over one shoulder. This one is made specifically for officers."
icon_state = "courierbagcom"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "captainpack", SLOT_ID_LEFT_HAND = "captainpack")
/obj/item/storage/backpack/messenger/com/talon
name = "captain's messenger bag"
desc = "A special backpack worn over one shoulder. This one bears the insignia of the ITV Talon's captain."
/obj/item/storage/backpack/messenger/engi
name = "engineering messenger bag"
icon_state = "courierbagengi"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "engiepack", SLOT_ID_LEFT_HAND = "engiepack")
/obj/item/storage/backpack/messenger/hyd
name = "hydroponics messenger bag"
desc = "A backpack worn over one shoulder. This one is designed for plant-related work."
icon_state = "courierbaghyd"
/obj/item/storage/backpack/messenger/sec
name = "security messenger bag"
desc = "A tactical backpack worn over one shoulder. This one is in Security colors."
icon_state = "courierbagsec"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "securitypack", SLOT_ID_LEFT_HAND = "securitypack")
/obj/item/storage/backpack/messenger/blueshield
name = "blueshield messenger bag"
desc = "A tactical backpack worn over one shoulder. This one is in Blueshield colors."
icon_state = "courierbagblueshield"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "blueshieldpack", SLOT_ID_LEFT_HAND = "blueshieldpack")
/obj/item/storage/backpack/messenger/black
icon_state = "courierbagblk"
//RIG Spines
/obj/item/storage/backpack/rig
name = "resource integration gear"
desc = "An advanced system that mounts to the user's spine to serve as a load bearing structure with medical utilities. More complex variants have a wider array of functions and uses."
icon_state = "civilian_rig"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "backpack", SLOT_ID_LEFT_HAND = "backpack")
/*
/obj/item/storage/backpack/hardsuit/Initialize(mapload)
. = ..()
START_PROCESSING(SSobj, src)
/obj/item/storage/backpack/hardsuit/process(mob/living/M)
if(M.health <= M.maxHealth)
update_icon()
/obj/item/storage/backpack/hardsuit/update_icon(mob/living/M)
if(M.stat > 1) // Dead
icon_state = "[initial(icon_state)]_0"
item_state = "[initial(icon_state)]_0"
M.update_inv_back()
else if(round((M.health/M.getMaxHealth())*100) <= 25)
icon_state = "[initial(icon_state)]_25"
item_state = "[initial(icon_state)]_25"
M.update_inv_back()
else if(round((M.health/M.getMaxHealth())*100) <= 50)
icon_state = "[initial(icon_state)]_50"
item_state = "[initial(icon_state)]_50"
M.update_inv_back()
else if(round((M.health/M.getMaxHealth())*100) <= 75)
icon_state = "[initial(icon_state)]_75"
item_state = "[initial(icon_state)]_75"
M.update_inv_back()
else
icon_state = "[initial(icon_state)]"
item_state = "[initial(icon_state)]"
M.update_inv_back()
*/
//Purses
/obj/item/storage/backpack/purse
name = "purse"
desc = "A small, fashionable bag typically worn over the shoulder."
icon_state = "purse"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "lgpurse", SLOT_ID_LEFT_HAND = "lgpurse")
w_class = WEIGHT_CLASS_BULKY
max_single_weight_class = WEIGHT_CLASS_NORMAL
max_combined_volume = WEIGHT_VOLUME_NORMAL * 5
//Parachutes
/obj/item/storage/backpack/parachute
name = "parachute"
desc = "A specially made backpack, designed to help one survive jumping from incredible heights. It sacrifices some storage space for that added functionality."
icon_state = "parachute"
item_state_slots = list(SLOT_ID_RIGHT_HAND = "backpack", SLOT_ID_LEFT_HAND = "backpack")
max_combined_volume = WEIGHT_VOLUME_NORMAL * 5
/obj/item/storage/backpack/parachute/examine(mob/user, dist)
. = ..()
if(get_dist(src, user) <= 1)
if(parachute)
. += " It seems to be packed."
else
. += " It seems to be unpacked."
/obj/item/storage/backpack/parachute/handleParachute()
parachute = FALSE //If you parachute in, the parachute has probably been used.
/obj/item/storage/backpack/parachute/verb/pack_parachute()
set name = "Pack/Unpack Parachute"
set category = VERB_CATEGORY_OBJECT
set src in usr
if(!istype(src.loc, /mob/living))
return
var/mob/living/carbon/human/H = usr
if(!istype(H))
return
if(H.stat)
return
if(H.back == src)
to_chat(H, "<span class='warning'>How do you expect to work on \the [src] while it's on your back?</span>")
return
if(!parachute) //This packs the parachute
H.visible_message("<span class='notice'>\The [H] starts to pack \the [src]!</span>", \
"<span class='notice'>You start to pack \the [src]!</span>", \
"You hear the shuffling of cloth.")
if(do_after(H, 50))
H.visible_message("<span class='notice'>\The [H] finishes packing \the [src]!</span>", \
"<span class='notice'>You finish packing \the [src]!</span>", \
"You hear the shuffling of cloth.")
parachute = TRUE
else
H.visible_message("<span class='notice'>\The [src] gives up on packing \the [src]!</span>", \
"<span class='notice'>You give up on packing \the [src]!</span>")
return
else //This unpacks the parachute
H.visible_message("<span class='notice'>\The [src] starts to unpack \the [src]!</span>", \
"<span class='notice'>You start to unpack \the [src]!</span>", \
"You hear the shuffling of cloth.")
if(do_after(H, 25))
H.visible_message("<span class='notice'>\The [src] finishes unpacking \the [src]!</span>", \
"<span class='notice'>You finish unpacking \the [src]!</span>", \
"You hear the shuffling of cloth.")
parachute = FALSE
else
H.visible_message("<span class='notice'>\The [src] decides not to unpack \the [src]!</span>", \
"<span class='notice'>You decide not to unpack \the [src]!</span>")
return
/obj/item/storage/backpack/satchel/ranger
name = "ranger satchel"
desc = "A satchel designed for the Go Go ERT Rangers series to allow for slightly bigger carry capacity for the ERT-Rangers.\
Unlike the show claims, it is not a phoron-enhanced satchel of holding with plot-relevant content."
icon = 'icons/obj/clothing/ranger.dmi'
icon_state = "ranger_satchel"
/obj/item/storage/backpack/ert/para
name = "PARA trophy rack"
desc = "A special trophy rack bearing the device of an all-seeing eye; the symbol of the PMD."
icon_state = "para_ert_pack"
/obj/item/storage/backpack/saddlebag_common //Shared bag for taurs
name = "Taur Saddlebags"
desc = "A saddle that holds items. Seems slightly bulky."
icon = 'icons/obj/clothing/backpack.dmi'
icon_override = 'icons/mob/clothing/back_taur.dmi'
item_state = "saddlebag"
icon_state = "saddlebag"
var/icon_base = "saddlebag"
var/no_message = "You aren't the appropriate taur type to wear this!"
hide_under_tail = -1
/obj/item/storage/backpack/saddlebag_common/can_equip(mob/M, slot, mob/user, flags)
. = ..()
if(!.)
return FALSE
var/mob/living/carbon/human/H = M
var/datum/sprite_accessory/tail/legacy_taur/TT = H.tail_style
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/legacy_taur/horse))
item_state = "[icon_base]_horse"
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/legacy_taur/wolf))
item_state = "[icon_base]_wolf"
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/legacy_taur/cow))
item_state = "[icon_base]_cow"
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/legacy_taur/lizard))
item_state = "[icon_base]_lizard"
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/legacy_taur/feline))
item_state = "[icon_base]_feline"
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/legacy_taur/drake))
item_state = "[icon_base]_drake"
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/legacy_taur/otie))
item_state = "[icon_base]_otie"
return 1
if(istype(H) && istype(TT, /datum/sprite_accessory/tail/legacy_taur/deer))
item_state = "[icon_base]_deer"
return 1
else
to_chat(H, "<span class='warning'>[no_message]</span>")
return 0
/obj/item/storage/backpack/saddlebag_common/robust //Shared bag for other taurs with sturdy backs
name = "Robust Saddlebags"
desc = "A saddle that holds items. Seems robust."
icon = 'icons/obj/clothing/backpack.dmi'
icon_override = 'icons/mob/clothing/back_taur.dmi'
item_state = "robustsaddle"
icon_state = "robustsaddle"
icon_base = "robustsaddle"
/obj/item/storage/backpack/saddlebag_common/vest //Shared bag for other taurs with sturdy backs
name = "Taur Duty Vest"
desc = "An armored vest with the armor modules replaced with various handy compartments with decent storage capacity. Useless for protection though."
icon = 'icons/obj/clothing/backpack.dmi'
icon_override = 'icons/mob/clothing/back_taur.dmi'
item_state = "taurvest"
icon_state = "taurvest"
icon_base = "taurvest"
encumbrance = ITEM_ENCUMBRANCE_STORAGE_BACKPACK
/obj/item/storage/backpack/dufflebag/fluff //Black dufflebag without syndie buffs.
name = "plain black dufflebag"
desc = "A large dufflebag for holding extra tactical supplies."
icon_state = "duffle-syndie"
/obj/item/storage/backpack/rebel
name = "rebel backpack"
desc = "A sturdy canvas bag designed to withstand harsh environmental conditions."
icon_state = "backpack_rebel"