Files
Fghj240 d5102b2030 Void stamp integration - the stampening (#94359)
## About The Pull Request

Void stamp added to bureaucracy loot spawners, a new box that contains a
granted, denied, and void stamp found in the lawdrobe, hop locker,
bureaucracy crate, mod stamper module, and the paperwork implant gets a
stamp that can cycle between 3 different ones like the mod stamp.

## Why It's Good For The Game

Finally the void stamp is obtainable

## Changelog

🆑
add: The void stamp is now obtainable
add: The lawdrobe now sells a box of stamps
add: The head of personnel's locker now contains a box of stamps
fix: The mod stamper module is now visible
/🆑

---------

Co-authored-by: Fghj240 <fakeemail@notrealemail.com>
2026-01-08 18:31:15 +00:00

321 lines
9.8 KiB
Plaintext

// This file contains all boxes used by the Service department and its purpose on the station.
// Because we want to avoid some sort of "miscellaneous" file, let's put all the bureaucracy (pens and stuff) and the HoP's stuff here as well.
/obj/item/storage/box/drinkingglasses
name = "box of drinking glasses"
desc = "It has a picture of drinking glasses on it."
illustration = "drinkglass"
/obj/item/storage/box/drinkingglasses/PopulateContents()
for(var/i in 1 to 6)
new /obj/item/reagent_containers/cup/glass/drinkingglass(src)
/obj/item/storage/box/cups
name = "box of paper cups"
desc = "It has pictures of paper cups on the front."
illustration = "cup"
/obj/item/storage/box/cups/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/reagent_containers/cup/glass/sillycup(src)
//Some spare PDAs in a box
/obj/item/storage/box/pdas
name = "spare PDAs"
desc = "A box of spare PDA microcomputers."
illustration = "pda"
/obj/item/storage/box/pdas/PopulateContents()
for(var/i in 1 to 4)
new /obj/item/modular_computer/pda(src)
/obj/item/storage/box/ids
name = "box of spare IDs"
desc = "Has so many empty IDs."
illustration = "id"
/obj/item/storage/box/ids/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/card/id/advanced(src)
/obj/item/storage/box/silver_ids
name = "box of spare silver IDs"
desc = "Shiny IDs for important people."
illustration = "id"
/obj/item/storage/box/silver_ids/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/card/id/advanced/silver(src)
/obj/item/storage/box/mousetraps
name = "box of Pest-B-Gon mousetraps"
desc = span_alert("Keep out of reach of children.")
illustration = "mousetrap"
/obj/item/storage/box/mousetraps/PopulateContents()
for(var/i in 1 to 6)
new /obj/item/assembly/mousetrap(src)
/obj/item/storage/box/snappops
name = "snap pop box"
desc = "Eight wrappers of fun! Ages 8 and up. Not suitable for children."
icon = 'icons/obj/toys/toy.dmi'
icon_state = "spbox"
illustration = ""
storage_type = /datum/storage/box/snappops
/obj/item/storage/box/snappops/PopulateContents()
for(var/i in 1 to 8)
new /obj/item/toy/snappop(src)
/obj/item/storage/box/matches
name = "matchbox"
desc = "A small box of Almost But Not Quite Plasma Premium Matches."
icon = 'icons/obj/cigarettes.dmi'
icon_state = "matchbox"
inhand_icon_state = "zippo"
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
worn_icon_state = "lighter"
w_class = WEIGHT_CLASS_TINY
slot_flags = ITEM_SLOT_BELT
drop_sound = 'sound/items/handling/matchbox_drop.ogg'
pickup_sound = 'sound/items/handling/matchbox_pickup.ogg'
custom_price = PAYCHECK_CREW * 0.4
base_icon_state = "matchbox"
illustration = null
storage_type = /datum/storage/box/match
/obj/item/storage/box/matches/Initialize(mapload)
. = ..()
AddElement(/datum/element/ignites_matches)
/obj/item/storage/box/matches/PopulateContents()
for(var/i in 1 to 10)
new /obj/item/match(src)
/obj/item/storage/box/matches/update_icon_state()
. = ..()
switch(length(contents))
if(10)
icon_state = base_icon_state
if(5 to 9)
icon_state = "[base_icon_state]_almostfull"
if(1 to 4)
icon_state = "[base_icon_state]_almostempty"
if(0)
icon_state = "[base_icon_state]_e"
/obj/item/storage/box/lights
name = "box of replacement bulbs"
desc = "This box is shaped on the inside so that only light tubes and bulbs fit."
inhand_icon_state = "syringe_kit"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
foldable_result = /obj/item/stack/sheet/cardboard //BubbleWrap
illustration = "light"
storage_type = /datum/storage/box/lights
/obj/item/storage/box/lights/bulbs/PopulateContents()
for(var/i in 1 to 21)
new /obj/item/light/bulb(src)
/obj/item/storage/box/lights/tubes
name = "box of replacement tubes"
illustration = "lighttube"
/obj/item/storage/box/lights/tubes/PopulateContents()
for(var/i in 1 to 21)
new /obj/item/light/tube(src)
/obj/item/storage/box/lights/mixed
name = "box of replacement lights"
illustration = "lightmixed"
/obj/item/storage/box/lights/mixed/PopulateContents()
for(var/i in 1 to 14)
new /obj/item/light/tube(src)
for(var/i in 1 to 7)
new /obj/item/light/bulb(src)
/obj/item/storage/box/fountainpens
name = "box of fountain pens"
illustration = "fpen"
/obj/item/storage/box/fountainpens/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/pen/fountain(src)
/obj/item/storage/box/dishdrive
name = "DIY Dish Drive Kit"
desc = "Contains everything you need to build your own Dish Drive!"
custom_premium_price = PAYCHECK_CREW * 3
/obj/item/storage/box/dishdrive/PopulateContents()
var/list/items_inside = list(
/obj/item/circuitboard/machine/dish_drive = 1,
/obj/item/screwdriver = 1,
/obj/item/stack/cable_coil/five = 1,
/obj/item/stack/sheet/glass = 1,
/obj/item/stack/sheet/iron/five = 1,
/obj/item/stock_parts/servo = 1,
/obj/item/stock_parts/matter_bin = 2,
/obj/item/wrench = 1,
)
generate_items_inside(items_inside,src)
/obj/item/storage/box/actionfigure
name = "box of action figures"
desc = "The latest set of collectable action figures."
icon_state = "box"
/obj/item/storage/box/actionfigure/PopulateContents()
for(var/i in 1 to 4)
var/random_figure = pick(subtypesof(/obj/item/toy/figure))
new random_figure(src)
/obj/item/storage/box/tail_pin
name = "pin the tail on the corgi supplies"
desc = "For ages 10 and up. ...Why is this even on a space station? Aren't you a little old for babby games?" //Intentional typo.
custom_price = PAYCHECK_COMMAND * 1.25
/obj/item/storage/box/tail_pin/PopulateContents()
for(var/i in 1 to 3)
new /obj/item/poster/tail_board(src)
new /obj/item/tail_pin(src)
/obj/item/storage/box/party_poppers
name = "box of party poppers"
desc = "Turn any event into a celebration and ensure the janitor stays busy."
/obj/item/storage/box/party_poppers/PopulateContents()
for(var/i in 1 to 5)
new /obj/item/reagent_containers/spray/chemsprayer/party(src)
/obj/item/storage/box/balloons
name = "box of long balloons"
desc = "A completely randomized and wacky box of long balloons, harvested straight from balloon farms on the clown planet."
illustration = "balloon"
storage_type = /datum/storage/box/balloon
/obj/item/storage/box/balloons/PopulateContents()
for(var/i in 1 to 24)
new /obj/item/toy/balloon/long(src)
/obj/item/storage/box/stickers
name = "sticker pack"
desc = "A pack of removable stickers. Removable? What a rip off!<br>On the back, <b>DO NOT GIVE TO THE CLOWN!</b> is printed in large lettering."
icon = 'icons/obj/toys/stickers.dmi'
icon_state = "stickerpack"
illustration = null
w_class = WEIGHT_CLASS_TINY
storage_type = /datum/storage/box/stickers
var/static/list/pack_labels = list(
"smile",
"frown",
"heart",
"silentman",
"tider",
"star",
)
/obj/item/storage/box/stickers/Initialize(mapload)
. = ..()
if(isnull(illustration))
illustration = pick(pack_labels)
update_appearance()
/obj/item/storage/box/stickers/proc/generate_non_contraband_stickers_list()
var/list/allowed_stickers = list()
for(var/obj/item/sticker/sticker_type as anything in subtypesof(/obj/item/sticker))
if(!sticker_type::exclude_from_random)
allowed_stickers += sticker_type
return allowed_stickers
/obj/item/storage/box/stickers/PopulateContents()
var/static/list/non_contraband
if(isnull(non_contraband))
non_contraband = generate_non_contraband_stickers_list()
for(var/i in 1 to rand(4, 8))
var/type = pick(non_contraband)
new type(src)
/obj/item/storage/box/stickers/googly
name = "googly eye sticker pack"
desc = "Turn anything and everything into something vaguely alive!"
illustration = "googly-alt"
/obj/item/storage/box/stickers/googly/PopulateContents()
for(var/i in 1 to 6)
new /obj/item/sticker/googly(src)
/// A box containing a skub, for easier carry because skub is a bulky item.
/obj/item/storage/box/stickers/skub
name = "skub fan pack"
desc = "A vinyl pouch to store your skub and pro-skub shirt in. A label on the back reads: \"Skubtide, Stationwide\"."
icon_state = "skubpack"
illustration = "label_skub"
w_class = WEIGHT_CLASS_SMALL
storage_type = /datum/storage/box/skub
/obj/item/storage/box/stickers/skub/PopulateContents()
new /obj/item/skub(src)
new /obj/item/sticker/skub(src)
new /obj/item/sticker/skub(src)
/obj/item/storage/box/stickers/anti_skub
name = "anti-skub stickers pack"
desc = "The enemy may have been given a skub and a shirt, but I've got more stickers! Plus the pack can hold my anti-skub shirt."
icon_state = "skubpack"
illustration = "label_anti_skub"
storage_type = /datum/storage/box/anti_skub
/obj/item/storage/box/stickers/anti_skub/PopulateContents()
for(var/i in 1 to 4)
new /obj/item/sticker/anti_skub(src)
/obj/item/storage/box/pinpointer_pairs
name = "pinpointer pair box"
/obj/item/storage/box/pinpointer_pairs/PopulateContents()
var/obj/item/pinpointer/pair/A = new(src)
var/obj/item/pinpointer/pair/B = new(src)
A.other_pair = B
B.other_pair = A
/obj/item/storage/box/heretic_box
name = "box of pierced realities"
desc = "A box containing toys resembling pierced realities."
/obj/item/storage/box/heretic_box/PopulateContents()
for(var/i in 1 to rand(1,4))
new /obj/item/toy/reality_pierce(src)
/obj/item/storage/box/purity_seal_box
name = "box of purity seals"
desc = "A box containing several blessed purity seals."
/obj/item/storage/box/purity_seal_box/PopulateContents()
for(var/i in 1 to 4)
new /obj/item/sticker/purity_seal(src)
new /obj/item/sticker/purity_seal/purity_seal_2(src)
/obj/item/storage/box/stamps
name = "box of stamps"
desc = "Stamps for all kinds of documents."
illustration = "stamp"
custom_price = PAYCHECK_CREW
/obj/item/storage/box/stamps/PopulateContents()
var/static/items_inside = list(
/obj/item/stamp/granted = 1,
/obj/item/stamp/denied = 1,
/obj/item/stamp/void = 1,
)
generate_items_inside(items_inside,src)