Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion code/__DEFINES/admin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@
#define R_SPAWN (1<<12)
#define R_AUTOADMIN (1<<13)
#define R_DBRANKS (1<<14)
#define R_ECONOMY (1<<15)

#define R_DEFAULT R_AUTOADMIN

// VOIDCREW EDIT: Include the Economy permission in the complete admin permission mask (voidcrew/modules/admin).
#define R_EVERYTHING (1<<16)-1 //the sum of all other rank permissions, used for +EVERYTHING

#define ADMIN_QUE(user) "(<a href='byond://?_src_=holder;[HrefToken(forceGlobal = TRUE)];adminmoreinfo=[REF(user)]'>?</a>)"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@
#define COMPONENT_MOVE_CONTENTS MOVE_CONTENTS
/// From base of /atom/movable/afterShuttleMove (turf/oldT)
#define COMSIG_ATOM_AFTER_SHUTTLE_MOVE "movable_after_shuttle_move"
/// VOIDCREW ADDITION. From base of /atom/movable/lateShuttleMove, once every moved atom has landed and rotated: (turf/oldT, list/movement_force, move_dir)
#define COMSIG_ATOM_LATE_SHUTTLE_MOVE "movable_late_shuttle_move"
///called on a movable (NOT living) when it starts pulling (atom/movable/pulled, state, force)
#define COMSIG_ATOM_START_PULL "movable_start_pull"
/// called on /atom when something attempts to pass through it (atom/movable/source, atom/movable/passing, dir)
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/explosions.dm
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

