Files
Bubberstation/code/_onclick/observer.dm
Thunder12345 c9f0917c2e Double clicking on your corpse (or something containing it) no longer makes you automatically re-enter it (#75505)
## About The Pull Request

Removes the check for reentering your body when double clicking on
things as a ghost.

## Why It's Good For The Game

Perhaps my experience is not universal, but I have never found an
occasion where I did this and wanted to re-enter my corpse, and
conversely many occasions where I want to orbit my corpse and find
myself re-entering it instead.

Any form of revival will pull you back into your body automatically
these days and there's no real benefit to being in your corpse, and in
the rare circumstance someone wants to do this the verb is still
available.

## Changelog
🆑
qol: Double clicking your corpse or something containing it as a ghost
will now orbit as in other cases instead of re-entering your corpse.
/🆑
2023-05-18 16:02:10 -06:00

86 lines
2.4 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/effect/gateway_portal_bumper/attack_ghost(mob/user)
if(gateway)
gateway.Transfer(user)
return ..()
/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))