mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 00:29:02 +01:00
Tether improvements and fixes (#89174)
## About The Pull Request Fixes tether stacking via beacons, you can freely cut your tether while moving, and cutting/snapping MODsuit tethers now also snaps the beacon they're connected to if said beacon was generated by a MODsuit projectile. Retracting the gloves or deactivating your MODsuit also snaps MODtethers you've created using it. Closes #88869 Closes #88866 Closes #89170 ## Changelog 🆑 qol: Snapping tethers now also removes their beacons qol: You can now cut tethers that you're attached to while in motion qol: Tethers now snap when you retract your gloves or disable your MODsuit fix: Fixed tether stacking issues /🆑
This commit is contained in:
@@ -62,6 +62,7 @@
|
||||
|
||||
if (!isnull(parent_module))
|
||||
RegisterSignals(parent_module, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED, COMSIG_MOD_TETHER_SNAP), PROC_REF(snap))
|
||||
RegisterSignal(parent_module, COMSIG_MODULE_TRIGGERED, PROC_REF(on_parent_use))
|
||||
|
||||
/datum/component/tether/UnregisterFromParent()
|
||||
UnregisterSignal(parent, list(COMSIG_MOVABLE_PRE_MOVE, COMSIG_MOVABLE_MOVED))
|
||||
@@ -71,11 +72,13 @@
|
||||
UnregisterSignal(tether_target, list(COMSIG_MOVABLE_PRE_MOVE, COMSIG_MOVABLE_MOVED, COMSIG_QDELETING))
|
||||
if (!isnull(tether_trait_source) && !no_target_trait)
|
||||
REMOVE_TRAIT(tether_target, TRAIT_TETHER_ATTACHED, tether_trait_source)
|
||||
SEND_SIGNAL(tether_target, COMSIG_ATOM_TETHER_SNAPPED, tether_trait_source)
|
||||
if (!QDELETED(tether_beam))
|
||||
UnregisterSignal(tether_beam.visuals, list(COMSIG_CLICK, COMSIG_QDELETING))
|
||||
qdel(tether_beam)
|
||||
if (!QDELETED(embed_target))
|
||||
UnregisterSignal(embed_target, list(COMSIG_ITEM_UNEMBEDDED, COMSIG_QDELETING))
|
||||
SEND_SIGNAL(parent, COMSIG_ATOM_TETHER_SNAPPED, tether_trait_source)
|
||||
|
||||
/datum/component/tether/proc/check_tether(atom/source, new_loc)
|
||||
SIGNAL_HANDLER
|
||||
@@ -143,6 +146,12 @@
|
||||
playsound(atom_target, 'sound/effects/snap.ogg', 50, TRUE)
|
||||
qdel(src)
|
||||
|
||||
/datum/component/tether/proc/on_parent_use(obj/item/mod/module/module, atom/target)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
if (get_turf(target) == get_turf(tether_target))
|
||||
return MOD_ABORT_USE
|
||||
|
||||
/datum/component/tether/proc/on_delete()
|
||||
SIGNAL_HANDLER
|
||||
qdel(src)
|
||||
@@ -174,7 +183,7 @@
|
||||
var/list/modifiers = params2list(params)
|
||||
if(LAZYACCESS(modifiers, CTRL_CLICK))
|
||||
location.balloon_alert(user, "cutting the tether...")
|
||||
if (!do_after(user, 2 SECONDS, user))
|
||||
if (!do_after(user, 2 SECONDS, user, (user == parent || user == tether_target) ? IGNORE_USER_LOC_CHANGE|IGNORE_TARGET_LOC_CHANGE : NONE))
|
||||
return
|
||||
|
||||
qdel(src)
|
||||
@@ -190,11 +199,11 @@
|
||||
location.balloon_alert(user, "tether extended")
|
||||
return
|
||||
|
||||
if (cur_dist <= 1)
|
||||
if (cur_dist <= 0)
|
||||
location.balloon_alert(user, "too short!")
|
||||
return
|
||||
|
||||
if (cur_dist > get_dist(parent, tether_target))
|
||||
if (cur_dist > CEILING(get_dist(parent, tether_target), 1))
|
||||
cur_dist -= 1
|
||||
location.balloon_alert(user, "tether shortened")
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user