Files
Bubberstation/code/_onclick/observer.dm
SkyratBot 00b1632113 [MIRROR] Fixes ghosts being unable to click gateways to teleport through [MDB IGNORE] (#21877)
* 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>
2023-06-16 17:23:12 +01:00

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))