/* Backpacks * Contains: * Backpack * Backpack Types * Satchel Types */ /* * Backpack */ /obj/item/storage/backpack name = "backpack" desc = "You wear this on your back and put items into it." icon_state = "backpack" inhand_icon_state = "backpack" lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi' w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK //ERROOOOO resistance_flags = NONE max_integrity = 300 /obj/item/storage/backpack/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 21 STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_items = 21 /* * Backpack Types */ /obj/item/storage/backpack/old/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 12 /obj/item/bag_of_holding_inert name = "inert bag of holding" desc = "What is currently a just an unwieldly block of metal with a slot ready to accept a bluespace anomaly core." icon = 'icons/obj/storage.dmi' icon_state = "brokenpack" inhand_icon_state = "brokenpack" lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi' w_class = WEIGHT_CLASS_BULKY resistance_flags = FIRE_PROOF item_flags = NO_MAT_REDEMPTION /obj/item/storage/backpack/holding name = "bag of holding" desc = "A backpack that opens into a localized pocket of bluespace." icon_state = "holdingpack" inhand_icon_state = "holdingpack" resistance_flags = FIRE_PROOF item_flags = NO_MAT_REDEMPTION armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 60, ACID = 50) component_type = /datum/component/storage/concrete/bluespace/bag_of_holding /obj/item/storage/backpack/holding/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.allow_big_nesting = TRUE STR.max_w_class = WEIGHT_CLASS_GIGANTIC STR.max_combined_w_class = 35 /obj/item/storage/backpack/holding/suicide_act(mob/living/user) user.visible_message("[user] is jumping into [src]! It looks like [user.p_theyre()] trying to commit suicide.") user.dropItemToGround(src, TRUE) user.Stun(100, ignore_canstun = TRUE) sleep(20) playsound(src, "rustle", 50, TRUE, -5) qdel(user) /obj/item/storage/backpack/santabag name = "Santa's Gift Bag" desc = "Space Santa uses this to deliver presents to all the nice children in space in Christmas! Wow, it's pretty big!" icon_state = "giftbag0" inhand_icon_state = "giftbag" w_class = WEIGHT_CLASS_BULKY /obj/item/storage/backpack/santabag/Initialize() . = ..() regenerate_presents() /obj/item/storage/backpack/santabag/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 60 /obj/item/storage/backpack/santabag/suicide_act(mob/user) user.visible_message("[user] places [src] over [user.p_their()] head and pulls it tight! It looks like [user.p_they()] [user.p_are()]n't in the Christmas spirit...") return (OXYLOSS) /obj/item/storage/backpack/santabag/proc/regenerate_presents() addtimer(CALLBACK(src, .proc/regenerate_presents), 30 SECONDS) var/mob/M = get(loc, /mob) if(!istype(M)) return if(M.mind && HAS_TRAIT(M.mind, TRAIT_CANNOT_OPEN_PRESENTS)) var/datum/component/storage/STR = GetComponent(/datum/component/storage) var/turf/floor = get_turf(src) var/obj/item/I = new /obj/item/a_gift/anything(floor) if(STR.can_be_inserted(I, stop_messages=TRUE)) STR.handle_item_insertion(I, prevent_warning=TRUE) else qdel(I) /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" inhand_icon_state = "backpack" /obj/item/storage/backpack/clown name = "Giggles von Honkerton" desc = "It's a backpack made by Honk! Co." icon_state = "clownpack" inhand_icon_state = "clownpack" /obj/item/storage/backpack/explorer name = "explorer bag" desc = "A robust backpack for stashing your loot." icon_state = "explorerpack" inhand_icon_state = "explorerpack" /obj/item/storage/backpack/mime name = "Parcel Parceaux" desc = "A silent backpack made for those silent workers. Silence Co." icon_state = "mimepack" inhand_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" inhand_icon_state = "medicalpack" /obj/item/storage/backpack/security name = "security backpack" desc = "It's a very robust backpack." icon_state = "securitypack" inhand_icon_state = "securitypack" /obj/item/storage/backpack/captain name = "captain's backpack" desc = "It's a special backpack made exclusively for Nanotrasen officers." icon_state = "captainpack" inhand_icon_state = "captainpack" /obj/item/storage/backpack/industrial name = "industrial backpack" desc = "It's a tough backpack for the daily grind of station life." icon_state = "engiepack" inhand_icon_state = "engiepack" resistance_flags = FIRE_PROOF /obj/item/storage/backpack/botany name = "botany backpack" desc = "It's a backpack made of all-natural fibers." icon_state = "botpack" inhand_icon_state = "botpack" /obj/item/storage/backpack/chemistry name = "chemistry backpack" desc = "A backpack specially designed to repel stains and hazardous liquids." icon_state = "chempack" inhand_icon_state = "chempack" /obj/item/storage/backpack/genetics name = "genetics backpack" desc = "A bag designed to be super tough, just in case someone hulks out on you." icon_state = "genepack" inhand_icon_state = "genepack" /obj/item/storage/backpack/science name = "science backpack" desc = "A specially designed backpack. It's fire resistant and smells vaguely of plasma." icon_state = "toxpack" inhand_icon_state = "toxpack" /obj/item/storage/backpack/virology name = "virology backpack" desc = "A backpack made of hypo-allergenic fibers. It's designed to help prevent the spread of disease. Smells like monkey." icon_state = "viropack" inhand_icon_state = "viropack" /obj/item/storage/backpack/ert name = "emergency response team commander backpack" desc = "A spacious backpack with lots of pockets, worn by the Commander of an Emergency Response Team." icon_state = "ert_commander" inhand_icon_state = "securitypack" resistance_flags = FIRE_PROOF /obj/item/storage/backpack/ert/security name = "emergency response team security backpack" desc = "A spacious backpack with lots of pockets, worn by Security Officers of an Emergency Response Team." icon_state = "ert_security" /obj/item/storage/backpack/ert/medical name = "emergency response team medical backpack" desc = "A spacious backpack with lots of pockets, worn by Medical Officers of an Emergency Response Team." icon_state = "ert_medical" /obj/item/storage/backpack/ert/engineer name = "emergency response team engineer backpack" desc = "A spacious backpack with lots of pockets, worn by Engineers of an Emergency Response Team." icon_state = "ert_engineering" /obj/item/storage/backpack/ert/janitor name = "emergency response team janitor backpack" desc = "A spacious backpack with lots of pockets, worn by Janitors of an Emergency Response Team." icon_state = "ert_janitor" /obj/item/storage/backpack/ert/clown name = "emergency response team clown backpack" desc = "A spacious backpack with lots of pockets, worn by Clowns of an Emergency Response Team." icon_state = "ert_clown" /* * Satchel Types */ /obj/item/storage/backpack/satchel name = "satchel" desc = "A trendy looking satchel." icon_state = "satchel-norm" inhand_icon_state = "satchel-norm" /obj/item/storage/backpack/satchel/leather name = "leather satchel" desc = "It's a very fancy satchel made with fine leather." icon_state = "satchel" inhand_icon_state = "satchel" /obj/item/storage/backpack/satchel/leather/withwallet/PopulateContents() new /obj/item/storage/wallet/random(src) /obj/item/storage/backpack/satchel/fireproof resistance_flags = FIRE_PROOF /obj/item/storage/backpack/satchel/eng name = "industrial satchel" desc = "A tough satchel with extra pockets." icon_state = "satchel-eng" inhand_icon_state = "satchel-eng" resistance_flags = FIRE_PROOF /obj/item/storage/backpack/satchel/med name = "medical satchel" desc = "A sterile satchel used in medical departments." icon_state = "satchel-med" inhand_icon_state = "satchel-med" /obj/item/storage/backpack/satchel/vir name = "virologist satchel" desc = "A sterile satchel with virologist colours." icon_state = "satchel-vir" inhand_icon_state = "satchel-vir" /obj/item/storage/backpack/satchel/chem name = "chemist satchel" desc = "A sterile satchel with chemist colours." icon_state = "satchel-chem" inhand_icon_state = "satchel-chem" /obj/item/storage/backpack/satchel/gen name = "geneticist satchel" desc = "A sterile satchel with geneticist colours." icon_state = "satchel-gen" inhand_icon_state = "satchel-gen" /obj/item/storage/backpack/satchel/tox name = "scientist satchel" desc = "Useful for holding research materials." icon_state = "satchel-tox" inhand_icon_state = "satchel-tox" /obj/item/storage/backpack/satchel/hyd name = "botanist satchel" desc = "A satchel made of all natural fibers." icon_state = "satchel-hyd" inhand_icon_state = "satchel-hyd" /obj/item/storage/backpack/satchel/sec name = "security satchel" desc = "A robust satchel for security related needs." icon_state = "satchel-sec" inhand_icon_state = "satchel-sec" /obj/item/storage/backpack/satchel/explorer name = "explorer satchel" desc = "A robust satchel for stashing your loot." icon_state = "satchel-explorer" inhand_icon_state = "satchel-explorer" /obj/item/storage/backpack/satchel/cap name = "captain's satchel" desc = "An exclusive satchel for Nanotrasen officers." icon_state = "satchel-cap" inhand_icon_state = "satchel-cap" /obj/item/storage/backpack/satchel/flat name = "smuggler's satchel" desc = "A very slim satchel that can easily fit into tight spaces." icon_state = "satchel-flat" inhand_icon_state = "satchel-flat" w_class = WEIGHT_CLASS_NORMAL //Can fit in backpacks itself. /obj/item/storage/backpack/satchel/flat/Initialize(mapload) . = ..() AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE, INVISIBILITY_OBSERVER, use_anchor = TRUE) /obj/item/storage/backpack/satchel/flat/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 15 STR.set_holdable(null, list(/obj/item/storage/backpack/satchel/flat)) //muh recursive backpacks) /obj/item/storage/backpack/satchel/flat/PopulateContents() var/datum/supply_pack/costumes_toys/randomised/contraband/C = new for(var/i in 1 to 2) var/ctype = pick(C.contains) new ctype(src) qdel(C) /obj/item/storage/backpack/satchel/flat/with_tools/PopulateContents() new /obj/item/stack/tile/plasteel(src) new /obj/item/crowbar(src) ..() /obj/item/storage/backpack/satchel/flat/empty/PopulateContents() return /obj/item/storage/backpack/duffelbag name = "duffel bag" desc = "A large duffel bag for holding extra things." icon_state = "duffel" inhand_icon_state = "duffel" slowdown = 1 /obj/item/storage/backpack/duffelbag/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_combined_w_class = 30 /obj/item/storage/backpack/duffelbag/captain name = "captain's duffel bag" desc = "A large duffel bag for holding extra captainly goods." icon_state = "duffel-captain" inhand_icon_state = "duffel-captain" /obj/item/storage/backpack/duffelbag/med name = "medical duffel bag" desc = "A large duffel bag for holding extra medical supplies." icon_state = "duffel-med" inhand_icon_state = "duffel-med" /obj/item/storage/backpack/duffelbag/med/surgery name = "surgical duffel bag" desc = "A large duffel bag for holding extra medical supplies - this one seems to be designed for holding surgical tools." /obj/item/storage/backpack/duffelbag/med/surgery/PopulateContents() new /obj/item/scalpel(src) new /obj/item/hemostat(src) new /obj/item/retractor(src) new /obj/item/circular_saw(src) new /obj/item/surgicaldrill(src) new /obj/item/cautery(src) new /obj/item/bonesetter(src) new /obj/item/surgical_drapes(src) new /obj/item/clothing/mask/surgical(src) new /obj/item/razor(src) new /obj/item/blood_filter(src) /obj/item/storage/backpack/duffelbag/sec name = "security duffel bag" desc = "A large duffel bag for holding extra security supplies and ammunition." icon_state = "duffel-sec" inhand_icon_state = "duffel-sec" /obj/item/storage/backpack/duffelbag/sec/surgery name = "surgical duffel bag" desc = "A large duffel bag for holding extra supplies - this one has a material inlay with space for various sharp-looking tools." /obj/item/storage/backpack/duffelbag/sec/surgery/PopulateContents() new /obj/item/scalpel(src) new /obj/item/hemostat(src) new /obj/item/retractor(src) new /obj/item/circular_saw(src) new /obj/item/bonesetter(src) new /obj/item/surgicaldrill(src) new /obj/item/cautery(src) new /obj/item/surgical_drapes(src) new /obj/item/clothing/mask/surgical(src) new /obj/item/blood_filter(src) /obj/item/storage/backpack/duffelbag/engineering name = "industrial duffel bag" desc = "A large duffel bag for holding extra tools and supplies." icon_state = "duffel-eng" inhand_icon_state = "duffel-eng" resistance_flags = FIRE_PROOF /obj/item/storage/backpack/duffelbag/drone name = "drone duffel bag" desc = "A large duffel bag for holding tools and hats." icon_state = "duffel-drone" inhand_icon_state = "duffel-drone" resistance_flags = FIRE_PROOF /obj/item/storage/backpack/duffelbag/drone/PopulateContents() new /obj/item/screwdriver(src) new /obj/item/wrench(src) new /obj/item/weldingtool(src) new /obj/item/crowbar(src) new /obj/item/stack/cable_coil(src) new /obj/item/wirecutters(src) new /obj/item/multitool(src) /obj/item/storage/backpack/duffelbag/clown name = "clown's duffel bag" desc = "A large duffel bag for holding lots of funny gags!" icon_state = "duffel-clown" inhand_icon_state = "duffel-clown" /obj/item/storage/backpack/duffelbag/clown/cream_pie/PopulateContents() for(var/i in 1 to 10) new /obj/item/reagent_containers/food/snacks/pie/cream(src) /obj/item/storage/backpack/fireproof resistance_flags = FIRE_PROOF /obj/item/storage/backpack/duffelbag/syndie name = "suspicious looking duffel bag" desc = "A large duffel bag for holding extra tactical supplies." icon_state = "duffel-syndie" inhand_icon_state = "duffel-syndieammo" slowdown = 0 resistance_flags = FIRE_PROOF /obj/item/storage/backpack/duffelbag/syndie/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.silent = TRUE /obj/item/storage/backpack/duffelbag/syndie/hitman desc = "A large duffel bag for holding extra things. There is a Nanotrasen logo on the back." icon_state = "duffel-syndieammo" inhand_icon_state = "duffel-syndieammo" /obj/item/storage/backpack/duffelbag/syndie/hitman/PopulateContents() new /obj/item/clothing/under/suit/black(src) new /obj/item/clothing/accessory/waistcoat(src) new /obj/item/clothing/suit/toggle/lawyer/black(src) new /obj/item/clothing/shoes/laceup(src) new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/glasses/sunglasses(src) new /obj/item/clothing/head/fedora(src) /obj/item/storage/backpack/duffelbag/syndie/med name = "medical duffel bag" desc = "A large duffel bag for holding extra tactical medical supplies." icon_state = "duffel-syndiemed" inhand_icon_state = "duffel-syndiemed" /obj/item/storage/backpack/duffelbag/syndie/surgery name = "surgery duffel bag" desc = "A suspicious looking duffel bag for holding surgery tools." icon_state = "duffel-syndiemed" inhand_icon_state = "duffel-syndiemed" /obj/item/storage/backpack/duffelbag/syndie/surgery/PopulateContents() new /obj/item/scalpel(src) new /obj/item/hemostat(src) new /obj/item/retractor(src) new /obj/item/circular_saw(src) new /obj/item/bonesetter(src) new /obj/item/surgicaldrill(src) new /obj/item/cautery(src) new /obj/item/surgical_drapes(src) new /obj/item/clothing/suit/straight_jacket(src) new /obj/item/clothing/mask/muzzle(src) new /obj/item/mmi/syndie(src) new /obj/item/blood_filter(src) /obj/item/storage/backpack/duffelbag/syndie/ammo name = "ammunition duffel bag" desc = "A large duffel bag for holding extra weapons ammunition and supplies." icon_state = "duffel-syndieammo" inhand_icon_state = "duffel-syndieammo" /obj/item/storage/backpack/duffelbag/syndie/ammo/shotgun desc = "A large duffel bag, packed to the brim with Bulldog shotgun magazines." /obj/item/storage/backpack/duffelbag/syndie/ammo/shotgun/PopulateContents() for(var/i in 1 to 6) new /obj/item/ammo_box/magazine/m12g(src) new /obj/item/ammo_box/magazine/m12g/slug(src) new /obj/item/ammo_box/magazine/m12g/slug(src) new /obj/item/ammo_box/magazine/m12g/dragon(src) /obj/item/storage/backpack/duffelbag/syndie/ammo/smg desc = "A large duffel bag, packed to the brim with C-20r magazines." /obj/item/storage/backpack/duffelbag/syndie/ammo/smg/PopulateContents() for(var/i in 1 to 9) new /obj/item/ammo_box/magazine/smgm45(src) /obj/item/storage/backpack/duffelbag/syndie/ammo/mech desc = "A large duffel bag, packed to the brim with various exosuit ammo." /obj/item/storage/backpack/duffelbag/syndie/ammo/mech/PopulateContents() new /obj/item/mecha_ammo/scattershot(src) new /obj/item/mecha_ammo/scattershot(src) new /obj/item/mecha_ammo/scattershot(src) new /obj/item/mecha_ammo/scattershot(src) new /obj/item/storage/belt/utility/syndicate(src) /obj/item/storage/backpack/duffelbag/syndie/ammo/mauler desc = "A large duffel bag, packed to the brim with various exosuit ammo." /obj/item/storage/backpack/duffelbag/syndie/ammo/mauler/PopulateContents() new /obj/item/mecha_ammo/lmg(src) new /obj/item/mecha_ammo/lmg(src) new /obj/item/mecha_ammo/lmg(src) new /obj/item/mecha_ammo/scattershot(src) new /obj/item/mecha_ammo/scattershot(src) new /obj/item/mecha_ammo/scattershot(src) new /obj/item/mecha_ammo/missiles_he(src) new /obj/item/mecha_ammo/missiles_he(src) new /obj/item/mecha_ammo/missiles_he(src) /obj/item/storage/backpack/duffelbag/syndie/c20rbundle desc = "A large duffel bag containing a C-20r, some magazines, and a cheap looking suppressor." /obj/item/storage/backpack/duffelbag/syndie/c20rbundle/PopulateContents() new /obj/item/ammo_box/magazine/smgm45(src) new /obj/item/ammo_box/magazine/smgm45(src) new /obj/item/gun/ballistic/automatic/c20r(src) new /obj/item/suppressor/specialoffer(src) /obj/item/storage/backpack/duffelbag/syndie/bulldogbundle desc = "A large duffel bag containing a Bulldog, some drums, and a pair of thermal imaging glasses." /obj/item/storage/backpack/duffelbag/syndie/bulldogbundle/PopulateContents() new /obj/item/gun/ballistic/shotgun/bulldog(src) new /obj/item/ammo_box/magazine/m12g(src) new /obj/item/ammo_box/magazine/m12g(src) new /obj/item/clothing/glasses/thermal/syndi(src) /obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle desc = "A large duffel bag containing a medical equipment, a Donksoft LMG, a big jumbo box of riot darts, and a knock-off pair of magboots." /obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle/PopulateContents() new /obj/item/clothing/shoes/magboots/syndie(src) new /obj/item/storage/firstaid/tactical(src) new /obj/item/gun/ballistic/automatic/l6_saw/toy(src) new /obj/item/ammo_box/foambox/riot(src) /obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle desc = "A large duffel bag containing deadly chemicals, a handheld chem sprayer, Bioterror foam grenade, a Donksoft assault rifle, box of riot grade darts, a dart pistol, and a box of syringes." /obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle/PopulateContents() new /obj/item/reagent_containers/spray/chemsprayer/bioterror(src) new /obj/item/storage/box/syndie_kit/chemical(src) new /obj/item/gun/syringe/syndicate(src) new /obj/item/gun/ballistic/automatic/c20r/toy(src) new /obj/item/storage/box/syringes(src) new /obj/item/ammo_box/foambox/riot(src) new /obj/item/grenade/chem_grenade/bioterrorfoam(src) if(prob(5)) new /obj/item/food/pizza/pineapple(src) /obj/item/storage/backpack/duffelbag/syndie/c4/PopulateContents() for(var/i in 1 to 10) new /obj/item/grenade/c4(src) /obj/item/storage/backpack/duffelbag/syndie/x4/PopulateContents() for(var/i in 1 to 3) new /obj/item/grenade/c4/x4(src) /obj/item/storage/backpack/duffelbag/syndie/firestarter desc = "A large duffel bag containing a New Russian pyro backpack sprayer, Elite hardsuit, a Stechkin APS pistol, minibomb, ammo, and other equipment." /obj/item/storage/backpack/duffelbag/syndie/firestarter/PopulateContents() new /obj/item/clothing/under/syndicate/soviet(src) new /obj/item/watertank/op(src) new /obj/item/clothing/suit/space/hardsuit/syndi/elite(src) new /obj/item/gun/ballistic/automatic/pistol/aps(src) new /obj/item/ammo_box/magazine/m9mm_aps/fire(src) new /obj/item/ammo_box/magazine/m9mm_aps/fire(src) new /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka(src) new /obj/item/reagent_containers/hypospray/medipen/stimulants(src) new /obj/item/grenade/syndieminibomb(src) // For ClownOps. /obj/item/storage/backpack/duffelbag/clown/syndie/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) slowdown = 0 STR.silent = TRUE /obj/item/storage/backpack/duffelbag/clown/syndie/PopulateContents() new /obj/item/pda/clown(src) new /obj/item/clothing/under/rank/civilian/clown(src) new /obj/item/clothing/shoes/clown_shoes(src) new /obj/item/clothing/mask/gas/clown_hat(src) new /obj/item/bikehorn(src) new /obj/item/implanter/sad_trombone(src) /obj/item/storage/backpack/henchmen name = "wings" desc = "Granted to the henchmen who deserve it. This probably doesn't include you." icon_state = "henchmen" inhand_icon_state = "henchmen" /obj/item/storage/backpack/duffelbag/cops name = "police bag" desc = "A large duffel bag for holding extra police gear." slowdown = 0