Sentient Prize rework
Made an automated hub system called SPASM People can volunteer and get chips and a personalized collar that shows their avaliability. Crew can at the hub see who has a collar and if they are available or if owned, by who. Crew can buy a sentient prize and the collar will remotely be updated to reflect owned status. Likewise the personalized prize can buy themself out of the system if they got the chips and aren't owned, else the owner can swipe their collar on the hub and release them. Casino management has full access and can delete entries as well and enable/disable the sales hub. And remember! Its not slavery which is illegal by the admirality law! Its just friendly and fun temporary indentured servitude!~
@@ -1141,3 +1141,217 @@
|
||||
return
|
||||
usr << "<span class='notice'>You set the interval to [interval]</span>"
|
||||
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> ")
|
||||
|
||||
28
code/modules/clothing/under/accessories/accessory_ch.dm
Normal file
@@ -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"
|
||||
BIN
icons/mob/species/teshari/ties_ch.dmi
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 422 B After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 339 B After Width: | Height: | Size: 2.8 KiB |
@@ -2171,6 +2171,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"
|
||||
|
||||