mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-22 23:51:55 +00:00
bring code up to latest standards, move many procs to named files inside _HELPERS no idea where to put some of these procs, help is appreciated made more files to contain some unique code, deleted unsorted.dm, we can rest now
40 lines
1.2 KiB
Plaintext
40 lines
1.2 KiB
Plaintext
/datum/component/tether
|
|
dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
|
|
var/atom/tether_target
|
|
var/max_dist
|
|
var/tether_name
|
|
|
|
/datum/component/tether/Initialize(atom/tether_target, max_dist = 4, tether_name)
|
|
if(!isliving(parent) || !istype(tether_target) || !tether_target.loc)
|
|
return COMPONENT_INCOMPATIBLE
|
|
src.tether_target = tether_target
|
|
src.max_dist = max_dist
|
|
if (ispath(tether_name, /atom))
|
|
var/atom/tmp = tether_name
|
|
src.tether_name = initial(tmp.name)
|
|
else
|
|
src.tether_name = tether_name
|
|
RegisterSignal(parent, list(COMSIG_MOVABLE_PRE_MOVE), .proc/checkTether)
|
|
|
|
/datum/component/tether/proc/checkTether(mob/mover, newloc)
|
|
SIGNAL_HANDLER
|
|
|
|
if (get_dist(mover,newloc) > max_dist)
|
|
to_chat(mover, span_userdanger("The [tether_name] runs out of slack and prevents you from moving!"))
|
|
return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
|
|
|
|
var/atom/blocker
|
|
out:
|
|
for(var/turf/T in get_line(tether_target,newloc))
|
|
if (T.density)
|
|
blocker = T
|
|
break out
|
|
for(var/a in T)
|
|
var/atom/A = a
|
|
if(A.density && A != mover && A != tether_target)
|
|
blocker = A
|
|
break out
|
|
if (blocker)
|
|
to_chat(mover, span_userdanger("The [tether_name] catches on [blocker] and prevents you from moving!"))
|
|
return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
|