/// A wrapper for [/atom/proc/ex_act] to ensure that the explosion propagation and attendant signal are always handled.
/// VOIDCREW: recheck outpost protection when queued or direct damage is applied.
// VOIDCREW EDIT START: Block explosions on protected trader outposts before contents and signals fire (voidcrew/modules/trade/outpost_security.dm).
#define EX_ACT(target, args...)\
if(!is_trader_outpost_protected(target)) { \
if(!(target.flags_1 & PREVENT_CONTENTS_EXPLOSION_1)) { \
Expand All @@ -30,6 +31,7 @@
target.ex_act(##args);\
} \
}
// VOIDCREW EDIT END

// Internal explosion argument list keys.
// Must match the arguments to [/datum/controller/subsystem/explosions/proc/propagate_blastwave]
Expand Down
3 changes: 0 additions & 3 deletions code/__DEFINES/reagents.dm
Original file line number Diff line number Diff line change
Expand Up @@ -143,9 +143,6 @@
#define REACTION_PH_VOL_CONSTANT (1<<6)
///If a reaction will generate its impure/inverse reagents in the middle of a reaction, as apposed to being determined on ingestion/on reaction completion
#define REACTION_REAL_TIME_SPLIT (1<<7)
//VOIDCREW EDIT ADDITION: reaction refuses to run inside a grown food item, so plant
//chemistry can't be used to mass-produce the mob-spawning mixtures.
//VOIDCREW EDIT END

///Used for overheat_temp - This sets the overheat so high it effectively has no overheat temperature.
#define NO_OVERHEAT 99999
Expand Down
3 changes: 3 additions & 0 deletions code/__DEFINES/tgs.dm
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// tgstation-server DMAPI
// The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in IETF RFC 2119.

// VOIDCREW EDIT: Match the vendored TGS DMAPI 7.4.0 version and deployment entry point in code/modules/tgs.
#define TGS_DMAPI_VERSION "7.4.0"

// All functions and datums outside this document are subject to change with any version and should not be relied on.
Expand Down Expand Up @@ -587,9 +588,11 @@


/// Trigger a TGS deployment for the current instance. The current state of the repository will not be changed.
// VOIDCREW EDIT START: Match the vendored TGS DMAPI 7.4.0 version and deployment entry point in code/modules/tgs.
/world/proc/TgsTriggerDeployment()
CAN_BE_REDEFINED(TRUE)
return
// VOIDCREW EDIT END

/*
The MIT License
Expand Down
3 changes: 0 additions & 3 deletions code/__DEFINES/wiremod.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,6 @@
/// Associative List datatype. Derivative of list.
#define PORT_TYPE_ASSOC_LIST(key_datatype, datatype) SSwiremod_composite.composite_datatype(PORT_COMPOSITE_TYPE_ASSOC_LIST, key_datatype, datatype)

//VOIDCREW EDIT ADDITION: chemistry circuits
//VOIDCREW EDIT END

// Other datatypes
/// Atom datatype
#define PORT_TYPE_ATOM "entity"
Expand Down
6 changes: 6 additions & 0 deletions code/__HELPERS/_lists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -315,8 +315,10 @@
// VOIDCREW EDIT: degrade to an empty result rather than throwing. Every caller reads
// the result as "the atoms this operation applies to", so an empty list is the no-op.
if(!islist(atoms) || !islist(typecache))
// VOIDCREW EDIT START: Reject malformed typecache inputs without unsafe mass deletion; diagnostics live in voidcrew/edits/__HELPERS/_lists.dm.
warn_bad_typecache_filter("typecache_filter_list", atoms, typecache)
return
// VOIDCREW EDIT END
for(var/atom/atom_checked as anything in atoms)
if (typecache[atom_checked.type])
. += atom_checked
Expand All @@ -329,8 +331,10 @@
// everything this returns, so a missing typecache must never be read as "nothing is
// excluded". Empty means nothing gets deleted, which is the recoverable direction.
if(!islist(atoms) || !islist(typecache))
// VOIDCREW EDIT START: Reject malformed typecache inputs without unsafe mass deletion; diagnostics live in voidcrew/edits/__HELPERS/_lists.dm.
warn_bad_typecache_filter("typecache_filter_list_reverse", atoms, typecache)
return
// VOIDCREW EDIT END
for(var/atom/atom_checked as anything in atoms)
if(!typecache[atom_checked.type])
. += atom_checked
Expand All @@ -340,8 +344,10 @@
. = list()
// VOIDCREW EDIT: as above.
if(!islist(atoms) || !islist(typecache_include) || !islist(typecache_exclude))
// VOIDCREW EDIT START: Reject malformed typecache inputs without unsafe mass deletion; diagnostics live in voidcrew/edits/__HELPERS/_lists.dm.
warn_bad_typecache_filter("typecache_filter_multi_list_exclusion", atoms, typecache_include)
return
// VOIDCREW EDIT END
for(var/atom/atom_checked as anything in atoms)
if(typecache_include[atom_checked.type] && !typecache_exclude[atom_checked.type])
. += atom_checked
Expand Down
2 changes: 2 additions & 0 deletions code/__HELPERS/areas.dm
Original file line number Diff line number Diff line change
Expand Up @@ -131,11 +131,13 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(list(
var/turf_count = length(turfs)
if(!turf_count)
// Check if we're in or adjacent to a shuttle area to give a more helpful error
// VOIDCREW EDIT START: Explain why hull areas need a ship expansion permit (voidcrew/modules/shuttle).
var/area/current_area = get_area(creator)
if(istype(current_area, /area/shuttle))
error = "You cannot use regular blueprints in a shuttle area. Use a shuttle expansion permit instead."
else
error = "The new area must be completely airtight and not a part of a shuttle."
// VOIDCREW EDIT END
else if(turf_count > BP_MAX_ROOM_SIZE)
error = "The room you're in is too big. It is [turf_count >= BP_MAX_ROOM_SIZE *2 ? "more than 100" : ((turf_count / BP_MAX_ROOM_SIZE)-1)*100]% larger than allowed."
if(error)
Expand Down
2 changes: 2 additions & 0 deletions code/__HELPERS/logging/attack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@

var/postfix = "[sobject][saddition][hp]"
// VOIDCREW: ranged attacks can cross hulls; preserve the target's location too.
// VOIDCREW EDIT START: Record the target ship and overmap zone for cross-hull attacks (voidcrew/modules/admin).
if(target && target != user)
postfix += " \[Target location: [overmap_zone_log_context(target)]\]"
// VOIDCREW EDIT END

var/message = "[what_done] [starget][postfix]"
user.log_message(message, LOG_ATTACK, color="red")
Expand Down
2 changes: 2 additions & 0 deletions code/__HELPERS/logging/mob.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@
return

// VOIDCREW: keep the actual ship/zone visible in both individual and disk logs.
// VOIDCREW EDIT START: Record the attacker ship and overmap zone in combat logs (voidcrew/modules/admin).
if(message_type == LOG_ATTACK || message_type == LOG_VICTIM)
message += " \[Location: [overmap_zone_log_context(src)]\]"
// VOIDCREW EDIT END

// Cannot use the list as a map if the key is a number, so we stringify it (thank you BYOND)
var/smessage_type = num2text(message_type, MAX_BITFLAG_DIGITS)
Expand Down
4 changes: 4 additions & 0 deletions code/__HELPERS/paths/jps.dm
Original file line number Diff line number Diff line change
Expand Up @@ -125,18 +125,22 @@

// These were inline list() literals, which meant two list allocations for every single node
// popped off the open heap. Statics: same contents, allocated once for the whole round.
// VOIDCREW EDIT START: Reuse direction lists in fleet-scale pathfinding instead of allocating lists per node.
var/static/list/cardinal_scans = list(EAST, WEST, NORTH, SOUTH)
var/static/list/diagonal_scans = list(NORTHEAST, SOUTHEAST, NORTHWEST, SOUTHWEST)
// VOIDCREW EDIT END

while(!open.is_empty() && !path)
var/datum/jps_node/current_processed_node = open.pop() //get the lower f_value turf in the open list
if(max_distance && (current_processed_node.number_tiles > max_distance))//if too many steps, don't process that path
continue

var/turf/current_turf = current_processed_node.tile
// VOIDCREW EDIT: Reuse direction lists in fleet-scale pathfinding instead of allocating lists per node.
for(var/scan_direction as anything in cardinal_scans)
lateral_scan_spec(current_turf, scan_direction, current_processed_node)

// VOIDCREW EDIT: Reuse direction lists in fleet-scale pathfinding instead of allocating lists per node.
for(var/scan_direction as anything in diagonal_scans)
diag_scan_spec(current_turf, scan_direction, current_processed_node)

Expand Down
1 change: 1 addition & 0 deletions code/__HELPERS/priority_announce.dm
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@

var/finalized_announcement = CHAT_ALERT_COLORED_SPAN(current_level_color, jointext(level_announcement_strings, ""))

// VOIDCREW EDIT: Keep ship security announcements scoped to their recipient crew (voidcrew/modules/comms/communications_console.dm).
dispatch_announcement_to_players(finalized_announcement, players, current_level_sound)

/// Proc that just generates a custom header based on variables fed into `priority_announce()`
Expand Down
3 changes: 3 additions & 0 deletions code/__HELPERS/radiation.dm
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,14 @@
if(!SSradiation.can_fire)
return

// VOIDCREW EDIT START: Skip radiation sources that cannot resolve a weak reference during deletion.
var/datum/weakref/source_ref = WEAKREF(source)
if(isnull(source_ref)) // null or mid-qdel source: WEAKREF() returns null and the pulse could never resolve
return
// VOIDCREW EDIT END

var/datum/radiation_pulse_information/pulse_information = new
// VOIDCREW EDIT: Skip radiation sources that cannot resolve a weak reference during deletion.
pulse_information.source_ref = source_ref
pulse_information.max_range = max_range
pulse_information.threshold = threshold
Expand Down
5 changes: 4 additions & 1 deletion code/__HELPERS/shuttle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ GLOBAL_LIST_EMPTY(shuttle_frames_by_turf)
var/list/area_turfs = checked_area.get_turfs_by_zlevel(z)
if(!checked_area.allow_shuttle_docking)
. |= INTERSECTS_NON_WHITELISTED_AREA
// VOIDCREW EDIT ADDITION: a virtual domain's reservation floor is plain
// VOIDCREW EDIT ADDITION START: a virtual domain's reservation floor is plain
// /area/space, which whitelists docking. Without this a bitrunner frames up a
// shuttle inside VR and flies it - and everything they looted - back to the ship.
else if(SSbitrunning.is_domain_turf(checked_turf))
Expand Down Expand Up @@ -503,10 +503,12 @@ GLOBAL_LIST_EMPTY(shuttle_frames_by_turf)
shuttle.underlying_areas_by_turf += underlying_areas
SEND_SIGNAL(shuttle, COMSIG_SHUTTLE_EXPANDED, turfs)
if(bounds_need_recalculation)
// VOIDCREW EDIT: Release the transit reservation before recalculating changed hull bounds (voidcrew/modules/shuttle).
release_assigned_transit(shuttle) //VOID EDIT - was QDEL_NULL, which leaks the reservation
shuttle.calculate_docking_port_information()
shuttle.initiate_docking(shuttle.get_docked(), force = TRUE)

// VOIDCREW EDIT REMOVAL: Keep routine player hull expansions in the shuttle log without per-expansion admin announcements (voidcrew/modules/shuttle).
log_shuttle("[key_name(user)] expanded [shuttle] at [get_area(user)].")

// VOIDCREW EDIT END
Expand Down Expand Up @@ -564,6 +566,7 @@ GLOBAL_LIST_EMPTY(shuttle_frames_by_turf)
if(docking_port_needs_relocated)
shuttle.forceMove(pick(shuttle.underlying_areas_by_turf))
if(bounds_need_recalculation)
// VOIDCREW EDIT: Release the transit reservation before recalculating changed hull bounds (voidcrew/modules/shuttle).
release_assigned_transit(shuttle) //VOID EDIT - was QDEL_NULL, which leaks the reservation
shuttle.calculate_docking_port_information()
// VOIDCREW EDIT END
2 changes: 1 addition & 1 deletion code/_globalvars/logging.dm
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ GLOBAL_PROTECT(##log_var_name);\
// These should be used where the log category cannot easily be a json log file.
DECLARE_LOG(config_error_log, DONT_START_LOG)
DECLARE_LOG(perf_log, DONT_START_LOG) // Declared here but name is set in time_track subsystem
DECLARE_LOG(worldgen_log, START_LOG) // Planet/ruin/asteroid/ship generation timing, correlated with time dilation - see code/__HELPERS/logging/worldgen.dm
DECLARE_LOG(worldgen_log, START_LOG) // Planet/ruin/asteroid/ship generation timing, correlated with time dilation - see voidcrew/modules/worldgen_logging/worldgen.dm // VOIDCREW EDIT: metrics records world-generation timing.

#ifdef REFERENCE_TRACKING_LOG_APART
DECLARE_LOG_NAMED(harddel_log, "harddels", START_LOG)
Expand Down
3 changes: 3 additions & 0 deletions code/_onclick/click.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@
var/mod = next_move_modifier
var/adj = next_move_adjust
// MonkeStation's crit item usage: actions in soft crit take four times as long.
// VOIDCREW EDIT START: Allow slow item actions in soft crit through incapacitated_except_softcrit().
if(stat == SOFT_CRIT)
mod *= 4
// VOIDCREW EDIT END
for(var/datum/status_effect/effect as anything in status_effects)
mod *= effect.nextmove_modifier()
adj += effect.nextmove_adjust()
Expand Down Expand Up @@ -110,6 +112,7 @@
CtrlClickOn(A)
return

// VOIDCREW EDIT: Allow slow item actions in soft crit through incapacitated_except_softcrit().
if(incapacitated_except_softcrit(INCAPABLE_RESTRAINTS|INCAPABLE_STASIS))
return

Expand Down
1 change: 1 addition & 0 deletions code/_onclick/hud/alert.dm
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@


/atom/movable/screen/alert/MouseExited()
// VOIDCREW EDIT: Run parent screen initialization for Voidcrew HUD extensions in voidcrew/edits/_onclick/hud.
. = ..()
closeToolTip(usr)

Expand Down
1 change: 1 addition & 0 deletions code/_onclick/hud/blob_overmind.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
openToolTip(usr,src,params,title = name,content = desc, theme = "blob")

/atom/movable/screen/blob/MouseExited()
// VOIDCREW EDIT: Run parent screen initialization for Voidcrew HUD extensions in voidcrew/edits/_onclick/hud.
. = ..()
closeToolTip(usr)

Expand Down
8 changes: 8 additions & 0 deletions code/_onclick/hud/hud.dm
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
// A hud can outlive its mob (and plane groups can be rebuilt while detached), and this
// runs at the very top of build_planes_offset() - runtiming here skips the whole
// offset rebuild, which is how clients end up rendering to planes that have no master.
// VOIDCREW EDIT: Tolerate a HUD that outlives its mob during plane offset rebuilding.
return should_sight_scale(mymob?.sight)

// VOIDCREW EDIT END
Expand Down Expand Up @@ -279,6 +280,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
/datum/hud/proc/build_plane_groups(starting_offset, ending_offset)
for(var/group_key in master_groups)
var/datum/plane_master_group/group = master_groups[group_key]
// VOIDCREW EDIT START: Refresh newly built HUD planes after live z-level growth (voidcrew/edits/_onclick/hud).
var/list/atom/movable/screen/plane_master/new_planes = group.build_plane_masters(starting_offset, ending_offset)
if(!length(new_planes))
continue
Expand All @@ -287,6 +289,7 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
// Match what group creation does after show_hud(), so the planes we just added get the same multiz
// scaling and in/out of bounds treatment a client who connected after the load would have gotten
group.build_planes_offset(src, current_plane_offset)
// VOIDCREW EDIT END

/// Returns the plane master that matches the input plane from the passed in group
/datum/hud/proc/get_plane_master(plane, group_key = PLANE_GROUP_MAIN)
Expand Down Expand Up @@ -812,28 +815,33 @@ GLOBAL_LIST_INIT(available_ui_styles, list(
if(!length(actions))
palette.set_expanded(FALSE)

// VOIDCREW EDIT REMOVAL: Disable the upstream palette layout replaced by voidcrew/edits/_onclick/hud, preserving the existing override chain.
///Commenting out due to this being replaced in 'voidcrew\edits\_onclick\hud' and the return ..() requirement
// /datum/action_group/palette/refresh_actions()
// var/atom/movable/screen/button_palette/palette = owner.toggle_palette
// var/atom/movable/screen/palette_scroll/scroll_down = owner.palette_down
// var/atom/movable/screen/palette_scroll/scroll_up = owner.palette_up

// VOIDCREW EDIT REMOVAL: Disable the upstream palette layout replaced by voidcrew/edits/_onclick/hud, preserving the existing override chain.
// var/actions_above = round((owner.listed_actions.size() - 1) / owner.listed_actions.column_max)
// north_offset = initial(north_offset) + actions_above

// VOIDCREW EDIT REMOVAL: Disable the upstream palette layout replaced by voidcrew/edits/_onclick/hud, preserving the existing override chain.
// palette.screen_loc = ui_action_palette_offset(actions_above)
// var/action_count = length(owner?.mymob?.actions)
// var/our_row_count = round((length(actions) - 1) / column_max)
// if(!action_count)
// palette.screen_loc = null

// VOIDCREW EDIT REMOVAL: Disable the upstream palette layout replaced by voidcrew/edits/_onclick/hud, preserving the existing override chain.
// if(palette.expanded && action_count && our_row_count >= max_rows)
// scroll_down.screen_loc = ui_palette_scroll_offset(actions_above)
// scroll_up.screen_loc = ui_palette_scroll_offset(actions_above)
// else
// scroll_down.screen_loc = null
// scroll_up.screen_loc = null

// VOIDCREW EDIT REMOVAL: Disable the upstream palette layout replaced by voidcrew/edits/_onclick/hud, preserving the existing override chain.
// return ..()

/datum/action_group/palette/ButtonNumberToScreenCoords(number, landing)
Expand Down
3 changes: 2 additions & 1 deletion code/_onclick/hud/human.dm
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,13 @@
using = new /atom/movable/screen/navigate(null, src)
using.icon = ui_style
using.screen_loc = ui_human_navigate
// VOIDCREW EDIT START: Install the skill-report HUD shortcut defined in voidcrew/edits/_onclick/hud/screen_extensions.dm.
static_inventory += using

using = new /atom/movable/screen/skills(null, src)
using.icon = ui_style
using.screen_loc = ui_human_skills
// VOIDCREW EDIT END
static_inventory += using

using = new /atom/movable/screen/area_creator(null, src)
Expand Down Expand Up @@ -392,7 +394,6 @@
screenmob.client.screen -= H.head



/datum/hud/human/persistent_inventory_update(mob/viewer)
if(!mymob)
return
Expand Down
6 changes: 6 additions & 0 deletions code/_onclick/hud/new_player.dm
Original file line number Diff line number Diff line change
Expand Up @@ -225,9 +225,11 @@
// transfer ran straight into "Cannot read null.prefs" here. The prefs datum is also
// per-client, and /datum/preferences/ui_status() closes the menu unless
// user.client == parent, so reading it off any other client's mob is wrong anyway.
// VOIDCREW EDIT START: Resolve preferences from the clicking client safely across logout and mob transfer.
var/datum/preferences/preferences = usr.client?.prefs
if(!preferences)
return
// VOIDCREW EDIT END
preferences.current_window = PREFERENCE_TAB_CHARACTER_PREFERENCES
preferences.update_static_data(usr)
preferences.ui_interact(usr)
Expand Down Expand Up @@ -422,9 +424,11 @@
return

// Same as the Character Setup button above: the clicking client's own prefs.
// VOIDCREW EDIT START: Resolve preferences from the clicking client safely across logout and mob transfer.
var/datum/preferences/preferences = usr.client?.prefs
if(!preferences)
return
// VOIDCREW EDIT END
preferences.current_window = PREFERENCE_TAB_GAME_PREFERENCES
preferences.update_static_data(usr)
preferences.ui_interact(usr)
Expand Down Expand Up @@ -764,8 +768,10 @@
var/new_maptext
var/round_started = SSticker.HasRoundStarted()
if(round_started)
// VOIDCREW EDIT START: Show fleet player count without a station map name in the lobby HUD.
new_maptext = "<span style='text-align: center; vertical-align: middle'>[LAZYLEN(GLOB.clients)] player\s online<br /> \
[ROUND_TIME()] in<br />"
// VOIDCREW EDIT END
var/datum/station_trait/overflow_job_bureaucracy/overflow = locate() in SSstation.station_traits
if(overflow)
new_maptext += "[overflow.chosen_job_name] overflow"
Expand Down
1 change: 1 addition & 0 deletions code/_onclick/hud/parallax/parallax.dm
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@
return
C.parallax_animate_timers -= layer
if(!layer.scroll_loops) // VOIDCREW EDIT ADDITION - see set_parallax_movedir()
// VOIDCREW EDIT: Do not reschedule parallax animation after its scroll loop has been disabled (voidcrew/edits/_onclick/hud).
return

// If we are moving in a direction, we used the QUAD_EASING function with EASE_IN
Expand Down
Loading
Loading