/* * The 'fancy' path is for objects like donut boxes that show how many items are in the storage item on the sprite itself * .. Sorry for the shitty path name, I couldnt think of a better one. * * WARNING: var/icon_type is used for both examine text and sprite name. Please look at the procs below and adjust your sprite names accordingly * * * Contains: * Donut Box * Egg Carton * Candle Box * Crayon Box * Cigarette Box * Match Box */ /obj/item/storage/box/fancy var/icon_type = null // what's in the box. remember to keep it singular. var/storage_type = "box" // what type of box it is. var/opened = FALSE // handles open/closing icons. also a failsafe. var/closable = TRUE // if you can close the icon after opening. var/icon_overlays = TRUE // whether the icon uses the update_icon() or a unique one. var/open_sound = null // if you want to play a special sound if you open it for the first time var/open_message = null // same as above, but a message foldable = null // most of this stuff isn't foldable by default, e.g. cig packets and vial boxes contained_sprite = TRUE /obj/item/storage/box/fancy/open(mob/user) . = ..() if(!opened) if(!closable) if(open_sound) playsound(src, open_sound, 50, 1, -5) if(open_message) to_chat(user, SPAN_NOTICE(open_message)) opened = TRUE update_icon() // the reason why this isn't a clean catch-all update_icon() for fancy boxes is because of cigarette packets and donut boxes being different. /obj/item/storage/box/fancy/Initialize() . = ..() update_icon() if(closable) desc_info += "Alt-click to open and close the box. " //aka force override icon state. for you know, style. /obj/item/storage/box/fancy/AltClick(mob/user) if(opened && !closable) // opened, non-closable items do nothing return if(!Adjacent(user)) return opened = !opened playsound(src.loc, src.use_sound, 50, 0, -5) update_icon() if(!opened) close(user) return 1 /obj/item/storage/box/fancy/update_icon(var/itemremoved = 0) if(opened) //use the open icon. if(icon_overlays) //whether it uses the overlays/uses its own version. src.icon_state = "[src.icon_type][src.storage_type][contents.len - itemremoved]" else icon_state = "[initial(icon_state)][src.opened]" ..() else ClearOverlays() icon_state = "[initial(icon_state)]" // closed ..() /obj/item/storage/box/fancy/handle_item_insertion() if(!opened) // makes sure boxes are opened before inserting anything opened = TRUE update_icon() . = ..() /obj/item/storage/box/fancy/get_examine_text(mob/user, distance, is_adjacent, infix, suffix) . = ..() if(!icon_type || !storage_type) return if(contents.len <= 0) . += "There are no [src.icon_type]s left in the [src.storage_type]." else . += "There [src.contents.len == 1 ? "is" : "are"] [src.contents.len] [src.icon_type]\s left in \the [src.storage_type]." /* * Donut Box */ /obj/item/storage/box/fancy/donut name = "donut box" desc = "A box of half-a-dozen donuts sponsored by GetMore Chocolate Corporation. Allegedly contentious with the psychiatrist unions for some reason." icon = 'icons/obj/storage/fancy/donutbox.dmi' icon_state = "donutbox" icon_type = "donut" center_of_mass = list("x" = 16,"y" = 9) can_hold = list(/obj/item/reagent_containers/food/snacks/donut) starts_with = list(/obj/item/reagent_containers/food/snacks/donut/normal = 6) storage_slots = 6 icon_overlays = FALSE foldable = /obj/item/stack/material/cardboard /obj/item/storage/box/fancy/donut/update_icon() // One of the few unique update_icon()s, due to having to store both regular and sprinkled donuts. . = ..() if(opened) ClearOverlays() var/i = 0 for(var/obj/item/reagent_containers/food/snacks/donut/D in contents) AddOverlays("[i][D.overlay_state]") i++ /obj/item/storage/box/fancy/donut/empty starts_with = null max_storage_space = 12 /* * Egg Box */ /obj/item/storage/box/fancy/egg_box name = "egg carton" desc = "A carton of eggs." icon = 'icons/obj/storage/fancy/eggcarton.dmi' icon_state = "eggcarton" item_state = "eggbox" icon_type = "egg" storage_type = "carton" center_of_mass = list("x" = 16,"y" = 7) storage_slots = 12 can_hold = list( /obj/item/reagent_containers/food/snacks/egg, /obj/item/reagent_containers/food/snacks/boiledegg, /obj/item/reagent_containers/food/snacks/egg/ice_tunnelers ) starts_with = list(/obj/item/reagent_containers/food/snacks/egg = 12) foldable = /obj/item/stack/material/cardboard /obj/item/storage/box/fancy/egg_box/tunneler name = "ice tunneler egg carton" desc = "A carton of ice tunneler eggs." can_hold = list( /obj/item/reagent_containers/food/snacks/egg/ice_tunnelers, /obj/item/reagent_containers/food/snacks/boiledegg, /obj/item/reagent_containers/food/snacks/egg ) starts_with = list(/obj/item/reagent_containers/food/snacks/egg/ice_tunnelers = 12) foldable = /obj/item/stack/material/cardboard /* * Cracker Packet */ /obj/item/storage/box/fancy/crackers name = "\improper Getmore Crackers" desc = "Salted crackers, not much for conversation; they're awfully dry." icon = 'icons/obj/storage/fancy/crackerbag.dmi' icon_state = "crackerbag" icon_type = "cracker" storage_type = "bag" use_sound = 'sound/items/storage/wrapper.ogg' drop_sound = 'sound/items/drop/wrapper.ogg' pickup_sound = 'sound/items/pickup/wrapper.ogg' closable = FALSE storage_slots = 6 w_class = ITEMSIZE_SMALL can_hold = list(/obj/item/reagent_containers/food/snacks/cracker) starts_with = list(/obj/item/reagent_containers/food/snacks/cracker = 6) /* * Candle Box */ /obj/item/storage/box/fancy/candle_box name = "candle pack" desc = "A pack of red candles." icon = 'icons/obj/storage/fancy/candle.dmi' icon_state = "candlepack0" item_state = "candlepack" icon_type = "candle" storage_type = "pack" w_class = ITEMSIZE_SMALL throwforce = 2 slot_flags = SLOT_BELT storage_slots = 5 can_hold = list(/obj/item/flame/candle) starts_with = list(/obj/item/flame/candle = 5) opened = TRUE closable = FALSE foldable = /obj/item/stack/material/cardboard /obj/item/storage/box/fancy/candle_box/empty starts_with = null /* * Crayon Box */ /obj/item/storage/box/fancy/crayons name = "box of crayons" desc = "A box of crayons for all your rune drawing needs." icon = 'icons/obj/storage/fancy/crayon.dmi' icon_state = "crayonbox" icon_type = "crayon" w_class = ITEMSIZE_SMALL slot_flags = SLOT_BELT storage_slots = 6 can_hold = list(/obj/item/pen/crayon) starts_with = list( /obj/item/pen/crayon/red = 1, /obj/item/pen/crayon/orange = 1, /obj/item/pen/crayon/yellow = 1, /obj/item/pen/crayon/green = 1, /obj/item/pen/crayon/blue = 1, /obj/item/pen/crayon/purple = 1 ) opened = TRUE closable = FALSE foldable = /obj/item/stack/material/cardboard /obj/item/storage/box/fancy/crayons/empty starts_with = null /obj/item/storage/box/fancy/crayons/update_icon() . = ..() ClearOverlays() AddOverlays("crayonbox") for(var/obj/item/pen/crayon/crayon in contents) AddOverlays("[crayon.colourName]") /obj/item/storage/box/fancy/crayons/attackby(obj/item/attacking_item, mob/user) if(istype(attacking_item, /obj/item/pen/crayon)) var/obj/item/pen/crayon/W = attacking_item switch(W:colourName) if("mime") to_chat(usr, "This crayon is too sad to be contained in this box.") return if("rainbow") to_chat(usr, "This crayon is too powerful to be contained in this box.") return ..() /* * Matchbox */ /obj/item/storage/box/fancy/matches name = "safety match box" desc = "A small box of 'Space-Proof' premium safety matches." //can't strike these anywhere other than matchboxes, so they're safety matches icon = 'icons/obj/cigs_lighters.dmi' icon_state = "matchbox" item_state = "box" icon_type = "match" w_class = ITEMSIZE_TINY drop_sound = 'sound/items/drop/matchbox.ogg' pickup_sound = 'sound/items/pickup/matchbox.ogg' slot_flags = SLOT_BELT can_hold = list(/obj/item/flame/match, /obj/item/trash/match) starts_with = list(/obj/item/flame/match = 10) icon_overlays = FALSE /obj/item/storage/box/fancy/matches/attackby(obj/item/attacking_item, mob/user) var/obj/item/flame/match/W = attacking_item if(istype(W) && !W.lit) if(prob(25)) playsound(src.loc, 'sound/items/cigs_lighters/matchstick_lit.ogg', 25, 0, -1) user.visible_message("[user] manages to light \the [W] by striking it on \the [src].", range = 3) W.light() else playsound(src.loc, 'sound/items/cigs_lighters/matchstick_hit.ogg', 25, 0, -1) W.update_icon() return /obj/item/storage/box/fancy/matches/update_icon() . = ..() if(opened) if(contents.len == 0) icon_state = "matchbox_e" else if(contents.len <= 3) icon_state = "matchbox_almostempty" else if(contents.len <= 6) icon_state = "matchbox_almostfull" //////////// //CIG PACK// //////////// /obj/item/storage/box/fancy/cigarettes name = "Trans-Stellar Duty Frees cigarette packet" desc = "A ubiquitous brand of cigarettes, found in the facilities of every major spacefaring corporation in the universe. As mild and flavorless as it gets." desc_info = "You can put a cigarette directly in your mouth by selecting the mouth region and clicking on yourself with a cigarette packet in hand. " icon = 'icons/obj/cigs_lighters.dmi' icon_state = "cigpacket" item_state = "cigpacket" icon_type = "cigarette" storage_type = "packet" item_icons = list( slot_l_hand_str = 'icons/mob/items/lefthand_cigs_lighters.dmi', slot_r_hand_str = 'icons/mob/items/righthand_cigs_lighters.dmi', ) drop_sound = 'sound/items/drop/gloves.ogg' pickup_sound = 'sound/items/pickup/gloves.ogg' use_sound = 'sound/items/storage/wrapper.ogg' w_class = ITEMSIZE_TINY throwforce = 2 slot_flags = SLOT_BELT storage_slots = 6 can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/flame/lighter, /obj/item/trash/cigbutt) var/cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette /obj/item/storage/box/fancy/cigarettes/Initialize() atom_flags |= ATOM_FLAG_NO_REACT create_reagents(15 * storage_slots) //so people can inject cigarettes without opening a packet, now with being able to inject the whole one . = ..() /obj/item/storage/box/fancy/cigarettes/fill() for(var/i = 1 to storage_slots) new cigarette_to_spawn(src) /obj/item/storage/box/fancy/cigarettes/update_icon() . = ..() if(opened) icon_state = "[initial(icon_state)][contents.len]" /obj/item/storage/box/fancy/cigarettes/remove_from_storage(obj/item/removed_item, atom/new_location) var/obj/item/clothing/mask/smokable/cigarette/C = removed_item if(!istype(C)) return ..() reagents.trans_to_obj(C, (reagents.total_volume/contents.len)) return ..() /obj/item/storage/box/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob, target_zone) if(!ismob(M)) return if(!opened) to_chat(user, SPAN_WARNING("\The [src] is closed.")) return if(target_zone == BP_MOUTH && contents.len > 0) if(M.wear_mask) to_chat(user, SPAN_WARNING("\The [M.wear_mask] is in the way.")) return var/obj/item/clothing/mask/smokable/cigarette/cig = locate() in src if(!istype(cig)) to_chat(user, SPAN_WARNING("There isn't a cigarette in \the [src]!")) return if(M != user) if(!use_check(M)) to_chat(user, SPAN_WARNING("[M.name] is in no condition to handle items!")) return user.visible_message(SPAN_NOTICE("\The [user] holds up the open [src.name] to \the [M]'s mouth."), SPAN_NOTICE("You hold up the open [src.name] to \the [M]'s mouth, waiting for them to accept.")) var/response = alert(M, "\The [user] offers you \a [cig.name]. Do you accept?", "Smokable Offer", "Accept", "Decline") if(response != "Accept") M.visible_message(SPAN_NOTICE("[M] pushes [user]'s [src.name] away.")) return if(!M.Adjacent(user)) to_chat(user, SPAN_WARNING("You need to stay in reaching distance while giving an object.")) to_chat(M, SPAN_WARNING("\The [user] moved too far away.")) return remove_from_storage(cig, get_turf(M)) M.equip_to_slot_if_possible(cig, slot_wear_mask) M.visible_message(SPAN_NOTICE("[M] casually pulls out a [icon_type] from \the [src] with [M.get_pronoun("his")] mouth."), SPAN_NOTICE("You casually pull out a [icon_type] from \the [src] with your mouth."), range = 3) update_icon() return if(M == user && target_zone == BP_R_HAND || target_zone == BP_L_HAND) // Cig packing. Because obsessive smokers do it. user.visible_message(SPAN_NOTICE("[user] taps \the [src] against [user.get_pronoun("his")] palm."), SPAN_NOTICE("You tap \the [src] against your palm.")) else ..() // get it? A - AcmeCo, B - Blank, C - Cigar, D - DromedaryCo. How convenient is that? - Wezzy /obj/item/storage/box/fancy/cigarettes/acmeco name = "\improper AcmeCo cigarette packet" desc = "For those who somehow want to obtain the record for the most amount of cancerous tumors." icon_state = "Apacket" item_state = "Apacket" cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette/acmeco /obj/item/storage/box/fancy/cigarettes/blank name = "\improper blank cigarette packet" desc = "The healthiest cigarettes on the market! Wait, isn't this just a roll of paper?" icon_state = "Bpacket" item_state = "Bpacket" cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette/blank /obj/item/storage/box/fancy/cigarettes/cigar name = "cigar case" desc = "A luxurious tote for your fat tokes." icon_state = "cigarcase" item_state = "cigarcase" icon_type = "cigar" storage_type = "case" drop_sound = 'sound/items/drop/weldingtool.ogg' pickup_sound = 'sound/items/pickup/weldingtool.ogg' use_sound = 'sound/items/storage/briefcase.ogg' storage_slots = 8 can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar) cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette/cigar chewable = FALSE /obj/item/storage/box/fancy/cigarettes/dromedaryco name = "\improper DromedaryCo cigarette packet" desc = "A label on the packaging reads, \"Wouldn't a slow death make a change?\"" icon_state = "Dpacket" item_state = "Dpacket" cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette/dromedaryco /obj/item/storage/box/fancy/cigarettes/nicotine name = "\improper Nico-Tine cigarette packet" desc = "An Eridani marketing triumph - the jingle still torments people to this day." icon_state = "Epacket" item_state = "Epacket" cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette/nicotine /obj/item/storage/box/fancy/cigarettes/rugged name = "\improper Laissez-Faires cigarette packet" desc = "Rumored to have outlived its original purpose as part of an Idris money laundering scheme." icon_state = "Fpacket" item_state = "Fpacket" cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette/rugged /obj/item/storage/box/fancy/cigarettes/cigar/prank cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette/cigar/prank /obj/item/storage/box/fancy/cigarettes/oracle name = "\improper Natural Vysokan Soothsayer oracle cigarette packet" desc = "Featuring an illustration of a soothsayer from Vysoka on its packaging, these cigarettes are advertised as containing oracle instead of the normal tobacco. A warning box stating \"These oracle cigarettes are not healthier than tobacco alternatives\" appears to have been haphazardly placed on the packet." icon_state = "Opacket" item_state = "Fpacket" cigarette_to_spawn = /obj/item/clothing/mask/smokable/cigarette/oracle /* * Vial Box */ /obj/item/storage/box/fancy/vials name = "vial storage box" desc = "A box of vials." icon = 'icons/obj/storage/fancy/vialbox.dmi' icon_state = "vialbox6" icon_type = "vial" use_sound = 'sound/items/drop/glass.ogg' drop_sound = 'sound/items/drop/toolbox.ogg' pickup_sound = 'sound/items/pickup/toolbox.ogg' storage_slots = 6 can_hold = list(/obj/item/reagent_containers/glass/beaker/vial) starts_with = list(/obj/item/reagent_containers/glass/beaker/vial = 6) chewable = FALSE opened = TRUE closable = FALSE /obj/item/storage/lockbox/vials name = "secure vial storage box" desc = "A locked box for keeping things away from children." icon = 'icons/obj/storage/fancy/vialbox.dmi' icon_state = "vialbox0" item_state = "box" use_sound = 'sound/items/drop/glass.ogg' drop_sound = 'sound/items/drop/toolbox.ogg' pickup_sound = 'sound/items/pickup/toolbox.ogg' max_w_class = ITEMSIZE_SMALL can_hold = list(/obj/item/reagent_containers/glass/beaker/vial) max_storage_space = 12 //The sum of the w_classes of all the items in this storage item. storage_slots = 6 req_access = list(ACCESS_VIROLOGY) /obj/item/storage/lockbox/vials/Initialize() . = ..() queue_icon_update() /obj/item/storage/lockbox/vials/update_icon(var/itemremoved = 0) . = ..() var/total_contents = src.contents.len - itemremoved src.icon_state = "vialbox[total_contents]" ClearOverlays() if (!broken) AddOverlays("led[locked]") if(locked) AddOverlays("cover") else AddOverlays("ledb") /obj/item/storage/lockbox/vials/attackby(attacking_item, mob/user) ..() update_icon() /obj/item/storage/lockbox/vials/forensic icon_state = "vialbox6" locked = FALSE starts_with = list(/obj/item/reagent_containers/glass/beaker/vial = 6) req_access = list(ACCESS_FORENSICS_LOCKERS) /obj/item/storage/box/fancy/chocolate_box name = "chocolate box" desc = "A lot like life, you never know what you're going to get." icon = 'icons/obj/storage/fancy/chocolate.dmi' icon_state = "chocolatebox" icon_type = "chocolate" storage_slots = 8 can_hold = list( /obj/item/reagent_containers/food/snacks/truffle/random ) starts_with = list(/obj/item/reagent_containers/food/snacks/truffle/random = 8) maxHealth = 40 /obj/item/storage/box/fancy/chocolate_box/fill() for(var/i=1; i <= storage_slots; i++) new /obj/item/reagent_containers/food/snacks/truffle/random(src) /obj/item/pizzabox name = "pizza box" desc = "A box suited for pizzas." icon = 'icons/obj/storage/fancy/pizzabox.dmi' icon_state = "pizzabox1" item_state = "pizzabox" // don't touch this shit unless you know what you're doing drop_sound = 'sound/items/drop/cardboardbox.ogg' pickup_sound = 'sound/items/pickup/cardboardbox.ogg' contained_sprite = TRUE center_of_mass = list("x" = 16,"y" = 6) var/open = 0 // Is the box open? var/ismessy = 0 // Fancy mess on the lid var/obj/item/reagent_containers/food/snacks/sliceable/pizza/pizza // Content pizza var/pizza_type var/list/boxes = list() // If the boxes are stacked, they come here var/boxtag = "" /obj/item/pizzabox/Initialize() . = ..() if(pizza_type) pizza = new pizza_type(src) update_icon() /obj/item/pizzabox/update_icon() ClearOverlays() // Set appropriate description if( open && pizza ) desc = "A box suited for pizzas. It appears to have a [pizza.name] inside." else if( boxes.len > 0 ) desc = "A pile of boxes suited for pizzas. There appears to be [boxes.len + 1] boxes in the pile." var/obj/item/pizzabox/topbox = boxes[boxes.len] var/toptag = topbox.boxtag if( toptag != "" ) desc = "[desc] The box on top has a tag, it reads: '[toptag]'." else desc = "A box suited for pizzas." if( boxtag != "" ) desc = "[desc] The box has a tag, it reads: '[boxtag]'." // Icon states and overlays if( open ) if( ismessy ) icon_state = "pizzabox_messy" else icon_state = "pizzabox_open" if( pizza ) var/image/pizzaimg = image(pizza.icon, pizza.icon_state) pizzaimg.pixel_y = -2 AddOverlays(pizzaimg) return else // Stupid code because byondcode sucks var/doimgtag = 0 if( boxes.len > 0 ) var/obj/item/pizzabox/topbox = boxes[boxes.len] if( topbox.boxtag != "" ) doimgtag = 1 else if( boxtag != "" ) doimgtag = 1 if( doimgtag ) var/image/tagimg = image(icon, icon_state = "pizzabox_tag") tagimg.pixel_y = boxes.len * 3 AddOverlays(tagimg) icon_state = "pizzabox[boxes.len+1]" /obj/item/pizzabox/attack_hand( mob/user as mob ) if( open && pizza ) user.put_in_hands( pizza ) to_chat(user, SPAN_WARNING("You take \the [src.pizza] out of \the [src].")) src.pizza = null update_icon() return if( boxes.len > 0 ) if( user.get_inactive_hand() != src ) ..() return var/obj/item/pizzabox/box = boxes[boxes.len] boxes -= box user.put_in_hands( box ) to_chat(user, SPAN_WARNING("You remove the topmost [src] from your hand.")) box.update_icon() update_icon() return ..() /obj/item/pizzabox/attack_self( mob/user as mob ) if( boxes.len > 0 ) return open = !open if( open && pizza ) ismessy = 1 update_icon() /obj/item/pizzabox/attackby(obj/item/attacking_item, mob/user) if(istype(attacking_item, /obj/item/pizzabox/) ) var/obj/item/pizzabox/box = attacking_item if(!box.open && !src.open ) // Make a list of all boxes to be added var/list/boxestoadd = list() boxestoadd += box for(var/obj/item/pizzabox/i in box.boxes) boxestoadd += i if((boxes.len+1) + boxestoadd.len <= 5) user.drop_from_inventory(box,src) box.boxes = list() // Clear the box boxes so we don't have boxes inside boxes. - Xzibit src.boxes.Add( boxestoadd ) box.update_icon() update_icon() to_chat(user, SPAN_WARNING("You put \the [box] ontop of \the [src]!")) else to_chat(user, SPAN_WARNING("The stack is too high!")) else to_chat(user, SPAN_WARNING("Close \the [box] first!")) return if(istype(attacking_item, /obj/item/reagent_containers/food/snacks/sliceable/pizza/)) // Long ass fucking object name if(src.open) user.drop_from_inventory(attacking_item, src) src.pizza = attacking_item update_icon() to_chat(user, SPAN_WARNING("You put \the [attacking_item] in \the [src]!")) else to_chat(user, SPAN_WARNING("You try to push \the [attacking_item] through the lid but it doesn't work!")) return if(attacking_item.ispen()) if(src.open) return var/t = sanitize( tgui_input_text(user, "Enter what you want to add to the tag:", "Write", max_length = 30), 30 ) var/obj/item/pizzabox/boxtotagto = src if(boxes.len > 0) boxtotagto = boxes[boxes.len] boxtotagto.boxtag = copytext("[boxtotagto.boxtag][t]", 1, 30) update_icon() return ..() /obj/item/pizzabox/margherita pizza_type = /obj/item/reagent_containers/food/snacks/sliceable/pizza/margherita boxtag = "Margherita Deluxe" /obj/item/pizzabox/vegetable pizza_type = /obj/item/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza boxtag = "Gourmet Vegatable" /obj/item/pizzabox/mushroom pizza_type = /obj/item/reagent_containers/food/snacks/sliceable/pizza/mushroompizza boxtag = "Mushroom Special" /obj/item/pizzabox/meat pizza_type = /obj/item/reagent_containers/food/snacks/sliceable/pizza/meatpizza boxtag = "Meatlover's Supreme" /obj/item/pizzabox/pineapple pizza_type = /obj/item/reagent_containers/food/snacks/sliceable/pizza/pineapple boxtag = "Silversun Sunrise" /obj/item/pizzabox/pepperoni pizza_type = /obj/item/reagent_containers/food/snacks/sliceable/pizza/pepperoni boxtag = "Pepperoni Power" /obj/item/storage/box/fancy/chips name = "\improper Getmore salted chip multipack" desc = "A six-pack bag of Getmore salted potato chips!" icon = 'icons/obj/storage/fancy/multichips.dmi' icon_state = "multichips" icon_type = "chip packet" storage_type = "bag" use_sound = 'sound/items/storage/wrapper.ogg' drop_sound = 'sound/items/drop/wrapper.ogg' pickup_sound = 'sound/items/pickup/wrapper.ogg' closable = FALSE icon_overlays = FALSE storage_slots = 6 w_class = ITEMSIZE_NORMAL can_hold = list(/obj/item/reagent_containers/food/snacks/chips) starts_with = list(/obj/item/reagent_containers/food/snacks/chips = 6) /obj/item/storage/box/fancy/chips/cucumber name = "\improper Getmore cucumber chip multipack" desc = "A six-pack bag of Getmore cucumber potato chips!" icon_state = "multichipscucumber" starts_with = list(/obj/item/reagent_containers/food/snacks/chips/cucumber = 6) /obj/item/storage/box/fancy/chips/chicken name = "\improper Getmore chicken chip multipack" desc = "A six-pack bag of Getmore chicken potato chips!" icon_state = "multichipschicken" starts_with = list(/obj/item/reagent_containers/food/snacks/chips/chicken = 6) /obj/item/storage/box/fancy/chips/dirtberry name = "\improper Getmore dirtberry chip multipack" desc = "A six-pack bag of Getmore dirtberry potato chips!" icon_state = "multichipsdirtberry" starts_with = list(/obj/item/reagent_containers/food/snacks/chips/dirtberry = 6) /obj/item/storage/box/fancy/chips/phoron name = "\improper Getmore phoron chip multipack" desc = "A six-pack bag of Getmore 'phoron' potato chips!" icon_state = "multichipsphoron" starts_with = list(/obj/item/reagent_containers/food/snacks/chips/phoron = 6) /obj/item/storage/box/fancy/chips/variety name = "\improper Getmore chips variety pack" desc = "A Getmore variety pack, containing bags of salted, cucumber, and chicken chips!" icon_state = "multichipsvariety" starts_with = list( /obj/item/reagent_containers/food/snacks/chips = 2, /obj/item/reagent_containers/food/snacks/chips/cucumber = 2, /obj/item/reagent_containers/food/snacks/chips/chicken = 2 ) /obj/item/storage/box/fancy/food/cakepopjar name = "cake pops" desc = "Unhealthy? Don't be silly! If sprinkles of unnatural colors, intensely concentrated sugar, and bright, oil-based food dyes were bad for you, why would our children be evolutionarily drawn to eating them?!" icon = 'icons/obj/item/reagent_containers/food/pastries.dmi' icon_state = "cakepopsfull" icon_type = "cake pop" drop_sound = 'sound/items/drop/bottle.ogg' pickup_sound = 'sound/items/pickup/bottle.ogg' storage_type = "glass" storage_slots = 20 max_storage_space = 20 can_hold = list( /obj/item/reagent_containers/food/snacks/cakepopselection ) starts_with = list(/obj/item/reagent_containers/food/snacks/cakepopselection = 5) trash = /obj/item/reagent_containers/food/drinks/drinkingglass opened = TRUE closable = FALSE throwforce = 4 /obj/item/storage/box/fancy/food/cakepopjar/fill() . = ..() for(var/obj/item/reagent_containers/food/snacks/cakepopselection/cakepop in src.contents) var/MM = text2num(time2text(world.timeofday, "MM")) if(MM == 10) //this checks if the month is october and if so gives the cake pops themselves halloween colors! switch(roll("1d2")) if(1) cakepop.icon_state = "cakepop5" if(2) cakepop.icon_state = "cakepop6" else //otherwise it randomly gives them one of the "normal" colors switch(roll("1d4")) if(1) cakepop.icon_state = "cakepop1" if(2) cakepop.icon_state = "cakepop2" if(3) cakepop.icon_state = "cakepop3" if(4) cakepop.icon_state = "cakepop4" /obj/item/storage/box/fancy/food/cakepopjar/update_icon() . = ..() var/MM = text2num(time2text(world.timeofday, "MM")) if(MM == 10) //checks if it's october to give the cake pop jar halloween colors if(contents.len == 0) icon_state = "cakepopsempty" else if(contents.len == 1) icon_state = "halloweencakepopsone" else if(contents.len <= 3) icon_state = "halloweencakepopshalf" else if(contents.len <= 5) icon_state = "halloweencakepopsfull" else if(contents.len <= 10) icon_state = "halloweencakepopsstuffed" else icon_state = "halloweencakepopshalf" else //or else normal colors if(contents.len == 0) icon_state = "cakepopsempty" else if(contents.len == 1) icon_state = "cakepopsone" else if(contents.len <= 3) icon_state = "cakepopshalf" else if(contents.len <= 5) icon_state = "cakepopsfull" else if(contents.len <= 10) icon_state = "cakepopsstuffed" else icon_state = "cakepopshalf" /obj/item/storage/box/fancy/food/pralinebox name = "box of pralines" desc = "A heart shaped box filled with assorted delicious chocolate pralines. Used to show love either for another person, or more commonly - for chocolate." icon = 'icons/obj/item/reagent_containers/food/confections.dmi' icon_state = "heartbox_closed" item_state = "heartbox_closed" icon_type = "chocolate praline" contained_sprite = TRUE storage_slots = 10 max_storage_space = 10 drop_sound = 'sound/items/drop/cardboardbox.ogg' pickup_sound = 'sound/items/pickup/cardboardbox.ogg' can_hold = list( /obj/item/reagent_containers/food/snacks/pralines ) starts_with = list(/obj/item/reagent_containers/food/snacks/pralines/praline1 = 1, /obj/item/reagent_containers/food/snacks/pralines/praline2 = 1, /obj/item/reagent_containers/food/snacks/pralines/praline3 = 1, /obj/item/reagent_containers/food/snacks/pralines/praline4 = 1, /obj/item/reagent_containers/food/snacks/pralines/praline5 = 1, /obj/item/reagent_containers/food/snacks/pralines/praline6 = 1, /obj/item/reagent_containers/food/snacks/pralines/praline7 = 1, /obj/item/reagent_containers/food/snacks/pralines/praline8 = 1, /obj/item/reagent_containers/food/snacks/pralines/praline9 = 1, /obj/item/reagent_containers/food/snacks/pralines/praline10 = 1 ) throwforce = 2 /obj/item/storage/box/fancy/food/pralinebox/update_icon() . = ..() if(opened) if(contents.len == 0) icon_state = "heartbox_empty" item_state = "heartbox_open" else if(contents.len <= 9) icon_state = "heartbox_half" item_state = "heartbox_open" else if(contents.len <= 10) item_state = "heartbox_open" icon_state = "heartbox_full"