mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-05 06:21:57 +00:00
* Fixes ghosts being unable to click gateways to teleport through (#76070) ## About The Pull Request Ghosts can click gateways to teleport again ## Why It's Good For The Game I *believe* the "gateway visual" update made it so the bumper was unclickable, not sure why Seemed easier to move it to the gateway itself rather than be on the bumper Also made it so you cant teleport into secret gateways ## Changelog 🆑 Melbert fix: Ghosts can click on active gateways to teleport to the destination set. Doesn't work for secret gateways. /🆑 * Fixes ghosts being unable to click gateways to teleport through --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
81 lines
2.3 KiB
Plaintext
81 lines
2.3 KiB
Plaintext
/mob/dead/observer/DblClickOn(atom/A, params)
|
|
if(check_click_intercept(params, A))
|
|
return
|
|
|
|
// Things you might plausibly want to follow
|
|
if(ismovable(A))
|
|
ManualFollow(A)
|
|
|
|
// Otherwise jump
|
|
else if(A.loc)
|
|
abstract_move(get_turf(A))
|
|
update_parallax_contents()
|
|
|
|
/mob/dead/observer/ClickOn(atom/A, params)
|
|
if(check_click_intercept(params,A))
|
|
return
|
|
|
|
var/list/modifiers = params2list(params)
|
|
if(LAZYACCESS(modifiers, SHIFT_CLICK))
|
|
if(LAZYACCESS(modifiers, MIDDLE_CLICK))
|
|
ShiftMiddleClickOn(A)
|
|
return
|
|
if(LAZYACCESS(modifiers, CTRL_CLICK))
|
|
CtrlShiftClickOn(A)
|
|
return
|
|
ShiftClickOn(A)
|
|
return
|
|
if(LAZYACCESS(modifiers, MIDDLE_CLICK))
|
|
if(LAZYACCESS(modifiers, CTRL_CLICK))
|
|
CtrlMiddleClickOn(A)
|
|
else
|
|
MiddleClickOn(A, params)
|
|
return
|
|
if(LAZYACCESS(modifiers, ALT_CLICK))
|
|
AltClickNoInteract(src, A)
|
|
return
|
|
if(LAZYACCESS(modifiers, CTRL_CLICK))
|
|
CtrlClickOn(A)
|
|
return
|
|
|
|
if(world.time <= next_move)
|
|
return
|
|
// You are responsible for checking config.ghost_interaction when you override this function
|
|
// Not all of them require checking, see below
|
|
A.attack_ghost(src)
|
|
|
|
// Oh by the way this didn't work with old click code which is why clicking shit didn't spam you
|
|
/atom/proc/attack_ghost(mob/dead/observer/user)
|
|
if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_GHOST, user) & COMPONENT_CANCEL_ATTACK_CHAIN)
|
|
return TRUE
|
|
if(user.client)
|
|
if(user.gas_scan && atmos_scan(user=user, target=src, silent=TRUE))
|
|
return TRUE
|
|
else if(isAdminGhostAI(user))
|
|
attack_ai(user)
|
|
else if(user.client.prefs.read_preference(/datum/preference/toggle/inquisitive_ghost))
|
|
user.examinate(src)
|
|
return FALSE
|
|
|
|
/mob/living/attack_ghost(mob/dead/observer/user)
|
|
if(user.client && user.health_scan)
|
|
healthscan(user, src, 1, TRUE)
|
|
if(user.client && user.chem_scan)
|
|
chemscan(user, src)
|
|
return ..()
|
|
|
|
// ---------------------------------------
|
|
// And here are some good things for free:
|
|
// Now you can click through portals, wormholes, gateways, and teleporters while observing. -Sayu
|
|
|
|
/obj/machinery/teleport/hub/attack_ghost(mob/user)
|
|
if(!power_station?.engaged || !power_station.teleporter_console || !power_station.teleporter_console.target_ref)
|
|
return ..()
|
|
|
|
var/atom/target = power_station.teleporter_console.target_ref.resolve()
|
|
if(!target)
|
|
power_station.teleporter_console.target_ref = null
|
|
return ..()
|
|
|
|
user.abstract_move(get_turf(target))
|