diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 01ad8e8f82b..1e9ff3aa271 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -352,12 +352,14 @@
item_state = "comic"
/obj/item/toy/comic/azmarian/issue_1
+ name = "az'marian comic - issue 1"
desc_extended = "Issue 1 - The Az'Marian Landing! - In this issue, the would-be hero departs from Az'Mar and lands in a war-torn \
town in the outskirts of the Kingdom, witnessing the townspeople terrorised by a Zhan'Khazan maniacal terrorist. After mutilating \
his body with alien technology and even cutting off his own arms to replace with robotic equivalents, the cybernetically enhanced \
Corporal Khara'zan will not let his reign of terror be stopped easily. Will the visitor from Az'mar manage to stand in his way and prevail?"
/obj/item/toy/comic/azmarian/issue_2
+ name = "az'marian comic - issue 2"
desc_extended = "Issue 2 - The Road Towards A Dark Future - In this issue, the Az'Marian meets the local nobility whom he had saved from \
terror, learning that the Kingdom is threatened on all fronts. The superhero embarks on a journey through bandit-infested lands towards the \
headquarters of evil, meeting an unlikely ally and his band of friends. However, all is not what it seems, and the superhero will soon face \
@@ -365,24 +367,28 @@
faces the modern threat of depraved Tajara."
/obj/item/toy/comic/azmarian/issue_3
+ name = "az'marian comic - issue 3"
desc_extended = "Issue 3 - The Swamp Debacle - In this issue, the Az'Marian and his loyal but dim-witted sidekick Murr'zhul reach a poisonous \
swamp polluted by waste-producing factories. A chemical-obsessed scientist looks to experiment and find the perfect poison for his evil deeds, \
killing the surrounding nature and turning residents sickly. A lumbering creature hiding in the swamp caves, a mad researcher about to find the \
perfect toxin, and the duo seeking to halt his plans. Will they find a way to shut him down?"
/obj/item/toy/comic/azmarian/issue_4
+ name = "az'marian comic - issue 4"
desc_extended = "Issue 4 - The Den of Evil! - In this issue, the hero and his loyal but dim-witted sidekick Murr'zhul reach the stronghold of \
the retreating Corporal Khara'zan. The superhero uncovers a sinister plot orchestrated by the Corporal's superior to turn all of the local living \
beings into cyborgs. The leader, Director Shul'tyz, is not yet aware of the Az'Marian's presence, and the time is ripe. Met with a slumbering horde \
of cybernetic ha'rrons, schlorrgos and even Tajara, the superhero encounters a threat that will truly test his mettle."
/obj/item/toy/comic/azmarian/issue_5
+ name = "az'marian comic - issue 5"
desc_extended = "Issue 5 - Path to Recovery - In this issue, the hero, who has faced a successful confrontation with Director Shul'tyz, managed to \
free the local populace of cybernetic mind control, but at a heavy price. The syringe that was shot into him started coursing through his veins, preventing \
him from using his powers in a rapidly degrading state. His loyal sidekick Murr'zhul helps bring the hero to the capital of the ancient Kingdom to seek aid. \
Met with internal politics, a mixed reception, sinister plots and a meeting with the King, will the hero find a way to recover from the illness that plagues him?"
/obj/item/toy/comic/azmarian/issue_6
+ name = "az'marian comic - issue 6"
desc_extended = "Issue 6 - The Pilgrimage - Steppe Trouble! - In this issue, the hero and his loyal but dim-witted sidekick Murr'zhul embark on a journey \
to a sacred shrine in the mountains built by the early Ancient Tajara. Having received a blessing to prevent his state from degrading from the local priests, \
the hero has little time to waste before the blessing wanes. A meeting with wandering nomads, an audience with their ruler, and a perilous journey across \
@@ -390,12 +396,14 @@
trusted Hharar side-kick manage to reach the mountains?"
/obj/item/toy/comic/azmarian/issue_7
+ name = "az'marian comic - issue 7"
desc_extended = "Issue 7 - The Pilgrimage Pt. 2 - Mountain Survival - In this issue, the hero and his loyal but dim-witted sidekick Murr'zhul reach \
the mountains that contain the ancient shrine of the Suns, where he would be able to recover from his illness caused by Director Shul'tyz. Trailed \
by Sham'tyrs, facing freezing winds and snow, the two will trek to reach the shrine in hope of recovery. Bandits encampments, a village in need of help, \
a chance encounter with the S'Mara, and a shape-shifting spy amongst the Sham'tyrs, will the heroes make their way in one piece?"
/obj/item/toy/comic/azmarian/issue_8
+ name = "az'marian comic - issue 8"
desc_extended = "Issue 8 - The Shrine - In this issue, the hero and his loyal but dim-witted sidekick Murr'zhul meet the Parivara at the ancient shrine. \
Tended to by the Sun Sister with the blessing of Messa, the Az'Marian manages to recover from his affliction over the course of a week. He learns of an \
evil plan staged by a group of Cae'rrin living in caves nearby to desecrate the shrine and eat its attendants, and the two embark on a journey to put a \
diff --git a/code/modules/cargo/items/operations.dm b/code/modules/cargo/items/operations.dm
index 1a0a203bdab..76ec7851ad4 100644
--- a/code/modules/cargo/items/operations.dm
+++ b/code/modules/cargo/items/operations.dm
@@ -587,11 +587,11 @@
name = "commissary cigarette restock"
supplier = "getmore"
description = "A box full of stock for the commissary."
- price = 200
+ price = 240
items = list(
- /obj/item/commissary_restrock
+ /obj/item/storage/box/fancy/commissary_restock
)
- access = 0
+ access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
@@ -601,11 +601,11 @@
name = "commissary tobacco leaves restock"
supplier = "getmore"
description = "A box full of stock for the commissary."
- price = 150
+ price = 100
items = list(
- /obj/item/commissary_restrock/rollable
+ /obj/item/storage/box/fancy/commissary_restock/rollable
)
- access = 0
+ access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
@@ -615,11 +615,11 @@
name = "commissary chewing tobacco restock"
supplier = "getmore"
description = "A box full of stock for the commissary."
- price = 175
+ price = 240
items = list(
- /obj/item/commissary_restrock/chewable
+ /obj/item/storage/box/fancy/commissary_restock/chewable
)
- access = 0
+ access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
@@ -629,11 +629,11 @@
name = "commissary smoking accessories restock"
supplier = "getmore"
description = "A box full of stock for the commissary."
- price = 400 // includes a bunch of lottery tickets, so it should be relatively high compared to other restocks
+ price = 140
items = list(
- /obj/item/commissary_restrock/smoking_accessory
+ /obj/item/storage/box/fancy/commissary_restock/smoking_accessory
)
- access = 0
+ access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
@@ -643,11 +643,11 @@
name = "commissary electronic cigarette restock"
supplier = "getmore"
description = "A box full of stock for the commissary."
- price = 225
+ price = 80
items = list(
- /obj/item/commissary_restrock/electronic_cig
+ /obj/item/storage/box/fancy/commissary_restock/electronic_cig
)
- access = 0
+ access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
@@ -657,11 +657,11 @@
name = "commissary snack restock"
supplier = "getmore"
description = "A box full of stock for the commissary."
- price = 150
+ price = 100
items = list(
- /obj/item/commissary_restrock/food
+ /obj/item/storage/box/fancy/commissary_restock/food
)
- access = 0
+ access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
@@ -671,11 +671,11 @@
name = "commissary xeno snack restock"
supplier = "getmore"
description = "A box full of stock for the commissary."
- price = 150
+ price = 60
items = list(
- /obj/item/commissary_restrock/food/xeno
+ /obj/item/storage/box/fancy/commissary_restock/food/xeno
)
- access = 0
+ access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
@@ -685,11 +685,11 @@
name = "commissary candy restock"
supplier = "getmore"
description = "A box full of stock for the commissary."
- price = 150
+ price = 65
items = list(
- /obj/item/commissary_restrock/food/candy
+ /obj/item/storage/box/fancy/commissary_restock/food/candy
)
- access = 0
+ access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
@@ -699,11 +699,11 @@
name = "commissary microwave meal restock"
supplier = "getmore"
description = "A box full of stock for the commissary."
- price = 150
+ price = 220
items = list(
- /obj/item/commissary_restrock/food/microwave
+ /obj/item/storage/box/fancy/commissary_restock/food/microwave
)
- access = 0
+ access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
@@ -713,11 +713,11 @@
name = "commissary drink restock"
supplier = "getmore"
description = "A box full of stock for the commissary."
- price = 300
+ price = 150
items = list(
- /obj/item/commissary_restrock/drink
+ /obj/item/storage/box/fancy/commissary_restock/drink
)
- access = 0
+ access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
@@ -727,11 +727,110 @@
name = "commissary beer restock"
supplier = "getmore"
description = "A box full of stock for the commissary."
- price = 200
+ price = 100
items = list(
- /obj/item/commissary_restrock/drink/booze_cheap
+ /obj/item/storage/box/fancy/commissary_restock/drink/booze_cheap
)
- access = 0
+ access = ACCESS_CARGO
+ container_type = "crate"
+ groupable = TRUE
+ spawn_amount = 1
+
+/singleton/cargo_item/toys_restock
+ category = "operations"
+ name = "commissary toy restock"
+ supplier = "getmore"
+ description = "A box full of stock for the commissary."
+ price = 110
+ items = list(
+ /obj/item/storage/box/fancy/commissary_restock/toy
+ )
+ access = ACCESS_CARGO
+ container_type = "crate"
+ groupable = TRUE
+ spawn_amount = 1
+
+/singleton/cargo_item/dice_cards_restock
+ category = "operations"
+ name = "commissary dice and card restock"
+ supplier = "getmore"
+ description = "A box full of stock for the commissary."
+ price = 120
+ items = list(
+ /obj/item/storage/box/fancy/commissary_restock/toy/cards_dice
+ )
+ access = ACCESS_CARGO
+ container_type = "crate"
+ groupable = TRUE
+ spawn_amount = 1
+
+/singleton/cargo_item/toy_mech_restock
+ category = "operations"
+ name = "commissary toy mech restock"
+ supplier = "getmore"
+ description = "A box full of stock for the commissary."
+ price = 200
+ items = list(
+ /obj/item/storage/box/fancy/commissary_restock/toy/mech
+ )
+ access = ACCESS_CARGO
+ container_type = "crate"
+ groupable = TRUE
+ spawn_amount = 1
+
+/singleton/cargo_item/comic_restock
+ category = "operations"
+ name = "commissary comic restock"
+ supplier = "getmore"
+ description = "A box full of stock for the commissary."
+ price = 25
+ items = list(
+ /obj/item/storage/box/fancy/commissary_restock/toy/comic
+ )
+ access = ACCESS_CARGO
+ container_type = "crate"
+ groupable = TRUE
+ spawn_amount = 1
+
+/singleton/cargo_item/nka_comic_restock
+ category = "operations"
+ name = "commissary az'marian comic series restock"
+ supplier = "getmore"
+ description = "A box full of stock for the commissary."
+ price = 50
+ items = list(
+ /obj/item/storage/box/fancy/commissary_restock/toy/comic/nka
+ )
+ access = ACCESS_CARGO
+ container_type = "crate"
+ groupable = TRUE
+ spawn_amount = 1
+
+/singleton/cargo_item/music_restock
+ category = "operations"
+ name = "commissary music restock"
+ supplier = "getmore"
+ description = "A box full of stock for the commissary."
+ price = 50
+ items = list(
+ /obj/item/storage/box/fancy/commissary_restock/music
+ )
+ access = ACCESS_CARGO
+ container_type = "crate"
+ groupable = TRUE
+ spawn_amount = 1
+
+/singleton/cargo_item/tea_restock
+ category = "operations"
+ name = "commissary tea restock"
+ supplier = "getmore"
+ description = "A box full of stock for the commissary."
+ // Bulk commissary orders are at a discount, so cheaper per tin of tea than regularly ordering tea
+ price = 75
+ items = list(
+ /obj/item/storage/box/fancy/commissary_restock/tea
+ )
+ access = ACCESS_CARGO
container_type = "crate"
groupable = TRUE
spawn_amount = 1
diff --git a/code/modules/cooking/machinery/commissary.dm b/code/modules/cooking/machinery/commissary.dm
index d2d0143c214..7975875d4ce 100644
--- a/code/modules/cooking/machinery/commissary.dm
+++ b/code/modules/cooking/machinery/commissary.dm
@@ -122,7 +122,11 @@
/obj/item/gun/bang,
/obj/item/eightball,
/obj/item/bikehorn,
- /obj/item/camera_film
+ /obj/item/camera_film,
+ /obj/item/ammo_magazine/caps,
+ /obj/item/pack,
+ /obj/item/storage/card,
+ /obj/item/music_cartridge
)
display_tiers = 4
display_tier_amt = 5
@@ -130,25 +134,6 @@
/obj/machinery/smartfridge/tradeshelf/mouse_drop_receive(atom/dropping, mob/user, params)
LoadComponent(/datum/component/leanable, dropping)
-/obj/machinery/smartfridge/tradeshelf/attackby(obj/item/attacking_item, mob/user)
- if(istype(attacking_item, /obj/item/commissary_restrock))
- var/obj/item/commissary_restrock/P = attacking_item
- var/item_loaded = 0
- for(var/obj/G in P.contents)
- if(accept_check(G))
- if(length(contents) >= max_n_of_items)
- break
- P.remove_from_storage(G,src)
- item_quants[G.name]++
- item_loaded++
- if(item_loaded)
- user.visible_message("[user] loads [src] with [P].", SPAN_NOTICE("You load [src] with [P]."))
- if(length(P.contents) > 0)
- to_chat(user, SPAN_NOTICE("Some items are refused."))
- update_icon()
- return TRUE
- . = ..()
-
// -------------------------------------------------
/obj/structure/cash_register/commissary
storage_type = null
@@ -265,14 +250,24 @@
set_light(FALSE)
return
-/obj/item/commissary_restrock
+/obj/item/storage/box/fancy/commissary_restock
name = "commissary cigarette restock pack"
icon = 'icons/obj/storage/boxes.dmi'
icon_state = "commissary_restock"
item_state = "commissary_restock"
w_class = WEIGHT_CLASS_NORMAL
- var/illustration = "sparkler"
- var/starts_with = list(
+ illustration = "sparkler"
+ label = null
+ foldable = /obj/item/stack/material/cardboard
+ color = null
+ icon_overlays = FALSE
+ display_contents_with_number = TRUE
+ allow_quick_gather = TRUE
+ make_exact_fit = TRUE
+ can_hold_strict = TRUE
+ closable = FALSE
+ opened_icon_state = "commissary_restock_used"
+ starts_with = list(
// Cigarettes
/obj/item/storage/box/fancy/cigarettes/pra = 3,
/obj/item/storage/box/fancy/cigarettes/dpra = 3,
@@ -286,7 +281,12 @@
/obj/item/storage/box/fancy/cigarettes/cigar = 3
)
-/obj/item/commissary_restrock/rollable
+/obj/item/storage/box/fancy/commissary_restock/Initialize()
+ . = ..()
+ // The copy() at the end is required to avoid every line after this from imploding. Why? I have no idea. It just does.
+ can_hold = src.starts_with.Copy()
+
+/obj/item/storage/box/fancy/commissary_restock/rollable
name = "commissary tobacco leaves restock pack"
starts_with = list(
// Rollables
@@ -298,7 +298,7 @@
/obj/item/storage/chewables/rollable/vedamor = 3
)
-/obj/item/commissary_restrock/chewable
+/obj/item/storage/box/fancy/commissary_restock/chewable
name = "commissary chewing tobacco restock pack"
starts_with = list(
// Chewing tobacco
@@ -313,7 +313,7 @@
/obj/item/storage/chewables/solar_salve = 3
)
-/obj/item/commissary_restrock/smoking_accessory
+/obj/item/storage/box/fancy/commissary_restock/smoking_accessory
name = "commissary smoking accessories restock pack"
starts_with = list(
// Misc smoking
@@ -327,7 +327,7 @@
/obj/item/spacecash/ewallet/lotto = 8 // A bit of a risk that hangar techs may just use them instead of selling, but that should be handled IC as theft
)
-/obj/item/commissary_restrock/electronic_cig
+/obj/item/storage/box/fancy/commissary_restock/electronic_cig
name = "commissary electronic cigarette restock pack"
starts_with = list(
// Electronic
@@ -339,7 +339,7 @@
/obj/item/reagent_containers/ecig_cartridge/grape = 2
)
-/obj/item/commissary_restrock/food
+/obj/item/storage/box/fancy/commissary_restock/food
name = "commissary snack restock pack"
illustration = "snack"
starts_with = list(
@@ -361,7 +361,7 @@
/obj/item/reagent_containers/food/snacks/sosjerky = 3
)
-/obj/item/commissary_restrock/food/xeno
+/obj/item/storage/box/fancy/commissary_restock/food/xeno
name = "commissary xeno snack restock pack"
illustration = "snack"
starts_with = list(
@@ -381,7 +381,7 @@
/obj/item/reagent_containers/food/snacks/adhomian_can = 2,
)
-/obj/item/commissary_restrock/food/candy
+/obj/item/storage/box/fancy/commissary_restock/food/candy
name = "commissary candy restock pack"
starts_with = list(
// Candy
@@ -393,12 +393,12 @@
/obj/item/storage/box/fancy/vkrexitaffy = 3,
/obj/item/clothing/mask/chewable/candy/lolli = 5,
/obj/item/storage/box/fancy/admints = 3,
- /obj/item/reagent_containers/food/drinks/bottle/bestblend,
- /obj/item/storage/box/fancy/foysnack,
- /obj/item/reagent_containers/food/snacks/choctruffles
+ /obj/item/reagent_containers/food/drinks/bottle/bestblend = 2,
+ /obj/item/storage/box/fancy/foysnack = 3,
+ /obj/item/reagent_containers/food/snacks/choctruffles = 3
)
-/obj/item/commissary_restrock/food/microwave
+/obj/item/storage/box/fancy/commissary_restock/food/microwave
name = "commissary microwave meal restock pack"
starts_with = list(
// Microwave meals
@@ -418,7 +418,7 @@
/obj/item/storage/box/unique/donkpockets = 3
)
-/obj/item/commissary_restrock/drink
+/obj/item/storage/box/fancy/commissary_restock/drink
name = "commissary drink restock pack"
illustration = "soda"
starts_with = list(
@@ -451,7 +451,7 @@
/obj/item/reagent_containers/food/drinks/carton/small/milk/strawberry = 5
)
-/obj/item/commissary_restrock/drink/booze_cheap
+/obj/item/storage/box/fancy/commissary_restock/drink/booze_cheap
name = "commissary cheap booze restock pack"
starts_with = list(
// Booze
@@ -465,61 +465,114 @@
/obj/item/reagent_containers/food/drinks/bottle/small/xuizijuice = 6
)
-/obj/item/commissary_restrock/Initialize(mapload, ...)
- . = ..()
- if(illustration)
- var/image/illustration_img = image(icon, illustration)
- illustration_img.appearance_flags |= RESET_COLOR
- AddOverlays(illustration_img)
- fill()
-/obj/item/commissary_restrock/proc/fill()
- if(LAZYLEN(starts_with))
- for(var/t in starts_with)
- if(!ispath(t))
- crash_with("[t] in [src]'s starts_with list is not a path!")
- continue
- for(var/i=0, i