Replaces move_on_shuttle with a trait (#83550)

## About The Pull Request

`move_on_shuttle` was a variable that existed on `/mob` despite only
ever being used by cameras. This PR downgrades the variable to only
exist on `/mob/camera` types, but have the only thing that variable do
is add a trait that blocks movement on shuttles if not allowed. This
allows us to check the variable without casting to camera, which is what
some code was un-necessarily doing. This also retainst the ability to
add the trait later on to different mobs who we may not want to be on
shuttles that aren't `/mob/camera`.
## Why It's Good For The Game

There's no point for this variable to live on `/mob` if all it can do is
clog up the VV screen, especially if the current utilization for it is
only cameras. Let's move it off `/mob` and turn it into a trait so it
still has the similar utilization on a global level without typecasting
- as well as make it actually work since needless typecasting was
introducing a minor bug
## Changelog
Irrelevant.

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
This commit is contained in:
san7890
2024-05-30 00:54:31 -06:00
committed by GitHub
parent 15a657bcbc
commit e81f9c6ef0
9 changed files with 16 additions and 18 deletions
+3
View File
@@ -291,6 +291,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
/// Allows you to hear speech through walls
#define TRAIT_XRAY_HEARING "xray_hearing"
/// This mob can not enter or move on a shuttle
#define TRAIT_BLOCK_SHUTTLE_MOVEMENT "block_shuttle_movement"
/// Lets us scan reagents
#define TRAIT_REAGENT_SCANNER "reagent_scanner"
/// Lets us scan machine parts and tech unlocks
+2 -1
View File
@@ -140,9 +140,10 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_BATON_RESISTANCE" = TRAIT_BATON_RESISTANCE,
"TRAIT_BEING_BLADE_SHIELDED" = TRAIT_BEING_BLADE_SHIELDED,
"TRAIT_BLOB_ALLY" = TRAIT_BLOB_ALLY,
"TRAIT_BLOCK_SHUTTLE_MOVEMENT" = TRAIT_BLOCK_SHUTTLE_MOVEMENT,
"TRAIT_BLOOD_CLANS" = TRAIT_BLOOD_CLANS,
"TRAIT_BLOODSHOT_EYES" = TRAIT_BLOODSHOT_EYES,
"TRAIT_BLOODY_MESS" = TRAIT_BLOODY_MESS,
"TRAIT_BLOOD_CLANS" = TRAIT_BLOOD_CLANS,
"TRAIT_BOMBIMMUNE" = TRAIT_BOMBIMMUNE,
"TRAIT_BONSAI" = TRAIT_BONSAI,
"TRAIT_BOOZE_SLIDER" = TRAIT_BOOZE_SLIDER,
+1
View File
@@ -36,6 +36,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list(
"TRAIT_BADTOUCH" = TRAIT_BADTOUCH,
"TRAIT_BALD" = TRAIT_BALD,
"TRAIT_BATON_RESISTANCE" = TRAIT_BATON_RESISTANCE,
"TRAIT_BLOCK_SHUTTLE_MOVEMENT" = TRAIT_BLOCK_SHUTTLE_MOVEMENT,
"TRAIT_BLOOD_CLANS" = TRAIT_BLOOD_CLANS,
"TRAIT_BLOODSHOT_EYES" = TRAIT_BLOODSHOT_EYES,
"TRAIT_BOMBIMMUNE" = TRAIT_BOMBIMMUNE,
@@ -86,8 +86,6 @@
var/mob/living/owner
var/bubble_icon = "default"
/mob/camera/imaginary_friend/Login()
. = ..()
if(!. || !client)
+1 -1
View File
@@ -12,7 +12,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
icon = 'icons/mob/silicon/cameramob.dmi'
icon_state = "marker"
mouse_opacity = MOUSE_OPACITY_ICON
move_on_shuttle = 1
move_on_shuttle = TRUE
invisibility = INVISIBILITY_OBSERVER
layer = FLY_LAYER
plane = ABOVE_GAME_PLANE
+4 -1
View File
@@ -8,13 +8,16 @@
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
invisibility = INVISIBILITY_ABSTRACT // No one can see us
sight = SEE_SELF
move_on_shuttle = FALSE
/// Toggles if the camera can move on shuttles
var/move_on_shuttle = FALSE
/// Toggles if the camera can use emotes
var/has_emotes = FALSE
/mob/camera/Initialize(mapload)
. = ..()
SSpoints_of_interest.make_point_of_interest(src)
if(!move_on_shuttle)
ADD_TRAIT(src, TRAIT_BLOCK_SHUTTLE_MOVEMENT, INNATE_TRAIT)
/mob/camera/experience_pressure_difference()
return
-3
View File
@@ -134,9 +134,6 @@
/// What job does this mob have
var/job = null//Living
/// Can this mob enter shuttles
var/move_on_shuttle = 1
/// bitflags defining which status effects can be inflicted (replaces canknockdown, canstun, etc)
var/status_flags = CANSTUN|CANKNOCKDOWN|CANUNCONSCIOUS|CANPUSH
+3 -8
View File
@@ -112,14 +112,9 @@
return FALSE
/obj/docking_port/mobile/arrivals/proc/PersonCheck()
for(var/V in GLOB.player_list)
var/mob/M = V
if((get_area(M) in areas) && M.stat != DEAD)
if(!iscameramob(M))
return TRUE
var/mob/camera/C = M
if(C.move_on_shuttle)
return TRUE
for(var/mob/player as anything in GLOB.player_list)
if((get_area(player) in areas) && (player.stat != DEAD) && !HAS_TRAIT(player, TRAIT_BLOCK_SHUTTLE_MOVEMENT))
return TRUE
return FALSE
/obj/docking_port/mobile/arrivals/proc/NukeDiskCheck()
+2 -2
View File
@@ -264,12 +264,12 @@ All ShuttleMove procs go here
/************************************Mob move procs************************************/
/mob/onShuttleMove(turf/newT, turf/oldT, list/movement_force, move_dir, obj/docking_port/stationary/old_dock, obj/docking_port/mobile/moving_dock)
if(!move_on_shuttle)
if(HAS_TRAIT(src, TRAIT_BLOCK_SHUTTLE_MOVEMENT))
return
. = ..()
/mob/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation)
if(!move_on_shuttle)
if(HAS_TRAIT(src, TRAIT_BLOCK_SHUTTLE_MOVEMENT))
return
. = ..()
if(client && movement_force)