Files
Guti e9d2322565 Makes material costs use sheets amount define (#19584)
* Material defines

* Move these

* Food sytnhetizer

---------

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
2026-07-09 18:24:13 -04:00

52 lines
1.5 KiB
Plaintext

/obj/item/motiontracker
name = "Motion Tracker"
desc = "The \"Vibromaster V1.7\", a handheld motion tracker. Often picks up nearby vibrations as motion however."
icon = 'icons/obj/device_alt.dmi'
icon_state = "pinoff"
item_state = "analyzer"
w_class = ITEMSIZE_SMALL
slot_flags = SLOT_BELT
throwforce = 5
throw_speed = 4
throw_range = 20
matter = list(MAT_STEEL = MATERIAL_COST(0.015),MAT_GLASS = MATERIAL_COST(0.01))
pickup_sound = 'sound/items/pickup/device.ogg'
drop_sound = 'sound/items/drop/device.ogg'
/obj/item/motiontracker/Initialize(mapload)
RegisterSignal(SSmotiontracker, COMSIG_MOVABLE_MOTIONTRACKER, PROC_REF(handle_motion_tracking))
. = ..()
if(ismob(loc))
var/mob/M = loc
M.motiontracker_subscribe()
/obj/item/motiontracker/Destroy(force, ...)
if(ismob(loc))
var/mob/M = loc
M.motiontracker_unsubscribe()
UnregisterSignal(SSmotiontracker, COMSIG_MOVABLE_MOTIONTRACKER)
. = ..()
/obj/item/motiontracker/proc/handle_motion_tracking(mob/source, datum/weakref/RW, turf/T)
SIGNAL_HANDLER
SHOULD_NOT_OVERRIDE(TRUE)
PRIVATE_PROC(TRUE)
var/atom/echo_source = RW?.resolve()
var/atom/scan_pos = src
if(!isturf(loc))
scan_pos = loc
if(!echo_source || get_dist(scan_pos,echo_source) > SSmotiontracker.max_range || scan_pos.z != echo_source.z)
return
flick("pinondirect",src)
/obj/item/motiontracker/Moved(atom/old_loc, direction, forced, movetime)
. = ..()
if(ismob(old_loc))
var/mob/M = old_loc
M.motiontracker_unsubscribe()
if(ismob(loc))
var/mob/M = loc
M.motiontracker_subscribe()