mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Merge pull request #2643 from Shadowfire117/sentientprizework
Casino Sentient Prize Rework
This commit is contained in:
@@ -1140,4 +1140,218 @@
|
||||
usr << "<span class='notice'>Invalid interval.</span>"
|
||||
return
|
||||
usr << "<span class='notice'>You set the interval to [interval]</span>"
|
||||
return
|
||||
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,"<span class='notice'>The SPASM is disabled.</span> ")
|
||||
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, "<span class='warning'>No collar is currently selected or the currently selected one has been destroyed or disabled.</span>")
|
||||
selected_collar = null
|
||||
return
|
||||
to_chat(user, "<span class='warning'>Sentient Prize information</span>")
|
||||
to_chat(user, "<span class='notice'>Name: [selected_collar.slavename]</span>")
|
||||
to_chat(user, "<span class='notice'>Description: [selected_collar.slaveflavor]</span>")
|
||||
to_chat(user, "<span class='notice'>OOC: [selected_collar.slaveooc]</span>")
|
||||
if(selected_collar.ownername != null)
|
||||
to_chat(user, "<span class='warning'>This prize is already owned by [selected_collar.ownername]</span>")
|
||||
|
||||
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, "<span class='warning'>No collars to chose, or selected collar has been destroyed or deactived, selection has been removed from list.</span>")
|
||||
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, "<span class='warning'>The SPASM beeps in an upset manner, you already have a collar!</span>")
|
||||
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, "<span class='warning'>You are now a prize!</span>")
|
||||
if(safety_ckey in slaves_ckeys_list)
|
||||
to_chat(user, "<span class='warning'>The SPASM beeps in an upset manner, you already have a collar!</span>")
|
||||
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, "<span class='warning'>Sentient Prize sales are currently disabled.</span>")
|
||||
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, "<span class='warning'>This Sentient Prize is already owned! If you are the owner you can release the prize by swiping the collar on the SPASM!</span>")
|
||||
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, "<span class='warning'>This Sentient Prize collar isn't yours, please give it to the one it tagged for, belongs to, or a casino staff member!</span>")
|
||||
return
|
||||
if(user.name == C.slavename)
|
||||
if(!C.ownername)
|
||||
to_chat(user,"<span class='notice'>If collar isn't disabled and entry removed, please select your entry and insert chips. Or contact staff if you need assistance.</span> ")
|
||||
return
|
||||
else
|
||||
to_chat(user,"<span class='notice'>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.</span> ")
|
||||
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, "<span class='warning'>[C.slavename] collar has been deleted from registry!</span>")
|
||||
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, "<span class='warning'>Access Denied.</span>")
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Proper access, allowed staff controls.</span>")
|
||||
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,"<span class='notice'>Prize sale has been enabled.</span> ")
|
||||
else
|
||||
casinoslave_sale = "disabled"
|
||||
icon_state = "casinoslave_hub_off"
|
||||
update_icon()
|
||||
to_chat(user,"<span class='notice'>Prize sale has been disabled.</span> ")
|
||||
|
||||
if("Wipe Selected Prize Entry")
|
||||
if(!selected_collar)
|
||||
to_chat(user, "<span class='warning'>No collar selected!</span>")
|
||||
return
|
||||
if(QDELETED(selected_collar))
|
||||
collar_list -= selected_collar
|
||||
slaves_ckeys_list -= selected_collar.slaveckey
|
||||
to_chat(user, "<span class='warning'>Collar has been destroyed!</span>")
|
||||
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, "<span class='warning'>[selected_collar.slavename] collar has been deleted from registry!</span>")
|
||||
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, "<span class='warning'>Registry deletion aborted! Changed collar selection!</span>")
|
||||
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,"<span class='notice'>You dont have enough chips to pay for the sentient prize!</span> ")
|
||||
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,"<span class='notice'>You put [casinoslave_price] credits worth of chips into the SPASM and nullify your collar!</span> ")
|
||||
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,"<span class='notice'>You put [casinoslave_price] credits worth of chips into the SPASM and it pings to inform you bought [selected_collar.slavename]!</span> ")
|
||||
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,"<span class='notice'>Invalid price.</span> ")
|
||||
return
|
||||
to_chat(user,"<span class='notice'>You set the price to [casinoslave_price]</span> ")
|
||||
|
||||
Reference in New Issue
Block a user