diff --git a/code/game/machinery/casino_ch.dm b/code/game/machinery/casino_ch.dm index 1c39d2221c..354c309366 100644 --- a/code/game/machinery/casino_ch.dm +++ b/code/game/machinery/casino_ch.dm @@ -1140,4 +1140,218 @@ usr << "Invalid interval." return usr << "You set the interval to [interval]" - return \ No newline at end of file + return + +/obj/machinery/casinoslave_handler + name = "Sentient Prize Automated Sales Machinery" + desc = "The Sentient Prize Automated Sales Machinery, also known as SPASM! Here one can see who is on sale as sentinet prizes, as well as selling self and also buying prizes." + icon = 'icons/obj/casino_ch.dmi' + icon_state = "casinoslave_hub_off" + density = 1 + anchored = 1 + req_access = list(300) + + var/casinoslave_sale = "disabled" + var/casinoslave_price = 100 + var/collar_list = list() + var/slaves_ckeys_list = list() //Same trick as lottery, to keep life simple + var/obj/item/clothing/accessory/collar/casinoslave/selected_collar = null + +/obj/machinery/casinoslave_handler/attack_hand(mob/living/user as mob) + if(usr.incapacitated()) + return + if(casinoslave_sale == "disabled") + to_chat(user,"The SPASM is disabled. ") + return + + if(ishuman(usr) || istype(usr, /mob/living/silicon/robot)) + switch(input(user,"Choose what to do","SPASM") in list("Show selected Prize", "Select Prize", "Become Prize (Please examine yourself first)", "Cancel")) + if("Cancel") + return + if("Show selected Prize") + if(QDELETED(selected_collar)) + collar_list -= selected_collar + slaves_ckeys_list -= selected_collar.slaveckey + to_chat(user, "No collar is currently selected or the currently selected one has been destroyed or disabled.") + selected_collar = null + return + to_chat(user, "Sentient Prize information") + to_chat(user, "Name: [selected_collar.slavename]") + to_chat(user, "Description: [selected_collar.slaveflavor]") + to_chat(user, "OOC: [selected_collar.slaveooc]") + if(selected_collar.ownername != null) + to_chat(user, "This prize is already owned by [selected_collar.ownername]") + + if("Select Prize") + selected_collar = tgui_input_list(user, "Select a prize", "Chose a collar", collar_list) + if(QDELETED(selected_collar)) + collar_list -= selected_collar + slaves_ckeys_list -= selected_collar.slaveckey + to_chat(user, "No collars to chose, or selected collar has been destroyed or deactived, selection has been removed from list.") + selected_collar = null + return + + if("Become Prize (Please examine yourself first)") //Its awkward, but no easy way to obtain flavor_text due to server not loading text of mob until its been examined at least once. + var/safety_ckey = user.client.ckey + if(safety_ckey in slaves_ckeys_list) + to_chat(user, "The SPASM beeps in an upset manner, you already have a collar!") + return + var/confirm = tgui_alert(usr, "Are you sure you want to become a sentient prize?", "Confirm Sentient Prize", list("Yes", "No")) + if(confirm == "Yes") + to_chat(user, "You are now a prize!") + if(safety_ckey in slaves_ckeys_list) + to_chat(user, "The SPASM beeps in an upset manner, you already have a collar!") + return + slaves_ckeys_list += user.ckey + var/obj/item/clothing/accessory/collar/casinoslave/C = new(src.loc) + C.slavename = "[user.name]" + C.slaveckey = "[user.ckey]" + C.slaveflavor = user.flavor_text + C.slaveooc = user.ooc_notes + C.name = "Sentient Prize Collar: Available! [user.name] purchaseable at the SPASM!" + C.desc = "Golden Goose Sentient Prize collar. The tags shows in flashy colorful text the wearer is [user.name] and is currently available to buy at the Sentient Prize Automated Sales Machinery!" + C.icon_state = "casinoslave_available" + C.update_icon() + collar_list += C + + spawn_casinochips(casinoslave_price, src.loc) + +/obj/machinery/casinoslave_handler/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(usr.incapacitated()) + return + + if(istype(W, /obj/item/weapon/spacecasinocash)) + if(casinoslave_sale == "disabled") + to_chat(user, "Sentient Prize sales are currently disabled.") + return + if(!selected_collar.ownername) + var/obj/item/weapon/spacecasinocash/C = W + if(user.client.ckey == selected_collar.slaveckey) + insert_chip(C, user, "selfbuy") + return + else + insert_chip(C, user, "buy") + return + else + to_chat(user, "This Sentient Prize is already owned! If you are the owner you can release the prize by swiping the collar on the SPASM!") + return + + if(istype(W, /obj/item/clothing/accessory/collar/casinoslave)) + var/obj/item/clothing/accessory/collar/casinoslave/C = W + if(user.name != C.slavename && user.name != C.ownername) + to_chat(user, "This Sentient Prize collar isn't yours, please give it to the one it tagged for, belongs to, or a casino staff member!") + return + if(user.name == C.slavename) + if(!C.ownername) + to_chat(user,"If collar isn't disabled and entry removed, please select your entry and insert chips. Or contact staff if you need assistance. ") + return + else + to_chat(user,"If collar isn't disabled and entry removed, please ask your owner to free you with collar swipe on the SPASM, or contact staff if you need assistance. ") + return + if(user.name == C.ownername) + var/confirm = tgui_alert(usr, "Are you sure you want to wipe [C.slavename] entry?", "Confirm Sentient Prize Release", list("Yes", "No")) + if(confirm == "Yes") + to_chat(user, "[C.slavename] collar has been deleted from registry!") + C.icon_state = "casinoslave" + C.update_icon() + C.name = "a disabled Sentient Prize Collar: [C.slavename]" + C.desc = "A collar worn by sentient prizes on the Golden Goose Casino. The tag says its registered to [C.slavename], but harsh red text informs you its been disabled." + slaves_ckeys_list -= C.slaveckey + C.slaveckey = null + collar_list -= C + + if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) + if(!check_access(W)) + to_chat(user, "Access Denied.") + return + else + to_chat(user, "Proper access, allowed staff controls.") + if(ishuman(usr) || istype(usr, /mob/living/silicon/robot)) + switch(input(user,"Choose what to do (Management)","SPASM (Management)") in list("Toggle Sentient Prize Sales", "Wipe Selected Prize Entry", "Change Prize Value", "Cancel")) + if("Cancel") + return + + if("Toggle Sentient Prize Sales") + if(casinoslave_sale == "disabled") + casinoslave_sale = "enabled" + icon_state = "casinoslave_hub_on" + update_icon() + to_chat(user,"Prize sale has been enabled. ") + else + casinoslave_sale = "disabled" + icon_state = "casinoslave_hub_off" + update_icon() + to_chat(user,"Prize sale has been disabled. ") + + if("Wipe Selected Prize Entry") + if(!selected_collar) + to_chat(user, "No collar selected!") + return + if(QDELETED(selected_collar)) + collar_list -= selected_collar + slaves_ckeys_list -= selected_collar.slaveckey + to_chat(user, "Collar has been destroyed!") + selected_collar = null + return + var/safety_ckey = selected_collar.slaveckey + var/confirm = tgui_alert(usr, "Are you sure you want to wipe [selected_collar.slavename] entry?", "Confirm Sentient Prize", list("Yes", "No")) + if(confirm == "Yes") + if(safety_ckey == selected_collar.slaveckey) + to_chat(user, "[selected_collar.slavename] collar has been deleted from registry!") + selected_collar.icon_state = "casinoslave" + selected_collar.update_icon() + selected_collar.name = "a disabled Sentient Prize Collar: [selected_collar.slavename]" + selected_collar.desc = "A collar worn by sentient prizes on the Golden Goose Casino. The tag says its registered to [selected_collar.slavename], but harsh red text informs you its been disabled." + slaves_ckeys_list -= selected_collar.slaveckey + selected_collar.slaveckey = null + collar_list -= selected_collar + selected_collar = null + else + to_chat(user, "Registry deletion aborted! Changed collar selection!") + return + + if("Change Prize Value") + setprice(user) + +/obj/machinery/casinoslave_handler/proc/insert_chip(var/obj/item/weapon/spacecasinocash/cashmoney, mob/user, var/buystate) + if(cashmoney.worth < casinoslave_price) + to_chat(user,"You dont have enough chips to pay for the sentient prize! ") + return + + cashmoney.worth -= casinoslave_price + cashmoney.update_icon() + + if(cashmoney.worth <= 0) + usr.drop_from_inventory(cashmoney) + qdel(cashmoney) + cashmoney.update_icon() + + if(buystate == "selfbuy") + to_chat(user,"You put [casinoslave_price] credits worth of chips into the SPASM and nullify your collar! ") + selected_collar.icon_state = "casinoslave" + selected_collar.update_icon() + selected_collar.name = "a disabled Sentient Prize Collar: [selected_collar.slavename]" + selected_collar.desc = "A collar worn by sentient prizes on the Golden Goose Casino. The tag says its registered to [selected_collar.slavename], but harsh red text informs you its been disabled." + slaves_ckeys_list -= selected_collar.slaveckey + selected_collar.slaveckey = null + collar_list -= selected_collar + selected_collar = null + + if(buystate == "buy") + to_chat(user,"You put [casinoslave_price] credits worth of chips into the SPASM and it pings to inform you bought [selected_collar.slavename]! ") + selected_collar.icon_state = "casinoslave_owned" + selected_collar.update_icon() + selected_collar.ownername = user.name + selected_collar.name = "Sentient Prize Collar: [selected_collar.slavename] owned by [selected_collar.ownername]!" + selected_collar.desc = "A collar worn by sentient prizes on the Golden Goose Casino. The tag says its registered to [selected_collar.slavename] and they are owned by [selected_collar.ownername]." + selected_collar = null + +/obj/machinery/casinoslave_handler/proc/setprice(mob/living/user as mob) + if(usr.incapacitated()) + return + if(ishuman(usr) || istype(usr, /mob/living/silicon/robot)) + casinoslave_price = input("Select the desired price (1-1000)", "Set Price") as num + if(casinoslave_price>1000 || casinoslave_price<1) + to_chat(user,"Invalid price. ") + return + to_chat(user,"You set the price to [casinoslave_price] ") diff --git a/code/modules/clothing/under/accessories/accessory_ch.dm b/code/modules/clothing/under/accessories/accessory_ch.dm new file mode 100644 index 0000000000..b4ac071330 --- /dev/null +++ b/code/modules/clothing/under/accessories/accessory_ch.dm @@ -0,0 +1,28 @@ +/obj/item/clothing/accessory/collar/casinoslave + name = "a disabled Sentient Prize Collar" + desc = "A collar worn by sentient prizes on the Golden Goose Casino. Although the red text on it shows its disconnected and nonfunctional." + icon = 'icons/obj/clothing/ties_ch.dmi' + icon_override = 'icons/mob/ties_ch.dmi' + + icon_state = "casinoslave" + item_state = "casinoslave" + overlay_state = "casinoslave" + + var/slavename = null //Name for system to put on collar description + var/ownername = null //Name for system to put on collar description + var/slaveckey = null //Ckey for system to check who is the person and ensure no abuse of system or errors + var/slaveflavor = null //Description to show on the SPASM + var/slaveooc = null //OOC text to show on the SPASM + +/obj/item/clothing/accessory/collar/casinoslave/attack_self(mob/user as mob) + //keeping it blank so people don't tag and reset collar status + +/obj/item/clothing/accessory/collar/casinoslave_fake + name = "a Sentient Prize Collar" + desc = "A collar worn by sentient prizes on the Golden Goose Casino. This one has been disconnected from the system and is now an accessory!" + icon = 'icons/obj/clothing/ties_ch.dmi' + icon_override = 'icons/mob/ties_ch.dmi' + + icon_state = "casinoslave_owned" + item_state = "casinoslave_owned" + overlay_state = "casinoslave_owned" \ No newline at end of file diff --git a/icons/mob/species/teshari/ties_ch.dmi b/icons/mob/species/teshari/ties_ch.dmi new file mode 100644 index 0000000000..6c5795a855 Binary files /dev/null and b/icons/mob/species/teshari/ties_ch.dmi differ diff --git a/icons/mob/ties_ch.dmi b/icons/mob/ties_ch.dmi index 0a95c72053..de93c35119 100644 Binary files a/icons/mob/ties_ch.dmi and b/icons/mob/ties_ch.dmi differ diff --git a/icons/obj/casino_ch.dmi b/icons/obj/casino_ch.dmi index fa3fd57f38..aec50dffe8 100644 Binary files a/icons/obj/casino_ch.dmi and b/icons/obj/casino_ch.dmi differ diff --git a/icons/obj/clothing/ties_ch.dmi b/icons/obj/clothing/ties_ch.dmi index 56abd55da2..069850600c 100644 Binary files a/icons/obj/clothing/ties_ch.dmi and b/icons/obj/clothing/ties_ch.dmi differ diff --git a/vorestation.dme b/vorestation.dme index abe612a263..cc2c048af0 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2176,6 +2176,7 @@ #include "code\modules\clothing\under\solgov_vr.dm" #include "code\modules\clothing\under\syndicate.dm" #include "code\modules\clothing\under\accessories\accessory.dm" +#include "code\modules\clothing\under\accessories\accessory_ch.dm" #include "code\modules\clothing\under\accessories\accessory_vr.dm" #include "code\modules\clothing\under\accessories\accessory_yw.dm" #include "code\modules\clothing\under\accessories\armband.dm"