diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 9268dd90b80..0c28fcab2bf 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -574,11 +574,19 @@ COOLDOWN_DECLARE(cooldown) //What visual theme this artefact has. Current possible choices: "prototype", "necrotech" var/artifact_theme = "prototype" + var/datum/effect_system/spark_spread/sparks /obj/item/relic/Initialize(mapload) . = ..() + sparks = new() + sparks.set_up(5, 1, src) + sparks.attach(src) random_themed_appearance() +/obj/item/relic/Destroy(force) + QDEL_NULL(sparks) + . = ..() + /obj/item/relic/proc/random_themed_appearance() var/themed_name_prefix var/themed_name_suffix @@ -720,22 +728,26 @@ /obj/item/relic/proc/do_the_teleport(mob/user) var/turf/userturf = get_turf(user) - if(loc == user && !is_centcom_level(userturf.z)) //Because Nuke Ops bringing this back on their shuttle, then looting the ERT area is 2fun4you! - visible_message(span_notice("[src] twists and bends, relocating itself!")) - throw_smoke(userturf) - do_teleport(user, userturf, 8, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) - throw_smoke(get_turf(user)) - warn_admins(user, "Teleport", 0) + //Because Nuke Ops bringing this back on their shuttle, then looting the ERT area is 2fun4you! + if(is_centcom_level(userturf.z)) + return + var/to_teleport = ismovable(loc) ? loc : src + visible_message(span_notice("[to_teleport] twists and bends, relocating itself!")) + throw_smoke(get_turf(to_teleport)) + do_teleport(to_teleport, userturf, 8, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) + throw_smoke(get_turf(to_teleport)) + warn_admins(user, "Teleport", 0) // Creates a glass and fills it up with a drink. /obj/item/relic/proc/drink_dispenser(mob/user) var/obj/item/reagent_containers/cup/glass/drinkingglass/freebie = new(get_step_rand(user)) - playsound(freebie, 'sound/effects/phasein.ogg', rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + playsound(freebie, SFX_SPARKS, rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + sparks.start() addtimer(CALLBACK(src, PROC_REF(dispense_drink), freebie), 0.5 SECONDS) /obj/item/relic/proc/dispense_drink(obj/item/reagent_containers/cup/glass/glasser) + playsound(glasser, 'sound/effects/phasein.ogg', rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) glasser.reagents.add_reagent(get_random_drink_id(), rand(glasser.volume * 0.3, glasser.volume)) - playsound(glasser, SFX_SPARKS, rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) throw_smoke(get_turf(glasser)) // Scrambles your organs. 33% chance to delete after use. @@ -747,7 +759,7 @@ /obj/item/relic/proc/scrambliticus(mob/user) new /obj/effect/temp_visual/circle_wave/bioscrambler/light(get_turf(src)) playsound(src, 'sound/magic/cosmic_energy.ogg', vol = 50, vary = TRUE) - for(var/mob/living/carbon/nearby in hearers(2, src)) + for(var/mob/living/carbon/nearby in range(2, get_turf(src))) //needs get_turf() to work nearby.bioscramble(name) playsound(nearby, SFX_SPARKS, rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) throw_smoke(get_turf(nearby)) @@ -838,7 +850,7 @@ // carbons always get a hat at least var/mob/living/carbon/carbonius = user //hat - var/obj/item/clothing/head/costume/disguise_hat = roll_costume(/obj/item/clothing/head/costume, HIDEMASK) + var/obj/item/clothing/head/costume/disguise_hat = roll_costume(ITEM_SLOT_HEAD, HIDEMASK) carbonius.dropItemToGround(carbonius.head) carbonius.equip_to_slot_or_del(disguise_hat, ITEM_SLOT_HEAD) if(!ishuman(carbonius)) @@ -847,11 +859,11 @@ var/mob/living/carbon/human/humerus = carbonius // uniform - var/obj/item/clothing/under/costume/disguise_uniform = roll_costume(/obj/item/clothing/under/costume) + var/obj/item/clothing/under/costume/disguise_uniform = roll_costume(ITEM_SLOT_ICLOTHING) humerus.dropItemToGround(humerus.w_uniform) humerus.equip_to_slot_or_del(disguise_uniform, ITEM_SLOT_ICLOTHING) // suit - var/obj/item/clothing/suit/costume/disguise_suit = roll_costume(/obj/item/clothing/suit/costume) + var/obj/item/clothing/suit/costume/disguise_suit = roll_costume(ITEM_SLOT_OCLOTHING) humerus.dropItemToGround(humerus.wear_suit) humerus.equip_to_slot_or_del(disguise_suit, ITEM_SLOT_OCLOTHING) // id @@ -863,7 +875,6 @@ if(!card_id) return card_id.scribbled_name = "[pick(GLOB.first_names)] [pick(GLOB.last_names)]" - card_id.update_name() card_id.details_colors = list(ready_random_color(), ready_random_color(), ready_random_color()) card_id.item_flags |= DROPDEL @@ -872,17 +883,17 @@ if(random_trim.trim_state && random_trim.assignment) card_id.scribbled_trim = replacetext(random_trim.trim_state, "trim_", "cardboard_") card_id.scribbled_assignment = random_trim.assignment - card_id.update_overlays() + card_id.update_appearance() REMOVE_TRAIT(user, TRAIT_NO_JUMPSUIT, REF(src)) -/obj/item/relic/proc/roll_costume(type, flagcheck) +/obj/item/relic/proc/roll_costume(slot, flagcheck) var/list/candidates = list() - for(var/obj/item/thingy as anything in subtypesof(type)) - if(flagcheck && !(initial(thingy.flags_inv) & flagcheck)) + for(var/obj/item/costume as anything in GLOB.all_autodrobe_items) + if(flagcheck && !(initial(costume.flags_inv) & flagcheck)) continue - if(isnull(initial(thingy.icon_state))) + if(slot && !(initial(costume.slot_flags) & slot)) continue - candidates |= thingy + candidates |= costume var/obj/item/new_costume = pick(candidates) new_costume = new new_costume() new_costume.item_flags |= DROPDEL diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 17555e66a87..dde78717d6f 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -1,3 +1,222 @@ + +GLOBAL_LIST_INIT(autodrobe_costumes_items, list( + /obj/item/clothing/under/costume/gladiator = 1, + /obj/item/clothing/head/helmet/gladiator = 1, + /obj/item/clothing/suit/toggle/labcoat/mad = 1, + /obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1, + /obj/item/clothing/head/bio_hood/plague = 1, + /obj/item/clothing/mask/gas/plaguedoctor = 1, + /obj/item/clothing/under/rank/medical/doctor/nurse = 1, + /obj/item/clothing/suit/toggle/owlwings = 1, + /obj/item/clothing/under/costume/owl = 1, + /obj/item/clothing/mask/gas/owl_mask = 1, + /obj/item/clothing/suit/toggle/owlwings/griffinwings = 1, + /obj/item/clothing/under/costume/griffin = 1, + /obj/item/clothing/shoes/griffin = 1, + /obj/item/clothing/head/costume/griffin = 1, + /obj/item/clothing/under/costume/pirate = 1, + /obj/item/clothing/suit/costume/pirate = 1, + /obj/item/clothing/head/costume/pirate = 1, + /obj/item/clothing/head/costume/pirate/bandana = 1, + /obj/item/clothing/shoes/pirate = 1, + /obj/item/clothing/under/costume/soviet = 1, + /obj/item/clothing/head/costume/ushanka = 1, + /obj/item/clothing/accessory/vest_sheriff =1, + /obj/item/clothing/head/cowboy/brown =1, + /obj/item/clothing/head/cowboy/red =1, + /obj/item/clothing/head/cowboy/black =1, + /obj/item/clothing/head/costume/sombrero/green = 1, + /obj/item/clothing/suit/costume/poncho = 1, + /obj/item/clothing/suit/costume/poncho/green = 1, + /obj/item/clothing/suit/costume/poncho/red = 1, + /obj/item/clothing/suit/costume/snowman = 1, + /obj/item/clothing/head/costume/snowman = 1, + /obj/item/clothing/under/costume/referee = 1, + /obj/item/clothing/mask/whistle = 1, + /obj/item/storage/backpack/henchmen = 5, + /obj/item/clothing/under/costume/henchmen = 5, + /obj/item/clothing/head/costume/jackbros = 5, + /obj/item/clothing/under/costume/jackbros = 5, + /obj/item/clothing/under/costume/deckers = 5, + /obj/item/clothing/under/costume/sailor = 1, + /obj/item/clothing/head/costume/delinquent = 1, + /obj/item/clothing/suit/costume/dracula = 1, + /obj/item/clothing/under/costume/draculass = 1, + /obj/item/clothing/suit/costume/gothcoat = 1, + /obj/item/clothing/glasses/eyepatch = 1, + /obj/item/clothing/glasses/eyepatch/medical = 1, + /obj/item/clothing/under/costume/gi = 4, + /obj/item/clothing/head/soft/propeller_hat = 1, + /obj/item/clothing/neck/bowtie/rainbow = 1, +)) + +GLOBAL_LIST_INIT(autodrobe_supernatural_items, list( + /obj/item/clothing/suit/costume/imperium_monk = 1, + /obj/item/clothing/suit/chaplainsuit/holidaypriest = 1, + /obj/item/clothing/suit/chaplainsuit/habit = 1, + /obj/item/clothing/head/chaplain/habit_veil = 1, + /obj/item/clothing/suit/chaplainsuit/whiterobe = 1, + /obj/item/clothing/head/wizard/marisa/fake = 1, + /obj/item/clothing/suit/wizrobe/marisa/fake = 1, + /obj/item/clothing/head/costume/witchwig = 1, + /obj/item/staff/broom = 1, + /obj/item/clothing/suit/wizrobe/fake = 1, + /obj/item/clothing/head/wizard/fake = 1, + /obj/item/staff = 3, + /obj/item/clothing/head/costume/shrine_wig = 1, + /obj/item/clothing/suit/costume/shrine_maiden = 1, + /obj/item/gohei = 1, +)) + +GLOBAL_LIST_INIT(autodrobe_entretainers_items, list( + /obj/item/clothing/under/rank/civilian/clown/blue = 1, + /obj/item/clothing/under/rank/civilian/clown/green = 1, + /obj/item/clothing/under/rank/civilian/clown/yellow = 1, + /obj/item/clothing/under/rank/civilian/clown/orange = 1, + /obj/item/clothing/under/rank/civilian/clown/purple = 1, + /obj/item/clothing/mask/gas/sexyclown = 1, + /obj/item/clothing/under/rank/civilian/clown/sexy = 1, + /obj/item/clothing/head/beret = 6, + /obj/item/clothing/mask/gas/sexymime = 1, + /obj/item/clothing/under/rank/civilian/mime/sexy = 1, + /obj/item/clothing/under/rank/civilian/mime/skirt = 1, + /obj/item/clothing/under/rank/civilian/clown/jester = 1, + /obj/item/clothing/head/costume/jester = 1, + /obj/item/clothing/shoes/jester_shoes = 1, + /obj/item/clothing/under/costume/villain = 1, + /obj/item/clothing/suit/costume/joker = 1, + /obj/item/clothing/under/costume/joker = 1, + /obj/item/clothing/shoes/singery = 1, + /obj/item/clothing/under/costume/singer/yellow = 1, + /obj/item/clothing/shoes/singerb = 1, + /obj/item/clothing/under/costume/singer/blue = 1, + /obj/item/clothing/head/costume/cueball = 1, +)) + +GLOBAL_LIST_INIT(autodrobe_fancy_items, list( + /obj/item/clothing/under/rank/captain/suit = 1, + /obj/item/clothing/under/rank/captain/suit/skirt = 1, + /obj/item/clothing/under/costume/schoolgirl = 1, + /obj/item/clothing/under/costume/schoolgirl/red = 1, + /obj/item/clothing/under/costume/schoolgirl/green = 1, + /obj/item/clothing/under/costume/schoolgirl/orange = 1, + /obj/item/clothing/under/dress/skirt = 1, + /obj/item/clothing/neck/tie = 3, + /obj/item/clothing/head/hats/tophat = 1, + /obj/item/clothing/under/costume/kilt = 1, + /obj/item/clothing/glasses/monocle =1, + /obj/item/clothing/head/hats/bowler = 1, + /obj/item/cane = 1, + /obj/item/clothing/under/dress/sundress = 1, + /obj/item/clothing/suit/costume/whitedress = 1, + /obj/item/clothing/suit/costume/changshan_red = 1, + /obj/item/clothing/suit/costume/changshan_blue = 1, + /obj/item/clothing/suit/costume/cheongsam_red = 1, + /obj/item/clothing/suit/costume/cheongsam_blue = 1, +)) + +GLOBAL_LIST_INIT(autodrobe_animal_items, list( + /obj/item/clothing/head/costume/kitty = 1, + /obj/item/clothing/head/costume/rabbitears =1, + /obj/item/clothing/suit/costume/chickensuit = 1, + /obj/item/clothing/head/costume/chicken = 1, + /obj/item/clothing/suit/hooded/carp_costume = 1, + /obj/item/clothing/suit/hooded/ian_costume = 1, + /obj/item/clothing/suit/hooded/bee_costume = 1, + /obj/item/clothing/mask/animal/small/bat = 1, + /obj/item/clothing/mask/animal/small/bee = 1, + /obj/item/clothing/mask/animal/small/bear = 1, + /obj/item/clothing/mask/animal/small/raven = 1, + /obj/item/clothing/mask/animal/small/jackal = 1, + /obj/item/clothing/mask/animal/small/fox = 1, + /obj/item/clothing/mask/animal/frog = 1, + /obj/item/clothing/mask/animal/small/rat = 1, + /obj/item/clothing/mask/animal/pig = 1, + /obj/item/clothing/mask/animal/cowmask = 1, + /obj/item/clothing/mask/animal/horsehead = 1, +)) + +GLOBAL_LIST_INIT(autodrobe_other_items, list( + /obj/item/clothing/head/wig/random = 3, + /obj/item/clothing/head/flatcap = 1, + /obj/item/clothing/suit/jacket/miljacket = 1, + /obj/item/clothing/shoes/jackboots = 1, + /obj/item/clothing/mask/fakemoustache = 1, + /obj/item/clothing/glasses/cold=1, + /obj/item/clothing/glasses/heat=1, + /obj/item/clothing/mask/gas/cyborg = 1, + /obj/item/clothing/mask/joy = 1, + /obj/item/clothing/mask/gas/prop = 4, + /obj/item/clothing/mask/gas/atmosprop = 3, + /obj/item/clothing/mask/animal/small/tribal = 1, +)) + +GLOBAL_LIST_INIT(autodrobe_service_items, list( + /obj/item/clothing/under/costume/buttondown/slacks/service = 1, + /obj/item/clothing/under/costume/buttondown/skirt/service = 1, + /obj/item/clothing/neck/bowtie = 2, + /obj/item/clothing/accessory/waistcoat = 1, + /obj/item/clothing/under/suit/waiter = 1, + /obj/item/clothing/suit/apron = 1, + /obj/item/clothing/suit/apron/overalls = 1, + /obj/item/clothing/head/costume/maidheadband = 1, + /obj/item/clothing/under/costume/maid = 1, + /obj/item/clothing/gloves/maid = 1, + /obj/item/clothing/neck/maid = 1, + /obj/item/clothing/under/rank/civilian/janitor/maid = 1, + /obj/item/clothing/accessory/maidapron = 1, +)) + +GLOBAL_LIST_INIT(autodrobe_premium_items, list( + /obj/item/clothing/suit/costume/pirate/captain = 2, + /obj/item/clothing/head/costume/pirate/captain = 2, + /obj/item/clothing/under/rank/civilian/clown/rainbow = 1, + /obj/item/clothing/head/helmet/roman/fake = 1, + /obj/item/clothing/head/helmet/roman/legionnaire/fake = 1, + /obj/item/clothing/under/costume/roman = 1, + /obj/item/clothing/shoes/roman = 1, + /obj/item/shield/roman/fake = 1, + /obj/item/clothing/suit/chaplainsuit/clownpriest = 1, + /obj/item/clothing/head/chaplain/clownmitre = 1, + /obj/item/skub = 1, + /obj/item/clothing/suit/hooded/mysticrobe = 1, + /obj/item/clothing/under/dress/wedding_dress = 1, + /obj/item/clothing/under/suit/tuxedo = 1, + /obj/item/clothing/head/costume/weddingveil = 1, + /obj/item/storage/belt/fannypack/cummerbund = 1, + /obj/item/clothing/suit/costume/drfreeze_coat = 1, + /obj/item/clothing/under/costume/drfreeze = 1, + /obj/item/clothing/head/costume/drfreezehat = 1, +)) + +GLOBAL_LIST_INIT(autodrobe_contraband_items, list( + /obj/item/clothing/glasses/blindfold = 1, + /obj/item/clothing/glasses/sunglasses/gar = 2, + /obj/item/clothing/head/costume/powdered_wig = 1, + /obj/item/clothing/head/costume/tv_head = 1, + /obj/item/clothing/mask/muzzle = 2, + /obj/item/clothing/shoes/ducky_shoes = 1, + /obj/item/clothing/shoes/clown_shoes/meown_shoes = 1, + /obj/item/clothing/shoes/clown_shoes/moffers = 1, + /obj/item/clothing/suit/costume/judgerobe = 1, + /obj/item/clothing/head/costume/lobsterhat = 1, + /obj/item/clothing/under/costume/lobster = 1, + /obj/item/gun/magic/wand/nothing = 2, + /obj/item/storage/box/tape_wizard = 1, +)) + +GLOBAL_VAR_INIT(all_autodrobe_items, (autodrobe_costumes_items +\ + autodrobe_costumes_items +\ + autodrobe_supernatural_items +\ + autodrobe_entretainers_items +\ + autodrobe_fancy_items +\ + autodrobe_animal_items +\ + autodrobe_service_items +\ + autodrobe_other_items +\ + autodrobe_premium_items +\ + autodrobe_contraband_items \ +)) + /obj/machinery/vending/autodrobe name = "\improper AutoDrobe" desc = "A vending machine for costumes." @@ -7,244 +226,61 @@ req_access = list(ACCESS_THEATRE) product_slogans = "Dress for success!;Suited and booted!;It's show time!;Why leave style up to fate? Use AutoDrobe!" vend_reply = "Thank you for using AutoDrobe!" - product_categories = list( - list( - "name" = "Costumes", - "icon" = "mask", - "products" = list( - /obj/item/clothing/under/costume/gladiator = 1, - /obj/item/clothing/head/helmet/gladiator = 1, - /obj/item/clothing/suit/toggle/labcoat/mad = 1, - /obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1, - /obj/item/clothing/head/bio_hood/plague = 1, - /obj/item/clothing/mask/gas/plaguedoctor = 1, - /obj/item/clothing/under/rank/medical/doctor/nurse = 1, - /obj/item/clothing/suit/toggle/owlwings = 1, - /obj/item/clothing/under/costume/owl = 1, - /obj/item/clothing/mask/gas/owl_mask = 1, - /obj/item/clothing/suit/toggle/owlwings/griffinwings = 1, - /obj/item/clothing/under/costume/griffin = 1, - /obj/item/clothing/shoes/griffin = 1, - /obj/item/clothing/head/costume/griffin = 1, - /obj/item/clothing/under/costume/pirate = 1, - /obj/item/clothing/suit/costume/pirate = 1, - /obj/item/clothing/head/costume/pirate = 1, - /obj/item/clothing/head/costume/pirate/bandana = 1, - /obj/item/clothing/shoes/pirate = 1, - /obj/item/clothing/under/costume/soviet = 1, - /obj/item/clothing/head/costume/ushanka = 1, - /obj/item/clothing/accessory/vest_sheriff =1, - /obj/item/clothing/head/cowboy/brown =1, - /obj/item/clothing/head/cowboy/red =1, - /obj/item/clothing/head/cowboy/black =1, - /obj/item/clothing/head/costume/sombrero/green = 1, - /obj/item/clothing/suit/costume/poncho = 1, - /obj/item/clothing/suit/costume/poncho/green = 1, - /obj/item/clothing/suit/costume/poncho/red = 1, - /obj/item/clothing/suit/costume/snowman = 1, - /obj/item/clothing/head/costume/snowman = 1, - /obj/item/clothing/under/costume/referee = 1, - /obj/item/clothing/mask/whistle = 1, - /obj/item/storage/backpack/henchmen = 5, - /obj/item/clothing/under/costume/henchmen = 5, - /obj/item/clothing/head/costume/jackbros = 5, - /obj/item/clothing/under/costume/jackbros = 5, - /obj/item/clothing/under/costume/deckers = 5, - /obj/item/clothing/under/costume/sailor = 1, - /obj/item/clothing/head/costume/delinquent = 1, - /obj/item/clothing/suit/costume/dracula = 1, - /obj/item/clothing/under/costume/draculass = 1, - /obj/item/clothing/suit/costume/gothcoat = 1, - /obj/item/clothing/glasses/eyepatch = 1, - /obj/item/clothing/glasses/eyepatch/medical = 1, - /obj/item/clothing/under/costume/gi = 4, - /obj/item/clothing/head/soft/propeller_hat = 1, - /obj/item/clothing/neck/bowtie/rainbow = 1, - ), - ), - list( - "name" = "Supernatural", - "icon" = "hand-sparkles", - "products" = list( - /obj/item/clothing/suit/costume/imperium_monk = 1, - /obj/item/clothing/suit/chaplainsuit/holidaypriest = 1, - /obj/item/clothing/suit/chaplainsuit/habit = 1, - /obj/item/clothing/head/chaplain/habit_veil = 1, - /obj/item/clothing/suit/chaplainsuit/whiterobe = 1, - /obj/item/clothing/head/wizard/marisa/fake = 1, - /obj/item/clothing/suit/wizrobe/marisa/fake = 1, - /obj/item/clothing/head/costume/witchwig = 1, - /obj/item/staff/broom = 1, - /obj/item/clothing/suit/wizrobe/fake = 1, - /obj/item/clothing/head/wizard/fake = 1, - /obj/item/staff = 3, - /obj/item/clothing/head/costume/shrine_wig = 1, - /obj/item/clothing/suit/costume/shrine_maiden = 1, - /obj/item/gohei = 1, - ), - ), - list( - "name" = "Entertainers", - "icon" = "masks-theater", - "products" = list( - /obj/item/clothing/under/rank/civilian/clown/blue = 1, - /obj/item/clothing/under/rank/civilian/clown/green = 1, - /obj/item/clothing/under/rank/civilian/clown/yellow = 1, - /obj/item/clothing/under/rank/civilian/clown/orange = 1, - /obj/item/clothing/under/rank/civilian/clown/purple = 1, - /obj/item/clothing/mask/gas/sexyclown = 1, - /obj/item/clothing/under/rank/civilian/clown/sexy = 1, - /obj/item/clothing/head/beret = 6, - /obj/item/clothing/mask/gas/sexymime = 1, - /obj/item/clothing/under/rank/civilian/mime/sexy = 1, - /obj/item/clothing/under/rank/civilian/mime/skirt = 1, - /obj/item/clothing/under/rank/civilian/clown/jester = 1, - /obj/item/clothing/head/costume/jester = 1, - /obj/item/clothing/shoes/jester_shoes = 1, - /obj/item/clothing/under/costume/villain = 1, - /obj/item/clothing/suit/costume/joker = 1, - /obj/item/clothing/under/costume/joker = 1, - /obj/item/clothing/shoes/singery = 1, - /obj/item/clothing/under/costume/singer/yellow = 1, - /obj/item/clothing/shoes/singerb = 1, - /obj/item/clothing/under/costume/singer/blue = 1, - /obj/item/clothing/head/costume/cueball = 1, - ), - ), - list( - "name" = "Fancy", - "icon" = "user-tie", - "products" = list( - /obj/item/clothing/under/rank/captain/suit = 1, - /obj/item/clothing/under/rank/captain/suit/skirt = 1, - /obj/item/clothing/under/costume/schoolgirl = 1, - /obj/item/clothing/under/costume/schoolgirl/red = 1, - /obj/item/clothing/under/costume/schoolgirl/green = 1, - /obj/item/clothing/under/costume/schoolgirl/orange = 1, - /obj/item/clothing/under/dress/skirt = 1, - /obj/item/clothing/neck/tie = 3, - /obj/item/clothing/head/hats/tophat = 1, - /obj/item/clothing/under/costume/kilt = 1, - /obj/item/clothing/glasses/monocle =1, - /obj/item/clothing/head/hats/bowler = 1, - /obj/item/cane = 1, - /obj/item/clothing/under/dress/sundress = 1, - /obj/item/clothing/suit/costume/whitedress = 1, - /obj/item/clothing/suit/costume/changshan_red = 1, - /obj/item/clothing/suit/costume/changshan_blue = 1, - /obj/item/clothing/suit/costume/cheongsam_red = 1, - /obj/item/clothing/suit/costume/cheongsam_blue = 1, - ), - ), - list( - "name" = "Animals", - "icon" = "paw", - "products" = list( - /obj/item/clothing/head/costume/kitty = 1, - /obj/item/clothing/head/costume/rabbitears =1, - /obj/item/clothing/suit/costume/chickensuit = 1, - /obj/item/clothing/head/costume/chicken = 1, - /obj/item/clothing/suit/hooded/carp_costume = 1, - /obj/item/clothing/suit/hooded/ian_costume = 1, - /obj/item/clothing/suit/hooded/bee_costume = 1, - /obj/item/clothing/mask/animal/small/bat = 1, - /obj/item/clothing/mask/animal/small/bee = 1, - /obj/item/clothing/mask/animal/small/bear = 1, - /obj/item/clothing/mask/animal/small/raven = 1, - /obj/item/clothing/mask/animal/small/jackal = 1, - /obj/item/clothing/mask/animal/small/fox = 1, - /obj/item/clothing/mask/animal/frog = 1, - /obj/item/clothing/mask/animal/small/rat = 1, - /obj/item/clothing/mask/animal/pig = 1, - /obj/item/clothing/mask/animal/cowmask = 1, - /obj/item/clothing/mask/animal/horsehead = 1, - ), - ), - list( - "name" = "Service", - "icon" = "kitchen-set", - "products" = list( - /obj/item/clothing/under/costume/buttondown/slacks/service = 1, - /obj/item/clothing/under/costume/buttondown/skirt/service = 1, - /obj/item/clothing/neck/bowtie = 2, - /obj/item/clothing/accessory/waistcoat = 1, - /obj/item/clothing/under/suit/waiter = 1, - /obj/item/clothing/suit/apron = 1, - /obj/item/clothing/suit/apron/overalls = 1, - /obj/item/clothing/head/costume/maidheadband = 1, - /obj/item/clothing/under/costume/maid = 1, - /obj/item/clothing/gloves/maid = 1, - /obj/item/clothing/neck/maid = 1, - /obj/item/clothing/under/rank/civilian/janitor/maid = 1, - /obj/item/clothing/accessory/maidapron = 1, - ), - ), - list( - "name" = "Other", - "icon" = "star", - "products" = list( - /obj/item/clothing/head/wig/random = 3, - /obj/item/clothing/head/flatcap = 1, - /obj/item/clothing/suit/jacket/miljacket = 1, - /obj/item/clothing/shoes/jackboots = 1, - /obj/item/clothing/mask/fakemoustache = 1, - /obj/item/clothing/glasses/cold=1, - /obj/item/clothing/glasses/heat=1, - /obj/item/clothing/mask/gas/cyborg = 1, - /obj/item/clothing/mask/joy = 1, - /obj/item/clothing/mask/gas/prop = 4, - /obj/item/clothing/mask/gas/atmosprop = 3, - /obj/item/clothing/mask/animal/small/tribal = 1, - ), - ), - ) - - contraband = list( - /obj/item/clothing/glasses/blindfold = 1, - /obj/item/clothing/glasses/sunglasses/gar = 2, - /obj/item/clothing/head/costume/powdered_wig = 1, - /obj/item/clothing/head/costume/tv_head = 1, - /obj/item/clothing/mask/muzzle = 2, - /obj/item/clothing/shoes/ducky_shoes = 1, - /obj/item/clothing/shoes/clown_shoes/meown_shoes = 1, - /obj/item/clothing/shoes/clown_shoes/moffers = 1, - /obj/item/clothing/suit/costume/judgerobe = 1, - /obj/item/clothing/head/costume/lobsterhat = 1, - /obj/item/clothing/under/costume/lobster = 1, - /obj/item/gun/magic/wand/nothing = 2, - /obj/item/storage/box/tape_wizard = 1, - ) - premium = list( - /obj/item/clothing/suit/costume/pirate/captain = 2, - /obj/item/clothing/head/costume/pirate/captain = 2, - /obj/item/clothing/under/rank/civilian/clown/rainbow = 1, - /obj/item/clothing/head/helmet/roman/fake = 1, - /obj/item/clothing/head/helmet/roman/legionnaire/fake = 1, - /obj/item/clothing/under/costume/roman = 1, - /obj/item/clothing/shoes/roman = 1, - /obj/item/shield/roman/fake = 1, - /obj/item/clothing/suit/chaplainsuit/clownpriest = 1, - /obj/item/clothing/head/chaplain/clownmitre = 1, - /obj/item/skub = 1, - /obj/item/clothing/suit/hooded/mysticrobe = 1, - /obj/item/clothing/under/dress/wedding_dress = 1, - /obj/item/clothing/under/suit/tuxedo = 1, - /obj/item/clothing/head/costume/weddingveil = 1, - /obj/item/storage/belt/fannypack/cummerbund = 1, - /obj/item/clothing/suit/costume/drfreeze_coat = 1, - /obj/item/clothing/under/costume/drfreeze = 1, - /obj/item/clothing/head/costume/drfreezehat = 1, - ) + /** + * Categories are filled in Initialize! + */ refill_canister = /obj/item/vending_refill/autodrobe default_price = PAYCHECK_CREW * 0.8 //Default of 40. extra_price = PAYCHECK_COMMAND payment_department = ACCOUNT_SRV light_mask="theater-light-mask" +/obj/machinery/vending/autodrobe/Initialize(mapload) + product_categories = list( + list( + "name" = "Costumes", + "icon" = "mask", + "products" = GLOB.autodrobe_costumes_items + ), + list( + "name" = "Supernatural", + "icon" = "hand-sparkles", + "products" = GLOB.autodrobe_supernatural_items + ), + list( + "name" = "Entertainers", + "icon" = "masks-theater", + "products" = GLOB.autodrobe_entretainers_items + ), + list( + "name" = "Fancy", + "icon" = "user-tie", + "products" = GLOB.autodrobe_fancy_items + ), + list( + "name" = "Animals", + "icon" = "paw", + "products" = GLOB.autodrobe_animal_items + ), + list( + "name" = "Service", + "icon" = "kitchen-set", + "products" = GLOB.autodrobe_service_items + ), + list( + "name" = "Other", + "icon" = "star", + "products" = GLOB.autodrobe_other_items + ), + ) + premium = GLOB.autodrobe_premium_items + contraband = GLOB.autodrobe_contraband_items + + . = ..() + /obj/machinery/vending/autodrobe/all_access desc = "A vending machine for costumes. This model appears to have no access restrictions." req_access = null - /obj/item/vending_refill/autodrobe machine_name = "AutoDrobe" icon_state = "refill_costume"