diff --git a/code/game/machinery/casino_prize_dispenser_ch.dm b/code/game/machinery/casino_prize_dispenser_ch.dm
index 94ffe23f35..3b740fe2b7 100644
--- a/code/game/machinery/casino_prize_dispenser_ch.dm
+++ b/code/game/machinery/casino_prize_dispenser_ch.dm
@@ -1,3 +1,4 @@
+<<<<<<< HEAD:code/game/machinery/casino_prize_dispenser_ch.dm
// Use this define to register a prize!
// * n - The proper name of the purchasable
// * o - The object type path of the purchasable to spawn
@@ -355,3 +356,614 @@
/obj/machinery/casino_prize_dispenser/process() //Might not need this, but just to be safe for now
if(stat & (BROKEN|NOPOWER))
return
+||||||| parent of 737c473e4b... [MIRROR] :siffet: (#11584):code/modules/casino/casino_prize_vendor.dm
+
+//Original Casino Code created by Shadowfire117#1269 - Ported from CHOMPstation
+//Modified by GhostActual#2055 for use with VOREstation
+
+// Use this define to register a prize!
+// * n - The proper name of the purchasable
+// * o - The object type path of the purchasable to spawn
+// * r - The amount to dispense
+// * p - The price of the purchasable in chips
+// * l - The restriction of the item
+#define CASINO_PRIZE(n, o, r, p, l) n = new /datum/data/casino_prize(n, o, r, p, l)
+
+/datum/data/casino_prize
+ var/equipment_path = null
+ var/equipment_amt = 1
+ var/cost = 0
+ var/category = null
+ var/restriction = null
+
+/datum/data/casino_prize/New(name, path, amt, cost, restriction)
+ src.name = name
+ src.equipment_path = path
+ src.equipment_amt = amt
+ src.cost = cost
+ src.category = category
+ src.restriction = restriction
+
+/obj/machinery/casino_prize_dispenser
+ name = "Casino Prize Exchanger"
+ desc = "Exchange your chips to obtain wonderful prizes! Hoepfully you'll get to keep some of them for a while."
+ icon = 'icons/obj/casino.dmi'
+ icon_state ="casino_prize_dispenser"
+ var/icon_vend ="casino_prize_dispenser-vend"
+ anchored = 1
+ density = 1
+ opacity = 0
+ var/list/item_list
+
+ clicksound = "button"
+ var/vending_sound = "machines/vending/vending_drop.ogg"
+
+ // Power
+ use_power = USE_POWER_IDLE
+ idle_power_usage = 10
+ var/vend_power_usage = 150 //actuators and stuff
+
+ // Vending-related
+ var/datum/data/casino_prize/currently_vending = null // What we're requesting payment for right now
+ var/list/log = list() //Log only SS13 staff is allowed to look at, CKEYS are listed here for record keeping of prizes and players for events!
+
+ var/category_weapons = 1 //For listing categories, if false then prizes of this categories cant be obtained nor bought for post-shift enjoyment
+ var/category_gear = 1 //If 1 prizes will be only logged
+ var/category_clothing = 1 //If 2 prizes will both be logged and spawned
+ var/category_misc = 1
+ var/category_drinks = 1
+ var/category_implants = 1
+ var/category_event = 1 //For special events, holidays, etc
+
+/obj/machinery/casino_prize_dispenser/Initialize()
+ . = ..()
+ power_change()
+
+ item_list = list()
+ item_list["Weapons"] = list(
+ CASINO_PRIZE("Scepter", /obj/item/weapon/scepter, 1, 500, "weapons"),
+ CASINO_PRIZE("Chain of Command", /obj/item/weapon/melee/chainofcommand, 1, 250, "weapons"),
+ CASINO_PRIZE("Size Gun", /obj/item/weapon/gun/energy/sizegun, 1, 100, "weapons"),
+ CASINO_PRIZE("Advanced Particle Rifle", /obj/item/weapon/gun/energy/particle/advanced, 1, 500, "weapons"),
+ CASINO_PRIZE("Temperature Gun", /obj/item/weapon/gun/energy/temperature, 1, 250, "weapons"),
+ CASINO_PRIZE("Alien Pistol", /obj/item/weapon/gun/energy/alien, 1, 1000, "weapons"),
+ CASINO_PRIZE("Floral Gun", /obj/item/weapon/gun/energy/floragun, 1, 250, "weapons"),
+ CASINO_PRIZE("Net Gun", /obj/item/weapon/gun/energy/netgun, 1, 500, "weapons"),
+ )
+ item_list["Gear"] = list(
+ CASINO_PRIZE("Experimental Welder", /obj/item/weapon/weldingtool/experimental, 1, 500, "gear"),
+ CASINO_PRIZE("Chameleon Tie", /obj/item/clothing/accessory/chameleon, 1, 250, "gear"),
+ CASINO_PRIZE("Chemsprayer", /obj/item/weapon/reagent_containers/spray/chemsprayer, 1, 250, "gear"),
+ CASINO_PRIZE("Bluespace Beaker", /obj/item/weapon/reagent_containers/glass/beaker/bluespace, 1, 200, "gear"),
+ CASINO_PRIZE("Cryo Beaker", /obj/item/weapon/reagent_containers/glass/beaker/noreact, 1, 200, "gear"),
+ )
+ item_list["Clothing"] = list(
+ CASINO_PRIZE("Shark mask", /obj/item/clothing/mask/shark, 1, 50, "clothing"),
+ CASINO_PRIZE("Pig mask", /obj/item/clothing/mask/pig, 1, 50, "clothing"),
+ CASINO_PRIZE("Luchador mask", /obj/item/clothing/mask/luchador, 1, 50, "clothing"),
+ CASINO_PRIZE("Horse mask", /obj/item/clothing/mask/horsehead, 1, 50, "clothing"),
+ CASINO_PRIZE("Goblin mask", /obj/item/clothing/mask/goblin, 1, 50, "clothing"),
+ CASINO_PRIZE("Fake moustache", /obj/item/clothing/mask/fakemoustache, 1, 50, "clothing"),
+ CASINO_PRIZE("Dolphin mask", /obj/item/clothing/mask/dolphin, 1, 50, "clothing"),
+ CASINO_PRIZE("Demon mask", /obj/item/clothing/mask/demon, 1, 50, "clothing"),
+ CASINO_PRIZE("Chameleon mask", /obj/item/clothing/under/chameleon, 1, 250, "clothing"),
+ CASINO_PRIZE("Ian costume", /obj/item/clothing/suit/storage/hooded/ian_costume, 1, 50, "clothing"),
+ CASINO_PRIZE("Carp costume", /obj/item/clothing/suit/storage/hooded/carp_costume, 1, 50, "clothing"),
+ )
+ item_list["Miscellaneous"] = list(
+ CASINO_PRIZE("Toy sword", /obj/item/toy/sword, 1, 50, "misc"),
+ CASINO_PRIZE("Waterflower", /obj/item/weapon/reagent_containers/spray/waterflower, 1, 50, "misc"),
+ CASINO_PRIZE("Horse stick", /obj/item/toy/stickhorse, 1, 50, "misc"),
+ CASINO_PRIZE("Katana", /obj/item/toy/katana, 1, 50, "misc"),
+ CASINO_PRIZE("Conch", /obj/item/toy/eight_ball/conch, 1, 50, "misc"),
+ CASINO_PRIZE("Eight ball", /obj/item/toy/eight_ball, 1, 50, "misc"),
+ CASINO_PRIZE("Foam sword", /obj/item/weapon/material/sword/foam, 1, 50, "misc"),
+ CASINO_PRIZE("Whistle", /obj/item/toy/bosunwhistle, 1, 50, "misc"),
+ CASINO_PRIZE("Golden cup", /obj/item/weapon/reagent_containers/food/drinks/golden_cup, 1, 50, "misc"),
+ CASINO_PRIZE("Quality cigars", /obj/item/weapon/storage/fancy/cigar/havana, 1, 50, "misc"),
+ CASINO_PRIZE("Casino wallet (kept after event)", /obj/item/weapon/storage/wallet/casino, 1, 50, "misc"),
+ CASINO_PRIZE("Casino cards", /obj/item/weapon/deck/cards/casino, 1, 50, "misc"),
+ )
+ item_list["Drinks"] = list(
+ CASINO_PRIZE("Redeemer's brew", /obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew, 1, 50, "drinks"),
+ CASINO_PRIZE("Poison wine", /obj/item/weapon/reagent_containers/food/drinks/bottle/pwine, 1, 50, "drinks"),
+ CASINO_PRIZE("Patron", /obj/item/weapon/reagent_containers/food/drinks/bottle/patron, 1, 50, "drinks"),
+ CASINO_PRIZE("Holy water", /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, 1, 50, "drinks"),
+ CASINO_PRIZE("Goldschlager", /obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager, 1, 50, "drinks"),
+ CASINO_PRIZE("Champagne", /obj/item/weapon/reagent_containers/food/drinks/bottle/champagne, 1, 50, "drinks"),
+ CASINO_PRIZE("Bottle of Nothing", /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing, 1, 50, "drinks"),
+ CASINO_PRIZE("Whiskey bliss", /obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey, 1, 50, "drinks"),
+ )
+
+ item_list["Implants"] = list(
+ CASINO_PRIZE("Implanter (Remember to get one unless you want to borrow from station!)", /obj/item/weapon/implanter, 1, 100, "implants"),
+ CASINO_PRIZE("Implant: Tazer", /obj/item/weapon/implantcase/taser, 1, 1000, "implants"),
+ CASINO_PRIZE("Implant: Medkit", /obj/item/weapon/implantcase/medkit, 1, 500, "implants"),
+ CASINO_PRIZE("Implant: Shades", /obj/item/weapon/implantcase/shades, 1, 750, "implants"),
+ CASINO_PRIZE("Implant: Sprinter", /obj/item/weapon/implantcase/sprinter, 1, 1500, "implants"),
+ CASINO_PRIZE("Implant: Toolkit", /obj/item/weapon/implantcase/toolkit, 1, 500, "implants"),
+ CASINO_PRIZE("Implant: Language", /obj/item/weapon/implantcase/vrlanguage, 1, 1000, "implants"),
+ CASINO_PRIZE("Implant: Analyzer", /obj/item/weapon/implantcase/analyzer, 1, 500, "implants"),
+ CASINO_PRIZE("Implant: Size control", /obj/item/weapon/implant/sizecontrol , 1, 500, "implants"),
+ )
+
+ item_list["Event"] = list(
+ )
+
+/obj/machinery/casino_prize_dispenser/power_change()
+ ..()
+ if(stat & BROKEN)
+ icon_state = "[initial(icon_state)]-broken"
+ else
+ if(!(stat & NOPOWER))
+ icon_state = initial(icon_state)
+ else
+ spawn(rand(0, 15))
+ icon_state = "[initial(icon_state)]-off"
+
+/obj/machinery/casino_prize_dispenser/attack_hand(mob/user as mob)
+ if(stat & (BROKEN|NOPOWER))
+ return
+ tgui_interact(user)
+
+/obj/machinery/casino_prize_dispenser/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(currently_vending)
+ if(istype(W, /obj/item/weapon/spacecasinocash))
+ to_chat(usr, "Please select prize on display with sufficient amount of chips.")
+ else
+ SStgui.update_uis(src)
+ return // don't smack that machine with your 2 chips
+
+ if(istype(W, /obj/item/weapon/spacecasinocash))
+ attack_hand(user)
+ return
+ ..()
+
+/obj/machinery/casino_prize_dispenser/proc/pay_with_chips(var/obj/item/weapon/spacecasinocash/cashmoney, mob/user, var/price)
+ //"cashmoney_:[cashmoney] user:[user] currently_vending:[currently_vending]"
+ if(price > cashmoney.worth)
+ to_chat(usr, "\icon[cashmoney] That is not enough chips.")
+ return 0
+
+ if(istype(cashmoney, /obj/item/weapon/spacecasinocash))
+ visible_message("\The [usr] inserts some chips into \the [src].")
+ cashmoney.worth -= price
+
+ if(cashmoney.worth <= 0)
+ usr.drop_from_inventory(cashmoney)
+ qdel(cashmoney)
+ else
+ cashmoney.update_icon()
+ return 1
+
+/obj/machinery/casino_prize_dispenser/ui_assets(mob/user)
+ return list(
+ get_asset_datum(/datum/asset/spritesheet/vending),
+ )
+
+/obj/machinery/casino_prize_dispenser/tgui_data(mob/user)
+ var/list/data[0]
+
+ data["items"] = list()
+ for(var/cat in item_list)
+ var/list/cat_items = list()
+ for(var/prize_name in item_list[cat])
+ var/datum/data/casino_prize/prize = item_list[cat][prize_name]
+ cat_items[prize_name] = list("name" = prize_name, "price" = prize.cost, "restriction" = prize.restriction)
+ data["items"][cat] = cat_items
+ return data
+
+/obj/machinery/casino_prize_dispenser/tgui_interact(mob/user, datum/tgui/ui = null)
+ // Open the window
+ ui = SStgui.try_update_ui(user, src, ui)
+ if(!ui)
+ ui = new(user, src, "CasinoPrizeDispenser", name)
+ ui.open()
+
+/obj/machinery/casino_prize_dispenser/tgui_act(action, params)
+ if(stat & (BROKEN|NOPOWER))
+ return
+ if(usr.stat || usr.restrained())
+ return
+ if(..())
+ return TRUE
+ . = TRUE
+ switch(action)
+ if("purchase")
+ var/paid = FALSE
+ var/category = params["cat"]
+ var/restriction_category = params["restriction"]
+ var/restriction_check = 0
+ var/item_given = FALSE
+ var/name = params["name"]
+ var/price = params["price"]
+ var/datum/data/casino_prize/bi = item_list[category][name]
+ switch(restriction_category)
+ if("weapons")
+ restriction_check = category_weapons
+ if("gear")
+ restriction_check = category_gear
+ if("clothing")
+ restriction_check = category_clothing
+ if("misc")
+ restriction_check = category_misc
+ if("drinks")
+ restriction_check = category_drinks
+ if("implants")
+ restriction_check = category_implants
+ if("event")
+ restriction_check = category_event
+ else
+ to_chat(usr, "Prize checkout error has occured, purchase cancelled.")
+ return FALSE
+
+ if(restriction_check < 1)
+ to_chat(usr, "[name] is restricted, this prize can't be bought.")
+ return FALSE
+ if(restriction_check > 1)
+ item_given = TRUE
+
+ if(price <= 0 && item_given == TRUE)
+ vend(bi, usr)
+ return TRUE
+
+ currently_vending = bi
+
+ if(istype(usr.get_active_hand(), /obj/item/weapon/spacecasinocash))
+ var/obj/item/weapon/spacecasinocash/cash = usr.get_active_hand()
+ paid = pay_with_chips(cash, usr, price)
+ else
+ to_chat(usr, "Payment failure: Improper payment method, please provide chips.")
+ return TRUE // we set this because they shouldn't even be able to get this far, and we want the UI to update.
+ if(paid)
+ if(item_given == TRUE)
+ vend(bi, usr)
+
+ speak("Thank you for your purchase, your [bi] has been logged.")
+ do_logging(currently_vending, usr, bi)
+ . = TRUE
+ else
+ to_chat(usr, "Payment failure: unable to process payment.")
+
+/obj/machinery/casino_prize_dispenser/proc/vend(datum/data/casino_prize/bi, mob/user)
+ SStgui.update_uis(src)
+
+ if(ispath(bi.equipment_path, /obj/item/stack))
+ new bi.equipment_path(loc, bi.equipment_amt)
+ playsound(src, 'sound/machines/vending/vending_drop.ogg', 100, 1)
+ return TRUE
+
+ for(var/i in 1 to bi.equipment_amt)
+ new bi.equipment_path(loc)
+ playsound(src, 'sound/machines/vending/vending_drop.ogg', 100, 1)
+
+ currently_vending = null
+ use_power(vend_power_usage) //actuators and stuff
+ flick("[icon_state]-vend",src)
+
+
+/obj/machinery/casino_prize_dispenser/proc/do_logging(item, mob/user, datum/data/casino_prize/bi)
+ var/prize_log = "{ckey:[user.ckey]character_name:[user.name]item_path: [bi.equipment_path]}"
+ log[++log.len] = prize_log
+ //Currently doesnt have an ingame way to show. Can only be viewed through View-Variables, to ensure theres no chance of players ckeys exposed - Jack
+
+/obj/machinery/casino_prize_dispenser/proc/speak(var/message)
+ if(stat & NOPOWER)
+ return
+
+ if(!message)
+ return
+
+ for(var/mob/O in hearers(src, null))
+ O.show_message("\The [src] beeps, \"[message]\"",2)
+ return
+
+/obj/machinery/casino_prize_dispenser/process() //Might not need this, but just to be safe for now
+ if(stat & (BROKEN|NOPOWER))
+ return
+=======
+
+//Original Casino Code created by Shadowfire117#1269 - Ported from CHOMPstation
+//Modified by GhostActual#2055 for use with VOREstation
+
+// Use this define to register a prize!
+// * n - The proper name of the purchasable
+// * o - The object type path of the purchasable to spawn
+// * r - The amount to dispense
+// * p - The price of the purchasable in chips
+// * l - The restriction of the item
+#define CASINO_PRIZE(n, o, r, p, l) n = new /datum/data/casino_prize(n, o, r, p, l)
+
+/datum/data/casino_prize
+ var/equipment_path = null
+ var/equipment_amt = 1
+ var/cost = 0
+ var/category = null
+ var/restriction = null
+
+/datum/data/casino_prize/New(name, path, amt, cost, restriction)
+ src.name = name
+ src.equipment_path = path
+ src.equipment_amt = amt
+ src.cost = cost
+ src.category = category
+ src.restriction = restriction
+
+/obj/machinery/casino_prize_dispenser
+ name = "Casino Prize Exchanger"
+ desc = "Exchange your chips to obtain wonderful prizes! Hoepfully you'll get to keep some of them for a while."
+ icon = 'icons/obj/casino.dmi'
+ icon_state ="casino_prize_dispenser"
+ var/icon_vend ="casino_prize_dispenser-vend"
+ anchored = 1
+ density = 1
+ opacity = 0
+ var/list/item_list
+
+ clicksound = "button"
+ var/vending_sound = "machines/vending/vending_drop.ogg"
+
+ // Power
+ use_power = USE_POWER_IDLE
+ idle_power_usage = 10
+ var/vend_power_usage = 150 //actuators and stuff
+
+ // Vending-related
+ var/datum/data/casino_prize/currently_vending = null // What we're requesting payment for right now
+ var/list/log = list() //Log only SS13 staff is allowed to look at, CKEYS are listed here for record keeping of prizes and players for events!
+
+ var/category_weapons = 1 //For listing categories, if false then prizes of this categories cant be obtained nor bought for post-shift enjoyment
+ var/category_gear = 1 //If 1 prizes will be only logged
+ var/category_clothing = 1 //If 2 prizes will both be logged and spawned
+ var/category_misc = 1
+ var/category_drinks = 1
+ var/category_implants = 1
+ var/category_event = 1 //For special events, holidays, etc
+
+/obj/machinery/casino_prize_dispenser/Initialize()
+ . = ..()
+ power_change()
+
+ item_list = list()
+ item_list["Weapons"] = list(
+ CASINO_PRIZE("Scepter", /obj/item/weapon/scepter, 1, 500, "weapons"),
+ CASINO_PRIZE("Chain of Command", /obj/item/weapon/melee/chainofcommand, 1, 250, "weapons"),
+ CASINO_PRIZE("Size Gun", /obj/item/weapon/gun/energy/sizegun, 1, 100, "weapons"),
+ CASINO_PRIZE("Advanced Particle Rifle", /obj/item/weapon/gun/energy/particle/advanced, 1, 500, "weapons"),
+ CASINO_PRIZE("Temperature Gun", /obj/item/weapon/gun/energy/temperature, 1, 250, "weapons"),
+ CASINO_PRIZE("Alien Pistol", /obj/item/weapon/gun/energy/alien, 1, 1000, "weapons"),
+ CASINO_PRIZE("Floral Gun", /obj/item/weapon/gun/energy/floragun, 1, 250, "weapons"),
+ CASINO_PRIZE("Net Gun", /obj/item/weapon/gun/energy/netgun, 1, 500, "weapons"),
+ )
+ item_list["Gear"] = list(
+ CASINO_PRIZE("Experimental Welder", /obj/item/weapon/weldingtool/experimental, 1, 500, "gear"),
+ CASINO_PRIZE("Chameleon Tie", /obj/item/clothing/accessory/chameleon, 1, 250, "gear"),
+ CASINO_PRIZE("Chemsprayer", /obj/item/weapon/reagent_containers/spray/chemsprayer, 1, 250, "gear"),
+ CASINO_PRIZE("Bluespace Beaker", /obj/item/weapon/reagent_containers/glass/beaker/bluespace, 1, 200, "gear"),
+ CASINO_PRIZE("Cryo Beaker", /obj/item/weapon/reagent_containers/glass/beaker/noreact, 1, 200, "gear"),
+ )
+ item_list["Clothing"] = list(
+ CASINO_PRIZE("Shark mask", /obj/item/clothing/mask/shark, 1, 50, "clothing"),
+ CASINO_PRIZE("Pig mask", /obj/item/clothing/mask/pig, 1, 50, "clothing"),
+ CASINO_PRIZE("Luchador mask", /obj/item/clothing/mask/luchador, 1, 50, "clothing"),
+ CASINO_PRIZE("Horse mask", /obj/item/clothing/mask/horsehead, 1, 50, "clothing"),
+ CASINO_PRIZE("Goblin mask", /obj/item/clothing/mask/goblin, 1, 50, "clothing"),
+ CASINO_PRIZE("Fake moustache", /obj/item/clothing/mask/fakemoustache, 1, 50, "clothing"),
+ CASINO_PRIZE("Dolphin mask", /obj/item/clothing/mask/dolphin, 1, 50, "clothing"),
+ CASINO_PRIZE("Demon mask", /obj/item/clothing/mask/demon, 1, 50, "clothing"),
+ CASINO_PRIZE("Chameleon mask", /obj/item/clothing/under/chameleon, 1, 250, "clothing"),
+ CASINO_PRIZE("Ian costume", /obj/item/clothing/suit/storage/hooded/costume/ian, 1, 50, "clothing"),
+ CASINO_PRIZE("Carp costume", /obj/item/clothing/suit/storage/hooded/costume/carp, 1, 50, "clothing"),
+ )
+ item_list["Miscellaneous"] = list(
+ CASINO_PRIZE("Toy sword", /obj/item/toy/sword, 1, 50, "misc"),
+ CASINO_PRIZE("Waterflower", /obj/item/weapon/reagent_containers/spray/waterflower, 1, 50, "misc"),
+ CASINO_PRIZE("Horse stick", /obj/item/toy/stickhorse, 1, 50, "misc"),
+ CASINO_PRIZE("Katana", /obj/item/toy/katana, 1, 50, "misc"),
+ CASINO_PRIZE("Conch", /obj/item/toy/eight_ball/conch, 1, 50, "misc"),
+ CASINO_PRIZE("Eight ball", /obj/item/toy/eight_ball, 1, 50, "misc"),
+ CASINO_PRIZE("Foam sword", /obj/item/weapon/material/sword/foam, 1, 50, "misc"),
+ CASINO_PRIZE("Whistle", /obj/item/toy/bosunwhistle, 1, 50, "misc"),
+ CASINO_PRIZE("Golden cup", /obj/item/weapon/reagent_containers/food/drinks/golden_cup, 1, 50, "misc"),
+ CASINO_PRIZE("Quality cigars", /obj/item/weapon/storage/fancy/cigar/havana, 1, 50, "misc"),
+ CASINO_PRIZE("Casino wallet (kept after event)", /obj/item/weapon/storage/wallet/casino, 1, 50, "misc"),
+ CASINO_PRIZE("Casino cards", /obj/item/weapon/deck/cards/casino, 1, 50, "misc"),
+ )
+ item_list["Drinks"] = list(
+ CASINO_PRIZE("Redeemer's brew", /obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew, 1, 50, "drinks"),
+ CASINO_PRIZE("Poison wine", /obj/item/weapon/reagent_containers/food/drinks/bottle/pwine, 1, 50, "drinks"),
+ CASINO_PRIZE("Patron", /obj/item/weapon/reagent_containers/food/drinks/bottle/patron, 1, 50, "drinks"),
+ CASINO_PRIZE("Holy water", /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, 1, 50, "drinks"),
+ CASINO_PRIZE("Goldschlager", /obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager, 1, 50, "drinks"),
+ CASINO_PRIZE("Champagne", /obj/item/weapon/reagent_containers/food/drinks/bottle/champagne, 1, 50, "drinks"),
+ CASINO_PRIZE("Bottle of Nothing", /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing, 1, 50, "drinks"),
+ CASINO_PRIZE("Whiskey bliss", /obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey, 1, 50, "drinks"),
+ )
+
+ item_list["Implants"] = list(
+ CASINO_PRIZE("Implanter (Remember to get one unless you want to borrow from station!)", /obj/item/weapon/implanter, 1, 100, "implants"),
+ CASINO_PRIZE("Implant: Tazer", /obj/item/weapon/implantcase/taser, 1, 1000, "implants"),
+ CASINO_PRIZE("Implant: Medkit", /obj/item/weapon/implantcase/medkit, 1, 500, "implants"),
+ CASINO_PRIZE("Implant: Shades", /obj/item/weapon/implantcase/shades, 1, 750, "implants"),
+ CASINO_PRIZE("Implant: Sprinter", /obj/item/weapon/implantcase/sprinter, 1, 1500, "implants"),
+ CASINO_PRIZE("Implant: Toolkit", /obj/item/weapon/implantcase/toolkit, 1, 500, "implants"),
+ CASINO_PRIZE("Implant: Language", /obj/item/weapon/implantcase/vrlanguage, 1, 1000, "implants"),
+ CASINO_PRIZE("Implant: Analyzer", /obj/item/weapon/implantcase/analyzer, 1, 500, "implants"),
+ CASINO_PRIZE("Implant: Size control", /obj/item/weapon/implant/sizecontrol , 1, 500, "implants"),
+ )
+
+ item_list["Event"] = list(
+ )
+
+/obj/machinery/casino_prize_dispenser/power_change()
+ ..()
+ if(stat & BROKEN)
+ icon_state = "[initial(icon_state)]-broken"
+ else
+ if(!(stat & NOPOWER))
+ icon_state = initial(icon_state)
+ else
+ spawn(rand(0, 15))
+ icon_state = "[initial(icon_state)]-off"
+
+/obj/machinery/casino_prize_dispenser/attack_hand(mob/user as mob)
+ if(stat & (BROKEN|NOPOWER))
+ return
+ tgui_interact(user)
+
+/obj/machinery/casino_prize_dispenser/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(currently_vending)
+ if(istype(W, /obj/item/weapon/spacecasinocash))
+ to_chat(usr, "Please select prize on display with sufficient amount of chips.")
+ else
+ SStgui.update_uis(src)
+ return // don't smack that machine with your 2 chips
+
+ if(istype(W, /obj/item/weapon/spacecasinocash))
+ attack_hand(user)
+ return
+ ..()
+
+/obj/machinery/casino_prize_dispenser/proc/pay_with_chips(var/obj/item/weapon/spacecasinocash/cashmoney, mob/user, var/price)
+ //"cashmoney_:[cashmoney] user:[user] currently_vending:[currently_vending]"
+ if(price > cashmoney.worth)
+ to_chat(usr, "\icon[cashmoney] That is not enough chips.")
+ return 0
+
+ if(istype(cashmoney, /obj/item/weapon/spacecasinocash))
+ visible_message("\The [usr] inserts some chips into \the [src].")
+ cashmoney.worth -= price
+
+ if(cashmoney.worth <= 0)
+ usr.drop_from_inventory(cashmoney)
+ qdel(cashmoney)
+ else
+ cashmoney.update_icon()
+ return 1
+
+/obj/machinery/casino_prize_dispenser/ui_assets(mob/user)
+ return list(
+ get_asset_datum(/datum/asset/spritesheet/vending),
+ )
+
+/obj/machinery/casino_prize_dispenser/tgui_data(mob/user)
+ var/list/data[0]
+
+ data["items"] = list()
+ for(var/cat in item_list)
+ var/list/cat_items = list()
+ for(var/prize_name in item_list[cat])
+ var/datum/data/casino_prize/prize = item_list[cat][prize_name]
+ cat_items[prize_name] = list("name" = prize_name, "price" = prize.cost, "restriction" = prize.restriction)
+ data["items"][cat] = cat_items
+ return data
+
+/obj/machinery/casino_prize_dispenser/tgui_interact(mob/user, datum/tgui/ui = null)
+ // Open the window
+ ui = SStgui.try_update_ui(user, src, ui)
+ if(!ui)
+ ui = new(user, src, "CasinoPrizeDispenser", name)
+ ui.open()
+
+/obj/machinery/casino_prize_dispenser/tgui_act(action, params)
+ if(stat & (BROKEN|NOPOWER))
+ return
+ if(usr.stat || usr.restrained())
+ return
+ if(..())
+ return TRUE
+ . = TRUE
+ switch(action)
+ if("purchase")
+ var/paid = FALSE
+ var/category = params["cat"]
+ var/restriction_category = params["restriction"]
+ var/restriction_check = 0
+ var/item_given = FALSE
+ var/name = params["name"]
+ var/price = params["price"]
+ var/datum/data/casino_prize/bi = item_list[category][name]
+ switch(restriction_category)
+ if("weapons")
+ restriction_check = category_weapons
+ if("gear")
+ restriction_check = category_gear
+ if("clothing")
+ restriction_check = category_clothing
+ if("misc")
+ restriction_check = category_misc
+ if("drinks")
+ restriction_check = category_drinks
+ if("implants")
+ restriction_check = category_implants
+ if("event")
+ restriction_check = category_event
+ else
+ to_chat(usr, "Prize checkout error has occured, purchase cancelled.")
+ return FALSE
+
+ if(restriction_check < 1)
+ to_chat(usr, "[name] is restricted, this prize can't be bought.")
+ return FALSE
+ if(restriction_check > 1)
+ item_given = TRUE
+
+ if(price <= 0 && item_given == TRUE)
+ vend(bi, usr)
+ return TRUE
+
+ currently_vending = bi
+
+ if(istype(usr.get_active_hand(), /obj/item/weapon/spacecasinocash))
+ var/obj/item/weapon/spacecasinocash/cash = usr.get_active_hand()
+ paid = pay_with_chips(cash, usr, price)
+ else
+ to_chat(usr, "Payment failure: Improper payment method, please provide chips.")
+ return TRUE // we set this because they shouldn't even be able to get this far, and we want the UI to update.
+ if(paid)
+ if(item_given == TRUE)
+ vend(bi, usr)
+
+ speak("Thank you for your purchase, your [bi] has been logged.")
+ do_logging(currently_vending, usr, bi)
+ . = TRUE
+ else
+ to_chat(usr, "Payment failure: unable to process payment.")
+
+/obj/machinery/casino_prize_dispenser/proc/vend(datum/data/casino_prize/bi, mob/user)
+ SStgui.update_uis(src)
+
+ if(ispath(bi.equipment_path, /obj/item/stack))
+ new bi.equipment_path(loc, bi.equipment_amt)
+ playsound(src, 'sound/machines/vending/vending_drop.ogg', 100, 1)
+ return TRUE
+
+ for(var/i in 1 to bi.equipment_amt)
+ new bi.equipment_path(loc)
+ playsound(src, 'sound/machines/vending/vending_drop.ogg', 100, 1)
+
+ currently_vending = null
+ use_power(vend_power_usage) //actuators and stuff
+ flick("[icon_state]-vend",src)
+
+
+/obj/machinery/casino_prize_dispenser/proc/do_logging(item, mob/user, datum/data/casino_prize/bi)
+ var/prize_log = "{ckey:[user.ckey]character_name:[user.name]item_path: [bi.equipment_path]}"
+ log[++log.len] = prize_log
+ //Currently doesnt have an ingame way to show. Can only be viewed through View-Variables, to ensure theres no chance of players ckeys exposed - Jack
+
+/obj/machinery/casino_prize_dispenser/proc/speak(var/message)
+ if(stat & NOPOWER)
+ return
+
+ if(!message)
+ return
+
+ for(var/mob/O in hearers(src, null))
+ O.show_message("\The [src] beeps, \"[message]\"",2)
+ return
+
+/obj/machinery/casino_prize_dispenser/process() //Might not need this, but just to be safe for now
+ if(stat & (BROKEN|NOPOWER))
+ return
+>>>>>>> 737c473e4b... [MIRROR] :siffet: (#11584):code/modules/casino/casino_prize_vendor.dm
diff --git a/code/modules/awaymissions/loot_vr.dm b/code/modules/awaymissions/loot_vr.dm
index a44ebab2a9..8c1205fb6a 100644
--- a/code/modules/awaymissions/loot_vr.dm
+++ b/code/modules/awaymissions/loot_vr.dm
@@ -282,7 +282,7 @@
for(var/i=0,i>>>>>> 737c473e4b... [MIRROR] :siffet: (#11584)
+ /obj/item/clothing/suit/storage/toggle/internalaffairs = 5,
+ /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket = 5,
+ /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket = 5,
+ /obj/item/clothing/suit/suspenders = 5,
+ /obj/item/clothing/suit/storage/toggle/track = 5,
+ /obj/item/clothing/suit/storage/toggle/track/blue = 5,
+ /obj/item/clothing/suit/storage/toggle/track/green = 5,
+ /obj/item/clothing/suit/storage/toggle/track/red = 5,
+ /obj/item/clothing/suit/storage/toggle/track/white = 5,
+ /obj/item/clothing/suit/storage/trench = 5,
+ /obj/item/clothing/suit/storage/trench/grey = 5,
+ /obj/item/clothing/suit/varsity = 5,
+ /obj/item/clothing/suit/varsity/red = 5,
+ /obj/item/clothing/suit/varsity/purple = 5,
+ /obj/item/clothing/suit/varsity/green = 5,
+ /obj/item/clothing/suit/varsity/blue = 5,
+ /obj/item/clothing/suit/varsity/brown = 5,
+ /obj/item/clothing/suit/storage/hooded/wintercoat = 5,
+ /obj/item/clothing/suit/storage/hooded/wintercoat/aformal = 5,
+ /obj/item/clothing/suit/storage/teshari/cloak/standard/white_grey = 5)
+ prices = list(/obj/item/clothing/suit/storage/apron = 100,
+ /obj/item/clothing/suit/storage/flannel/aqua = 100,
+ /obj/item/clothing/suit/storage/toggle/bomber = 100,
+ /obj/item/clothing/suit/storage/bomber/alt = 100,
+ /obj/item/clothing/suit/storage/flannel/brown = 100,
+ /obj/item/clothing/suit/storage/toggle/cardigan = 100,
+ /obj/item/clothing/accessory/poncho/roles/cloak/custom = 100,
+ /obj/item/clothing/suit/storage/duster = 100,
+ /obj/item/clothing/suit/storage/toggle/denim_jacket = 100,
+ /obj/item/clothing/suit/storage/toggle/denim_jacket/nanotrasen = 100,
+ /obj/item/clothing/suit/storage/toggle/denim_jacket/sleeveless = 100,
+ /obj/item/clothing/suit/storage/toggle/denim_jacket/nanotrasen/sleeveless = 100,
+ /obj/item/clothing/suit/storage/fluff/gntop = 100,
+ /obj/item/clothing/suit/greatcoat = 100,
+ /obj/item/clothing/suit/storage/flannel = 100,
+ /obj/item/clothing/suit/storage/greyjacket = 100,
+ /obj/item/clothing/suit/storage/hazardvest = 100,
+ /obj/item/clothing/suit/storage/toggle/hoodie/black = 100,
+ /obj/item/clothing/suit/storage/toggle/hoodie/red = 100,
+ /obj/item/clothing/suit/storage/toggle/hoodie/blue = 100,
+ /obj/item/clothing/suit/storage/toggle/hoodie/green = 100,
+ /obj/item/clothing/suit/storage/toggle/hoodie/orange = 100,
+ /obj/item/clothing/suit/storage/toggle/hoodie/yellow = 100,
+ /obj/item/clothing/suit/storage/toggle/hoodie/cti = 100,
+ /obj/item/clothing/suit/storage/toggle/hoodie/mu = 100,
+ /obj/item/clothing/suit/storage/toggle/hoodie/nt = 100,
+ /obj/item/clothing/suit/storage/toggle/hoodie/smw = 100,
+ /obj/item/clothing/suit/storage/toggle/hoodie/nrti = 100,
+ /obj/item/clothing/suit/storage/fluff/jacket/field = 100,
+ /obj/item/clothing/suit/storage/fluff/jacket/air_cavalry = 100,
+ /obj/item/clothing/suit/storage/fluff/jacket/air_force = 100,
+ /obj/item/clothing/suit/storage/fluff/jacket/navy = 100,
+ /obj/item/clothing/suit/storage/fluff/jacket/special_forces = 100,
+ /obj/item/clothing/suit/kamishimo = 100,
+ /obj/item/clothing/suit/kimono = 100,
+ /obj/item/clothing/suit/storage/toggle/labcoat = 100,
+ /obj/item/clothing/suit/storage/toggle/labcoat/blue = 100,
+ /obj/item/clothing/suit/storage/toggle/labcoat/blue_edge = 100,
+ /obj/item/clothing/suit/storage/toggle/labcoat/green = 100,
+ /obj/item/clothing/suit/storage/toggle/labcoat/orange = 100,
+ /obj/item/clothing/suit/storage/toggle/labcoat/pink = 100,
+ /obj/item/clothing/suit/storage/toggle/labcoat/red = 100,
+ /obj/item/clothing/suit/storage/toggle/labcoat/yellow = 100,
+ /obj/item/clothing/suit/leathercoat = 100,
+ /obj/item/clothing/suit/storage/toggle/leather_jacket = 100,
+ /obj/item/clothing/suit/storage/leather_jacket_alt = 100,
+ /obj/item/clothing/suit/storage/toggle/brown_jacket = 100,
+ /obj/item/clothing/suit/storage/toggle/leather_jacket/nanotrasen = 100,
+ /obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen = 100,
+ /obj/item/clothing/suit/storage/toggle/leather_jacket/sleeveless = 100,
+ /obj/item/clothing/suit/storage/toggle/brown_jacket/sleeveless = 100,
+ /obj/item/clothing/suit/storage/toggle/leather_jacket/nanotrasen/sleeveless = 100,
+ /obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen/sleeveless = 100,
+ /obj/item/clothing/suit/storage/miljacket = 100,
+ /obj/item/clothing/suit/storage/miljacket/alt = 100,
+ /obj/item/clothing/suit/storage/miljacket/green = 100,
+ /obj/item/clothing/suit/storage/apron/overalls = 100,
+ /obj/item/clothing/suit/storage/toggle/peacoat = 100,
+ /obj/item/clothing/accessory/poncho = 100,
+ /obj/item/clothing/accessory/poncho/green = 100,
+ /obj/item/clothing/accessory/poncho/red = 100,
+ /obj/item/clothing/accessory/poncho/purple = 100,
+ /obj/item/clothing/accessory/poncho/blue = 100,
+ /obj/item/clothing/suit/jacket/puffer = 100,
+ /obj/item/clothing/suit/jacket/puffer/vest = 100,
+ /obj/item/clothing/suit/storage/flannel/red = 100,
+ /obj/item/clothing/suit/unathi/robe = 100,
+ /obj/item/clothing/suit/storage/toggle/internalaffairs = 100,
+ /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket = 100,
+ /obj/item/clothing/suit/storage/toggle/lawyer/purpjacket = 100,
+ /obj/item/clothing/suit/suspenders = 100,
+ /obj/item/clothing/suit/storage/toggle/track = 100,
+ /obj/item/clothing/suit/storage/toggle/track/blue = 100,
+ /obj/item/clothing/suit/storage/toggle/track/green = 100,
+ /obj/item/clothing/suit/storage/toggle/track/red = 100,
+ /obj/item/clothing/suit/storage/toggle/track/white = 100,
+ /obj/item/clothing/suit/storage/trench = 100,
+ /obj/item/clothing/suit/storage/trench/grey = 100,
+ /obj/item/clothing/suit/varsity = 100,
+ /obj/item/clothing/suit/varsity/red = 100,
+ /obj/item/clothing/suit/varsity/purple = 100,
+ /obj/item/clothing/suit/varsity/green = 100,
+ /obj/item/clothing/suit/varsity/blue = 100,
+ /obj/item/clothing/suit/varsity/brown = 100,
+ /obj/item/clothing/suit/storage/hooded/wintercoat = 100,
+ /obj/item/clothing/suit/storage/hooded/wintercoat/aformal = 100,
+ /obj/item/clothing/suit/storage/teshari/cloak/standard/white_grey = 100)
+ premium = list(/obj/item/clothing/suit/imperium_monk = 3,
+ /obj/item/clothing/suit/storage/hooded/wintercoat/cosmic = 1)
+ contraband = list(/obj/item/toy/katana = 1)
+
+/obj/machinery/vending/loadout/costume
+ name = "Thespian's Delight"
+ desc = "Sometimes nerds need costumes!"
+ product_ads = "Don't let your art be stifled!;Remember, practice makes perfect!;Break a leg!;Don't make me get the cane!;Thespian's Delight entering stage right!;Costumes for your acting needs!"
+ icon = 'icons/obj/vending.dmi'
+ icon_state = "theater"
+ products = list(/obj/item/clothing/suit/storage/hooded/costume/carp = 3,
+ /obj/item/clothing/suit/storage/hooded/costume/carp = 3,
+ /obj/item/clothing/suit/chickensuit = 3,
+ /obj/item/clothing/head/chicken = 3,
+ /obj/item/clothing/head/helmet/gladiator = 3,
+ /obj/item/clothing/under/gladiator = 3,
+ /obj/item/clothing/suit/storage/toggle/labcoat/mad = 3,
+ /obj/item/clothing/under/suit_jacket/green = 3,
+ /obj/item/clothing/glasses/gglasses = 3,
+ /obj/item/clothing/head/flatcap = 3,
+ /obj/item/clothing/shoes/boots/jackboots = 3,
+ /obj/item/clothing/under/schoolgirl = 3,
+ /obj/item/clothing/head/kitty = 3,
+ /obj/item/clothing/glasses/sunglasses/blindfold = 3,
+ /obj/item/clothing/head/beret = 3,
+ /obj/item/clothing/under/skirt = 3,
+ /obj/item/clothing/under/suit_jacket = 3,
+ /obj/item/clothing/head/that = 3,
+ /obj/item/clothing/accessory/wcoat = 3,
+ /obj/item/clothing/under/scratch = 3,
+ /obj/item/clothing/shoes/white = 3,
+ /obj/item/clothing/gloves/white = 3,
+ /obj/item/clothing/under/kilt = 3,
+ /obj/item/clothing/glasses/monocle = 3,
+ /obj/item/clothing/under/sl_suit = 3,
+ /obj/item/clothing/mask/fakemoustache = 3,
+ /obj/item/weapon/cane = 3,
+ /obj/item/clothing/head/bowler = 3,
+ /obj/item/clothing/head/plaguedoctorhat = 3,
+ /obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 3,
+ /obj/item/clothing/mask/gas/plaguedoctor/fluff = 3,
+ /obj/item/clothing/under/owl = 3,
+ /obj/item/clothing/mask/gas/owl_mask = 3,
+ /obj/item/clothing/under/waiter = 3,
+ /obj/item/clothing/suit/storage/apron = 3,
+ /obj/item/clothing/under/pirate = 3,
+ /obj/item/clothing/head/pirate = 3,
+ /obj/item/clothing/suit/pirate = 3,
+ /obj/item/clothing/glasses/eyepatch = 3,
+ /obj/item/clothing/head/ushanka = 3,
+ /obj/item/clothing/under/soviet = 3,
+ /obj/item/clothing/suit/imperium_monk = 1,
+ /obj/item/clothing/suit/holidaypriest = 3,
+ /obj/item/clothing/head/witchwig = 3,
+ /obj/item/clothing/under/sundress = 3,
+ /obj/item/weapon/staff/broom = 3,
+ /obj/item/clothing/suit/wizrobe/fake = 3,
+ /obj/item/clothing/head/wizard/fake = 3,
+ /obj/item/weapon/staff = 3,
+ /obj/item/clothing/mask/gas/sexyclown = 3,
+ /obj/item/clothing/under/sexyclown = 3,
+ /obj/item/clothing/mask/gas/sexymime = 3,
+ /obj/item/clothing/under/sexymime = 3,
+ /obj/item/clothing/suit/storage/hooded/knight_costume = 3,
+ /obj/item/clothing/suit/storage/hooded/knight_costume/galahad = 3,
+ /obj/item/clothing/suit/storage/hooded/knight_costume/lancelot = 3,
+ /obj/item/clothing/suit/storage/hooded/knight_costume/robin = 3,
+ /obj/item/clothing/suit/armor/combat/crusader_costume = 3,
+ /obj/item/clothing/suit/armor/combat/crusader_costume/bedevere = 3,
+ /obj/item/clothing/head/helmet/combat/crusader_costume = 3,
+ /obj/item/clothing/head/helmet/combat/bedevere_costume = 3,
+ /obj/item/clothing/gloves/combat/knight_costume = 3,
+ /obj/item/clothing/gloves/combat/knight_costume/brown = 3,
+ /obj/item/clothing/shoes/knight_costume = 3,
+ /obj/item/clothing/shoes/knight_costume/black = 3)
+ prices = list(/obj/item/clothing/suit/storage/hooded/costume/carp = 200,
+ /obj/item/clothing/suit/storage/hooded/costume/carp = 200,
+ /obj/item/clothing/suit/chickensuit = 200,
+ /obj/item/clothing/head/chicken = 200,
+ /obj/item/clothing/head/helmet/gladiator = 300,
+ /obj/item/clothing/under/gladiator = 500,
+ /obj/item/clothing/suit/storage/toggle/labcoat/mad = 200,
+ /obj/item/clothing/under/suit_jacket/green = 200,
+ /obj/item/clothing/glasses/gglasses = 200,
+ /obj/item/clothing/head/flatcap = 200,
+ /obj/item/clothing/shoes/boots/jackboots = 200,
+ /obj/item/clothing/under/schoolgirl = 200,
+ /obj/item/clothing/head/kitty = 200,
+ /obj/item/clothing/glasses/sunglasses/blindfold = 200,
+ /obj/item/clothing/head/beret = 200,
+ /obj/item/clothing/under/skirt = 200,
+ /obj/item/clothing/under/suit_jacket = 200,
+ /obj/item/clothing/head/that = 200,
+ /obj/item/clothing/accessory/wcoat = 200,
+ /obj/item/clothing/under/scratch = 200,
+ /obj/item/clothing/shoes/white = 200,
+ /obj/item/clothing/gloves/white = 200,
+ /obj/item/clothing/under/kilt = 200,
+ /obj/item/clothing/glasses/monocle = 400,
+ /obj/item/clothing/under/sl_suit = 200,
+ /obj/item/clothing/mask/fakemoustache = 200,
+ /obj/item/weapon/cane = 300,
+ /obj/item/clothing/head/bowler = 200,
+ /obj/item/clothing/head/plaguedoctorhat = 300,
+ /obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 300,
+ /obj/item/clothing/mask/gas/plaguedoctor/fluff = 600,
+ /obj/item/clothing/under/owl = 400,
+ /obj/item/clothing/mask/gas/owl_mask = 400,
+ /obj/item/clothing/under/waiter = 100,
+ /obj/item/clothing/suit/storage/apron = 200,
+ /obj/item/clothing/under/pirate = 300,
+ /obj/item/clothing/head/pirate = 400,
+ /obj/item/clothing/suit/pirate = 600,
+ /obj/item/clothing/glasses/eyepatch = 200,
+ /obj/item/clothing/head/ushanka = 200,
+ /obj/item/clothing/under/soviet = 200,
+ /obj/item/clothing/suit/imperium_monk = 2000,
+ /obj/item/clothing/suit/holidaypriest = 200,
+ /obj/item/clothing/head/witchwig = 200,
+ /obj/item/clothing/under/sundress = 50,
+ /obj/item/weapon/staff/broom = 400,
+ /obj/item/clothing/suit/wizrobe/fake = 200,
+ /obj/item/clothing/head/wizard/fake = 200,
+ /obj/item/weapon/staff = 400,
+ /obj/item/clothing/mask/gas/sexyclown = 600,
+ /obj/item/clothing/under/sexyclown = 200,
+ /obj/item/clothing/mask/gas/sexymime = 600,
+ /obj/item/clothing/under/sexymime = 200,
+ /obj/item/clothing/suit/storage/hooded/knight_costume = 200,
+ /obj/item/clothing/suit/storage/hooded/knight_costume/galahad = 200,
+ /obj/item/clothing/suit/storage/hooded/knight_costume/lancelot = 200,
+ /obj/item/clothing/suit/storage/hooded/knight_costume/robin = 200,
+ /obj/item/clothing/suit/armor/combat/crusader_costume = 200,
+ /obj/item/clothing/suit/armor/combat/crusader_costume/bedevere = 200,
+ /obj/item/clothing/head/helmet/combat/crusader_costume = 200,
+ /obj/item/clothing/head/helmet/combat/bedevere_costume = 200,
+ /obj/item/clothing/gloves/combat/knight_costume = 200,
+ /obj/item/clothing/gloves/combat/knight_costume/brown = 200,
+ /obj/item/clothing/shoes/knight_costume = 200,
+ /obj/item/clothing/shoes/knight_costume/black = 200)
+ premium = list(/obj/item/clothing/suit/imperium_monk = 3,
+ /obj/item/clothing/suit/barding/agatha = 2,
+ /obj/item/clothing/suit/barding/alt_agatha = 2,
+ /obj/item/clothing/suit/barding/mason = 2,
+ /obj/item/clothing/suit/drake_cloak = 2)
+ contraband = list(/obj/item/clothing/head/syndicatefake = 1,
+ /obj/item/clothing/suit/syndicatefake = 1)
+
/obj/machinery/vending/entertainer
name = "Thespian's Delight"
desc = "Sometimes nerds need costumes!"
@@ -1511,8 +3877,8 @@
/obj/item/clothing/under/color/yellow = 5,
/obj/item/clothing/shoes/black = 5,
/obj/item/clothing/shoes/white = 5,
- /obj/item/clothing/suit/storage/hooded/carp_costume = 3,
- /obj/item/clothing/suit/storage/hooded/carp_costume = 3,
+ /obj/item/clothing/suit/storage/hooded/costume/carp = 3,
+ /obj/item/clothing/suit/storage/hooded/costume/carp = 3,
/obj/item/clothing/suit/chickensuit = 3,
/obj/item/clothing/head/chicken = 3,
/obj/item/clothing/head/helmet/gladiator = 3,
@@ -2259,8 +4625,8 @@
product_ads = "Don't let your art be stifled!;Remember, practice makes perfect!;Break a leg!;Don't make me get the cane!;Thespian's Delight entering stage right!;Costumes for your acting needs!"
icon = 'icons/obj/vending.dmi'
icon_state = "theater"
- products = list(/obj/item/clothing/suit/storage/hooded/carp_costume = 3,
- /obj/item/clothing/suit/storage/hooded/carp_costume = 3,
+ products = list(/obj/item/clothing/suit/storage/hooded/costume/carp = 3,
+ /obj/item/clothing/suit/storage/hooded/costume/carp = 3,
/obj/item/clothing/suit/chickensuit = 3,
/obj/item/clothing/head/chicken = 3,
/obj/item/clothing/head/helmet/gladiator = 3,
diff --git a/icons/inventory/head/item.dmi b/icons/inventory/head/item.dmi
index 35a07f74bf..69c053540d 100644
Binary files a/icons/inventory/head/item.dmi and b/icons/inventory/head/item.dmi differ
diff --git a/icons/inventory/head/mob.dmi b/icons/inventory/head/mob.dmi
index 1e8a6315bd..c75e89c28a 100644
Binary files a/icons/inventory/head/mob.dmi and b/icons/inventory/head/mob.dmi differ
diff --git a/icons/inventory/suit/item.dmi b/icons/inventory/suit/item.dmi
index 6390e02435..beb1f9c3a7 100644
Binary files a/icons/inventory/suit/item.dmi and b/icons/inventory/suit/item.dmi differ
diff --git a/icons/inventory/suit/mob.dmi b/icons/inventory/suit/mob.dmi
index 8736d3d420..a313002203 100644
Binary files a/icons/inventory/suit/mob.dmi and b/icons/inventory/suit/mob.dmi differ
diff --git a/maps/gateway_archive_vr/zoo.dmm b/maps/gateway_archive_vr/zoo.dmm
index 3ed7fe26f8..40a2d0ef1b 100644
--- a/maps/gateway_archive_vr/zoo.dmm
+++ b/maps/gateway_archive_vr/zoo.dmm
@@ -528,8 +528,8 @@
"kh" = (/obj/machinery/vending/food,/turf/simulated/floor/tiled/white,/area/awaymission/zoo)
"ki" = (/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo)
"kj" = (/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/holofloor/beach/sand{icon_state = "dgrass0"},/area/awaymission/zoo)
-"kk" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/hooded/ian_costume,/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo)
-"kl" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/hooded/carp_costume,/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo)
+"kk" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/hooded/costume/ian,/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo)
+"kl" = (/obj/structure/table/rack,/obj/item/clothing/suit/storage/hooded/costume/carp,/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo)
"km" = (/obj/structure/table/rack,/obj/effect/landmark/costume,/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo)
"kn" = (/obj/structure/table/rack,/obj/item/clothing/suit/chickensuit,/obj/item/clothing/head/chicken,/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo)
"ko" = (/obj/structure/table/rack,/obj/item/clothing/head/sombrero,/turf/simulated/floor/holofloor/carpet,/area/awaymission/zoo)
diff --git a/maps/gateway_vr/zoo.dmm b/maps/gateway_vr/zoo.dmm
index 831eae8e7f..19fa7fc4da 100644
--- a/maps/gateway_vr/zoo.dmm
+++ b/maps/gateway_vr/zoo.dmm
@@ -3856,12 +3856,12 @@
/area/awaymission/zoo)
"kk" = (
/obj/structure/table/rack,
-/obj/item/clothing/suit/storage/hooded/ian_costume,
+/obj/item/clothing/suit/storage/hooded/costume/ian,
/turf/simulated/floor/holofloor/carpet,
/area/awaymission/zoo)
"kl" = (
/obj/structure/table/rack,
-/obj/item/clothing/suit/storage/hooded/carp_costume,
+/obj/item/clothing/suit/storage/hooded/costume/carp,
/turf/simulated/floor/holofloor/carpet,
/area/awaymission/zoo)
"km" = (