mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-01-25 08:43:42 +00:00
Ports Polaris PRs 6424, 6426, 6428, 6430, 6431, 6432, 6433, and 6434 No vorestation edit markings because they are polariscode ports.
428 lines
14 KiB
Plaintext
428 lines
14 KiB
Plaintext
/*
|
|
* 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 Box
|
|
* Candle Box
|
|
* Crayon Box
|
|
* Cigarette Box
|
|
* Vial Box
|
|
* Box of Chocolates
|
|
*/
|
|
|
|
/obj/item/weapon/storage/fancy/
|
|
icon = 'icons/obj/food.dmi'
|
|
icon_state = "donutbox6"
|
|
name = "donut box"
|
|
var/icon_type = "donut"
|
|
|
|
/obj/item/weapon/storage/fancy/update_icon(var/itemremoved = 0)
|
|
var/total_contents = contents.len - itemremoved
|
|
icon_state = "[icon_type]box[total_contents]"
|
|
return
|
|
|
|
/obj/item/weapon/storage/fancy/examine(mob/user)
|
|
if(!..(user, 1))
|
|
return
|
|
|
|
if(contents.len <= 0)
|
|
user << "There are no [icon_type]s left in the box."
|
|
else if(contents.len == 1)
|
|
user << "There is one [icon_type] left in the box."
|
|
else
|
|
user << "There are [contents.len] [icon_type]s in the box."
|
|
|
|
return
|
|
|
|
/*
|
|
* Egg Box
|
|
*/
|
|
|
|
/obj/item/weapon/storage/fancy/egg_box
|
|
icon = 'icons/obj/food.dmi'
|
|
icon_state = "eggbox"
|
|
icon_type = "egg"
|
|
name = "egg box"
|
|
storage_slots = 12
|
|
can_hold = list(
|
|
/obj/item/weapon/reagent_containers/food/snacks/egg,
|
|
/obj/item/weapon/reagent_containers/food/snacks/boiledegg
|
|
)
|
|
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/egg = 12)
|
|
|
|
/*
|
|
* Candle Boxes
|
|
*/
|
|
|
|
/obj/item/weapon/storage/fancy/candle_box
|
|
name = "red candle pack"
|
|
desc = "A pack of red candles."
|
|
icon = 'icons/obj/candle.dmi'
|
|
icon_state = "candlebox5"
|
|
icon_type = "candle"
|
|
item_state = "candlebox5"
|
|
throwforce = 2
|
|
slot_flags = SLOT_BELT
|
|
max_storage_space = ITEMSIZE_COST_SMALL * 5
|
|
starts_with = list(/obj/item/weapon/flame/candle = 5)
|
|
|
|
/obj/item/weapon/storage/fancy/whitecandle_box
|
|
name = "white candle pack"
|
|
desc = "A pack of white candles."
|
|
icon = 'icons/obj/candle.dmi'
|
|
icon_state = "whitecandlebox5"
|
|
icon_type = "whitecandle"
|
|
item_state = "whitecandlebox5"
|
|
throwforce = 2
|
|
slot_flags = SLOT_BELT
|
|
max_storage_space = ITEMSIZE_COST_SMALL * 5
|
|
starts_with = list(/obj/item/weapon/flame/candle/white = 5)
|
|
|
|
/obj/item/weapon/storage/fancy/blackcandle_box
|
|
name = "black candle pack"
|
|
desc = "A pack of black candles."
|
|
icon = 'icons/obj/candle.dmi'
|
|
icon_state = "blackcandlebox5"
|
|
icon_type = "blackcandle"
|
|
item_state = "blackcandlebox5"
|
|
throwforce = 2
|
|
slot_flags = SLOT_BELT
|
|
max_storage_space = ITEMSIZE_COST_SMALL * 5
|
|
starts_with = list(/obj/item/weapon/flame/candle/black = 5)
|
|
|
|
|
|
/*
|
|
* Crayon Box
|
|
*/
|
|
|
|
/obj/item/weapon/storage/fancy/crayons
|
|
name = "box of crayons"
|
|
desc = "A box of crayons for all your rune drawing needs."
|
|
icon = 'icons/obj/crayons.dmi'
|
|
icon_state = "crayonbox"
|
|
w_class = ITEMSIZE_SMALL
|
|
icon_type = "crayon"
|
|
can_hold = list(
|
|
/obj/item/weapon/pen/crayon
|
|
)
|
|
starts_with = list(
|
|
/obj/item/weapon/pen/crayon/red,
|
|
/obj/item/weapon/pen/crayon/orange,
|
|
/obj/item/weapon/pen/crayon/yellow,
|
|
/obj/item/weapon/pen/crayon/green,
|
|
/obj/item/weapon/pen/crayon/blue,
|
|
/obj/item/weapon/pen/crayon/purple
|
|
)
|
|
|
|
/obj/item/weapon/storage/fancy/crayons/Initialize()
|
|
. = ..()
|
|
update_icon()
|
|
|
|
/obj/item/weapon/storage/fancy/crayons/update_icon()
|
|
var/mutable_appearance/ma = new(src)
|
|
ma.overlays = list()
|
|
for(var/obj/item/weapon/pen/crayon/crayon in contents)
|
|
ma.overlays += image('icons/obj/crayons.dmi',crayon.colourName)
|
|
appearance = ma
|
|
|
|
/obj/item/weapon/storage/fancy/crayons/attackby(obj/item/W as obj, mob/user as mob)
|
|
if(istype(W,/obj/item/weapon/pen/crayon))
|
|
switch(W:colourName)
|
|
if("mime")
|
|
to_chat(user, "This crayon is too sad to be contained in this box.")
|
|
return
|
|
if("rainbow")
|
|
to_chat(user, "This crayon is too powerful to be contained in this box.")
|
|
return
|
|
..()
|
|
|
|
/obj/item/weapon/storage/fancy/markers
|
|
name = "box of markers"
|
|
desc = "A very professional looking box of permanent markers."
|
|
icon = 'icons/obj/crayons.dmi'
|
|
icon_state = "markerbox"
|
|
w_class = ITEMSIZE_SMALL
|
|
icon_type = "marker"
|
|
can_hold = list(
|
|
/obj/item/weapon/pen/crayon/marker
|
|
)
|
|
starts_with = list(
|
|
/obj/item/weapon/pen/crayon/marker/black,
|
|
/obj/item/weapon/pen/crayon/marker/red,
|
|
/obj/item/weapon/pen/crayon/marker/orange,
|
|
/obj/item/weapon/pen/crayon/marker/yellow,
|
|
/obj/item/weapon/pen/crayon/marker/green,
|
|
/obj/item/weapon/pen/crayon/marker/blue,
|
|
/obj/item/weapon/pen/crayon/marker/purple
|
|
)
|
|
|
|
/obj/item/weapon/storage/fancy/markers/Initialize()
|
|
. = ..()
|
|
update_icon()
|
|
|
|
/obj/item/weapon/storage/fancy/markers/update_icon()
|
|
var/mutable_appearance/ma = new(src)
|
|
ma.overlays = list()
|
|
for(var/obj/item/weapon/pen/crayon/marker/marker in contents)
|
|
ma.overlays += image('icons/obj/crayons.dmi',"m"+marker.colourName)
|
|
appearance = ma
|
|
|
|
/obj/item/weapon/storage/fancy/markers/attackby(obj/item/W as obj, mob/user as mob)
|
|
if(istype(W,/obj/item/weapon/pen/crayon/marker))
|
|
switch(W:colourName)
|
|
if("mime")
|
|
to_chat(user, "This marker is too depressing to be contained in this box.")
|
|
return
|
|
if("rainbow")
|
|
to_chat(user, "This marker is too childish to be contained in this box.")
|
|
return
|
|
..()
|
|
|
|
/*
|
|
* Cracker Packet
|
|
*/
|
|
|
|
/obj/item/weapon/storage/fancy/crackers
|
|
name = "\improper Getmore Crackers"
|
|
icon = 'icons/obj/food.dmi'
|
|
icon_state = "crackerbox"
|
|
icon_type = "cracker"
|
|
max_storage_space = ITEMSIZE_COST_TINY * 6
|
|
max_w_class = ITEMSIZE_TINY
|
|
w_class = ITEMSIZE_SMALL
|
|
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/cracker)
|
|
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/cracker = 6)
|
|
|
|
////////////
|
|
//CIG PACK//
|
|
////////////
|
|
/obj/item/weapon/storage/fancy/cigarettes
|
|
name = "\improper pack of Trans-Stellar Duty-frees"
|
|
desc = "A ubiquitous brand of cigarettes, found in every major spacefaring corporation in the universe. As mild and flavorless as it gets."
|
|
icon = 'icons/obj/cigarettes.dmi'
|
|
icon_state = "cigpacket"
|
|
item_state_slots = list(slot_r_hand_str = "cigpacket", slot_l_hand_str = "cigpacket")
|
|
w_class = ITEMSIZE_TINY
|
|
throwforce = 2
|
|
slot_flags = SLOT_BELT
|
|
storage_slots = 6
|
|
can_hold = list(/obj/item/clothing/mask/smokable/cigarette, /obj/item/weapon/flame/lighter, /obj/item/weapon/cigbutt)
|
|
icon_type = "cigarette"
|
|
starts_with = list(/obj/item/clothing/mask/smokable/cigarette = 6)
|
|
var/brand = "\improper Trans-Stellar Duty-free"
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/Initialize()
|
|
. = ..()
|
|
flags |= NOREACT
|
|
create_reagents(15 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one
|
|
flags |= OPENCONTAINER
|
|
if(brand)
|
|
for(var/obj/item/clothing/mask/smokable/cigarette/C in src)
|
|
C.brand = brand
|
|
C.desc += " This one is \a [brand]."
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/update_icon()
|
|
icon_state = "[initial(icon_state)][contents.len]"
|
|
return
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/remove_from_storage(obj/item/W as obj, atom/new_location)
|
|
// Don't try to transfer reagents to lighters
|
|
if(istype(W, /obj/item/clothing/mask/smokable/cigarette))
|
|
var/obj/item/clothing/mask/smokable/cigarette/C = W
|
|
reagents.trans_to_obj(C, (reagents.total_volume/contents.len))
|
|
..()
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
|
if(!istype(M, /mob))
|
|
return
|
|
|
|
if(M == user && user.zone_sel.selecting == O_MOUTH)
|
|
// Find ourselves a cig. Note that we could be full of lighters.
|
|
var/obj/item/clothing/mask/smokable/cigarette/cig = locate() in src
|
|
|
|
if(cig == null)
|
|
user << "<span class='notice'>Looks like the packet is out of cigarettes.</span>"
|
|
return
|
|
|
|
// Instead of running equip_to_slot_if_possible() we check here first,
|
|
// to avoid dousing cig with reagents if we're not going to equip it
|
|
if(!cig.mob_can_equip(user, slot_wear_mask))
|
|
return
|
|
|
|
// We call remove_from_storage first to manage the reagent transfer and
|
|
// UI updates.
|
|
remove_from_storage(cig, null)
|
|
user.equip_to_slot(cig, slot_wear_mask)
|
|
|
|
reagents.maximum_volume = 15 * contents.len
|
|
user << "<span class='notice'>You take a cigarette out of the pack.</span>"
|
|
update_icon()
|
|
else
|
|
..()
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/dromedaryco
|
|
name = "\improper DromedaryCo packet"
|
|
desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\""
|
|
icon_state = "Dpacket"
|
|
brand = "\improper Dromedary Co. cigarette"
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/killthroat
|
|
name = "\improper AcmeCo packet"
|
|
desc = "A packet of six AcmeCo cigarettes. For those who somehow want to obtain the record for the most amount of cancerous tumors."
|
|
icon_state = "Bpacket"
|
|
brand = "\improper Acme Co. cigarette"
|
|
|
|
// New exciting ways to kill your lungs! - Earthcrusher //
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/luckystars
|
|
name = "\improper pack of Lucky Stars"
|
|
desc = "A mellow blend made from synthetic, pod-grown tobacco. The commercial jingle is guaranteed to get stuck in your head."
|
|
icon_state = "LSpacket"
|
|
brand = "\improper Lucky Star"
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/jerichos
|
|
name = "\improper pack of Jerichos"
|
|
desc = "Typically seen dangling from the lips of Martian soldiers and border world hustlers. Tastes like hickory smoke, feels like warm liquid death down your lungs."
|
|
icon_state = "Jpacket"
|
|
brand = "\improper Jericho"
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/menthols
|
|
name = "\improper pack of Temperamento Menthols"
|
|
desc = "With a sharp and natural organic menthol flavor, these Temperamentos are a favorite of NDV crews. Hardly anyone knows they make 'em in non-menthol!"
|
|
icon_state = "TMpacket"
|
|
brand = "\improper Temperamento Menthol"
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/carcinomas
|
|
name = "\improper pack of Carcinoma Angels"
|
|
desc = "This unknown brand was slated for the chopping block, until they were publicly endorsed by an old Earthling gonzo journalist. The rest is history. They sell a variety for cats, too."
|
|
icon_state = "CApacket"
|
|
brand = "\improper Carcinoma Angel"
|
|
|
|
/obj/item/weapon/storage/fancy/cigarettes/professionals
|
|
name = "\improper pack of Professional 120s"
|
|
desc = "Let's face it - if you're smoking these, you're either trying to look upper-class or you're 80 years old. That's the only excuse. They are, however, very good quality."
|
|
icon_state = "P100packet"
|
|
brand = "\improper Professional 120"
|
|
|
|
/obj/item/weapon/storage/fancy/cigar
|
|
name = "cigar case"
|
|
desc = "A case for holding your cigars when you are not smoking them."
|
|
icon_state = "cigarcase"
|
|
icon = 'icons/obj/cigarettes.dmi'
|
|
w_class = ITEMSIZE_TINY
|
|
throwforce = 2
|
|
slot_flags = SLOT_BELT
|
|
storage_slots = 7
|
|
can_hold = list(/obj/item/clothing/mask/smokable/cigarette/cigar, /obj/item/weapon/cigbutt/cigarbutt)
|
|
icon_type = "cigar"
|
|
starts_with = list(/obj/item/clothing/mask/smokable/cigarette/cigar = 7)
|
|
|
|
/obj/item/weapon/storage/fancy/cigar/Initialize()
|
|
. = ..()
|
|
flags |= NOREACT
|
|
create_reagents(15 * storage_slots)
|
|
|
|
/obj/item/weapon/storage/fancy/cigar/update_icon()
|
|
icon_state = "[initial(icon_state)][contents.len]"
|
|
return
|
|
|
|
/obj/item/weapon/storage/fancy/cigar/remove_from_storage(obj/item/W as obj, atom/new_location)
|
|
var/obj/item/clothing/mask/smokable/cigarette/cigar/C = W
|
|
if(!istype(C)) return
|
|
reagents.trans_to_obj(C, (reagents.total_volume/contents.len))
|
|
..()
|
|
|
|
/obj/item/weapon/storage/rollingpapers
|
|
name = "rolling paper pack"
|
|
desc = "A small cardboard pack containing several folded rolling papers."
|
|
icon_state = "paperbox"
|
|
icon = 'icons/obj/cigarettes.dmi'
|
|
w_class = ITEMSIZE_TINY
|
|
throwforce = 2
|
|
slot_flags = SLOT_BELT
|
|
storage_slots = 14
|
|
can_hold = list(/obj/item/weapon/rollingpaper)
|
|
starts_with = list(/obj/item/weapon/rollingpaper = 14)
|
|
|
|
/*
|
|
* Vial Box
|
|
*/
|
|
|
|
/obj/item/weapon/storage/fancy/vials
|
|
icon = 'icons/obj/vialbox.dmi'
|
|
icon_state = "vialbox6"
|
|
icon_type = "vial"
|
|
name = "vial storage box"
|
|
storage_slots = 6
|
|
can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial)
|
|
starts_with = list(/obj/item/weapon/reagent_containers/glass/beaker/vial = 6)
|
|
|
|
/obj/item/weapon/storage/lockbox/vials
|
|
name = "secure vial storage box"
|
|
desc = "A locked box for keeping things away from children."
|
|
icon = 'icons/obj/vialbox.dmi'
|
|
icon_state = "vialbox0"
|
|
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
|
max_w_class = ITEMSIZE_SMALL
|
|
can_hold = list(/obj/item/weapon/reagent_containers/glass/beaker/vial)
|
|
max_storage_space = ITEMSIZE_COST_SMALL * 6 //The sum of the w_classes of all the items in this storage item.
|
|
storage_slots = 6
|
|
req_access = list(access_virology)
|
|
|
|
/obj/item/weapon/storage/lockbox/vials/Initialize()
|
|
. = ..()
|
|
update_icon()
|
|
|
|
/obj/item/weapon/storage/lockbox/vials/update_icon(var/itemremoved = 0)
|
|
var/total_contents = contents.len - itemremoved
|
|
icon_state = "vialbox[total_contents]"
|
|
overlays.Cut()
|
|
if (!broken)
|
|
overlays += image(icon, src, "led[locked]")
|
|
if(locked)
|
|
overlays += image(icon, src, "cover")
|
|
else
|
|
overlays += image(icon, src, "ledb")
|
|
return
|
|
|
|
/obj/item/weapon/storage/lockbox/vials/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
|
..()
|
|
update_icon()
|
|
|
|
/*
|
|
* Box of Chocolates/Heart Box
|
|
*/
|
|
|
|
/obj/item/weapon/storage/fancy/heartbox
|
|
icon_state = "heartbox"
|
|
name = "box of chocolates"
|
|
icon_type = "chocolate"
|
|
|
|
var/startswith = 6
|
|
max_storage_space = ITEMSIZE_COST_SMALL * 6
|
|
can_hold = list(
|
|
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece,
|
|
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white,
|
|
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle
|
|
)
|
|
starts_with = list(
|
|
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece,
|
|
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece,
|
|
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece,
|
|
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white,
|
|
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white,
|
|
/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle
|
|
)
|
|
|
|
/obj/item/weapon/storage/fancy/heartbox/Initialize()
|
|
. = ..()
|
|
update_icon()
|
|
|
|
/obj/item/weapon/storage/fancy/heartbox/update_icon(var/itemremoved = 0)
|
|
if (contents.len == 0)
|
|
icon_state = "heartbox_empty"
|