Files
2020-02-16 19:40:21 -08:00

131 lines
3.4 KiB
Plaintext

/atom/var/list/spookTypes = null
/atom/proc/spook_act(type)
//do spooky things
/atom/proc/spook_data(type)
//o no
/atom/proc/spook_getspooks()
if(istext(spookTypes))
spookTypes = splittext( spookTypes, ";" )
return spookTypes
/datum/buildmode/spook
name = "Spook"
desc = {"***********************************************************<br>
Left Mouse Button on turf/mob/obj = Spook it<br>
Right Mouse Button on turf/mob/obj = Select spook<br>
***********************************************************"}
var/activeType
var/activeSpook
var/spookData
click_right(atom/object, var/ctrl, var/alt, var/shift)
if( object.spookTypes )
//var/list/otypes = object.spookTypes
activeSpook = input( "Select a Spook" ) as null|anything in object.spook_getspooks()
activeType = object.type
spookData = object.spook_data( activeSpook )
update_button_text("[activeType]: [activeSpook]")
click_left(atom/object)
if(activeSpook && activeType && (istype( object, activeType ) || (object.spookTypes && activeSpook in object.spook_getspooks())))
object.spook_act( activeSpook, spookData )
/obj/machinery/light/spookTypes = "Break;Set Color"//list("Break", "Set Color")
/obj/machinery/light/spook_data(what)
switch(what)
if("Set Color")
var/ret = input("What color?") as color
return list( hex2num(copytext(ret, 2, 4)) / 255.0, hex2num(copytext(ret, 4, 6)) / 255.0, hex2num(copytext(ret, 6, 8)) / 255.0 )
else
.=..()
/obj/machinery/light/spook_act(what,data)
switch(what)
if("Break")
broken()
if("Set Color")
light.set_color( arglist(data || list(1,1,1)) )
else
..()
/obj/machinery/door/spookTypes = "Open;Close;Toggle"
/obj/machinery/door/spook_act(what, data)
switch(what)
if("Open")
open()
if("Close")
close()
if("Toggle")
if (src.density)
open()
else
close()
else
.=..()
/obj/machinery/door/airlock/spook_getspooks()
return ..() + "Deny Sound"
/obj/machinery/door/airlock/spook_act(what, data)
switch(what)
if("Deny Sound")
play_deny()
else
.=..()
/obj/item/reagent_containers/food/drinks/drinkingglass
spookTypes = "Break"
spook_act(what)
switch(what)
if("Break")
smash()
else
.=..()
/obj/item/device/light/flashlight
spookTypes = "Set Color;Toggle"
spook_data(what)
switch(what)
if("Set Color")
var/ret = input("What color?") as color
return list( hex2num(copytext(ret, 2, 4)) / 255.0, hex2num(copytext(ret, 4, 6)) / 255.0, hex2num(copytext(ret, 6, 8)) / 255.0 )
else
.=..()
spook_act(what,data)
switch(what)
if("Set Color")
light.set_color(arglist( data ))
if("Toggle")
attack_self()
else
.=..()
/obj/storage
spookTypes = "Toggle"
spook_act(what)
switch(what)
if("Toggle")
toggle()
else .=..()
/*/obj/storage/secure
spookTypes = "Toggle;Secure"//just because i'm lazy, don't do this please
spook_act(what)
switch(what)
if("Toggle Lock")
toggle()
else .=..()
*/
/obj/machinery/vending
spookTypes = "Throw Item"
spook_act(what)
switch(what)
if("Throw Item")
throw_item()
else .=..()
/obj/item
spookTypes = "Spook"
spook_act(what)
switch(what)
if("Spook")
var/rdeg = rand(15,30)
animate(src, pixel_y = 32, transform = matrix(rdeg, MATRIX_ROTATE), time = 10, loop = -1, easing = SINE_EASING)
animate(pixel_y = 0, transform = matrix(rdeg * -1, MATRIX_ROTATE), time = 10, loop = -1, easing = SINE_EASING)
else .=..()