Removes the Crystal Therapy Pod (#15019)

This commit is contained in:
SleepyGemmy
2022-11-08 16:35:28 +01:00
committed by GitHub
parent a8e8ba0073
commit dca36e6221
5 changed files with 7 additions and 424 deletions
@@ -172,26 +172,6 @@
"/obj/item/stock_parts/capacitor" = 2,
"/obj/item/stock_parts/scanning_module" = 1)
/obj/item/circuitboard/crystelpodconsole
name = T_BOARD("Crystal Therapy Pod Console")
desc = "The circuitboard for a crystal therapy pod console."
build_path = /obj/machinery/chakraconsole
origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/stock_parts/scanning_module" = 2,
"/obj/item/stock_parts/capacitor" = 1)
/obj/item/circuitboard/crystelpod
name = T_BOARD("Crystal Therapy Pod")
desc = "The circuitboard for a crystal therapy pod."
build_path = /obj/machinery/chakrapod
origin_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
board_type = "machine"
req_components = list(
"/obj/item/stock_parts/scanning_module" = 2,
"/obj/item/stock_parts/capacitor" = 2)
/obj/item/circuitboard/weapons_analyzer
name = T_BOARD("Weapons Analyzer")
desc = "The circuitboard for a weapons analyzer."
+1 -394
View File
@@ -214,397 +214,4 @@
else
ticktock = "Tick"
to_chat(H, "<span class='notice'><i>[ticktock]. . .</i></span>")
sound_to(H, 'sound/effects/singlebeat.ogg')
/obj/machinery/chakrapod
name = "Crystal Therapy Pod"
desc = "A state-of-the-art crystal therapy pod. Designed to utilize phoron enhanced quartz crystals to remove mental trauma from the body. Proven to be 100% effective 30% of the time!"
icon = 'icons/obj/sleeper.dmi'
icon_state = "sleeper_s"
density = 1
anchored = 1
idle_power_usage = 60
active_power_usage = 10000
var/datum/weakref/occupant = null
var/locked
var/obj/machinery/chakraconsole/connected
component_types = list(
/obj/item/circuitboard/crystelpod,
/obj/item/stock_parts/capacitor = 2,
/obj/item/stock_parts/scanning_module = 2
)
/obj/machinery/chakrapod/Destroy()
if (connected)
connected.connected = null
connected = null
occupant = null
return ..()
/obj/machinery/chakrapod/relaymove(mob/user as mob)
if (user.stat)
return
src.go_out()
return
/obj/machinery/chakrapod/update_icon()
if(occupant)
icon_state = "[initial(icon_state)]-closed"
return
else
icon_state = initial(icon_state)
/obj/machinery/chakrapod/verb/eject()
set src in oview(1)
set category = "Object"
set name = "Eject Crystal Therapy Pod"
if (usr.stat != 0)
return
src.go_out()
add_fingerprint(usr)
return
/obj/machinery/chakrapod/verb/move_inside()
set src in oview(1)
set category = "Object"
set name = "Enter Crystal Therapy Pod"
if (usr.stat != 0 || locked)
return
if (occupant.resolve())
to_chat(usr, "<span class='warning'>The pod is already occupied!</span>")
return
if (usr.abiotic())
to_chat(usr, "<span class='warning'>The subject cannot have abiotic items on.</span>")
return
if(locked)
to_chat(usr, "<span class='warning'>The pod is currently locked!</span>")
return
if(!ishuman(usr))
to_chat(usr, "<span class='warning'>The subject does not fit!</span>")
return
usr.pulling = null
usr.client.perspective = EYE_PERSPECTIVE
usr.client.eye = src
usr.forceMove(src)
src.occupant = WEAKREF(usr)
update_use_power(POWER_USE_ACTIVE)
flick("[initial(icon_state)]-anim", src)
update_icon()
src.add_fingerprint(usr)
return
/obj/machinery/chakrapod/proc/go_out()
if (!src.occupant || !occupant.resolve())
occupant = null
return
var/mob/living/carbon/human/H = occupant.resolve()
if(locked)
to_chat(H, "<span class='notice'>You push against the pod door and attempt to escape. This process will take roughly two minutes.</span>")
if(!do_after(H, 1200))
return
if (H.client)
H.client.eye = H.client.mob
H.client.perspective = MOB_PERSPECTIVE
H.forceMove(get_turf(src))
occupant = null
update_use_power(POWER_USE_IDLE)
flick("[initial(icon_state)]-anim", src)
update_icon()
return
/obj/machinery/chakrapod/attackby(obj/item/grab/G, mob/user)
if (!istype(G) || !ishuman(G.affecting))
return
if (occupant)
to_chat(user, "<span class='warning'>The pod is already occupied!</span>")
return
if (G.affecting.abiotic())
to_chat(user, "<span class='warning'>Subject cannot have abiotic items on.</span>")
return
if(locked)
to_chat(user, "<span class='warning'>The pod is locked.</span>")
return
var/mob/living/L = G.affecting
var/bucklestatus = L.bucklecheck(user)
if (!bucklestatus)
return
user.visible_message("<span class='notice'>[user] starts putting [L] into [src].</span>", "<span class='notice'>You start putting [L] into [src].</span>", range = 3)
if (do_mob(user, L, 30, needhand = 0))
if (L.client)
L.client.perspective = EYE_PERSPECTIVE
L.client.eye = src
L.forceMove(src)
occupant = WEAKREF(L)
update_use_power(POWER_USE_ACTIVE)
flick("[initial(icon_state)]-anim", src)
update_icon()
src.add_fingerprint(user)
qdel(G)
return
/obj/machinery/chakrapod/MouseDrop_T(mob/living/carbon/human/H, mob/living/user)
if(!istype(user) || !istype(H))
return
if (occupant)
to_chat(user, "<span class='notice'><B>The pod is already occupied!</B></span>")
return
if (H.abiotic())
to_chat(user, "<span class='notice'><B>Subject cannot have abiotic items on.</B></span>")
return
if(locked)
to_chat(user, "<span class='warning'>The pod is locked.</span>")
return
var/bucklestatus = H.bucklecheck(user)
if (!bucklestatus)
return
if(H == user)
user.visible_message("<span class='notice'>[user] starts climbing into [src].</span>", "<span class='notice'>You start climbing into [src].</span>", range = 3)
else
user.visible_message("<span class='notice'>[user] starts putting [H] into [src].</span>", "<span class='notice'>You start putting [H] into [src].</span>", range = 3)
if (do_mob(user, H, 30, needhand = 0))
if (bucklestatus == 2)
var/obj/structure/LB = H.buckled_to
LB.user_unbuckle(user)
if (H.client)
H.client.perspective = EYE_PERSPECTIVE
H.client.eye = src
H.forceMove(src)
occupant = WEAKREF(H)
update_use_power(POWER_USE_ACTIVE)
flick("[initial(icon_state)]-anim", src)
update_icon()
src.add_fingerprint(user)
return
/obj/machinery/chakraconsole
name = "Therapy Pod Console"
desc = "An advanced control panel that can be used to interface with a connected therapy pod."
icon = 'icons/obj/sleeper.dmi'
icon_state = "sleeper_s_scannerconsole"
density = 0
anchored = 1
var/obj/machinery/chakrapod/connected
var/crystal = 0
var/working = 0
component_types = list(
/obj/item/circuitboard/crystelpodconsole,
/obj/item/stock_parts/capacitor = 1,
/obj/item/stock_parts/scanning_module = 2
)
/obj/machinery/chakraconsole/ex_act(severity)
switch(severity)
if(1.0)
qdel(src)
return
if(2.0)
if (prob(50))
qdel(src)
return
else
return
/obj/machinery/chakraconsole/Destroy()
if (connected)
connected.connected = null
connected = null
return ..()
/obj/machinery/chakraconsole/power_change()
..()
update_icon()
/obj/machinery/chakraconsole/update_icon()
cut_overlays()
if((stat & BROKEN) || (stat & NOPOWER))
return
else
var/mutable_appearance/screen_overlay = mutable_appearance(icon, "sleeper_s_scannerconsole-screen", EFFECTS_ABOVE_LIGHTING_LAYER)
add_overlay(screen_overlay)
set_light(1.4, 1, COLOR_RED)
/obj/machinery/chakraconsole/Initialize()
. = ..()
for(var/obj/machinery/chakrapod/C in orange(1,src))
connected = C
break
if(connected)
connected.connected = src
update_icon()
/obj/machinery/chakraconsole/Destroy()
if (connected)
connected.connected = null
connected = null
. = ..()
/obj/machinery/chakraconsole/attack_ai(user as mob)
if(!ai_can_interact(user))
return
return src.attack_hand(user)
/obj/machinery/chakraconsole/attack_hand(user as mob)
if(..())
return
button_prompt(user)
/obj/machinery/chakraconsole/emag_act(var/remaining_charges, var/mob/user)
if(!emagged)
to_chat(user, "<span class='warning'>You short out [src]'s safety measurements.</span>")
visible_message("[src] hums oddly...")
emagged = 1
return 1
/obj/machinery/chakraconsole/proc/button_prompt(user as mob)
var/mob/living/carbon/human/H = connected && connected.occupant ? connected.occupant.resolve() : null
if(!H)
to_chat(user, "<span class='notice'>The pod is currently unoccupied.</span>")
else
var/list/choices1 = list("Therapy Pod", "Toggle Locking Mechanism", "Initiate Neural Scan", "Initiate Crystal Therapy", "Recycle Crystal", "Cancel")
if(emagged)
choices1.Add("%eRr:# C:\\NT>quaid.exe")
var/response1 = input(user,"Input Operation","Therapy Pod OS") as null|anything in choices1
switch(response1)
if("Toggle Locking Mechanism")
connected.locked = !connected.locked
visible_message("<span class='warning'>[connected]'s locking mechanism clicks.</span>", "<span class='warning'>You hear a click.</span>")
return
if("Initiate Neural Scan")
visible_message("<span class='warning'>[connected] begins humming with an electrical tone.</span>", "<span class='warning'>You hear an electrical humming.</span>")
if(H && connected.occupant.resolve() == H)
var/obj/item/organ/internal/brain/sponge = H.internal_organs_by_name[BP_BRAIN]
var/braindamage = H.getBrainLoss()
if(sponge && istype(sponge))
if(!sponge.prepared)
to_chat(user, "<span class='notice'>Scans indicate [braindamage] distinct abnormalities present in subject.</span>")
return
else
to_chat(user, "<span class='notice'>Scans indicate [braindamage+rand(-20,20)] distinct abnormalities present in subject.</span>")
return
to_chat(user, "<span class='warning'>Scans indicate total brain failure in subject.</span>")
return
if("Initiate Crystal Therapy")
if(!crystal)
neural_check(user, H)
return
to_chat(user, "<span class='danger'>Error: Crystal depleted. Terminating operation..</span>")
playsound(src, 'sound/machines/buzz-two.ogg', 50, 1)
visible_message("<span class='warning'>[connected] buzzes harshly.</span>", "<span class='warning'>You hear a sharp buzz.</span>")
if("%eRr:# C:\\NT>quaid.exe")
if(!crystal)
total_recall(user, H)
return
to_chat(user, "<span class='danger'>Error: Crystal depleted. Terminating operation..</span>")
playsound(src, 'sound/machines/buzz-two.ogg', 50, 1)
visible_message("<span class='warning'>[connected] buzzes harshly.</span>", "<span class='warning'>You hear a sharp buzz.</span>")
if("Recycle Crystal")
if(crystal)
to_chat(user, "<span class='warning'>Eliminating depleted crystal.</span>")
playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1)
sleep(100)
crystal = 0
visible_message("<span class='notice'>[connected] pings cheerfully.</span>", "<span class='notice'>You hear a ping.</span>")
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
return
to_chat(user, "<span class='danger'>Error: Crystal depletion not detected. Terminating operation..</span>")
playsound(src, 'sound/machines/buzz-two.ogg', 50, 1)
visible_message("<span class='warning'>[connected] buzzes harshly.</span>", "<span class='warning'>You hear a sharp buzz.</span>")
/obj/machinery/chakraconsole/proc/neural_check(var/mob/user, var/mob/living/carbon/human/H)
var/response = input(user,"Input number of rotations","Therapy Pod","0")
var/alert = text2num(sanitize(response))
if(!alert)
to_chat(user, "<span class='warning'>Error. Invalid input.</span>")
return
for(var/i=0;i<alert;i++)
sleep(100)
var/electroshock_trauma = 0
if(!H || H != connected.occupant.resolve())
if(get_dist(user,src) <= 1)
to_chat(user, "<span class='danger'>Error: Subject not recognized. Terminating operation.</span>")
playsound(src, 'sound/machines/buzz-two.ogg', 50, 1)
visible_message("<span class='warning'>[connected] buzzes harshly.</span>", "<span class='warning'>You hear a sharp buzz.</span>")
break
var/obj/item/organ/internal/brain/sponge = H.internal_organs_by_name[BP_BRAIN]
if (!istype(sponge))
if(get_dist(user,src) <= 1)
to_chat(user, "<span class='danger'>Error: Subject not recognized. Terminating operation.</span>")
playsound(src, 'sound/machines/buzz-two.ogg', 50, 1)
visible_message("<span class='warning'>[connected] buzzes harshly.</span>", "<span class='warning'>You hear a sharp buzz.</span>")
break
if(electroshock_trauma)
visible_message("<span class='notice'>[connected] pings cheerfully.</span>", "<span class='notice'>You hear a ping.</span>")
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
else
if(get_dist(user,src) <= 1)
to_chat(user, "<span class='danger'>Error: Brain abnormality not recognized. Subject contamination detected.</span>")
playsound(src, 'sound/machines/buzz-two.ogg', 50, 1)
visible_message("<span class='warning'>[connected] buzzes harshly.</span>", "<span class='warning'>You hear a sharp buzz.</span>")
H.apply_radiation(max(1,i))
/obj/machinery/chakraconsole/proc/total_recall(var/mob/user, var/mob/living/carbon/human/H)
if(H && H == connected.occupant.resolve())
var/list/choices1 = list("Wipe Memory", "Implant Memory", "Cancel")
var/response1 = input(user,"Input operation.","quaid.exe") as null|anything in choices1
if(response1 == "Cancel")
return
if(response1 == "Wipe Memory")
var/list/choices2 = list("5 minutes", "15 minutes", "30 minutes", "2 hours", "6 months", "Cancel")
var/response2 = input(user,"Input timeframe.","Memory Wipe") as null|anything in choices2
if(response2 != "Cancel")
to_chat(user, "<span class='notice'>Initiating memory wipe. Process will take approximately two minutes.</span>")
to_chat(H, "<span class='danger'>You feel a sharp pain in your brain as the therapy pod begins to hum menacingly!!</span>")
sleep(1200-rand(0,150))
if(H && H == connected.occupant.resolve())
var/timespan = response2
to_chat(H, "<span class='danger'>You feel a part of your past self, a portion of your memories, a piece of your very being slip away...</span>")
to_chat(H, "<b>Your memory of the past [timespan] has been wiped. Your ability to recall these past [timespan] has been removed from your brain, and you remember nothing that ever ocurred within those [timespan].</b>")
crystal = 1
return
else
return
if(response1 == "Implant Memory")
var/new_memory = input(user,"Input New Memory","quaid.exe")
var/memory_implant = sanitize(new_memory)
if(memory_implant)
to_chat(user, "<span class='notice'>Initiating memory implantation. Process will take approximately two minutes. Subject's memory of this process will also be wiped.</span>")
to_chat(H, "<span class='danger'>You feel a sharp pain in your brain as the therapy pod begins to hum menacingly!</span>")
sleep(1200-rand(0,150))
if(H && H == connected.occupant.resolve())
to_chat(H, "<span class='danger'>You blink, and somehow between the timespan of your eyes closing and your eyes opening your perception of the world has changed in some imperceptible way...</span>")
to_chat(H, "<b>A new memory has been implanted in your mind as follows: [memory_implant] - you have no reason to suspect the memory to be fabricated, as your memory of the past two minutes has also been altered.</b>")
crystal = 1
return
if(get_dist(user,src) <= 1)
to_chat(user, "<span class='danger'>Error: Operation failed. Terminating operation.</span>")
playsound(src, 'sound/machines/buzz-two.ogg', 50, 1)
visible_message("<span class='warning'>[connected] buzzes harshly.</span>", "<span class='warning'>You hear a sharp buzz.</span>")
sound_to(H, 'sound/effects/singlebeat.ogg')