/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 = {"***********************************************************
Left Mouse Button on turf/mob/obj = Spook it
Right Mouse Button on turf/mob/obj = Select spook
***********************************************************"} 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 .=..()