mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-21 04:57:57 +01:00
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:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user