diff --git a/redist/redist-client-preview/Assembly-CSharp.dll b/redist/redist-client-preview/Assembly-CSharp.dll
old mode 100644
new mode 100755
index af17aae2..3e598e59
Binary files a/redist/redist-client-preview/Assembly-CSharp.dll and b/redist/redist-client-preview/Assembly-CSharp.dll differ
diff --git a/redist/redist-client-preview/Assembly-CSharp.xml b/redist/redist-client-preview/Assembly-CSharp.xml
old mode 100644
new mode 100755
index bc086814..0cfb003a
--- a/redist/redist-client-preview/Assembly-CSharp.xml
+++ b/redist/redist-client-preview/Assembly-CSharp.xml
@@ -1,19944 +1,19959 @@
-
-
-
- Assembly-CSharp
-
-
-
-
- Helper for drawing label outline/shadow so that we can easily change it.
-
-
-
-
- Helper for drawing label outline/shadow so that we can easily change it.
-
-
-
-
- If true, SizeOffset_X and SizeOffset_Y are used when image is available.
- Defaults to false.
-
-
-
-
- If useImageDimensions is on and image width exceeds this value, scale down
- respecting aspect ratio.
-
-
-
-
- If useImageDimensions is on and image height exceeds this value, scale down
- respecting aspect ratio.
-
-
-
-
- If true, NVGs work in third-person, not just first-person.
- Defaults to false.
-
-
-
-
- Type the annotated class was generated for.
-
-
-
-
- Method the annotated method was generated for.
-
-
-
-
- Exposes the same API as the older Block class used by existing netcode, but implemented using new bit reader/writer.
-
-
-
-
- Last realtime a request was sent.
- Used to rate-limit clientside.
-
-
-
-
- Perform rate limiting and update timestamp.
-
- True if we can proceed with request.
-
-
-
- Do we think the local player is eligible to send request?
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- Find difficulty asset (if valid) for navigation bound index.
-
-
-
-
- Could potentially be reused generically.
-
-
-
-
- When zombie falls outside the map it needs a replacement spawnpoint within the same navmesh area.
-
-
-
-
- Find replacement spawnpoint for a zombie and teleport it there.
-
-
-
-
- Kills night-only zombies at dawn.
-
-
-
-
- Allows Unity events to call in airdrops.
-
-
-
-
- Used by weather assets.
-
-
-
-
- Distance inward from edge before intensity reaches 100%.
-
-
-
-
- Alpha is 0.0 outside volume and 1.0 inside inner volume.
-
-
-
-
- World space size of the box.
-
-
-
-
- Half the world space size of the box.
-
-
-
-
- World space size of inner falloff box when falloffDistance is non-zero.
- For example a 24x12x6 box with a falloff of 4 has an inner box sized 16x4x0.
-
-
-
-
- World space extents of inner falloff box when falloffDistance is non-zero.
-
-
-
-
- Local space size of inner falloff box when falloffDistance is non-zero.
-
-
-
-
- Local space extents of inner falloff box when falloffDistance is non-zero.
-
-
-
-
- World space radius of the sphere.
-
-
-
-
- Local space radius of the sphere.
-
-
-
-
- World space radius of inner falloff sphere when falloffDistance is non-zero.
-
-
-
-
- Local space radius of inner falloff sphere when falloffDistance is non-zero.
-
-
-
-
- Useful for code which previously depended on creating the Unity collider to calculate bounding box.
-
-
-
-
- Called in the level editor during registraion and when visibility is changed.
-
-
-
-
- Editor-only solid/opaque child mesh renderer object.
-
-
-
-
- If true during Awake the collider component will be added.
- Otherwise only in the level editor. Some volume types like water use the collider in gameplay,
- whereas most only need the collider for general-purpose selection in the level editor.
-
-
-
-
- Camera does not rotate when the car rotates.
-
-
-
-
- Camera rotates when the car rotates.
-
-
-
-
- If hit from the left view rolls right, if hit from the right view rolls left. This may reduce motion
- sickness for some players.
-
-
-
-
- Rotate on all axes according to damage direction. This may induce motion sickness.
-
-
-
-
- Unfortunately the version which added hitmarker style saved but didn't actually load (sigh).
-
-
-
-
- Nelson 2023-12-28: this option was causing players to crash in the 3.23.14.0 update. Hopefully
- it's resolved for the patch, but to be safe it will default to false.
-
-
-
-
- Prior to 3.22.8.0 all scopes/optics had a base fov of 90 degrees.
-
-
-
-
- If false, call Start and Stop recording before and after push-to-talk key is pressed. This was the
- original default behavior, but causes a hitch for some players. As a workaround we can always keep
- the microphone rolling and only send data when the push-to-talk key is held. (public issue #4248)
-
-
-
-
- If true, group member name labels fade out when near the center of the screen.
- Defaults to true.
-
-
-
-
- If true, hide identifiable details of other multiplayer clients like avatars, player names, number of
- players online, server name, etc. Live streamers may find this useful to help prevent stream sniping.
-
- Separated from the older "streamer mode" option.
-
-
-
-
- If true, don't share details like "editing map X" or "join" with Steam. Useful for anyone who might be
- targeted / followed into servers, or who has a project to keep secret.
-
- Separated from the older "streamer mode" option.
-
-
-
-
- Controls whether hitmarkers are animated outward (newer) or just a static image ("classic").
-
-
-
-
- Determines how camera follows vehicle in third-person view.
-
-
-
-
- Determines how camera follows aircraft vehicle in third-person view.
-
-
-
-
- [0, 1] Blend factor between black and flashbang's desired color.
-
-
-
-
- [0, 1] Multiplier for shake from .
-
-
-
-
- Controls whether camera is constrained to roll-only or all axes.
-
-
-
-
- Multiplier for flinch away from damage source in .
-
-
-
-
- [0, 1] Intensity of FOV boost while sprinting.
-
-
-
-
- [0, 1] Intensity of first-person motion caused by walking.
-
-
-
-
- Invoked when custom UI colors are set.
-
-
-
-
- Invoked when dark/light theme is set.
-
-
-
-
- Number of times the player has clicked "Proceed" in the online safety menu.
-
-
-
-
- If true, "don't show again" is checked in the online safety menu.
-
-
-
-
- Prevents menu from being shown twice without a restart.
-
-
-
-
- Nelson 2025-02-24: Warning that this is invoked *before* the item is actually removed from the items list.
- (public issue #4894)
-
-
-
- checks whether a space contains any filled slots
-
-
- checks whether an item can be dragged and takes into account if the item overlaps its old self
-
-
-
- checks whether the spot currently used by the old item is big enough to fit the new item
-
-
-
-
- Please use SearchContents instead! To perform an equivalent search:
- • Set ItemType to type.
- • Set IncludeEmpty to false.
- • Set IncludeMaxQuality to true.
-
-
-
-
- Please use SearchContents instead! To perform an equivalent search:
- • Set ItemType to type.
- • Set IncludeEmpty to false.
- • Set IncludeMaxQuality to true.
- • Set CaliberId to caliber.
- • Set IncludeUnspecifiedCaliber to allowZeroCaliber.
-
-
-
-
- Please use SearchContents instead! To perform an equivalent search:
- • Set AssetRef to id.
- • Set IncludeEmpty to findEmpty.
- • Set IncludeMaxQuality to findHealthy.
-
-
-
-
- Please use SearchContents instead! To perform an equivalent search:
- • Set MaxResultsCount to 1.
- • Set AssetRef to id.
- • Set IncludeEmpty to false.
- • Set IncludeMaxQuality to true.
-
-
-
-
- Invoked after any player's experience value changes (not including loading).
-
-
-
-
- Invoked after any player's reputation value changes (not including loading).
-
-
-
-
- Ugly hack for the awful skills enums. Eventually skills should be replaced.
-
-
-
-
- Set every level to max and replicate.
-
-
-
-
- Serverside only.
- Called when skills weren't loaded (no save, or in arena mode), as well as when reseting skills after death.
-
-
-
-
- Set this item as the dragging preview.
-
-
-
-
- Standard shader mode changes are based on built-in StandardShaderGUI.cs
-
-
-
-
- Does shader name match any of the standard shaders?
- Standard, StandardSpecular and the Unturned "Decalable" variants all share nearly identical parameters.
-
-
-
-
- Based on fixup routine in StandardShaderGUI SetMaterialKeywords.
-
-
-
-
- Conditionally fixup older standard materials.
-
- True if material was edited.
-
-
-
- Parses mb:X from input string and filters assets using X master bundle.
-
-
-
-
- List of all loaded blueprints potentially craftable by player. Updated when assets are refreshed. This
- allows us to skip blueprints that will never be craftable (such as level-specific blueprints).
-
-
-
-
- Recycled list of assets with blueprints.
-
-
-
-
- Subset of loadedBlueprints.
-
-
-
-
- Center column.
-
-
-
-
- Used by inventory item context menu to override which blueprints are shown.
-
-
-
-
- Left-hand column.
-
-
-
-
- Right-hand column.
-
-
-
-
- Returns true if all filtered blueprints are craftable. (hacked-in for item action menu)
-
-
-
-
- If asset mapping has changed, find all assets with blueprints and gather the ones that can ever be crafted
- on this level. (I.e., excluding ones that we shouldn't waste time considering.)
-
-
-
-
- Accessible for UseableHousingPlanner.
-
-
-
-
- Get a blank status from the pool or construct a new one.
-
-
-
-
- Barricade asset's EBuild included in saves to fix state length problems. (public issue #3725)
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- Writable list of vehicle regions. Public add/remove methods should not be necessary.
-
-
-
-
- Remove barricade instance on server and client.
-
-
-
-
- Used by ownership change and damaged event to tell relevant clients the new health.
-
-
-
-
- Legacy function for UseableBarricade.
-
-
-
-
- Common code between dropping barricade onto vehicle or into world.
-
-
-
-
- Spawn a new barricade attached to a vehicle and replicate it.
-
-
-
-
- Spawn a new barricade and replicate it.
-
-
-
-
- Not an instance method because structure might not exist yet, in which case we cancel instantiation.
-
-
-
-
- Destroy barricades whose pivots are within sphere.
-
-
-
-
- Clean up before loading vehicles.
-
-
-
-
- Register a new vehicle as a valid parent for barricades.
- Each train car is registered after the root of the train.
- Note: Nobody knows why these are called plants.
-
-
-
-
- Called before destroying a vehicle GameObject because storage needed to be ManualDestroyed.
-
-
-
-
- Send all vehicle-mounted barricades to client.
- Called after sending vehicles so all plant indexes will be valid.
-
-
-
-
- Original server-only version that does not replicate changes to clients.
-
-
-
-
- Only used by plugins. Replicates state change to clients.
-
-
-
-
- Not ideal, but there was a problem because onLevelLoaded was not resetting these after disconnecting.
-
-
-
-
- Maps prefab unique id to inactive list.
-
-
-
-
- Sending yaw only costs 1 bit (flag) plus yaw bits, so compared to the old 24-bit rotation we may as well
- make it high-precision. Quaternion mode uses 1+27 bits!
-
-
-
-
- +0 = BarricadeDrop
- +1 = root transform
- +2 = Interactable (if exists)
-
-
-
-
- ID unique to this zombie table in the level. If this table is deleted the ID will not be recycled. Used to
- refer to zombie table from external files, e.g., NPC zombie kills condition.
-
-
-
-
- Not an actual Steam ID or BattlEye ID, instead this is used to map player references to and from BE.
-
-
-
-
- True for offline or listen server host.
-
-
-
-
- Next time method is allowed to be called.
-
-
-
-
- Number of times client has tried to invoke this method while rate-limited.
-
-
-
-
- Get Steam item definition ID equipped for given vehicle.
-
- True if a skin was available.
-
-
-
- Build econ details struct from tags and dynamic_props.
- Note that details cannot be modified because it's a struct and has copies of the data.
-
-
-
-
- Add a recent ping sample to the average ping window.
- Updates ping based on the average of several recent ping samples.
-
- Most recent ping value.
-
-
- True if both players exist, are both members of groups, and are both members of the same group.
-
-
- True if both players exist, are both members of groups, and are both members of the same group.
-
-
-
- Get real IPv4 address of remote player NOT the relay server.
-
- True if address was available, and not flagged as a relay server.
-
-
-
- See above, returns zero if failed.
-
-
-
-
- Get real address of remote player NOT a relay server.
-
- Null if address was unavailable.
-
-
-
- Get string representation of remote end point.
-
- Null if address was unavailable.
-
-
-
- Players can set a "nickname" which is only shown to the members in their group.
-
-
-
-
- Can be used by plugins to verify player is on a particular server.
-
- OnSteamAuthTicketForWebApiReceived will be invoked when the response is received.
- Note that the client doesn't send anything if the request to Steam fails, so plugins may wish to kick
- players if a certain amount of time passes. (e.g., if a cheat is canceling the request)
-
-
-
-
- Component for the tactical laser attachment's red dot.
- Resizes itself per-camera to maintain a constant on-screen size.
-
-
-
-
- Used to tune the scale by distance so that far away laser is not quite as comically large.
-
-
-
-
- This value is confusing because in the level editor it is the normalized radius, but in-game it is the square radius.
-
-
-
-
- Load {Language}.dat and/or English.dat from folder path.
-
-
-
-
- Note: as of 2025-04-23 this *can* be null. (E.g., audio-only effects.)
-
-
-
-
- If set, use OneShotAudioParameters to play this audio.
-
-
-
-
- If true the music option is respected when this effect is used by ambiance volume.
-
-
-
-
- In multiplayer the effect will be spawned for players within this radius.
-
-
-
-
- When loaded or spawned as a vehicle, creates a different vehicle instead.
- For example, Off_Roader_Orange has ID 4. When that ID is loaded/spawned the new combined Off_Roader vehicle is
- used instead. Can also optionally apply a paint color, allowing saves to be converted without losing colors.
-
-
-
-
- Redirectors are in the Vehicle category so that legacy vehicle IDs point at the redirector.
-
-
-
-
- Vehicle to use when attempting to load or spawn this asset.
-
-
-
-
- If set, overrides the default random paint color when loading a vehicle from a save file.
- Used to preserve colors of vehicles in existing saves.
-
-
-
-
- If set, overrides the default random paint color when spawning a new vehicle.
- Optionally used to preserve colors of vehicles in spawn tables.
-
-
-
-
- Invoked prior to built-in death logic.
-
-
-
-
- Event for plugins when player dies.
-
-
-
-
- Invoked after player finishes respawning.
-
-
-
-
- Tracks this player as an aggressor if they were recently an aggressor or if they haven't been attacked recently.
-
- Ignores rules and just make aggressive.
- Whether to call markAggressive on group members.
-
-
- Should damage be dealt even while inside safezone?
-
-
-
- Set bleeding state and replicate to owner if changed.
-
-
-
-
- Set legs broken state and replicate to owner if changed.
-
-
-
-
- Add to or subtract from stamina level.
- Does not replicate the change.
-
-
-
-
- Add to or subtract from stamina level.
- Does not replicate the change.
-
-
-
-
- Called from the server to modify stamina.
-
-
-
-
- Add to or subtract from stamina level on the client and server.
-
-
-
-
- Called from the server to induce a hallucination.
-
-
-
-
- Add to or subtract from hallucination level on the client.
-
-
-
-
- Add to or subtract from warmth level.
- Does not replicate the change.
-
-
-
-
- Called from the server to modify warmth.
-
-
-
-
- Add to or subtract from warmth level on the client and server.
-
-
-
-
- Add to or subtract from oxygen level.
- Does not replicate the change.
-
-
-
-
- Add to or subtract from health level.
- Replicates change to owner.
-
-
-
-
- Add to or subtract from food level.
- Replicates change to owner.
-
-
-
-
- Add to or subtract from water level.
- Replicates change to owner.
-
-
-
-
- Add to or subtract from virus level.
- Replicates change to owner.
-
-
-
-
- Used by plugins to respawn the player bypassing timers. Issue #2701
-
-
-
-
- Used to refill all client stats like stamina
-
-
-
-
- Used by UI. True when underwater or inside non-breathable oxygen volume.
-
-
-
-
- No longer used in vanilla. Kept in case plugins are using it.
-
-
-
-
- No longer used in vanilla. Kept in case plugins are using it.
-
-
-
-
- No longer used in vanilla. Kept in case plugins are using it.
-
-
-
-
- Actual internal implementation.
-
-
-
-
- World to local bounds only works well for axis-aligned icons.
-
-
-
-
- Unity's Camera.orthographicSize is half the height of the viewing volume. Width is calculated from aspect ratio.
-
-
-
-
- This value is confusing because in the level editor it is the normalized radius, but in-game it is the radius.
-
-
-
-
- Fading in.
-
-
-
-
- Finished fading in.
-
-
-
-
- Fading out.
-
-
-
-
- Finished fading out.
-
-
-
-
- Extensions to the built-in Input class.
-
-
-
-
- Wrapper for Input.GetKey, but returns false while typing in a uGUI text field.
-
-
-
-
- Wrapper for Input.GetKeyDown, but returns false while typing in a uGUI text field.
-
-
-
-
- Wrapper for Input.GetKeyUp, but returns false while typing in a uGUI text field.
-
-
-
-
- Should be used anywhere that Input.GetKeyDown opens a UI.
-
- Each frame one input event can be consumed. This is a hack to prevent multiple UI-related key presses from
- interfering during the same frame. Only the first input event proceeds, while the others are ignored.
-
- True if caller should proceed, false otherwise.
-
-
-
- Get mouse position in viewport coordinates where zero is the bottom left and one is the top right.
-
-
-
-
- Original type on the Russia map which requires a mask with filters.
-
-
-
-
- Requires a mask with filters and full body suit.
-
-
-
-
- Damage dealt to players while inside the volume if they *don't* have clothing matching the deadzone type.
- Could help prevent players from running in and out to grab a few items without dieing.
-
-
-
-
- Damage dealt to players while inside the volume if they *do* have clothing matching the deadzone type.
- For example, an area could be so dangerous that even with protection they take a constant 0.1 DPS.
-
-
-
-
- Virus damage to players while inside the volume if they *don't* have clothing matching the deadzone type.
- Defaults to 6.25 to preserve behavior from before adding this property.
-
-
-
-
- Rate of depletion from gasmask filter's quality/durability.
- Defaults to 0.4 to preserve behavior from before adding this property.
-
-
-
-
- This value is confusing because in the level editor it is the normalized radius, but in-game it is the square radius.
-
-
-
-
- Nelson 2024-06-10: Added this property after nodes were converted to volumes. i.e., only old levels from
- before this property were added still have nodes, so it's expected that they won't deal damage over time.
-
-
-
-
- Same description as .
-
-
-
-
- Same description as .
-
-
-
-
- Same description as .
-
-
-
-
- Get real IPv4 address of remote player NOT the relay server.
-
- True if address was available, and not flagged as a relay server.
-
-
-
- See above, returns zero if failed.
-
-
-
-
- When placing structures that snap to grid multiple requests can come
- in to the server at the same time, and checking overlaps against structures
- can be problematic, so as a backup we track pending build requests
- and cancel ones which conflict.
-
-
-
-
- Register a location as having something built there soon.
-
- Unique handle to later finish the request.
-
-
-
- Is a location available to build at (i.e. no pending builds)?
-
- False if there are any outstanding build requests for given location.
-
-
-
- Notify that a previously registered build has been completed.
-
- Unique handle.
-
-
-
- Nelson 2023-08-11: this probably should be rewritten a bit if used in the future
- because the error context currently assumes this is an item reward for consumables.
-
-
-
-
- Resolve table as items and grant random number to player.
-
-
-
-
- Resolve table as items and grant random number to player.
-
-
-
-
- Enumerate random number of valid assetIDs.
-
-
-
-
- Converts Steam BBcode tokens into widgets displayable using Glazier UI.
-
-
-
-
- If false, expect LineBreak tokens in input. (default false)
- If true, insert line breaks where appropriate.
- Steam's new visual editor doesn't emit newlines, instead inferring line breaks from paragraph blocks. To
- make life easier we will do the same for the main menu announcement feed.
-
-
-
-
- Vanilla maximum level.
-
-
-
-
- If set, maximum skill level attainable through gameplay.
-
-
-
-
- Multiplier for XP upgrade cost.
-
-
-
-
- Get maximum level, or maxUnlockableLevel if set.
-
-
-
-
-
-
- Implemented by components the player can talk with using DialogeAssets. (e.g., InteractableObjectNPC)
-
-
-
-
- Used to test whether player is within range.
- Ideally, this should be removed in the future in favor of the server resetting speaker when out of range.
-
-
-
-
- Get a net ID that can be used with GetDialogueTargetFromNetId to resolve IDialogueTarget in multiplayer.
-
-
-
-
- Called on server to test whether object conditions are met.
-
-
-
-
- Called on server to find the start of conversation dialogue asset.
-
-
-
-
- Used in error messages.
-
-
-
-
- Called on client to format in UI.
-
-
-
-
- Helper wrapping Unturned's usage of AudioListener.volume, which is the master volume level.
- This makes it easier to track what controls the master volume and avoid bugs.
-
-
-
-
- Is audio muted because this is a dedicated server?
-
- While dedicated server should not even be processing audio code,
- older versions of Unity in particular have issues with headless audio.
-
-
-
-
- Is audio muted because loading screen is visible?
-
-
-
-
- Player's volume multiplier from the options menu.
-
-
-
-
- Player's unfocused volume multiplier from the options menu.
-
-
-
-
- Mute or un-mute audio depending whether camera is valid.
-
-
-
-
- Synchronize AudioListener.volume with Unturned's parameters.
-
-
-
-
- Note: new official code should be using per-method rate limit attribute.
- This is kept for backwards compatibility with plugins however.
-
- Timestamp for server-side rate limiting.
-
-
-
-
- Realtime this action was performed.
-
-
-
-
- Realtime since performedRealtime.
-
-
-
-
- if(myRateLimit.throttle(1.0))
- return; // less than 1s passed
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- List of all interactable items. Originally only used to clamp their distance from the drop point to ensure
- clients can always pick them up, but now used to find items within a radius for nearby menu as well.
-
-
-
-
- Kept for plugin backwards compatibility.
- This one is problematic because on the client physics can move items between regions.
-
-
-
-
- Find physically simulated items within radius.
-
-
-
-
- Despawn any old items in the current despawn region.
-
- True if the region had items to search through.
-
-
-
- Attempt to respawn an item in the current respawn region.
-
- True if an item was succesfully respawned.
-
-
-
- Not ideal, but there was a problem because onLevelLoaded was not resetting these after disconnecting.
-
-
-
-
- Instantiate at least this many items per frame even if we exceed our time budget.
-
-
-
-
- Sort servers by name A to Z.
-
-
-
-
- Sort servers by name Z to A.
-
-
-
-
- Persistent identifier for server. Relies on server assigning a Game Server Login Token (GSLT).
- i.e., servers without GSLT cannot be bookmarked.
-
-
-
-
- IP address or DNS name to use as-is, or a web address to perform GET request.
- Servers not using Fake IP can specify just a DNS entry and a static query port.
- Servers using Fake IP are assigned random ports at startup, but can implement a web API endpoint to return
- the IP and port.
-
- Nelson 2025-01-20: Making this optional now. The downside is we can't perform a Steam A2S query without
- IP/port, but the upside is players can more easily join their non-port-forwarded servers.
-
-
-
-
- Steam query port. Zero for servers using Fake IP.
-
-
-
-
- Name updated from SteamServerAdvertisement.
-
-
-
-
- Short description updated from SteamServerAdvertisement.
-
-
-
-
- Small icon updated from SteamServerAdvertisement.
-
-
-
-
- Used by UI to track whether it's been added/removed.
-
-
-
-
- Allows player to save server advertisement to join again later. Semi-replacement for Steam's built-in favorites
- and history lists because as of 2024-04-26 they don't seem to work properly with Fake IP.
-
-
-
- details if advertisement is bookmarked.
-
-
-
- Restore a removed bookmark.
-
-
-
-
- Static functions for creating monitor instance on server.
-
-
-
-
- Entry point called by dedicated server after loading level.
-
-
-
-
- Create vanilla update monitor that watches for changes to workshop level file and any other mods.
-
-
-
-
- Helper to get updated timestamp from workshop items loaded by DedicatedUGC.
-
-
-
-
- Helper to create monitored item for use with default DedicatedWorkshopUpdateMonitor implementation.
-
-
-
-
- For use with default DedicatedWorkshopUpdateMonitor implementation.
-
-
-
-
- Get index within bounds assuming list is not empty.
-
-
-
-
- Add a new item using its default constructor.
-
-
-
-
- Apply shader name redirects until a final name is found,
- and then load shader for compatible version of Unity.
-
-
-
-
- Apply shader name redirects until a final name is found.
- Used to fix renamed shaders loaded from old asset bundles.
-
-
-
-
- Names of older shaders mapped to their renamed counterparts.
- Used to fix shaders loaded from old asset bundles.
-
-
-
-
- Delete all savedata folders for player's characters.
-
-
-
-
- Number of Attack_# animations.
-
-
-
-
- Number of Eat_# animations.
-
-
-
-
- Number of Glance_# animations.
-
-
-
-
- Number of Startle_# animations.
-
-
-
-
- Maximum distance on the XZ plane.
-
-
-
-
- Maximum distance on the XZ plane when attacking vehicles.
-
-
-
-
- Maximum distance on the Y axis.
-
-
-
-
- Minimum seconds between attacks.
-
-
-
-
- Temporary until something better makes sense? For Spyjack.
-
-
-
-
- If true, animal won't start moving until startle animation finishes.
-
-
-
-
- Allows mappers to bulk replace assets by listing pairs in a text file.
- https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/2275
-
-
-
-
- If a redirector for oldGuid exists, returns target asset. Otherwise null.
-
-
-
-
- Component in the root Menu scene.
- Additively loads decoration levels without modifying main scene.
-
-
-
-
- Prevents static member from being initialized during MonoBehaviour construction. (Unity warning)
-
-
-
-
- Nelson 2024-02-06: when looking into resolving public issue #3703 I figured since there is a common behavior
- between InteractableObjectQuest, InteractableObjectNote, and InteractableObjectDropper (in that they all
- request the server to do X we may as well support a "mod hook" that works with all three.
-
-
-
-
- Controls where attachments looks for ADS alignment transform.
-
-
-
-
- Look for aim alignment transform relative to sight model.
- Defaults to Model_0/Aim.
-
-
-
-
- Look for aim alignment transform relative to equipable prefab.
- Requires setting AimAlignment_Path.
-
-
-
-
- Factor e.g. 2 is a 2x multiplier.
- Prior to 2022-04-11 this was the target field of view. (90/fov)
-
-
-
-
- Zoom factor used in third-person view.
-
-
-
-
- Whether main camera field of view should zoom without scope camera / scope overlay.
-
-
-
-
- Controls where to find AimAlignmentTransformPath.
-
-
-
-
- If set, find this transform relative to AimAlignmentTransformOwner.
-
-
-
-
- Position offset relative to Aim transform or transform specified by aimAlignmentTransformPath.
-
-
-
-
- [0, 1] local distance from center to start of line.
-
-
-
-
- [0, 1] local width of horizontal line.
-
-
-
-
- Whether line/number are on left or right side of the center line.
-
-
-
-
- If true, text label for distance is visible.
-
-
-
-
- Optional component on Turret_# GameObject for modding UnityEvents.
-
-
-
-
- Optional collider matching the player capsule to prevent short vehicles (e.g. bikes) from clipping into walls.
-
-
-
-
- Displays a single random item. Placed under the other main menu buttons.
-
-
-
-
- Hide existing icon until refresh.
- Experimented with doing this for every refresh, but it looks bad in particular for hotbar.
-
-
-
-
- Name of the asset bundle.
-
- core.content
-
-
-
- Path within the asset bundle.
-
-
-
-
- Used to test whether player can fit in a space.
- Includes terrain because tested capsule could be slightly underground, and clip to prevent exploits at sky limit.
-
-
-
-
- Used for third-person camera in vehicle.
- Does not include resource layer because attached barricades are put on that layer.
- Barricades layer itself is included to prevent looking inside player bases.
-
-
-
-
- Used to test whether player can enter a vehicle.
- Does not include resource layer because attached barricades are put on that layer.
-
-
-
-
- 2023-02-02: adding more layers since splatter can be attached to them now.
- parent should only be set if that system also calls ClearAttachments, otherwise attachedEffects will leak memory.
-
-
-
-
- Layer mask for CharacterController overlap test.
-
-
-
-
- Layer mask for CharacterController overlap test while inside landscape hole volume.
-
-
-
-
- Lightning strike raycasts from sky to ground using this layer mask.
-
-
-
-
- Invoked when component is enabled and when the game object is activated.
-
-
-
-
- Invoked when component is disabled and when the game object is deactivated.
- Note that if the component or game object spawn deactivated this will not be immediately invoked.
-
-
-
-
- Allows Unity events to print messages to the log file for debugging.
-
-
-
-
- Text to use when PrintInfo is invoked.
-
-
-
-
- Every time the inventory changes this number is incremented.
- While a little messy, the idea is to prevent inventory checks from happening every frame.
-
-
-
-
- Should be called every time something changes in the inventory.
-
-
-
-
- Helper to prevent checking the inventory every frame for systems that don't use events.
-
-
-
-
- Did owner call askInventory yet?
- Prevents duplicate tell_X RPCs from being sent to owner prior to initial sync.
- Ideally should be cleaned up with netcode refactor. (Client should not need to ask server for initial state.)
-
-
-
-
- Intended as nearly a drop-in replacement for .
-
-
-
-
- Intended as nearly a drop-in replacement for .
-
-
-
-
- Intended as nearly a drop-in replacement for .
-
-
-
-
- Intended as nearly a drop-in replacement for .
-
-
-
-
- Intended as nearly a drop-in replacement for .
-
-
-
-
- Intended as nearly a drop-in replacement for .
- This variant wraps FindFirstItemByAsset and manages the results list for you.
- Only use result if true is returned, otherwise it's invalid.
-
-
-
-
- Intended as nearly a drop-in replacement for .
- This variant wraps FindFirstItemByAsset and manages the results list for you.
-
-
-
-
- Helper for tryAddItemAuto.
-
-
-
-
- Given an item coordinate (page, x, y) could a new item take the place of an old (existing) item without
- overlapping other item(s) space? Always true for equipment slots (page less than SLOTS).
- For example if oldSize is (1, 2) rot 0, and newSize is (2, 1) rot 1, then they can swap.
-
-
-
-
- Swap coordinates of two existing items.
- Rotation is provided to handle differently shaped items e.g. a 1x2 item with a 2x1 item.
-
-
-
-
- Swap coordinates of two existing items.
- Rotation is provided to handle differently shaped items e.g. a 1x2 item with a 2x1 item.
-
-
-
-
- Called from player movement to close storage that has moved away.
-
-
-
-
- Serverside open a storage crate and notify client.
-
-
-
-
- Serverside grant access to car trunk storage and notify client.
-
-
-
-
- Serverside revoke trunk access and notify client.
-
-
-
-
- Called on both client and server, as well as by storage itself when destroyed.
-
-
-
-
- Please use SearchContents instead! To perform an equivalent search:
- • Set IncludeEquipmentSlots to false.
- • Set IncludeActiveStorageContainer to false.
- • Set ItemType to type.
- • Set IncludeEmpty to false.
- • Set IncludeMaxQuality to true.
- OR use the nearly drop-in replacement FindItemsByType.
-
-
-
-
- Please use SearchContents instead! To perform an equivalent search:
- • Set IncludeEquipmentSlots to false.
- • Set IncludeActiveStorageContainer to false.
- • Set ItemType to type.
- • Set IncludeEmpty to false.
- • Set IncludeMaxQuality to true.
- • Set AnyCaliberIds to calibers.
- • Set IncludeUnspecifiedCaliber to allowZeroCaliber.
- OR use the nearly drop-in replacement FindAttachmentsByCaliber.
-
-
-
-
- Please use SearchContents instead! To perform an equivalent search:
- • Set IncludeEquipmentSlots to false.
- • Set IncludeActiveStorageContainer to false.
- • Set ItemType to type.
- • Set IncludeEmpty to false.
- • Set IncludeMaxQuality to true.
- • Set CaliberId to caliber.
- • Set IncludeUnspecifiedCaliber to allowZeroCaliber.
- OR use the nearly drop-in replacement FindAttachmentsByCaliber.
-
-
-
-
- Please use SearchContents instead! To perform an equivalent search:
- • Set IncludeEquipmentSlots to false.
- • Set IncludeActiveStorageContainer to false.
- • Set AssetRef to id.
- • Set IncludeEmpty to findEmpty.
- • Set IncludeMaxQuality to findHealthy.
- OR use the nearly drop-in replacement FindItemsByAsset.
-
-
-
-
- Please use SearchContents instead! To perform an equivalent search:
- • Set IncludeEquipmentSlots to true.
- • Set IncludeActiveStorageContainer to true.
- • Set MaxResultsCount to 1.
- • Set AssetRef to id.
- • Set IncludeEmpty to false.
- • Set IncludeMaxQuality to true.
- OR use the nearly drop-in replacements FindFirstItemByAsset or HasItemByAsset.
-
-
-
-
- Filter for whether the Permanent Gold Upgrade DLC is required to join a server.
-
-
-
-
- All servers pass the filter.
-
-
-
-
- Only non-gold servers pass the filter.
-
-
-
-
- Only gold servers pass the filter.
-
-
-
-
- Can be added to any GameObject to listen for the Event NPC reward type.
-
-
-
-
- *_ID configured in NPC rewards list.
-
-
-
-
- If true the event will only be invoked in offline mode and on the server.
-
-
-
-
- Invoked when NPC global event matching EventId is processed.
-
-
-
-
- Invoked when timer expires.
-
-
-
-
- Number of seconds to use when SetDefaultTimer is invoked.
-
-
-
-
- Should timer loop when SetDefaultTimer is invoked?
-
-
-
-
- Stop pending timer from triggering.
-
-
-
-
- Handle to stop the coroutine.
-
-
-
-
- Horizontal distance before road begins tapering off into the terrain.
-
-
-
-
- Size along the "up" axis.
-
-
-
-
- Distance along the terrain surface normal to move each road vertex.
-
-
-
-
- Multiplier for how far along the road before texture repeats.
-
-
-
-
- Defaults to None, in which case the backwards-compatible chart classification is used.
-
-
-
-
- Physics material to assign to road colliders.
- Replaces the "concrete" toggle in the older editor.
-
-
-
-
- Can be added to Vehicle Turret_# GameObject to receive events.
-
-
-
-
- Invoked when turret gun is fired.
-
-
-
-
- Invoked when turret gun begins reload sequence.
-
-
-
-
- Invoked when turret gun begins hammer sequence.
-
-
-
-
- Invoked when turret gun begins aiming.
-
-
-
-
- Invoked when turret gun ends aiming.
-
-
-
-
- Invoked when turret gun controlled by a local player begins aiming.
-
-
-
-
- Invoked when turret gun controlled by a local player ends aiming.
-
-
-
-
- Invoked when turret gun controlled by a local player begins inspecting attachments.
-
-
-
-
- Invoked when turret gun controlled by a local player ends inspecting attachments.
-
-
-
-
- Invoked when any player enters the seat.
-
-
-
-
- Invoked when any player exits the seat.
-
-
-
-
- Invoked when a locally controlled player enters the seat.
-
-
-
-
- Invoked when a locally controlled player exits the seat.
-
-
-
-
- Nelson 2025-06-19: using server-provided connection details is useful because
- it can find its public IP (e.g., joining by LAN and sharing WAN IP), and/or
- its fake IP (again when joining by LAN).
-
-
-
-
- Is client UTC time within this time range?
-
-
-
-
- Is server UTC time within this time range?
-
-
-
-
- Adds custom data to base physics material asset.
- For example how a vanilla material should respond to custom laser guns.
-
-
-
-
- Number of players inside the navmesh when the beacon was placed.
- Clamped to 1 if ShouldScaleWithNumberOfParticipants is false.
-
-
-
-
- Crossover from Dying Light. Only spawns during night. Explodes into fire at dawn.
-
-
-
-
- Crossover from Dying Light. Only spawns during night. Explodes into fire at dawn.
-
-
-
-
- Elver endgame boss with reduced bullet damage and wind zombie stomping attacks.
-
-
-
-
- Kuwait final boss with increased rock throwing, damage players inside vehicle (turrets), and flashbangs.
-
-
-
-
- Buak boss types have a red-eyed flashbang effect.
-
-
-
-
- Is this one of the Dying Light volatile zombies? Only spawns during night. Explodes into fire at dawn.
-
-
-
-
- Does this have the BOSS_* prefix?
-
-
-
-
- Same as FindChildRecursive, but skip specific child.
-
-
-
-
- Editor-only helper to read all text/dialogue.
-
-
-
-
- Version before named version constants were introduced. (2023-11-07)
-
-
-
-
- Delegate not reset when level reset.
-
-
-
-
- Delegate not reset when level reset.
-
-
-
-
- Delegate not reset when level reset.
-
-
-
-
- Delegate not reset when level reset.
-
-
-
-
- Number of in-game days this world has run.
- Incremented each time night ends.
- Saved between sessions.
-
-
-
-
- Weather has not been decided yet. Level might not have any enabled.
-
-
-
-
- Weather has been forecast. Timer counts down until activation.
-
-
-
-
- Weather is now active. Timer counts down until deactivation.
-
-
-
-
- Weather is active. Will not deactivate naturally.
- Prevents loaded perpetual weather from deactivating.
-
-
-
-
- Determines which weather can naturally be scheduled in this level.
- Includes default rain and snow for older levels.
-
-
-
-
- Seconds until weather activates.
-
-
-
-
- Seconds until weather deactivates.
-
-
-
-
- Forecast or active weather.
-
-
-
-
- Set weather active and disable scheduling.
-
-
-
- True if given weather has config.
-
-
-
- Cancel scheduled weather and re-evaluate on next update.
-
-
-
-
- Cancel active weather and prevent next weather from being scheduled.
-
-
-
-
- Get weather override for the currently loaded level.
- Warning: this is kept for backwards compatibility, whereas newer maps will set LevelAsset.perpetualWeather.
-
-
-
-
- Assign schedulableWeathers array according to level asset or legacy lighting settings.
-
-
-
- True if perpetual weather was enabled, false otherwise.
-
-
-
- Used by dawn and dusk skins which pull per-level lighting colors.
-
-
-
-
- Note: unfortunately it appears the stupid skin system always instantiated materials, but never destroys
- them... will need to clean this up, but it will be tricky because the game does not hold a reference to them.
-
-
-
-
- If true, sets the Magazine attachment hook inactive while this skin is applied. (guns only)
-
- Nelson 2025-03-10: Adding this to address mismatched Ace bullets with certain skins. (public issue #4923)
- It should be fine for vanilla guns because there shouldn't be assumptions about Magazine enable/disable,
- but modded guns may have different expectations (particularly with GunAttachmentEventHook).
-
-
-
-
- Used by melee skins to override impact sound.
-
-
-
-
- Restricts which items can be crafted.
-
-
-
-
- Restrict blueprints that consume these items.
-
-
-
-
- Restrict blueprints that generate these items.
-
-
-
-
- If false, blueprints on vanilla/core/built-in items are not allowed. Defaults to true.
-
-
-
-
- If null, use index instead.
-
-
-
-
- Restrict specific blueprints.
-
-
-
-
- Thanks to Glenn Fiedler for this RK4 implementation article:
- https://gafferongames.com/post/integration_basics/
-
-
-
-
- Higher values return to the target position faster.
-
-
-
-
- Higher values reduce bounciness and settle at the target position faster.
- e.g. a value of zero will bounce back and forth for a long time (indefinitely?)
-
-
-
-
- Absolute path to project directory, e.g. C:/U3
-
-
-
-
- Overrides breathability for example in a deep cave with no oxygen, or near a deep sea plant that provides oxygen.
-
-
-
-
- Find highest alpha breathable volume overlapping position.
-
-
-
-
- Find highest alpha non-breathable volume overlapping position.
-
-
-
-
- Unlike format, this returns null if key doesn't exist.
-
-
-
-
- This overload supports legacy Reward_# format.
-
-
-
-
- This overload doesn't support legacy Reward_# format.
-
-
-
-
- Payload for the DamageTool.explode function.
- Moved into struct because the amount of arguments to that function were insane, but now is not the time to completely refactor damage.
-
-
-
-
- Speed to launch players away from blast position.
-
-
-
-
- Can be added to any GameObject to receive weather events:
- - Day/Night
- - Full Moon
- - Rain
- - Snow
-
-
-
-
- Invoked when night changes to day.
-
-
-
-
- Invoked when day changes to night.
-
-
-
-
- Invoked when a zombie full-moon event starts.
-
-
-
-
- Invoked when a zombie full-moon event finishes.
-
-
-
-
- Invoked when rain starts to fall.
-
-
-
-
- Invoked when rain finishes falling.
-
-
-
-
- Invoked when snow starts to fall.
-
-
-
-
- Invoked when snow finishes falling.
-
-
-
-
- Registers renderers with DynamicWaterTransparentSort manager.
-
-
-
-
- In vanilla this field is ONLY used for the per-character saves on servers.
- If that changes check that it does not affect the savedata options.
-
-
-
-
- 20-byte SHA1 salted hashes of client's hardware ID(s).
- Providing multiple HWIDs makes it more difficult to bypass HWID bans because spoofing a single component
- only changes one of the bans. For example spoofing the MAC address will not spoof the Windows GUID.
-
- Randomized if system did not support hwid, or perhaps player is cheating.
- Should not be called on the client side, but just in case there is a default zeroed array.
-
-
-
-
- Ignore requests to kick me in debug mode. :)
- Steam ID may not have been authenticated yet here which may seem like a security risk, but fortunately that
- would get caught when Steam auth ticket response is received.
-
-
-
-
- Array of 20-byte SHA1 hashes.
-
-
-
-
- Not using rate limit attribute because this is potentially called for hundreds of structures at once,
- and only admins will actually be allowed to apply the transform.
-
-
-
-
- See BarricadeRegion.FindBarricadeByRootFast comment.
-
-
-
-
- For code which does not know whether transform exists and/or even is part of a house.
- See BarricadeRegion.FindBarricadeByRootFast comment.
-
-
-
-
- Steam APIs returned uint32 IPv4 addresses in the past, so Unturned code depends on them in some places.
- Ideally these uses should be updated for IPv6 support going forward.
- For the meantime this method converts from the new format to the old format for backwards compatibility.
-
-
-
-
- Assets cannot be loaded from Resources during static initialization, so this reference defers the load until
- the first time user tries to use it.
-
-
-
-
- Material on Model_0, the low-speed actual blade.
-
-
-
-
- Renderer on Model_1.
-
-
-
-
- Material on Model_1, the high-speed blurred outline.
-
-
-
-
- transform's localRotation when the vehicle was instantiated.
-
-
-
-
- Rigidbody component on the root game object.
-
-
-
-
- If true, set sharedMaterial. If false, set material.
-
-
-
-
- Calculated speed of this track. Used by some wheels.
-
-
-
-
- Temporary array for use with physics queries.
-
-
-
-
- Temporary list for gathering materials.
-
-
-
-
- Precursor to Net ID. Should eventually become obsolete.
-
-
-
-
- Asset ID. Essentially obsolete at this point.
-
-
-
-
- Used to restore vehicle materials when changing skin.
-
-
-
-
- Only used by trains. Constrains the train to this path.
-
-
-
-
- Unfortunately old netcode sends train position as a Vector3 using the X channel, but new code only supports
- [-4096, 4096) so we pack the train position into all three channels. Eventually this should be cleaned up.
-
-
-
-
- Nelson 2024-06-24: When first implementing batteries there was only the vanilla battery item, and it was
- fine to delete it when the charge reached zero. This may not be desirable, however, so zero now represents
- no battery item is present, and one represents the battery is completely drained but still there.
-
-
-
-
- Is this vehicle inside a safezone?
-
-
-
-
- Duration in seconds since this vehicle entered a safezone,
- or -1 if it's not in a safezone.
-
-
-
-
- Should askDamage requests currently be ignored because we are inside a safezone?
-
-
-
-
- Nelson 2024-06-24: This property is confusing, especially with isEnginePowered, but essentially represents
- starting the engine ignition when a player enters the driver's seat. If true, there's a driver, there was
- sufficient battery to start (or battery not required), and the engine wasn't underwater.
-
-
-
-
- Doesn't imply the vehicle *uses* batteries, only that it contains a battery item with some charge left.
-
-
-
-
- Doesn't imply the vehicle *uses* batteries, only that it contains a (potentially uncharged) battery item.
-
-
-
-
- Nelson 2024-11-13: Adding this primarily to indicate whether a vehicle was spawned by the level versus
- placed by a player or bought from a vendor. This way if the number of "naturally"-spawned vehicles is below
- a certain threshold the level can spawn more. (e.g., a server where players have hoarded a bunch of
- vendor-purchased vehicles and no default vehicles are left for new players.)
-
- Only available on the server.
- Defaults to true for old saves to prevent suddenly spawning a bunch more vehicles.
-
-
-
-
- Whether the player can shoot their equipped turret.
-
-
-
-
- Do any of the passenger seats have a player?
-
-
-
-
- When the server saves it doesn't include any cleared vehicles.
-
-
-
-
- If true, the vehicle will be destroyed at the end of the frame. Set before OnPreDestroyVehicle.
- Used to reject requests to enter the vehicle on the same frame it's being destroyed.
-
-
-
-
- Magnitude of rigidbody velocity, replicated by current simulation owner.
-
-
-
-
- Rigidbody velocity along forward axis, replicated by current simulation owner.
-
-
-
-
- Replicated by current simulation owner. Target velocity used, e.g., for helicopter engine speed.
-
-
-
-
- [0, 1] If forward velocity is greater than zero, get normalized by target forward speed. If less than zero,
- get normalized by target reverse speed. Result is always positive.
-
-
-
-
- Animated toward ReplicatedForwardVelocity.
-
-
-
-
- Animated toward ReplicatedVelocityInput.
-
-
-
-
- [-1.0, 1.0] Available on both client and server.
-
-
-
-
- Animated towards replicated steering angle. Used for steering wheel and front steering column.
- Non-simulating wheels (e.g., car driven by remote client) use this as steering angle multiplied by their
- per-wheel .
-
-
-
-
- Front steering column of bicycles and motorcycles.
-
-
-
-
- If true, server should replicate latest state to clients.
-
-
-
-
- Used by several engine modes to represent an interpolated velocity target according to input.
-
-
-
-
- Set from inputTargetVelocity then multiplied by any factors which shouldn't affect the player's "target"
- speed ike boatTraction.
-
-
-
-
- Vehicles with buoyancy interpolate this value according to whether it's in the water, and multiply
- boat-related forces by it.
-
-
-
-
- Rigidbody on the Vehicle prefab.
- (not called "rigidbody" because as of 2024-02-28 the deprecated "rigidbody" property still exists)
-
-
-
-
- Primarily for backwards compatibility with plugins. Previously, multiple "updates" could be queued per
- vehicle and sent to clients. This list was public, unfortunately, so plugins may rely on submitting vehicle
- updates. After making it obsolete each vehicle can only be flagged as needing a replication update, and
- this is reset after each server replication update.
-
-
-
-
- Is player currently allowed to repair this vehicle?
-
-
-
-
- Give battery item to player and set battery charge to zero.
-
-
-
-
- Nelson 2024-06-24: Previously, this wouldn't give an item to the player if the quality was zero. Now it
- trusts the caller to validate we have a battery item to give, and respects .
-
-
-
-
- Can a tire item be used with this vehicle?
-
-
-
-
- Find the index of the wheel collider that contains this position.
-
-
-
-
- Find the index of the wheel collider closest to this position, or -1 if not near any.
-
-
-
-
- Called during simulate at fixed rate.
-
-
-
-
- Is a given player allowed access to this vehicle?
-
-
-
-
- If true, sentry ignores this vehicle early in target scanning.
- Friendly if locked by owner/group of sentry, or driven by owner/group of sentry.
-
-
-
-
- Average vehicle-space position of wheel bases.
-
-
-
-
- Turn taillights on/off depending on state.
-
-
-
-
- This check should really not be necessary, but somehow it is a recurring issue that servers get slowed down
- by something going wrong and the vehicle exploding a billion times leaving items everywhere.
-
-
-
-
- VehicleManager expects this to only find the seat, not add the player,
- because it does a LoS check.
-
-
-
-
- Call on the server to empty the vehicle of passengers.
-
-
-
-
- Kicks them out even if there isn't a good spot. Used when killing the occupant.
-
- True if player is seated, false otherwise.
-
-
-
- Can a safe exit point currently be found?
-
- Called when considering to add a new passenger to prevent players from entering
- a vehicle that they wouldn't be able to exit properly.
-
-
-
-
- Could a player capsule fit in a given exit position?
-
-
-
- True if anything was hit.
-
-
-
- Raycast along a given direction, penetrating through barricades attached to THIS vehicle.
- Returns point at the end of the ray if unblocked, or a safe (radius) distance away from hit.
-
-
-
-
- Fallback if there are absolutely no good exit points.
- Sets point and angle with a normal player spawnpoint.
-
- Once vehicle is completely surrounded there is no nice way to pick an exit point. Finding
- a point upwards is abused to teleport upward into bases, finding an empty capsule nearby is
- abused to teleport through walls, so if we're sure there isn't a nice exit point we can
- fallback to teleporting them to a safe spawnpoint.
-
-
-
- True if we can safely exit.
-
-
-
- Initially use tryGetExit to find a safe exit, but if one isn't available then fallback to getExitSpawnPoint.
-
-
-
-
- Dedicated server simulate driving input.
-
-
-
-
- -1 is reverse.
- 0 is neutral.
- +1 is index 0 in gear ratios list.
-
-
-
-
- Engine RPM replicated by current simulation owner.
-
-
-
-
- Animated toward ReplicatedEngineRpm.
-
-
-
-
- Called when engine RPM exceeds threshold and there are more gears available.
- Purpose is to skip gear numbers that don't bring engine RPM within threshold (if possible).
-
-
-
-
- Called when engine RPM is below threshold and there are more lower gears available.
- Purpose is to skip gear numbers that don't bring engine RPM within threshold (if possible).
-
-
-
-
- Client simulate driving input.
-
-
-
-
- Nelson 2025-05-05: ran into a bug where our manual OnUpdate is called before Unity calls Start!
-
-
-
-
- Nelson 2025-05-02: keeping the previous comment from 2020-11-26 here. At first I wondered if 24 vehicles
- wasn't enough to properly test, but even with a higher vehicle count it can seemingly be *slower* to
- call Update manually. That said, calling Update manually does give us the option to time-slice vehicle
- updates. On the client and singleplayer we now update vehicles outside render distance at a lower
- frequency which saves ~0.1 ms per frame on my PC.
-
- 2020-11-26 experimented with dispatching all vehicle updates from C# in VehicleManager because they make up
- a significant portion of the MonoBehaviour Update, but the savings on my PC with 24 vehicles on PEI was
- minor. Not worth the potential troubles.
-
-
-
-
- Nelson 2025-04-22: it hopefully goes without saying the bicycle pedals are janky as heck, I'm just separating
- out the Update method to make profiling it easier.
-
-
-
-
- Nelson 2025-04-22: this should ideally be moved into FixedUpdate, incorrect to run in Update.
-
-
-
-
- Nelson 2025-04-22: this should ideally be moved into FixedUpdate, incorrect to run in Update.
-
-
-
-
- Update whether this vehicle is inside a safezone.
- If a certain option is enabled, unlock after time threshold is passed.
-
-
-
-
- Can be called without calling init.
-
-
-
-
- Called after initializing vehicle.
-
-
-
-
- Makes the collision detection system ignore all collisions between this vehicle and the given colliders.
- Used to prevent vehicle from colliding with attached items.
-
-
-
-
- Used to disable collision between skycrane and held vehicle.
-
-
-
-
- Transform used for exit physics queries.
-
-
-
-
- Find collider with the largest volume to use for exit physics queries.
-
-
-
-
- Set material on DepthMask child renderer responsible for hiding water when interior of vehicle is submerged.
-
-
-
-
- Skin material does not always need to be destroyed, so this is only valid if it should be destroyed.
-
-
-
-
- Materials that should be destroyed when this vehicle is destroyed.
-
-
-
-
- Handles to unregister from DynamicWaterTransparentSort.
-
-
-
-
- Materials to set _PaintColor on.
-
-
-
-
- Materials to move UVs in sync with wheels.
-
-
-
-
- Time.time decayTimer was last updated.
-
-
-
-
- Seconds since vehicle was interacted with.
-
-
-
-
- Fractional damage counter.
-
-
-
-
- transform.position used to test whether vehicle is moving.
-
-
-
-
- Text from *.dat localization file.
-
-
-
-
- Older *.content asset bundle reference.
-
-
-
-
- Newer *.masterbundle reference.
-
-
-
-
- Optional URL to open in web browser.
-
-
-
-
- Whether audio source should loop.
-
-
-
-
- Append suffix to name, or if name contains a '.' insert it before.
-
-
-
-
- Vendor asset that owns this buy/sell record.
-
-
-
-
- If not null, replaces item/vehicle description.
-
-
-
-
- Allows Unity events to startle nearby animals and zombies.
-
-
-
-
- Transform to spawn the alert at.
- If unset, this game object's transform will be used instead.
-
-
-
-
- If true, find the nearest player within ScanForPlayersRadius, and use the player's position as the alert
- origin.
-
-
-
-
- If UseScanForPlayers is enabled and this is true, an alert is broadcast even if no nearby player was found.
- Otherwise, alert is ignored if no nearby player was found.
-
-
-
-
- Used in a test scene to quickly test whether pooled components are cleaned up.
-
-
-
-
- Invoked after any player's stance changes (not including loading).
-
-
-
-
- Stance to fit available space when loading in.
-
-
-
- Distance zombies can detect this player within.
-
-
-
- Older, cached version of areEyesUnderwater.
-
-
-
-
- Return false if there are any external restrictions (e.g. reloading, handcuffed) preventing climbing.
-
-
-
-
- Test whether bottom of controller is currently inside a water volume.
-
-
-
-
- Test whether viewpoint is currently inside a water volume.
-
-
-
-
- Test whether body is currently inside a water volume.
- Enters the swimming stance while true.
-
-
-
-
- Draw debug capsule matching the player size.
-
-
-
-
- Draw standing-height debug capsule matching the player size.
-
-
-
-
- Is there enough height for our capsule at a position?
-
-
-
-
- Could a standing player capsule fit at the given position?
-
-
-
-
- Could a crouching player capsule fit at the given position?
-
-
-
-
- Could a prone player capsule fit at the given position?
-
-
-
-
- Could a standing player capsule teleport to the given position?
-
-
-
-
- Is there any compatible stance that can fit at position?
-
-
-
-
- Using our capsule's current height would there be enough space at a given position?
-
-
-
-
- Does capsule have appropriate clearance for a pending height change?
-
-
-
-
- Replicate stance to clients.
-
-
-
-
- Regular interact ray still hits the ladder, but we only allow climbing within a smaller range to make its
- teleport less powerful.
-
-
-
-
- Ladder forward ray is 0.75m, so we move slightly less than that away from the ladder.
-
-
-
-
- Export JSON report of Unturned's assets for economy usage.
-
-
-
-
- If true, contains child transform named Effect for mythical attachment.
-
-
-
-
- Attachment item IDs that get skinned specially.
-
-
-
-
- Is there a fallback material for attachments that respects their main metallic areas?
-
-
-
-
- Is there a fallback material without any special features?
-
-
-
-
- Is there a replacement mesh?
-
-
-
-
- Dawn and dusk skins pull per-lighting colors.
-
-
-
-
- Pool lists to avoid loopback re-using an existing list.
- Callers do not need to manually return lists because they are reset before each frame.
-
-
-
-
- Exit button only needs to wait for timer in certain conditions.
-
-
-
-
- Does the item being placed count as a "trap" for the purposes of vehicle placement restrictions?
-
-
-
-
- Should placement ghost material change be done recursively?
- e.g. Sentry has a deep hierarchy of meshes.
-
-
-
-
- Given path to a workshop map, try to find its /Bundles folder.
-
-
-
-
- Given path to a workshop map, try to find its /Content folder.
-
-
-
-
- Maps on the workshop are a root folder named after the published file id, containing
- the map folder itself with the level name. In order to load the map's bundles and content
- properly we need to find the nested Bundles and Content folders.
-
-
-
-
- 2023-02-28: note order is important because BarricadeManager saves as a byte!
-
-
-
-
- Invoked after tellGesture is called with the new gesture.
-
-
-
-
- Empty transform created at the world origin.
- The first-person Viewmodel transform is re-parented to this.
-
-
-
-
- Child of the first-person skull transform.
-
-
-
-
- Camera near world origin masking the first-person arms and weapon.
-
-
-
-
- Used by gun to hide viewmodel arms while aiming 2D scope, and by chainsaw to shake the viewmodel.
-
-
-
-
- Used to hide viewmodel arms while using a vehicle turret gun.
-
-
-
-
- Offsets main camera and aim rotation while aiming with a scoped gun.
-
-
-
-
- Animated toward viewmodelSwayMultiplier.
-
-
-
-
- Small number (0.1) while aiming, 1 while not aiming.
- Reduces viewmodel animation while aiming to make 3D sights more usable.
-
-
-
-
- Animated toward viewmodelOffsetPreferenceMultiplier.
-
-
-
-
- 0 while aiming, 1 while not aiming.
- Players can customize the 3D position of the viewmodel on screen, but this needs
- to be blended out while aiming down sights otherwise it would not line up with
- the center of the screen.
-
-
-
-
- If true, use the scope aim fov instead of non-scope fov.
- Useful for players with high (e.g. 160) fov to be able to use scopes.
-
-
-
-
- Animated toward viewmodelCameraLocalPositionOffset, recoil, and bayonet offsets.
-
-
-
-
- Abruptly offset when gun is fired, then animated back toward zero.
-
-
-
-
- Abruptly offset when gun is fired, then animated back toward zero.
- x = pitch, y = yaw, z = roll
-
-
-
-
- Abruptly offset when bayonet is used, then animated back toward zero.
-
-
-
-
- Animated while player is moving.
-
-
-
-
- Blended from multiple viewmodel parameters and then applied to viewmodelCameraTransform.
-
-
-
-
- Smoothing adds some initial blend-in which felt nicer for explosion rumble.
-
-
-
-
- Meshes are disabled until clothing is received.
-
-
-
-
- Target viewmodelCameraLocalPosition except while driving.
-
-
-
-
- Animated while playing is moving.
- x = pitch, y = roll
-
-
-
-
- Offset when player lands.
-
-
-
-
- Used to measure change in pitch between frames.
-
-
-
-
- Used to measure change in yaw between frames.
-
-
-
-
- Animated according to change in pitch/yaw input between frames so that gun rolls slightly while turning.
-
-
-
-
- Animated according to change in item position between frames so that animations have more inertia.
-
-
-
-
- Degrees per meter of item distance travelled.
- Pitch is driven by vertical displacement, yaw and roll are driven by horizontal.
- x = pitch, y = yaw, z = roll
-
-
-
-
- In third-person this delays leaning in case player only wanted
- to switch camera side without leaning.
-
-
-
- If true, include current animation speed modifier.
-
-
-
- At this point camera is already being shook, we just add some of the same shake to viewmodel for secondary motion.
-
-
-
-
- Called by clothing to make mesh renderers visible.
-
-
-
-
- Event for server plugins to monitor whether player is in-inventory.
-
-
-
-
- Rate limit is relatively high because this RPC handles open/close inventory notification.
-
-
-
-
- Nelson 2024-03-20: Adding this method because (at the time of writing) first and third-person renderers
- and skeletons are activated/enabled in InitializePlayer, onPerspectiveUpdated, and onLifeUpdated, and I
- want them to be consistent with the addition of the new NPC Cutscene Mode option.
-
-
-
-
- 2023-01-18: Viewmodel camera position was originally set during Update (and still is for compatibility),
- but for aiming alignment that uses the previous frame's animation position, so we also modify during
- LateUpdate to use this frame's animation position.
-
-
-
-
- Factor e.g. 2 is a 2x multiplier.
- Prior to 2022-04-11 this was the target field of view. (90/fov)
-
-
-
-
- [0, 1] percentage whether a shot decreases ammo count. Defaults to 100%.
- For example, 0.25 means 25% of shots will use a bullet, while the remaining 75% will be free.
-
-
-
-
- [0, 1] percentage whether a shot decreases quality. Defaults to 100%.
- Combined with the gun's chance of decreasing quality.
-
-
-
-
- Players/zombies within this range are treated as potential targets while scanning.
-
-
-
-
- Will not lose current target within this range. Prevents target from popping in and out of range.
-
-
-
-
- If true, this sentry can attack players. Defaults to true.
-
-
-
-
- If true, this sentry can attack zombies. Defaults to true.
-
-
-
-
- If true, this sentry can attack animals. Defaults to true.
-
-
-
-
- If true, this sentry can attack vehicles. Defaults to true.
-
-
-
-
- If the file already exists when writing we will move it to this path. (public issue #4636)
-
-
-
-
- If false this barricade cannot take damage.
-
-
-
-
- Modded barricades can disable pooling if they have custom incompatible logic.
-
-
-
-
- Defaults to false, except for explosive charges which bypass claims.
- Requested by Renaxon for collectible barricades that raiders can steal without destroying.
-
-
-
-
- Defaults to false, except for explosive charges which bypass claims.
- If true the item can be placed inside player clip volumes. (out of bounds)
-
-
-
-
- Should door colliders remain active while animation is playing?
- Enabled by modders trying to make stuff like elevators.
-
-
-
-
- Optional alternative barricade prefab specifically for the client preview spawned.
-
-
-
-
- By default, vehicles with "hooks" (such as the Skycrane) cannot pick up vehicles with barricades attached.
- If all barricades on the vehicle set this to true then the vehicle *can* be picked up. Defaults to false.
-
-
-
-
- Vehicle to place.
- Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
-
-
-
-
- Legacy ID of vehicle to place.
- Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
-
-
-
-
- Returned asset is not necessarily a vehicle asset yet: It can also be a VehicleRedirectorAsset which the
- vehicle spawner requires to properly set paint color.
-
-
-
-
- Can be added to any GameObject with a Trigger to receive events.
- Ensure that Layer will detect player overlaps. Trap is a good candidate.
-
-
-
-
- Invoked when a player enters the trigger.
- Called before OnFirstPlayerEnter.
-
-
-
-
- Invoked when a player exits the trigger.
- Called before OnAllPlayersExit.
-
-
-
-
- Invoked when first player enters the trigger, and not again until all players have left.
- Called after OnPlayerEnter.
-
-
-
-
- Invoked when last player exits the trigger.
- Called after OnPlayerExit.
-
-
-
-
- Nelson 2024-12-16: This menu and ESteamUGCType are far from ideal, but I'm just trying to hack in a new tag for
- server browser curation assets before the update. :P
-
-
-
-
- Nelson 2025-02-20: Hacking this in to address duplicate buttons when onPublishedAdded is called for a second
- page of published files. (public issue #4882)
-
-
-
-
- Allows Unity events to spawn items.
-
-
-
-
- Called when the player clicks the cosmetic, visual or skin toggle buttons.
-
-
-
-
- Invoked after any player's shirt values change (not including loading).
-
-
-
-
- Invoked after any player's shirt values change (not including loading).
-
-
-
-
- Invoked after any player's hat values change (not including loading).
-
-
-
-
- Invoked after any player's backpack values change (not including loading).
-
-
-
-
- Invoked after any player's backpack values change (not including loading).
-
-
-
-
- Invoked after any player's backpack values change (not including loading).
-
-
-
-
- Invoked after any player's glasses values change (not including loading).
-
-
-
-
- Null if not bookmarked.
-
-
-
-
- DNS entry to use if adding a bookmark for this server.
-
-
-
-
- Adjusts width and spacing of buttons along the bottom of the screen.
- Favorite and bookmark buttons can be hidden depending whether the necessary server details are set.
-
-
-
-
- Sort items with lowest "amount" to front of list.
-
-
-
-
- Sort items with highest "amount" to front of list.
-
-
-
-
- Sort items with lowest quality% to front of list.
-
-
-
-
- Sort items with highest quality% to front of list.
-
-
-
-
- Sum up number of items found, ignoring amount.
- Default except as described in TotalAmount comment.
-
-
-
-
- Sum up "amount" of each item. Optionally counting zero as one (ShouldCountEmptyAsOne).
- Default for legacy "ammo type" blueprints and FillTargetItem operation.
-
-
-
-
- Note: if calling ItemRef.Get() please use FindItemAsset instead to avoid redundant asset lookups.
-
-
-
-
- If true, items with an "amount" of zero are included in eligible supplies as amount 1.
- In practice (as of 2025-03-03), items with zero amount are empty containers such as magazines.
-
-
-
-
- Determines how totalAmount of each input is calculated.
-
-
-
-
- If true, items with an "amount" of zero are included in eligible supplies.
- Otherwise, they are ignored (default).
-
-
-
-
- If true, items with an "amount" >= their MaxAmount are ignored. Otherwise, they are eligible (default).
-
-
-
-
- If true, items with quality of 100% are eligible (default). Otherwise, they are ignored.
-
-
-
-
- Controls which items are used first. For example, whether to use the lowest quality items first.
-
-
-
-
- If true, delete input item. Defaults to true.
- Replaces the "tool" blueprint option.
-
-
-
-
- Does this blueprint input require the specified item?
-
-
-
-
- Controls whether vehicle allows barricades to be attached to it.
-
-
-
-
- Vehicle does not override placement. This means, by default, that barricades can be placed on the vehicle
- unless the barricade sets Allow_Placement_On_Vehicle to false. (e.g., beds and sentry guns) Note that
- gameplay config Bypass_Buildable_Mobility, if true, takes priority.
-
-
-
-
- Vehicle allows any barricade to be placed on it, regardless of the barricade's Allow_Placement_On_Vehicle
- setting. The legacy option for this was the Supports_Mobile_Buildables flag. Vanilla trains originally
- used this option, but it was exploited to move beds into tunnel walls.
-
-
-
-
- Vehicle prevents any barricade from being placed on it. Note that gameplay config Bypass_Buildable_Mobility,
- if true, takes priority.
-
-
-
-
- Scene hierarchy path relative to vehicle root.
-
-
-
-
- Index in renderer's materials array.
-
-
-
-
- If true, apply to every item in renderer's materials array.
-
-
-
-
- Controls how vehicle's default paint color (if applicable) is chosen.
-
-
-
-
- Not configured.
-
-
-
-
- Pick from the DefaultPaintColors list.
-
-
-
-
- Pick a random HSV using VehicleRandomPaintColorConfiguration.
-
-
-
-
- Wheel does not affect steering.
-
-
-
-
- Set steering angle according to and .
-
-
-
-
- Increase or decrease motor torque to rotate vehicle in-place. (Tanks)
-
-
-
-
- For , indicates how a positive motor torque (forward) rotates
- the vehicle.
-
-
-
-
- Wheels on the left side are Clockwise and wheels on the right side are Counter-Clockwise.
-
-
-
-
- Positive motor torque on this wheel rotates the vehicle clockwise.
-
-
-
-
- Positive motor torque on this wheel rotates the vehicle counter-clockwise.
-
-
-
-
- Controls whether wheel creates particle kickup effects for the ground surface material underneath.
-
-
-
-
- Turn off motion effects. Default for wheels not using collider pose.
-
-
-
-
- Enable motion effects. Default for wheels using collider pose.
-
-
-
-
- Enable motion effects, but turn them off while moving backward.
-
-
-
-
- Enable motion effects, but turn them off while moving forward.
-
-
-
-
- [0, 1] color will have zero saturation if random value is less than this. For example, 0.2 means 20% of
- vehicles will be grayscale.
-
-
-
-
- If true, this configuration was created by .
- Otherwise, this configuration was loaded from the vehicle asset file.
-
-
-
-
- Transform path relative to Vehicle prefab with WheelCollider component.
-
-
-
-
- If true, WheelCollider's motorTorque is set according to accelerator input.
-
-
-
-
- Transform path relative to Vehicle prefab. Animated to match WheelCollider state.
-
-
-
-
- If true, model is animated according to steering input.
- Only kept for backwards compatibility. Prior to wheel configurations, only certain WheelColliders actually
- received steering input, while multiple models would appear to steer. For example, the APC's front 4 wheels
- appeared to rotate but only the front 2 actually affected physics.
-
-
-
-
- If true, model ignores isModelSteered and instead uses WheelCollider.GetWorldPose when simulating or the
- replicated state from the server when not simulating. Defaults to false.
-
-
-
-
- If greater than zero, visual-only wheels (without a collider) like the extra wheels of the Snowmobile use
- this radius to calculate their rolling speed.
-
-
-
-
- If set, visual-only wheels without a collider (like the back wheels of the snowmobile) can copy RPM from
- a wheel that does have a collider. Requires modelRadius to also be set.
-
-
-
-
- If set, wheel model uses this crawler track's speed (average RPM of wheels). Prevents wheel model from
- spinning out of sync with overall track.
-
-
-
-
- Target steering angle is multiplied by this value. For example, can be set to a negative number for
- rear-wheel steering. Defaults to 1.
-
-
-
-
- Vertical offset of model from simulated suspension position.
-
-
-
-
- How quickly to interpolate model toward suspension position in meters per second.
- If negative, position teleports immediately.
-
-
-
-
- Nelson 2024-12-06: Initially implemented as a minimum and maximum percentage of normalized forward velocity,
- but think this is more practical. I can't think of why we would use values other than -1, 0, +1 for that,
- and if we did we'd probably want some tuning for the angle particles are emitted at.
-
-
-
-
- If true, wheel should fly off when vehicle explodes. Defaults to true.
- Used to simplify destroying vehicles with crawler tracks.
-
-
-
-
- Default.
-
-
-
-
- Set pitch and volume of a single clip according to engine RPM.
-
-
-
-
- Offsets a crawler track's material UV offset in sync with wheels rolling.
-
-
-
-
- Scene hierarchy path relative to vehicle root.
-
-
-
-
- Index in renderer's materials array.
-
-
-
-
- Indices of wheels to copy RPM from.
-
-
-
-
- How far to travel to offset UV 1x. (1/x)
-
- You can calculate RepeatDistance by selecting an edge parallel to the crawler track and dividing the UV
- distance by the physical 3D distance. For example, if the UV length is 2 and the 3D length is 1.5 m then
- the texture repeats 1.33 UV/m.
-
-
-
-
- UV mainTextureOffset per distance traveled.
-
-
-
-
- Please refer to:
-
-
-
-
- Please refer to:
-
-
-
-
- Supports redirects by VehicleRedirectorAsset.
-
- "Shared Skins" were implemented when there were several asset variants of each vehicle. For example,
- Off_Roader_Orange, Off_Roader_Purple, Off_Roader_Green, etc. Each vehicle had their "shared skin" set to
- the same ID, and the skin asset had its target ID set to the shared ID. This isn't as necessary after
- merging vanilla vehicle variants, but some mods may rely on it, and it needed GUID support now that the
- target vehicle might not have a legacy ID.
-
-
-
-
- Prevents calling getOrLoad redundantly if asset does not exist.
-
-
-
-
- Clip.prefab
-
-
-
-
- Vehicle.prefab
-
-
-
-
- Nelson 2024-02-28: Prior to the VehicleWheelConfiguration class, most of the wheel configuration was
- inferred during InteractableVehicle initialization from the children of the "Tires" and "Wheels" transforms.
- Confusingly, "Tires" only contains WheelColliders and "Wheels" only contains the visual models. Rather than
- keeping the old behavior in InteractableVehicle alongside the newer more configurable one, we match the old
- behavior here to generate an equivalent configuration.
-
- Note that must be initialized before this is called (by loading model).
-
-
-
-
- Maximum (negative) velocity to aim for while accelerating backward.
-
-
-
-
- Maximum speed to aim for while accelerating backward.
-
-
-
-
- Maximum velocity to aim for while accelerating forward.
-
-
-
-
- Maximum speed to aim for while accelerating forward.
-
-
-
-
- Steering angle range at zero speed.
-
-
-
-
- Steering angle range at target maximum speed (for the current forward/backward direction).
-
-
-
-
- Steering angle rotation change in degrees per second.
-
-
-
-
- Added or subtracted from wheel motor torque in mode.
-
-
-
-
- When a wheel is in mode and a steering input is applied the
- stiffness is multiplied by this factor. This allows the vehicle
- to rotate in-place with a lower steering torque, which helps prevent the vehicle from going out of control
- while turning and accelerating.
-
-
-
-
- Multiplier for and
- while at target maximum speed (for the current forward/backward direction).
-
-
-
-
- Torque on Z axis applied according to steering input for bikes and motorcycles.
-
-
-
-
- If true, leaning force is multiplied by normalized speed to the power of steeringLeaningForceSpeedExponent.
- Defaults to false.
-
-
-
-
- Refer to steeringLeaningForceShouldScaleWithSpeed.
-
-
-
-
- If true, explosion will damage nearby entities and kill passengers.
-
-
-
-
- Only used if ShouldExplosionBurnMaterials. Optional. Allows specifying which renderers to burn.
-
-
-
-
- When true the bicycle animation is used and extra speed is stamina powered.
- Bad way to implement it.
-
-
-
-
- Can this vehicle ever spawn with a charged battery?
- Uses game mode battery stats when true, or overrides by preventing battery spawn when false.
-
-
-
-
- Battery charge when first spawning in is multiplied by this [0, 1] number.
-
-
-
-
- Battery decrease per second.
-
-
-
-
- Battery increase per second.
-
-
-
-
- Battery item given to the player when a specific battery hasn't been manually
- installed yet. Defaults to the vanilla car battery (098b13be34a7411db7736b7f866ada69).
-
-
-
-
- Fuel decrease per second.
-
-
-
-
- Client sends physics simulation results to server. If upward (+Y) speed exceeds this, mark the move invalid.
-
-
-
-
- Client sends physics simulation results to server. If downward (-Y) speed exceeds this, mark the move invalid.
-
-
-
-
- If distance between client-submitted hit position and vehicle pivot point is too high the hit will be
- marked invalid. This multiplies the distance threshold, useful for very fast vehicles.
-
-
-
-
- Vertical first-person view translation.
-
-
-
-
- Vertical first-person view translation.
-
-
-
-
- Base damage to players when traveling at 1 m/s. Defaults to 10.
-
-
-
-
- Base damage to zombies when traveling at 1 m/s. Defaults to 15.
-
-
-
-
- Base damage to animals when traveling at 1 m/s. Defaults to 15.
-
-
-
-
- Base damage to objects when traveling at 1 m/s. Defaults to 30.
-
-
-
-
- Base damage to trees when traveling at 1 m/s. Defaults to 85.
-
-
-
-
- If speed multiplied by is less than this, no damage is applied.
- Defaults to 3.
-
-
-
-
- Multiplier for damage from crashing into things.
- Not applicable if is false.
- Defaults to 1.
-
-
-
-
- To non-explosions.
-
-
-
-
- Mega zombie rocks, zombies, animals.
-
-
-
-
- Crashing into stuff.
-
-
-
-
- Can this vehicle be repaired by a seated player?
-
-
-
-
- Can mobile barricades e.g. bed or sentry guns be placed on this vehicle?
-
-
-
-
- Should capsule colliders be added to seat transforms?
- Useful to prevent bikes from leaning into walls.
-
-
-
-
- Can players lock the vehicle to their clan/group?
- True by default, but mods want to be able to disable.
-
-
-
-
- Can players steal the battery?
-
-
-
-
- Spawn table to drop items from on death.
-
-
-
-
- Minimum number of items to drop on death.
-
-
-
-
- Maximum number of items to drop on death.
-
-
-
-
- Item ID of compatible tire.
-
-
-
-
- If greater than zero, torque is applied on the local Z axis multiplied by this factor.
- Note that is critical for damping this force.
-
-
-
-
- Exponent on the [0, 1] factor representing how aligned the vehicle is with the ground up vector.
-
-
-
-
- If greater than zero, an acceleration is applied to angular velocity on Z axis toward zero.
-
-
-
-
- Indices of wheels using replicated collider pose (if any).
- Null if not configured or no wheels using this feature.
- Allows client and server to replicate only the suspension value without other context.
-
-
-
-
- Indices of wheels with motor torque applied (if any).
- Used for engine RPM calculation.
-
-
-
-
- If this and UsesEngineRpmAndGears are true, HUD will show RPM and gear number.
-
-
-
-
- When engine RPM dips below this value shift to the next lower gear if available.
-
-
-
-
- When engine RPM exceeds this value shift to the next higher gear if available.
-
-
-
-
- How long after changing gears before throttle is engaged again.
-
-
-
-
- How long between changing gears to allow another automatic gear change.
-
-
-
-
- Minimum engine RPM.
-
-
-
-
- Maximum engine RPM.
-
-
-
-
- How quickly RPM can increase in RPM/s.
- e.g., 1000 will take 2 seconds to go from 2000 to 4000 RPM.
-
-
-
-
- How quickly RPM can decrease in RPM/s.
- e.g., 1000 will take 2 seconds to go from 4000 to 2000 RPM.
-
-
-
-
- Maximum torque (multiplied by output of torque curve).
-
-
-
-
- Was a center of mass specified in the .dat?
-
-
-
-
- If hasCenterOfMassOverride, use this value.
-
-
-
-
- Multiplier for otherwise not-yet-configurable plane/heli/boat forces.
- Nelson 2024-03-06: Required for increasing mass of vehicles without significantly messing with behavior.
-
-
-
-
- If set, override the wheel collider mass with this value.
-
-
-
-
- Null if vehicle doesn't support paint color.
-
-
-
-
- List of transforms to register with DynamicWaterTransparentSort.
-
-
-
-
- Null if vehicle doesn't support paint color.
-
-
-
-
- Null if isn't .
-
-
-
-
- Pick a random paint color according to . Null if unsupported or not configured.
-
-
-
-
- If true, Vehicle Paint items can be used on this vehicle.
- Always false if is false.
-
- Certain vehicles may support paint colors without also being paintable by players. For example, the creator
- of a vehicle may want to use color variants without also allowing players to make it bright pink.
-
-
-
-
- Returns reverseGearRatio for negative gears, actual value for valid gear number, otherwise zero.
- Exposed for plugin use.
-
-
-
-
- Get number of reverse gear ratios.
- Exposed for plugin use.
-
-
-
-
- Get number of forward gear ratios.
- Exposed for plugin use.
-
-
-
-
- Number of tire visuals to rotate with steering wheel.
-
-
-
-
- If true then level should convert old terrain.
-
-
-
-
- If true, splatmap conversion should use weights as-is.
-
-
-
-
- Material guids converted by legacy asset bundle hash or texture names.
-
-
-
-
- Hash of Trees.dat, or zeroed if any assets were missing locally.
- Should only be used if level is configured to, as many mod maps are typically missing assets.
-
-
-
-
- Nelson 2025-06-10: replacement for _trees. Enables trees outside the "insane" level bounds.
-
-
-
-
- Append all trees in the level to results list.
-
-
-
-
- Game does not currently have a way to resave level's Config.json file, so instead we save a text file
- indicating that the terrain auto conversion was performed. If there was a bug with auto conversion then
- all of the old files are still present and can be re-converted.
-
-
-
-
- Stagger regional visibility across multiple frames.
-
-
-
-
- Caches uint16 ID to ID redirects.
-
-
-
-
- Manages lifetime and attachment of a mythical effect. Added by .
- Was called `MythicLocker` with a paired `MythicLockee` prior to 2024-06-11.
-
-
-
-
- https://steamcommunity.com/dev/managegameservers
-
-
-
-
- IP address, DNS name, or a web address (to perform GET request) to advertise.
-
- Servers not using Fake IP can specify just a DNS entry. This way if server's IP changes clients can rejoin.
- For example, if you own the "example.com" domain you could add an A record "myunturnedserver" pointing at
- your game server IP and set that record here "myunturnedserver.example.com".
-
- Servers using Fake IP are assigned random ports at startup, but can implement a web API endpoint to return
- the IP and port. Clients perform a GET request if this string starts with http:// or https://. The returned
- text can be an IP address or DNS name with optional query port override. (e.g., "127.0.0.1:27015")
-
-
-
-
- If true, the server lobby warns that in-game ping may be higher than shown. BUT it's shown in the default
- UI color rather than the "bad" color when flagged by moderation.
-
-
-
-
- If ready-to-connect messages are received more than twice from the same client in less than this many
- seconds they will be kicked.
-
-
-
-
- If bad packets (that *may* be legitimate) are received more than threshold times within this many seconds
- of each other, reject the calling connection.
-
-
-
-
- If more than this many bad packets (that *may* be legitimate) are received within window seconds of each
- other, reject the calling connection.
-
-
-
-
- If a rate-limited method is called this many times within cooldown window the client will be kicked.
- For example a value of 1 means the client will be kicked the first time they call the method off-cooldown. (not recommended)
-
-
-
-
- Only applicable when Fake IP is off. When a client is connecting, if their connection would push the number
- of simultaneous connections from the same IP address past this number, they are prevented from joining.
-
- May be useful to prevent against fake join requests coming from a single source IP. (public issue #5001)
-
- Defaults to a high value because some regions will have many more clients with the same IPv4 address than
- others. For example, due to Carrier-grade NAT (CGNAT).
-
-
-
-
- Whether rejections for Max_Clients_With_Same_IP_Address should log to command output. Useful for checking
- if the limit is appropriate.
-
-
-
-
- Ordinarily the server should be receiving multiple input packets per second from a client. If more than this
- amount of time passes between input packets we flag the client as potentially using a lag switch, and modify
- their stats (e.g. reduce player damage) for a corresponding duration.
- Minimum value is PlayerInput.MIN_FAKE_LAG_THRESHOLD_SECONDS.
-
-
-
-
- Whether fake lag detection should log to command output. False positives are relatively likely when client
- framerate hitches (e.g. loading dense region), so this is best used for tuning threshold rather than bans.
-
-
-
-
- PvP damage multiplier while under fake lag penalty.
-
-
-
-
- Should we kick players after detecting spammed calls to askInput?
-
-
-
-
- Should we kick players if they do not submit inputs for a long time?
-
-
-
-
- Should the server automatically shutdown at a configured time?
-
-
-
-
- When the server should shutdown if Enable_Scheduled_Shutdown is true.
-
-
-
-
- Broadcast "shutting down for scheduled maintenance" warnings at these intervals.
-
-
-
-
- Should the server automatically shutdown when a new version is detected?
-
-
-
-
- Unfortunately the server does not have a way to automatically determine the current beta branch.
-
-
-
-
- Broadcast "shutting down for update" warnings at these intervals.
-
-
-
-
- Should vanilla text chat messages always use rich text?
- Servers with plugins may want to enable because IMGUI does not fade out rich text.
- Kept because plugins might be setting this directly, but it no longer does anything.
-
-
-
-
- Should the EconInfo.json hash be checked by the server?
-
-
-
-
- If true, opt-in to SteamNetworkingSockets "FakeIP" system.
- https://partner.steamgames.com/doc/api/ISteamNetworkingSockets#1
-
-
-
-
- If greater than zero, vehicles with XZ position outside this threshold are saved in the center of the map.
- By default, vehicles outside ±40 km are teleported into the map.
- Intended to help with physics issues caused by vehicles far out in space. (public issue #4465)
-
-
-
-
- Limit max queue timeout duration so that if server encounters an error or doesn't
- process the request the client can timeout locally.
-
-
-
-
- Longer than server timeout so that ideally more context is logged on the server
- rather than just "client disconnected."
-
-
-
-
- Original option for disabling item quality. Defaults to true. If false, items spawn at 100% quality and
- their quality doesn't decrease. For backwards compatibility, the newer per-item-type durability options
- are ignored if this is off.
-
-
-
-
- Food-specific replacement for . Defaults to false. If true, food spawns at 100% quality.
-
-
-
-
- Water-specific replacement for . Defaults to false. If true, water spawns at 100% quality.
-
-
-
-
- Clothing-specific replacement for . Defaults to false. If true, clothing spawns at 100% quality.
-
-
-
-
- Weapon-specific replacement for . Defaults to false. If true, weapons spawns at 100% quality.
-
-
-
-
- Fallback used when spawning an item that doesn't fit into one of the other quality/durability settings.
- Defaults to false. If true, items spawn at 100% quality.
-
-
-
-
- Clothing-specific replacement for . Defaults to true. If false, clothing quality
- doesn't decrease when damaged.
-
-
-
-
- Melee and gun replacement for . Defaults to true. If false, weapons quality
- doesn't decrease when used.
-
-
-
-
- Seconds vehicle can be neglected before it begins taking damage.
-
-
-
-
- After vehicle has been neglected for more than Decay_Time seconds it will begin taking this much damage per second.
-
-
-
-
- Vehicles are considered "natural" if they were spawned by the level as opposed to players or vendors.
- If less than this many natural vehicles exist in the level, more will be spawned. The minimum of this or
- Max_Instances is used. (i.e., if this value is higher than max instances the max instances value is used
- instead.)
-
-
-
-
- Minimum seconds between boss zombie spawns for players doing quests.
- Players were abusing the spawns to farm boss tier loot.
-
-
-
-
- Weapon damage multiplier against body, arms, legs. Useful for headshot-only mode.
-
-
-
-
- Should players be allowed to build on their vehicles?
-
-
-
-
- Should players be allowed to build traps (e.g. barbed wire) on their vehicles?
-
-
-
-
- Furthest away from colliders a player can build an item onto their vehicle.
-
-
-
-
- Furthest away from colliders a player can build a trap (e.g. barbed wire) onto their vehicle.
-
-
-
-
- [0, 1] percentage of skill levels to retain after death.
-
-
-
-
- [0, 1] percentage of skill levels to retain after death.
-
-
-
-
- Number of skill levels to remove after death.
-
-
-
-
- Number of skill levels to remove after death.
-
-
-
-
- [0, 1] percentage of experience points to retain after death.
-
-
-
-
- [0, 1] percentage of experience points to retain after death.
-
-
-
-
- Should each character slot have separate savedata?
-
-
-
-
- If true, players will be kicked if their skin color is too similar to one of the level's terrain colors.
-
-
-
-
- Each per-level custom weather frequency is multiplied by this value.
-
-
-
-
- Each per-level custom weather duration is multiplied by this value.
-
-
-
-
- Should ServerTextChatMessenger be allowed to broadcast?
-
-
-
-
- Should ServerTextChatMessenger be allowed to execute commands?
-
-
-
-
- Should ClientTextChatMessenger be allowed to broadcast?
-
-
-
-
- Should ClientTextChatMessenger be allowed to execute commands?
-
-
-
-
- Should group connections be shown on player list?
-
-
-
-
- If true, allow automatically creating an in-game group for members of your Steam lobby.
- Requires Allow_Dynamic_Groups to be enabled as well.
-
-
-
-
- Is friendly-fire allowed?
-
-
-
-
- Are sentry guns and beds allowed on vehicles?
-
-
-
-
- Should holiday (Halloween and Christmas) content like NPC outfits and decorations be loaded?
-
-
-
-
- Can "freeform" barricades be placed in the world?
- Defaults to true.
-
-
-
-
- Can "freeform" barricades be placed on vehicles?
- Defaults to true.
-
-
-
-
- If true, aim flinches away from center when damaged.
- Defaults to true.
-
-
-
-
- If true, camera will shake near explosions. Can also be toned down client-side in Options menu.
- Defaults to true.
-
-
-
-
- If true, crafting blueprints can require nearby workstations. Defaults to true.
- If false, only the backwards-compatibility "Heat Source" vanilla crafting tag can be required. This
- functions identically to the cooking-skill-also-requires-heat behavior from before.
-
-
-
-
- If true, client-side options like damage flinch, explosion camera shake, viewmodel bob are ignored.
- Defaults to false.
-
-
-
-
- Scales velocity added to players by explosion knock-back.
-
-
-
-
- Scales midair input change in player direction.
-
-
-
-
- Scales midair decrease in speed while faster than max walk speed.
-
-
-
-
- Scales magnitude of recoil while using first-person perspective.
-
-
-
-
- Scales magnitude of recoil while aiming in first-person perspective.
-
-
-
-
- Scales magnitude of recoil inversely with zoom level while aiming in first-person perspective.
-
-
-
-
- Scales magnitude of recoil while using third-person perspective.
-
-
-
-
- Scales magnitude of bullet inaccuracy while using third-person perspective.
-
-
-
-
- [0, 1] Scales how much the first-person move up and down while jumping/landing.
-
-
-
-
- [0, 1] Scales how much the first-person arms move while ADS.
-
-
-
-
- Center mythical effect hook horizontally, but maintain vertical placement.
- Lots of hats/masks/glasses have off-center effects intentionally, but community
- feedback suggests centering to make effects like circling atoms look better.
-
-
-
-
- Set mesh of all character mesh renderers.
- Tries to match renderer index to mesh LOD index.
-
-
-
-
- Set material of all character mesh renderers.
-
-
-
-
- Hack for previewing the "aura" cosmetic items.
-
-
-
-
- If true, this character is for capturing clothing icons.
-
-
-
-
- Planar reflection component updates its culling distance and culling mask when this is incremented.
-
-
-
-
- Overrides in-game UI scale setting.
-
-
-
-
- Distance to use terrain shaders before fallback to a baked texture.
-
-
-
-
- Higher error reduces vertex density as distance increases.
-
-
-
-
- Added for players who want to see if they can get better performance with a ridiculously low max draw distance.
-
-
-
-
- Multiplier for far clip plane distance.
- Clamped within [0, 1] range to prevent editing config files for an advantage.
-
-
-
-
- Multiplier for draw distance.
- Clamped within [0, 1] range to prevent editing config files for an advantage.
-
-
-
-
- Multiplier for draw distance of optional super-low LOD models.
- Clamped within [0, 1] range to prevent editing config files for an advantage.
-
-
-
-
- Vehicles outside this distance are not rendered.
-
-
-
-
- Called after loading graphics settings from disk so that their values can be adjusted.
-
-
-
-
- If default resolution is zero, try falling back to a higher one.
- Used when restoring defaults and validating loaded settings.
-
-
-
-
- If true, make the game look as nice as possible.
- Note: certain limits are imposed except in singleplayer to prevent this from being exploited.
-
-
-
- If true, include current animation speed modifier.
-
-
- True if an animation was found and started playing.
-
-
-
- Velocity is directly set to input velocity.
-
-
-
-
- Velocity is affected by acceleration and deceleration.
-
-
-
-
- Properties common to asset and extensions. For example both can specify sounds.
-
-
-
-
- Invokes an event a configured number of times.
-
-
-
-
- If true the event will only be invoked in offline mode and on the server.
-
-
-
-
- Invoked multiple times.
-
-
-
-
- Sanity check all returned elements have a gameObject.
-
-
-
-
- Create software cursor visual element.
-
-
-
-
- Create green label in the upper-left.
-
-
-
-
- Create tooltip visual element.
-
-
-
-
- Update upper-left green text.
-
-
-
-
- Update software cursor visual element.
-
-
-
-
- Find hovered element and update tooltip visibility/text.
-
-
-
-
- Container for SleekWindow element.
-
-
-
-
- Container for top-level visual elements.
-
-
-
-
- Element under the cursor on the previous frame.
-
-
-
-
- Duration in seconds the cursor has been over the element.
-
-
-
-
- EconInfo.json hash does not match.
-
-
-
-
- Master bundle hashes do not match.
-
-
-
-
- Workshop usage advertised on server list does not match during connect.
-
-
-
-
- Used by client transport to show a custom localized message.
-
-
-
-
- Server has not received an auth session response from Steam yet.
-
-
-
-
- Server has not received an economy response from Steam yet.
-
-
-
-
- Server has not received a groups response from Steam yet.
-
-
-
-
- Player nickname exceeds limit.
-
-
-
-
- Player nickname contains invalid characters.
-
-
-
-
- Player nickname should not be a number.
-
-
-
-
- Server did not respond to EServerMessage.Authenticate
-
-
-
-
- Player resources folders don't match.
-
-
-
-
- The network identity in the ticket does not match the server authenticating the ticket.
- This can happen if server's Steam ID has changed from what the client thinks it is.
- For example, joining a stale entry in the server list. (public issue #4101)
-
-
-
-
- Level name advertised on server list does not match during connect.
-
-
-
-
- VAC status advertised on server list does not match during connect.
-
-
-
-
- BattlEye status advertised on server list does not match during connect.
-
-
-
-
- Max players advertised on server list does not match during connect.
-
-
-
-
- Camera mode advertised on server list does not match during connect.
-
-
-
-
- Combat mode advertised on server list does not match during connect.
-
-
-
-
- Player's skin color is too similar to one of .
-
-
-
-
- Steam ID reported by net transport doesn't match client's reported Steam ID.
- This was exploited to fill the server queue with fake players.
-
-
-
-
- Received too many connection requests from player in a short window.
-
-
-
-
- Received too many invalid messages from connection in a short window.
-
-
-
-
- Same as CUSTOM, but shows the "verify game files" prompt.
-
-
-
-
- Server limits how many clients are joining from the same IP address.
- (public issue #5001)
-
-
-
-
- Does this label fade out as the chat message gets older?
-
-
-
-
- Chat message values to show.
-
-
-
-
- Invoked after state is first loaded, synced from server when entering relevancy, or reset.
-
-
-
-
- Invoked after interaction changes state.
-
-
-
-
- Number of event hooks monitoring or controlling this.
- Used to allow client to control remote objects on server.
-
-
-
-
- Remove items that do not match search text.
-
-
-
-
- Note SetListing also calls RefreshInCart.
-
-
-
-
- Cannot be created until store data is available.
-
-
-
-
- Toggle button to open/close advanced filters panel.
-
-
-
-
- On/off checkbox for including already-owned items in filter.
-
-
-
-
- Container for advanced options.
-
-
-
-
- Displays the current page number.
-
-
-
-
- Only visible when cart is not empty.
-
-
-
-
- [0, pageCount)
-
-
-
-
- If true, listings should be re-filtered when opening the menu.
-
-
-
-
- Collections of multiple items.
-
-
-
-
- Discounted items.
-
-
-
-
- Items marked as new in the Status.json file.
-
-
-
-
- Items marked as featured in the Status.json file.
-
-
-
-
- Implemented by "root" component of each entity type that can provide crafting tags to nearby players.
- This allows overlap with a barricade attached to a vehicle to find the barricade from barricade collider and
- vehicle from vehicle collider rather than using transform root. Any mod hook extensions to crafting tags will
- be sibling components or descendants of this component.
-
-
-
-
- Asset providing tags. For example, a barricade item.
-
-
-
-
- True if GetAvailableTags can ever add any tags.
- Used to skip unnecessary line-of-sight tests against (for example) ordinary structures and the like.
-
-
-
-
- All tags added by this crafting tag provider.
-
-
-
-
- Rewards to grant when quest is removed without completing.
- Not granted when player finishes quest.
-
-
-
-
- Configuration for DedicatedUGC.
-
-
-
-
- Published workshop file IDs to download.
-
-
-
-
- Published workshop file IDs whose children (dependencies) should be skipped.
- Useful if workshop author lists dependencies as a way of advertising.
-
-
-
-
- Controls SetAllowCachedResponse. Disabled when set to zero.
- Balance between item change frequency and allowing cached results when query fails.
-
-
-
-
- Number of total times to try re-submitting failed workshop queries before aborting.
-
-
-
-
- Should items already installed be loaded?
-
-
-
-
- Should used items be monitored for updates?
-
-
-
-
- Seconds to wait before shutting down after an update is detected.
-
-
-
-
- Message broadcasted when shutdown timer begins.
-
-
-
-
- Message sent to players when shutdown timer completes.
-
-
-
-
- Get instance if loaded, but do not load.
-
-
-
-
- Get instance, or load if not yet loaded.
-
-
-
-
- Should only be used by .
- For example: "Condition_##" where ## is an index.
-
-
-
-
- Nelson 2025-03-11: not *super* happy about having this in here. Needed for UI_Requirements.
-
-
-
-
- Nelson 2025-03-11: not *super* happy about having this in here. Needed for UI_Requirements.
-
-
-
-
- If set, only show this condition in the UI when conditions with these indices are met.
- For example don't show "arrest the criminal (name)" until "investigate crime" is completed.
-
-
-
-
- Is this condition influenced by a given quest flag?
- Used by level objects to determine if local player's flag change may affect visibility.
-
-
-
-
- Replacement for isAssociatedWithFlag to fix quest conditions and somewhat improve perf.
-
-
-
-
- Intended to replace filling data from constructor.
-
-
-
-
- Intended to replace filling data from constructor. Legacy is for backwards compatibility with Condition_#_Key
- format, whereas V2 uses the list and dictionary features.
-
-
-
-
- Can be added to gun item game objects (including children) to receive events.
-
-
-
-
- Which attachment type to monitor.
-
-
-
-
- Optional. If set, only consider item matching this GUID. I.e., slot is considered empty if attached item
- has a different asset GUID.
-
-
-
-
- If true, AssetGuidFilter passes when item in slot *doesn't* match GUID.
-
-
-
-
- Invoked both when:
- 1. Gun is first equipped and an item is already present in the slot.
- 2. An item is added to the slot.
-
-
-
-
- Invoked both when:
- 1. Gun is first equipped and the slot is empty.
- 2. An item is removed from the slot.
-
-
-
-
- Controls whether events are invoked when asset in slot changes.
-
-
-
-
- Nelson 2025-02-04: Gun attachment slots are currently hard-coded, but if that changes this could be updated
- with a "custom" option.
-
-
-
-
- If emptiness of slot doesn't change (attachment replaced), do nothing.
-
-
-
-
- In addition to regular Attached and Detached events, if the item asset in the slot changes invoke
- Detached then Attached.
-
-
-
-
- State doesn't affect AI collision.
-
-
-
-
- AI collision is blocked when object state is ON.
-
-
-
-
- AI collision is blocked when object state is OFF.
-
-
-
-
- Controls how rubble affects Nav game object.
-
-
-
-
- Default. Destruction of rubble sections does not affect whether Nav game object is active or not.
-
-
-
-
- AI collision is blocked when any sections are alive. Once all sections are dead AI collision is unblocked.
-
-
-
-
- The game uses Process.Start to open web links when the Steam overlay is unavailable, which could be exploited
- to e.g. download and execute files. To prevent this we only allow valid http or https urls.
-
- If true, prefix with https:// if neither http:// or https:// is specified.
-
-
-
- This version just doesn't return the parsed URL.
-
-
-
-
- Resolve spawn table asset if set, otherwise find asset by legacy in-editor ID configuration.
- Returned asset is not necessarily a vehicle asset yet: It can also be a VehicleRedirectorAsset which the
- vehicle spawner requires to properly set paint color.
-
-
-
-
- Used when spawn table asset is not assigned. Pick a random legacy ID using in-editor list of spawns.
-
-
-
-
- Multiplier for how quickly deadzones deplete a gasmask's filter quality.
- e.g., 2 is faster (2x) and 0.5 is slower.
-
-
-
-
- Hack for previewing the "aura" cosmetic items.
-
-
-
-
- Was redirected to HolidayUtil but kept for plugin backwards compatibility.
- Refer to HolidayUtil for explanation of this weird situation.
-
-
-
-
- Was redirected to HolidayUtil but kept for plugin backwards compatibility.
- Refer to HolidayUtil for explanation of this weird situation.
-
-
-
-
- The base transform does not rotate, instead a child transform is created with the pivot in the center.
-
-
-
-
- To work around a uGUI bug we always a sign a texture, even if desiredTexture is null.
-
-
-
-
- Broadcasts after dedicated server name changes.
- Command IO interface binds to this rather than having a title-specific method.
-
-
-
-
- Should the default console I/O handler be created?
- Plugins can disable on the command line when overriding handler.
-
-
-
-
- Should the legacy blocking (game thread) console be created?
-
-
-
-
- Log white information.
-
-
-
-
- Log yellow warning.
-
-
-
-
- Log red error.
-
-
-
-
- Print white message to console.
-
-
-
-
- Print yellow message to console.
-
-
-
-
- Print red message to console.
-
-
-
-
- Cannot use UnturnedLog here because it may recursively call CommandWindow if another exception is thrown.
-
-
-
-
- Called during Unity Update loop.
-
-
-
-
- Called during OnApplicationQuit.
-
-
-
-
- Helper for plugins that want to replace the default without the shouldCreateDefaultConsole flag.
-
-
-
-
- If true, the player can press Interact [F] when there are no responses
- and the "next" dialogue will be opened.
-
-
-
-
- Each dialogue message is separated into multiple pages.
-
-
-
-
- Current page localized text with name_npc and name_char formatted in.
-
-
-
-
- Seconds elapsed while viewing current page not including pause timer.
- Used to gradually show the message text.
-
-
-
-
- Seconds to wait before resuming pageAnimationTime counting.
-
-
-
-
- Appends chars from pageFormattedText according to pageAnimationTime.
-
-
-
-
- Rich text formatting tags to close those opened by visible text in animatedTextBuilder.
- For example, if animatedTextBuilder includes an opening color=#, this includes the closing color markup.
- Required depending on Glazier used.
-
-
-
-
- Number of chars of pageFormattedText currently visible.
-
-
-
-
- Added to animation visible chars to skip time on markup.
-
-
-
-
- Seconds elapsed since responses started becoming visible.
- Used to gradually enable responses rather than all at once.
-
-
-
-
- Animated toward total number of responses to make them gradually visible.
-
-
-
-
- If true, animation is finished and there is another page to show when Interact [F] is pressed.
-
-
-
-
- If true, text on current page is in the process of gradually appearing.
-
-
-
-
- Used by quest UI to return to current dialogue.
-
-
-
-
- Update timers and UI for current page index.
-
-
-
-
- Called when the player presses Interact [F] in dialogue screen.
-
-
-
-
- Show complete text for the current page and make responses visible.
- Called if dialogue animation is disabled, and when the player presses Interact [F] during animation.
-
-
-
-
- Use "Interact" token from translation file.
-
-
-
-
- If true, description should only be populated with contents from prior to the auto-layout UI changes.
-
-
-
-
- BuildDescription implementations can use this to concatenate longer strings.
-
-
-
-
- Which parent to use when attaching an equipped/useable item to the player.
-
-
-
-
- Helper for plugins that want item prefabs server-side.
- e.g. Allows item icons to be captured on dedicated server.
-
-
-
-
- Item name wrapped in color rich text tags according to rarity.
-
-
-
-
- Hack for Kuwait aura icons.
-
-
-
-
- Useable subclass.
-
-
-
-
- Can this useable be equipped by players?
- True for most items, but allows modders to create sentry-only weapons.
-
-
-
-
- Can this useable be equipped while underwater?
-
-
-
-
- Vertical half size of icon camera.
- Values less than zero are disabled.
-
-
-
-
- Vertical half size of economy icon camera.
-
-
-
-
- Should the newer automatic placement and orthographic size for axis-aligned icon cameras be used?
- Enabled by default, but optionally disabled for manual adjustment.
-
-
-
-
- Nelson 2025-04-10: adding this for semantics because amount isn't an obvious name.
-
-
-
-
- If true, item should be removed when "amount" reaches zero.
- Defaults to true except for magazines.
-
-
-
-
- Which parent to use when attaching an equipped/useable item to the player.
-
-
-
-
- If true, equipable prefab is a child of the left hand rather than the right.
- Defaults to false.
-
-
-
-
- Whether viewmodel should procedurally animate inertia of equipped item.
- Useful for low-quality older animations, but modders may wish to disable for high-quality newer animations.
-
-
-
-
- Defaults to true. If false, the equipped item model is flipped to counteract the flipped character.
-
-
-
-
- If true, stats like damage, accuracy, health, etc. are automatically appended to the description.
- Defaults to true.
-
-
-
-
- Nelson 2024-12-11: This can now be null for cosmetic items (). For those items it wasn't
- used outside of the main menu 3D item preview, in which case the clothing prefab is typically a better
- visualization.
-
-
-
-
- Optional alternative item prefab specifically for the PlayerEquipment prefab spawned.
-
-
-
-
- Name to use when instantiating item prefab.
- By default the asset legacy id is used, but it can be overridden because some
- modders rely on the name for Unity's legacy animation component. For example
- in Toothy Deerryte's case there were a lot of duplicate animations to work
- around the id naming, simplified by overriding name.
-
-
-
-
- Movement speed multiplier while the item is equipped in the hands.
-
-
-
-
- Sound to play when inspecting the equipped item.
-
-
-
-
- Sound to play when moving or rotating the item in the inventory.
-
-
-
-
- When a player dies with this item, should an item drop be spawned?
-
-
-
-
- Can player click the drop button on this item?
-
-
-
-
- If this item is compatible with skins for another item, lookup that item's ID instead.
-
-
-
-
- Defaults to true. If false, skin material and mesh are not applied when is
- set. For example, a custom axe can transfer the kill counter and ragdoll effect from a vanilla item's skin
- without also transferring the material and mesh.
-
-
-
-
- Should friendly-mode sentry guns target a player who has this item equipped?
-
-
-
-
- Kept in case any plugins refer to it.
- Renamed to shouldFriendlySentryTargetUser.
-
-
-
-
- Should players be allowed to start primary/secondary use of this item while inside given safezone?
- If returns false the primary/secondary inputs are set to false.
-
-
-
-
- Should this item be deleted when using and quality hits zero?
- e.g. final melee hit shatters the weapon.
-
-
-
-
- Should the game destroy all child colliders on the item when requested?
- Physics items in the world and on character preview don't request destroy,
- but items attached to the character do. Mods might be using colliders
- in unexpected ways (e.g., riot shield) so they can disable this default.
-
-
-
-
- Are there any official skins for this item type?
- Skips checking for base textures if item cannot have skins.
-
-
-
-
- Find useableType by useable name.
-
-
-
-
- V2 is for newer dat list features.
-
-
-
-
- Legacy is for backwards compatibility with Blueprint_# format.
-
-
-
-
- V2 is for newer dat list features.
-
-
-
-
- Legacy is for backwards compatibility with Action_# format.
-
-
-
- sortOrder values for description lines.
- Difference in value greater than 100 creates an empty line.
-
-
-
- Properties common to Gun and Melee.
-
-
-
-
- Properties common to Barricade and Structure.
-
-
-
-
- Properties common to Gun, Consumable, and Throwable.
-
-
-
-
- Properties common to Gun and Melee.
-
-
-
-
- Properties common to Gun and Melee.
-
-
-
-
- Properties common to Gun and Melee.
-
-
-
-
- Properties common to Gun and Melee.
-
-
-
-
- Remaps asset load requests into a large asset bundle rather than small individual asset bundles.
-
-
-
-
- Config that contains the actual large AssetBundle.
-
-
-
-
- Asset path relative to the master AssetBundle.
-
-
-
-
- Icon visible when this listing is in the cart.
-
-
-
-
- "SALE" or "NEW" text visible when applicable.
-
-
-
-
- Tooltip text.
-
-
-
-
- Holds tooltip text
-
-
-
-
- Nelson 2025-01-28: This command reproduces a bug destroying the player gameObject if the vehicle is
- destroyed on the same frame as the request to exit.
- https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/4760#issuecomment-2613090165
-
-
-
-
- Speaker writes compressed audio to this buffer.
- Listener copies network buffer here for decompression.
-
-
-
-
- Listener writes decompressed PCM data to this buffer.
-
-
-
-
- Seconds interval to wait between asking recording subsystem for voice data.
- Rather than polling every frame we wait until data has accumulated to send.
-
-
-
-
- Seconds to wait before playing back newly received data.
- Allows a few samples to buffer up so that we don't stutter as more arrive.
-
-
-
-
- Seconds to wait after playback before stopping audio source.
- We zero this portion of the clip to prevent pops.
-
-
-
-
- Max calls to askVoice server will allow per second before blocking their voice data.
- Prevents spamming many tiny requests bogging down server output.
-
-
-
-
- Max compressed bytes server will allow per second before blocking their voice data.
- When logging compressed size they averaged 3000-5000 per second, so this affords some wiggle-room.
-
-
-
-
- Internal value managed by isTalking.
-
-
-
-
- Is this player broadcasting their voice?
- Used in the menus to show an indicator who's talking.
- Locally set when recording starts/stops, and remotely when voice data starts/stops being received.
-
-
-
-
- Broadcasts after isTalking changes.
-
-
-
-
- Can this player currently hear global (radio) voice chat?
-
-
-
-
- Is the player wearing an earpiece?
- Allows global (radio) voice chat to be heard without equipping the walkie-talkie item.
-
-
-
-
- Is a UseableWalkieTalkie currently equipped?
- Set by useable's equip and dequip events.
-
-
-
-
- Was the most recent voice data we received sent using walkie talkie?
-
-
-
-
- Has voice data recently been received, but we're waiting slightly to begin playback?
- Important to give clip a chance to buffer up so that we don't stutter as more samples arrive.
-
-
-
-
- AudioSource.isPlaying is not trustworthy.
-
-
-
-
- Timer counting down to begin playback of recently received voice data.
- We use a timer rather than availableSamples.Count because a very short phrase could be less than threshold.
-
-
-
-
- Timer counting down to end playback.
-
-
-
-
- Accumulated realtime since we last polled data from voice subsystem.
-
-
-
-
- Last time askVoiceChat was invoked over network.
-
-
-
-
- Number of times askVoiceChat has been called recently, to prevent calling it many times
- with tiny durations getting server to relay many packets to clients.
-
-
-
-
- Total of recent compressed voice payload lengths.
-
-
-
-
- Realtime since this recent conversation began.
-
-
-
-
- Only used by plugins.
- Called on server to allow plugins to override the default area and walkie-talkie voice channels.
-
-
-
-
- Default culling handler when speaking over walkie-talkie.
-
-
-
-
- Default culling handler when speaking in proximity.
-
-
-
-
- Called by owner to relay voice data to clients.
- Not using rate limit attribute because it internally tracks bytes per second.
-
-
-
-
- Called by server to relay voice data from clients.
-
-
-
-
- Set to true during OnDestroy to make sure we don't start recording again.
-
-
-
-
- If true, SteamUser.StartVoiceRecording has been called without a corresponding call to
- SteamUser.StopVoiceRecording yet.
-
-
-
-
- If true, voice toggle is in ON mode.
-
-
-
-
- Internal value managed by inputWantsToRecord.
-
-
-
-
- Set by updateInput based on whether voice is enabled, key is held, is alive, etc.
- Reset to false during OnDestroy to stop recording.
-
-
-
-
- Called during Update on owner client to start/stop recording.
-
-
-
-
- Called during Update on owner client to record voice data.
-
-
-
-
- Play walkie-talkie squawk at our position.
-
-
-
-
- Start and stop playback of received audio stream.
-
-
-
-
- Will this component ever need to record voice data?
-
-
-
-
- Will this component ever need to play voice data?
- In release builds this is only true for remote clients, but in debug we may want to locally listen.
-
-
-
-
- Player's voice audio source cached during Start.
-
-
-
-
- Looping voice audio clip.
-
-
-
-
- Playback buffer.
-
-
-
-
- Steam does less work on the main thread if we request samples at the native decompresser sample rate,
- so the re-sampling can be done on the Unity audio thread instead.
-
-
-
-
- 1 / frequency
-
-
-
-
- Number of samples to zero after writing new audio data.
-
-
-
-
- Are any players standing on the mannequin?
- Used to prevent exploiting pose switches to push through objects.
-
-
-
-
- Amount of experience to reward harvesting player.
-
-
-
-
- If true, harvesting has a chance to provide a second item.
-
-
-
-
- If true, rain will finish growing the plant.
-
-
-
-
- NPC rewards to grant upon harvesting the crop.
-
-
-
-
- Represents an item the vendor is selling to players.
-
-
-
-
- Refer to NPCItemReward state.
-
-
-
-
- Represents a vehicle the vendor is selling to players.
-
-
-
-
- Returned asset is not necessarily a vehicle asset yet: It can also be a VehicleRedirectorAsset which the
- vehicle spawner requires to properly set paint color.
-
-
-
-
- If set, takes priority over VehicleRedirectorAsset's paint color and over VehicleAsset's default paint color.
-
-
-
-
- Added during the UI refactor to catch unhandled mouse clicks during drag.
-
-
-
-
- Contains inspect item box and invisible button.
-
-
-
-
- Added during the UI refactor to catch mouse clicks outside the selection box.
-
-
-
-
- Annoying frustrating workaround for IMGUI. Disable inventory headers, grids and slots while selection is open
- to prevent them from interfering with selection menu.
-
-
-
-
- Was ConsumeEvent called during this frame?
- This is a hack to prevent firing when clicking in the UI on the same frame it closes.
- Moved from SleekWindow and Event.current.Use() during UI refactor.
-
-
-
-
- Move item drag visual to the cursor's position.
-
-
-
-
- Backwards-Compatible Asset Reference with Caching
- • Supports both GUID and legacy ID.
- • Caches resolved asset and updates if asset has been reloaded.
- • Parsing legacy ID without context requires "LegacyType:LegacyID" format. E.g., "Item:4" for the Eaglefire.
- • See CachingAssetRef if legacy ID support is unnecessary.
-
-
-
-
- If true, doesn't reference anything.
- Could also be called "IsZero" or "IsNull".
-
-
-
-
- Opposite of IsEmpty.
-
-
-
-
- Assigned GUID, not the referenced asset's GUID.
-
-
-
-
- Assigned legacy ID, not the referenced asset's legacy ID.
-
-
-
-
- Assigned legacy type, not the referenced asset's legacy type.
-
-
-
-
- Doesn't only check (Get() == asset) because a new asset may have loaded.
- Rather, checks whether GUID or legacy ID (whichever is set) points at asset.
- If asset is null, returns true if GUID and legacy ID are zero.
-
-
-
-
- Supports both GUID and legacy ID formats.
- - If input string contains ':' the first part is EAssetType and the second part is legacy ID.
- - If defaultLegacyType is not None the input string can be parsed as a legacy ID.
- - Otherwise, parsed as GUID.
-
-
-
-
- Supports both GUID and legacy ID formats.
- - If input string contains ':' the first part is EAssetType and the second part is legacy ID.
- - Otherwise, parsed as GUID.
-
-
-
-
- Returns Empty if TryParse returns false.
-
-
-
-
- Returns Empty if TryParse returns false.
-
-
-
-
- Enables assigning assetRef from an existing asset without manually calling constructor.
-
-
-
-
- Enables assigning assetRef from an asset GUID without manually calling constructor.
-
-
-
-
- Enables assigning assetRef from a non-backwards-compatible asset ref without manually calling constructor.
-
-
-
-
- Render character with hair and skin otherwise it might be cyan.
- (public issue #3615)
-
-
-
-
- If set, audio clip associated with physics material will take priority.
-
-
-
-
- Collision with speed lower than this value will not play a sound.
-
-
-
-
- Currently triggers are only used for water.
-
-
-
-
- Sorts higher rarity items into the front of the list.
-
-
-
-
- Sorts name alphabetically to the front of the list.
-
-
-
-
- Sorts type alphabetically to the front of the list.
-
-
-
-
- [0, 1] blends towards one while active regardless of local volume.
-
-
-
-
- [0, 1] blends towards one if current volume bitwise AND with asset is non-zero.
-
-
-
-
- Lesser of global or volume blend alphas.
-
-
-
-
- If blending was not ticket yet then local blend can use global value, e.g. loading into rain storm.
-
-
-
-
- Is blendAlpha at 100%?
-
-
-
-
- [0, 1] Rain puddle alpha cutoff.
-
-
-
-
- [0, 1] Rain puddle ripples alpha.
-
-
-
-
- Optional parameter for error logging.
-
-
-
-
- Run hash algorithm for all data passing through a stream.
-
-
-
-
- Repurposed from the Modules UI because it was unused.
-
-
-
-
- Full argument string. Defaults to Environment.CommandLine.
-
- Nelson 2025-06-17: By default, Steam shows a warning nowadays when the game is launched with externally-provided
- command-line arguments. For example, when joining a friend via rich presence. The solution is to use the arg
- string provided by SteamApps.GetLaunchCommandLine, which also supports *changing* the arguments while the app is
- running. If the environment-provided command-line doesn't contain it, the game will append Steam's launch options.
-
- Note: Steam override isn't applied until Steam is initialized. (after Dedicator and ModuleManager) Please refer to
- Setup.cs for the full initialization order.
-
-
-
-
- Nelson 2025-06-16: Steam doesn't handle "server code" connect URL, but we now support
- it for rich presence joins via server code for easier inviting friends to private servers.
-
- When Steam parses a steam://connect/ip:port URL it requires the query port (e.g. 27015).
-
-
-
-
- Handles these cases:
- key value -> value
- key=value -> value
- key = value -> value
- key = value -> value
- key "value with spaces" -> value with spaces
- key "value with \" quotation marks" -> value with " quotation marks
-
- Tested in CommandLineTests.cs
-
-
-
-
- Is the application running as a headless server?
- Replacement for isDedicated property. The property could not be changed to const in dedicated-server-only
- builds without potentially breaking plugins. Only development builds can be run as both client or server.
-
-
-
-
- Are we currently running the standalone dedicated server app?
-
-
-
-
- Should dedicated server disable requests to internet?
- While in LAN mode skips the Steam backend connection and workshop item queries.
- Needs a non-Steam networking implementation before it will be truly offline only.
-
-
-
-
- Hints/messages are the pop-up texts below the interaction prompt, e.g. "reload" or "full moon rises".
- Got a complaint that the item placement obstructed hint was shown if placing multiple signs.
-
-
-
-
- Adjust screen positioning and visibility of player name widgets to match their world-space counterparts.
-
-
-
-
- Update hitmarker visibility, and their world-space positions if user enabled that.
-
-
-
-
- Disable hints and messages if no longer applicable.
-
-
-
-
- Disable vote popup if enough time has passed.
-
-
-
-
- Pause the game if playing singleplayer and menu is open.
-
-
-
-
- Many places checked that the cursor and chat were closed to see if a menu could be opened. Moved here to
- also consider that useable might have a menu open.
-
-
-
-
- Calculate damage multiplier for individual bullet.
-
-
-
-
- Each shot has a percentage chance to hit the target. Higher values are more likely to hit. e.g., it
- decreases from 1.0 at point blank to 0.0 at the weapon's maximum range. This chance is affected by the
- gun's spread.
-
-
-
-
- Contains presetsScrollView which contains customPresetsContainer and defaultPresetsContainer.
-
-
-
-
- Contains column buttons and server list itself.
-
-
-
-
- Synchronize widgets with their values.
-
-
-
-
- Each level should have a 380x80 Icon.png file.
- This class caches them so that the server list can show them quickly.
-
-
-
-
- Time.time damage was last dealt so that damage is applied once per second.
-
-
-
-
- Timer increased while taking damage, and reset to zero while inside zone.
-
-
-
-
- Current position.
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- Is the active level an Arena mode map?
-
-
-
-
- Find a new smaller circle within the old circle and clamp it to the playable level area.
-
-
-
-
- Pick a random airdrop node appropriate for the game mode.
-
-
-
-
- Nelson 2025-04-01: default position intBitCount of 13 has range of [-4096, 4096), but on "insane" size maps
- the aircraft starts 2 km outside that range. This causes the care package to spawn at the wrong position.
- Bumping intBitCount to 14 enables a range of [-8192, 8192). (public issue #4972)
-
-
-
-
- Seconds between weather event starting and reaching full intensity.
-
-
-
-
- Seconds between weather event ending and reaching zero intensity.
-
-
-
-
- Sound clip to play. Volume matches the intensity.
-
-
-
-
- Component to spawn for additional weather logic.
-
-
-
-
- If per-volume mask AND is non zero the weather will blend in.
-
-
-
-
- Expands upon Unity physics material properties for gameplay features.
-
-
-
-
- Originally considered assets for each legacy material with fallback to main material, but the fallback
- would mean a failed lookup for every property in the vast majority of cases.
-
-
-
-
- If true, crops can be planted on this material.
-
-
-
-
- If true, oil drills can be placed on this material.
-
-
-
-
- For custom friction mode, multiplies character acceleration.
-
-
-
-
- For custom friction mode, multiplies character deceleration.
-
-
-
-
- For custom friction mode, multiplies character max speed.
-
-
-
-
- • Does not support legacy ID.
- • Caches resolved asset and updates if asset has been reloaded.
- • See CachingBcAssetRef if legacy ID support is necessary.
-
-
-
-
- If true, doesn't reference anything.
- Could also be called "IsZero" or "IsNull".
-
-
-
-
- Opposite of IsEmpty.
-
-
-
-
- Assigned GUID, not the referenced asset's GUID.
-
-
-
-
- Doesn't only check (Get() == asset) because a new asset may have loaded.
- Rather, checks whether GUID points at asset.
- If asset is null, returns true if GUID and legacy ID are zero.
-
-
-
-
- Returns Empty if TryParse returns false.
-
-
-
-
- Enables assigning assetRef from an existing asset without manually calling constructor.
-
-
-
-
- Enables assigning assetRef from an asset GUID without manually calling constructor.
-
-
-
-
- Internal so that CachingBcAssetRef can copy cachedAsset.
-
-
-
-
- Auto-registering list of volume manager subclasses for level editor.
-
-
-
-
- Should calling InstantiateVolume create a new volume?
- False for deprecated (landscape hole volume) types.
-
-
-
-
- These are methods moved from the Data class which rely on core types and so cannot go in the UnturnedDat assembly.
-
-
-
-
- Intended as a drop-in replacement for existing assets with property uint16s.
-
-
-
-
- Intended as a drop-in replacement for existing assets with legacy IDs.
-
-
-
-
- Enables builder pattern for dat edits.
- Inclusion of asset type is optional for cases where it's not obvious from context.
-
-
-
-
- Enables builder pattern for dat edits.
- Inclusion of asset type is optional for cases where it's not obvious from context.
-
- Legacy asset references are converted to GUID if the asset is available. If not available, type prefix
- is only used if legacy type changed.
-
-
-
-
- This overload assumes legacyType has not changed. This will usually be the case. Legacy type would only
- change (for example) in cases like spawn tables where they can reference any asset type.
-
-
-
-
- Kept because lots of modders have been using this script in Unity,
- so removing legacy effect id would break their content.
-
-
-
-
- Active while powered.
-
-
-
-
- This value is confusing because in the level editor it is the normalized radius, but in-game it is the square radius.
-
-
-
-
- Far clip plane multiplier in-game.
-
-
-
-
- Far clip plane multiplier in level editor.
-
-
-
-
- Essentially identical to ContentReference, but MasterBundle is more convenient.
- Perhaps in the future all asset/content systems will be consolidated.
-
-
-
-
- Are name or path null or empty?
-
-
-
-
- Are both name and path non-null and non-empty?
-
-
-
-
- Name of master bundle file.
-
-
-
-
- Path to Unity asset within asset bundle.
-
-
-
-
- Find client with given RPC channel ID.
-
-
-
-
- Workshop item does not have any IP restrictions in place.
-
-
-
-
- Workshop item has an IP whitelist, and server IP is not on it.
-
-
-
-
- Workshop item has an IP blacklist, and server IP is on it.
-
-
-
-
- Workshop item does have IP restrictions, and server IP is allowed.
-
-
-
-
- Workshop item has been banned by an admin.
-
-
-
-
- Workshop item is hidden from everyone.
-
-
-
-
- Utilities for testing whether a particular server is allowed to download a workshop item.
- Available from client and server side so that clients can help enforce restrictions.
-
-
-
-
- Workshop item key-value tag storing IP whitelist and blacklist.
-
-
-
-
- Get ip restrictions value if set, otherwise null.
- Can be called from client or server.
-
-
-
-
- Test whether IP is whitelisted or blacklisted in filter.
-
-
-
-
- Split x,y-z format into whitelist [x, y] and blacklist [z].
-
-
-
-
- Split whitelist-blacklist format and parse string IPs into integer IPs.
-
-
-
-
- Parse CIDR string IPs into integer IPs.
-
-
-
-
- Added to player's food value.
-
-
-
-
- Added to player's water value.
-
-
-
-
- Added to player's virus value.
-
-
-
-
- Added to player's hallucination value.
-
-
-
-
- Get animal or player damage based on game mode config.
-
-
-
-
- Get zombie or player damage based on game mode config.
-
-
-
-
- Should player/animal/zombie surface be nulled on hit?
- Requested by spyjack for a chainsaw-style shield that was overboard with the blood.
-
-
-
-
- Should this weapon bypass the DamageTool.allowedToDamagePlayer test?
- Used by weapons that heal players in PvE.
-
-
-
-
- Please refer to ItemWeaponAsset.BuildDescription for an explanation of why this is necessary.
-
-
-
-
- Please refer to ItemWeaponAsset.BuildDescription for an explanation of why this is necessary.
-
-
-
-
- Utility for getting local hardware ID.
-
- One option for future improvement would be using Windows Management Infrastructure (WMI) API:
- https://github.com/SmartlyDressedGames/Unturned-3.x/issues/1593
-
-
-
-
- Maximum number of HWIDs before server will reject connection request.
-
-
-
-
- Get the local hardware ID(s).
-
-
-
-
- Nelson 2025-05-28: keeping this a struct to simplify memory management (no pool needed). If making this more
- generic in the future we probably do need to make it a class.
-
-
-
-
- Only applicable to barricades.
-
-
-
-
- Preliminary sort order is provided by server, but this takes priority if camera is available.
-
-
-
-
- Not ideal, but there was a problem because onLevelLoaded was not resetting these after disconnecting.
-
-
-
-
- Instantiate at least this many items per frame even if we exceed our time budget.
-
-
-
-
- Called once key/values can be set.
-
-
-
-
- Lod group will be culled when screen size is smaller than this value.
-
-
-
-
- Clamp the culling screen percentage to be less than or equal to a maximum value.
-
-
-
-
- Prevent the lowest LOD from being culled.
-
-
-
-
- Multiplier to incoming damage. Defaults to 1.0.
-
-
-
-
- Multiplier to explosive damage. Defaults to value if Armor_Explosion isn't specified.
-
-
-
-
- Armor against falling damage. Defaults to 1.0, i.e., take the normal amount of damage.
-
-
-
-
- If true on any worn clothing item, bones never break when falling.
- Defaults to false.
-
-
-
-
- Left-handed character skeleton is mirrored, so most item models are mirrored again to preserve appearance.
- Unfortunately this does not work well for some items e.g. the particle system on Elver/Dango glasses.
-
-
-
-
- Sound to play when equipped.
-
-
-
-
- If set, find a child meshrenderer with this name and change its material to the character skin material.
-
-
-
-
- The player can be wearing both a "real" in-game item and a cosmetic item in the same clothing slot.
- If true, the real item is shown rather than the cosmetic item. For example, night vision goggles
- are shown over any glasses cosmetic because of their gameplay-related green glow.
-
-
-
-
- Overrides value of TakesPriorityOverCosmetic if is true.
-
-
-
-
- If true, the value of is used rather than .
- Defaults to false. True if is set.
-
-
-
-
- For 3D clothes. Ideally, this wouldn't be type specific, but we have a separate prefab property for each
- type of clothing at the moment.
-
-
-
-
- The player can be wearing both a "real" in-game item and a cosmetic item in the same clothing slot.
- This is called on the real item if has not been set.
- If true, the real item is shown rather than the cosmetic item. If false, the cosmetic item can be seen.
-
-
-
-
- Durstenfeld version of Fisher-Yates shuffle:
- https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm
-
-
-
-
- Same as above, but prevent the last clip from being shuffled to the front in order to prevent repeats.
-
-
-
-
- Ensures we do not modify the asset in editor.
-
-
-
-
- Optional case-sensitive identifier in list of blueprints.
- Added as an alternative to referencing blueprints by index.
- Defaults to null.
-
-
-
-
- Index into Owner's blueprints list.
-
-
-
-
- Operation replaces the special behavior for EBlueprintType.Ammo and EBlueprintType.Repair.
-
-
-
-
- Note: if resolving ref please use GetCategoryTag instead for caching.
-
-
-
-
- Category tag replaces the blueprint "Type" which acted as both category AND behaviour modifier.
-
-
-
-
- Only applicable for operations with a target item.
-
- Nelson 2025-04-11: initially, this was implemented as the last item in supplies list. However, there are a
- lot of checks for special handling of target item, so I think it makes sense to separate.
-
-
-
-
- If not null, these tags must be provided by nearby objects to craft this blueprint.
- Note: this is the list as-configured. It has not been filtered according to gameplay config.
-
-
-
-
- If true, and transferState is enabled, delete attached items.
-
-
-
-
- Must match conditions to craft.
-
-
-
-
- Extra rewards given after crafting. Not displayed.
-
-
-
-
- 2023-05-27: requested by Renaxon because some Arid blueprints are debug-only and
- should not be visible when players search by name. (the 3.23.7.0 update made
- non-craftable blueprints searchable for Buak)
-
-
-
-
- Defaults to false. If true, blueprint can become visible in the crafting list even when NPC conditions
- are not met. This should typically only be enabled if all conditions are configured to be visible in the
- details panel. Otherwise, the default "conditions unmet" label isn't very informative for players.
-
-
-
-
- Search output items (excluding target item) for specific item.
-
-
-
-
- App version string packed into a 32-bit number for replication.
-
-
-
-
- Path to directory containing "Editor", "Menu", "Player", "Curse_Words.txt", etc files.
-
-
-
-
- Called clientside by BattlEye when it needs us to send a packet to the server.
-
-
-
-
- Event for plugins when BattlEye wants to kick a player.
-
-
-
-
- Called serverside by BattlEye when it needs us to send a packet to a player.
-
-
-
-
- Call whenever something impacting rich presence changes for example loading a server or changing lobbies.
-
-
-
-
- Only used on client.
- Information about current game server retrieved through Steam's "A2S" query system.
- Available when joining using the Steam server list API (in-game server browser)
- or querying the Server's A2S port directly (connect by IP menu), but not when
- joining by Steam ID.
-
-
-
-
- On client, is current server protected by VAC?
- Set after initial response is received.
-
-
-
-
- On client, is current server protected by BattlEye?
- Set after initial response is received.
-
-
-
-
- Counts "bad" packets per-connection. Bad packets *may* be legitimate, for example a delayed burst of ping
- requests. Beyond a certain point, however, it's likely a cheater is trying to waste server processing time.
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- After client submits EServerMessage.Authenticate we are waiting
- for the EClientMessage.Accepted response.
-
-
-
-
- Realtime that client sent EServerMessage.Authenticate request.
-
-
-
-
- File IDs the client thinks the server advertised it was using, or null if UGC response was pending.
- Prevents the server from advertising a smaller or fake list of items.
-
-
-
-
- Needed before loading level.
-
-
-
-
- Only safe to use serverside.
- Get the list of workshop ids that a client needs to download when joining.
-
-
-
-
- Only safe to use serverside.
- Lets clients know that this workshop id is being used on the server, and that they need to download it when joining.
-
-
-
-
- Channel id was 32-bits, but now that it is in the RPC header it can be 8-bits since there never that many
- players online. The "manager" components are on channel 1, and each player has a channel.
-
-
-
-
- Should the network transport layer accept incoming connections?
- If both the queue and connected slots are full then incoming connections are ignored.
-
-
-
-
- includeQueuedPlayers ensures player won't be kicked because someone on the same IP joined after them.
-
-
-
-
- Find player in the queue associated with a client connection.
-
-
-
-
- Find player associated with a client connection.
-
-
-
-
- Find net transport layer connection associated with a client steam id. This could be a pending player in the
- queue, or a fully connected player.
-
-
-
-
- Find player steam id associated with connection, otherwise nil if not found.
-
-
-
-
- If there's space on the server, asks player at front of queue for their verification to begin playing.
-
-
-
-
- Called when determining spawnpoint during player login.
-
-
-
-
- Is client waiting for response to ESteamPacket.CONNECT request?
-
-
-
-
- Realtime that client sent ESteamPacket.CONNECT request.
-
-
-
-
- Nelson 2023-08-09: adding because in some cases, namely workshop download and level loading,
- we can't properly handle client transport failures because these loading systems don't
- currently support cancelling partway through. (public issue #4036)
-
-
-
-
- Manages client to server communication.
-
-
-
-
- Manages server to client communication.
-
-
-
-
- Connect to server entry point on client.
- Requests workshop details for download prior to loading level.
- Once workshop is ready launch() is called.
-
-
-
-
- Callback once client transport is ready to send messages.
-
-
-
-
- Callback when something goes wrong and client must disconnect.
-
-
-
-
- Multiplayer load level entry point on client.
- Called once workshop downloads are finished, or we know the server is not using workshop.
- Once level is loaded the connect packet is sent to the server.
-
-
-
-
- Event for plugins prior to kicking players during shutdown.
-
-
-
-
- Set on the server when initializing Steam API.
- Used to notify pending clients whether VAC is active.
- Set on clients after initial response is received.
-
-
-
-
- Set on the server when initializing BattlEye API.
- Used to notify pending clients whether BE is active.
- Set on clients after initial response is received.
-
-
-
-
- Client should call RequestDisconnect instead to ensure all disconnects have a logged reason.
-
-
-
-
- Internet server callback when backend is ready.
-
-
-
-
- If missing map is a curated map then log information about how to install it.
-
-
-
-
- Was not able to find documentation for this unfortunately,
- but it seems the max length is 127 characters as of 2022-09-12.
-
-
-
-
- Set key/value tags on Steam server advertisement so that client can display text in browser.
-
-
-
-
- Set key/value tags on Steam server advertisement so that client can display server config in browser.
-
-
-
-
- Primarily kept for backwards compatibility with plugins. Some RPCs that reply to sender also use this but
- should be tidied up.
-
-
-
-
- Hack to deal with the oversight of reordering the ESteamPacket enum during net messaging rewrite causing
- older plugins to send wrong packet type.
-
-
-
-
- Send to a connected client.
-
-
-
-
- The server ignores workshop info requests if it's been less than 30 seconds,
- so we cache that info for 1 minute in-case we try to connect again right away.
-
-
-
-
- This information is needed before the level is loaded.
-
-
-
-
- Advertised server name. e.g., "Nelson's Unturned Server"
-
-
-
-
- Name of map to load.
-
-
-
-
- Legacy difficulty mode that should be removed eventually.
-
-
-
-
- Perspective settings.
-
-
-
-
- Server's IP from when we originally received response.
- Used to test download restrictions.
-
-
-
-
- Last realtime this cache was updated.
-
-
-
-
- Hacked-together initial implementation to refuse network messages from specific players.
- On PC some cheats send garbage packets in which case those clients should be blocked.
-
-
-
-
- Close connection, and refuse all future connection attempts from a remote player.
- Used when garbage messages are received from hacked clients to avoid wasting time on them.
-
-
-
-
- Record that a bad packet was received from connection and maybe kick them if rate limit is exceeded.
-
-
-
-
- Private to prevent plugins from changing the value.
-
-
-
-
- Should buffers used by plugin network events be read-only copies?
-
-
-
-
- First four bytes of RPC messages are the channel id.
-
-
-
-
- Should players be allowed to join this server regardless of whether their version number matches ours?
- Useful to allow players to join debug mode servers.
-
-
-
-
- Is version number supplied by client compatible with us?
-
-
-
-
- Notify players waiting to join server if their position in the queue has changed.
-
-
-
-
- Prevent any particular client from delaying the server connection queue process.
-
-
-
-
- Allows hosting providers to limit the configurable max players value from the command-line.
-
-
-
-
- Deprecated-ish IPv4 to bind listen socket to. Set by bind command.
-
-
-
-
- Local address to bind listen socket to. Set by bind command.
-
-
-
-
- Steam query port.
-
-
-
-
- If hosting a server, get the game traffic port.
-
-
-
-
- Called while running
-
-
-
-
- Used to build packet about each existing player for new player, and then once to build a packet
- for existing players about the new player. Note that in this second case forPlayer is null
- because the packet is re-used.
-
-
-
-
- Not exactly ideal, but this a few old "once per player" client->server RPCs.
-
-
-
-
- Event for plugins when rejecting a player.
-
-
-
-
- Notify client that they were kicked.
-
-
-
-
- Notify client that they were banned.
-
-
-
-
- Player left server by canceling their ticket, or we are disconnecting them without telling them.
- Does not send any packets to the disconnecting player.
-
-
-
-
- Number of transport connection failures on this frame.
-
-
-
-
- Callback when a pending player or existing player unexpectedly loses connection at the transport level.
-
-
-
-
- Check whether a server is one of our favorites or not.
-
-
-
-
- Set whether a server is one of our favorites or not.
-
-
-
-
- Open URL in the steam overlay, or if disabled use the default browser instead.
- Warning: any third party url should be checked by WebUtils.ParseThirdPartyUrl.
-
-
-
-
- Steam's favorites list requires that we know the server's IPv4 address and port,
- so we can't favorite when joining by Steam ID.
-
-
-
-
- Toggle whether we've favorited the server we're currently playing on.
-
-
-
-
- Toggle whether we've bookmarked the server we're currently playing on.
-
-
-
-
- Ping from client to server, measured in milliseconds.
-
-
-
-
- Number of seconds since January 1st, 1970 GMT as reported by backend servers.
-
-
-
-
- Current UTC as reported by backend servers.
- Used by holiday events to keep timing somewhat synced between players.
-
-
-
-
- Has the initial backend realtime been queried yet?
- Not available immediately on servers because SteamGameServerUtils cannot be used until the actual Steam instance is available.
-
-
-
-
- Invoked after backend realtime becomes available.
-
-
-
-
- In here because we want to call this very early in startup after initializing provider,
- but with plenty of time to hopefully install maps prior to reaching the main menu.
-
-
-
-
- This file is of particular importance to the dedicated server because otherwise Steam networking sockets
- will say the certificate is for the wrong app. When launching the game outside Steam this sets the app.
-
-
-
-
- Hackily exposed as an easy way for editor code to check the verison number.
-
-
-
-
- Has the onApplicationQuitting callback been invoked?
-
-
-
-
- Moved from OnApplicationQuit when that was deprecated.
-
-
-
-
- Useful to load files from Steam install of the game while running in the editor.
-
-
-
-
- Moved from OnApplicationQuit when Application.CancelQuit was deprecated.
-
-
-
-
- A couple of players have reported the PRO_DESYNC kick because their client thinks they own the gold upgrade,
- but the Steam backend thinks otherwise. This option is a bit of a hack to work around the problem for them.
-
-
-
-
- If specified, all Steam achievements and stats progress is lost.
-
-
-
-
- If specified, all Steam achievements are unlocked during startup.
-
-
-
-
- Host has not specified a value.
-
-
-
-
- Not an actual tag. Used for filtering.
-
-
-
-
- Host has specified that the server does not sell anything for real money.
-
-
-
-
- Host has specified that the server does have a real money shop, but does not sell anything which affects gameplay.
-
-
-
-
- Host has specified that the server does have a real money shop which sells benefits that affect gameplay.
-
-
-
-
- Server list filter for plugin usage.
-
-
-
-
- Allows Unity events to send text chat messages from the client, for example to execute commands.
-
-
-
-
- Text to use when SendDefaultTextChatMessage is invoked.
-
-
-
-
- All players on the server will see the message.
-
-
-
-
- Only nearby players will see the message.
-
-
-
-
- Chat mode to send request in.
-
-
-
-
- Corresponds to not active and not blending with new weather system.
-
-
-
-
- Corresponds to transitioning in with new weather system.
-
-
-
-
- Corresponds to active with new weather system.
-
-
-
-
- Corresponds to transitioning out with new weather system.
-
-
-
-
- Corresponds to not active and not blending with new weather system.
-
-
-
-
- Corresponds to transitioning in with new weather system.
-
-
-
-
- Corresponds to active with new weather system.
-
-
-
-
- Corresponds to transitioning out with new weather system.
-
-
-
-
- Kept for backwards compatibility with mod hooks, plugins, and events.
-
-
-
-
- Kept for backwards compatibility with mod hooks, plugins, and events.
-
-
-
-
- [0, 1] used to avoid invoking BlendAlphaChanged every frame.
- Compared against globalBlendAlpha not taking into account local volume.
-
-
-
-
- Hash of lighting config.
- Prevents using the level editor to make night time look like day.
-
-
-
-
- Level designed target fog color.
-
-
-
-
- Level designed target fog intensity.
-
-
-
-
- Level designed target atmospheric fog intensity.
-
-
-
-
- If global ocean plane is enabled then return the worldspace height,
- otherwise return the optional default value. Default for volume based
- water is -1024, but atmosphere measure uses a default of zero.
-
-
-
-
- Ticked on dedicated server as well as client so that server can listen for weather events.
-
- On dedicated server this is always 0xFFFFFFFF.
-
-
-
- Reset any global shader properties that may affect the main menu.
-
-
-
-
- Source effect to group multiple volumes.
-
-
-
-
- Audio source added to AmbianceAudioGameObject.
-
-
-
-
- Reset to false before updating volumes.
-
-
-
-
- Reset to false before updating volumes.
-
-
-
-
- Reset to zero before updating volumes. If any volume uses distance fadeout, this is the maximum alpha.
-
-
-
-
- If any volume doesn't use distance fadeout, this is the alpha based on time spent inside..
-
-
-
-
- Highest priority of overlapping volumes.
-
-
-
-
- If any volume doesn't use distance fadeout, this is the minimum of their audio fade-in time.
-
-
-
-
- If any volume doesn't use distance fadeout, this is the minimum of their audio fade-out time.
- Only reset when created so that value is available after leaving all volumes.
-
-
-
-
- Visualizes reverb zone in-game.
-
-
-
-
- Can horde beacons be placed in the associated bounds?
-
-
-
-
- Overrides vehicle physics values in bulk without building asset bundles.
-
-
-
-
- Only RPCs from the server will be allowed to invoke this method.
-
-
-
-
- RPCs are only allowed to invoke this method if we're running as server.
-
-
-
-
- Only RPCs from the owner of the object will be allowed to invoke this method.
-
-
-
-
- Maximum number of calls per-second per-player.
-
-
-
-
- Minimum seconds between calls per-player.
- Initialized from ratelimitHz when gathering RPCs.
-
-
-
-
- Index into per-connection rate limiting array.
-
-
-
-
- Backwards compatibility for older invoke by name code e.g. plugins.
-
-
-
-
- If changing header size remember to update PlayerManager and allocPlayerChannelId.
-
-
-
-
- How far to shift compressed voice data.
-
-
-
-
- If true, this object is owned by a locally-controlled player.
- For example, some code is not run for "remote" players.
- Always true in singleplayer. Always false on dedicated server.
-
-
-
-
- Use on server when invoking client methods on the owning player.
-
-
-
-
- Replacement for ESteamCall.NOT_OWNER.
-
-
-
-
- Don't use this. Originally added so that Rocketmod didn't have to inject into the game's assembly.
-
-
-
- True if the call succeeded, or false if the sender should be refused.
-
-
-
- Don't use this. Originally added so that Rocketmod didn't have to inject into the game's assembly.
-
-
-
-
- Calls array needs rebuilding the next time it is used.
- Should be invoked when adding/removing components with RPCs.
-
-
-
-
- Does array of RPCs need to be rebuilt?
-
-
-
-
- Find methods with SteamCall attribute, and gather them into an array.
-
-
-
-
- Encode byte array of voice data to send.
-
-
-
-
- Decode voice parameters from byte array.
-
-
-
-
- If true, light contributes to player spotlight. Defaults to true.
-
- Can be set to false for modders with a custom light setup. For example, this was added
- for a modder who is using melee lights to toggle a lightsaber-style glow.
-
-
-
-
- 32-bit mask granting server plugins additional control over custom UIs.
- Only replicated to owner.
-
-
-
-
- Enables cursor movement while not in a vanilla menu.
-
-
-
-
- Disable background blur regardless of other UI state.
-
-
-
-
- Enable background blur regardless of other UI state.
- Takes precedence over NoBlur.
-
-
-
-
- Enable title card while focusing a nearby player.
-
-
-
-
- Enable explanation and respawn buttons while dead.
-
-
-
-
- Enable health meter in the HUD.
-
-
-
-
- Enable food meter in the HUD.
-
-
-
-
- Enable water meter in the HUD.
-
-
-
-
- Enable virus/radiation/infection meter in the HUD.
-
-
-
-
- Enable stamina meter in the HUD.
-
-
-
-
- Enable oxygen meter in the HUD.
-
-
-
-
- Enable icons for bleeding, broken bones, temperature, starving, dehydrating, infected, drowning, full moon,
- safezone, and arrested status.
-
-
-
-
- Enable UseableGun ammo and firemode in the HUD.
-
-
-
-
- Enable vehicle fuel, speed, health, battery charge, and locked status in the HUD.
-
-
-
-
- Enable center dot when guns are not equipped.
-
-
-
-
- Enable popup when in-game rep is increased/decreased.
-
-
-
-
- Default flags set when player spawns.
-
-
-
-
- 32-bit mask indicating to the server which admin powers are being used.
- Does not control which admin powers are available.
-
-
-
-
- Player is using spectator camera.
-
-
-
-
- Player is using barricade/structure transform tools.
-
-
-
-
- Player is using overlay showing player names and positions.
-
-
-
-
- Per-player event invoked when admin usage flags change.
-
-
-
-
- Event invoked when any player's admin usage flags change.
-
-
-
-
- Used by plugins.
-
-
-
-
- Invoked on client when a plugin changes the widget flags.
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- Not rate limited because server tracks number of expected screenshots.
-
-
-
-
- Request client to open a given URL.
- Allows plugins to open web browser, but also gives client the chance to ignore it.
-
-
-
-
- Tell client to join a specific server.
- Disconnects client and sends them to the join server screen.
- Only used by plugins.
-
-
-
-
- Is this player currently in a plugin's modal dialog?
- Enables cursor movement while not in a vanilla menu.
-
-
-
-
- Tell the client whether to be in plugin modal mode or not.
- Kept from prior to introduction of pluginWidgetFlags.
-
-
-
-
- Which admin powers are currently in use by the client.
- Reported to the server by the client.
- Does not control which admin powers are available.
- Note: Hacks can prevent this notification from being sent.
-
-
-
-
- Called on the client to notify the server of admin usage changes (if any).
-
-
-
-
- Called on the client to notify the server of admin usage changes (if any).
-
-
-
-
- Teleport to a random player spawn designated in the level.
-
-
-
-
- Teleport to bed, if player has set one.
-
-
-
-
- How many calls to will succeed per second.
-
-
-
-
- How many rate limited actions have been performed recently.
- Increased after performing each rate limited action, and decreased over time.
- Cannot perform actions when greater than one.
-
-
-
-
- Note: new official code should be using per-method rate limit attribute.
- This is kept for backwards compatibility with plugins however.
-
- Call this method before any requests the client can spam to the server.
-
- Should your code proceed with the rate limited action?
-
-
-
- Call every frame to cool down rate limiting.
-
-
-
-
- This code was in the Start message, and should happen before other initialization.
-
-
-
-
- Hacky replacement for Start() that runs after net ids are assigned but before sending player state.
-
-
-
-
- Nelson 2024-11-11: Added to help narrow down if player is destroyed outside of Provider.removePlayer.
- (public issue #4760)
-
-
-
-
- Flag in case levelObject is destroyed.
-
-
-
-
- Poorly named. Specific to InteractableObjectQuest.
-
-
-
-
- Directly uses input string for custom message popups.
-
-
-
-
- Player cannot build on a vehicle with occupied seats.
-
-
-
-
- Horde beacon cannot be built here.
-
-
-
-
- Item type is not allowed on vehicles.
-
-
-
-
- Item must be placed closer to vehicle hull.
-
-
-
-
- Player cannot build while seated in a vehicle because some vehicles are abusable to stick the camera through a wall.
-
-
-
-
- Interacting with ladder.
-
-
-
-
- Popup when equipping housing planner "press T to show items"
-
-
-
-
- Popup when structure is blocked by something named we can format into the message.
-
-
-
-
- Notice that freeform buildables are blocked by Allow_Freeform_Buildables.
-
-
-
-
- Popup when structure is blocked by terrain.
-
-
-
-
- Vehicle doesn't support spray paints.
-
-
-
-
- Explaining that some blueprints require workstations.
-
-
-
-
- Nelson 2024-11-29: Curious to put all the gun stats in one place for easier comparison. Rather rudimentary at
- the moment so not including in the update.
-
-
-
-
- Controls how first-person arms are moved for turrets operated from the driver's seat.
-
-
-
-
- Default. Pushes first-person arms off-screen while aiming. Originally implemented for the Fighter Jet where
- it looks weird if your arms are still visible when the camera zooms in while "aiming."
-
-
-
-
- Push first-person arms off-screen when equipped.
-
-
-
-
- No particular use in mind, but included for completeness.
-
-
-
-
- Default. Plays "Hammer" animation if ammo count was zero.
-
-
-
-
- Regardless of ammo, does not play "Hammer" animation after reloading.
-
-
-
-
- Regardless of ammo, will play "Hammer" animation after reloading.
-
-
-
-
- Sound to play when input is pressed but weapon has a fire delay.
-
-
-
-
- Maximum distance the gunshot can be heard.
-
-
-
-
- Override Rangefinder attachment's maximum range.
- Defaults to range value.
-
-
-
-
- Can this weapon instantly kill players by headshots?
- Only valid when game config also enables this.
-
-
-
-
- Can this weapon be fired without consuming ammo?
- Some mods use this for turrets.
-
-
-
-
- Ammo quantity to consume per shot fired.
-
-
-
-
- Simulation steps to wait after input before firing.
-
-
-
-
- Can magazine be changed by player?
-
-
-
-
- Can player ADS while sprinting and vice versa?
-
-
-
-
- If true, the gun cannot shoot unless the player is aiming.
- Note: String action overrides this.
- Defaults to true for miniguns.
-
-
-
-
- If true, the gun will stop aiming regardless of player input.
-
-
-
-
- Seconds from pressing "aim" to fully aiming down sights.
-
-
-
-
- If true, Aim_Start and Aim_Stop animations are scaled according to actual aim duration.
-
-
-
-
- Selects a default magazine, following magazine replacements and spawn table resolution.
-
-
-
-
- Selects a default magazine, following magazine replacements and spawn table resolution.
-
-
-
-
- How long in seconds after firing to rechamber the gun by playing the Hammer animation.
- Only applicable if RechamberAfterShotCount is >0.
- Defaults to 0.25 seconds.
-
-
-
-
- How long in seconds after hammering to eject a bullet casing.
- Defaults to 0.45 seconds.
-
-
-
-
- How long in seconds after reloading to eject bullet casings.
- Only applicable if CasingEjectCountAfterReload is greater than zero.
- Defaults to 0.5 seconds.
-
-
-
-
- Defaults to false. If true, attachments must specify at least one non-zero caliber.
- Requested by Great Hero J to block vanilla attachments in VGR.
-
-
-
-
- Determines whether "Hammer" animation plays after attaching a magazine.
- Note: this happens when a magazine replaces another OR fills previously empty slot.
-
-
-
-
- Determines whether "Hammer" animation plays after detached a magazine.
- Note: this happens when a magazine is removed from the gun without a replacement.
-
-
-
-
- Spread multiplier while sprinting.
-
-
-
-
- Spread multiplier while crouched.
-
-
-
-
- Spread multiplier while prone.
-
-
-
-
- Spread multiplier while swimming.
-
-
-
-
- Spread multiplier while not grounded.
-
-
-
-
- Recoil magnitude multiplier while the gun is aiming down sights.
-
-
-
-
- Recoil magnitude while sprinting.
-
-
-
-
- Recoil magnitude while crouched.
-
-
-
-
- Recoil magnitude while prone.
-
-
-
-
- Recoil magnitude while swimming.
-
-
-
-
- Recoil magnitude while not grounded.
-
-
-
-
- [0, 1] percentage of maximum range where damage begins decreasing toward falloff multiplier.
-
-
-
-
- [0, 1] percentage of maximum range where damage finishes decreasing toward falloff multiplier.
-
-
-
-
- [0, 1] percentage of damage to apply at damageFalloffMaxRange.
-
-
-
-
- Seconds before physics projectile is destroyed.
-
-
-
-
- Is this gun setup to have a change of jamming?
-
-
-
-
- [0, 1] quality percentage that jamming will start happening.
-
-
-
-
- [0, 1] percentage of the time that shots will jam the gun when at 0% quality.
- Chance of jamming is blended between 0% at jamQualityThreshold and jamMaxChance% at 0% quality.
-
-
-
-
- Name of the animation to play when unjamming chamber.
-
-
-
-
- Movement speed multiplier while the gun is aiming down sights.
-
-
-
-
- If >0, hammer animation plays after shooting this many shots after RechamberAfterShotDelay seconds pass.
- Defaults to one for EAction.Pump and EAction.Bolt, zero otherwise.
-
-
-
-
- If >0, emit particles after hammer after EjectAfterHammerDelay seconds pass.
- Only applicable if RechamberAfterShotCount is >0.
- Defaults to 1.
-
-
-
-
- If >0, emit particles after reloading after EjectAfterReloadDelay seconds pass.
- Defaults to ammoMax for EAction.Break.
-
-
-
-
- Please refer to .
-
-
-
-
- Please refer to .
-
-
-
-
- The dialogue to go to when a message has no available responses.
- If this is not specified the previous dialogue is used as a default.
- If neither is available then a default "goodbye" response is added.
-
- For example, Chief_Police_Doughnuts_Accepted dialogue has a single message
- "Let's just keep this between the two of us." shown with "prev" dialogue
- set to the NPC's root dialogue asset.
-
-
-
- True if primary action was started and stopPrimary should be called in the future.
- Useful to allow input to be held until action executes.
-
-
- True if secondary action was started and stopSecondary should be called in the future.
- Useful to allow input to be held until action executes.
-
-
-
- Does useable have a menu open?
- If so pause menu, dashboard, and other menus cannot be opened.
-
-
-
-
- Common base for barricades and structures.
- 2023-01-16: not ideal to be adding this so late in development, but at least it is a step in the right direction.
-
-
-
-
- If true, this item is eligible for zombies to detect and attack when stuck.
- Defaults to true.
-
-
-
-
- Item or spawn table recovered when picked up below 100% health.
-
-
-
-
- Minimum number of items to recover when salvaged.
-
-
-
-
- Maximum number of items to recover when salvaged.
-
-
-
-
- Minimum number of items to drop when destroyed.
-
-
-
-
- Maximum number of items to drop when destroyed.
-
-
-
-
- Item or spawn table dropped when destroyed.
-
-
-
-
- If non-null, this asset provides the listed crafting tags to nearby players.
-
-
-
-
- Note: this assumes SalvageItemRef points to an ItemAsset.
-
-
-
-
- By default a crafting ingredient is salvaged.
-
-
-
-
- Thanks to Glenn Fiedler for this RK4 implementation article:
- https://gafferongames.com/post/integration_basics/
-
-
-
-
- Higher values return to the target position faster.
-
-
-
-
- Higher values reduce bounciness and settle at the target position faster.
- e.g. a value of zero will bounce back and forth for a long time (indefinitely?)
-
-
-
-
- Nelson 2025-04-09: this acted as both category AND behaviour modifier, so I'm separating it into a custom tag
- for categorization and a property for overriding how the blueprint processes input items.
-
- Nelson 2025-04-10: repair and ammo "types" had a variety of quirks I wanted to sort out:
- • Moving amount between items required ammo type blueprint, but some modders expressed interest in non-ammo use.
- (I.e., ideally better supporting amount on non-ammo items going forward.)
- • Both types ignored output items. Output was used to represent the target item. Similarly, the UI added a fake
- extra input item representing target item.
- • PlayerCrafting and PlayerDashboardCraftingUI re-implemented some crafting item searching logic for finding
- the item to refill or repair that can be converted into input item parameters.
- The plan at the moment is to make the last input item the "target" item for operations. Legacy ammo/repair
- blueprints will then default to no output item and add an extra input item. (And add a variety of parameters
- needed to replicate the specialized item search behaviour.)
-
-
-
-
- Controls what blueprint does with input items.
- Separated from EBlueprintType which acted as both category AND operation.
-
-
-
-
- No special modification to input items.
-
-
-
-
- Restore target input item to full quality.
-
-
-
-
- Transfer amount from input items to target item.
-
-
-
-
- Can be added to any GameObject with a Dropper, Note, or Quest interactable object in its parents.
-
-
-
-
- Invoked on authority when interactable object is used successfully.
- Only invoked on clients if ShouldReplicate is true.
-
-
-
-
- If true, the server will replicate the OnUsed event to clients as well.
-
-
-
-
- If ShouldReplicate is enabled, should the RPC be called in reliable mode?
- Unreliable might not be received by clients.
-
-
-
-
- Applied if greater than zero. Defaults to 128.
-
-
-
- True if it's a new claim flag.
-
-
-
- Player stealth radius cannot go below this value.
-
-
-
-
- Deal damage and break legs if speed is greater than this value.
-
-
-
-
- By default players in singleplayer and admins in multiplayer have a faster salvage time.
- This option was requested for maps with entirely custom balanced salvage times.
-
-
-
-
- Cached result of finding all craftingBlacklists.
-
-
-
-
- Determines which weather can naturally occur in this level.
- Null if empty.
-
-
-
-
- If set, this weather will always be active and scheduled weather is disabled.
-
-
-
-
- Audio clip to play in 2D when a player dies.
-
-
-
-
- Defaults to false because some servers have rules and info on the loading screen.
-
-
-
-
- Volume weather mask used while not inside an ambience volume.
-
-
-
-
- Allows level to override skill max levels.
- Null if empty, otherwise matches 1:1 with PlayerSkills._skills.
-
-
-
-
- If false, clouds are removed from the skybox.
-
-
-
-
- Players are kicked from multiplayer if their skin color is within threshold of any of these rules.
-
-
-
-
- Optional Unturned extensions to the LOD Group component.
-
-
-
-
- Could be extended, e.g. to clamp cull size separately from the per-LOD sizes.
-
-
-
-
- Unturned will adjust per-LOD sizes to counteract LOD bias.
- Elver has carefully tuned LOD sizes for the interior of the mall, so LOD bias affecting them is undesirable.
- Note that due to a Unity bug only LOD0 can be greater than 100%.
-
-
-
-
- Is player already waiting to exit their group?
-
-
-
-
- Add player to exit queue if enabled, or immediately remove.
-
-
-
-
- Remove player from queue if they're waiting to exit their group.
-
-
-
-
- Invoked immediately before Destroy vehicle.
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- If true, a vehicle asset has been replaced.
-
-
-
-
- Find vehicle with matching replicated instance ID.
-
-
-
-
- Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
-
-
-
-
- Supports redirects by VehicleRedirectorAsset. If paintColor is set that takes priority, otherwise if
- redirector's SpawnPaintColor is set, that color is used,
-
-
-
-
- Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
-
-
-
-
- Supports redirects by VehicleRedirectorAsset. If paintColor is set that takes priority, otherwise if
- redirector's SpawnPaintColor is set, that color is used,
-
-
-
-
- Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
-
-
-
-
- Supports redirects by VehicleRedirectorAsset. If paintColor is set that takes priority, otherwise if
- redirector's SpawnPaintColor is set, that color is used,
-
-
-
-
- Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
-
-
-
-
- Supports redirects by VehicleRedirectorAsset. If paintColor is set that takes priority, otherwise if
- redirector's SpawnPaintColor is set, that color is used,
-
-
-
-
- Added so that garage plugins do not need to invoke RPC manually.
-
- zero spawns without a battery, ushort.MaxValue indicates the battery should be randomly spawned according to asset configuration, other values force a battery to spawn.
-
-
-
- For backwards compatibility. This older method spawns a vehicle with a random paint color. (set paintColor
- to zero for a random paint color)
-
- zero spawns without a battery, ushort.MaxValue indicates the battery should be randomly spawned according to asset configuration, other values force a battery to spawn.
-
-
-
- Used by external spawn vehicle methods.
- Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used,
- unless preferredColor.a is byte.MaxValue.
-
- Owner to lock vehicle for by default. Used to lock vehicles to the player who purchased them.
-
-
-
- Client-side request server to toggle headlights.
-
-
-
-
- As client request server to use bonus feature like towing hook or police sirens.
-
-
-
-
- Helper for servers with huge numbers of vehicles.
- Called with fixed span of indexes e.g. [0, 10), then [10, 20). This function then clamps the final span to the vehicle count.
-
-
-
-
- Does as few tests as possible while maintaining base game expectations.
-
-
-
-
- Force remove player from vehicle they were in, if any.
- Called when player disconnects to tidy up and run callbacks.
-
- True if player was in a vehicle, false otherwise.
-
-
-
- Remove player from vehicle and teleport them to an unchecked destination.
-
-
-
-
- Is spawnpoint open for vehicle?
-
-
-
-
- Try to find a random spawnpoint to spawn a vehicle while server is running.
-
-
-
-
- Add a new vehicle at given spawnpoint.
- Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
-
-
-
-
- Add a new vehicle at given spawnpoint and replicate to clients.
- Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
-
-
-
-
- Called when deciding whether to respawn a new vehicle, after gameplay has begun.
-
-
-
-
- Called during level load to determine how many vehicles to create.
-
-
-
-
- Called on server each frame to slowly damage abandoned vehicle.
-
-
-
-
- +0 = InteractableVehicle
- +1 = root transform
- +X = VehicleBarricadeRegion
- Asset does not know number of train cars, so we always reserve slack.
-
-
-
-
- Speed is unsigned, so 8 bits allows a range of [0, 256).
-
-
-
-
- Velocity is signed, so 9 bits allows a range of [-256, 256).
-
-
-
-
- Cast a ray from the sky to find highest point.
-
-
-
-
- Cast a ray from slightly above point so indoor teleport nodes work.
-
-
-
-
- If set, we are responsible for destroying texture.
-
-
-
-
- This is a bit of a hack in order to simplify the foliage menu when most of the time editors are either
- manually placing foliage or automatically baking it.
-
-
-
-
- Get brush strength multiplier where strength decreases past falloff. Use this method so that different falloffs e.g. linear, curved can be added.
-
- Percentage of .
-
-
-
- Allows foreach loop to iterate Vector2Int within RegionBoundsInt.
-
-
-
-
- Kept because lots of modders have been using this script in Unity,
- so removing legacy effect id would break their content.
-
-
-
-
- Hack for modders using grenade component as a way to deal radial damage. Not a good long term solution but
- widely requested for the meantime until I get the chance to rewrite some of the health stuff.
-
-
-
-
- Thanks to Glenn Fiedler for this RK4 implementation article:
- https://gafferongames.com/post/integration_basics/
-
-
-
-
- Higher values return to the target position faster.
-
-
-
-
- Higher values reduce bounciness and settle at the target position faster.
- e.g. a value of zero will bounce back and forth for a long time (indefinitely?)
-
-
-
-
- At low framerate deltaTime can be so high the spring explodes unless we use a fixed timestep.
-
-
-
-
- Interactable storage barricade to spawn at the drop position.
-
-
-
-
- Prefab to spawn falling from the aircraft.
-
-
-
-
- Initially these were structs so that they would be adjacent in memory and therefore faster to iterate lots of them,
- but making them classes lets them reference each other which significantly simplifies finding adjactent housing parts.
-
-
-
-
- Item along positive direction.
- Can be multiple on existing saves or if players found an exploit.
-
-
-
-
- Item along negative direction.
- Can be multiple on existing saves or if players found an exploit.
-
-
-
-
- Item between floors.
- Can be multiple on existing saves or if players found an exploit.
-
-
-
-
- Is there a wall in this slot, and is it full height (not rampart)?
-
-
-
-
- This check prevents placing roof onto the upper edge of a rampart because ramparts
- create an edge at full wall height even though they are short.
-
- Ideally in the future wall height will become configurable and remove
- the need for this check.
-
- See public issue #3590.
-
-
-
-
- Position at the base of the pillar.
-
-
-
-
- Yaw if placing pillar at this vertex.
-
-
-
-
- Pillar or post currently occupying this slot.
- Can be multiple on existing saves or if players found an exploit.
-
-
-
-
- Can be zero if pillar is floating, or up to six in the center of a triangular circle.
-
-
-
-
- Is there a pillar in this slot, and is it full height (not post)?
-
-
-
-
- Floors must be placed touching the terrain, or a fake-terrain object like a grassy cliff model.
-
-
-
-
- Pillars can be partly underground or inside a designated allowed underground area. Otherwise,
- if the very top of the pillar is underground placement is blocked. (public issue #4250)
-
-
-
-
- Side length of square and triangular floor/roof.
- Walls can be slightly less, but we treat them as if they are the full length.
-
-
-
-
- Vertical distance from edge center to wall pivot.
-
-
-
-
- Vertical distance from edge center to rampart pivot.
-
-
-
-
- If position is nearly equal within this threshold then edges/vertices will connect.
-
-
-
-
- Maximum distance from player's viewpoint to allow placement.
-
-
-
-
- How far to search for empty slot best match.
-
-
-
-
- Cosine of the angle between ray direction and direction toward slot must be greater than this.
-
-
-
-
- When validating item placement expand physics overlap this much.
- Useful to ensure slightly-touching overlaps (e.g. pillar touching the pillar above) are handled properly.
-
-
-
-
- Ensure players, vehicles, zombies, animals, etc are not within this distance of pending placement.
-
-
-
-
- Distance from triangle pivot to apex of triangle.
-
-
-
-
- Radius of circle within triangle edges.
-
-
-
-
- Distance from triangle pivot to center of triangle.
-
-
-
-
- Small threshold to allow placing even with existing barricades on the floor.
-
-
-
-
- House overlap is approximately the same size as the housing item's collider(s), and is intended to check whether
- any pre-existing barricades or structural items are in the way. For example whether a wall cannot be placed because
- there is a storage crate in the way, or if a foundation is blocked by another slightly rotated foundation.
-
-
-
-
- Character overlap is slightly larger than the house overlap, and checks whether any players, vehicles, animals, zombies, etc
- are nearby. This is necessary because when house and characters were combined in a single physics query it was possible to
- stand *just* close enough to step into the collider as it was spawned.
-
-
-
-
- Called when a housing item is spawned or after moving an existing item.
-
-
-
-
- Called before a housing item is destroyed or before moving a housing item.
-
-
-
-
- Search grid for existing vertex at approximately equal position.
- Considers adjacent grid cells if near cell boundary to avoid issues with floating point inaccuracy.
-
-
-
-
- Search grid for existing edge at approximately equal position.
- Considers adjacent grid cells if near cell boundary to avoid issues with floating point inaccuracy.
-
-
-
-
- Find existing edge and add connection, or add new empty edge.
-
-
-
-
- Find existing vertex and add connection, or add new empty vertex.
-
-
-
-
- Find existing edge and set associated wall, or add an empty edge at wall's location.
-
-
-
-
- Find slot occupied by wall and remove if no longer attached to anything.
-
-
-
-
- Find existing vertex and set associated pillar, or add an empty vertex at pillar's location.
-
-
-
-
- Find slot occupied by pillar and remove if no longer attached to anything.
-
-
-
-
- Hack to prevent ignoring floor which might be overlapping pending floor placement.
- For example when placing a square floor on the opposite edge of a spot which has a triangular floor
- we do not want to ignore the triangular floor during the physics query.
-
-
-
-
- Used by triangular floor and roof validation to test for collisions.
-
-
-
-
- Ensure wall fits in an empty slot.
-
-
-
-
- Ensure pillar fits in an empty slot.
-
-
-
-
- Nelson 2024-06-26: With structure rotation replicated as a quaternion we need to be smarter about extracting
- yaw from model transform. Quaternion.eulerAngles.y isn't necessarily the yaw anymore.
-
-
-
-
- Working buffer for placement overlap tests.
-
-
-
-
- Index of the context parameter, if not None.
-
-
-
-
- Reflected attribute that was used to find this method.
- Contains extra information about how to call it.
-
-
-
-
- True once per frame, false otherwise.
-
-
-
-
- Item ID of barricade to spawn after landing.
-
-
-
-
- Barricade to spawn after landing.
-
-
-
-
- Cargo spawn table legacy ID.
-
-
-
-
- Kill any players inside the spawned interactable box.
- Uses hardcoded size of 4 x 4 x 4.
-
-
-
-
- Determines how to handle a server if it matches a rule.
-
-
-
-
- Apply label and continue processing rules.
-
-
-
-
- Show the server in the list.
-
-
-
-
- Hide the server from the list.
-
-
-
-
- Note: Port (if set) refers to the Steam query port.
-
-
-
-
- If true, negate whether this rule matches. i.e., binary NOT.
-
-
-
-
- Incremented during server list refresh for each server blocked by this rule.
-
-
-
-
- Optional image bundled alongside the asset file.
-
-
-
-
- If true the event will only be invoked in offline mode and on the server.
-
-
-
-
- Hack to prevent hitting volume rate limit because (at least as of 2022-05-24) we do not have an event for finished dragging.
-
-
-
-
- Whether this animal was updated in this network tick and needs to be resent.
-
-
-
-
- Alert this animal that it was damaged from a given position.
- Offensive animals investigate the position, whereas other animals run away.
-
-
-
-
- Alerts this animal that it needs to run away.
-
- The position to run away from.
-
-
-
- Keep for plugin backwards compatibility.
-
-
-
-
- Reduces frequency of UndergroundAllowlist checks because it can be expensive with lots of entities and volumes.
-
-
-
- Unturned_Data folder path
-
-
-
- Useful to check whether hashing is causing problems.
-
-
-
-
- Useful to narrow down why a player is getting kicked for modified resource files when joining a server.
-
-
-
-
- Only set in play mode for determing if we should cache brute force lengths.
-
-
-
-
- If set, road properties are taken from this asset instead of the older road properties editor.
-
-
-
-
- Checkered lines when occluded, solid lines when visible.
-
-
-
-
- Solid lines regardless of depth.
-
-
-
-
- In-game debug drawing utility similar to Unity's editor Gizmos.
-
-
-
- Local space relative to matrix.
-
-
-
- Wireframe grid on the XZ plane.
-
-
-
-
- Center relative to matrix.
-
-
-
-
- Center relative to matrix.
-
-
-
-
- LateUpdate so that the most up-to-date gizmos and main camera position are used.
-
-
-
-
- Callback to draw in the Unity editor scene view.
-
-
-
-
- Can be null if nothing has been added at position.
-
-
-
-
- Does not add new lists to empty cells.
-
-
-
-
- Number of Lists to preallocate in batches.
- (GRID_SIZE * GRID_SIZE) % LIST_POOL_SIZE should be zero leftover.
- Reduces constructor performance cost. (public issue #4209)
-
-
-
-
- Matches the console behavior prior to command IO refactor.
-
-
-
-
- Add fuel to target.
-
-
-
-
- Remove fuel from target.
-
-
-
-
- Whether local client is currently penalized for potentially using a lag switch. Server has an equivalent check which reduces
- damage dealt, whereas the clientside check stops shooting in order to prevent abuse of inbound-only lagswitches. For example,
- if a cheater freezes enemy positions by dropping inbound traffic while still sending movement and shooting outbound traffic.
-
-
-
-
- Labels for named locations.
-
-
-
-
- Contains arena outer circle and inner target points.
-
-
-
-
- Player avatars.
-
-
-
-
- Arrow oriented with the local player.
-
-
-
-
- Convert level-space 3D position into normalized 2D position.
-
-
-
-
- Convert normalized 2D position into level-space 3D position.
-
-
-
-
- Temporary to unbind events because this class is static for now. (sigh)
-
-
-
-
- Manages render queue for transparent materials on non-stationary objects.
- Updates one material per frame.
-
-
-
-
- Callback when camera above/under water changes.
-
-
-
-
- Material to use during the Christmas event instead.
-
-
-
-
- Material to use during the Halloween event instead.
-
-
-
-
- Material to use during the April Fools event instead.
-
-
-
-
- Nelson 2024-08-19: This link has been checked with WebUtils.CanParseThirdPartyUrl, but is not the
- potentially altered link to go through Steam's link filter. This way the UI shows the original link.
-
-
-
-
- Unturned wrapper for Debug.Log, Debug.LogWarning, Debug.LogError, etc.
-
-
-
-
- Log an exception with message providing context.
-
-
-
-
- Recursively logs inner exception.
-
- Should only be called by itself and exception because notifications
- to CommandWindow would otherwise get re-sent here as errors.
-
-
-
-
- This is the ONLY place Unturned should be binding logMessageReceived.
-
- This gives us greater control over how logging is handled. In particular, Unity's
- headless builds route logs (including stack traces) through stdout which is undesirable
- for dedicated servers, so we only call Debug.Log* in the editor and development builds.
-
-
-
-
- Log an exception with message providing context.
-
-
-
-
- Get SteamID of vehicle's driver, or nil if not driven.
-
-
-
-
- Crashed into something, if applicable take self damage from collision.
-
-
-
-
- Remove all color rich formatting so that shadow text displays correctly.
-
-
-
-
- Shadow text needs the color tags removed, otherwise the shadow uses those colors.
-
-
-
-
- Wrap text with color tags.
-
-
-
-
- Wrap text with color tags.
-
-
-
-
- Wrap text with color tags.
-
-
-
-
- Replace br tags with newlines.
-
-
-
-
- Should player be allowed to write given text on a sign?
- Keep in mind that newer signs use TMP, whereas older signs use uGUI.
-
-
-
-
- Disable style, align, and space because they make server list unfair.
-
-
-
-
- 2023-01-25: fixing killing self with explosive to track kill under
- the assumption that this is only used for tracking stats. (public issue #2692)
-
-
-
-
- "Single-Render" scope as opposed to "Dual-Render" (rendering the scene a second time with a zoomed-in camera).
- Blits middle square of the player's view into the viewmodel scope material's render target.
-
-
-
-
- Finds an existing "{{Cargo/name" (if any), otherwise adds a new one.
-
-
-
-
- Adds a new "{{Cargo/name" even if one already exists.
-
-
-
-
- Helper for wiki writers to dump game data into a useful format.
-
-
-
-
- Non-item replacement for SleekJars.
- Arranges children in an equally-spaced ring around the center.
-
-
-
-
- Actual unfiltered text.
- Kept because plugins might be referencing, and game should use directly once state byte array is refactored.
-
-
-
-
- If profanity filter is enabled this filtered text is displayed on the 3D sign and in the note UI.
- Null or empty on the dedicated server.
-
-
-
-
- Legacy uGUI text on canvas.
-
-
-
-
- Legacy uGUI text on canvas.
-
-
-
-
- Splits string and compares substrings ignoring case.
- Tokens containing a colon ':' are ignored so that they can represent special filters like MasterBundleSearchFilter.
-
-
-
-
- Should the RPC be called in reliable mode? Unreliable effects might not be received.
-
-
-
-
- Applied if greater than zero. Defaults to 128.
-
-
-
-
- Extra text added to tooltip.
-
-
-
-
- Internal struct menu uses to sort items in box.
-
-
-
-
- Item definition id.
-
-
-
-
- Rarity used to sort mythical > legendary > epic > rare.
-
-
-
-
- [0, 1] calculated chance of this item being unboxed.
- Shown to player in item tooltips.
-
-
-
-
- Sorts box entries from highest to lowest rarity.
-
-
-
-
- Format qualityRarities as ##.#
- Does not use 'P' format because localized strings unfortunately already had % sign.
-
-
-
-
- Items server told us we unboxed, but we wait for the animation to finish before showing.
- Typically one, but some newer boxes have bonus items occassionally.
-
-
-
-
- Is one of the unboxed items mythical rarity?
-
-
-
-
- Items in the box.
-
-
-
-
- Skip unboxing animation.
- Initial call rotates to just before the item, next call skips entirely.
-
-
-
-
- Does client know about all the granted items?
- If not, either something is bad in the econ config (uh oh!) or client is out of date.
-
-
-
-
- Relatively efficiently find mesh components, and log an error if their mesh is missing, among other checks.
-
-
-
-
- Unity warns about renderers registered with more than one LOD group, so we do our own validation as part of
- asset loading to make it easier to find these.
-
-
-
-
- Replaced by ServerMethodHandle.
-
-
-
-
- Replaced by ClientInstanceMethod.InvokeAndLoopback or ClientStaticMethod.InvokeAndLoopback.
-
-
-
-
- Replaced by ClientMethodHandle invoked with Provider.EnumerateClients_Remote.
- Unlike ESteamCall.CLIENTS this is not loopback invoked.
-
-
-
-
- Replaced by ClientMethodHandle invoked with SteamChannel.GetOwnerTransportConnection.
-
-
-
-
- Replaced by ClientMethodHandle invoked with SteamChannel.EnumerateClients_RemoteNotOwner.
-
-
-
-
- Replaced by ClientMethodHandle invoked with Provider.EnumerateClients.
- Unlike ESteamCall.OTHERS this will be loopback invoked in singleplayer or listen server.
-
-
-
-
- May have been used by voice in early versions, but has been completely removed.
-
-
-
-
- Parses -X=Y from command-line.
- Ideally we could do "where T : TryParse" but for the meantime there are specialized subclasses.
-
-
-
-
- Maps region coord to a list of sub-road renderers in that region.
- Unlike older "region" features, coord can be outside of the old bounds.
- Not used in the editor or the dedicated server.
-
- Nelson 2025-03-28: experimenting with this to see whether it reduces time spent culling far-away road
- renderers on Rio de Janeiro Remastered. (Lots of roads on this map.)
-
-
-
-
- Max draw distance outside editor.
-
-
-
-
- Called by navmesh baking to complete pending object changes that may affect which nav objects are enabled.
-
-
-
-
- Allows Unity events to broadcast Event NPC rewards.
-
-
-
-
- Event ID to use when SendDefaultEventId is invoked.
-
-
-
-
- The event messenger can only be triggered on the authority (server).
- If true, the server will replicate the event to clients.
-
-
-
-
- Interface between the dedicated server command I/O and per-platform console.
-
-
-
-
- Called when this implementation is setup by command window.
-
-
-
-
- Called when this implementation is deleted or application quits.
-
-
-
-
- Called each Unity update.
-
-
-
-
- Broadcasts when the enter key is pressed.
-
-
-
-
- Print white message.
-
-
-
-
- Print yellow message.
-
-
-
-
- Print red message.
-
-
-
-
- July 7th!
-
-
-
-
- This is the only /required/ override of text writer.
-
-
-
-
- Can be added to certain entities to modify which crafting tags they make available to players.
- At the time of writing (2025-04-08) the compatible entities are:
- • Barricade
- • Structure
- • Vehicle
- • Resource
- • Object
-
-
-
-
- Each specified component modifies tags.
-
-
-
-
- If true then level should convert old node types to volumes.
-
-
-
-
- If true then level should convert old non-volumes types to devkit objects.
-
-
-
-
- Hash of nodes file.
- Prevents using the level editor to make noLight nodes visible.
-
-
-
-
- Code common to and .
-
-
-
-
- Nelson 2025-05-13: replacing the "workshop request log" which used transport connection hash code with this
- more recent IP address and Steam ID rate limiter.
-
-
-
-
- Manually placed from the asset browser or old editor.
-
-
-
-
- Spawned by foliage baking system.
-
-
-
-
- Brushed on with the foliage tool.
-
-
-
-
- Utilities for calling workshop functions without worrying about client/server.
- This could be nicely refactored into a client and server interface, but not enough time for that right now.
-
-
-
-
- Client/server safe version of GetQueryUGCNumKeyValueTags.
-
-
-
-
- Client/server safe version of GetQueryUGCKeyValueTag.
-
-
-
-
- Search for the value associated with a given key.
-
-
-
-
- Client/server safe version of GetQueryUGCResult.
-
-
-
-
- Is file banned?
-
-
-
-
- Originally this was only in the uGUI implementation, but plugins can create uGUI text fields
- regardless of which glazier is used.
-
-
-
-
- Stockpile item definition id with rev-share for the level creators.
- Randomly selected from associated items list.
-
-
-
-
- Other menus can modify DevkitSelectionToolOptions so we need to sync our menu when opened.
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- Remove structure instance on server and client.
-
-
-
-
- Used by ownership change and damaged event to tell relevant clients the new health.
-
-
-
-
- Legacy function for UseableStructure.
-
-
-
-
- Spawn a new structure and replicate it.
-
-
-
-
- Not an instance method because structure might not exist yet, in which case we cancel instantiation.
-
-
-
-
- Not ideal, but there was a problem because onLevelLoaded was not resetting these after disconnecting.
-
-
-
-
- Maps prefab unique id to inactive list.
-
-
-
-
- Sending yaw only costs 1 bit (flag) plus yaw bits, so compared to the old 24-bit rotation we may as well
- make it high-precision. Quaternion mode uses 1+27 bits!
-
-
-
-
- +0 = StructureDrop
- +1 = root transform
-
-
-
-
- Invoked when askUseObjectQuest succeeds.
-
-
-
-
- When a client method is called on a target object that does not exist yet this class is responsible for
- deferring the invocation until the instance does exist. For example until finished async loading.
-
-
-
-
- Called by generated methods when target object does not exist. If target object has been marked deferred
- then the method will be invoked after it exists.
-
-
-
-
- Add list of deferred invocations for key. Otherwise messages will be discarded assuming it was canceled.
-
-
-
-
- Remove pending invocations.
-
-
-
-
- Invoke all deferred calls.
-
-
-
-
- Invocations are grouped by net id block to ensure order is preserved between related objects.
-
-
-
-
- Not a member of ClientMethodInfo because it does not need to be looked up using reflection.
-
-
-
-
- Called before loading level.
-
-
-
-
- Update currency and owned items if inventory has changed and menu is open.
-
-
-
-
- Update currency or experience depending what the vendor accepts.
-
-
-
-
- Nelson 2025-06-10: new code should favor Vector2Int. We don't want to introduce further uint8 region usage.
-
-
-
-
- Get net ID only if transform is directly registered, not if transform is the child of a registered transform.
-
-
-
-
- Log every registered pairing.
-
-
-
-
- Called before loading level.
-
-
-
-
- Reverse pairing specifically for building net id + relative path name.
-
-
-
-
- Write header common to both static and instance methods, and return writer.
-
-
-
-
- Valid when opened in Begin or End mode.
-
- If the quest is ready to complete the UI is opened in End mode to allow
- the player to see what rewards they will receive after clicking continue.
- Otherwise, in Begin mode the UI is opened to allow the player to review
- the conditions before accepting or declining the request.
-
- If the player cancels the pending response is NOT chosen.
-
-
-
-
- Valid when opened in Begin or End mode.
- The player clicked pendingResponse in this dialogue to open the quest UI.
-
-
-
-
- It is useful to be able to reference transforms generically over the network, for example to attach a bullet
- hole to a tree or vehicle without tagging it as a tree or vehicle, but most entities placed in the level do not
- have unique IDs. To work around this we count downward from uint.MaxValue for level objects to avoid conflicts
- with server-assigned net ids.
-
-
-
-
- Nelson 2025-06-10: this is used by older level file formats, but with placement of trees outside legacy
- bounds now supported we use only the index in that case with GetTreeNetIdV2.
-
- Each region can have ushort.MaxValue trees, and we reserve that entire block so that a region can be slightly
- modified on the client or server without breaking all netids in the level.
-
-
-
-
- Each region can have ushort.MaxValue objects, and we reserve that entire block so that a region can be slightly
- modified on the client or server without breaking all netids in the level.
-
-
-
-
- Devkit instance IDs should already be fairly stable. There is no way any level is using more than 30 bits
- for the instance ID, so it should be safe to set those bits to prevent collisions with server net IDs.
-
-
-
-
- Struct interface so that for transient asset bundles (older workshop mods) they can be preloaded
- and retrieved as-needed, but for master bundles the asset loading can be deferred until needed.
-
-
-
-
- Legacy implementation that preloads assets.
-
-
-
-
- Save a reference to an object in the asset bundle, but defer loading it until requested by game code.
-
-
-
-
- Has a new announcement been posted by the developer?
- If so, it is given priority over the featured workshop item.
-
-
-
-
- Called after newsResponse is updated from web request.
-
-
-
-
- Read News.txt file from Cloud directory to preview on main menu.
-
-
-
-
- Helper for handlePopularItemResults.
- If player has not dismissed item at index then proceed with query and return true.
-
-
-
-
- Nelson 2024-04-23: A concerned player raised the issue that mature content could potentially be returned in
- popular item results. Steam excludes certain mature content by default, but just in case, we check for these
- words and hide if contained in title.
-
-
-
-
- Successfully queried popular workshop items.
- Tries to decide on an item that player has not dismissed.
-
-
-
-
- Response about the item we decided to display.
-
-
-
-
- Submit query for recently trending popular workshop items.
-
-
-
-
- Entry point to deciding which workshop item is featured above recent announcements.
-
-
-
-
- Ensures workshop files are not refreshed more than once per main menu load.
-
-
-
-
- Synchronize widgets with their values.
-
-
-
-
- Represents an item the vendor is buying from players.
-
-
-
-
- Zero is treated as unset.
-
-
-
-
- Has the contained been animated into visibility on-screen?
- Used to disable animating out if disabled.
-
-
-
-
- Allow Unity events to forcefully remove any barricades inside a sphere.
-
-
-
-
- Prevents static member from being initialized during MonoBehaviour construction. (Unity warning)
-
-
-
-
- Mesh Replacement Details
- .dat Flags:
- Has_1P_Character_Mesh_Override True Bool
- Character_Mesh_3P_Override_LODs # Int
- Has_Character_Material_Override True Bool
- Asset Bundle Objects:
- Character_Mesh_1P_Override_# GameObject with MeshFilter (mesh set to a skinned mesh)
- Character_Mesh_3P_Override_# GameObject with MeshFilter (mesh set to a skinned mesh)
- Character_Material_Override Material
-
-
-
-
- Replacements for the main 1st-person character mesh.
-
-
-
-
- Replacements for the main 3rd-person character mesh.
-
-
-
-
- Replacement for the main character material that typically has clothes and skin color.
-
-
-
-
- Sort servers by name A to Z.
-
-
-
-
- Sort servers by name Z to A.
-
-
-
-
- Sort servers by map name A to Z.
-
-
-
-
- Sort servers by map name Z to A.
-
-
-
-
- Sort servers by player count high to low.
-
-
-
-
- Sort servers by player count low to high.
-
-
-
-
- Sort servers by max player count high to low.
-
-
-
-
- Sort servers by max player count low to high.
-
-
-
-
- Sort servers by normalized player count high to low.
-
-
-
-
- Sort servers by normalized player count low to high.
-
-
-
-
- Sort servers by ping low to high.
-
-
-
-
- Sort servers by ping high to low.
-
-
-
-
- Information about a game server retrieved through Steam's "A2S" query system.
- Available when joining using the Steam server list API (in-game server browser)
- or querying the Server's A2S port directly (connect by IP menu), but not when
- joining by Steam ID.
-
-
-
-
- Join server by IP.
-
-
-
-
- Server is not using an anycast proxy.
-
-
-
-
- Server host indicated an anycast proxy is in use.
-
-
-
-
- Moderator flagged server as using an anycast proxy. (EHostBanFlags.QueryPingWarning)
-
-
-
-
- Ping time measured in milliseconds.
-
-
-
-
- ID of network transport implementation to use.
-
-
-
-
- Known plugin systems.
-
-
-
-
- Probably just checks whether IP is link-local, but may as well use Steam's utility function.
-
-
-
-
- Active player count divided by max player count.
-
-
-
-
- Nelson 2024-08-20: This score is intended to prioritize low ping without making it the be-all end-all. The
- old default of sorting by ping could put near-empty servers at the top of the list, and encouraged using
- anycast caching to make the server appear as low-ping as possible.
-
-
-
-
- Nelson 2024-08-20: This score is intended to prioritize servers around 75% capacity. My thought process is
- that near-empty and near-full servers are already easy to find, but typically if you want to play online you
- want a server with space for you and your friends. Unfortunately, servers with plenty of players but an even
- higher max players make a 50% score plenty good.
-
-
-
-
- Nelson 2024-08-20: This score is intended to balance out the downside of the fullness score decreasing for
- servers with very high max player counts, and over-scoring servers with low max players.
-
-
-
-
- Called before inserting to server list.
-
-
-
-
- Parses value between two keys thing would parse thing
-
-
-
-
- If set, this server was denied by a server curation list.
-
-
-
-
- Disables Unity native systems unused by Unturned.
-
-
-
-
- Enabled for effects held by guns and sentries.
-
-
-
-
- Listen for OnDestroy callback because mods may be destroying themselves in unexpected ways (e.g., Grenade
- component) and still need to be cleaned up.
-
-
-
-
- Seconds after placement before damage can be dealt.
-
-
-
-
- Seconds interval between damage dealt.
- i.e., will not cause damage if less than this amount of time passed since the last damage.
-
-
-
-
- UITK implementation consists of a container element which respects the regular position and size
- properties, and a child content element which fits itself in the container.
-
-
-
- Start Vertex
- Start Vertex + Start Tangent
- End Vertex + End Tangent
- End Vertex
-
-
- Start Vertex
- Start Vertex + Start Tangent
- End Vertex + End Tangent
- End Vertex
-
-
- Start Vertex
- Start Vertex + Start Tangent
- End Vertex + End Tangent
- End Vertex
-
-
- Start Vertex
- Start Vertex + Start Tangent
- End Vertex + End Tangent
- End Vertex
- World units length along curve.
- Spacing between points.
- Max estimate distance from uniform interval before we have to retry.
- How many times to retry if the estimate is too far off.
- If length is already known pass it in, otherwise it's recalculated.
- Time along curve. [0-1]
-
-
- Start Vertex
- Start Vertex + Start Tangent
- End Vertex + End Tangent
- End Vertex
- Spacing between points.
- Max estimate distance from uniform interval before we have to retry.
- How many times to retry if the estimate is too far off.
-
-
-
- Single percentage randomness with two outcomes.
-
-
-
-
- If true the event will only be invoked in offline mode and on the server.
-
-
-
-
- Percentage chance of event occurring.
-
-
-
-
- Invoked when random event occurs.
-
-
-
-
- Invoked when random event does NOT occur.
-
-
-
-
- Whether the pointer is currently in a spot that can be painted.
-
-
-
-
- Get brush strength multiplier where strength decreases past falloff. Use this method so that different falloffs e.g. linear, curved can be added.
-
- Percentage of .
-
-
-
- Allows pooling elements.
- If set, this is called rather than removing element from scroll view.
-
-
-
-
- Kind of hacky... Used by player list for group connections.
-
-
-
-
- Read commands from standard input, and write logs to standard output.
-
-
-
-
- Broadcast the inputCommited event.
-
-
-
-
- Synchronize console's title bar text.
- Virtual because at one point Win32 SetTitleText was required.
-
-
-
-
- Intercept the Ctrl-C or Ctrl-Break termination.
-
-
-
-
- Handle Ctrl-C or Ctrl-Break on the game thread.
-
-
-
-
- Has Ctrl-C or Ctrl-Break signal been received?
-
-
-
-
- Is the Ctrl-C or Ctrl-Break signal being handled?
-
-
-
-
- Names of achievements that can be granted by NPC rewards.
-
-
-
-
- Name of promo level to additively load.
-
-
-
-
- UTC when to begin load promo level.
-
-
-
-
- UTC when to stop loading promo level.
-
-
-
-
- Folder name of the map when it was in the game.
-
-
-
-
- Published steam id for the file after it was moved to the workshop.
-
-
-
-
- Dependencies to subscribe to when subscribing through the in-game menu.
- e.g. Hawaii's assets are stored separately on the workshop.
-
-
-
-
- Only applies if player is not subscribed to the workshop file.
- Should an advertisement be shown in the Menu > Singleplayer > Curated list?
-
-
-
-
- Published steam id to subscribe to.
-
-
-
-
- If logging in after this point, subscribe.
-
-
-
-
- If logging in before this point, subscribe.
-
-
-
-
- Maps not installed by default, but recommended from maps list.
-
-
-
-
- Maps to install to automatically.
- Used early in startup to hopefully install before reaching main menu.
-
-
-
-
- When moving between physics materials we need to continue any previous tire kickup particles until they expire.
- This class manages the individual effect per-physics-material. Each wheel can have multiple at once. When the
- particles have despawned and the effect is no longer needed, the effect game object is returned to the effect
- pool and this class is returned to .
-
-
-
-
- Name from .
-
-
-
-
- Instantiated effect. Null after returning to pool.
-
-
-
-
- Effect's transform. Null after returning to pool.
-
-
-
-
- Component on gameObject. Null after returning to pool.
-
-
-
-
- Whether this effect should be emitting particles. False stops the particle system immediately, whereas true
- only starts playing on the next frame to avoid filling a gap between positions, e.g., after a jump.
-
-
-
-
- Prevents repeated lookups if asset is null, while allowing asset to be looked up each time this effect
- becomes active so that it can be iterated on without restarting the game.
-
-
-
-
- Does this wheel affect brake torque?
-
-
-
-
- Turn on/off physics as needed. Overridden by isAlive.
-
-
-
-
- [0.0, 1.0] normalized position of wheel along suspension.
-
-
-
-
- [0.0, 1.0] normalized position animated toward replicatedSuspensionState.
-
-
-
-
- Model position interpolated toward animatedSuspensionState according to modelSuspensionSpeed.
-
-
-
-
- [0, 360] angle of rotation around wheel axle. Measured in degrees because Quaternion.AngleAxis takes degrees.
-
- We track rather than using GetWorldPose so that we can alternate between using replicated and simulated
- results without snapping transforms.
-
-
-
-
- List is created if this wheel has a collider and uses collider pose. Null when vehicle is destroyed to
- prevent creation of more effects.
-
-
-
-
- Instance corresponding to current ground material. Doesn't necessarily mean the particle system is active.
-
-
-
-
- Called after construction and on all clients and server when a player stops driving.
-
-
-
-
- Called when vehicles explodes.
-
-
-
-
- Called during FixedUpdate if vehicle is driven by the local player.
-
-
-
-
- Calculate suspension state from GetWorldPose result.
-
- Nelson 2024-03-25: Originally we used the result of GetWorldPose for the model transform and calculated
- the suspension state from it because I thought Unity was internally using the spring position that isn't
- (currently) exposed to the API. Whether or not it is, it seems fine to calculate the spring position using
- the ground hit point instead. We switched entirely away from GetWorldPose so that the wheel can retain
- its roll angle when transitioning between locally simulated and replicated.
-
-
-
-
- Called during Update on dedicated server only if replicated suspension state is enabled.
-
-
-
-
- Set replicated suspension state AND animated suspension state when vehicle is first received.
-
-
-
-
-
- Supported when locally simulated and on remote clients.
-
-
-
-
- Called during Update on client.
-
-
-
-
- Called during Update if vehicle is driven by the local player.
-
-
-
-
- Called during Update on the server while vehicle is driven by player.
-
-
-
-
- Seamlessly teleports player to an equivalent position at the destination upon contact.
-
-
-
-
- Target position and rotation.
-
-
-
-
- Only used in the Unity editor for visualization.
-
-
-
-
- If true, PopulateAsset can modify data. For example, to replace deprecated properties.
- Only true if asset re-saving and asset metadata parsing are enabled, and asset origin allows re-saving.
- Modifications are not saved if asset has any errors in order to avoid losing data.
-
-
-
-
- If true, an asset with the same ID or GUID has been added to the current asset mapping, replacing this one.
-
-
-
-
- If true, errors related to this asset were reported during loading.
-
-
-
-
- Null or empty if created at runtime, otherwise set by when loading.
-
-
-
-
- Contents of file this asset was loaded from. Only kept if data re-saving is enabled. (So that this memory
- is collected after populating the asset.)
-
-
-
-
- Master bundle this asset loaded from.
-
-
-
-
- Were this asset's shaders set to Standard and/or consolidated?
- Needed for vehicle rotors special case.
-
-
-
-
- Should texture non-power-of-two warnings be ignored?
- Unfortunately some third party assets have odd setups.
-
-
-
-
- Should read/write texture warnings be ignored?
-
-
-
-
- Hash of the original input file.
-
-
-
-
- Maybe temporary? Used when something in-game changes the asset so that it shouldn't be useable on the server anymore.
-
-
-
-
- Most asset classes end in "Asset", so in debug strings if asset is clear from context we can remove the unnecessary suffix.
-
-
-
-
- Remove "Asset" suffix and convert to title case.
-
-
-
-
- e.g. Canned Beans (Consumeable Item)
-
-
-
-
- Perform any initialization required when PopulateAsset won't be called.
-
-
-
-
- Planning ahead to potentially convert the game to use Unity's newer Addressables feature.
-
-
-
-
- 2023-04-17: suggestion is to have a hardcoded list of hate speech that gets filtered
- regardless of whether profanity filter is enabled. (https://forum.smartlydressedgames.com/t/22477)
-
-
-
-
- Special asset type that isn't (shouldn't be) returned by asset Find methods. Instead, if found when resolving
- an asset legacy ID or GUID, Find is called again with the target specified by this asset.
-
-
-
-
- Enumerate elements that are not in the pool.
-
-
-
-
- Sanity check all returned elements have a gameObject.
-
-
-
-
- Map creator can specify a constant weather mode.
-
-
-
-
- Associates a train vehicle ID with the index of a road path to spawn it on.
- The level only spawns the train if this vehicle ID isn't present in the map yet, so every train on the map has to be different.
-
-
-
-
- Should underwater bubble particles be activated?
-
-
-
-
- Should positions underground be clamped above ground?
- Underground volumes are used to whitelist valid positions.
-
-
-
-
- If true, certain objects redirect to load others in-game.
-
-
-
-
- If true, electric objects are always powered, and generators have no effect.
-
-
-
-
- Display version in the format "a.b.c.d".
-
-
-
-
- Version string packed into integer.
-
-
-
-
- Number of custom tips defined in per-level localization file.
- Tip keys are read as Tip_#
-
-
-
-
- LevelBatching is currently only enabled if map creator has verified it works properly.
-
-
-
-
- If true, map creator has verified the clutter option works as-expected.
-
-
-
-
- Absolute path to the map folder.
-
-
-
-
- Whether unity analytics should track this map's name. Don't want to burn all the analysis points!
-
-
-
-
- Maps included with the game only, separate from category because arena maps are misc.
- Category is set as part of the config file. This is only mainly used to enable unity analytics tracking for map name.
-
-
-
-
- Only used for play menu categories at the moment.
-
-
-
-
- SHA1 hash of the Level.dat file.
-
-
-
-
- Test whether this map's workshop file ID is in the curated maps list.
-
-
-
-
- Web URL to map feedback discussions.
-
-
-
-
- If true, this info is out-of-date and may have been renamed or deleted.
-
-
-
-
- Preview.png should be 320x180
-
-
-
-
- Get a random file path in the /Screenshots folder, or fallback to Level.png if it exists.
-
-
-
-
- Get a random file path in the /Screenshots folder
-
-
-
-
- When adding or removing entries remember to update NetMessages size and regenerate NetCode!
-
-
-
-
- Client requesting workshop files to download.
-
-
-
-
- Client has loaded the level.
-
-
-
-
- Client providing Steam login token.
-
-
-
-
- Client sending BattlEye payload to server.
-
-
-
-
- Client sent a ping.
-
-
-
-
- Client responded to our ping.
-
-
-
-
- Client calling an RPC.
-
-
-
-
- Client providing asset GUIDs with their file hashes to check integrity.
-
-
-
-
- Client intends to disconnect. It is fine if server does not receive this message
- because players are also removed for transport failure (e.g. timeout) and for expiry
- of Steam authentication ticket. This message is useful to know the client instigated
- the disconnection rather than an error.
-
-
-
-
- Error code that the server exited with.
- 0 is succesful, anything else is an error.
-
-
-
-
- Empty if successful,
- otherwise an explanation of the first error encountered.
-
-
-
-
- Register all built-in asset and useable types.
-
-
-
-
- Can be added to any GameObject to receive weather events for a specific custom weather asset.
-
-
-
-
- GUID of custom weather asset to listen for.
-
-
-
-
- Invoked when custom weather is activated, or immediately if weather is fading in when registered.
-
-
-
-
- Invoked when custom weather finishes fading in, or immediately if weather is already fully active when registered.
-
-
-
-
- Invoked when custom weather is deactivated and begins fading out.
-
-
-
-
- Invoked when custom weather finishes fading out and is destroyed.
-
-
-
-
- GUID parsed from WeatherAssetGuid parameter.
-
-
-
-
- Default. Create a material instance for child renderer of Toggle game object.
- Downside of this is exclusion from level batching texture atlas.
-
-
-
-
- Object does not have any toggleable emissive materials.
-
-
-
-
- Prevents calling getOrLoad redundantly if asset does not exist.
-
-
-
-
- If set, overrides model prefab in the level editor.
-
-
-
-
- Clip.prefab
-
-
-
-
- Object.prefab
-
-
-
-
- If true, object will be hidden when rendering GPS/satellite view.
- Defaults to true if is set.
-
-
-
-
- If true, Nav game object will be instantiated in singleplayer and on dedicated server. Useful for objects
- which need to affect navmesh baking without colliding with zombies during gameplay.
- Defaults to true for "medium" and "large" objects.
-
-
-
-
- If true, Nav game object will be instantiated in the level editor. Useful for objects which need collision
- with zombies during gameplay without affecting navmesh baking.
- Defaults to true for "medium" and "large" objects.
-
-
-
-
- Should landing on this object inflict fall damage?
-
-
-
-
- If true, object is not loaded when clutter is turned off in graphics menu.
-
-
-
-
- Property is not exposed at the moment because interactability properties should really be moved into some
- sort of sub-asset.
-
-
-
-
- Same as interactabilityDialogueRef, not public because it really needs to be cleaned up. :(
-
-
-
-
- Effect played when single segment is destroyed.
-
-
-
-
- Effect played when all segments are destroyed.
-
-
-
-
- Weapon must have matching blade ID to damage object.
- Both weapons and objects default to zero so they can be damaged by default.
-
-
-
-
- [0, 1] probability of dropping any rewards.
-
-
-
-
- If true, zombies can attack this object if it's blocking them. Defaults to false.
-
-
-
-
- Multiplier for damage from zombies if RubbleCanZombiesDamage is true.
-
-
-
-
- Controls how rubble affects Nav game object.
-
-
-
-
- If set (>0), alerts nearby entities when an individual section is destroyed.
-
-
-
-
- If set (>0), alerts nearby entities when all sections are destroyed.
-
-
-
-
- Should colliders in the Triggers GameObject with "Kill" name kill players?
- If Triggers GameObject is not set, searches Object instead.
-
-
-
-
- Should this object only be visible if gore is enabled?
- Allows pre-placed blood splatters to be hidden for younger players.
-
-
-
-
- Only activated during this holiday.
-
-
-
-
- Object to use during the Christmas event instead.
-
-
-
-
- Object to use during the Halloween event instead.
-
-
-
-
- Get asset ref to replace this one for holiday, or null if it should not be redirected.
-
-
-
-
- If any conditions use flags they will be added to a set,
- otherwise null is returned.
-
-
-
-
- Recursively change all children including root from oldTag to newTag.
- Aborts if a child doesn't match the old tag because it might be something we shouldn't change the tag of.
- True if tags were all successfully changed.
-
-
-
-
- Recursively change all children including root from oldLayer to newLayer.
- Aborts if a child doesn't match the old layer because it might be something we shouldn't change the layer of.
- True if layers were all successfully changed.
-
-
-
-
- Called if we have a valid Nav GameObject.
- Recast requires any meshes used on the Nav objects to be CPU readable, so we log errors here if they're not marked as such.
-
-
-
-
- Should zombie(s) of the required type be spawned when player enters the area?
-
-
-
-
- How many to spawn if spawning is enabled.
-
-
-
-
- If greater than zero, find this zombie type configured in the level editor. For example, if the level editor
- lists "0 Fire (4)", then 4 is the unique ID, and if assigned to this condition a zombie from the "Fire"
- table will spawn.
-
-
-
-
- Navmesh index player must be within. If set to byte.MaxValue then anywhere on the map is eligible.
-
-
-
-
- Only kills within this radius around the player are tracked.
-
-
-
-
- Only kills outside this radius around the player are tracked.
- NSTM requested this for a sniping zombies quest.
-
-
-
-
- If spawning is enabled, whether to use the timer between spawns.
-
-
-
-
- Shows inspect buttons for each item mentioned in purchasable box or bundle's description text.
-
-
-
-
- Manages global post-process volumes.
-
-
-
-
- Callback when in-game graphic settings change.
-
-
-
-
- Callback when player changes perspective.
-
-
-
-
- Unfortunately EditorPrefs cannot be used in constructor.
-
-
-
-
- Represents whether a player can craft a provided blueprint. If yes, which items to use, if no, why not.
- Previously, some of this data was (confusingly) stored in the blueprint definition.
- For performance, caller should re-use a list of BlueprintStatus and *not* discard unused results.
-
-
-
-
- Total number of missing required nearby crafting tags.
-
-
-
-
- Total required input item count minus available input item count.
-
-
-
-
- Currently only used by housing planner.
- Doesn't work with NPC conditions / rewards.
-
-
-
-
- Currently only used by housing planner.
- Doesn't work with NPC conditions / rewards.
-
-
-
-
- Used to sort blueprints from "most craftable" (1) to "least craftable" (0).
-
-
-
-
- Reset values set by PlayerCrafting.UpdateBlueprintDynamicStatus.
-
-
-
-
- If not zero, use this amount instead of .
- Used by as amount of ammo needed.
-
-
-
-
- If true, cancel updating status as soon as anything goes wrong.
- False for client UI where all info about blueprint is needed for display.
- True on server where extra processing is a waste.
-
-
-
-
- If set, log errors here.
-
-
-
-
- Is current UTC time within this time span, and player has not dismissed?
-
-
-
-
- Has the current time span been dismissed?
- For example, player may have dismissed a previous event but not this current one.
-
-
-
-
- Is current UTC time within this time span?
-
-
-
-
- Allows file name to be included in kick message that client would otherwise not know.
-
-
-
-
- Actual max value is plus one because message never contains zero items.
-
-
-
-
- Has player dismissed the given workshop item?
-
-
-
-
- Track that the player has dismissed the given workshop item.
-
-
-
-
- Has player already auto-subscribed to the given workshop item?
-
-
-
-
- Track that the player has auto-subscribed to the given workshop item.
-
-
-
-
- Find colliders in gameObject and encapsulate their bounding boxes together.
-
- True if bounds were determined, false otherwise.
-
-
-
- Find colliders in gameObject and the point closest to position, otherwise use gameObject position.
-
- Collider is only included if its layer is enabled in layer mask.
-
-
-
- Does sphere overlap anything?
-
-
-
-
- Allows foreach loop to iterate renderers defined in lod group.
-
-
-
-
- Counts hits per-IPv4 address (if available) and per-SteamID (if available).
- Connection is blocked if more than "threshold" hits occur within category (IPv4/SteamID).
- Hit count resets when "window" seconds have passed since last hit.
-
-
-
-
- If hit is within this many seconds of previous hit, it counts. Otherwise, counter is reset.
-
-
-
-
- If more than this many hits occur the limit is reached.
-
-
-
-
- Hack, we put this string on a newline for box probabilities.
-
-
-
-
- Called on the client after a new message is inserted to the front of the list.
-
-
-
-
- Called on the server when preparing a message to be sent to a player.
- Allows controlling how %SPEAKER% is formatted for the receiving player.
-
-
-
-
- Called on the server when formatting a player's message before sending to anyone.
- Allows structuring the message and where the player's name is, for example: '[CustomPluginRoleThing] %SPEAKER% - OriginalMessageText'
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- Add a newly received chat message to the front of the list,
- and remove an old message if necessary.
-
-
-
-
- Previous messages sent to server from this client.
- Newest at the front, oldest at the back. Used to repeat chat commands.
-
-
-
-
- Send a request to chat from the client to the server.
-
-
-
-
- Allows Unity events to send text chat messages from the client, for example to execute commands.
- Messenger context is logged to help track down abusive assets.
-
-
-
-
- Allows Unity events to broadcast text chat messages from the server.
- Messenger context is logged to help track down abusive assets.
-
-
-
-
- Server send message to specific player.
- Used in vanilla for the welcome message.
- Should not be removed because plugins may depend on it.
-
-
-
-
- Server send message to specific player.
- Used in vanilla by help command to tell player about command options.
- Should not be removed because plugins may depend on it.
-
-
-
-
- Server send message to all players.
- Used in vanilla by some alerts and broadcast command.
- Should not be removed because plugins may depend on it.
-
-
-
-
- Serverside send a chat message to all players, or a specific player.
-
- Contents to display.
- Default text color unless rich formatting overrides it.
- Player who sent the message (used for avatar), or null if send by a plugin.
- Send message to only this player, or all players if null.
- Mostly deprecated, but global/local/group may be displayed.
- URL to a 32x32 .png to show rather than a player avatar, or null/empty.
- Enable rich tags e.g., bold, italics in the message contents.
-
-
-
- Nelson 2024-10-14: We might want to elaborate on this with "client-side chat commands" in the future, but
- for the meantime I've hacked in this one command.
-
-
-
-
- If set, find a child meshrenderer with this name and change its material to the character hair material.
-
-
-
-
- If non-zero, legacy ID of final Asset to return.
-
-
-
-
- If non-zero, legacy ID of SpawnAsset to resolve.
-
-
-
-
- If both legacy IDs are zero this GUID will be used. If the target asset is
- a SpawnAsset it will be further resolved, otherwise the found asset is returned.
-
-
-
-
- Can be enabled by spawn tables that insert themselves into other spawn tables using the roots list.
- If true, zeros the weight of child tables in the parent spawn table.
-
-
-
-
- Has this spawn been added as a root of its child spawn table?
- Used for debugging spawn hierarchy in editor.
-
-
-
-
- Helper method for plugins because IDs are internal.
-
-
-
-
- Parent spawn assets this would like to be inserted into.
-
-
-
-
- Zero weights of child spawn tables.
- Called when inserting a root marked isOverride.
-
-
-
-
- Do tables need to be sorted and normalized?
-
-
-
-
- Sort children by weight ascending, and calculate their normalized chance as a percentage of total weight.
-
-
-
-
- Remove from roots, and if reference is valid remove us from their children.
-
-
-
-
- Remove from tables, and if referencing a child table remove us from their roots.
-
-
-
-
- Spawns an animal into the world.
-
- The ID of the animal.
- Position to spawn the animal.
- Angle to spawn the animal.
- Whether the animal is dead or not.
-
-
-
- Gets the animal at a specific index.
-
- The index of the animal.
-
-
-
-
- Find replacement spawnpoint for an animal and teleport it there.
-
-
-
-
- Used in arena mode to reset all animals to dead.
-
-
-
-
- Stripped-down version of structure prefab for previewing where the structure will be spawned.
-
-
-
-
- Whether preview object is currently highlighted positively.
-
-
-
-
- Time when "Use" animation clip started playing in seconds.
-
-
-
-
- Length of "Use" animation clip in seconds.
-
-
-
-
- True when animation starts playing, false after placement sound is played.
-
-
-
-
- Whether the "Use" animation clip started playing.
-
-
-
-
- If running as server, whether ReceiveBuildStructure has been called yet.
-
-
-
-
- Whether basic range and claim checks passed.
-
-
-
-
- Position the item should be spawned at.
-
-
-
-
- Rotation the item should be spawned at.
-
-
-
-
- Interpolated toward customRotationOffset.
-
-
-
-
- Allows players to flip walls.
-
-
-
-
- Vertical offset using scroll wheel.
-
-
-
-
- Whether enough time has passed for "Use" animation to finish.
-
-
-
-
- Whether animation has reached the time when placement sound should play.
-
-
-
-
- Used to aid backwards compatibility as much as possible when transitioning Unity versions breaks asset bundles.
-
-
-
-
- Unity 5.5 and earlier per-asset .unity3d file.
-
-
-
-
- When "master bundles" were first introduced in order to convert older Unity 5.5 asset bundles in bulk.
-
-
-
-
- Unity 2018 needed a new version number in order to convert materials from 2017 LTS asset bundles. 2019 did not need a
- new version number, but in retrospect it seems unfortunate that we cannot distinguish them, so 2020 does have its own.
-
-
-
-
- 2021 LTS+
-
-
-
-
- The first time asset loading finishes it will load the main menu.
-
-
-
-
- If true, either loading during initial startup or full refresh.
-
-
-
-
- If true, currently searching locations added after initial startup loading.
-
-
-
-
- Has initial client UGC loading step run yet?
- Used to defer asset loading for workshop installs that occured during startup.
-
-
-
-
- Has initial map loading step run yet?
- Used to defer map loading for workshop installs that occured during startup.
-
-
-
-
- Calling this "legacy" is a bit of a stretch because even most of the vanilla assets are
- built around the 16-bit IDs. Ideally no new code should be relying on 16-bit IDs however.
-
-
-
-
- Incremented when assets are added or removed.
- Used by boombox UI to only refresh songs list if assets have changed.
-
-
-
-
- In singleplayer and the level editor this is the same as defaultAssetMapping,
- but when playing on a server a subset of assets based on the server's workshop files is used.
-
-
-
-
- Should folders be scanned for and load .dat and asset bundle files?
- Plugin developers find it useful to quickly launch the server.
-
-
-
-
- Do we want to enable shouldDeferLoadingAssets?
-
-
-
-
- Should extra validation be performed on assets as they load?
- Useful for developing, but it does slow down loading.
-
-
-
-
- Should asset file metadata such as line numbers and comments be parsed?
- Useful for development (e.g., error messages), but may slow down loading and increases RAM usage.
-
-
-
-
- Should asset files be re-saved after all loading is finished?
- Requires asset metadata. Useful for automatically upgrading .dat/.asset files.
-
-
-
-
- Should some specific asset types which opt-in be allowed to defer loading from asset bundles until used?
- Disabled by asset validation because all assets need to be loaded.
-
-
-
-
- Should workshop asset names and IDs be logged while loading?
- Useful when debugging unknown workshop content.
-
-
-
-
- Should a JSON report of all the game's assets be exported?
-
-
-
-
- Should GC and clear unused assets be called after every loading frame?
- Potentially useful for players running out of RAM, refer to:
- https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/1352#issuecomment-751138105
-
-
-
-
- Should modded spawn tables being inserted into parents be logged?
- Useful for debugging workshop spawn table problems.
-
-
-
-
- Loaded master bundles.
-
-
-
-
- Loading master bundles.
-
-
-
-
- Master bundle from root /Bundles directory containing vanilla assets.
-
-
-
-
- While an asset is being loaded, this is the master bundle for that asset.
- Used by master bundle pointer as a default.
-
-
-
-
- This method supports .
-
-
-
-
- Find an asset by GUID reference.
- This method supports .
-
- Asset with matching GUID if it exists, null otherwise.
-
-
-
- Find an asset by GUID reference.
- This method supports .
- Maybe considered a hack? Ignores the current per-server asset mapping.
-
- Asset with matching GUID if it exists, null otherwise.
-
-
-
- Find an asset by GUID reference.
- This method supports .
- Maybe considered a hack? Ignores the current per-server asset mapping.
-
- Asset with matching GUID if it exists, null otherwise.
-
-
-
- Load content from an assetbundle.
-
-
-
-
- Find an asset by GUID reference.
- This method supports .
-
- Asset with matching GUID if it exists, null otherwise.
-
-
-
- Find an asset by GUID reference.
- This method supports .
-
- Asset with matching GUID if it exists, null otherwise.
-
-
-
- This method supports .
-
-
-
-
- This method supports .
-
-
-
-
- This method supports .
- Note: this method doesn't handle redirects by VehicleRedirectorAsset.
-
-
-
-
- This method supports .
- Note: this method doesn't handle redirects by VehicleRedirectorAsset.
-
-
-
-
- This method supports .
-
-
-
-
- This method supports .
-
-
-
-
- Useful if GUID can reference a different asset type than legacy ID. For example, gun magazine GUID can
- reference a SpawnAsset while its legacy ID cannot.
- This method supports .
-
-
-
-
- Append assets that extend from result type.
-
-
-
-
- Maybe considered a hack? Ignores the current per-server asset mapping.
- Append assets that extend from result type.
-
-
-
-
- While playing on server the client will use the same dictionary/list of assets the server uses in order
- to reduce issues with ID conflicts.
-
- 2023-05-27: server now ALSO uses the same logic to ensure IDs are applied in consistent order regardless
- of multi-threaded loading order.
-
-
-
-
- Search all loaded master bundles for one in path's hierarchy.
-
-
-
-
- Find loaded master bundle by name.
-
-
-
-
- Unload all asset bundles from memory, and empty known list.
- Called when reloading assets.
-
-
-
-
- Catches exceptions thrown by LoadFile to avoid breaking loading.
-
-
-
-
- Called when a new workshop item is installed either on client or server.
-
-
-
-
- Reload assets in given folder.
-
-
-
-
- Do we have any new spawn assets that have not been linked yet?
- Used to skip linking spawns if not required when downloading assets.
-
-
-
-
- Can now be safely called multiple times on client in order to handle spawns for downloaded maps.
- Spawn tables have "roots" which allow mods to insert custom spawns into the vanilla spawn tables.
- This method is used after workshop assets are loaded on client, or after the dedicated server is done downloading workshop content.
-
-
-
-
- Look through all item blueprints and log errors if there are duplicates.
-
-
-
-
- Look through all dialogue and check that their referenced
- dialogueID or vendorID is an actual loaded asset.
-
-
-
-
- Manually run asset unload and garbage collection in the hope
- that it will minimize RAM allocated during loading.
-
-
-
-
- Helper for Assets.init.
- Load all non-map assets from:
- /Bundles/Workshop/Content
- /Servers/ServerID/Workshop/Content
- /Servers/ServerID/Bundles
-
-
-
-
- Helper for Assets.init.
- Load all non-map assets from subscribed UGC.
-
-
-
-
- Helper for modders creating workshop content.
- Loads folders in the "Sandbox" directory the same way workshop files are loaded.
-
-
-
-
- Helper for Assets.init.
- Load all assets in each map's Bundles folder, and content in map's Content folder.
-
-
-
-
- Not the tidiest place for this, but it allows startup to pause and show error message.
- Occasionally there have been reports of the steamclient redist files being out of date on the dedicated
- server causing problems. For example: https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/2866#issuecomment-965945985
-
-
-
-
- Note: inventory service does not support exchanging multiple items simultaneously.
-
-
-
-
- Optional parameter for error logging and responding to the invoker.
-
-
-
-
- Wraps audio source to prevent caller from meddling with it, and to allow the implementation
- to change in the future if necessary.
-
-
-
-
- 2D audio.
-
-
-
-
- Optional parent transform to attach the audio source to.
-
-
-
-
- 0 = 2D, 1 = 3D
-
-
-
-
- Associates an ID with the instance of the sound being played. This ensures that if Stop() is called
- on an old handle it will not stop playing the audio if the component has already been recycled.
-
-
-
-
- True while inactive, false while playing.
-
-
-
-
- Timer needs playId as well in case source has been recycled by the time duration expires.
-
-
-
-
- Not extendable until transport API is better finalized.
-
-
-
-
- How many seconds message should popup.
-
-
-
-
- Which item ID we thought was there. If the item ID currently at the coordinates doesn't match we clear this hotkey.
-
-
-
-
- Start/Stop input is encoded as 2 bits, 1 bit for Start flag and 1 bit for Stop flag.
-
- Prior to 2023-03-16 it was a single bit. The server would Start if true and the previous frame was false,
- and vice versa call Stop if false and the previous frame was true. The problem with that approach was when
- the client FPS is higher than the simulation FPS a series of repeated attack presses would be treated as a
- continuous held attack input. Semi-auto guns were difficult to shoot at their max rate of fire. Sending both
- allows the server to theoretically call Start every simulation frame as opposed to only half.
-
- First approach was to OR Start if held, otherwise OR Stop. This doesn't work because for example when Aim is
- pressed the Stop flag will already be enabled, so the gun Starts aiming, Stops aiming, Starts aiming, and then
- stays aiming rather than just Start and stay aiming. Instead we only want Stop to be sent once.
-
-
-
-
- Wants to "start" primary or secondary input. (e.g., Useable.startPrimary)
-
-
-
-
- Wants to "stop" primary or secondary input. (e.g., Useable.stopPrimary)
-
-
-
-
- Invoked from tellEquip after change.
-
-
-
-
- Skin applied to the currently equipped useable.
-
-
-
-
- Does equipped useable have a menu open?
- If so pause menu, dashboard, and other menus cannot be opened.
-
-
-
-
- For aiming toggle input.
-
-
-
-
- Get ragdoll effect to use when the current weapon deals damage.
-
-
-
-
- It should be safe to call this immediately because hotkeys are loaded in InitializePlayer.
-
-
-
-
- Prevent multiple hotkeys from referencing the same item.
-
-
-
-
- Left-handed characters need the stat tracker to be flipped on the X axis so that the text reads properly.
- ItemTool doesn't know about left/right handedness, so for the moment that's handled here because only players need this fixed up.
-
-
-
-
- Match stat tracker gameobject's isActive to whether skins are visible.
-
-
-
-
- Match all stat tracker visibilities to whether skins are visible.
-
-
-
-
- Called clientside to ask server to equip an item in the inventory.
-
-
-
-
- Hacked-in to bypass regular clientside checks when client would predict the item at given coords.
-
-
-
-
- Remove the item from inventory so that if we die before the item isn't dropped
-
-
-
-
- Finish dequipping from
-
-
-
-
- Invoked before dealing damage regardless of whether the punch impacted anything.
-
-
-
-
- (Temporarily?) separated out from simulate to try and get a better exception call stack.
-
-
-
-
- (Temporarily?) separated out from simulate to try and get a better exception call stack.
-
-
-
-
- (Temporarily?) separated out from simulate to try and get a better exception call stack.
-
-
-
-
- Allow UI to process input [0, 9] key press when cursor is visible.
-
-
-
-
- Process input [0, 9] key press.
-
-
-
-
- If equipped item is bound to a hotkey, return the button [0, 9] associated.
- Otherwise, return -1.
-
-
-
-
- Called by input when preparing for simulation frame.
-
-
-
-
- Called once by Setup.
-
-
-
-
- Extension method for Thread class.
- Plugins use this.
- I might have accidentally removed it due to zero refs and Pustalorc was mad:
- https://github.com/SmartlyDressedGames/Unturned-3.x-Community/discussions/4131
-
-
-
-
- Throw an exception if current thread is not the game thread.
-
-
-
-
- Only on dedicated server: throw an exception if current thread is not the game thread.
-
-
-
-
- Search loaded assets for blueprints that output a single structure item and are
- available on the current map.
-
-
-
-
- Update status of all relevant blueprints.
-
-
-
-
- Currently saved craftableBlueprint for asset may have become uncraftable,
- in which case we try finding a craftable replacement.
-
-
-
-
- Get a blank status from the pool or construct a new one.
-
-
-
-
- Search inventory for housing items, count the quantity of each, and remove
- duplicate entries from the list because it is used for the UI.
-
-
-
-
- Stripped-down version of structure prefab for previewing where the structure will be spawned.
-
-
-
-
- Whether preview object is currently highlighted positively.
-
-
-
-
- Position the item should be spawned at.
-
-
-
-
- Rotation the item should be spawned at.
-
-
-
-
- Interpolated toward customRotationOffset.
-
-
-
-
- Allows players to flip walls.
-
-
-
-
- Vertical offset using scroll wheel.
-
-
-
-
- Box in the HUD with selected item name and quantity.
-
-
-
-
- Blueprints which create a structure item.
-
-
-
-
- One craftable blueprint per potential structure item.
-
-
-
-
- Recycled blueprint statuses.
-
-
-
-
- Steam currency codes seem to be ISO 4217, however the documentation (as of 2021-01-29) does not say so.
-
-
-
-
- If overlay is disabled there is no point showing the in-game item store because the player will not be able
- to checkout. We request listings regardless in order to show the "sale" label automatically.
-
-
-
-
- Windows-specific extensions of Windows console input.
- Uses the Win32 API to force a console to be created and destroyed.
-
-
-
-
- Directory the game files are installed in. For the editor this is the /Builds/Shared directory.
- Windows and Linux: contains the executable and the Unturned_Data directory.
- MacOS: contains the Unturned.app bundle.
-
-
-
-
- Handles VehicleRedirectorAsset (if any) and returns actual vehicle asset (if any).
-
-
-
-
- Handles VehicleRedirectorAsset returning load paint color override (if any) and returns actual vehicle asset (if any).
-
-
-
-
- Handles VehicleRedirectorAsset returning spawn paint color override (if any) and returns actual vehicle asset (if any).
-
-
-
-
- Handles VehicleRedirectorAsset (if any) and returns actual vehicle asset (if any).
-
-
-
-
- Handles VehicleRedirectorAsset returning load paint color override (if any) and returns actual vehicle asset (if any).
-
-
-
-
- Handles VehicleRedirectorAsset returning spawn paint color override (if any) and returns actual vehicle asset (if any).
-
-
-
-
- Handles VehicleRedirectorAsset (if any) and returns actual vehicle asset (if any).
-
-
-
-
- Handles VehicleRedirectorAsset returning load paint color override (if any) and returns actual vehicle asset (if any).
-
-
-
-
- Handles VehicleRedirectorAsset returning spawn paint color override (if any) and returns actual vehicle asset (if any).
-
-
-
-
- Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
-
-
-
-
- Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
-
- true if matching vehicle asset was found. (Not necessarily whether vehicle was spawned.)
-
-
-
- Tools like carjacks and tires can be used in safezone by admins for maintenance.
-
-
-
-
- Create glazier implementation. Invoked early during startup.
-
-
-
-
- Multiplier for the maximum distance the gunshot can be heard.
-
-
-
- true if key existed and was removed.
-
-
- true if key existed and was removed.
-
-
-
- Unturned equivalent of unity's PlayerPrefs.
- Convenient for saving one-off key-value pairs.
-
-
-
-
- String table specifically for Unity physics material names.
- Implemented so that tires can more efficiently replicate which ground material they are touching.
-
-
-
-
- Get an ID that can be used to reference a physics material name over the network. If given material name
- isn't supported (e.g., not registered in a PhysicsMaterialAsset or over max material limit) returns
- instead.
-
-
-
-
- Get name of a physics material from network ID. Returns null if ID is null, e.g., if the sent name wasn't
- registered or was over the max material limit.
-
-
-
-
- Called when resetting network state.
-
-
-
-
- Called on server and singleplayer before loading level.
-
-
-
-
- Number of bits needed to replicate PhysicsMaterialNetId.
-
-
-
-
- Implemented by components to support taking damage from explosions.
- Not intended for external use (yet?) and may need to change.
-
-
-
-
- Used to exclude dead entities from further evaluation.
-
-
-
-
- Used to sort damage from nearest to furthest.
-
-
-
-
- Intended for internal use only.
-
-
-
-
- Data that we pool to reduce allocations, but needs to be separate per-invocation of explosion in case it's
- invoked recursively. (for example, by blowing up a vehicle)
-
-
-
-
- Replacement for playerDamaged.
-
-
-
-
- Replacement for zombieDamaged.
-
-
-
-
- Replacement for animalDamaged.
-
-
-
-
- Refer to ExplosionPoolData for pooling explanation.
-
-
-
-
- Was necessary when structures were children of level transform.
-
-
-
-
- Was necessary when trees were children of ground transform.
-
-
-
-
- Somewhat hacked-together to find owner of a vehicle, barricade, or structure descendant.
-
-
-
-
- Get average explosionArmor of player's equipped clothing.
-
-
-
-
- Refer to getPlayerExplosionArmor for explanation of total/average.
-
-
-
-
- Do damage to a zombie.
-
-
-
-
- Legacy function replaced by damageZombie.
-
-
-
-
- Legacy function replaced by damageZombie.
-
-
-
-
- Do damage to an animal.
-
-
-
-
- Legacy function replaced by damageAnimal.
-
-
-
-
- Legacy function replaced by damageAnimal.
-
-
-
-
- This unwieldy mess is the original explode function, but should be maintained for backwards compatibility with plugins.
-
-
-
-
- Used if explosion won't damage anything.
-
-
-
-
- Do radial damage.
-
-
-
-
- Server spawn impact effect for all players within range.
-
-
-
-
- Server spawn impact effect for all players within range. Optional "spectator" receives effect regardless of distance.
-
-
-
-
- Server spawn effect by ID for all players within range. Optional "spectator" receives effect regardless of distance.
-
-
-
-
- Server spawn effect for all players within range and instigator receives effect regardless of distance.
-
-
-
-
- parent should only be set if that system also calls ClearAttachments, otherwise attachedEffects will leak memory.
-
-
-
-
- Nelson 2025-03-10: This aims to avoid messing with Magazine transform IsActive unless skin already did.
-
-
-
-
- Nelson 2024-11-15: By default, attachments use their corresponding "hook" transform. For example, magazines
- use the "Magazine" transform as their parent. If a child of the hook transform matches a caliber in the
- attachment's caliber list that is used instead.
-
-
-
-
- Should the buying and selling lists be alphabetically sorted?
-
-
-
-
- This prevents identical tag provider setups from listing in the UI.
- For example, two workbenches providing the same tags shouldn't show two UI listings.
-
-
-
-
- Player does not want to see this blueprint.
-
-
-
-
- Player wants to save this blueprint in a special category.
-
-
-
-
- Find nearby crafting tag providers and query their tags.
-
-
-
-
- Tests whether nearby tags include specified tag.
- Doesn't update nearby tags, so call UpdateAvailableCraftingTags if out-of-date.
-
-
-
-
- Requested for plugin use.
- Notifies owner they should refresh the crafting menu.
-
-
-
-
- Update anything that will not change as blueprint is invoked repeatedly on server.
-
-
-
-
- Update anything that can change as blueprint is invoked repeatedly on server.
-
-
-
-
- Returns true if should exit early.
- If updating behavior here please remember to update .
-
-
-
-
- Find all item assets available to the player for crafting.
- Used to more quickly identify blueprints that might be craftable, rather than testing all blueprints.
- If updating behavior here please remember to update .
-
-
-
-
- Allows housing planner to craft without playing effect, without also allowing
- cheaters to craft without playing effect. (if it were an RPC param)
-
-
-
-
- Get local player's per-blueprint preferences.
-
-
-
-
- Set local player's per-blueprint preferences.
- This is helpful both to prevent accidentally crafting certain blueprints (like blindfolds) when click to
- craft is enabled, and to save frequently used blueprints.
-
-
-
-
- Why isn't tags list public visibility? Because if adding features to (for example) consume a resource when
- crafting tag provider is used that will require an API change.
-
-
-
-
- Extensions to the built-in Screen class.
- We have run into multiple problems with the Screen.resolutions property over the years, so this class aims to
- protect against bad data.
-
-
-
-
- Work-in-progress plan to allow modders to create custom physics effects.
-
-
-
-
- Can crops be planted on a given material?
-
-
-
-
- Can oil drills be placed on a given material?
-
-
-
-
- Original width field is misleadingly named. It represents half the width of the flat section of the road.
-
-
-
-
- Original depth field is misleadingly named. It represents half the "up" size of the road.
-
-
-
-
- Distance along the terrain surface normal to move each road vertex.
-
-
-
-
- New code should not use this. Only intended for backwards compatibility.
-
-
-
-
- Ideally the interactable components should have a reference to their barricade, but that will maybe happen
- after the NetId rewrites. For the meantime this is to avoid calling FindBarricadeByRootTransform. If we go
- the component route then FindBarricadeByRootTransform will do the same as this method.
-
-
-
- -1 if table was not found.
-
-
-
- By default, clickable only responds to LeftMouse without the Control modifier.
- Unturned (currently) filters left/right mouse and modifiers outside Glazier,
- so add activators for left/right and control modifier to all clickables.
-
-
-
-
- USS best practices mentions inline styles have a higher memory overhead, so we
- only apply an inline value if it doesn't match the default :root font style.
-
-
-
-
- USS best practices mentions inline styles have a higher memory overhead, so we
- only apply an inline value if it doesn't match the default :root text alignment.
-
-
-
-
- Ehh kind of a stretch to mark this obsolete or for backwards compatibility. Introducing it for road assets
- which specify the PhysicMaterial to assign to the colliders. Specifying an asset path is available, but
- for the common case we will use the built-in vanilla resources.
-
-
-
-
- Get legacy enum corresponding to Unity physics material object name.
- Moved from obsolete checkMaterial method.
-
-
-
-
- If collider and its physics material are not null, get the physics material's name. Null otherwise.
-
- Nelson 2025-04-22: this method may seem silly on first glance. However, I tracked down some every-frame
- memory allocation to getting the PhysicMaterial.name property. This method caches the instance ID to
- name lookup in a dictionary to avoid that. Note: we don't worry about clearing the dictionary because
- there aren't very many physics materials.
-
-
-
-
- Base class for uGUI implementations of primitive building block widgets.
-
-
-
-
- Called after constructor when not populating from component pool.
-
-
-
-
- Called after constructor when re-using components from pool.
-
-
-
-
- Synchronize uGUI component colors with background/text/image etc. colors.
- Called when custom UI colors are changed, and after constructor.
-
-
-
-
- Synchronize uGUI component sprites with theme sprites.
- Called when custom UI theme is changed, and after constructor.
-
-
-
- False if element couldn't be released into pool and should be destroyed.
-
-
-
- Unity recommends enabling components after parenting into the destination hierarchy.
-
-
-
-
- RectTransform children should be attached to. Overridden by ScrollView content panel.
-
-
-
-
- This helper property's purpose is to:
- - Ensure other properties don't accidentally remove LayoutElement if others need it.
- - Ensure LayoutElement is destroyed before returning to pool.
-
-
-
-
- Parameters for connecting to a game server.
-
- Admittedly there are other parameters to the Connect method,
- but those are for detecting advertisement discrepencies and can be null.
-
-
-
-
- Server's public IP address of a Steam "Fake IP" address.
-
-
-
-
- Port for Steam's "A2S" query system. This the port we refer to when
- sharing a server's address (e.g., 127.0.0.1:queryport).
-
-
-
-
- Port for game traffic. i.e., Steam manages the query port socket while
- we manage the connection port socket. The game assumes it's the query
- port plus one. NOTE HOWEVER after the introduction of "Fake IP" support
- (2023-12-07) the connection port is the same as the query port for fake
- IPs. In keeping with the spirit of fake values to simplify existing code,
- we act as if the connection port is plus one except in the appropriate
- ClientTransport code when the fake IP is detected.
-
-
-
-
- Referred to as "Server Code" in menus.
- Used if address is zero.
-
-
-
-
- If -1, this region is finished activating/deactivating.
- Otherwise, incremented once per frame until per-region count is reached.
-
- Per-region data is removed when isInsideMask is false and progressIndex is -1.
-
-
-
-
- If true, this region is within MaxDistance of current CameraCoord.
-
-
-
-
- Tracks activation and deactivation of Regions as camera moves around the level.
-
-
-
-
- Mark all cells as finished loading and remove cells outside the camera view.
- Used after teleporting or loading.
-
-
-
-
- Caller passes an empty dictionary to be filled with update info.
- Increments progressIndex for each returned region.
- If region is finished updating, call NotifyRegionFinishedUpdating.
-
-
-
-
- Called when progressIndex has reached end of given region.
-
-
-
-
- Fill output set with mask offsets applied to current camera coordinate.
-
-
-
-
- Find changes between old and current coordinate sets to mark regions in/out of mask.
-
-
-
-
- Reset region's progress counter and change inside/outside status.
-
-
-
-
- Allows Unity events to spawn effects.
-
-
-
-
- GUID of effect asset to spawn when SpawnDefaultEffect is invoked.
-
-
-
-
- If true the server will spawn the effect and replicate it to clients,
- otherwise clients will predict their own local copy.
-
-
-
-
- Should the RPC be called in reliable mode? Unreliable effects might not be received.
-
-
-
-
- Transform to spawn the effect at.
- If unset this game object's transform will be used instead.
-
-
-
-
- Applied if greater than zero. Defaults to 128.
-
-
-
-
- Marker for counting number of tips.
-
-
-
-
- Camera used while transitioning between scenes to prevent the "no cameras rendering" warning.
-
-
-
-
- Shown when game connection ping is significantly higher than server browser ping. At the time of writing
- (2025-01-17) this is likely because the server is using an "anycast proxy" in front of Steam A2S cache.
-
-
-
-
- Set to Time.frameCount + 1 while loading.
- In the past used realtime, but that was unreliable if an individual frame took too long.
-
-
-
-
- Select a loading image while on the startup screen or a level without any images.
-
-
-
-
- Convert world-space point into region coordinates that may be out of bounds.
-
-
-
-
- Convert world-space position into a region coordinate that may be out-of-bounds.
-
-
-
-
- Returns true if coord is within legacy range.
-
-
-
-
- Clamp position into the maximum bounds expected by the game, not necessarily the level bounds.
-
- True if position was modified.
-
-
-
- Kick players maybe trying to impersonate me. I guess nobody else named Nelson is allowed in the game!
- 2023-09-19: relaxed this a bit by trimming names and using Equals/Starts/Ends rather than Contains
- because there was a player with Nelson in their username.
-
-
-
-
- GUID of the asset this is referring to.
-
-
-
-
- Whether the type has been asigned. Note that this doesn't mean an asset with exists.
-
-
-
-
- True if resovling this type reference would get that type.
-
-
-
-
- Maximum count of naturally spawned boss zombies. Unlimited if negative.
- Game will not spawn/respawn boss zombie types passing this limit, but quest spawns can bypass it.
-
-
-
-
- Base class for UIToolkit implementations of primitive building block widgets.
-
-
-
-
- Set by child.
-
-
-
-
- Synchronize control colors with background/text/image etc. colors.
- Called when custom UI colors are changed, and after constructor.
-
-
-
-
- If set, takes priority over VehicleRedirectorAsset's paint color and over VehicleAsset's default paint color.
-
-
-
-
- Returned asset is not necessarily a vehicle asset yet: It can also be a VehicleRedirectorAsset which the
- vehicle spawner requires to properly set paint color.
-
-
-
-
- Plugin-only event when throwable is spawned on server.
-
-
-
-
- Allows NPCs to trigger plugin or script events.
-
-
-
-
- instigatingPlayer can be null. For example, if instigated by NpcGlobalEventMessenger.
-
-
-
-
- Circular mask for 2D distances in meters on a 2D cell grid.
- Includes a cell if the meters distance between the center cell
- and the closest point on test cell is within radius.
-
-
-
-
- World space distance in meters.
-
-
-
-
- Region cell size in meters.
-
-
-
-
- Data in common between list downloaded from a GET request and a ServerListCurationAsset.
-
-
-
-
- Optional web image path if icon isn't included.
-
-
-
-
- Incremented during server list refresh for each server blocked by this rule.
-
-
-
-
- Starting position when the bullet was fired.
-
-
-
-
- Only available on the server. For use by plugins developers who want to analyze deviation between approximate
- start direction and final hit position using and
- per public issue #4450. Note that origin and direction on server are not necessarily exactly the same as on
- the client for a variety of reasons, including that bullets on the client can be spawned between simulation
- frames when the aim direction was different. (Aim direction is updated every drawn frame on the client as
- opposed to every simulation frame on the server.) Rather than kicking for one particularly large deviation
- we would recommend tracking stats for each shot's actual deviation vs max theoretical deviation. Remember
- to account for bullet drop and that aim spread is relative to this direction. (For example, a shotgun may
- fire ~8 pellets in a cone around this direction.) Note also that in third-person the bullet can turn up to
- 90 degrees from the aim direction if the camera is up against a wall.
-
-
-
-
- Combination of gun and attachments' bullet gravity multipliers.
-
-
-
- Whether plugin allowed attachment.
-
-
-
- Plugin-only event when bullet is fired on server.
-
-
-
-
- Plugin-only event when bullet hit is received from client.
-
-
-
-
- Plugin-only event when projectile is spawned on server.
-
-
-
-
- reticuleHook.localPosition after instantiation, or zero if null.
-
-
-
-
- True if startPrimary was called this simulation frame.
- Allows gun to shoot even if stopPrimary is called immediately afterwards.
-
-
-
-
- Remaining calls to tock before firing.
-
-
-
-
- Shot counter used by needsRechamber and RechamberAfterShotCount.
-
-
-
-
- Is the tactical attachment toggle on?
- e.g. True when the laser is enabled.
-
-
-
-
- Should stat modifiers from the current tactical attachment be used?
-
-
-
-
- Factor e.g. 2 is a 2x multiplier.
- Prior to 2022-04-11 this was the target field of view. (90/fov)
-
-
-
-
- Zoom multiplier in third-person.
-
-
-
-
- Whether main camera field of view should zoom without scope camera / scope overlay.
-
-
-
-
- Original barrel and magazine assets are supplied because they may have already been deleted. Barrel is only
- valid if quality was greater than zero.
-
-
-
-
- Called on server and owning client.
-
-
-
-
- Calculate damage multiplier for individual bullet.
-
-
-
-
- Requested for plugin use.
-
-
-
-
- Request from the server to play a gun jammed animation.
- Since client can't predict chamber jams we fixup the predicted ammo count.
-
-
-
-
- Note: This is the m/s² acceleration, not the multiplier.
-
-
-
-
- This is a bit of a hack... aimAccuracy is [0, maxAimingAccuracy] and changed during each FixedUpdate call,
- but was used in some gameplay display features like holo sight, laser, ADS, etc. (yes, should
- be de-coupled from FixedUpdate but that is its own issue) To smooth this out we interpolate
- slightly behind the aimAccuracy value depending on the time since FixedUpdate.
-
-
-
-
- Holographic sights follow the true aiming direction regardless of viewmodel animation.
-
-
-
-
- Note: This is the multiplier, not the m/s² acceleration.
-
-
-
-
- Code common for regular gun and sentry gun.
-
-
-
-
- Consolidates parameters for older, separate inventory search methods.
-
- The "player" part of the name refers to the PlayerInventory-specific parameters. It can still be used to search
- the Items class, in which case those parameters do not apply.
-
-
-
-
- List to populate with matching items.
-
-
-
-
- If true, search player's primary and secondary weapon slots.
- Only applicable when used with PlayerInventory class. (I.e., not Items class.)
-
-
-
-
- If true, search storage container player is currently interacting with (if any).
- Only applicable when used with PlayerInventory class. (I.e., not Items class.)
-
-
-
-
- If greater than zero, search exits early once Results count meets MaxResultCount.
-
-
-
-
- If set, item must be this type to match.
-
-
-
-
- If set, AssetRef must be a reference to item's asset to match.
- Replaces older "id" parameter which matched if item's legacy asset ID was the same.
-
-
-
-
- If true, items with amount of zero can match. Otherwise, they are ignored.
- Replaces older "findEmpty" parameter which matched if (findEmpty || amount > 0).
-
-
-
-
- If true, items with an "amount" >= their MaxAmount are ignored. Otherwise, they can match (default).
-
-
-
-
-
- If set, item must be of type ItemCaliberAsset. Asset's caliber list must either:
- • Contain this caliber ID.
- • Or, if empty, IncludeUnspecifiedCaliber must be true.
- Otherwise, item is ignored.
-
-
-
-
- If set, item must be of type ItemCaliberAsset. Asset's caliber list must either:
- • Contain one of these caliber IDs.
- • Or, if empty, IncludeUnspecifiedCaliber must be true.
- Otherwise, item is ignored.
-
-
-
-
- Only applicable if CaliberId or AnyCaliberIds is set.
- If true, assets with an empty calibers list can match. Otherwise, they are ignore.d
-
-
-
-
- If set, do not include this specific item instance in search results.
- Kind of hacked-in for ignoring "target item" as a potential input item.
-
-
-
-
- Nearly identical to InventorySearch aside from:
- • Struct instead of class to improve garbage collection performance in pooled lists.
- • More understandable name.
- • Provides reference to Items holding "Jar." Longer-term this should be preferred over the "Page" property.
-
-
-
-
- Serverside delete an amount of this item.
-
- False for crafting where original item can be kept, true when selling to vendors.
- Total amount deleted.
-
-
-
- -1 if no eligible item is found.
- If includeMaxQuality is true an item with quality of 100 can be "lowest quality", otherwise item has to
- be less than 100 quality.
-
-
-
-
- Please use PlayerInventorySearchResultV2 for better performance!
-
-
-
-
- Serverside delete an amount of this item.
-
- Total amount deleted.
-
-
-
- Used by the server to validate client Unity player files (assemblies and resources).
-
-
-
-
- Should players be allowed to join this server regardless of whether their DLL hash matches ours?
- Useful to allow players to join debug mode servers.
-
-
-
-
- Should players be allowed to join this server regardless of whether their resources hash matches ours?
- Useful to allow players to join debug mode servers.
-
-
-
-
- Experience to add or subtract when used. Defaults to zero.
-
-
-
-
- Canned beans have skins from April Fools.
-
-
-
-
- Note: if calling ItemRef.Get() please use FindItemAsset instead to avoid redundant asset lookups.
-
-
-
-
- Does this blueprint output create the specified item?
-
-
-
-
- Reset dragging handle and register transformation.
-
-
-
-
- If true, vest and backpack spawn System_Area instead of System_Hook.
-
-
-
-
- Sets the point to lerp from, should be called after resetting position or things like that.
-
-
-
-
- Logs enabled when WITH_NSB_LOGGING is defined.
- Tracking down an issue where snapshot buffer stops working for groups of networked objects.
-
-
-
-
- When adding or removing entries remember to update NetMessages size and regenerate NetCode!
-
-
-
-
- Server sent a ping.
-
-
-
-
- Server replying to our ping.
-
-
-
-
- Server is shutting down shortly.
-
-
-
-
- Create game object for player.
-
-
-
-
- Destroy game object for player.
-
-
-
-
- Download these files before loading the level.
-
-
-
-
- Server wants additional info before accepting us.
-
-
-
-
- Server has accepted us and will create a player game object.
-
-
-
-
- Server rejected us, we will go back to the menu.
-
-
-
-
- Banned either during connect or gameplay.
-
-
-
-
- Kicked during gameplay.
-
-
-
-
- Should be converted to an RPC. Leftover from prior to net messaging code.
-
-
-
-
- Should be converted to an RPC. Leftover from prior to net messaging code.
-
-
-
-
- Server sending BattlEye payload to client.
-
-
-
-
- Infrequent notification of queue position.
-
-
-
-
- Server calling an RPC.
-
-
-
-
- Allow Unity events to apply damage in a sphere. (doesn't have any visual effects)
- Intended to replace unsupported/unintentional use of "Grenade.cs" and "Rocket.cs" scripts.
-
-
-
-
- Zombie explosion types have slight variations e.g. lighting zombies on fire.
-
-
-
-
- If greater than -0.5, overrides default radius zombies and animals will be alerted within.
-
-
-
-
- If true, per-surface effects like blood splatter are created.
-
-
-
-
- If true, explosion damage passes through Barricades and Structures.
-
-
-
-
- Speed to launch players away from blast position.
-
-
-
-
- Overrides how fall damage is calculated when landing on this game object or its descendants.
-
-
-
-
- Could be extended in the future to increase, decrease, or set fall damage.
-
-
-
-
- Potentially useful for an event to toggle the override.
-
-
-
-
- Character will not take any fall damage.
-
-
-
-
- Payload for the DamageTool.damageZombie function.
-
-
-
-
- Should game mode config damage multiplier be factored in?
-
-
-
-
- Equivalent to the "armor" parameter of the legacy damage function.
-
-
-
-
- Defaults to 1.
-
-
-
-
- If not null and damage is applied, is called with this position (startle: true).
-
-
-
-
- If non-zero, NPC name is shown as ??? until bool flag is true.
-
-
-
-
- This value is confusing because in the level editor it is the normalized radius, but in-game it is the square radius.
-
-
-
-
- Returning an Asset rather than the older IDs allows GUIDs to be used.
- legacyTargetAssetType is required for compatibility with spawn tables using legacy 16-bit IDs. If set to
- None and the spawn asset uses legacy IDs a warning is logged explaining GUIDs are necessary.
-
-
-
-
-
- Doesn't support spawn assets with legacy 16-bit IDs.
-
-
-
-
- For backwards compatibility with features that still need a legacy ID rather than asset.
-
-
-
-
- For backwards compatibility with features that still need a legacy ID rather than asset.
-
-
-
-
- For backwards compatibility with features that still need a legacy ID rather than asset.
-
-
-
-
- If using a map or mods from the workshop, this class monitors them for changes so the server can be restarted.
-
-
-
-
- Request status of workshop items.
-
-
-
-
- Called the next tick after update(s) detected.
-
-
-
-
- Called when a queried item's update timestamp is newer than our initially loaded version.
-
-
-
-
- Called when results from a call to submitQueryRequest are available.
-
-
-
-
- Called once timer reaches interval.
-
-
-
-
- Were update(s) detected that should be handled on next tick?
-
-
-
-
- Are we done monitoring?
- Default finished once an update is detected.
-
-
-
-
- Interval between query submissions.
-
-
-
-
- Accumulated time before submitting query after passing interval.
-
-
-
-
- Callback from Steam when results from a call to submitQueryRequest are available.
-
-
-
-
- Slightly interpolated copy of actual spread angle to smooth out sharp changes like crouch/prone.
-
-
-
-
- Allows interpolatedSpread to snap to target value when crosshair becomes visible.
-
-
-
-
- Deserialize JSON onto an existing object instance.
-
-
-
-
- Potentially useful for players with corrupted cloud storage.
- https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/2756
-
-
-
-
- Introduced much later (2020) than most of the other methods in this class (2014) in order to properly handle
- BOM/preamble of text files. Matches somewhat undesirable legacy behavior like creating directories.
-
-
-
-
- NOTE: From and to are both relative to PATH.
-
-
-
-
- Read GUI texture from a .jpg or .png file.
-
-
-
-
- Read GUI texture from a .jpg or .png file.
-
-
-
-
- Windows-specific extensions of console input.
- Uses the Win32 API to force a console to be created and destroyed.
-
-
-
-
- Called by navmesh baking to complete pending object changes that may affect which nav objects are enabled.
-
-
-
-
- Hide culling volume by default because new mappers might wonder what these purple boxes
- are and why their number goes away after moving objects.
-
-
-
-
- Check a fixed number of volumes for visibility updates per frame.
-
-
-
-
- Any volumes in the process of enabling/disabling get updated once per frame.
-
-
-
-
- True for the next update after the player is teleported.
-
-
-
-
- Associates items of the same currency, e.g. dollars or bullets.
-
-
-
-
- Should this item/value be shown in the list of vendor currency items?
- Useful to hide modded item stacks e.g. a stack of 100x $20 bills.
-
-
-
-
- String to format value {0} into.
-
-
-
-
- String to format value {0} of total {1} into if not otherwise specified in NPC condition.
-
-
-
-
- Sum up value of each currency item in player's inventory.
-
-
-
-
- Does player have access to items covering certain value?
-
-
-
-
- Add items to player's inventory to reward value.
-
-
-
-
- Remove items from player's inventory to pay required value.
-
-
-
-
- Sort currency entries by value.
-
-
-
-
- Temporary replacement for static block member because plugins might depend on it.
-
-
-
-
- Parses fv:X from input string and loads X.txt from game folder.
-
-
-
-
- Called after lod bias may have changed.
-
-
-
-
- Can be added to any GameObject with an interactable binary state in its parents.
-
- If players should not be allowed to interact with the object in the ordinary manner,
- add the Interactability_Remote flag to its asset to indicate only mod hooks should control it.
-
-
-
-
- When a state change is requested in singleplayer it should be treated as if running as a client on a server.
- This is the default to match behavior from before this option was added.
-
-
-
-
- When a state change is requested in singleplayer it should be treated as if running as a dedicated server.
-
-
-
-
- Invoked when interactable object enters the Used / On / Enabled state.
-
-
-
-
- Invoked when interactable object enters the Unused / Off / Disabled state.
-
-
-
-
- Should the OnStateEnabled and OnStateDisabled events be invoked when the object is loaded, becomes relevant
- in multiplayer, and is reset? True is useful when visuals need to be kept in sync with the state, whereas
- false is useful for transient interactions.
-
-
-
-
- Controls how state change requests are performed when running as both client and server ("listen server").
- On the dedicated server, requesting a state change overrides the current state without processing NPC
- conditions, whereas when a client requests a state change NPC conditions apply. This option fixes the
- inconsistency in singleplayer of whether to treat as server or client. (public issue #4298)
- At the time of writing (2024-01-29) listen server only applies to singleplayer.
-
-
-
-
- Set state to Enabled if currently Disabled.
-
- On dedicated server this directly changes the state,
- but as client this will apply the usual conditions and rewards.
-
-
-
-
- Set state to Disabled if currently Enabled.
-
- On dedicated server this directly changes the state,
- but as client this will apply the usual conditions and rewards.
-
-
-
-
- Toggle between the Enabled and Disabled states.
-
- On dedicated server this directly changes the state,
- but as client this will apply the usual conditions and rewards.
-
-
-
-
- Tests whether current or recent history contains point.
-
-
-
-
- Half second history at 50 tickrate.
-
-
-
-
- Not originally supported by networking. Added temporarily during netpak rewrite because the quaternion
- compression is so much better for vehicles than three byte Euler rotation.
-
-
-
-
- Gets barricades both attached to vehicles and not attached to vehicles.
-
-
-
-
- Nelson 2025-04-08: thank goodness that this didn't use the temperature system! (For some reason?) Makes it
- relatively straightforward to convert campfires and ovens to Crafting Tags, and means vanilla has a test
- case for the mod hook, too. (This method tests for CraftingHeatTag in radius.)
-
-
-
-
- Index into Blueprints list. -1 means blueprint name is used instead.
-
-
-
-
- Name to look for in Blueprints list.
-
-
-
-
- Other menus can modify DevkitSelectionToolOptions so we need to sync our menu when opened.
-
-
-
-
- Thanks to Glenn Fiedler for this RK4 implementation article:
- https://gafferongames.com/post/integration_basics/
-
-
-
-
- Higher values return to the target position faster.
-
-
-
-
- Higher values reduce bounciness and settle at the target position faster.
- e.g. a value of zero will bounce back and forth for a long time (indefinitely?)
-
-
-
-
- Should objects that failed to load due to missing assets be saved?
- If true, a placeholder transform is created and used to save.
- If false, objects without assets are zeroed during save. (old default)
-
-
-
-
- Hash of Objects.dat
-
-
-
-
- Called by navmesh baking to complete pending object changes that may affect which nav objects are enabled.
-
-
-
-
- Stagger regional visibility across multiple frames.
-
-
-
-
- Caches uint16 ID to ID redirects.
-
-
-
- Matches handle returned by request, or -1 if cached.
-
-
-
- Revive all trees in a specific region.
-
-
-
-
- Revive trees worldwide. Used between arena rounds.
-
-
-
-
- Material instantiated when dual-render scopes are enabled.
- Overrides the material of the gun sight attachment.
-
-
-
-
- Unintuitively (to say the least), a pitch of 0 is up, 90 is forward, and 180 is down.
-
-
-
-
- Nelson 2025-06-27: previously, stopping aim cancelled the sway offset immediately. When
- experimenting with removing the dual-render scope blur this felt jarring.
-
-
-
-
- Reset to actual fov when first used.
-
-
-
-
- If true, freecam controls take input priority.
- Previously named isOrbiting.
-
-
-
-
- Should player stats be visible in spectator mode?
-
-
-
-
- Smoothing adds some initial blend-in which felt nicer for explosion rumble.
-
-
-
-
- Slightly clamped third-person version of "eyes" value to prevent sweep from hitting floor.
-
-
-
-
- Get point-of-view in world-space.
-
-
-
-
- Get point of view in worldspace without the left/right leaning modifier.
-
-
-
-
- This is only used after capturing dual-render scope, not when exiting scope overlay.
- Otherwise the lighting vision may have changed between entering and exiting the scope.
-
-
-
-
- Clamp _pitch within the [0, 180] range.
-
-
-
-
- Clamp yaw while seated, and keep within the [-360, 360] range.
-
-
-
-
- Can spectating be used without admin powers?
- Plugins can enable spectator mode.
-
-
-
-
- Can workzone be used without admin powers?
- Plugins can enable workzone permissions.
-
-
-
-
- Can spectator overlays be used without admin powers?
- Plugins can enable specstats permissions.
-
-
-
-
- Called from the server to allow spectating without admin powers.
- Only used by plugins.
-
-
-
-
- Allow use of spectator mode without admin powers.
- Only used by plugins.
-
-
-
-
- Called from the server to allow workzone without admin powers.
- Only used by plugins.
-
-
-
-
- Allow use of workzone mode without admin powers.
- Only used by plugins.
-
-
-
-
- Called from the server to allow spectator overlays without admin powers.
- Only used by plugins.
-
-
-
-
- Allow use of spectator overlay mode without admin powers.
- Only used by plugins.
-
-
-
-
- Multiple hits are necessary because the first returned hit is not always the closest.
-
-
-
-
- Sweep a sphere to find collisions blocking the third-person camera.
-
- Valid world-space camera position.
-
-
-
- Replacement for enum origin.
-
-
-
-
- Hardcoded built-in name, or name of workshop file if known.
-
-
-
-
- Steam file ID if loaded from the workshop, zero otherwise.
-
-
-
-
- If true, when added to asset mapping the new assets will override existing ones.
- This ensures workshop files installed by servers take priority and disables warnings about overlapping IDs.
-
-
-
-
- If true, we can re-save .dat/.asset files from this origin.
- Defaults to false. Only true for assets in the game install folder.
-
-
-
-
- Can be added to any GameObject to receive text chat events.
-
-
-
-
- Message can be in any chat channel.
-
-
-
-
- Message must be in Global channel.
-
-
-
-
- Message must be in Local channel.
-
-
-
-
- Filter to apply to message type.
-
-
-
-
- Sphere radius (squared) around this transform to detect player messages.
- e.g. 16 is 4 meters
-
-
-
-
- Substring to search for in message.
-
-
-
-
- Message must start with phrase text.
-
-
-
-
- Message must contain phrase text.
-
-
-
-
- Message must end with phrase text.
-
-
-
-
- Filter to apply to message text.
-
-
-
-
- Invoked when a player message passes the filters.
-
-
-
-
- Calculate angle in radians the player would need to offset their aim upward
- to hit a target a certain distance away.
-
-
-
-
- Separate from isEnabled to hide markers when they are outside the scope.
-
-
-
-
- Used to sync hasLabel visibility.
-
-
-
-
- True while fading in or fully transitioned in.
-
-
-
-
- True while fading in, but not at full intensity.
-
-
-
-
- True while finished fading in.
-
-
-
-
- True while fading out, but not at zero intensity.
-
-
-
-
- True while finished fading out.
-
-
-
-
- True while fading in or out.
-
-
-
- Matches handle returned by request, or -1 if cached.
-
-
-
- Read commands from standard input, and write logs to standard output.
-
-
-
-
- Each Update we consume a key press from the console buffer if available.
- Unfortunately ReadLine is not an option without blocking output, so we maintain our own pending input.
-
-
-
-
- Entry in the MenuPlayServerBookmarksUI list.
-
-
-
-
- Null token.
-
-
-
-
- Text between tags.
-
-
-
-
- [b]
-
-
-
-
- [/b]
-
-
-
-
- [i]
-
-
-
-
- [/i]
-
-
-
-
- [list]
-
-
-
-
- [/list]
-
-
-
-
- [olist]
-
-
-
-
- [/olist]
-
-
-
-
- [*] value
- Nelson 2025-07-02: manually written lists typically don't have a ListItemClose token.
-
-
-
-
- [/*]
- Nelson 2025-07-02: Steam's new visual editor adds closing tokens to list items, but
- manually-written list items typically don't have them.
-
-
-
-
- [h1]
-
-
-
-
- [/h1]
-
-
-
-
- [h2]
-
-
-
-
- [/h2]
-
-
-
-
- [h3]
-
-
-
-
- [/h3]
-
-
-
-
- [url=value]
-
-
-
-
- [/url]
-
-
-
-
- [img]
-
-
-
-
- [/img]
-
-
-
-
- [previewyoutube=value]
-
-
-
-
- [/previewyoutube]
-
-
-
-
- '\n' or "\r\n"
-
-
-
-
- [quote=value] (value is author)
-
-
-
-
- [/quote]
-
-
-
-
- [p]
-
-
-
-
- [/p]
-
-
-
-
- [u]
-
-
-
-
- [/u]
-
-
-
-
- Steam's new visual editor quotes value in [url=x] tag. If value is not quoted, this method returns as-is.
- If it IS quoted, this methods returns without quotation marks.
-
-
-
-
- Breaks down Steam's version of BBcode into tokens like, "[b]", "[i]", "actual text", etc.
-
-
-
-
- If true, parse newlines in the input as LineBreak tokens. (default true)
- If false, exclude LineBreak tokens from output.
- Steam's new visual editor doesn't emit newlines, instead inferring line breaks from paragraph blocks. To
- make life easier we will do the same for the main menu announcement feed.
-
-
-
-
- Reset to -1 when not chatting. If player presses up/down we get index 0 (most recent).
-
-
-
-
- Fill chat field with previous sent message.
- Useful for repeating commands with minor changes.
-
-
-
-
- Use the latest hotbar items in the UI.
-
-
-
-
- Icon uploaded to CDN.
-
-
-
-
- Icon used in game menus.
-
-
-
-
- Project-relative asset importer version of
-
-
-
-
- Icon saved for community members in Extras folder.
-
-
-
-
- Has the small icon been captured yet?
-
-
-
-
- Has the large icon been captured yet?
-
-
-
-
- Moved icon code from MenuTitleUI to here.
-
-
-
-
- These directories are excluded from source control and Steam depots so they might not exist yet.
-
-
-
-
- If updating this method please remember to update the support article:
- https://support.smartlydressedgames.com/hc/en-us/articles/13452208765716
-
-
-
-
- Does name contain rich text tags?
- Some players were abusing rich text enabled servers by inserting admin colors into their steam name.
-
-
-
-
- Used when damaging zombies to override in which situations they are stunned.
-
-
-
-
- Default stun behaviour determined by damage dealt.
-
-
-
-
- Don't stun even if damage is over threshold.
-
-
-
-
- Stun regardless of damage.
-
-
-
-
- Overrides hat item from zombie table with a specific item ID.
-
-
-
-
- Overrides gear item from zombie table with a specific item ID.
-
-
-
-
- If zombie is stuck this was a nearby barricade potentially blocking our path.
-
-
-
-
- If zombie is stuck this was a nearby structure potentially blocking our path.
-
-
-
-
- If zombie is stuck this was a nearby vehicle potentially blocking our path.
-
-
-
-
- If target player is passenger in a vehicle this is their vehicle.
-
-
-
-
- If zombie is stuck this was a nearby object potentially blocking our path.
-
-
-
-
- Incremented while stuck. Prevents doing overlap test too frequently.
-
-
-
-
- Add or remove from ticking list if needed.
- Separated from updateTicking in order to move once after first spawn.
-
-
-
-
- Boss zombies are considered mega as well.
-
-
-
-
- Yeah it seems kinda ugly to pollute all zombies with this code... zombie rewrite eventually please.
-
-
-
-
- If damage exceeds this value, stun the zombie.
-
-
-
-
- Used to kill night-only zombies at dawn.
-
-
-
-
- Cache difficulty asset (if any) for this zombie's current type and bound.
- Allows difficulty assets to override certain zombie behaviors.
- Called after bound/type is initialized, and after type changes during respawn.
-
-
-
-
- Called when zombie does not have a target, but has been stuck for a period.
-
-
-
-
- Reduces frequency of UndergroundAllowlist checks because it can be expensive with lots of entities and volumes.
-
-
-
-
- Helper to prevent mistakes or plugins from breaking alive zombie count.
-
-
-
-
- Helper to prevent mistakes or plugins from breaking alive boss zombie count.
-
-
-
-
- 2023-01-31: set height to 2 rather than adjusting per-zombie-type. Tall zombies (megas) couldn't
- get through doorways, and short zombies (crawlers) could get underneath objects they shouldn't
- like gas tanks. Zombies were also stacking on top of eachother a bit too much.
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- Ideally in a future rewrite asset overload will become the default rather than the overload taking legacy ID.
-
-
-
-
- If true, item has 100% quality. If false, item has a random quality.
-
-
-
-
- Get animal or player damage based on game mode config.
-
-
-
-
- Get zombie or player damage based on game mode config.
-
-
-
-
- Allows Unity events to spawn barricades.
-
-
-
-
- Distance along tree's local up axis to offset debris spawn position. Defaults to 1.0.
-
-
-
-
- Before had randomization properties (which trees don't currently use
- as of 2024-12-11 because rotation/scale aren't saved) each tree has some random rotation and scale variation
- based on its position. This property controls the rotation away from upright.
-
-
-
-
- Amount of experience to reward foraging player.
-
-
-
-
- Forageable resource message.
-
-
-
-
- Weapon must have matching blade ID to damage tree.
- Both weapons and trees default to zero so they can be damaged by default.
-
-
-
-
- If true, prevent collisions between falling tree and the stump. (i.e., debris can fall through stump)
- Defaults to true.
-
-
-
-
- Only activated during this holiday.
-
-
-
-
- Tree to use during the Christmas event instead.
-
-
-
-
- Tree to use during the Halloween event instead.
-
-
-
-
- Get asset ref to replace this one for holiday, or null if it should not be redirected.
-
-
-
-
- Essentially deprecated for now.
-
-
-
-
- Server response to a non-rejected CONNECT request. Notifies client they are in the queue.
-
-
-
-
- Rather than creating all SleekItems as once we create a few per frame.
-
-
-
-
- Reset all items hotkey label.
-
-
-
-
- Kept because lots of modders have been using this script in Unity,
- so removing legacy effect id would break their content.
-
-
-
-
- Find an item to apply stat tracker tool to.
-
-
-
-
- Find an item with a stat tracker to remove.
-
-
-
-
- Find an item with a ragdoll effect to remove.
-
-
-
-
- Find an item to apply ragdoll effect tool to.
-
-
-
-
- Toggle button to open/close advanced filters panel.
-
-
-
-
- On/off checkbox for including description text in filter.
-
-
-
-
- Switch between sort modes.
-
-
-
-
- On/off checkbox to reverse sort results.
-
-
-
-
- On/off checkbox to show only equipped items.
-
-
-
-
- Container for advanced options.
-
-
-
-
- Whether to include description text in filter.
-
-
-
-
- How to sort filtered items.
-
-
-
-
- Should sorted list be reversed?
-
-
-
-
- Should only equipped items be shown?
-
-
-
-
- Remove items that do not match search text.
-
-
-
-
- Removed items that are not equipped.
-
-
-
-
- All main menu MTX shop code should be routed through here so that it could theoretically be ported to other
- platforms or stores. Obviously this is all very Steam specific at the moment, but at least the UI does not
- depend on Steam API here as much as older parts of the game.
-
-
-
-
- Was this item marked as new in the config?
- If new, and not marked as seen, then a "NEW" label is shown on the listing.
-
-
-
-
- Do we have pricing details for a given item?
- Price results may not have been returned yet, or item might not be public.
-
-
-
-
- Messy, but we only show a menu alert if there was a problem.
-
-
-
-
- Already filtered to only return locally known items which pass country restrictions.
-
-
-
-
- Empty if outside new time window.
-
-
-
-
- Subset of listings.
-
-
-
-
- Subset of listings.
-
-
-
-
- Subset of listings.
-
-
-
-
- Subset of listings.
-
-
-
-
- Subset of listings.
-
-
-
-
- May be out of date by one frame.
-
-
-
-
- Currently used by vehicles to deactivate some rendering features when outside rendering distance.
- Uses "frozen" position if applicable, otherwise the camera position from the most recent Update. This means
- it could be out-of-date, but for LOD purposes it should be "good enough."
-
-
-
-
- Reset prior to joining a new server.
-
-
-
-
- By default if the client submits an asset guid which the server cannot find an asset for the client will
- be kicked. This is necessary to prevent cheaters from spamming huge numbers of random guids. In certain cases
- like a terrain material missing the server knows the client will be missing it as well, and can register
- it here to prevent the client from being kicked unnecessarily.
-
-
-
-
- Send asset hash (or lack thereof) to server.
-
- IMPORTANT: should only be called in cases where the server has verified the asset exists by loading it,
- otherwise only if the asset exists on the client. This is because the server kicks if the asset does not
- exist in order to prevent hacked clients from spamming requests. Context parameter is intended to help
- narrow down cases where this rule is being broken.
-
-
-
-
- Send asset hash to server.
- Used in cases where server does not verify asset exists. (see other method's comment)
-
-
-
-
- Called each Update on the client.
-
-
-
-
- Called from the server to override salvage duration.
- Only used by plugins.
-
-
-
-
- Override salvage duration without admin.
- Only used by plugins.
-
-
-
-
- Outlined object is not necessarily the focused object, so we track it to disable later if focus is destroyed.
-
-
-
-
- Search up hierarchy for most specific Target transform.
-
-
-
-
- Was focus non-null during last update? Used to detect when focus was destroyed.
-
-
-
-
- Currently used by plugins to identify what damaged a buildable.
-
-
-
-
- Explosion instigated by .
-
-
-
-
- Should only be used by .
- For example: "Condition_##" where ## is an index.
-
-
-
-
- If >0 the game will start a coroutine to grant the reward after waiting.
-
-
-
-
- If true and player has this reward pending when they die or disconnect it will be granted.
-
-
-
-
- Intended to replace filling data from constructor.
-
-
-
-
- Intended to replace filling data from constructor. Legacy is for backwards compatibility with Reward_#_Key
- format, whereas V2 uses the list and dictionary features.
-
-
-
-
- Used in a test scene to quickly test UI Toolkit implementation.
-
-
-
-
- Assigned when a named preset is created.
- 0 is the default and should be replaced by a preset when loaded.
- -1 indicates the preset was modified.
- -2 and below are the default presets.
-
-
-
-
- Nelson 2024-09-20: Changing default to any (from has players) because the default server list sort will now
- push empty servers to the bottom.
-
-
-
-
- If true, only servers with available player slots are shown.
- Nelson 2024-09-20: Changing default to false because the default server list sort will now push them down
- from the top a little bit.
-
-
-
-
- If >0, servers with ping higher than this will not be shown.
-
-
-
- True if level was added to the list of maps.
-
-
-
- Version before named version constants were introduced. (2023-11-13)
-
-
-
-
- % Full
-
-
-
-
- Note: this can be different from status.blueprint after status refreshes because status is pooled.
-
-
-
-
- Update the title box describing the "most important" item: item to repair, salvage, craft, etc.
-
-
-
-
- The dialogue to go to when a message has no available responses.
- If this is not specified the previous dialogue is used as a default.
-
-
-
-
- For level objects with QuestCondition called when quests are added or removed.
-
-
-
-
- Event specifically for plugins to listen to global quest progress.
-
-
-
-
- Event for plugins when group or rank changes.
-
-
-
-
- Overrides label text next to marker on map.
- Used by plugins. Not saved to disk.
-
-
-
-
- Kept serverside. Used to check whether the player is currently in their Steam group or just a normal in-game group.
-
-
-
-
- Check before allowing changes to this player's
-
-
-
-
- Can rename the group.
-
-
-
-
- Can promote and demote members.
-
-
-
-
- If set, default spawn logic will check for a location node or spawnpoint node matching name.
- Saved and loaded between sessions.
-
-
-
-
- If true, hide viewmodel and prevent using equipped item. For example, to prevent shooting gun on top of a
- first-person scene. This could be expanded in the future with other flags and options.
-
-
-
-
- Called serverside to set marker on clients.
-
-
-
-
- Ask server to set marker.
-
-
-
-
- Call serverside to replicate new rank to clients
-
-
-
-
- Set player's group to their Steam group (if any) without testing restrictions.
-
-
-
- Ignores group changing rules when true.
-
-
-
- Serverside send packet telling player about this invite
-
-
-
-
- Called on server to finalize and remove quest.
-
-
-
-
- Called by quest details UI to request server to abandon quest.
-
-
-
-
- Called when there are no responses to choose, but server has indicated a next dialogue is available.
-
-
-
-
- Called in singleplayer and on the server after client requests NPC dialogue.
-
-
-
-
- Prevent re-creating it during destroy (e.g. plugin granting rewards) from leaking gameobject.
-
-
-
-
- White 1x1 texture for solid colored images.
- uGUI empty image draws like this, but we need the texture for IMGUI backwards compatibility.
-
-
-
-
- Is the server this widget represents currently favorited?
- Can be false on the favorites list.
-
-
-
-
- Payload for the DamageTool.damagePlayer function.
-
-
-
-
- Should armor worn on matching limb be factored in?
-
-
-
-
- Should game mode config damage multiplier be factored in?
-
-
-
-
- If player dies should it count towards quests?
-
-
-
-
- Effect to apply to ragdoll if dead.
-
-
-
-
- Read 8-bit per channel color excluding alpha.
-
-
-
-
- Intended as a drop-in replacement for existing assets with property uint16s.
-
-
-
-
- Is a point safely within the level bounds?
- Also checks player clip volumes if legacy borders are disabled.
-
-
-
-
- Is given Y (vertical) coordinate within level's height range?
- Maps using landscapes have a larger range than older maps.
-
-
-
-
- Notify menus that levels list has changed.
- Used when creating/deleting levels, as well as following workshop changes.
-
-
-
-
- Get level's cached asset, if any.
-
-
-
-
- Should loading code proceed with redirects?
- Disabled by level and when in the editor.
-
-
-
-
- Placeholder created between unloading the main menu and loading into game or editor.
-
-
-
-
- Loading screen music.
-
-
-
-
- Clip to play to fade out loop.
-
-
-
-
- Useful to narrow down why a player is getting kicked for modified level files when joining a server.
-
-
-
-
- Display version string of the currently loaded level.
-
-
-
-
- Version string of the currently loaded level packed into an integer.
-
-
-
-
- Refreshes known levels and attempts to redirect level reference if it no longer exists.
-
-
-
-
- Find level matching both name AND workshop file ID (can be zero).
-
-
-
-
- Load level details from Level.dat in directory path.
-
-
-
-
- Server list allows player to enter a map name when searching, so we try to find a local
- copy of the level for version number comparison. (Server map version might differ.)
-
-
-
-
- New map filter uses lowercase map name and doesn't need startswith.
-
-
-
-
- Search all map folders to add any previously unregistered maps.
-
-
-
-
- Temporary to unbind events because this class is static for now. (sigh)
-
-
-
-
- Defines how instance methods handle invocation when the target instance does not exist yet, for example
- if the target instance is async loading or has time sliced instantiation.
-
-
-
-
- Invocation should be ignored if the target instance does not exist.
- This is the only applicable defer mode for static methods and server methods.
-
-
-
-
- Invocation will be queued up if the target instance does not exist.
- Originally an "Overwrite" mode was considered for cases like SetHealth where only the newest value is
- displayed, but this was potentially error-prone if multiple queued methods depended on values from each other.
-
-
-
-
- Allows Unity events to execute commands from the server.
- Messenger context is logged to help track down abusive assets.
-
-
-
-
- Responsible for loading asset definitions on a separate thread.
-
-
-
-
- Parser error messages, if any.
-
-
-
-
- Warning: on worker thread this only acts as handle. Do not access.
-
-
-
-
- Used on main thread to determine when all queued tasks have finished.
-
-
-
-
- Loop searching directories recursively for asset bundle and asset definition files.
-
-
-
-
- Warning: on worker thread this only acts as handle. Do not access.
-
-
-
-
- Absolute path to *.log file.
-
-
-
-
- Responsible for the per-process .log file in the Logs directory.
- Kept multiple log files in the past, but now consolidates all information
- into a single file named Client.log or Server_{Identifier}.log.
-
-
-
-
- Should setup of the default *.log file be disabled?
-
-
-
-
- If true, information like IP addresses and login tokens should be censored in vanilla logs.
- Nelson 2024-11-11: Special thanks to Jdance and asineth0 in public issue #4740!
-
-
-
-
- Text to replace with if is enabled.
-
-
-
-
- *ATTEMPTS* to replace IPv4 address(es) with .
- Should only be called if is enabled.
- Case-by-case redaction should be preferred for performance reasons over using this function. This function
- is intended for third-party messages (e.g., BattlEye) that we don't have control over.
-
- True if message was modified.
-
-
-
- Get logging to path.
-
-
-
-
- Set path to log to.
-
-
-
-
- Close current log file.
-
-
-
-
- Invoked when door is opened/closed, but not when loaded.
-
-
-
-
- Switches between "legacy" (per-level road textures bundle) and "assets" (using RoadAsset).
-
-
-
-
- If modifying usage please update support article:
- https://support.smartlydressedgames.com/hc/en-us/articles/13452208765716
-
-
-
-
- If modifying usage please update support article:
- https://support.smartlydressedgames.com/hc/en-us/articles/13452208765716
-
-
-
-
- Client has a critical module the server doesn't.
-
-
-
-
- Server has a critical module the client doesn't.
-
-
-
-
- Level config's version number does not match.
-
-
-
-
- EconInfo.json hash does not match.
-
-
-
-
- Master bundle hashes do not match.
-
-
-
-
- Server has not received an auth session response from Steam yet.
-
-
-
-
- Server has not received an economy response from Steam yet.
-
-
-
-
- Server has not received a groups response from Steam yet.
-
-
-
-
- Player nickname exceeds limit.
-
-
-
-
- Player nickname contains invalid characters.
-
- If modifying usage please update support article:
- https://support.smartlydressedgames.com/hc/en-us/articles/13452208765716
-
-
-
-
- Player nickname should not be a number.
-
-
-
-
- Player resources folders don't match.
-
-
-
-
- The network identity in the ticket does not match the server authenticating the ticket.
- This can happen if server's Steam ID has changed from what the client thinks it is.
- For example, joining a stale entry in the server list. (public issue #4101)
-
-
-
-
- Player's skin color is too similar to one of .
-
-
-
-
- Steam ID reported by net transport doesn't match client's reported Steam ID.
- This was exploited to fill the server queue with fake players.
-
-
-
-
- Received too many connection requests from player in a short window.
-
-
-
-
- Received too many invalid messages from connection in a short window.
-
-
-
-
- Server limits how many clients are joining from the same IP address.
- (public issue #5001)
-
-
-
-
- Zero is treated as unset.
-
-
-
-
- Returned asset is not necessarily a vehicle asset yet: It can also be a VehicleRedirectorAsset which the
- vehicle spawner requires to properly set paint color.
-
-
-
-
- Kept because lots of modders have been using this script in Unity,
- so removing legacy effect id would break their content.
-
-
-
-
- Matches level with same file name AND workshop file ID.
-
-
-
-
- Version before named version constants were introduced. (2023-11-08)
-
-
-
-
- Moved into ServerListFilters.
-
-
-
-
- Exposed for plugins. Can be null. Please do not modify.
-
-
-
-
- This overload supports legacy Condition_# format.
-
-
-
-
- This overload doesn't support legacy Condition_# format.
-
-
-
-
- If true, button tooltip will be overridden with tooltip from states array.
-
-
-
-
- If true oxygen is restored while in this volume, otherwise if false oxygen is depleted.
-
-
-
-
- Merges textures used in the level into an atlas to assist runtime draw call batching.
-
-
-
-
- Skip renderer children of these transforms, if any.
- For example we skip lights with material instances and rubble debris.
-
-
-
-
- Most objects in Unturned use the standard shader without transparency/emissive/detail/etc.
-
-
-
-
- Meshes we logged an explanation for as to why they can't be atlased.
-
-
-
-
- Textures we logged an explanation for as to why they can't be atlased.
-
-
-
-
- Materials we logged an explanation for as to why they can't be atlased.
-
-
-
-
- Objects instantiated for the lifetime of the level that should be destroyed when exiting the level.
-
-
-
-
- If true, don't assign texture atlas to material so batched materials are obvious.
-
-
-
-
- If true, assign a red material to excluded meshes so they are obvious.
-
-
-
-
- If true, replace each unique material with a colored one before static batching.
-
-
-
-
- If true, log why texture/material can't be included in atlas.
-
-
-
-
- If true, log if mesh has UVs outside [0, 1] range.
-
-
-
-
- We generate a 1x1 texture for materials without one.
-
-
-
-
- Tracks which mesh filters and skinned mesh renderers were referencing a given mesh.
-
-
-
-
- Tracks which meshes and materials were referencing a given texture.
-
-
-
-
- If true, UVs should be centered and overridden because original mesh was not textured.
-
-
-
-
- Maps original mesh to any mesh filters using it.
- When mesh's UVs are modified the mesh filters need to be pointed at the copied mesh.
-
-
-
-
- Renderers with a material using the texture.
- After combining texture the renderers need to be pointed at the combined material.
-
-
-
-
- Tracks which textures were referencing a given shader.
-
-
-
-
- StaticBatchingUtility.Combine requires input renderers are enabled and active in hierarchy,
- so we temporarily activate/enable them to keep this logic out of LevelObject/ResourceSpawnpoint.
-
-
-
-
- Payload for the DamageTool.damageAnimal function.
-
-
-
-
- Should game mode config damage multiplier be factored in?
-
-
-
-
- If not null and damage is applied, is called with this position.
-
-
-
-
- Can be added to EquipablePrefab item GameObject to receive events.
-
-
-
-
- Invoked when item begins inspect animation.
-
-
-
-
- Entry in the MenuPlayServerCurationUI list.
-
-
-
-
- In-game rich text does not support embedded YouTube videos, but they look great in the web browser,
- so we simply remove them from the in-game text.
-
-
-
-
- Unfortunately in-game rich text does not have code formatting yet, so remove the tags while preserving text.
-
-
-
-
- Nelson 2025-01-28: This command reproduces a bug destroying the player gameObject if the vehicle is
- destroyed on the same frame as the request to enter.
- https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/4760#issuecomment-2613090165
-
-
-
-
- Not using rate limit attribute because this is potentially called for hundreds of barricades at once,
- and only admins will actually be allowed to apply the transform.
-
-
-
-
- Only used by plugins.
-
-
-
-
- See BarricadeRegion.FindBarricadeByRootFast comment.
-
-
-
-
- For code which does not know whether transform exists and/or even is a barricade.
- See BarricadeRegion.FindBarricadeByRootFast comment.
-
-
-
-
- Does this label fade out as the chat message gets older?
-
-
-
-
- Chat message values to show.
-
-
-
-
- Tree activation is time-sliced, so this does not necessarily match whether the region is active.
-
-
-
-
- Can this tree be damaged?
- Allows holiday restrictions to be taken into account. (Otherwise holiday trees could be destroyed out of season.)
-
-
-
-
- Some new code common to SteamPending and SteamPlayer.
-
-
-
-
- Realtime the first ping request was received.
-
-
-
-
- Number of ping requests the server has received from this client.
-
-
-
-
- Called when a ping request is received from this client.
-
-
-
-
- Realtime passed since the first ping request was received from this client.
-
-
-
-
- Average number of ping requests received from this client per second.
- Begins tracking 10 seconds after the first ping request was received, or -1 if average is unknown yet.
-
-
-
-
- Only set on server. Associates player with their connection.
-
-
-
-
- Used when kicking player in queue to log what backend system might be failing.
-
-
-
-
- Number of alive zombies.
-
-
-
-
- Last time a quest boss was spawned.
-
-
-
-
- Allow another quest to spawn a boss zombie immediately.
-
-
-
-
- Kills the boss zombie if nobody is around, if the boss was killed it calls UpdateBoss.
-
-
-
-
- Checks for players in the area with quests and spawns boss zombies accordingly.
-
-
-
-
- HUD with projected labels for teammates.
-
-
-
-
- Allows map makers to create custom weather events.
-
-
-
-
- Does this weather affect fog color and density?
-
-
-
-
- Does this weather affect sky fog color?
-
-
-
-
- Does this weather affect cloud colors?
-
-
-
-
- Directional light shadow strength multiplier.
-
-
-
-
- Exponent applied to effect blend alpha.
-
-
-
-
- Exponent applied to effect blend alpha.
-
-
-
-
- SpeedTree wind strength for blizzard. Should be removed?
-
-
-
-
- If specified level editor color can be used rather than a per-asset color.
-
-
-
-
- Remove any existing item alert widgets.
-
-
-
-
- Open fullscreen alert showcasing newly granted items.
- Uses first item for title color, so items should be sorted by priority.
-
-
-
-
- Open fullscreen alert showcasing newly granted items.
-
-
-
-
- Handle esc/back key press.
- Still really messy, but this used to be inside a huge nested if/elseif in Update.
-
-
-
-
- Despite being newer code, this is obviously not ideal. Previously the news request was using the Steam HTTP
- API which might have been the cause of some crashes, so it was quickly converted to Unity web request instead.
-
-
-
-
- Invoked when web item is first loaded or reloaded.
-
-
-
-
- If false this structure cannot take damage.
-
-
-
-
- Modded structures can disable pooling if they have custom incompatible logic.
-
-
-
-
- Length of raycast downward from pivot to check floor is above terrain.
- Vanilla floors can be placed a maximum of 10 meters above terrain.
-
-
-
-
- Optional alternative structure prefab specifically for the client preview spawned.
-
-
-
-
- Called on the dedicated server to optimize client prefab for server usage.
-
-
-
-
- Compares weather intensity to value.
-
-
-
-
- Called during startup and when returning to the main menu.
-
-
-
-
- Result is never null, but may be empty or out-of-date.
-
-
-
-
- Can be added to Vehicle GameObject to receive events.
-
-
-
-
- Invoked when any player enters the driver seat.
-
-
-
-
- Invoked when any player exits the driver seat.
-
-
-
-
- Invoked when a locally controlled player enters the driver seat.
-
-
-
-
- Invoked when a locally controlled player exits the driver seat.
-
-
-
-
- Invoked when a locally controlled player enters the vehicle.
-
-
-
-
- Invoked when a locally controlled player exits the vehicle.
-
-
-
-
- Invoked when lock is engaged.
-
-
-
-
- Invoked when lock is disengaged.
-
-
-
-
- Invoked when horn is played.
-
-
-
-
- Invoked after explosion plays.
-
-
-
-
- Root transform.
-
-
-
-
- Hit collider's transform. Can be null.
-
-
-
-
- Tag display name without rich text formatting. To use, for example, in logging, sorting, or with rich color override.
-
-
-
-
- If true, tag requests name to be displayed in UI with NameColor label color override.
-
-
-
-
- Color to use in UI when displaying name.
-
-
-
-
- If HasNameColor is enabled, this is PlainTextName wrapped with NameColor rich text color tags.
- If unset, falls back to PlainTextName.
-
- Nelson 2025-05-02: initially, we allowed enabling any rich text tags in names. But, considering that we
- are also using PlainTextName for other color overrides (e.g. "bad" when missing), this will be disappointing
- if tags are displayed inconsistently.
-
-
-
-
- If true, icon should be tinted according to player's foreground color preference.
-
-
-
-
- Wrap PlainTextName with color rich text tag.
-
-
-
-
- Wrap PlainTextName with player's font color preference.
-
-
-
-
- If HasNameColor, get RichTextName. Otherwise, get PlainTextNameWithPreferredFontColor.
-
-
-
-
- Get sleek color for UI. If HasNameColor, get NameColor. Otherwise, preferred font color.
-
-
-
-
- Allows Unity events to modify which crafting tags are provided by owning object.
- Must be connected to a Crafting Tag Provider.
-
-
-
-
- GUIDs of Unturned tag assets to modify.
-
-
-
-
- Add listed tags to provided tags.
-
-
-
-
- Remove listed tags from provided tags.
-
-
-
-
- Apply only if this component is active and enabled.
-
-
-
-
- Apply only if this component is inactive and/or disabled.
-
-
-
-
- Always apply.
-
-
-
-
- Get wrapper method rather than Awake because component might be inactive but should still apply modifiers.
-
-
-
-
- Used for item placement in displays / holsters, and whether useable can be placed in primary/secondary slot.
-
-
-
-
- Cannot be placed in primary nor secondary slots, but can be equipped from bag.
-
-
-
-
- Can be placed in primary slot, but cannot be equipped in secondary or bag.
-
-
-
-
- Can be placed in primary or secondary slot, but cannot be equipped from bag.
-
-
-
-
- Only used by NPCs.
-
-
-
-
- Can be placed in primary, secondary, or equipped while in bag.
-
-
-
-
- Project current field of view onto screen compared to desired field of view.
-
-
-
-
- Multiply sensitivity according to scope/optic zoom. For example an 8x zoom has 1/8th sensitivity.
-
-
-
-
- Preserve how sensitivity felt prior to 3.22.8.0 update.
-
-
-
-
- Do not adjust sensitivity while aiming.
-
-
-
-
- When held the cursor is released.
-
-
-
-
- If held while clicking a blueprint action in the item context menu, the crafting menu is bypassed.
-
-
-
-
- Replace instances of with their bound key text.
- Allows server effects to display plugin hotkeys.
-
-
-
-
- Item 0 is "1" and item 9 is "0"
-
-
-
-
- Multiplier for Input.GetAxis("mouse_x") and Input.GetAxis("mouse_y")
-
-
-
-
- When held the cursor is released.
-
-
-
-
- If held while clicking a blueprint action in the item context menu, the crafting menu is bypassed.
-
-
-
-
- Broadcasts once all workshop assets are finished installing.
-
-
-
-
- Called once the server is done registering items it wants to install.
-
- True when running in offline-only mode.
-
-
-
- Request for details about the pending items.
-
-
-
-
- File IDs of all the items we have enqueued for query.
-
-
-
-
- Built from user-specified workshop item IDs, and then expanded as the query results
- arrive with details about any dependent or child items.
-
-
-
-
- File IDs requested by the latest query submitted.
-
-
-
-
- Number of times we've tried re-submitted failed queries.
-
-
-
-
- Built as the valid list of items arrive.
-
-
-
-
- ID of the latest item we requested for download so that we can test if the callback is for us.
-
-
-
-
- Enqueue an item if we have not queried it yet. This guards against querying an item
- that is in two separate collections leading to duplicates.
-
-
-
- True if item was installed from cache.
-
-
-
- Used in offline-only mode.
-
-
-
-
- Prepare a query that will request metadata for all the workshop items we want to install.
- This allows us to check if the items are allowed to be auto-downloaded to this server, and to
- detect any child or dependent items.
-
- Waits for onQueryCompleted.
-
-
-
-
- Re-submit previous query after a query failure.
-
-
-
-
- If level is using underground whitelist then conditionally clamp world-space position.
-
-
-
-
- If level is using underground allowlist then conditionally clamp world-space position.
-
-
-
-
- Used by animals and zombies to teleport to a spawnpoint if outside the map.
-
-
-
-
- Used by housing validation to check item isn't placed underground.
-
-
-
-
- Almost every menu has a container element for its contents which spans the entire screen. This element is then
- animated into and out of view. In the IMGUI implementation this was fine because containers off-screen were not
- processed, but with uGUI they were still considered active. To solve the uGUI performance overhead this class
- was introduced to disable visibility after animating out of view.
-
-
-
-
- Payload for the EffectManager.triggerEffect method.
-
-
-
-
- Required effect to spawn.
-
-
-
-
- World-space position to spawn at.
-
-
-
-
- Local-space scale. Defaults to one.
-
-
-
-
- If running as server should this effect be replicated to clients?
- Defaults to true. Set to false for code that is called on client AND server.
-
-
-
-
- Should the RPC be called in reliable mode? Unreliable effects might not be received.
-
-
-
-
- Was a player directly responsible for triggering this effect?
- For example grenade explosions are instigated by players, whereas zombie acid explosions are not.
- Used to prevent mod damage on the effect prefab from hurting players on PvE servers.
-
-
-
-
- Players within this radius will be sent the effect unless the effect overrides it.
- Defaults to 128.
-
-
-
-
- Get world-space rotation for the effect.
-
-
-
-
- Set world-space rotation for the effect.
-
-
-
-
- World-space rotation for the effect.
-
-
-
-
- If true, rotation was specified by setter methods.
- Required for backwards compatibility because `direction` field is public.
-
-
-
-
- Only send the effect to the given player, if set.
-
-
-
-
- Only send the effect to the given players, if set.
- Otherwise relevantDistance is used.
-
-
-
-
- Only send the effect to the given player, if set.
-
-
-
-
- World-space direction to orient the Z axis along. Defaults to up.
-
-
-
-
- Nelson 2025-04-08: newer code should probably use CachingAssetRef instead. (Or CachingLegacyAssetRef if legacy
- ID support is necessary.)
-
-
-
-
- Whether the asset has been assigned. Note that this doesn't mean an asset with exists.
-
-
-
-
- Is this asset not assigned?
-
-
-
-
- True if resolving this asset reference would get that asset.
-
-
-
-
- Resolve reference with asset manager.
-
-
-
-
- GUID of the asset this is referring to.
-
-
-
-
- Each quality tier has different rarities.
- Legendary: 5% Epic: 20% Rare: 75%
-
-
-
-
- Each item has an equal chance regardless of quality.
-
-
-
-
- Kept because lots of modders have been these scripts in Unity,
- so removing legacy effect id would break their content.
- Note: unsure about this one because it is private and not serialized.
-
-
-
-
- Sorts higher rarity items into the front of the list.
-
-
-
-
- Set handles pivot point according to selection transform.
- Doesn't apply if handle is currently being dragged.
-
-
-
-
- If Unturned is loading this asset bundle from a Steam workshop file but the file ID does not match then
- loading will be canceled. Prevents the asset bundle from being easily copied/stolen.
-
-
-
-
- Same as ownerWorkshopFileId for cases where the asset bundle is allowed in multiple uploads.
-
- Uploading the same asset bundle multiple times is not ideal because the game doesn't handle
- multiple of them with the same name well, and Unity logs an error if an asset bundle with the
- same files is already loaded. That being said, the game doesn't handle dependencies between
- workshop files well either (as of 2023-01-12), so this is perhaps the lesser of two evils.
-
- My understanding is that some mod creators license their work to multiple servers that upload
- the files and this property will make it easier so it doesn't need to be re-exported multiple times.
-
-
-
-
- Helpers on the dedicated server to optimize client prefabs for server usage.
-
-
-
-
- Optimize client prefab for server usage.
-
-
-
-
- If true, object is within a culling volume.
- Name is old and not very specific, but not changing because it's public.
-
-
-
-
- Transform created to preserve objects whose assets failed to load.
- Separate from default transform to avoid messing with old behavior when transform is null.
-
-
-
-
- If true, can be instantiated. Defaults to true.
- Enables mappers to remove culling volumes embedded in objects if they're causing issues.
-
-
-
-
- Can this object's rubble be damaged?
- Allows holiday restrictions to be taken into account. (Otherwise holiday presents could be destroyed out of season.)
-
-
-
-
- Object activation is time-sliced, so this does not necessarily match whether the region is active.
-
-
-
-
- Defaults to true because most objects are not inside a culling volume.
-
-
-
-
- Used by InteractableObjectBinaryState to indicate whether it wants navGameObject to be active. It's only
- active if both IOBS and Rubble want it active.
-
-
-
-
- Used by InteractableObjectRubble to indicate whether it wants navGameObject to be active. It's only
- active if both IOBS and Rubble want it active.
-
-
-
-
- Used if the object asset has weather blend alpha conditions.
-
-
-
-
- Used if the object asset has weather status conditions.
-
-
-
-
- Callback when an individual quest flag changes for the local player.
- Refreshes visibility conditions if the flag was relevant to this object.
-
-
-
-
- Separate from UpdateActiveAndRenderersEnabled so graphics settings can call it.
-
-
-
-
- Assume renderers default to enabled.
-
-
-
-
- Combine two existing 20-byte hashes.
-
-
-
-
- Utility to hash a stream of bytes over several frames.
-
-
-
-
- [0, 1] percentage progress through the stream.
-
-
-
-
- Advance 1MB further into the stream.
-
- True if there is more data, false if complete.
-
-
-
- Get the computed hash after processing stream.
-
-
-
-
- If true, visible in chart and satellite UIs.
-
-
-
-
- Multiplier for explosive projectile damage.
-
-
-
-
- Multiplier for explosive projectile's blast radius.
-
-
-
-
- Multiplier for explosive projectile's initial force.
-
-
-
-
- Should amount be filled to capacity when detached?
-
-
-
-
- Nelson 2024-10-18: Moved to a constant because clients need this value for footsteps and they don't have the
- character controller component.
-
-
-
-
- Jump speed = sqrt(2 * jump height * gravity)
- Jump height = (jump speed ^ 2) / (2 * gravity)
- With 7 speed and 9.81 * 3 gravity = apex height of 1.66496772
-
-
-
-
- Note: Only UpdateCharacterControllerEnabled should modify whether controller is enabled.
- (turning off and back on is fine though)
-
-
-
-
- Valid while isRadiated.
-
-
-
-
- Set according to volume or level global asset fallback.
-
-
-
-
- Was set to true during teleport, and restored to false during the next movement tick.
-
- Server pauses movement when this is set until next client update that matches,
- in order to prevent rubberbanding following a teleport.
-
-
-
-
- Used instead of actual position to avoid revealing admins in "vanish" mode.
-
-
-
-
- Flag for plugins to allow maintenance access underneath the map.
-
-
-
-
- Get seat (if any), otherwise null.
-
-
-
-
- Serverside force player to exit vehicle regardless of safe exit points.
-
- True if player was seated in vehicle.
-
-
-
- Dedicated server simulate while input queue is empty.
-
-
-
-
- Dedicated server simulate driving input.
-
-
-
-
- Client and dedicated server simulate walking input.
-
-
-
-
- In the future this can probably replace checkGround for locally simulated character?
- (Unturned only started using OnControllerColliderHit on 2023-01-31)
-
- 2023-02-28: be careful with .gameObject property because it returns .collider.gameObject
- which can cause a null reference exception. (public issue #3726)
-
-
-
-
- Examine a store listing with description text.
-
-
-
-
- Only visible when cart is not empty.
-
-
-
-
- Convert 32-bit version into 8-char string.
- String is advertised on server list for clients to filter their local map version.
-
-
-
-
- Parse 32-bit version from 8-char string.
- String is advertised on server list for clients to filter their local map version.
-
-
-
-
- These server relay variables redirect the client to another server when the menu opens
- similar to how Steam sets the +connect string on game startup. Allows plugin to redirect
- player to another server on the same network.
-
-
-
- If true the server is immediately joined, otherwise show server details beforehand.
-
-
-
- If player gets too far away from this storage while using it, should we close out?
- False by default for trunk storage because player is inside vehicle.
- Plugins needed to be able to set this to false for "virtual storage" plugins,
- so we default to false and set to true if asset enables it.
-
-
-
-
- Keep all the uGUI Canvas sort orders in the same place.
-
-
-
-
- Manually created canvas in the Menu scene.
-
-
-
-
- Devkit canvas in the Setup scene.
-
-
-
-
- Dropdowns, drag-drop content, tab destinations, etc.
-
-
-
-
- Devkit tooltips should be visible over all other devkit content.
-
-
-
-
- uGUI glazier contains tooltips and cursor regardless of mode (e.g. devkit), so takes absolute priority.
-
-
-
-
- Plugins were spawning canvases with high sort orders that showed over the loading screen, so as a hacky
- workaround we put the uGUI loading screen on a higher sort order than normal glazier.
-
-
-
-
- uGUI cursor needs to show above plugin canvas.
- Unity exposes sort order as an int32, but it is actually an int16, so this value is slightly below the 32767 max.
-
-
-
-
- Worst case scenario, maybe shotgun hit or fast spray SMG.
-
-
-
-
- Tags how client expects server to use a raycast input.
- For example, client may think they fired a gun while server thinks they dequipped the gun,
- so tagging the input prevents the server from handling it as a punch instead.
-
-
-
-
- Resulting transform.position immediately after movement.simulate was called.
-
-
-
-
- Calls to UseableGun.tock per second.
-
-
-
-
- Called for every input packet received allowing plugins to listen for a few special
- keys they can display in chat/effect UIs.
-
-
-
-
- Whether client is currently penalized for potentially using a lag switch. False positives are relatively
- likely when client framerate hitches (e.g. loading dense region), so we only modify their stats (e.g. reduce
- player damage) for a corresponding duration.
-
-
-
-
- Server tracks history of this player's bounding box to assist with validating hits.
- Some padding is added to reduce false positives sliding against walls (substep) and
- player movement inside vehicles.
-
-
-
-
- Get the hit result of a raycast on the server. Until a generic way to address net objects is implemented
- this is how legacy features specify which player/animal/zombie/vehicle/etc they want to interact with.
-
-
-
-
- Ideally simulation frame number would be signed, but there is a lot of code expecting unsigned.
-
-
-
-
- Can be enabled in the unity inspector to test that discarding inputs recovers properly.
-
-
-
-
- askInput is always called the same number of times per second because it's run from FixedUpdate,
- but the spacing between calls can vary depending on network and whether client FPS is low.
-
-
-
-
- If average askInput calls per second exceeds this, we either ignore their request or flat-out kick them.
-
-
-
-
- If average askInput calls per second exceeds this we silently kick them.
-
-
-
-
- Number of times askInput has been called by client.
- Even with huge packet loss, we know that
-
-
-
-
- Realtime that the first call to askInput was made by the client.
-
-
-
-
- Realtime that the previous askInput kick test was performed.
-
-
-
-
- Set rollingWindowIndex to newIndex, zeroing all input counts along the way.
- Important to zero the intermediary indexes in-case server stalled for more than one second.
-
-
-
-
- Notify client there has been a prediction error, so movement needs to be re-simulated.
-
-
-
-
- Notify client old inputs can be discarded because they were predicted correctly.
-
-
-
-
- Not using rate limit attribute because it internally keeps a rolling window limit.
-
-
-
-
- Only bound on dedicated server.
- When dieing in a vehicle this prevents delay handling packets.
-
-
-
-
- Counter of simulation frames before fake lag penalty is disabled.
-
-
-
-
- Player damage multiplier while under penalty for fake lag. (10%)
-
-
-
-
- If set, this item is prioritized over equipped cosmetics. Used by item inspect menu.
- Admittedly, this is very hacked-together. Hopefully rewriting this file someday?
-
-
-
-
- Is cosmetic or skin equipped?
-
-
-
-
- Merging the devkit, legacy, and housing transform handles into one place.
-
-
-
-
- Position and plane handles for each axis.
-
-
-
-
- Disc handles for each axis.
-
-
-
-
- Scale handles for each axis.
-
-
-
-
- Position handles on each side of box.
-
-
-
-
- Scale handles on each side of box which both move and resize the box.
-
-
-
-
- Invoked when handle is clicked so that tool can save selection transform relative to pivot.
- This avoids floating point precision loss of applying delta for each Transformed event.
-
-
-
-
- Invoked when handle is dragged and value actually changes.
-
-
-
-
- Invoked when handle is dragged and value actually changes.
-
-
-
-
- Preferred mode only takes effect while not dragging.
- Bounds modes fall back to non-bounds modes if bounds are not set.
-
-
-
-
- Pivot only takes effect while not dragging. This is to help ensure
- the caller does not depend on the internal pivot values.
-
-
-
-
- Somewhat hacky, useful to make the "copy-paste transform" feature easier to implement.
- Invoke tranformed callback as if pivot were manually dragged to the new position and rotation.
-
-
-
-
- Called before raycasting into the regular physics scene to give transform tool priority.
-
-
-
-
- Update properties that depend on the transform of the camera relative to our handles.
-
-
-
-
- Center of handle.
-
-
-
-
- Rotation of handle.
-
-
-
-
- True if pivotBounds is non-zero.
-
-
-
-
- Mouse currently over this handle.
-
-
-
-
- Mouse currently dragging this handle.
-
-
-
-
- Direction from camera toward pivot.
-
-
-
-
- Multiplier according to distance between camera and pivot to keep handles a constant on-screen size.
-
-
-
-
- Multiplier to flip axis handles according to which side the camera is on.
-
-
-
-
- Pivot rotation when rotation drag started.
-
-
-
-
- Rotating around this axis.
-
-
-
-
- Direction from circle center to edge point.
-
-
-
-
- Point on the edge of the circle.
-
-
-
-
- Drag along this tangent to the circle.
-
-
-
-
- Does having this item show the compass?
-
-
-
-
- Does having this item show the chart?
-
-
-
-
- Does having this item show the satellite?
-
-
-
-
- Ideally component Awake/Start order should not matter, but Unturned's menu is a mess.
- For most players the default order was fine, but it seems it was not deterministic so it would break for some players.
-
-
-
-
- Index into per-connection rate limiting array.
-
-
-
-
- Number of server methods with rate limits.
-
-
-
-
- Log all known net methods.
-
-
-
-
- Useful debug check to ensure every built-in handle is claimed exactly once.
-
-
-
-
- This class gets used from type initializers, so Unity's built-in log is not an option unfortunately.
-
-
-
-
- Not *really* supported but *might* probably work. Adding for public discussion #4176.
-
-
-
-
- Kept for backwards compatibility with plugins.
-
-
-
-
- Can be added to EquipablePrefab item GameObject to receive events.
-
-
-
-
- Invoked when gun is fired.
-
-
-
-
- Invoked when gun begins reload sequence.
-
-
-
-
- Invoked when gun begins hammer sequence.
-
-
-
-
- Invoked when gun begins aiming.
-
-
-
-
- Invoked when gun ends aiming.
-
-
-
-
- Invoked when Magazine game object is activated.
-
-
-
-
- Invoked when Magazine game object is activated.
-
-
-
-
- TextMesh Pro uGUI text components.
-
-
-
-
- TextMesh Pro uGUI input field components.
-
-
-
-
- Exposed for Rocket transition to modules backwards compatibility.
-
-
-
-
- This effect makes a nice clicky sound and lots of older code used it,
- so I moved it into a little helper method here.
-
-
-
- If true, client will download the image once and re-use it for subsequent calls.
- If true, client will destroy any cached copy of the image and re-acquire it.
-
-
-
- Notify server that a button was clicked in a clientside effect.
-
-
-
-
- Notify server that an input field text was committed.
-
-
-
-
- If an effect with a given key exists, destroy it.
-
-
-
-
- parent should only be set if that system also calls ClearAttachments, otherwise attachedEffects will leak memory.
-
-
-
-
- Helper for sending and spawning effects.
- Newer and refactored code should use this method.
-
-
-
-
- Objects registered so that they can be destroyed all at once if needed.
- May be null if they were destroyed with a timer.
-
-
-
-
- Plugin UIs spawned by the server.
-
-
-
-
- Called prior to destroying effect (if attached) to free up attachments list.
-
-
-
-
- Called after attaching effect so that it can be returned to pool when/if parent is destroyed.
-
-
-
-
- Maps root transform to any attached effects.
- This allows us to detach effects when returning a barricade/structure to their pool.
-
-
-
-
- Recycled lists for attachedEffects dictionary.
-
-
-
-
- Find materials in finished ragdoll and replace them with the appropriate effect.
-
-
-
-
- Context for the Assets.ReportError methods.
- Nelson 2024-11-20: Converted from directly using asset to this interface so that asset-related features can
- more easily log warnings to the in-game menu.
-
-
-
-
- Format text to prefix any errors reported in this context. (e.g., this asset's name and ID)
-
-
-
-
- Alerts any agents in the area to the player if needed.
-
- The player causing this alert.
- The position of the alert.
- The detection radius.
- Whether or not to hide.
-
-
-
- Alerts any agents in the area.
-
- The position of the alert.
- The detection radius.
-
-
-
- Report success or failure from game systems, conditionally compiled into the Windows 64-bit build.
-
-
-
-
- Call when the server is done all loading without running into errors.
- Ignored if not running in CI mode, otherwise exits the server successfully with error code 0.
-
-
-
-
- Call when the server encounters any error.
- Ignored if not running in CI mode, otherwise exits the server with error code 1.
-
-
-
-
- Entry in the MenuPlayServerCurationRulesUI list.
-
-
-
-
- Seconds to wait between burning one unit of fuel.
-
-
-
-
- Number of seconds to finish growing.
-
-
-
-
- Item legacy ID to grant the player.
-
-
-
-
- Uses unscaled time (realtime) because "planted" time is a timestamp.
-
-
-
-
- Created when a chat entry is received from the server for display in the UI.
-
-
-
-
- Player who sent the message, or null if it was a plugin broadcast.
- Used to retrieve player avatar.
-
-
-
-
- Web address of a 32x32 .png to use rather than a platform avatar.
- Only used if not null/empty.
-
-
-
-
- How the message was sent through global, local or group.
- Mostly deprecated because that status isn't formatted into texts anymore.
-
-
-
-
- Default font color to use unless overridden by rich text formatting.
-
-
-
-
- Whether this entry should enable rich text formatting.
- False by default because players abuse font size and ugly colors.
-
-
-
-
- Text to display for this message.
-
-
-
-
- When the entry was locally received from the server.
-
-
-
-
- How many seconds ago this message was locally received from the server.
-
-
-
-
- Event for plugins to be notified when a server update is detected.
-
- Pandahut requested this because they run the game as a Windows service and need to shutdown
- through their central management system rather than per-process.
-
-
-
-
- Manages scheduled restart for dedicated server.
-
-
-
-
- Sorted from low to high.
-
-
-
-
- Sorted from low to high.
-
-
-
-
- Non-NPC object the player can talk with.
-
-
-
-
- Broadcasts for plugins before applying consumeable stats to another player.
-
-
-
-
- Broadcasts for plugins after applying consumeable stats to another player.
-
-
-
-
- Broadcasts for plugins before applying consumeable stats to self.
-
-
-
-
- Broadcasts for plugins after applying consumeable stats to self.
-
-
-
-
- Called serverside when using consumeable on another player.
-
-
-
-
- Called by owner and server when using consumeable on self.
-
-
-
-
- If false, a deny rule matched the input.
-
-
-
-
- If true, at least one rule matched the input.
-
-
-
-
- If set, this was the final match.
-
-
-
-
- Optional. If set, filled with any rules that matched.
-
-
-
-
- If >0, this link was added by live config.
-
-
-
-
- Determines how a server that doesn't match any rules is handled.
-
-
-
-
- Include in the list. Default.
-
-
-
-
- Exclude from list. (same as EServerListCurationDenyMode.Hide)
-
-
-
-
- Move to the bottom of the list. Similar to EServerListCurationDenyMode.MoveToBottom, but the server is
- still clickable. I.e., low priority.
-
-
-
-
- Called earlier during startup to try and have web lists ready by the time server browser is opened.
-
-
-
-
- Used to detect asset refresh.
-
-
-
-
- If true, list needs to be sorted.
-
-
-
-
- If true, MergeRules should be called before doing any filtering.
-
-
-
-
- If false, LoadWebUrls still needs to be called.
-
-
-
-
- For non-repeat weapons the "Use" audio clip is played once time reaches this point.
-
-
-
-
- Catch exceptions to prevent a broken powerable from breaking all the other powerable items in the area.
-
-
-
-
- Unsorted list of world space generators turned-on and fueled.
-
-
-
-
- Allows Unity events to broadcast text chat messages from the server.
-
-
-
-
- Text to use when SendDefaultTextChatMessage is invoked.
-
-
-
-
- URL of a png or jpg image file to show next to the message.
-
-
-
-
- Text color when rich text does not override with color tags.
-
-
-
-
- Should rich text tags be parsed?
- e.g. bold, italic, color
-
-
-
-
- Allows Unity events to spawn vehicles.
-
-
-
-
- Recoil magnitude multiplier while the gun is aiming down sights.
-
-
-
-
- Multiplier for gun's Aim_In_Duration.
-
-
-
-
- For backwards compatibility this is *subtracted* from the gun's firerate, so a positive number decreases
- the time between shots and a negative number increases the time between shots.
-
-
-
-
- Multiplier for normal bullet damage.
-
-
-
-
- Multiplier for bullet acceleration due to gravity.
-
-
-
-
- Movement speed multiplier while the gun is aiming down sights.
-
-
-
-
- If true, gun can damage entities with Invulnerable tag. Defaults to false.
-
-
-
-
- Name to use when instantiating attachment prefab.
- By default the asset guid is used, but it can be overridden because some
- modders rely on the name for Unity's legacy animation component. For example
- in Toothy Deerryte's case there were a lot of duplicate animations to work
- around the guid naming, simplified by overriding name.
-
-
-
-
- Returns true if calibers list contains provided caliber ID.
-
-
-
-
- Returns true if calibers list contains any of the provided caliber IDs.
-
-
-
-
- Note: If barricade is attached to a vehicle this is the local rotation.
-
-
-
-
- Extensions to the built-in Physics class.
-
- Shares similar functionality to the SDG.Framework.Utilities.PhysicsUtility class, but that should be moved here
- because the "framework" is unused and and the long name is annoying.
-
-
-
-
- Wrapper that respects landscape hole volumes.
-
-
-
-
- Wrapper that respects landscape hole volumes.
-
-
-
-
- Wrapper that respects landscape hole volumes.
-
-
-
-
- Wrapper that respects landscape hole volumes.
-
-
-
-
- Button in a list of levels.
-
-
-
-
- Button in the list of levels for server browser filters.
-
-
-
-
- Button in the list of levels for the map editor.
-
-
-
-
- Base class for IMGUI implementations of primitive building block widgets.
-
-
-
-
- Position passed into the GUI draw methods.
-
-
-
-
- Hashes for Windows, Linux, and Mac asset bundles.
- Only loaded on the dedicated server. Null otherwise.
-
-
-
-
- Does given hash match any of the platform hashes?
-
-
-
-
- Compares client asset bundle hash with server known hashes.
-
-
-
-
- Called by asset startup to cache which bundles are eligible for hashing.
-
-
-
-
- Used in a test scene to quickly test all Glazier features.
-
-
-
-
- Reference type for testing SleekList.
-
-
-
-
- Uses the Win32 API to force a console to be created and destroyed.
-
-
-
-
- Should we manually create and destroy a Win32 console?
- Useful for IO on Windows desktop, but not as much for dedicated machines.
-
-
-
-
- Allocate Windows console if enabled.
-
-
-
-
- Free Windows console if enabled.
-
-
-
-
- A CTRL+C signal was received, either from keyboard input or from a signal generated by the GenerateConsoleCtrlEvent function.
-
-
-
-
- A CTRL+BREAK signal was received, either from keyboard input or from a signal generated by GenerateConsoleCtrlEvent.
-
-
-
-
- A signal that the system sends to all processes attached to a console when the user closes the console
- (either by clicking Close on the console window's window menu, or by clicking the End Task button command from Task Manager).
-
-
-
-
- Tracks whether we should show the "NEW" label on listings and item store button.
-
-
-
-
- Track that player has seen the new crafting blueprints.
-
-
-
-
- Track that player has seen the page with all new listings.
-
-
-
-
- Has player seen the given listing?
-
-
-
-
- Track that the player has seen the given listing.
-
-
-
-
- Absolute path to directory containing bundle and .dat file.
-
-
-
-
- Name of the actual asset bundle file, e.g. Hawaii.unity3d
- Asset bundle should be next to this config file.
-
-
-
-
- assetBundleName without final .* extension.
-
-
-
-
- Prefixed to all asset paths loaded from asset bundle.
- Final path is built from assetPrefix + pathRelativeToBundlesFolder + assetName,
- e.g. Assets/Hawaii/Bundles + /Objects/Large/House/ + Object.prefab
-
-
-
-
- Custom asset bundle version used by Unturned to detect whether imports need
- fixing up because they were exported from an older version of Unity.
-
-
-
-
- Get absolute path to asset bundle file.
-
-
-
-
- Get absolute path to file with per-platform hashes.
-
-
-
-
- Insert path prefix if set.
-
-
-
-
- When to use this instead of formatAssetPath? MasterBundleReference and AudioReference repeatedly invoke
- this string formatting (e.g., footstep sounds) and benefit from not generating that garbage.
-
-
-
-
- Loaded asset bundle.
-
-
-
-
- Hash of loaded asset bundle file.
- This is per-platform, so the server loads a hash file with all platform hashes.
-
-
-
-
- True if the server .hash file exists.
- Hash file is not used by client, but client uses whether it exists to decide whether to include asset bundle hash in asset hash.
-
-
-
-
- Hashes for Windows, Linux, and Mac asset bundles.
- Only loaded on the dedicated server. Null otherwise.
-
-
-
-
- On the surface level this is rather silly.
- The primary reason for it is reducing garbage created by repeated calls to formatAssetPath.
- Theoretically we could use this for caching redirected paths if/when that feature is added.
-
-
-
-
- Load the underlying asset bundle.
-
-
-
-
- If true, the associated asset bundle couldn't be loaded and was instead copied from another config.
-
-
-
-
- If the type name has been redirected this method will be called recursively until the most recent name is found and returned.
-
-
-
-
- After the key "limit" is loaded we stop reading.
-
-
-
-
- Path to the folder which contains the Unity player executable.
-
-
-
-
- Called by loading after landscapes (and legacy conversion) have been loaded.
-
-
-
-
- True is solid and false is empty.
-
-
-
-
- Marked true when level editor or legacy hole volumes modify hole data.
- Defaults to false in which case holes do not need to be saved.
-
- Initially this was not going to be marked by hole volumes because they can re-generate the holes, but saving
- hole volume cuts is helpful when upgrading to remove hole volumes from a map.
-
-
-
-
- If true, SetHeightsDelayLOD was called without calling SyncHeightmap yet.
-
-
-
-
- If true, SetHolesDelayLOD was called without calling SyncTexture yet.
-
-
-
-
- Heightmap-only data used in level editor. Refer to Landscape.DisableHoleColliders for explanation.
-
-
-
-
- Call this when done changing material references to grab their textures and pass them to the terrain renderer.
-
-
-
-
- If a heightmap coordinate is out of bounds the tile/heightamp coordinate will be adjusted so that it is in bounds again.
-
-
-
-
- If a splatmap coordinate is out of bounds the tile/splatmap coordinate will be adjusted so that it is in bounds again.
-
-
-
-
- Hacky workaround for height and material brushes in editor. As far as I can tell in Unity 2019 LTS there is no method to ignore
- holes when raycasting against terrain (e.g. when painting holes), so we use a duplicate TerrainData without holes in the editor.
-
-
-
-
- Is point (on XZ plane) inside a masked-out pixel?
-
-
-
- If the highest weight layer is ignoreLayer then the next highest will be returned.
-
-
- If the highest weight layer is ignoreLayer then the next highest will be returned.
-
-
-
- Appends heightmap vertices to points list.
-
-
-
-
- Appends heightmap vertices to points list.
-
-
-
-
- Call this after you're done adding new tiles.
-
-
-
-
- Call this to sync a new tile up with nearby tiles.
-
-
-
-
- Capturing ortho view of map, so we raise the terrain to max quality.
-
-
-
-
- Finished capturing ortho view of map, so we restore the terrain to preferred quality.
-
-
-
-
- Nelson 2025-03-10: I want to experiment whether this fixes a strange terrain hole painting bug (public issue
- #4851) without potentially introducing crashes for other players. (Per an earlier, undated comment we'd
- run into a SetHolesDelayLOD-related crash in 2019 LTS.)
-
-
-
-
- Directly blend current value toward target value.
-
-
-
-
- Only blend current value toward target value if current is greater than target.
-
-
-
-
- Only blend current value toward target value if current is less than target.
-
-
-
-
- If true, write to LevelHierarchy file.
- False for externally managed objects like legacy lighting WaterVolume.
-
-
-
-
- If true, editor tools can select and transform.
- False for items like the object-owned culling volumes.
-
-
-
-
- Hold onto collider and gameobject separately because collider isn't necessarily attached to gameobject.
-
-
-
-
- Kept because lots of modders have been using this script in Unity,
- so removing legacy effect id would break their content.
-
-
-
-
- If per-weather mask AND is non zero the weather will blend in.
-
-
-
-
- Distinguishes from zero falloff which may be useful deep in a cave.
-
-
-
-
- Higher priority volumes override lower priority volumes.
-
-
-
-
- When falloff is OFF, how long to fade in audio by time.
-
-
-
-
- When falloff is OFF, how long to fade out audio by time.
-
-
-
-
- When falloff is OFF, how long to fade in audio by time.
-
-
-
-
- When falloff is OFF, how long to fade out audio by time.
-
-
-
-
- When falloff is OFF, how long to fade in lighting by time.
-
-
-
-
- When falloff is OFF, how long to fade out lighting by time.
-
-
-
-
- Used by lighting to get the currently active effect.
-
-
-
-
- Open a new transaction group which stores multiple undo/redoable actions, for example this would be called before moving an object.
-
-
-
-
- Close the pending transaction and finalize any change checks.
-
-
-
-
- Clear the undo/redo queues.
-
-
-
-
- If false this transaction is ignored. If there were no changes at all in the group it's discarded.
-
-
-
-
- Called when history buffer is too long so this transaction is discarded.
-
-
-
-
- Save the state of all the fields and properties on this object to the current transaction group so that they can be checked for changes once the transaction has ended.
-
-
-
-
- Kept because lots of modders have been using this script in Unity,
- so removing legacy effect id would break their content.
-
-
-
-
- Called when we position, rotate or scale this transform.
-
-
-
- Identical to this object.
-
-
-
- Devkit objects are now converted to regular objects and excluded from the file when re-saving.
-
-
-
-
- Hacked to check horizontal distance.
-
-
-
-
- Nelson 2024-06-10: Changed this from guid to string because Unity serialization doesn't support guids
- and neither does the inspector. (e.g., couldn't duplicate reward volume without re-assigning guid)
-
-
-
-
- If true, vehicles overlapping volume will check conditions and (if met) grant rewards to passengers.
-
-
-
-
- ModuleHook looks for module entry/exit points, then calls when enabled and when disabled.
-
-
-
-
- Register components of this module.
-
-
-
-
- Cleanup after this module.
-
-
-
-
- Holds module configuration.
-
-
-
-
- Whether to load assemblies.
-
-
-
-
- Directory containing Module file, set when loading.
-
-
-
-
- Path to the Module file, set when loading.
-
-
-
-
- Used for module dependencies.
-
-
-
-
- Nicely formatted version, converted into .
-
-
-
-
- Used for module dependencies.
-
-
-
-
- Modules that must be loaded before this module.
-
-
-
-
- Relative file paths of .dlls to load.
-
-
-
-
- Wraps module assembly and handles initialization.
-
-
-
-
- True when config is enabled and dependencies are enabled.
-
-
-
-
- Metadata.
-
-
-
-
- Assembly files loaded.
-
-
-
-
- Types in the assemblies of this module. Refer to this for types rather than the assemblies to avoid exception and garbage.
-
-
-
-
- How far along the initialization to shutdown lifecycle this module is.
-
-
-
-
- Runs before everything else to find and load modules.
-
-
-
-
- Temporarily contains Unturned's code untils it's moved into modules.
-
-
-
-
- Temporarily contains types.
-
-
-
-
- Should module assemblies be loaded?
-
-
-
-
- Called once after all startup enabled modules are loaded. Not called when modules are initialized due to enabling/disabling.
-
-
-
-
- Called once after all modules are shutdown. Not called when modules are shutdown due to enabling/disabling.
-
-
-
-
- Find modules containing an assembly with the Both_Required role.
-
- Modules to append to.
-
-
-
- Find module using dependency name.
-
-
-
-
-
- These are *.dll files discovered in the modules folder.
-
-
-
-
- Should missing DLLs be logged?
- Opt-in because RocketMod has its own handler.
-
-
-
-
- Should vanilla search for *.dll files?
- Can be turned off in case it conflicts with third-party search mechanism.
-
-
-
-
- If set, search for .dll and .module files in this directory instead of in Unturned/Modules.
-
-
-
-
- Event for plugin frameworks (e.g., Rocket) to override AssemblyResolve handling.
-
-
-
-
- Depending on the platform, assemblies are found in different directories.
-
- Root folder for modules.
-
-
-
- Search Modules directory for .dll files and save their AssemblyName to discoveredNameToPath.
-
-
-
-
- Search Modules directory for .module files and load them.
-
-
-
-
- Orders configs by dependency and removes those that are missing files.
-
-
-
-
- Sorts modules by dependencies.
-
-
-
-
- Nicely formatted version, converted into .
-
-
-
-
- Used for module dependencies.
-
-
-
-
- Requested by Trojaner. LoadFile locks the file while in use which prevents OpenMod from updating itself.
-
-
-
-
- Equivalent to MonoBehaviour.Update
-
-
-
-
- Equivalent to MonoBehaviour.FixedUpdate
-
-
-
-
- Useful when caller is not a MonoBehaviour, or coroutine should not be owned by a component which might get
- deactivated. For example attached effects destroy timer should happen regardless of parent deactivation.
-
-
-
-
- Stop a coroutine started by InvokeAfterDelay.
-
-
-
-
- For use with PoolablePool when no special construction is required.
-
-
-
-
- Called when this instance is getting claimed.
-
-
-
-
- Called when this instance is returned to the pool.
-
-
-
-
- Number of items in underlying queue.
-
-
-
-
- Pool of objects that implement the IPoolable interface.
-
- Useful for types that do not need special construction,
- and want notification when claimed and released.
-
-
-
-
- Not necessarily cheap to calculate - probably best to cache.
-
-
-
-
- Internal cubic meter volume.
-
-
-
-
- Surface square meters area.
-
-
-
-
- Nelson 2024-11-11: Collider may have been destroyed by an unexpected mod script configuration (or perhaps
- simply missing in the first place). Should fix/prevent public issue #4749.
-
-
-
-
- Replacement foliage storage with all tiles in a single file.
-
- In the level editor all tiles are loaded into memory, whereas during gameplay the relevant tiles
- are loaded as-needed by a worker thread.
-
-
-
-
- Entry point for worker thread loop.
-
-
-
-
- Order is important because TileBecameRelevant is called from the closest tile outward.
-
-
-
-
- Offsets into blob for per-tile data.
-
-
-
-
- Tiles save an index into this list rather than guid.
-
-
-
-
- Offset from header data.
-
-
-
-
- Data-only FoliageInstanceList shared between threads.
-
-
-
-
- Data-only FoliageTile shared between threads.
-
-
-
-
- Ready to be released to the worker thread during the next lock.
-
-
-
-
- Mutex lock. Only used in the main thread Update loop and worker thread loop.
-
-
-
-
- SHARED BY BOTH THREADS!
- Coordinates requested by main thread for worker thread to read.
- This is a list because while main thread is busy the worker thread can continue reading.
-
-
-
-
- SHARED BY BOTH THREADS!
- Tiles read by worker thread ready to be copied into actual foliage tiles on main thread.
-
-
-
-
- SHARED BY BOTH THREADS!
- Main thread has finished using this tile data and it can be released back to the pool on the worker thread.
- This is a list because main thread could have populated multiple foliage tiles while the worker thread was busy reading.
-
-
-
-
- Lifecycle:
- 1. Worker thread claims or allocates data.
- 2. Worker thread passes data to main thread.
- 3. Main thread copies data over to actual foliage tile.
- 4. Main thread passes data back to worker thread.
- 5. Worker thread releases data back to pool.
-
-
-
-
- Does this tile contain any placed foliage?
-
-
-
-
- If true, mesh is not loaded when clutter is turned off in graphics menu.
- Defaults to false.
-
-
-
-
- Foliage to use during the Christmas event instead.
-
-
-
-
- Foliage to use during the Halloween event instead.
-
-
-
-
- Get asset ref to replace this one for holiday, invalid to disable, or null if it should not be redirected.
-
-
-
-
- Responsible for reading and writing persistent foliage data.
-
-
-
-
- Called after creating instance for level, prior to any loading.
- Not called when creating the auto-upgrade instance for editorSaveAllTiles.
-
-
-
-
- Called prior to destroying instance.
-
-
-
-
- Called when tile wants to be drawn.
-
-
-
-
- Called when tile no longer wants to be drawn.
-
-
-
-
- Called during Unity's Update loop.
-
-
-
-
- Load known tiles during level load.
-
-
-
-
- Save tiles during level save.
-
-
-
- Should angle limits and subtractive volumes be respected? Disabled when manually placing individually.
- If true, trees do a sphere overlap to prevent placement inside objects.
-
-
-
- Pick a point inside the bounds to test for foliage placement. The base implementation is completely random, but a blue noise implementation could be very nice.
-
-
-
-
- Legacy implementation of foliage storage, with one file per tile.
-
-
-
- True if other IFoliageSurface methods can be called.
-
-
-
- Settings configured when starting the bake.
-
-
-
-
- Implementation of tile data storage.
-
-
-
-
- Nelson 2025-04-22: instanced foliage rendering is a decent chunk of CPU time. In retrospect this seems like
- an obvious optimization: Graphics.DrawMeshInstanced accepts up to 1023 instances per call. Each tile
- groups instances in lists of up to 1023, but often isn't that high. Now, we collect instances until we
- hit the 1023 limit. This is particularly useful for sparse variants like colored flowers.
- With a consistent camera transform ("/copycameratransform") on an upcoming map remaster I went from between
- 0.72-0.8 ms on my PC to 0.55-0.6 ms!
-
-
-
-
- 2022-04-26: drawTiles previously looped over a square [-N, +N] from the upper-left to the bottom-right,
- and each tile checked radial distance. We can improve over this by pre-computing the radial offsets and
- starting from the center to improve responsiveness. N is [1, 5]
-
-
-
-
- Must be within [0, MAX_MATRICES_PER_BATCH] range.
-
-
-
- Version number associated with this particular system instance.
-
-
-
-
- Automatically placing foliage onto tiles in editor.
-
-
-
-
- 2022-04-26: this used to be environment layer, but "scope focus foliage" can draw outside that render distance
- so we now use the sky layer which is visible up to the far clip plane.
-
-
-
-
- Whether add can be called from the inspector.
-
-
-
-
- Whether remove can be called from the inspector.
-
-
-
-
- Called when the inspector adds an element.
-
-
-
-
- Called when the inspector removes an element.
-
-
-
-
- Called when the inspector sets an element to a different value.
-
-
-
-
- Whether add can be called from the inspector.
-
-
-
-
- Whether remove can be called from the inspector.
-
-
-
-
- All water tiles and the planar reflection component reference this material.
-
-
-
-
- If true rain will be occluded below the surface on the Y axis.
-
-
-
-
- Flag for legacy sea level.
-
-
-
-
- Water volume marked as being sea level.
-
-
-
- Null if under old water level, otherwise the volume.
-
-
-
- Find the water elevation underneath point, or above point if underwater.
-
-
-
-
- Reads data into the data array.
-
- The file path to read from.
- The array to read into.
- Whether the read succesfully executed.
-
-
-
- Writes data out of data array.
-
- The file path to write to.
- The array to write from.
- The length of the array with data.
- Whether the write succesfully executed.
-
-
-
- Checks the size of a file.
-
- The file path to check.
- The size of the file.
- Whether the check succesfully executed.
-
-
-
- Checks whether the path already exists.
-
- The file path to check.
- Whether the file exists.
- Whether the check succesfully executed.
-
-
-
- Deletes the path.
-
- The file path to delete.
- Whether the deletion succesfully executed.
-
-
-
- For once the provider interface actually came in useful!
- Fakes loading the Steam remote storage files from a separate folder.
-
-
-
-
- Triggered when the user's statistics are available.
-
-
-
-
- Checks the current user's statistics with this name.
-
- The name of the statistic.
- The value of the statistic.
- Whether the check succesfully executed.
-
-
-
- Assigns the current user's statistics with this name.
-
- The name of the statistic.
- The value of the statistic.
- Whether the check succesfully executed.
-
-
-
- Checks the current user's statistics with this name.
-
- The name of the statistic.
- The value of the statistic.
- Whether the check succesfully executed.
-
-
-
- Assigns the current user's statistics with this name.
-
- The name of the statistic.
- The value of the statistic.
- Whether the check succesfully executed.
-
-
-
- Requests the user's statistics.
-
- Whether the refresh succesfully executed.
-
-
-
- Triggered when the global statistics are available.
-
-
-
-
- Checks the global total of the statistic with this name.
-
- The name of the statistic.
- The value of the statistic.
- Whether the check succesfully executed.
-
-
-
- Checks the global total of the statistic with this name.
-
- The name of the statistic.
- The value of the statistic.
- Whether the check succesfully executed.
-
-
-
- Requests the global statistics.
-
- Whether the refresh succesfully executed.
-
-
-
- Current user statistics implementation.
-
-
-
-
- Current global statistics implementation.
-
-
-
-
- Current client multiplayer implementation.
-
-
-
-
- Current server multiplayer implementation.
-
-
-
-
- Information about currently connected server.
-
-
-
-
- Whether a server is currently connected to.
-
-
-
-
- Whether connection attempts are being made.
-
-
-
-
- Network buffer memory stream.
-
-
-
-
- Network buffer memory stream reader.
-
-
-
-
- Network buffer memory stream writer.
-
-
-
-
- Connect to a server.
-
- Server to join.
-
-
-
- Disconnect from current server.
-
-
-
-
- Receive a packet from an entity across the network.
-
- Sender of data.
-
-
- Whether any data was read.
-
-
-
- Send a packet to an entity across the network.
-
- Recipient of data.
- Packet to send.
- Size of data in array.
-
-
-
- Send a packet to an entity across the network.
-
- Recipient of data.
- Packet to send.
- Size of data in array.
- Type of send to use.
-
-
-
- Information about currently hosted server.
-
-
-
-
- Whether a server is open.
-
-
-
-
- Network buffer memory stream.
-
-
-
-
- Network buffer memory stream reader.
-
-
-
-
- Network buffer memory stream writer.
-
-
-
-
- Open a new server.
-
-
-
-
- Close an existing server.
-
-
-
-
- Receive a packet from an entity across the network.
-
- Sender of data.
-
-
- Whether any data was read.
-
-
-
- Send a packet to an entity across the network.
-
- Recipient of data.
- Packet to send.
- Size of data in array.
-
-
-
- Send a packet to an entity across the network.
-
- Recipient of data.
- Packet to send.
- Size of data in array.
- Type of send to use.
-
-
-
- Whether the user has their overlay enabled.
-
-
-
-
- Requests the user's inventory.
-
- Called when the request is completed.
- Handle for checking the owner of the callback.
-
-
-
- Requests a check for promotional items.
-
- Called when the request is completed.
- Handle for checking the owner of the callback.
-
-
-
- Converts the input items into the output items.
-
- Items to be converted from.
- Item amounts to be consumed.
- Items to be converted to.
- Item amounts to be generated.
- Called when the exchange is completed.
-
-
-
- Whether the user has their overlay enabled.
-
-
-
-
- View a package on the store.
-
- Package to view.
-
-
-
- Checks whether the current user has an achievement with this name.
-
- The name of the achievement.
- Whether the user has this achievement.
- Whether the check succesfully executed.
-
-
-
- Assigns the current user an achievement with this name.
-
- The name of the achievement.
- Whether the assignment succesfully executed.
-
-
-
- Whether the user has their overlay enabled.
-
-
-
-
- Initialize this service's external API. Should be called before using.
-
-
-
-
- Update this service's external API. Should be called every frame.
-
-
-
-
- Shutdown this service's external API. Should be called before closing the program.
-
-
-
-
- Used to show a warning when a lot of servers are blocked by curation list.
-
-
-
-
- Reset after starting connection attempt, so set to true afterwards to auto join the server.
-
-
-
-
- EItemType
-
-
-
-
- Nelson 2024-12-06: This was added 2023-06-19, so unfortunately it will be inaccurate for older items.
-
-
-
-
- This enum exists for sorting items based on rarity, and is derived from quality.
- Quality order cannot be changed due to loading from older files, but this one is ordered
- from lowest rarity to highest rarity and should match entries in quality.
-
-
-
-
- Response data from IInventoryService GetInventory web API.
-
- One player's inventory became so large that the Steam client's built-in GetInventory fails,
- so as temporary fix we can send them a json file with their inventory.
-
-
-
-
- Json string representation of the contained items.
-
-
-
-
- Parse response from json file.
-
-
-
-
- Details of a workshop item that the game may want to refer to later.
- Cached during client startup after getting installed items, and while
- downloading UGC for the dedicated server.
-
-
-
-
- Banned workshop files are shown in red.
-
-
-
-
- Used on dedicated server to test whether map has been updated, and whether local copy of file is out-of-date.
-
-
-
-
- Some workshop thieves use an empty title, in which case we show the file ID as title text.
-
-
-
-
- Used when transitioning Unity versions breaks asset bundles. Replaced by AssetBundleVersion const values.
-
-
-
-
- Workshop item key-value tag storing the version number.
-
-
-
-
- Maps published file id to name, version, etc.
-
-
-
-
- Get compatibility version from workshop query, or zero if unset.
-
-
-
-
- Save the details from a workshop query for lookup later.
- Allows game to inspect the installed files before deciding if they are
- compatible, since maps and localization are not affected by unity upgrades.
- Previously the compatibility test occurred before downloading the content.
-
-
-
-
- Get cached workshop item details.
-
-
-
-
- Should caller skip loading a given workshop file?
-
- Used to skip workshop version of map if the map is locally installed,
- e.g. Canyon Arena moved to workshop and auto-subscribed.
-
-
-
-
- Helper for downloadServerItems.
- Called for each workshop item we want to download for the server.
-
-
-
-
- Called once we know which items the server is allowed to use (queryServerItems),
- or the query has failed in which case we proceed with all items it told us.
-
-
-
-
- Is currently connected server allowed to auto-download the workshop item?
- Requested by mod authors so that they can whitelist/blacklist access.
-
-
-
-
- Successfully queried details of the items current server is using.
- Ensure server has permission to use these items, then proceed with downloading.
- Also caches item titles for use on the loading screen.
-
-
-
-
- IO or bad result occurred when querying items the current server is using.
- We do not know the file details, but we proceed with downloading them all.
-
-
-
-
- File IDs the client knows the server is using. Fallback in-case the query fails.
-
-
-
-
- IP of the currently connected server, or zero if unable to retrieve from network system.
- Used for testing download restrictions.
-
-
-
-
- Number of items currently connected server was not authorized to download.
-
-
-
-
- Called prior to downloading, and after a connection failure.
-
-
-
-
- Client now knows the published file IDs the server is using, but
- queries the workshop for additional information before installing.
-
-
-
-
- Callback when player subscribes to an item and it finishes downloading.
- Different than the game-managed DownloadItem calls.
-
-
-
-
- Get path to an already-installed workshop item.
-
- True if the path was found.
-
-
-
- Used during startup to register subscribed workshop items.
- Given a workshop item file id, if its files exist on disk then register it.
-
-
-
-
- Workshop file ids we were locally subscribed to during startup.
- These items are queried for compatibility before registering.
-
-
-
-
- Called when subscribed items callback was successful to register all compatible files.
-
-
-
-
- Called when subscribed items callback did not execute as expected,
- maybe because steam's servers are offline. In this case we can't check
- compatibility so we register all the locally subscribed items as compatible.
-
-
-
-
- Register any localization-type workshop content before waiting for the steam callbacks.
- Important so that localizations are available for loading screens and whatnot during startup.
- Any items we register now will be skipped later.
-
-
-
-
- If specified, player's workshop file subscriptions are not registered at startup.
-
-
-
-
- Map of subscriptions added/removed by the player through the in-game client API, as opposed to the web browser.
-
-
-
-
- Called by us when we subscribe to an item from in-game.
- If item already exists on-disk steam doesn't always call onItemInstalled, so we do our own check and potentially load.
-
-
-
-
- Current achievements implementation.
-
-
-
-
- Current browser implementation.
-
-
-
-
- Current cloud implementation.
-
-
-
-
- Current community implementation.
-
-
-
-
- Current economy implementation.
-
-
-
-
- Current matchmaking implementation.
-
-
-
-
- Current multiplayer implementation.
-
-
-
-
- Current statistics implementation.
-
-
-
-
- Current store implementation.
-
-
-
-
- Current translation implementation.
-
-
-
-
- Current workshop implementation.
-
-
-
-
- Initialize this provider's external API. Should be called before using provider features.
-
- Thrown if initializing fails.
-
-
-
- Update this provider's external API. Should be called every frame if using provider features.
-
-
-
-
- Shutdown this provider's external API. Should be called before closing the program if using provider features.
-
-
-
-
- Parse dynamic tag mythic effect.
-
- ID of mythical asset, or zero if not in tags.
-
-
-
- For purchasable box and bundle itemdefs this maps their itemdefid to the list of itemdefids in their desc.
-
-
-
-
- Invoked after a successful exchange with the newly granted items.
-
-
-
-
- Invoke after a succesful purchase from the item store.
-
-
-
-
- Purchase result does not have a handle, so we guess based on when it arrives.
-
-
-
-
- Find the first instanceId of a given itemDefId.
-
-
-
-
- Count quantity of a given itemDefId.
-
-
-
-
- Find certain quantity of given itemDefId.
-
-
-
-
- Does itemdefid exist in the EconInfo.json file?
-
-
-
-
- Get item with an exchange recipe for the appropriate number of scraps.
-
-
-
-
- Get list of itemdefids mentioned in purchasable box or bundle item description.
-
-
-
-
- One player's inventory became so large that the Steam client's built-in GetInventory fails,
- so as temporary fix we can send them a json file with their inventory.
-
-
-
-
- Add an item locally that we know exists in the online inventory, but is just a matter of waiting for it.
-
-
-
-
- Remove an item locally that we know no longer exists in the online inventory.
-
-
-
-
- Update our local version of an item that we know has changed, but we are waiting for a full refresh.
-
-
-
-
- Callback when client knows which items were crafted or exchanged.
-
-
-
-
- Callback when client thinks result was from purchase.
-
-
-
-
- 2022-01-01 it does not seem to be documented by Steam, but we get SteamInventoryResultReady callbacks
- for external events like AddItem calls, so we may as well handle them.
-
-
-
-
- Do we know the player's region?
- If not, default to not allowing random items.
-
-
-
-
- Does the player's region allow crates and keys to be used?
- Similar to TF2 and other Valve games we disable unboxing in certain regions.
-
-
-
-
- If player's region does not allow crates and keys to be used, return the country code.
-
-
-
-
- Similar to TF2 and other Valve games we disable unboxing in certain regions, so hide those items.
-
-
-
-
- Similar to TF2 and other Valve games we disable unboxing in certain regions.
-
-
-
-
- Not called on dedicated server.
-
-
-
-
- Implementing as a struct wrapping the connection handle would remove the cost of looking up the connection,
- but implementing as a class makes it cheap to cache information like the remote identity.
-
-
-
-
- Find game connection associated with Steam connection.
-
-
-
-
- Must close the handle to free up resources.
-
-
-
-
- Must close the handle to free up resources.
-
-
-
-
- Defaults to true. If false, skip Steam Networking Sockets creation of regular IP socket.
-
-
-
-
- Defaults to true. If false, skip Steam Networking Sockets creation of non-FakeIP P2P socket.
- (this is the socket used by "server codes")
-
-
-
-
- Must close the handle to free up resources.
-
-
-
-
- Must close the handle to free up resources.
-
-
-
-
- Recycled array for every read call.
-
-
-
-
- Log verbose information that should not be included in release builds.
-
-
-
-
- Log helpful information that should be included in release builds.
-
-
-
-
- Should certificate authentication be disabled for UDP connections?
-
-
-
-
- This callback may be called from a service thread. It must be threadsafe and fast! Do not make any other
- Steamworks calls from within the handler.
-
-
-
-
- Thanks DiFFoZ! Ensures GC does not release the delegate.
-
-
-
-
- Does host want extra debug output?
-
-
-
-
- Overrides k_ESteamNetworkingConfig_SendBufferSize.
-
-
-
-
- Overrides k_ESteamNetworkingConfig_EnableDiagnosticsUI.
-
-
-
-
- Implementation using .NET Berkeley sockets.
-
-
-
-
- Implements message boundaries on top of a TCP stream socket.
-
-
-
-
- Implementation using .NET Berkeley sockets.
-
-
-
-
- SteamNetworking is deprecated.
-
-
-
-
- SteamNetworking is deprecated.
-
-
-
-
- Dummy connection used in singleplayer.
-
-
-
-
- Does initialOverlaps array contain hit collider?
-
-
-
-
- Does initialOverlaps array contain every hit collider?
-
-
-
-
- Perform a move, then do a capsule cast to determine if Unity PhysX went through a wall.
-
- Required when disabling overlap recovery because there are issues when walking toward slopes that bend inward.
- To test if Unity works properly in the future; walk toward the inside of a barracks building in the PEI base.
-
-
-
-
- Set detectCollisions to false and cancel deferred requests to enable.
-
-
-
-
- Set detectCollisions to true on the next frame.
- Useful when CharacterController is teleported to prevent adding huge forces to overlapping rigidbodies.
-
-
-
-
- If true EnableDetectCollisionsNextFrame, if false DisableDetectCollisions.
-
-
-
-
- Intentionally Update, not FixedUpdate. Physics transforms are applied between frames, whereas at low frame
- rates there may be multiple FixedUpdates per frame.
-
-
-
-
- Used to capture promotional images.
-
- Unity does not allow components in the editor assembly, so this component is in the game assembly but only compiled in the editor.
-
-
-
-
- Test to compare differrent Unity instancing meshes.
-
- Unity does not allow components in the editor assembly, so this component is in the game assembly but only compiled in the editor.
-
-
-
-
- Hacky workaround to fix item skin material leak. Unfortunately none of the original item skin code destroyed
- instantiated materials, and did not keep a reference to the instantiated materials, so until that code gets a
- rewrite this will take care of cleanup.
-
-
-
-
- Debug component in the editor to see if GetRandomForwardVectorInCone seems correct. :)
- Not much of a mathematician. :(
-
-
-
-
+
+
+
+ Assembly-CSharp
+
+
+
+
+ Helper for drawing label outline/shadow so that we can easily change it.
+
+
+
+
+ Helper for drawing label outline/shadow so that we can easily change it.
+
+
+
+
+ If true, SizeOffset_X and SizeOffset_Y are used when image is available.
+ Defaults to false.
+
+
+
+
+ If useImageDimensions is on and image width exceeds this value, scale down
+ respecting aspect ratio.
+
+
+
+
+ If useImageDimensions is on and image height exceeds this value, scale down
+ respecting aspect ratio.
+
+
+
+
+ If true, NVGs work in third-person, not just first-person.
+ Defaults to false.
+
+
+
+
+ Type the annotated class was generated for.
+
+
+
+
+ Method the annotated method was generated for.
+
+
+
+
+ Exposes the same API as the older Block class used by existing netcode, but implemented using new bit reader/writer.
+
+
+
+
+ Last realtime a request was sent.
+ Used to rate-limit clientside.
+
+
+
+
+ Perform rate limiting and update timestamp.
+
+ True if we can proceed with request.
+
+
+
+ Do we think the local player is eligible to send request?
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ Find difficulty asset (if valid) for navigation bound index.
+
+
+
+
+ Could potentially be reused generically.
+
+
+
+
+ When zombie falls outside the map it needs a replacement spawnpoint within the same navmesh area.
+
+
+
+
+ Find replacement spawnpoint for a zombie and teleport it there.
+
+
+
+
+ Kills night-only zombies at dawn.
+
+
+
+
+ Allows Unity events to call in airdrops.
+
+
+
+
+ Used by weather assets.
+
+
+
+
+ Distance inward from edge before intensity reaches 100%.
+
+
+
+
+ Alpha is 0.0 outside volume and 1.0 inside inner volume.
+
+
+
+
+ World space size of the box.
+
+
+
+
+ Half the world space size of the box.
+
+
+
+
+ World space size of inner falloff box when falloffDistance is non-zero.
+ For example a 24x12x6 box with a falloff of 4 has an inner box sized 16x4x0.
+
+
+
+
+ World space extents of inner falloff box when falloffDistance is non-zero.
+
+
+
+
+ Local space size of inner falloff box when falloffDistance is non-zero.
+
+
+
+
+ Local space extents of inner falloff box when falloffDistance is non-zero.
+
+
+
+
+ World space radius of the sphere.
+
+
+
+
+ Local space radius of the sphere.
+
+
+
+
+ World space radius of inner falloff sphere when falloffDistance is non-zero.
+
+
+
+
+ Local space radius of inner falloff sphere when falloffDistance is non-zero.
+
+
+
+
+ Useful for code which previously depended on creating the Unity collider to calculate bounding box.
+
+
+
+
+ Called in the level editor during registraion and when visibility is changed.
+
+
+
+
+ Editor-only solid/opaque child mesh renderer object.
+
+
+
+
+ If true during Awake the collider component will be added.
+ Otherwise only in the level editor. Some volume types like water use the collider in gameplay,
+ whereas most only need the collider for general-purpose selection in the level editor.
+
+
+
+
+ Camera does not rotate when the car rotates.
+
+
+
+
+ Camera rotates when the car rotates.
+
+
+
+
+ If hit from the left view rolls right, if hit from the right view rolls left. This may reduce motion
+ sickness for some players.
+
+
+
+
+ Rotate on all axes according to damage direction. This may induce motion sickness.
+
+
+
+
+ Unfortunately the version which added hitmarker style saved but didn't actually load (sigh).
+
+
+
+
+ Nelson 2023-12-28: this option was causing players to crash in the 3.23.14.0 update. Hopefully
+ it's resolved for the patch, but to be safe it will default to false.
+
+
+
+
+ Prior to 3.22.8.0 all scopes/optics had a base fov of 90 degrees.
+
+
+
+
+ If false, call Start and Stop recording before and after push-to-talk key is pressed. This was the
+ original default behavior, but causes a hitch for some players. As a workaround we can always keep
+ the microphone rolling and only send data when the push-to-talk key is held. (public issue #4248)
+
+
+
+
+ If true, group member name labels fade out when near the center of the screen.
+ Defaults to true.
+
+
+
+
+ If true, hide identifiable details of other multiplayer clients like avatars, player names, number of
+ players online, server name, etc. Live streamers may find this useful to help prevent stream sniping.
+
+ Separated from the older "streamer mode" option.
+
+
+
+
+ If true, don't share details like "editing map X" or "join" with Steam. Useful for anyone who might be
+ targeted / followed into servers, or who has a project to keep secret.
+
+ Separated from the older "streamer mode" option.
+
+
+
+
+ Controls whether hitmarkers are animated outward (newer) or just a static image ("classic").
+
+
+
+
+ Determines how camera follows vehicle in third-person view.
+
+
+
+
+ Determines how camera follows aircraft vehicle in third-person view.
+
+
+
+
+ [0, 1] Blend factor between black and flashbang's desired color.
+
+
+
+
+ [0, 1] Multiplier for shake from .
+
+
+
+
+ Controls whether camera is constrained to roll-only or all axes.
+
+
+
+
+ Multiplier for flinch away from damage source in .
+
+
+
+
+ [0, 1] Intensity of FOV boost while sprinting.
+
+
+
+
+ [0, 1] Intensity of first-person motion caused by walking.
+
+
+
+
+ Invoked when custom UI colors are set.
+
+
+
+
+ Invoked when dark/light theme is set.
+
+
+
+
+ Number of times the player has clicked "Proceed" in the online safety menu.
+
+
+
+
+ If true, "don't show again" is checked in the online safety menu.
+
+
+
+
+ Prevents menu from being shown twice without a restart.
+
+
+
+
+ Nelson 2025-02-24: Warning that this is invoked *before* the item is actually removed from the items list.
+ (public issue #4894)
+
+
+
+ checks whether a space contains any filled slots
+
+
+ checks whether an item can be dragged and takes into account if the item overlaps its old self
+
+
+
+ checks whether the spot currently used by the old item is big enough to fit the new item
+
+
+
+
+ Please use SearchContents instead! To perform an equivalent search:
+ • Set ItemType to type.
+ • Set IncludeEmpty to false.
+ • Set IncludeMaxQuality to true.
+
+
+
+
+ Please use SearchContents instead! To perform an equivalent search:
+ • Set ItemType to type.
+ • Set IncludeEmpty to false.
+ • Set IncludeMaxQuality to true.
+ • Set CaliberId to caliber.
+ • Set IncludeUnspecifiedCaliber to allowZeroCaliber.
+
+
+
+
+ Please use SearchContents instead! To perform an equivalent search:
+ • Set AssetRef to id.
+ • Set IncludeEmpty to findEmpty.
+ • Set IncludeMaxQuality to findHealthy.
+
+
+
+
+ Please use SearchContents instead! To perform an equivalent search:
+ • Set MaxResultsCount to 1.
+ • Set AssetRef to id.
+ • Set IncludeEmpty to false.
+ • Set IncludeMaxQuality to true.
+
+
+
+
+ Invoked after any player's experience value changes (not including loading).
+
+
+
+
+ Invoked after any player's reputation value changes (not including loading).
+
+
+
+
+ Ugly hack for the awful skills enums. Eventually skills should be replaced.
+
+
+
+
+ Set every level to max and replicate.
+
+
+
+
+ Serverside only.
+ Called when skills weren't loaded (no save, or in arena mode), as well as when reseting skills after death.
+
+
+
+
+ Set this item as the dragging preview.
+
+
+
+
+ Standard shader mode changes are based on built-in StandardShaderGUI.cs
+
+
+
+
+ Does shader name match any of the standard shaders?
+ Standard, StandardSpecular and the Unturned "Decalable" variants all share nearly identical parameters.
+
+
+
+
+ Based on fixup routine in StandardShaderGUI SetMaterialKeywords.
+
+
+
+
+ Conditionally fixup older standard materials.
+
+ True if material was edited.
+
+
+
+ Parses mb:X from input string and filters assets using X master bundle.
+
+
+
+
+ List of all loaded blueprints potentially craftable by player. Updated when assets are refreshed. This
+ allows us to skip blueprints that will never be craftable (such as level-specific blueprints).
+
+
+
+
+ Recycled list of assets with blueprints.
+
+
+
+
+ Subset of loadedBlueprints.
+
+
+
+
+ Center column.
+
+
+
+
+ Used by inventory item context menu to override which blueprints are shown.
+
+
+
+
+ Left-hand column.
+
+
+
+
+ Right-hand column.
+
+
+
+
+ Returns true if all filtered blueprints are craftable. (hacked-in for item action menu)
+
+
+
+
+ If asset mapping has changed, find all assets with blueprints and gather the ones that can ever be crafted
+ on this level. (I.e., excluding ones that we shouldn't waste time considering.)
+
+
+
+
+ Accessible for UseableHousingPlanner.
+
+
+
+
+ Get a blank status from the pool or construct a new one.
+
+
+
+
+ Barricade asset's EBuild included in saves to fix state length problems. (public issue #3725)
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ Writable list of vehicle regions. Public add/remove methods should not be necessary.
+
+
+
+
+ Remove barricade instance on server and client.
+
+
+
+
+ Used by ownership change and damaged event to tell relevant clients the new health.
+
+
+
+
+ Legacy function for UseableBarricade.
+
+
+
+
+ Common code between dropping barricade onto vehicle or into world.
+
+
+
+
+ Spawn a new barricade attached to a vehicle and replicate it.
+
+
+
+
+ Spawn a new barricade and replicate it.
+
+
+
+
+ Not an instance method because structure might not exist yet, in which case we cancel instantiation.
+
+
+
+
+ Destroy barricades whose pivots are within sphere.
+
+
+
+
+ Clean up before loading vehicles.
+
+
+
+
+ Register a new vehicle as a valid parent for barricades.
+ Each train car is registered after the root of the train.
+ Note: Nobody knows why these are called plants.
+
+
+
+
+ Called before destroying a vehicle GameObject because storage needed to be ManualDestroyed.
+
+
+
+
+ Send all vehicle-mounted barricades to client.
+ Called after sending vehicles so all plant indexes will be valid.
+
+
+
+
+ Original server-only version that does not replicate changes to clients.
+
+
+
+
+ Only used by plugins. Replicates state change to clients.
+
+
+
+
+ Not ideal, but there was a problem because onLevelLoaded was not resetting these after disconnecting.
+
+
+
+
+ Maps prefab unique id to inactive list.
+
+
+
+
+ Sending yaw only costs 1 bit (flag) plus yaw bits, so compared to the old 24-bit rotation we may as well
+ make it high-precision. Quaternion mode uses 1+27 bits!
+
+
+
+
+ +0 = BarricadeDrop
+ +1 = root transform
+ +2 = Interactable (if exists)
+
+
+
+
+ ID unique to this zombie table in the level. If this table is deleted the ID will not be recycled. Used to
+ refer to zombie table from external files, e.g., NPC zombie kills condition.
+
+
+
+
+ Not an actual Steam ID or BattlEye ID, instead this is used to map player references to and from BE.
+
+
+
+
+ True for offline or listen server host.
+
+
+
+
+ Next time method is allowed to be called.
+
+
+
+
+ Number of times client has tried to invoke this method while rate-limited.
+
+
+
+
+ Get Steam item definition ID equipped for given vehicle.
+
+ True if a skin was available.
+
+
+
+ Build econ details struct from tags and dynamic_props.
+ Note that details cannot be modified because it's a struct and has copies of the data.
+
+
+
+
+ Add a recent ping sample to the average ping window.
+ Updates ping based on the average of several recent ping samples.
+
+ Most recent ping value.
+
+
+ True if both players exist, are both members of groups, and are both members of the same group.
+
+
+ True if both players exist, are both members of groups, and are both members of the same group.
+
+
+
+ Get real IPv4 address of remote player NOT the relay server.
+
+ True if address was available, and not flagged as a relay server.
+
+
+
+ See above, returns zero if failed.
+
+
+
+
+ Get real address of remote player NOT a relay server.
+
+ Null if address was unavailable.
+
+
+
+ Get string representation of remote end point.
+
+ Null if address was unavailable.
+
+
+
+ Players can set a "nickname" which is only shown to the members in their group.
+
+
+
+
+ Can be used by plugins to verify player is on a particular server.
+
+ OnSteamAuthTicketForWebApiReceived will be invoked when the response is received.
+ Note that the client doesn't send anything if the request to Steam fails, so plugins may wish to kick
+ players if a certain amount of time passes. (e.g., if a cheat is canceling the request)
+
+
+
+
+ Component for the tactical laser attachment's red dot.
+ Resizes itself per-camera to maintain a constant on-screen size.
+
+
+
+
+ Used to tune the scale by distance so that far away laser is not quite as comically large.
+
+
+
+
+ This value is confusing because in the level editor it is the normalized radius, but in-game it is the square radius.
+
+
+
+
+ Load {Language}.dat and/or English.dat from folder path.
+
+
+
+
+ Note: as of 2025-04-23 this *can* be null. (E.g., audio-only effects.)
+
+
+
+
+ If set, use OneShotAudioParameters to play this audio.
+
+
+
+
+ If true the music option is respected when this effect is used by ambiance volume.
+
+
+
+
+ In multiplayer the effect will be spawned for players within this radius.
+
+
+
+
+ When loaded or spawned as a vehicle, creates a different vehicle instead.
+ For example, Off_Roader_Orange has ID 4. When that ID is loaded/spawned the new combined Off_Roader vehicle is
+ used instead. Can also optionally apply a paint color, allowing saves to be converted without losing colors.
+
+
+
+
+ Redirectors are in the Vehicle category so that legacy vehicle IDs point at the redirector.
+
+
+
+
+ Vehicle to use when attempting to load or spawn this asset.
+
+
+
+
+ If set, overrides the default random paint color when loading a vehicle from a save file.
+ Used to preserve colors of vehicles in existing saves.
+
+
+
+
+ If set, overrides the default random paint color when spawning a new vehicle.
+ Optionally used to preserve colors of vehicles in spawn tables.
+
+
+
+
+ Invoked prior to built-in death logic.
+
+
+
+
+ Event for plugins when player dies.
+
+
+
+
+ Invoked after player finishes respawning.
+
+
+
+
+ Tracks this player as an aggressor if they were recently an aggressor or if they haven't been attacked recently.
+
+ Ignores rules and just make aggressive.
+ Whether to call markAggressive on group members.
+
+
+ Should damage be dealt even while inside safezone?
+
+
+
+ Set bleeding state and replicate to owner if changed.
+
+
+
+
+ Set legs broken state and replicate to owner if changed.
+
+
+
+
+ Add to or subtract from stamina level.
+ Does not replicate the change.
+
+
+
+
+ Add to or subtract from stamina level.
+ Does not replicate the change.
+
+
+
+
+ Called from the server to modify stamina.
+
+
+
+
+ Add to or subtract from stamina level on the client and server.
+
+
+
+
+ Called from the server to induce a hallucination.
+
+
+
+
+ Add to or subtract from hallucination level on the client.
+
+
+
+
+ Add to or subtract from warmth level.
+ Does not replicate the change.
+
+
+
+
+ Called from the server to modify warmth.
+
+
+
+
+ Add to or subtract from warmth level on the client and server.
+
+
+
+
+ Add to or subtract from oxygen level.
+ Does not replicate the change.
+
+
+
+
+ Add to or subtract from health level.
+ Replicates change to owner.
+
+
+
+
+ Add to or subtract from food level.
+ Replicates change to owner.
+
+
+
+
+ Add to or subtract from water level.
+ Replicates change to owner.
+
+
+
+
+ Add to or subtract from virus level.
+ Replicates change to owner.
+
+
+
+
+ Used by plugins to respawn the player bypassing timers. Issue #2701
+
+
+
+
+ Used to refill all client stats like stamina
+
+
+
+
+ Used by UI. True when underwater or inside non-breathable oxygen volume.
+
+
+
+
+ This value is confusing because in the level editor it is the normalized radius, but in-game it is the radius.
+
+
+
+
+ No longer used in vanilla. Kept in case plugins are using it.
+
+
+
+
+ No longer used in vanilla. Kept in case plugins are using it.
+
+
+
+
+ No longer used in vanilla. Kept in case plugins are using it.
+
+
+
+
+ Actual internal implementation.
+
+
+
+
+ World to local bounds only works well for axis-aligned icons.
+
+
+
+
+ Unity's Camera.orthographicSize is half the height of the viewing volume. Width is calculated from aspect ratio.
+
+
+
+
+ Fading in.
+
+
+
+
+ Finished fading in.
+
+
+
+
+ Fading out.
+
+
+
+
+ Finished fading out.
+
+
+
+
+ Extensions to the built-in Input class.
+
+
+
+
+ Wrapper for Input.GetKey, but returns false while typing in a uGUI text field.
+
+
+
+
+ Wrapper for Input.GetKeyDown, but returns false while typing in a uGUI text field.
+
+
+
+
+ Wrapper for Input.GetKeyUp, but returns false while typing in a uGUI text field.
+
+
+
+
+ Should be used anywhere that Input.GetKeyDown opens a UI.
+
+ Each frame one input event can be consumed. This is a hack to prevent multiple UI-related key presses from
+ interfering during the same frame. Only the first input event proceeds, while the others are ignored.
+
+ True if caller should proceed, false otherwise.
+
+
+
+ Get mouse position in viewport coordinates where zero is the bottom left and one is the top right.
+
+
+
+
+ Original type on the Russia map which requires a mask with filters.
+
+
+
+
+ Requires a mask with filters and full body suit.
+
+
+
+
+ Damage dealt to players while inside the volume if they *don't* have clothing matching the deadzone type.
+ Could help prevent players from running in and out to grab a few items without dieing.
+
+
+
+
+ Damage dealt to players while inside the volume if they *do* have clothing matching the deadzone type.
+ For example, an area could be so dangerous that even with protection they take a constant 0.1 DPS.
+
+
+
+
+ Virus damage to players while inside the volume if they *don't* have clothing matching the deadzone type.
+ Defaults to 6.25 to preserve behavior from before adding this property.
+
+
+
+
+ Rate of depletion from gasmask filter's quality/durability.
+ Defaults to 0.4 to preserve behavior from before adding this property.
+
+
+
+
+ This value is confusing because in the level editor it is the normalized radius, but in-game it is the square radius.
+
+
+
+
+ Nelson 2024-06-10: Added this property after nodes were converted to volumes. i.e., only old levels from
+ before this property were added still have nodes, so it's expected that they won't deal damage over time.
+
+
+
+
+ Same description as .
+
+
+
+
+ Same description as .
+
+
+
+
+ Same description as .
+
+
+
+
+ Get real IPv4 address of remote player NOT the relay server.
+
+ True if address was available, and not flagged as a relay server.
+
+
+
+ See above, returns zero if failed.
+
+
+
+
+ When placing structures that snap to grid multiple requests can come
+ in to the server at the same time, and checking overlaps against structures
+ can be problematic, so as a backup we track pending build requests
+ and cancel ones which conflict.
+
+
+
+
+ Register a location as having something built there soon.
+
+ Unique handle to later finish the request.
+
+
+
+ Is a location available to build at (i.e. no pending builds)?
+
+ False if there are any outstanding build requests for given location.
+
+
+
+ Notify that a previously registered build has been completed.
+
+ Unique handle.
+
+
+
+ Nelson 2023-08-11: this probably should be rewritten a bit if used in the future
+ because the error context currently assumes this is an item reward for consumables.
+
+
+
+
+ Resolve table as items and grant random number to player.
+
+
+
+
+ Resolve table as items and grant random number to player.
+
+
+
+
+ Enumerate random number of valid assetIDs.
+
+
+
+
+ Converts Steam BBcode tokens into widgets displayable using Glazier UI.
+
+
+
+
+ If false, expect LineBreak tokens in input. (default false)
+ If true, insert line breaks where appropriate.
+ Steam's new visual editor doesn't emit newlines, instead inferring line breaks from paragraph blocks. To
+ make life easier we will do the same for the main menu announcement feed.
+
+
+
+
+ Vanilla maximum level.
+
+
+
+
+ If set, maximum skill level attainable through gameplay.
+
+
+
+
+ Multiplier for XP upgrade cost.
+
+
+
+
+ Get maximum level, or maxUnlockableLevel if set.
+
+
+
+
+
+
+ Implemented by components the player can talk with using DialogeAssets. (e.g., InteractableObjectNPC)
+
+
+
+
+ Used to test whether player is within range.
+ Ideally, this should be removed in the future in favor of the server resetting speaker when out of range.
+
+
+
+
+ Get a net ID that can be used with GetDialogueTargetFromNetId to resolve IDialogueTarget in multiplayer.
+
+
+
+
+ Called on server to test whether object conditions are met.
+
+
+
+
+ Called on server to find the start of conversation dialogue asset.
+
+
+
+
+ Used in error messages.
+
+
+
+
+ Called on client to format in UI.
+
+
+
+
+ Helper wrapping Unturned's usage of AudioListener.volume, which is the master volume level.
+ This makes it easier to track what controls the master volume and avoid bugs.
+
+
+
+
+ Is audio muted because this is a dedicated server?
+
+ While dedicated server should not even be processing audio code,
+ older versions of Unity in particular have issues with headless audio.
+
+
+
+
+ Is audio muted because loading screen is visible?
+
+
+
+
+ Player's volume multiplier from the options menu.
+
+
+
+
+ Player's unfocused volume multiplier from the options menu.
+
+
+
+
+ Mute or un-mute audio depending whether camera is valid.
+
+
+
+
+ Synchronize AudioListener.volume with Unturned's parameters.
+
+
+
+
+ Note: new official code should be using per-method rate limit attribute.
+ This is kept for backwards compatibility with plugins however.
+
+ Timestamp for server-side rate limiting.
+
+
+
+
+ Realtime this action was performed.
+
+
+
+
+ Realtime since performedRealtime.
+
+
+
+
+ if(myRateLimit.throttle(1.0))
+ return; // less than 1s passed
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ List of all interactable items. Originally only used to clamp their distance from the drop point to ensure
+ clients can always pick them up, but now used to find items within a radius for nearby menu as well.
+
+
+
+
+ Kept for plugin backwards compatibility.
+ This one is problematic because on the client physics can move items between regions.
+
+
+
+
+ Find physically simulated items within radius.
+
+
+
+
+ Despawn any old items in the current despawn region.
+
+ True if the region had items to search through.
+
+
+
+ Attempt to respawn an item in the current respawn region.
+
+ True if an item was succesfully respawned.
+
+
+
+ Not ideal, but there was a problem because onLevelLoaded was not resetting these after disconnecting.
+
+
+
+
+ Instantiate at least this many items per frame even if we exceed our time budget.
+
+
+
+
+ Sort servers by name A to Z.
+
+
+
+
+ Sort servers by name Z to A.
+
+
+
+
+ Persistent identifier for server. Relies on server assigning a Game Server Login Token (GSLT).
+ i.e., servers without GSLT cannot be bookmarked.
+
+
+
+
+ IP address or DNS name to use as-is, or a web address to perform GET request.
+ Servers not using Fake IP can specify just a DNS entry and a static query port.
+ Servers using Fake IP are assigned random ports at startup, but can implement a web API endpoint to return
+ the IP and port.
+
+ Nelson 2025-01-20: Making this optional now. The downside is we can't perform a Steam A2S query without
+ IP/port, but the upside is players can more easily join their non-port-forwarded servers.
+
+
+
+
+ Steam query port. Zero for servers using Fake IP.
+
+
+
+
+ Name updated from SteamServerAdvertisement.
+
+
+
+
+ Short description updated from SteamServerAdvertisement.
+
+
+
+
+ Small icon updated from SteamServerAdvertisement.
+
+
+
+
+ Used by UI to track whether it's been added/removed.
+
+
+
+
+ Allows player to save server advertisement to join again later. Semi-replacement for Steam's built-in favorites
+ and history lists because as of 2024-04-26 they don't seem to work properly with Fake IP.
+
+
+
+ details if advertisement is bookmarked.
+
+
+
+ Restore a removed bookmark.
+
+
+
+
+ Static functions for creating monitor instance on server.
+
+
+
+
+ Entry point called by dedicated server after loading level.
+
+
+
+
+ Create vanilla update monitor that watches for changes to workshop level file and any other mods.
+
+
+
+
+ Helper to get updated timestamp from workshop items loaded by DedicatedUGC.
+
+
+
+
+ Helper to create monitored item for use with default DedicatedWorkshopUpdateMonitor implementation.
+
+
+
+
+ For use with default DedicatedWorkshopUpdateMonitor implementation.
+
+
+
+
+ Get index within bounds assuming list is not empty.
+
+
+
+
+ Add a new item using its default constructor.
+
+
+
+
+ Apply shader name redirects until a final name is found,
+ and then load shader for compatible version of Unity.
+
+
+
+
+ Apply shader name redirects until a final name is found.
+ Used to fix renamed shaders loaded from old asset bundles.
+
+
+
+
+ Names of older shaders mapped to their renamed counterparts.
+ Used to fix shaders loaded from old asset bundles.
+
+
+
+
+ Delete all savedata folders for player's characters.
+
+
+
+
+ Number of Attack_# animations.
+
+
+
+
+ Number of Eat_# animations.
+
+
+
+
+ Number of Glance_# animations.
+
+
+
+
+ Number of Startle_# animations.
+
+
+
+
+ Maximum distance on the XZ plane.
+
+
+
+
+ Maximum distance on the XZ plane when attacking vehicles.
+
+
+
+
+ Maximum distance on the Y axis.
+
+
+
+
+ Minimum seconds between attacks.
+
+
+
+
+ Temporary until something better makes sense? For Spyjack.
+
+
+
+
+ If true, animal won't start moving until startle animation finishes.
+
+
+
+
+ Allows mappers to bulk replace assets by listing pairs in a text file.
+ https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/2275
+
+
+
+
+ If a redirector for oldGuid exists, returns target asset. Otherwise null.
+
+
+
+
+ Component in the root Menu scene.
+ Additively loads decoration levels without modifying main scene.
+
+
+
+
+ Prevents static member from being initialized during MonoBehaviour construction. (Unity warning)
+
+
+
+
+ Nelson 2024-02-06: when looking into resolving public issue #3703 I figured since there is a common behavior
+ between InteractableObjectQuest, InteractableObjectNote, and InteractableObjectDropper (in that they all
+ request the server to do X we may as well support a "mod hook" that works with all three.
+
+
+
+
+ Controls where attachments looks for ADS alignment transform.
+
+
+
+
+ Look for aim alignment transform relative to sight model.
+ Defaults to Model_0/Aim.
+
+
+
+
+ Look for aim alignment transform relative to equipable prefab.
+ Requires setting AimAlignment_Path.
+
+
+
+
+ Factor e.g. 2 is a 2x multiplier.
+ Prior to 2022-04-11 this was the target field of view. (90/fov)
+
+
+
+
+ Zoom factor used in third-person view.
+
+
+
+
+ Whether main camera field of view should zoom without scope camera / scope overlay.
+
+
+
+
+ If true, scale scope overly by 1 texel to keep "middle" pixel centered.
+
+
+
+
+ Controls where to find AimAlignmentTransformPath.
+
+
+
+
+ If set, find this transform relative to AimAlignmentTransformOwner.
+
+
+
+
+ Position offset relative to Aim transform or transform specified by aimAlignmentTransformPath.
+
+
+
+
+ [0, 1] local distance from center to start of line.
+
+
+
+
+ [0, 1] local width of horizontal line.
+
+
+
+
+ Whether line/number are on left or right side of the center line.
+
+
+
+
+ If true, text label for distance is visible.
+
+
+
+
+ Optional component on Turret_# GameObject for modding UnityEvents.
+
+
+
+
+ Optional collider matching the player capsule to prevent short vehicles (e.g. bikes) from clipping into walls.
+
+
+
+
+ Displays a single random item. Placed under the other main menu buttons.
+
+
+
+
+ Hide existing icon until refresh.
+ Experimented with doing this for every refresh, but it looks bad in particular for hotbar.
+
+
+
+
+ Name of the asset bundle.
+
+ core.content
+
+
+
+ Path within the asset bundle.
+
+
+
+
+ Used to test whether player can fit in a space.
+ Includes terrain because tested capsule could be slightly underground, and clip to prevent exploits at sky limit.
+
+
+
+
+ Used for third-person camera in vehicle.
+ Does not include resource layer because attached barricades are put on that layer.
+ Barricades layer itself is included to prevent looking inside player bases.
+
+
+
+
+ Used to test whether player can enter a vehicle.
+ Does not include resource layer because attached barricades are put on that layer.
+
+
+
+
+ 2023-02-02: adding more layers since splatter can be attached to them now.
+ parent should only be set if that system also calls ClearAttachments, otherwise attachedEffects will leak memory.
+
+
+
+
+ Layer mask for CharacterController overlap test.
+
+
+
+
+ Layer mask for CharacterController overlap test while inside landscape hole volume.
+
+
+
+
+ Lightning strike raycasts from sky to ground using this layer mask.
+
+
+
+
+ Invoked when component is enabled and when the game object is activated.
+
+
+
+
+ Invoked when component is disabled and when the game object is deactivated.
+ Note that if the component or game object spawn deactivated this will not be immediately invoked.
+
+
+
+
+ Allows Unity events to print messages to the log file for debugging.
+
+
+
+
+ Text to use when PrintInfo is invoked.
+
+
+
+
+ Every time the inventory changes this number is incremented.
+ While a little messy, the idea is to prevent inventory checks from happening every frame.
+
+
+
+
+ Should be called every time something changes in the inventory.
+
+
+
+
+ Helper to prevent checking the inventory every frame for systems that don't use events.
+
+
+
+
+ Did owner call askInventory yet?
+ Prevents duplicate tell_X RPCs from being sent to owner prior to initial sync.
+ Ideally should be cleaned up with netcode refactor. (Client should not need to ask server for initial state.)
+
+
+
+
+ Intended as nearly a drop-in replacement for .
+
+
+
+
+ Intended as nearly a drop-in replacement for .
+
+
+
+
+ Intended as nearly a drop-in replacement for .
+
+
+
+
+ Intended as nearly a drop-in replacement for .
+
+
+
+
+ Intended as nearly a drop-in replacement for .
+
+
+
+
+ Intended as nearly a drop-in replacement for .
+ This variant wraps FindFirstItemByAsset and manages the results list for you.
+ Only use result if true is returned, otherwise it's invalid.
+
+
+
+
+ Intended as nearly a drop-in replacement for .
+ This variant wraps FindFirstItemByAsset and manages the results list for you.
+
+
+
+
+ Helper for tryAddItemAuto.
+
+
+
+
+ Given an item coordinate (page, x, y) could a new item take the place of an old (existing) item without
+ overlapping other item(s) space? Always true for equipment slots (page less than SLOTS).
+ For example if oldSize is (1, 2) rot 0, and newSize is (2, 1) rot 1, then they can swap.
+
+
+
+
+ Swap coordinates of two existing items.
+ Rotation is provided to handle differently shaped items e.g. a 1x2 item with a 2x1 item.
+
+
+
+
+ Swap coordinates of two existing items.
+ Rotation is provided to handle differently shaped items e.g. a 1x2 item with a 2x1 item.
+
+
+
+
+ Called from player movement to close storage that has moved away.
+
+
+
+
+ Serverside open a storage crate and notify client.
+
+
+
+
+ Serverside grant access to car trunk storage and notify client.
+
+
+
+
+ Serverside revoke trunk access and notify client.
+
+
+
+
+ Called on both client and server, as well as by storage itself when destroyed.
+
+
+
+
+ Please use SearchContents instead! To perform an equivalent search:
+ • Set IncludeEquipmentSlots to false.
+ • Set IncludeActiveStorageContainer to false.
+ • Set ItemType to type.
+ • Set IncludeEmpty to false.
+ • Set IncludeMaxQuality to true.
+ OR use the nearly drop-in replacement FindItemsByType.
+
+
+
+
+ Please use SearchContents instead! To perform an equivalent search:
+ • Set IncludeEquipmentSlots to false.
+ • Set IncludeActiveStorageContainer to false.
+ • Set ItemType to type.
+ • Set IncludeEmpty to false.
+ • Set IncludeMaxQuality to true.
+ • Set AnyCaliberIds to calibers.
+ • Set IncludeUnspecifiedCaliber to allowZeroCaliber.
+ OR use the nearly drop-in replacement FindAttachmentsByCaliber.
+
+
+
+
+ Please use SearchContents instead! To perform an equivalent search:
+ • Set IncludeEquipmentSlots to false.
+ • Set IncludeActiveStorageContainer to false.
+ • Set ItemType to type.
+ • Set IncludeEmpty to false.
+ • Set IncludeMaxQuality to true.
+ • Set CaliberId to caliber.
+ • Set IncludeUnspecifiedCaliber to allowZeroCaliber.
+ OR use the nearly drop-in replacement FindAttachmentsByCaliber.
+
+
+
+
+ Please use SearchContents instead! To perform an equivalent search:
+ • Set IncludeEquipmentSlots to false.
+ • Set IncludeActiveStorageContainer to false.
+ • Set AssetRef to id.
+ • Set IncludeEmpty to findEmpty.
+ • Set IncludeMaxQuality to findHealthy.
+ OR use the nearly drop-in replacement FindItemsByAsset.
+
+
+
+
+ Please use SearchContents instead! To perform an equivalent search:
+ • Set IncludeEquipmentSlots to true.
+ • Set IncludeActiveStorageContainer to true.
+ • Set MaxResultsCount to 1.
+ • Set AssetRef to id.
+ • Set IncludeEmpty to false.
+ • Set IncludeMaxQuality to true.
+ OR use the nearly drop-in replacements FindFirstItemByAsset or HasItemByAsset.
+
+
+
+
+ Filter for whether the Permanent Gold Upgrade DLC is required to join a server.
+
+
+
+
+ All servers pass the filter.
+
+
+
+
+ Only non-gold servers pass the filter.
+
+
+
+
+ Only gold servers pass the filter.
+
+
+
+
+ Can be added to any GameObject to listen for the Event NPC reward type.
+
+
+
+
+ *_ID configured in NPC rewards list.
+
+
+
+
+ If true the event will only be invoked in offline mode and on the server.
+
+
+
+
+ Invoked when NPC global event matching EventId is processed.
+
+
+
+
+ Invoked when timer expires.
+
+
+
+
+ Number of seconds to use when SetDefaultTimer is invoked.
+
+
+
+
+ Should timer loop when SetDefaultTimer is invoked?
+
+
+
+
+ Stop pending timer from triggering.
+
+
+
+
+ Handle to stop the coroutine.
+
+
+
+
+ Horizontal distance before road begins tapering off into the terrain.
+
+
+
+
+ Size along the "up" axis.
+
+
+
+
+ Distance along the terrain surface normal to move each road vertex.
+
+
+
+
+ Multiplier for how far along the road before texture repeats.
+
+
+
+
+ Defaults to None, in which case the backwards-compatible chart classification is used.
+
+
+
+
+ Physics material to assign to road colliders.
+ Replaces the "concrete" toggle in the older editor.
+
+
+
+
+ Can be added to Vehicle Turret_# GameObject to receive events.
+
+
+
+
+ Invoked when turret gun is fired.
+
+
+
+
+ Invoked when turret gun begins reload sequence.
+
+
+
+
+ Invoked when turret gun begins hammer sequence.
+
+
+
+
+ Invoked when turret gun begins aiming.
+
+
+
+
+ Invoked when turret gun ends aiming.
+
+
+
+
+ Invoked when turret gun controlled by a local player begins aiming.
+
+
+
+
+ Invoked when turret gun controlled by a local player ends aiming.
+
+
+
+
+ Invoked when turret gun controlled by a local player begins inspecting attachments.
+
+
+
+
+ Invoked when turret gun controlled by a local player ends inspecting attachments.
+
+
+
+
+ Invoked when any player enters the seat.
+
+
+
+
+ Invoked when any player exits the seat.
+
+
+
+
+ Invoked when a locally controlled player enters the seat.
+
+
+
+
+ Invoked when a locally controlled player exits the seat.
+
+
+
+
+ Nelson 2025-06-19: using server-provided connection details is useful because
+ it can find its public IP (e.g., joining by LAN and sharing WAN IP), and/or
+ its fake IP (again when joining by LAN).
+
+
+
+
+ Is client UTC time within this time range?
+
+
+
+
+ Is server UTC time within this time range?
+
+
+
+
+ Adds custom data to base physics material asset.
+ For example how a vanilla material should respond to custom laser guns.
+
+
+
+
+ Number of players inside the navmesh when the beacon was placed.
+ Clamped to 1 if ShouldScaleWithNumberOfParticipants is false.
+
+
+
+
+ Crossover from Dying Light. Only spawns during night. Explodes into fire at dawn.
+
+
+
+
+ Crossover from Dying Light. Only spawns during night. Explodes into fire at dawn.
+
+
+
+
+ Elver endgame boss with reduced bullet damage and wind zombie stomping attacks.
+
+
+
+
+ Kuwait final boss with increased rock throwing, damage players inside vehicle (turrets), and flashbangs.
+
+
+
+
+ Buak boss types have a red-eyed flashbang effect.
+
+
+
+
+ Is this one of the Dying Light volatile zombies? Only spawns during night. Explodes into fire at dawn.
+
+
+
+
+ Does this have the BOSS_* prefix?
+
+
+
+
+ Same as FindChildRecursive, but skip specific child.
+
+
+
+
+ Editor-only helper to read all text/dialogue.
+
+
+
+
+ Version before named version constants were introduced. (2023-11-07)
+
+
+
+
+ Delegate not reset when level reset.
+
+
+
+
+ Delegate not reset when level reset.
+
+
+
+
+ Delegate not reset when level reset.
+
+
+
+
+ Delegate not reset when level reset.
+
+
+
+
+ Number of in-game days this world has run.
+ Incremented each time night ends.
+ Saved between sessions.
+
+
+
+
+ Weather has not been decided yet. Level might not have any enabled.
+
+
+
+
+ Weather has been forecast. Timer counts down until activation.
+
+
+
+
+ Weather is now active. Timer counts down until deactivation.
+
+
+
+
+ Weather is active. Will not deactivate naturally.
+ Prevents loaded perpetual weather from deactivating.
+
+
+
+
+ Determines which weather can naturally be scheduled in this level.
+ Includes default rain and snow for older levels.
+
+
+
+
+ Seconds until weather activates.
+
+
+
+
+ Seconds until weather deactivates.
+
+
+
+
+ Forecast or active weather.
+
+
+
+
+ Set weather active and disable scheduling.
+
+
+
+ True if given weather has config.
+
+
+
+ Cancel scheduled weather and re-evaluate on next update.
+
+
+
+
+ Cancel active weather and prevent next weather from being scheduled.
+
+
+
+
+ Get weather override for the currently loaded level.
+ Warning: this is kept for backwards compatibility, whereas newer maps will set LevelAsset.perpetualWeather.
+
+
+
+
+ Assign schedulableWeathers array according to level asset or legacy lighting settings.
+
+
+
+ True if perpetual weather was enabled, false otherwise.
+
+
+
+ Used by dawn and dusk skins which pull per-level lighting colors.
+
+
+
+
+ Note: unfortunately it appears the stupid skin system always instantiated materials, but never destroys
+ them... will need to clean this up, but it will be tricky because the game does not hold a reference to them.
+
+
+
+
+ If true, sets the Magazine attachment hook inactive while this skin is applied. (guns only)
+
+ Nelson 2025-03-10: Adding this to address mismatched Ace bullets with certain skins. (public issue #4923)
+ It should be fine for vanilla guns because there shouldn't be assumptions about Magazine enable/disable,
+ but modded guns may have different expectations (particularly with GunAttachmentEventHook).
+
+
+
+
+ Used by melee skins to override impact sound.
+
+
+
+
+ Restricts which items can be crafted.
+
+
+
+
+ Restrict blueprints that consume these items.
+
+
+
+
+ Restrict blueprints that generate these items.
+
+
+
+
+ If false, blueprints on vanilla/core/built-in items are not allowed. Defaults to true.
+
+
+
+
+ If null, use index instead.
+
+
+
+
+ Restrict specific blueprints.
+
+
+
+
+ Thanks to Glenn Fiedler for this RK4 implementation article:
+ https://gafferongames.com/post/integration_basics/
+
+
+
+
+ Higher values return to the target position faster.
+
+
+
+
+ Higher values reduce bounciness and settle at the target position faster.
+ e.g. a value of zero will bounce back and forth for a long time (indefinitely?)
+
+
+
+
+ Absolute path to project directory, e.g. C:/U3
+
+
+
+
+ Overrides breathability for example in a deep cave with no oxygen, or near a deep sea plant that provides oxygen.
+
+
+
+
+ Find highest alpha breathable volume overlapping position.
+
+
+
+
+ Find highest alpha non-breathable volume overlapping position.
+
+
+
+
+ Unlike format, this returns null if key doesn't exist.
+
+
+
+
+ This overload supports legacy Reward_# format.
+
+
+
+
+ This overload doesn't support legacy Reward_# format.
+
+
+
+
+ Payload for the DamageTool.explode function.
+ Moved into struct because the amount of arguments to that function were insane, but now is not the time to completely refactor damage.
+
+
+
+
+ Speed to launch players away from blast position.
+
+
+
+
+ Can be added to any GameObject to receive weather events:
+ - Day/Night
+ - Full Moon
+ - Rain
+ - Snow
+
+
+
+
+ Invoked when night changes to day.
+
+
+
+
+ Invoked when day changes to night.
+
+
+
+
+ Invoked when a zombie full-moon event starts.
+
+
+
+
+ Invoked when a zombie full-moon event finishes.
+
+
+
+
+ Invoked when rain starts to fall.
+
+
+
+
+ Invoked when rain finishes falling.
+
+
+
+
+ Invoked when snow starts to fall.
+
+
+
+
+ Invoked when snow finishes falling.
+
+
+
+
+ Registers renderers with DynamicWaterTransparentSort manager.
+
+
+
+
+ In vanilla this field is ONLY used for the per-character saves on servers.
+ If that changes check that it does not affect the savedata options.
+
+
+
+
+ 20-byte SHA1 salted hashes of client's hardware ID(s).
+ Providing multiple HWIDs makes it more difficult to bypass HWID bans because spoofing a single component
+ only changes one of the bans. For example spoofing the MAC address will not spoof the Windows GUID.
+
+ Randomized if system did not support hwid, or perhaps player is cheating.
+ Should not be called on the client side, but just in case there is a default zeroed array.
+
+
+
+
+ Ignore requests to kick me in debug mode. :)
+ Steam ID may not have been authenticated yet here which may seem like a security risk, but fortunately that
+ would get caught when Steam auth ticket response is received.
+
+
+
+
+ Array of 20-byte SHA1 hashes.
+
+
+
+
+ Not using rate limit attribute because this is potentially called for hundreds of structures at once,
+ and only admins will actually be allowed to apply the transform.
+
+
+
+
+ See BarricadeRegion.FindBarricadeByRootFast comment.
+
+
+
+
+ For code which does not know whether transform exists and/or even is part of a house.
+ See BarricadeRegion.FindBarricadeByRootFast comment.
+
+
+
+
+ Steam APIs returned uint32 IPv4 addresses in the past, so Unturned code depends on them in some places.
+ Ideally these uses should be updated for IPv6 support going forward.
+ For the meantime this method converts from the new format to the old format for backwards compatibility.
+
+
+
+
+ Assets cannot be loaded from Resources during static initialization, so this reference defers the load until
+ the first time user tries to use it.
+
+
+
+
+ Material on Model_0, the low-speed actual blade.
+
+
+
+
+ Renderer on Model_1.
+
+
+
+
+ Material on Model_1, the high-speed blurred outline.
+
+
+
+
+ transform's localRotation when the vehicle was instantiated.
+
+
+
+
+ Rigidbody component on the root game object.
+
+
+
+
+ If true, set sharedMaterial. If false, set material.
+
+
+
+
+ Calculated speed of this track. Used by some wheels.
+
+
+
+
+ Temporary array for use with physics queries.
+
+
+
+
+ Temporary list for gathering materials.
+
+
+
+
+ Precursor to Net ID. Should eventually become obsolete.
+
+
+
+
+ Asset ID. Essentially obsolete at this point.
+
+
+
+
+ Used to restore vehicle materials when changing skin.
+
+
+
+
+ Only used by trains. Constrains the train to this path.
+
+
+
+
+ Unfortunately old netcode sends train position as a Vector3 using the X channel, but new code only supports
+ [-4096, 4096) so we pack the train position into all three channels. Eventually this should be cleaned up.
+
+
+
+
+ Nelson 2024-06-24: When first implementing batteries there was only the vanilla battery item, and it was
+ fine to delete it when the charge reached zero. This may not be desirable, however, so zero now represents
+ no battery item is present, and one represents the battery is completely drained but still there.
+
+
+
+
+ Is this vehicle inside a safezone?
+
+
+
+
+ Duration in seconds since this vehicle entered a safezone,
+ or -1 if it's not in a safezone.
+
+
+
+
+ Should askDamage requests currently be ignored because we are inside a safezone?
+
+
+
+
+ Nelson 2024-06-24: This property is confusing, especially with isEnginePowered, but essentially represents
+ starting the engine ignition when a player enters the driver's seat. If true, there's a driver, there was
+ sufficient battery to start (or battery not required), and the engine wasn't underwater.
+
+
+
+
+ Doesn't imply the vehicle *uses* batteries, only that it contains a battery item with some charge left.
+
+
+
+
+ Doesn't imply the vehicle *uses* batteries, only that it contains a (potentially uncharged) battery item.
+
+
+
+
+ Nelson 2024-11-13: Adding this primarily to indicate whether a vehicle was spawned by the level versus
+ placed by a player or bought from a vendor. This way if the number of "naturally"-spawned vehicles is below
+ a certain threshold the level can spawn more. (e.g., a server where players have hoarded a bunch of
+ vendor-purchased vehicles and no default vehicles are left for new players.)
+
+ Only available on the server.
+ Defaults to true for old saves to prevent suddenly spawning a bunch more vehicles.
+
+
+
+
+ Whether the player can shoot their equipped turret.
+
+
+
+
+ Do any of the passenger seats have a player?
+
+
+
+
+ When the server saves it doesn't include any cleared vehicles.
+
+
+
+
+ If true, the vehicle will be destroyed at the end of the frame. Set before OnPreDestroyVehicle.
+ Used to reject requests to enter the vehicle on the same frame it's being destroyed.
+
+
+
+
+ Magnitude of rigidbody velocity, replicated by current simulation owner.
+
+
+
+
+ Rigidbody velocity along forward axis, replicated by current simulation owner.
+
+
+
+
+ Replicated by current simulation owner. Target velocity used, e.g., for helicopter engine speed.
+
+
+
+
+ [0, 1] If forward velocity is greater than zero, get normalized by target forward speed. If less than zero,
+ get normalized by target reverse speed. Result is always positive.
+
+
+
+
+ Animated toward ReplicatedForwardVelocity.
+
+
+
+
+ Animated toward ReplicatedVelocityInput.
+
+
+
+
+ [-1.0, 1.0] Available on both client and server.
+
+
+
+
+ Animated towards replicated steering angle. Used for steering wheel and front steering column.
+ Non-simulating wheels (e.g., car driven by remote client) use this as steering angle multiplied by their
+ per-wheel .
+
+
+
+
+ Front steering column of bicycles and motorcycles.
+
+
+
+
+ If true, server should replicate latest state to clients.
+
+
+
+
+ Used by several engine modes to represent an interpolated velocity target according to input.
+
+
+
+
+ Set from inputTargetVelocity then multiplied by any factors which shouldn't affect the player's "target"
+ speed ike boatTraction.
+
+
+
+
+ Vehicles with buoyancy interpolate this value according to whether it's in the water, and multiply
+ boat-related forces by it.
+
+
+
+
+ Rigidbody on the Vehicle prefab.
+ (not called "rigidbody" because as of 2024-02-28 the deprecated "rigidbody" property still exists)
+
+
+
+
+ Primarily for backwards compatibility with plugins. Previously, multiple "updates" could be queued per
+ vehicle and sent to clients. This list was public, unfortunately, so plugins may rely on submitting vehicle
+ updates. After making it obsolete each vehicle can only be flagged as needing a replication update, and
+ this is reset after each server replication update.
+
+
+
+
+ Is player currently allowed to repair this vehicle?
+
+
+
+
+ Give battery item to player and set battery charge to zero.
+
+
+
+
+ Nelson 2024-06-24: Previously, this wouldn't give an item to the player if the quality was zero. Now it
+ trusts the caller to validate we have a battery item to give, and respects .
+
+
+
+
+ Can a tire item be used with this vehicle?
+
+
+
+
+ Find the index of the wheel collider that contains this position.
+
+
+
+
+ Find the index of the wheel collider closest to this position, or -1 if not near any.
+
+
+
+
+ Called during simulate at fixed rate.
+
+
+
+
+ Is a given player allowed access to this vehicle?
+
+
+
+
+ If true, sentry ignores this vehicle early in target scanning.
+ Friendly if locked by owner/group of sentry, or driven by owner/group of sentry.
+
+
+
+
+ Average vehicle-space position of wheel bases.
+
+
+
+
+ Turn taillights on/off depending on state.
+
+
+
+
+ This check should really not be necessary, but somehow it is a recurring issue that servers get slowed down
+ by something going wrong and the vehicle exploding a billion times leaving items everywhere.
+
+
+
+
+ VehicleManager expects this to only find the seat, not add the player,
+ because it does a LoS check.
+
+
+
+
+ Call on the server to empty the vehicle of passengers.
+
+
+
+
+ Kicks them out even if there isn't a good spot. Used when killing the occupant.
+
+ True if player is seated, false otherwise.
+
+
+
+ Can a safe exit point currently be found?
+
+ Called when considering to add a new passenger to prevent players from entering
+ a vehicle that they wouldn't be able to exit properly.
+
+
+
+
+ Could a player capsule fit in a given exit position?
+
+
+
+ True if anything was hit.
+
+
+
+ Raycast along a given direction, penetrating through barricades attached to THIS vehicle.
+ Returns point at the end of the ray if unblocked, or a safe (radius) distance away from hit.
+
+
+
+
+ Fallback if there are absolutely no good exit points.
+ Sets point and angle with a normal player spawnpoint.
+
+ Once vehicle is completely surrounded there is no nice way to pick an exit point. Finding
+ a point upwards is abused to teleport upward into bases, finding an empty capsule nearby is
+ abused to teleport through walls, so if we're sure there isn't a nice exit point we can
+ fallback to teleporting them to a safe spawnpoint.
+
+
+
+ True if we can safely exit.
+
+
+
+ Initially use tryGetExit to find a safe exit, but if one isn't available then fallback to getExitSpawnPoint.
+
+
+
+
+ Dedicated server simulate driving input.
+
+
+
+
+ -1 is reverse.
+ 0 is neutral.
+ +1 is index 0 in gear ratios list.
+
+
+
+
+ Engine RPM replicated by current simulation owner.
+
+
+
+
+ Animated toward ReplicatedEngineRpm.
+
+
+
+
+ Called when engine RPM exceeds threshold and there are more gears available.
+ Purpose is to skip gear numbers that don't bring engine RPM within threshold (if possible).
+
+
+
+
+ Called when engine RPM is below threshold and there are more lower gears available.
+ Purpose is to skip gear numbers that don't bring engine RPM within threshold (if possible).
+
+
+
+
+ Client simulate driving input.
+
+
+
+
+ Nelson 2025-05-05: ran into a bug where our manual OnUpdate is called before Unity calls Start!
+
+
+
+
+ Nelson 2025-05-02: keeping the previous comment from 2020-11-26 here. At first I wondered if 24 vehicles
+ wasn't enough to properly test, but even with a higher vehicle count it can seemingly be *slower* to
+ call Update manually. That said, calling Update manually does give us the option to time-slice vehicle
+ updates. On the client and singleplayer we now update vehicles outside render distance at a lower
+ frequency which saves ~0.1 ms per frame on my PC.
+
+ 2020-11-26 experimented with dispatching all vehicle updates from C# in VehicleManager because they make up
+ a significant portion of the MonoBehaviour Update, but the savings on my PC with 24 vehicles on PEI was
+ minor. Not worth the potential troubles.
+
+
+
+
+ Nelson 2025-04-22: it hopefully goes without saying the bicycle pedals are janky as heck, I'm just separating
+ out the Update method to make profiling it easier.
+
+
+
+
+ Nelson 2025-04-22: this should ideally be moved into FixedUpdate, incorrect to run in Update.
+
+
+
+
+ Nelson 2025-04-22: this should ideally be moved into FixedUpdate, incorrect to run in Update.
+
+
+
+
+ Update whether this vehicle is inside a safezone.
+ If a certain option is enabled, unlock after time threshold is passed.
+
+
+
+
+ Can be called without calling init.
+
+
+
+
+ Called after initializing vehicle.
+
+
+
+
+ Makes the collision detection system ignore all collisions between this vehicle and the given colliders.
+ Used to prevent vehicle from colliding with attached items.
+
+
+
+
+ Used to disable collision between skycrane and held vehicle.
+
+
+
+
+ Transform used for exit physics queries.
+
+
+
+
+ Find collider with the largest volume to use for exit physics queries.
+
+
+
+
+ Set material on DepthMask child renderer responsible for hiding water when interior of vehicle is submerged.
+
+
+
+
+ Skin material does not always need to be destroyed, so this is only valid if it should be destroyed.
+
+
+
+
+ Materials that should be destroyed when this vehicle is destroyed.
+
+
+
+
+ Handles to unregister from DynamicWaterTransparentSort.
+
+
+
+
+ Materials to set _PaintColor on.
+
+
+
+
+ Materials to move UVs in sync with wheels.
+
+
+
+
+ Time.time decayTimer was last updated.
+
+
+
+
+ Seconds since vehicle was interacted with.
+
+
+
+
+ Fractional damage counter.
+
+
+
+
+ transform.position used to test whether vehicle is moving.
+
+
+
+
+ Text from *.dat localization file.
+
+
+
+
+ Older *.content asset bundle reference.
+
+
+
+
+ Newer *.masterbundle reference.
+
+
+
+
+ Optional URL to open in web browser.
+
+
+
+
+ Whether audio source should loop.
+
+
+
+
+ Append suffix to name, or if name contains a '.' insert it before.
+
+
+
+
+ Vendor asset that owns this buy/sell record.
+
+
+
+
+ If not null, replaces item/vehicle description.
+
+
+
+
+ Allows Unity events to startle nearby animals and zombies.
+
+
+
+
+ Transform to spawn the alert at.
+ If unset, this game object's transform will be used instead.
+
+
+
+
+ If true, find the nearest player within ScanForPlayersRadius, and use the player's position as the alert
+ origin.
+
+
+
+
+ If UseScanForPlayers is enabled and this is true, an alert is broadcast even if no nearby player was found.
+ Otherwise, alert is ignored if no nearby player was found.
+
+
+
+
+ Used in a test scene to quickly test whether pooled components are cleaned up.
+
+
+
+
+ Invoked after any player's stance changes (not including loading).
+
+
+
+
+ Stance to fit available space when loading in.
+
+
+
+ Distance zombies can detect this player within.
+
+
+
+ Older, cached version of areEyesUnderwater.
+
+
+
+
+ Return false if there are any external restrictions (e.g. reloading, handcuffed) preventing climbing.
+
+
+
+
+ Test whether bottom of controller is currently inside a water volume.
+
+
+
+
+ Test whether viewpoint is currently inside a water volume.
+
+
+
+
+ Test whether body is currently inside a water volume.
+ Enters the swimming stance while true.
+
+
+
+
+ Draw debug capsule matching the player size.
+
+
+
+
+ Draw standing-height debug capsule matching the player size.
+
+
+
+
+ Is there enough height for our capsule at a position?
+
+
+
+
+ Could a standing player capsule fit at the given position?
+
+
+
+
+ Could a crouching player capsule fit at the given position?
+
+
+
+
+ Could a prone player capsule fit at the given position?
+
+
+
+
+ Could a standing player capsule teleport to the given position?
+
+
+
+
+ Is there any compatible stance that can fit at position?
+
+
+
+
+ Using our capsule's current height would there be enough space at a given position?
+
+
+
+
+ Does capsule have appropriate clearance for a pending height change?
+
+
+
+
+ Replicate stance to clients.
+
+
+
+
+ Regular interact ray still hits the ladder, but we only allow climbing within a smaller range to make its
+ teleport less powerful.
+
+
+
+
+ Ladder forward ray is 0.75m, so we move slightly less than that away from the ladder.
+
+
+
+
+ Export JSON report of Unturned's assets for economy usage.
+
+
+
+
+ If true, contains child transform named Effect for mythical attachment.
+
+
+
+
+ Attachment item IDs that get skinned specially.
+
+
+
+
+ Is there a fallback material for attachments that respects their main metallic areas?
+
+
+
+
+ Is there a fallback material without any special features?
+
+
+
+
+ Is there a replacement mesh?
+
+
+
+
+ Dawn and dusk skins pull per-lighting colors.
+
+
+
+
+ Pool lists to avoid loopback re-using an existing list.
+ Callers do not need to manually return lists because they are reset before each frame.
+
+
+
+
+ Exit button only needs to wait for timer in certain conditions.
+
+
+
+
+ Does the item being placed count as a "trap" for the purposes of vehicle placement restrictions?
+
+
+
+
+ Should placement ghost material change be done recursively?
+ e.g. Sentry has a deep hierarchy of meshes.
+
+
+
+
+ Given path to a workshop map, try to find its /Bundles folder.
+
+
+
+
+ Given path to a workshop map, try to find its /Content folder.
+
+
+
+
+ Maps on the workshop are a root folder named after the published file id, containing
+ the map folder itself with the level name. In order to load the map's bundles and content
+ properly we need to find the nested Bundles and Content folders.
+
+
+
+
+ 2023-02-28: note order is important because BarricadeManager saves as a byte!
+
+
+
+
+ Invoked after tellGesture is called with the new gesture.
+
+
+
+
+ Empty transform created at the world origin.
+ The first-person Viewmodel transform is re-parented to this.
+
+
+
+
+ Child of the first-person skull transform.
+
+
+
+
+ Camera near world origin masking the first-person arms and weapon.
+
+
+
+
+ Used by gun to hide viewmodel arms while aiming 2D scope, and by chainsaw to shake the viewmodel.
+
+
+
+
+ Used to hide viewmodel arms while using a vehicle turret gun.
+
+
+
+
+ Offsets main camera and aim rotation while aiming with a scoped gun.
+
+
+
+
+ Animated toward viewmodelSwayMultiplier.
+
+
+
+
+ Small number (0.1) while aiming, 1 while not aiming.
+ Reduces viewmodel animation while aiming to make 3D sights more usable.
+
+
+
+
+ Animated toward viewmodelOffsetPreferenceMultiplier.
+
+
+
+
+ 0 while aiming, 1 while not aiming.
+ Players can customize the 3D position of the viewmodel on screen, but this needs
+ to be blended out while aiming down sights otherwise it would not line up with
+ the center of the screen.
+
+
+
+
+ If true, use the scope aim fov instead of non-scope fov.
+ Useful for players with high (e.g. 160) fov to be able to use scopes.
+
+
+
+
+ Animated toward viewmodelCameraLocalPositionOffset, recoil, and bayonet offsets.
+
+
+
+
+ Abruptly offset when gun is fired, then animated back toward zero.
+
+
+
+
+ Abruptly offset when gun is fired, then animated back toward zero.
+ x = pitch, y = yaw, z = roll
+
+
+
+
+ Abruptly offset when bayonet is used, then animated back toward zero.
+
+
+
+
+ Animated while player is moving.
+
+
+
+
+ Blended from multiple viewmodel parameters and then applied to viewmodelCameraTransform.
+
+
+
+
+ Smoothing adds some initial blend-in which felt nicer for explosion rumble.
+
+
+
+
+ Meshes are disabled until clothing is received.
+
+
+
+
+ Target viewmodelCameraLocalPosition except while driving.
+
+
+
+
+ Animated while playing is moving.
+ x = pitch, y = roll
+
+
+
+
+ Offset when player lands.
+
+
+
+
+ Used to measure change in pitch between frames.
+
+
+
+
+ Used to measure change in yaw between frames.
+
+
+
+
+ Animated according to change in pitch/yaw input between frames so that gun rolls slightly while turning.
+
+
+
+
+ Animated according to change in item position between frames so that animations have more inertia.
+
+
+
+
+ Degrees per meter of item distance travelled.
+ Pitch is driven by vertical displacement, yaw and roll are driven by horizontal.
+ x = pitch, y = yaw, z = roll
+
+
+
+
+ In third-person this delays leaning in case player only wanted
+ to switch camera side without leaning.
+
+
+
+ If true, include current animation speed modifier.
+
+
+
+ At this point camera is already being shook, we just add some of the same shake to viewmodel for secondary motion.
+
+
+
+
+ Called by clothing to make mesh renderers visible.
+
+
+
+
+ Event for server plugins to monitor whether player is in-inventory.
+
+
+
+
+ Rate limit is relatively high because this RPC handles open/close inventory notification.
+
+
+
+
+ Nelson 2024-03-20: Adding this method because (at the time of writing) first and third-person renderers
+ and skeletons are activated/enabled in InitializePlayer, onPerspectiveUpdated, and onLifeUpdated, and I
+ want them to be consistent with the addition of the new NPC Cutscene Mode option.
+
+
+
+
+ 2023-01-18: Viewmodel camera position was originally set during Update (and still is for compatibility),
+ but for aiming alignment that uses the previous frame's animation position, so we also modify during
+ LateUpdate to use this frame's animation position.
+
+
+
+
+ Factor e.g. 2 is a 2x multiplier.
+ Prior to 2022-04-11 this was the target field of view. (90/fov)
+
+
+
+
+ [0, 1] percentage whether a shot decreases ammo count. Defaults to 100%.
+ For example, 0.25 means 25% of shots will use a bullet, while the remaining 75% will be free.
+
+
+
+
+ [0, 1] percentage whether a shot decreases quality. Defaults to 100%.
+ Combined with the gun's chance of decreasing quality.
+
+
+
+
+ Players/zombies within this range are treated as potential targets while scanning.
+
+
+
+
+ Will not lose current target within this range. Prevents target from popping in and out of range.
+
+
+
+
+ If true, this sentry can attack players. Defaults to true.
+
+
+
+
+ If true, this sentry can attack zombies. Defaults to true.
+
+
+
+
+ If true, this sentry can attack animals. Defaults to true.
+
+
+
+
+ If true, this sentry can attack vehicles. Defaults to true.
+
+
+
+
+ If the file already exists when writing we will move it to this path. (public issue #4636)
+
+
+
+
+ If false this barricade cannot take damage.
+
+
+
+
+ Modded barricades can disable pooling if they have custom incompatible logic.
+
+
+
+
+ Defaults to false, except for explosive charges which bypass claims.
+ Requested by Renaxon for collectible barricades that raiders can steal without destroying.
+
+
+
+
+ Defaults to false, except for explosive charges which bypass claims.
+ If true the item can be placed inside player clip volumes. (out of bounds)
+
+
+
+
+ Should door colliders remain active while animation is playing?
+ Enabled by modders trying to make stuff like elevators.
+
+
+
+
+ Optional alternative barricade prefab specifically for the client preview spawned.
+
+
+
+
+ By default, vehicles with "hooks" (such as the Skycrane) cannot pick up vehicles with barricades attached.
+ If all barricades on the vehicle set this to true then the vehicle *can* be picked up. Defaults to false.
+
+
+
+
+ Vehicle to place.
+ Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
+
+
+
+
+ Legacy ID of vehicle to place.
+ Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
+
+
+
+
+ Returned asset is not necessarily a vehicle asset yet: It can also be a VehicleRedirectorAsset which the
+ vehicle spawner requires to properly set paint color.
+
+
+
+
+ Can be added to any GameObject with a Trigger to receive events.
+ Ensure that Layer will detect player overlaps. Trap is a good candidate.
+
+
+
+
+ Invoked when a player enters the trigger.
+ Called before OnFirstPlayerEnter.
+
+
+
+
+ Invoked when a player exits the trigger.
+ Called before OnAllPlayersExit.
+
+
+
+
+ Invoked when first player enters the trigger, and not again until all players have left.
+ Called after OnPlayerEnter.
+
+
+
+
+ Invoked when last player exits the trigger.
+ Called after OnPlayerExit.
+
+
+
+
+ Nelson 2024-12-16: This menu and ESteamUGCType are far from ideal, but I'm just trying to hack in a new tag for
+ server browser curation assets before the update. :P
+
+
+
+
+ Nelson 2025-02-20: Hacking this in to address duplicate buttons when onPublishedAdded is called for a second
+ page of published files. (public issue #4882)
+
+
+
+
+ Allows Unity events to spawn items.
+
+
+
+
+ Called when the player clicks the cosmetic, visual or skin toggle buttons.
+
+
+
+
+ Invoked after any player's shirt values change (not including loading).
+
+
+
+
+ Invoked after any player's shirt values change (not including loading).
+
+
+
+
+ Invoked after any player's hat values change (not including loading).
+
+
+
+
+ Invoked after any player's backpack values change (not including loading).
+
+
+
+
+ Invoked after any player's backpack values change (not including loading).
+
+
+
+
+ Invoked after any player's backpack values change (not including loading).
+
+
+
+
+ Invoked after any player's glasses values change (not including loading).
+
+
+
+
+ Null if not bookmarked.
+
+
+
+
+ DNS entry to use if adding a bookmark for this server.
+
+
+
+
+ Adjusts width and spacing of buttons along the bottom of the screen.
+ Favorite and bookmark buttons can be hidden depending whether the necessary server details are set.
+
+
+
+
+ Sort items with lowest "amount" to front of list.
+
+
+
+
+ Sort items with highest "amount" to front of list.
+
+
+
+
+ Sort items with lowest quality% to front of list.
+
+
+
+
+ Sort items with highest quality% to front of list.
+
+
+
+
+ Sum up number of items found, ignoring amount.
+ Default except as described in TotalAmount comment.
+
+
+
+
+ Sum up "amount" of each item. Optionally counting zero as one (ShouldCountEmptyAsOne).
+ Default for legacy "ammo type" blueprints and FillTargetItem operation.
+
+
+
+
+ Note: if calling ItemRef.Get() please use FindItemAsset instead to avoid redundant asset lookups.
+
+
+
+
+ If true, items with an "amount" of zero are included in eligible supplies as amount 1.
+ In practice (as of 2025-03-03), items with zero amount are empty containers such as magazines.
+
+
+
+
+ Determines how totalAmount of each input is calculated.
+
+
+
+
+ If true, items with an "amount" of zero are included in eligible supplies.
+ Otherwise, they are ignored (default).
+
+
+
+
+ If true, items with an "amount" >= their MaxAmount are ignored. Otherwise, they are eligible (default).
+
+
+
+
+ If true, items with quality of 100% are eligible (default). Otherwise, they are ignored.
+
+
+
+
+ Controls which items are used first. For example, whether to use the lowest quality items first.
+
+
+
+
+ If true, delete input item. Defaults to true.
+ Replaces the "tool" blueprint option.
+
+
+
+
+ Does this blueprint input require the specified item?
+
+
+
+
+ Controls whether vehicle allows barricades to be attached to it.
+
+
+
+
+ Vehicle does not override placement. This means, by default, that barricades can be placed on the vehicle
+ unless the barricade sets Allow_Placement_On_Vehicle to false. (e.g., beds and sentry guns) Note that
+ gameplay config Bypass_Buildable_Mobility, if true, takes priority.
+
+
+
+
+ Vehicle allows any barricade to be placed on it, regardless of the barricade's Allow_Placement_On_Vehicle
+ setting. The legacy option for this was the Supports_Mobile_Buildables flag. Vanilla trains originally
+ used this option, but it was exploited to move beds into tunnel walls.
+
+
+
+
+ Vehicle prevents any barricade from being placed on it. Note that gameplay config Bypass_Buildable_Mobility,
+ if true, takes priority.
+
+
+
+
+ Scene hierarchy path relative to vehicle root.
+
+
+
+
+ Index in renderer's materials array.
+
+
+
+
+ If true, apply to every item in renderer's materials array.
+
+
+
+
+ Controls how vehicle's default paint color (if applicable) is chosen.
+
+
+
+
+ Not configured.
+
+
+
+
+ Pick from the DefaultPaintColors list.
+
+
+
+
+ Pick a random HSV using VehicleRandomPaintColorConfiguration.
+
+
+
+
+ Wheel does not affect steering.
+
+
+
+
+ Set steering angle according to and .
+
+
+
+
+ Increase or decrease motor torque to rotate vehicle in-place. (Tanks)
+
+
+
+
+ For , indicates how a positive motor torque (forward) rotates
+ the vehicle.
+
+
+
+
+ Wheels on the left side are Clockwise and wheels on the right side are Counter-Clockwise.
+
+
+
+
+ Positive motor torque on this wheel rotates the vehicle clockwise.
+
+
+
+
+ Positive motor torque on this wheel rotates the vehicle counter-clockwise.
+
+
+
+
+ Controls whether wheel creates particle kickup effects for the ground surface material underneath.
+
+
+
+
+ Turn off motion effects. Default for wheels not using collider pose.
+
+
+
+
+ Enable motion effects. Default for wheels using collider pose.
+
+
+
+
+ Enable motion effects, but turn them off while moving backward.
+
+
+
+
+ Enable motion effects, but turn them off while moving forward.
+
+
+
+
+ [0, 1] color will have zero saturation if random value is less than this. For example, 0.2 means 20% of
+ vehicles will be grayscale.
+
+
+
+
+ If true, this configuration was created by .
+ Otherwise, this configuration was loaded from the vehicle asset file.
+
+
+
+
+ Transform path relative to Vehicle prefab with WheelCollider component.
+
+
+
+
+ If true, WheelCollider's motorTorque is set according to accelerator input.
+
+
+
+
+ Transform path relative to Vehicle prefab. Animated to match WheelCollider state.
+
+
+
+
+ If true, model is animated according to steering input.
+ Only kept for backwards compatibility. Prior to wheel configurations, only certain WheelColliders actually
+ received steering input, while multiple models would appear to steer. For example, the APC's front 4 wheels
+ appeared to rotate but only the front 2 actually affected physics.
+
+
+
+
+ If true, model ignores isModelSteered and instead uses WheelCollider.GetWorldPose when simulating or the
+ replicated state from the server when not simulating. Defaults to false.
+
+
+
+
+ If greater than zero, visual-only wheels (without a collider) like the extra wheels of the Snowmobile use
+ this radius to calculate their rolling speed.
+
+
+
+
+ If set, visual-only wheels without a collider (like the back wheels of the snowmobile) can copy RPM from
+ a wheel that does have a collider. Requires modelRadius to also be set.
+
+
+
+
+ If set, wheel model uses this crawler track's speed (average RPM of wheels). Prevents wheel model from
+ spinning out of sync with overall track.
+
+
+
+
+ Target steering angle is multiplied by this value. For example, can be set to a negative number for
+ rear-wheel steering. Defaults to 1.
+
+
+
+
+ Vertical offset of model from simulated suspension position.
+
+
+
+
+ How quickly to interpolate model toward suspension position in meters per second.
+ If negative, position teleports immediately.
+
+
+
+
+ Nelson 2024-12-06: Initially implemented as a minimum and maximum percentage of normalized forward velocity,
+ but think this is more practical. I can't think of why we would use values other than -1, 0, +1 for that,
+ and if we did we'd probably want some tuning for the angle particles are emitted at.
+
+
+
+
+ If true, wheel should fly off when vehicle explodes. Defaults to true.
+ Used to simplify destroying vehicles with crawler tracks.
+
+
+
+
+ Default.
+
+
+
+
+ Set pitch and volume of a single clip according to engine RPM.
+
+
+
+
+ Offsets a crawler track's material UV offset in sync with wheels rolling.
+
+
+
+
+ Scene hierarchy path relative to vehicle root.
+
+
+
+
+ Index in renderer's materials array.
+
+
+
+
+ Indices of wheels to copy RPM from.
+
+
+
+
+ How far to travel to offset UV 1x. (1/x)
+
+ You can calculate RepeatDistance by selecting an edge parallel to the crawler track and dividing the UV
+ distance by the physical 3D distance. For example, if the UV length is 2 and the 3D length is 1.5 m then
+ the texture repeats 1.33 UV/m.
+
+
+
+
+ UV mainTextureOffset per distance traveled.
+
+
+
+
+ Please refer to:
+
+
+
+
+ Please refer to:
+
+
+
+
+ Supports redirects by VehicleRedirectorAsset.
+
+ "Shared Skins" were implemented when there were several asset variants of each vehicle. For example,
+ Off_Roader_Orange, Off_Roader_Purple, Off_Roader_Green, etc. Each vehicle had their "shared skin" set to
+ the same ID, and the skin asset had its target ID set to the shared ID. This isn't as necessary after
+ merging vanilla vehicle variants, but some mods may rely on it, and it needed GUID support now that the
+ target vehicle might not have a legacy ID.
+
+
+
+
+ Prevents calling getOrLoad redundantly if asset does not exist.
+
+
+
+
+ Clip.prefab
+
+
+
+
+ Vehicle.prefab
+
+
+
+
+ Nelson 2024-02-28: Prior to the VehicleWheelConfiguration class, most of the wheel configuration was
+ inferred during InteractableVehicle initialization from the children of the "Tires" and "Wheels" transforms.
+ Confusingly, "Tires" only contains WheelColliders and "Wheels" only contains the visual models. Rather than
+ keeping the old behavior in InteractableVehicle alongside the newer more configurable one, we match the old
+ behavior here to generate an equivalent configuration.
+
+ Note that must be initialized before this is called (by loading model).
+
+
+
+
+ Maximum (negative) velocity to aim for while accelerating backward.
+
+
+
+
+ Maximum speed to aim for while accelerating backward.
+
+
+
+
+ Maximum velocity to aim for while accelerating forward.
+
+
+
+
+ Maximum speed to aim for while accelerating forward.
+
+
+
+
+ Steering angle range at zero speed.
+
+
+
+
+ Steering angle range at target maximum speed (for the current forward/backward direction).
+
+
+
+
+ Steering angle rotation change in degrees per second.
+
+
+
+
+ Added or subtracted from wheel motor torque in mode.
+
+
+
+
+ When a wheel is in mode and a steering input is applied the
+ stiffness is multiplied by this factor. This allows the vehicle
+ to rotate in-place with a lower steering torque, which helps prevent the vehicle from going out of control
+ while turning and accelerating.
+
+
+
+
+ Multiplier for and
+ while at target maximum speed (for the current forward/backward direction).
+
+
+
+
+ Torque on Z axis applied according to steering input for bikes and motorcycles.
+
+
+
+
+ If true, leaning force is multiplied by normalized speed to the power of steeringLeaningForceSpeedExponent.
+ Defaults to false.
+
+
+
+
+ Refer to steeringLeaningForceShouldScaleWithSpeed.
+
+
+
+
+ If true, explosion will damage nearby entities and kill passengers.
+
+
+
+
+ Only used if ShouldExplosionBurnMaterials. Optional. Allows specifying which renderers to burn.
+
+
+
+
+ When true the bicycle animation is used and extra speed is stamina powered.
+ Bad way to implement it.
+
+
+
+
+ Can this vehicle ever spawn with a charged battery?
+ Uses game mode battery stats when true, or overrides by preventing battery spawn when false.
+
+
+
+
+ Battery charge when first spawning in is multiplied by this [0, 1] number.
+
+
+
+
+ Battery decrease per second.
+
+
+
+
+ Battery increase per second.
+
+
+
+
+ Battery item given to the player when a specific battery hasn't been manually
+ installed yet. Defaults to the vanilla car battery (098b13be34a7411db7736b7f866ada69).
+
+
+
+
+ Fuel decrease per second.
+
+
+
+
+ Client sends physics simulation results to server. If upward (+Y) speed exceeds this, mark the move invalid.
+
+
+
+
+ Client sends physics simulation results to server. If downward (-Y) speed exceeds this, mark the move invalid.
+
+
+
+
+ If distance between client-submitted hit position and vehicle pivot point is too high the hit will be
+ marked invalid. This multiplies the distance threshold, useful for very fast vehicles.
+
+
+
+
+ Vertical first-person view translation.
+
+
+
+
+ Vertical first-person view translation.
+
+
+
+
+ Base damage to players when traveling at 1 m/s. Defaults to 10.
+
+
+
+
+ Base damage to zombies when traveling at 1 m/s. Defaults to 15.
+
+
+
+
+ Base damage to animals when traveling at 1 m/s. Defaults to 15.
+
+
+
+
+ Base damage to objects when traveling at 1 m/s. Defaults to 30.
+
+
+
+
+ Base damage to trees when traveling at 1 m/s. Defaults to 85.
+
+
+
+
+ If speed multiplied by is less than this, no damage is applied.
+ Defaults to 3.
+
+
+
+
+ Multiplier for damage from crashing into things.
+ Not applicable if is false.
+ Defaults to 1.
+
+
+
+
+ To non-explosions.
+
+
+
+
+ Mega zombie rocks, zombies, animals.
+
+
+
+
+ Crashing into stuff.
+
+
+
+
+ Can this vehicle be repaired by a seated player?
+
+
+
+
+ Can mobile barricades e.g. bed or sentry guns be placed on this vehicle?
+
+
+
+
+ Should capsule colliders be added to seat transforms?
+ Useful to prevent bikes from leaning into walls.
+
+
+
+
+ Can players lock the vehicle to their clan/group?
+ True by default, but mods want to be able to disable.
+
+
+
+
+ Can players steal the battery?
+
+
+
+
+ Spawn table to drop items from on death.
+
+
+
+
+ Minimum number of items to drop on death.
+
+
+
+
+ Maximum number of items to drop on death.
+
+
+
+
+ Item ID of compatible tire.
+
+
+
+
+ If greater than zero, torque is applied on the local Z axis multiplied by this factor.
+ Note that is critical for damping this force.
+
+
+
+
+ Exponent on the [0, 1] factor representing how aligned the vehicle is with the ground up vector.
+
+
+
+
+ If greater than zero, an acceleration is applied to angular velocity on Z axis toward zero.
+
+
+
+
+ Indices of wheels using replicated collider pose (if any).
+ Null if not configured or no wheels using this feature.
+ Allows client and server to replicate only the suspension value without other context.
+
+
+
+
+ Indices of wheels with motor torque applied (if any).
+ Used for engine RPM calculation.
+
+
+
+
+ If this and UsesEngineRpmAndGears are true, HUD will show RPM and gear number.
+
+
+
+
+ When engine RPM dips below this value shift to the next lower gear if available.
+
+
+
+
+ When engine RPM exceeds this value shift to the next higher gear if available.
+
+
+
+
+ How long after changing gears before throttle is engaged again.
+
+
+
+
+ How long between changing gears to allow another automatic gear change.
+
+
+
+
+ Minimum engine RPM.
+
+
+
+
+ Maximum engine RPM.
+
+
+
+
+ How quickly RPM can increase in RPM/s.
+ e.g., 1000 will take 2 seconds to go from 2000 to 4000 RPM.
+
+
+
+
+ How quickly RPM can decrease in RPM/s.
+ e.g., 1000 will take 2 seconds to go from 4000 to 2000 RPM.
+
+
+
+
+ Maximum torque (multiplied by output of torque curve).
+
+
+
+
+ Was a center of mass specified in the .dat?
+
+
+
+
+ If hasCenterOfMassOverride, use this value.
+
+
+
+
+ Multiplier for otherwise not-yet-configurable plane/heli/boat forces.
+ Nelson 2024-03-06: Required for increasing mass of vehicles without significantly messing with behavior.
+
+
+
+
+ If set, override the wheel collider mass with this value.
+
+
+
+
+ Null if vehicle doesn't support paint color.
+
+
+
+
+ List of transforms to register with DynamicWaterTransparentSort.
+
+
+
+
+ Null if vehicle doesn't support paint color.
+
+
+
+
+ Null if isn't .
+
+
+
+
+ Pick a random paint color according to . Null if unsupported or not configured.
+
+
+
+
+ If true, Vehicle Paint items can be used on this vehicle.
+ Always false if is false.
+
+ Certain vehicles may support paint colors without also being paintable by players. For example, the creator
+ of a vehicle may want to use color variants without also allowing players to make it bright pink.
+
+
+
+
+ Returns reverseGearRatio for negative gears, actual value for valid gear number, otherwise zero.
+ Exposed for plugin use.
+
+
+
+
+ Get number of reverse gear ratios.
+ Exposed for plugin use.
+
+
+
+
+ Get number of forward gear ratios.
+ Exposed for plugin use.
+
+
+
+
+ Number of tire visuals to rotate with steering wheel.
+
+
+
+
+ If true then level should convert old terrain.
+
+
+
+
+ If true, splatmap conversion should use weights as-is.
+
+
+
+
+ Material guids converted by legacy asset bundle hash or texture names.
+
+
+
+
+ Hash of Trees.dat, or zeroed if any assets were missing locally.
+ Should only be used if level is configured to, as many mod maps are typically missing assets.
+
+
+
+
+ Nelson 2025-06-10: replacement for _trees. Enables trees outside the "insane" level bounds.
+
+
+
+
+ Append all trees in the level to results list.
+
+
+
+
+ Game does not currently have a way to resave level's Config.json file, so instead we save a text file
+ indicating that the terrain auto conversion was performed. If there was a bug with auto conversion then
+ all of the old files are still present and can be re-converted.
+
+
+
+
+ Stagger regional visibility across multiple frames.
+
+
+
+
+ Caches uint16 ID to ID redirects.
+
+
+
+
+ Manages lifetime and attachment of a mythical effect. Added by .
+ Was called `MythicLocker` with a paired `MythicLockee` prior to 2024-06-11.
+
+
+
+
+ https://steamcommunity.com/dev/managegameservers
+
+
+
+
+ IP address, DNS name, or a web address (to perform GET request) to advertise.
+
+ Servers not using Fake IP can specify just a DNS entry. This way if server's IP changes clients can rejoin.
+ For example, if you own the "example.com" domain you could add an A record "myunturnedserver" pointing at
+ your game server IP and set that record here "myunturnedserver.example.com".
+
+ Servers using Fake IP are assigned random ports at startup, but can implement a web API endpoint to return
+ the IP and port. Clients perform a GET request if this string starts with http:// or https://. The returned
+ text can be an IP address or DNS name with optional query port override. (e.g., "127.0.0.1:27015")
+
+
+
+
+ If true, the server lobby warns that in-game ping may be higher than shown. BUT it's shown in the default
+ UI color rather than the "bad" color when flagged by moderation.
+
+
+
+
+ If ready-to-connect messages are received more than twice from the same client in less than this many
+ seconds they will be kicked.
+
+
+
+
+ If bad packets (that *may* be legitimate) are received more than threshold times within this many seconds
+ of each other, reject the calling connection.
+
+
+
+
+ If more than this many bad packets (that *may* be legitimate) are received within window seconds of each
+ other, reject the calling connection.
+
+
+
+
+ If a rate-limited method is called this many times within cooldown window the client will be kicked.
+ For example a value of 1 means the client will be kicked the first time they call the method off-cooldown. (not recommended)
+
+
+
+
+ Only applicable when Fake IP is off. When a client is connecting, if their connection would push the number
+ of simultaneous connections from the same IP address past this number, they are prevented from joining.
+
+ May be useful to prevent against fake join requests coming from a single source IP. (public issue #5001)
+
+ Defaults to a high value because some regions will have many more clients with the same IPv4 address than
+ others. For example, due to Carrier-grade NAT (CGNAT).
+
+
+
+
+ Whether rejections for Max_Clients_With_Same_IP_Address should log to command output. Useful for checking
+ if the limit is appropriate.
+
+
+
+
+ Ordinarily the server should be receiving multiple input packets per second from a client. If more than this
+ amount of time passes between input packets we flag the client as potentially using a lag switch, and modify
+ their stats (e.g. reduce player damage) for a corresponding duration.
+ Minimum value is PlayerInput.MIN_FAKE_LAG_THRESHOLD_SECONDS.
+
+
+
+
+ Whether fake lag detection should log to command output. False positives are relatively likely when client
+ framerate hitches (e.g. loading dense region), so this is best used for tuning threshold rather than bans.
+
+
+
+
+ PvP damage multiplier while under fake lag penalty.
+
+
+
+
+ Should we kick players after detecting spammed calls to askInput?
+
+
+
+
+ Should we kick players if they do not submit inputs for a long time?
+
+
+
+
+ Should the server automatically shutdown at a configured time?
+
+
+
+
+ When the server should shutdown if Enable_Scheduled_Shutdown is true.
+
+
+
+
+ Broadcast "shutting down for scheduled maintenance" warnings at these intervals.
+
+
+
+
+ Should the server automatically shutdown when a new version is detected?
+
+
+
+
+ Unfortunately the server does not have a way to automatically determine the current beta branch.
+
+
+
+
+ Broadcast "shutting down for update" warnings at these intervals.
+
+
+
+
+ Should vanilla text chat messages always use rich text?
+ Servers with plugins may want to enable because IMGUI does not fade out rich text.
+ Kept because plugins might be setting this directly, but it no longer does anything.
+
+
+
+
+ Should the EconInfo.json hash be checked by the server?
+
+
+
+
+ If true, opt-in to SteamNetworkingSockets "FakeIP" system.
+ https://partner.steamgames.com/doc/api/ISteamNetworkingSockets#1
+
+
+
+
+ If greater than zero, vehicles with XZ position outside this threshold are saved in the center of the map.
+ By default, vehicles outside ±40 km are teleported into the map.
+ Intended to help with physics issues caused by vehicles far out in space. (public issue #4465)
+
+
+
+
+ Limit max queue timeout duration so that if server encounters an error or doesn't
+ process the request the client can timeout locally.
+
+
+
+
+ Longer than server timeout so that ideally more context is logged on the server
+ rather than just "client disconnected."
+
+
+
+
+ Original option for disabling item quality. Defaults to true. If false, items spawn at 100% quality and
+ their quality doesn't decrease. For backwards compatibility, the newer per-item-type durability options
+ are ignored if this is off.
+
+
+
+
+ Food-specific replacement for . Defaults to false. If true, food spawns at 100% quality.
+
+
+
+
+ Water-specific replacement for . Defaults to false. If true, water spawns at 100% quality.
+
+
+
+
+ Clothing-specific replacement for . Defaults to false. If true, clothing spawns at 100% quality.
+
+
+
+
+ Weapon-specific replacement for . Defaults to false. If true, weapons spawns at 100% quality.
+
+
+
+
+ Fallback used when spawning an item that doesn't fit into one of the other quality/durability settings.
+ Defaults to false. If true, items spawn at 100% quality.
+
+
+
+
+ Clothing-specific replacement for . Defaults to true. If false, clothing quality
+ doesn't decrease when damaged.
+
+
+
+
+ Melee and gun replacement for . Defaults to true. If false, weapons quality
+ doesn't decrease when used.
+
+
+
+
+ Seconds vehicle can be neglected before it begins taking damage.
+
+
+
+
+ After vehicle has been neglected for more than Decay_Time seconds it will begin taking this much damage per second.
+
+
+
+
+ Vehicles are considered "natural" if they were spawned by the level as opposed to players or vendors.
+ If less than this many natural vehicles exist in the level, more will be spawned. The minimum of this or
+ Max_Instances is used. (i.e., if this value is higher than max instances the max instances value is used
+ instead.)
+
+
+
+
+ Minimum seconds between boss zombie spawns for players doing quests.
+ Players were abusing the spawns to farm boss tier loot.
+
+
+
+
+ Weapon damage multiplier against body, arms, legs. Useful for headshot-only mode.
+
+
+
+
+ Should players be allowed to build on their vehicles?
+
+
+
+
+ Should players be allowed to build traps (e.g. barbed wire) on their vehicles?
+
+
+
+
+ Furthest away from colliders a player can build an item onto their vehicle.
+
+
+
+
+ Furthest away from colliders a player can build a trap (e.g. barbed wire) onto their vehicle.
+
+
+
+
+ [0, 1] percentage of skill levels to retain after death.
+
+
+
+
+ [0, 1] percentage of skill levels to retain after death.
+
+
+
+
+ Number of skill levels to remove after death.
+
+
+
+
+ Number of skill levels to remove after death.
+
+
+
+
+ [0, 1] percentage of experience points to retain after death.
+
+
+
+
+ [0, 1] percentage of experience points to retain after death.
+
+
+
+
+ Should each character slot have separate savedata?
+
+
+
+
+ If true, players will be kicked if their skin color is too similar to one of the level's terrain colors.
+
+
+
+
+ Each per-level custom weather frequency is multiplied by this value.
+
+
+
+
+ Each per-level custom weather duration is multiplied by this value.
+
+
+
+
+ Should ServerTextChatMessenger be allowed to broadcast?
+
+
+
+
+ Should ServerTextChatMessenger be allowed to execute commands?
+
+
+
+
+ Should ClientTextChatMessenger be allowed to broadcast?
+
+
+
+
+ Should ClientTextChatMessenger be allowed to execute commands?
+
+
+
+
+ Should group connections be shown on player list?
+
+
+
+
+ If true, allow automatically creating an in-game group for members of your Steam lobby.
+ Requires Allow_Dynamic_Groups to be enabled as well.
+
+
+
+
+ Is friendly-fire allowed?
+
+
+
+
+ Are sentry guns and beds allowed on vehicles?
+
+
+
+
+ Should holiday (Halloween and Christmas) content like NPC outfits and decorations be loaded?
+
+
+
+
+ Can "freeform" barricades be placed in the world?
+ Defaults to true.
+
+
+
+
+ Can "freeform" barricades be placed on vehicles?
+ Defaults to true.
+
+
+
+
+ If true, aim flinches away from center when damaged.
+ Defaults to true.
+
+
+
+
+ If true, camera will shake near explosions. Can also be toned down client-side in Options menu.
+ Defaults to true.
+
+
+
+
+ If true, crafting blueprints can require nearby workstations. Defaults to true.
+ If false, only the backwards-compatibility "Heat Source" vanilla crafting tag can be required. This
+ functions identically to the cooking-skill-also-requires-heat behavior from before.
+
+
+
+
+ If true, client-side options like damage flinch, explosion camera shake, viewmodel bob are ignored.
+ Defaults to false.
+
+
+
+
+ If true, hide viewmodel while aiming a dual-render scope and show a 2D overlay instead.
+
+ Nelson 2025-07-04: adding this option for backwards compatibility with modded scopes that have a small
+ enough dual-render surface to zoom-*out* when aiming in.
+
+ Defaults to false.
+
+
+
+
+ Scales velocity added to players by explosion knock-back.
+
+
+
+
+ Scales midair input change in player direction.
+
+
+
+
+ Scales midair decrease in speed while faster than max walk speed.
+
+
+
+
+ Scales magnitude of recoil while using first-person perspective.
+
+
+
+
+ Scales magnitude of recoil while aiming in first-person perspective.
+
+
+
+
+ Scales magnitude of recoil inversely with zoom level while aiming in first-person perspective.
+
+
+
+
+ Scales magnitude of recoil while using third-person perspective.
+
+
+
+
+ Scales magnitude of bullet inaccuracy while using third-person perspective.
+
+
+
+
+ [0, 1] Scales how much the first-person move up and down while jumping/landing.
+
+
+
+
+ [0, 1] Scales how much the first-person arms move while ADS.
+
+
+
+
+ Center mythical effect hook horizontally, but maintain vertical placement.
+ Lots of hats/masks/glasses have off-center effects intentionally, but community
+ feedback suggests centering to make effects like circling atoms look better.
+
+
+
+
+ Set mesh of all character mesh renderers.
+ Tries to match renderer index to mesh LOD index.
+
+
+
+
+ Set material of all character mesh renderers.
+
+
+
+
+ Hack for previewing the "aura" cosmetic items.
+
+
+
+
+ If true, this character is for capturing clothing icons.
+
+
+
+
+ Planar reflection component updates its culling distance and culling mask when this is incremented.
+
+
+
+
+ Overrides in-game UI scale setting.
+
+
+
+
+ Distance to use terrain shaders before fallback to a baked texture.
+
+
+
+
+ Higher error reduces vertex density as distance increases.
+
+
+
+
+ Added for players who want to see if they can get better performance with a ridiculously low max draw distance.
+
+
+
+
+ Multiplier for far clip plane distance.
+ Clamped within [0, 1] range to prevent editing config files for an advantage.
+
+
+
+
+ Multiplier for draw distance.
+ Clamped within [0, 1] range to prevent editing config files for an advantage.
+
+
+
+
+ Multiplier for draw distance of optional super-low LOD models.
+ Clamped within [0, 1] range to prevent editing config files for an advantage.
+
+
+
+
+ Vehicles outside this distance are not rendered.
+
+
+
+
+ Called after loading graphics settings from disk so that their values can be adjusted.
+
+
+
+
+ If default resolution is zero, try falling back to a higher one.
+ Used when restoring defaults and validating loaded settings.
+
+
+
+
+ If true, make the game look as nice as possible.
+ Note: certain limits are imposed except in singleplayer to prevent this from being exploited.
+
+
+
+ If true, include current animation speed modifier.
+
+
+ True if an animation was found and started playing.
+
+
+
+ Velocity is directly set to input velocity.
+
+
+
+
+ Velocity is affected by acceleration and deceleration.
+
+
+
+
+ Properties common to asset and extensions. For example both can specify sounds.
+
+
+
+
+ Invokes an event a configured number of times.
+
+
+
+
+ If true the event will only be invoked in offline mode and on the server.
+
+
+
+
+ Invoked multiple times.
+
+
+
+
+ Sanity check all returned elements have a gameObject.
+
+
+
+
+ Create software cursor visual element.
+
+
+
+
+ Create green label in the upper-left.
+
+
+
+
+ Create tooltip visual element.
+
+
+
+
+ Update upper-left green text.
+
+
+
+
+ Update software cursor visual element.
+
+
+
+
+ Find hovered element and update tooltip visibility/text.
+
+
+
+
+ Container for SleekWindow element.
+
+
+
+
+ Container for top-level visual elements.
+
+
+
+
+ Element under the cursor on the previous frame.
+
+
+
+
+ Duration in seconds the cursor has been over the element.
+
+
+
+
+ EconInfo.json hash does not match.
+
+
+
+
+ Master bundle hashes do not match.
+
+
+
+
+ Workshop usage advertised on server list does not match during connect.
+
+
+
+
+ Used by client transport to show a custom localized message.
+
+
+
+
+ Server has not received an auth session response from Steam yet.
+
+
+
+
+ Server has not received an economy response from Steam yet.
+
+
+
+
+ Server has not received a groups response from Steam yet.
+
+
+
+
+ Player nickname exceeds limit.
+
+
+
+
+ Player nickname contains invalid characters.
+
+
+
+
+ Player nickname should not be a number.
+
+
+
+
+ Server did not respond to EServerMessage.Authenticate
+
+
+
+
+ Player resources folders don't match.
+
+
+
+
+ The network identity in the ticket does not match the server authenticating the ticket.
+ This can happen if server's Steam ID has changed from what the client thinks it is.
+ For example, joining a stale entry in the server list. (public issue #4101)
+
+
+
+
+ Level name advertised on server list does not match during connect.
+
+
+
+
+ VAC status advertised on server list does not match during connect.
+
+
+
+
+ BattlEye status advertised on server list does not match during connect.
+
+
+
+
+ Max players advertised on server list does not match during connect.
+
+
+
+
+ Camera mode advertised on server list does not match during connect.
+
+
+
+
+ Combat mode advertised on server list does not match during connect.
+
+
+
+
+ Player's skin color is too similar to one of .
+
+
+
+
+ Steam ID reported by net transport doesn't match client's reported Steam ID.
+ This was exploited to fill the server queue with fake players.
+
+
+
+
+ Received too many connection requests from player in a short window.
+
+
+
+
+ Received too many invalid messages from connection in a short window.
+
+
+
+
+ Same as CUSTOM, but shows the "verify game files" prompt.
+
+
+
+
+ Server limits how many clients are joining from the same IP address.
+ (public issue #5001)
+
+
+
+
+ Does this label fade out as the chat message gets older?
+
+
+
+
+ Chat message values to show.
+
+
+
+
+ Invoked after state is first loaded, synced from server when entering relevancy, or reset.
+
+
+
+
+ Invoked after interaction changes state.
+
+
+
+
+ Number of event hooks monitoring or controlling this.
+ Used to allow client to control remote objects on server.
+
+
+
+
+ Remove items that do not match search text.
+
+
+
+
+ Note SetListing also calls RefreshInCart.
+
+
+
+
+ Cannot be created until store data is available.
+
+
+
+
+ Toggle button to open/close advanced filters panel.
+
+
+
+
+ On/off checkbox for including already-owned items in filter.
+
+
+
+
+ Container for advanced options.
+
+
+
+
+ Displays the current page number.
+
+
+
+
+ Only visible when cart is not empty.
+
+
+
+
+ [0, pageCount)
+
+
+
+
+ If true, listings should be re-filtered when opening the menu.
+
+
+
+
+ Collections of multiple items.
+
+
+
+
+ Discounted items.
+
+
+
+
+ Items marked as new in the Status.json file.
+
+
+
+
+ Items marked as featured in the Status.json file.
+
+
+
+
+ Implemented by "root" component of each entity type that can provide crafting tags to nearby players.
+ This allows overlap with a barricade attached to a vehicle to find the barricade from barricade collider and
+ vehicle from vehicle collider rather than using transform root. Any mod hook extensions to crafting tags will
+ be sibling components or descendants of this component.
+
+
+
+
+ Asset providing tags. For example, a barricade item.
+
+
+
+
+ True if GetAvailableTags can ever add any tags.
+ Used to skip unnecessary line-of-sight tests against (for example) ordinary structures and the like.
+
+
+
+
+ All tags added by this crafting tag provider.
+
+
+
+
+ Rewards to grant when quest is removed without completing.
+ Not granted when player finishes quest.
+
+
+
+
+ Configuration for DedicatedUGC.
+
+
+
+
+ Published workshop file IDs to download.
+
+
+
+
+ Published workshop file IDs whose children (dependencies) should be skipped.
+ Useful if workshop author lists dependencies as a way of advertising.
+
+
+
+
+ Controls SetAllowCachedResponse. Disabled when set to zero.
+ Balance between item change frequency and allowing cached results when query fails.
+
+
+
+
+ Number of total times to try re-submitting failed workshop queries before aborting.
+
+
+
+
+ Should items already installed be loaded?
+
+
+
+
+ Should used items be monitored for updates?
+
+
+
+
+ Seconds to wait before shutting down after an update is detected.
+
+
+
+
+ Message broadcasted when shutdown timer begins.
+
+
+
+
+ Message sent to players when shutdown timer completes.
+
+
+
+
+ Get instance if loaded, but do not load.
+
+
+
+
+ Get instance, or load if not yet loaded.
+
+
+
+
+ Should only be used by .
+ For example: "Condition_##" where ## is an index.
+
+
+
+
+ Nelson 2025-03-11: not *super* happy about having this in here. Needed for UI_Requirements.
+
+
+
+
+ Nelson 2025-03-11: not *super* happy about having this in here. Needed for UI_Requirements.
+
+
+
+
+ If set, only show this condition in the UI when conditions with these indices are met.
+ For example don't show "arrest the criminal (name)" until "investigate crime" is completed.
+
+
+
+
+ Is this condition influenced by a given quest flag?
+ Used by level objects to determine if local player's flag change may affect visibility.
+
+
+
+
+ Replacement for isAssociatedWithFlag to fix quest conditions and somewhat improve perf.
+
+
+
+
+ Intended to replace filling data from constructor.
+
+
+
+
+ Intended to replace filling data from constructor. Legacy is for backwards compatibility with Condition_#_Key
+ format, whereas V2 uses the list and dictionary features.
+
+
+
+
+ Can be added to gun item game objects (including children) to receive events.
+
+
+
+
+ Which attachment type to monitor.
+
+
+
+
+ Optional. If set, only consider item matching this GUID. I.e., slot is considered empty if attached item
+ has a different asset GUID.
+
+
+
+
+ If true, AssetGuidFilter passes when item in slot *doesn't* match GUID.
+
+
+
+
+ Invoked both when:
+ 1. Gun is first equipped and an item is already present in the slot.
+ 2. An item is added to the slot.
+
+
+
+
+ Invoked both when:
+ 1. Gun is first equipped and the slot is empty.
+ 2. An item is removed from the slot.
+
+
+
+
+ Controls whether events are invoked when asset in slot changes.
+
+
+
+
+ Nelson 2025-02-04: Gun attachment slots are currently hard-coded, but if that changes this could be updated
+ with a "custom" option.
+
+
+
+
+ If emptiness of slot doesn't change (attachment replaced), do nothing.
+
+
+
+
+ In addition to regular Attached and Detached events, if the item asset in the slot changes invoke
+ Detached then Attached.
+
+
+
+
+ State doesn't affect AI collision.
+
+
+
+
+ AI collision is blocked when object state is ON.
+
+
+
+
+ AI collision is blocked when object state is OFF.
+
+
+
+
+ Controls how rubble affects Nav game object.
+
+
+
+
+ Default. Destruction of rubble sections does not affect whether Nav game object is active or not.
+
+
+
+
+ AI collision is blocked when any sections are alive. Once all sections are dead AI collision is unblocked.
+
+
+
+
+ The game uses Process.Start to open web links when the Steam overlay is unavailable, which could be exploited
+ to e.g. download and execute files. To prevent this we only allow valid http or https urls.
+
+ If true, prefix with https:// if neither http:// or https:// is specified.
+
+
+
+ This version just doesn't return the parsed URL.
+
+
+
+
+ Resolve spawn table asset if set, otherwise find asset by legacy in-editor ID configuration.
+ Returned asset is not necessarily a vehicle asset yet: It can also be a VehicleRedirectorAsset which the
+ vehicle spawner requires to properly set paint color.
+
+
+
+
+ Used when spawn table asset is not assigned. Pick a random legacy ID using in-editor list of spawns.
+
+
+
+
+ Multiplier for how quickly deadzones deplete a gasmask's filter quality.
+ e.g., 2 is faster (2x) and 0.5 is slower.
+
+
+
+
+ Hack for previewing the "aura" cosmetic items.
+
+
+
+
+ Was redirected to HolidayUtil but kept for plugin backwards compatibility.
+ Refer to HolidayUtil for explanation of this weird situation.
+
+
+
+
+ Was redirected to HolidayUtil but kept for plugin backwards compatibility.
+ Refer to HolidayUtil for explanation of this weird situation.
+
+
+
+
+ The base transform does not rotate, instead a child transform is created with the pivot in the center.
+
+
+
+
+ To work around a uGUI bug we always a sign a texture, even if desiredTexture is null.
+
+
+
+
+ Broadcasts after dedicated server name changes.
+ Command IO interface binds to this rather than having a title-specific method.
+
+
+
+
+ Should the default console I/O handler be created?
+ Plugins can disable on the command line when overriding handler.
+
+
+
+
+ Should the legacy blocking (game thread) console be created?
+
+
+
+
+ Log white information.
+
+
+
+
+ Log yellow warning.
+
+
+
+
+ Log red error.
+
+
+
+
+ Print white message to console.
+
+
+
+
+ Print yellow message to console.
+
+
+
+
+ Print red message to console.
+
+
+
+
+ Cannot use UnturnedLog here because it may recursively call CommandWindow if another exception is thrown.
+
+
+
+
+ Called during Unity Update loop.
+
+
+
+
+ Called during OnApplicationQuit.
+
+
+
+
+ Helper for plugins that want to replace the default without the shouldCreateDefaultConsole flag.
+
+
+
+
+ If true, the player can press Interact [F] when there are no responses
+ and the "next" dialogue will be opened.
+
+
+
+
+ Each dialogue message is separated into multiple pages.
+
+
+
+
+ Current page localized text with name_npc and name_char formatted in.
+
+
+
+
+ Seconds elapsed while viewing current page not including pause timer.
+ Used to gradually show the message text.
+
+
+
+
+ Seconds to wait before resuming pageAnimationTime counting.
+
+
+
+
+ Appends chars from pageFormattedText according to pageAnimationTime.
+
+
+
+
+ Rich text formatting tags to close those opened by visible text in animatedTextBuilder.
+ For example, if animatedTextBuilder includes an opening color=#, this includes the closing color markup.
+ Required depending on Glazier used.
+
+
+
+
+ Number of chars of pageFormattedText currently visible.
+
+
+
+
+ Added to animation visible chars to skip time on markup.
+
+
+
+
+ Seconds elapsed since responses started becoming visible.
+ Used to gradually enable responses rather than all at once.
+
+
+
+
+ Animated toward total number of responses to make them gradually visible.
+
+
+
+
+ If true, animation is finished and there is another page to show when Interact [F] is pressed.
+
+
+
+
+ If true, text on current page is in the process of gradually appearing.
+
+
+
+
+ Used by quest UI to return to current dialogue.
+
+
+
+
+ Update timers and UI for current page index.
+
+
+
+
+ Called when the player presses Interact [F] in dialogue screen.
+
+
+
+
+ Show complete text for the current page and make responses visible.
+ Called if dialogue animation is disabled, and when the player presses Interact [F] during animation.
+
+
+
+
+ Use "Interact" token from translation file.
+
+
+
+
+ If true, description should only be populated with contents from prior to the auto-layout UI changes.
+
+
+
+
+ BuildDescription implementations can use this to concatenate longer strings.
+
+
+
+
+ Which parent to use when attaching an equipped/useable item to the player.
+
+
+
+
+ Helper for plugins that want item prefabs server-side.
+ e.g. Allows item icons to be captured on dedicated server.
+
+
+
+
+ Item name wrapped in color rich text tags according to rarity.
+
+
+
+
+ Hack for Kuwait aura icons.
+
+
+
+
+ Useable subclass.
+
+
+
+
+ Can this useable be equipped by players?
+ True for most items, but allows modders to create sentry-only weapons.
+
+
+
+
+ Can this useable be equipped while underwater?
+
+
+
+
+ Vertical half size of icon camera.
+ Values less than zero are disabled.
+
+
+
+
+ Vertical half size of economy icon camera.
+
+
+
+
+ Should the newer automatic placement and orthographic size for axis-aligned icon cameras be used?
+ Enabled by default, but optionally disabled for manual adjustment.
+
+
+
+
+ Nelson 2025-04-10: adding this for semantics because amount isn't an obvious name.
+
+
+
+
+ If true, item should be removed when "amount" reaches zero.
+ Defaults to true except for magazines.
+
+
+
+
+ Which parent to use when attaching an equipped/useable item to the player.
+
+
+
+
+ If true, equipable prefab is a child of the left hand rather than the right.
+ Defaults to false.
+
+
+
+
+ Whether viewmodel should procedurally animate inertia of equipped item.
+ Useful for low-quality older animations, but modders may wish to disable for high-quality newer animations.
+
+
+
+
+ Defaults to true. If false, the equipped item model is flipped to counteract the flipped character.
+
+
+
+
+ If true, stats like damage, accuracy, health, etc. are automatically appended to the description.
+ Defaults to true.
+
+
+
+
+ Nelson 2024-12-11: This can now be null for cosmetic items (). For those items it wasn't
+ used outside of the main menu 3D item preview, in which case the clothing prefab is typically a better
+ visualization.
+
+
+
+
+ Optional alternative item prefab specifically for the PlayerEquipment prefab spawned.
+
+
+
+
+ Name to use when instantiating item prefab.
+ By default the asset legacy id is used, but it can be overridden because some
+ modders rely on the name for Unity's legacy animation component. For example
+ in Toothy Deerryte's case there were a lot of duplicate animations to work
+ around the id naming, simplified by overriding name.
+
+
+
+
+ Movement speed multiplier while the item is equipped in the hands.
+
+
+
+
+ Sound to play when inspecting the equipped item.
+
+
+
+
+ Sound to play when moving or rotating the item in the inventory.
+
+
+
+
+ When a player dies with this item, should an item drop be spawned?
+
+
+
+
+ Can player click the drop button on this item?
+
+
+
+
+ If this item is compatible with skins for another item, lookup that item's ID instead.
+
+
+
+
+ Defaults to true. If false, skin material and mesh are not applied when is
+ set. For example, a custom axe can transfer the kill counter and ragdoll effect from a vanilla item's skin
+ without also transferring the material and mesh.
+
+
+
+
+ Should friendly-mode sentry guns target a player who has this item equipped?
+
+
+
+
+ Kept in case any plugins refer to it.
+ Renamed to shouldFriendlySentryTargetUser.
+
+
+
+
+ Should players be allowed to start primary/secondary use of this item while inside given safezone?
+ If returns false the primary/secondary inputs are set to false.
+
+
+
+
+ Should this item be deleted when using and quality hits zero?
+ e.g. final melee hit shatters the weapon.
+
+
+
+
+ Should the game destroy all child colliders on the item when requested?
+ Physics items in the world and on character preview don't request destroy,
+ but items attached to the character do. Mods might be using colliders
+ in unexpected ways (e.g., riot shield) so they can disable this default.
+
+
+
+
+ Are there any official skins for this item type?
+ Skips checking for base textures if item cannot have skins.
+
+
+
+
+ Find useableType by useable name.
+
+
+
+
+ V2 is for newer dat list features.
+
+
+
+
+ Legacy is for backwards compatibility with Blueprint_# format.
+
+
+
+
+ V2 is for newer dat list features.
+
+
+
+
+ Legacy is for backwards compatibility with Action_# format.
+
+
+
+ sortOrder values for description lines.
+ Difference in value greater than 100 creates an empty line.
+
+
+
+ Properties common to Gun and Melee.
+
+
+
+
+ Properties common to Barricade and Structure.
+
+
+
+
+ Properties common to Gun, Consumable, and Throwable.
+
+
+
+
+ Properties common to Gun and Melee.
+
+
+
+
+ Properties common to Gun and Melee.
+
+
+
+
+ Properties common to Gun and Melee.
+
+
+
+
+ Properties common to Gun and Melee.
+
+
+
+
+ Remaps asset load requests into a large asset bundle rather than small individual asset bundles.
+
+
+
+
+ Config that contains the actual large AssetBundle.
+
+
+
+
+ Asset path relative to the master AssetBundle.
+
+
+
+
+ Icon visible when this listing is in the cart.
+
+
+
+
+ "SALE" or "NEW" text visible when applicable.
+
+
+
+
+ Tooltip text.
+
+
+
+
+ Holds tooltip text
+
+
+
+
+ Nelson 2025-01-28: This command reproduces a bug destroying the player gameObject if the vehicle is
+ destroyed on the same frame as the request to exit.
+ https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/4760#issuecomment-2613090165
+
+
+
+
+ Speaker writes compressed audio to this buffer.
+ Listener copies network buffer here for decompression.
+
+
+
+
+ Listener writes decompressed PCM data to this buffer.
+
+
+
+
+ Seconds interval to wait between asking recording subsystem for voice data.
+ Rather than polling every frame we wait until data has accumulated to send.
+
+
+
+
+ Seconds to wait before playing back newly received data.
+ Allows a few samples to buffer up so that we don't stutter as more arrive.
+
+
+
+
+ Seconds to wait after playback before stopping audio source.
+ We zero this portion of the clip to prevent pops.
+
+
+
+
+ Max calls to askVoice server will allow per second before blocking their voice data.
+ Prevents spamming many tiny requests bogging down server output.
+
+
+
+
+ Max compressed bytes server will allow per second before blocking their voice data.
+ When logging compressed size they averaged 3000-5000 per second, so this affords some wiggle-room.
+
+
+
+
+ Internal value managed by isTalking.
+
+
+
+
+ Is this player broadcasting their voice?
+ Used in the menus to show an indicator who's talking.
+ Locally set when recording starts/stops, and remotely when voice data starts/stops being received.
+
+
+
+
+ Broadcasts after isTalking changes.
+
+
+
+
+ Can this player currently hear global (radio) voice chat?
+
+
+
+
+ Is the player wearing an earpiece?
+ Allows global (radio) voice chat to be heard without equipping the walkie-talkie item.
+
+
+
+
+ Is a UseableWalkieTalkie currently equipped?
+ Set by useable's equip and dequip events.
+
+
+
+
+ Was the most recent voice data we received sent using walkie talkie?
+
+
+
+
+ Has voice data recently been received, but we're waiting slightly to begin playback?
+ Important to give clip a chance to buffer up so that we don't stutter as more samples arrive.
+
+
+
+
+ AudioSource.isPlaying is not trustworthy.
+
+
+
+
+ Timer counting down to begin playback of recently received voice data.
+ We use a timer rather than availableSamples.Count because a very short phrase could be less than threshold.
+
+
+
+
+ Timer counting down to end playback.
+
+
+
+
+ Accumulated realtime since we last polled data from voice subsystem.
+
+
+
+
+ Last time askVoiceChat was invoked over network.
+
+
+
+
+ Number of times askVoiceChat has been called recently, to prevent calling it many times
+ with tiny durations getting server to relay many packets to clients.
+
+
+
+
+ Total of recent compressed voice payload lengths.
+
+
+
+
+ Realtime since this recent conversation began.
+
+
+
+
+ Only used by plugins.
+ Called on server to allow plugins to override the default area and walkie-talkie voice channels.
+
+
+
+
+ Default culling handler when speaking over walkie-talkie.
+
+
+
+
+ Default culling handler when speaking in proximity.
+
+
+
+
+ Called by owner to relay voice data to clients.
+ Not using rate limit attribute because it internally tracks bytes per second.
+
+
+
+
+ Called by server to relay voice data from clients.
+
+
+
+
+ Set to true during OnDestroy to make sure we don't start recording again.
+
+
+
+
+ If true, SteamUser.StartVoiceRecording has been called without a corresponding call to
+ SteamUser.StopVoiceRecording yet.
+
+
+
+
+ If true, voice toggle is in ON mode.
+
+
+
+
+ Internal value managed by inputWantsToRecord.
+
+
+
+
+ Set by updateInput based on whether voice is enabled, key is held, is alive, etc.
+ Reset to false during OnDestroy to stop recording.
+
+
+
+
+ Called during Update on owner client to start/stop recording.
+
+
+
+
+ Called during Update on owner client to record voice data.
+
+
+
+
+ Play walkie-talkie squawk at our position.
+
+
+
+
+ Start and stop playback of received audio stream.
+
+
+
+
+ Will this component ever need to record voice data?
+
+
+
+
+ Will this component ever need to play voice data?
+ In release builds this is only true for remote clients, but in debug we may want to locally listen.
+
+
+
+
+ Player's voice audio source cached during Start.
+
+
+
+
+ Looping voice audio clip.
+
+
+
+
+ Playback buffer.
+
+
+
+
+ Steam does less work on the main thread if we request samples at the native decompresser sample rate,
+ so the re-sampling can be done on the Unity audio thread instead.
+
+
+
+
+ 1 / frequency
+
+
+
+
+ Number of samples to zero after writing new audio data.
+
+
+
+
+ Are any players standing on the mannequin?
+ Used to prevent exploiting pose switches to push through objects.
+
+
+
+
+ Amount of experience to reward harvesting player.
+
+
+
+
+ If true, harvesting has a chance to provide a second item.
+
+
+
+
+ If true, rain will finish growing the plant.
+
+
+
+
+ NPC rewards to grant upon harvesting the crop.
+
+
+
+
+ Represents an item the vendor is selling to players.
+
+
+
+
+ Refer to NPCItemReward state.
+
+
+
+
+ Represents a vehicle the vendor is selling to players.
+
+
+
+
+ Returned asset is not necessarily a vehicle asset yet: It can also be a VehicleRedirectorAsset which the
+ vehicle spawner requires to properly set paint color.
+
+
+
+
+ If set, takes priority over VehicleRedirectorAsset's paint color and over VehicleAsset's default paint color.
+
+
+
+
+ Added during the UI refactor to catch unhandled mouse clicks during drag.
+
+
+
+
+ Contains inspect item box and invisible button.
+
+
+
+
+ Added during the UI refactor to catch mouse clicks outside the selection box.
+
+
+
+
+ Annoying frustrating workaround for IMGUI. Disable inventory headers, grids and slots while selection is open
+ to prevent them from interfering with selection menu.
+
+
+
+
+ Was ConsumeEvent called during this frame?
+ This is a hack to prevent firing when clicking in the UI on the same frame it closes.
+ Moved from SleekWindow and Event.current.Use() during UI refactor.
+
+
+
+
+ Move item drag visual to the cursor's position.
+
+
+
+
+ Backwards-Compatible Asset Reference with Caching
+ • Supports both GUID and legacy ID.
+ • Caches resolved asset and updates if asset has been reloaded.
+ • Parsing legacy ID without context requires "LegacyType:LegacyID" format. E.g., "Item:4" for the Eaglefire.
+ • See CachingAssetRef if legacy ID support is unnecessary.
+
+
+
+
+ If true, doesn't reference anything.
+ Could also be called "IsZero" or "IsNull".
+
+
+
+
+ Opposite of IsEmpty.
+
+
+
+
+ Assigned GUID, not the referenced asset's GUID.
+
+
+
+
+ Assigned legacy ID, not the referenced asset's legacy ID.
+
+
+
+
+ Assigned legacy type, not the referenced asset's legacy type.
+
+
+
+
+ Doesn't only check (Get() == asset) because a new asset may have loaded.
+ Rather, checks whether GUID or legacy ID (whichever is set) points at asset.
+ If asset is null, returns true if GUID and legacy ID are zero.
+
+
+
+
+ Supports both GUID and legacy ID formats.
+ - If input string contains ':' the first part is EAssetType and the second part is legacy ID.
+ - If defaultLegacyType is not None the input string can be parsed as a legacy ID.
+ - Otherwise, parsed as GUID.
+
+
+
+
+ Supports both GUID and legacy ID formats.
+ - If input string contains ':' the first part is EAssetType and the second part is legacy ID.
+ - Otherwise, parsed as GUID.
+
+
+
+
+ Returns Empty if TryParse returns false.
+
+
+
+
+ Returns Empty if TryParse returns false.
+
+
+
+
+ Enables assigning assetRef from an existing asset without manually calling constructor.
+
+
+
+
+ Enables assigning assetRef from an asset GUID without manually calling constructor.
+
+
+
+
+ Enables assigning assetRef from a non-backwards-compatible asset ref without manually calling constructor.
+
+
+
+
+ Render character with hair and skin otherwise it might be cyan.
+ (public issue #3615)
+
+
+
+
+ If set, audio clip associated with physics material will take priority.
+
+
+
+
+ Collision with speed lower than this value will not play a sound.
+
+
+
+
+ Currently triggers are only used for water.
+
+
+
+
+ Sorts higher rarity items into the front of the list.
+
+
+
+
+ Sorts name alphabetically to the front of the list.
+
+
+
+
+ Sorts type alphabetically to the front of the list.
+
+
+
+
+ [0, 1] blends towards one while active regardless of local volume.
+
+
+
+
+ [0, 1] blends towards one if current volume bitwise AND with asset is non-zero.
+
+
+
+
+ Lesser of global or volume blend alphas.
+
+
+
+
+ If blending was not ticket yet then local blend can use global value, e.g. loading into rain storm.
+
+
+
+
+ Is blendAlpha at 100%?
+
+
+
+
+ [0, 1] Rain puddle alpha cutoff.
+
+
+
+
+ [0, 1] Rain puddle ripples alpha.
+
+
+
+
+ Optional parameter for error logging.
+
+
+
+
+ Run hash algorithm for all data passing through a stream.
+
+
+
+
+ Repurposed from the Modules UI because it was unused.
+
+
+
+
+ Full argument string. Defaults to Environment.CommandLine.
+
+ Nelson 2025-06-17: By default, Steam shows a warning nowadays when the game is launched with externally-provided
+ command-line arguments. For example, when joining a friend via rich presence. The solution is to use the arg
+ string provided by SteamApps.GetLaunchCommandLine, which also supports *changing* the arguments while the app is
+ running. If the environment-provided command-line doesn't contain it, the game will append Steam's launch options.
+
+ Note: Steam override isn't applied until Steam is initialized. (after Dedicator and ModuleManager) Please refer to
+ Setup.cs for the full initialization order.
+
+
+
+
+ Nelson 2025-06-16: Steam doesn't handle "server code" connect URL, but we now support
+ it for rich presence joins via server code for easier inviting friends to private servers.
+
+ When Steam parses a steam://connect/ip:port URL it requires the query port (e.g. 27015).
+
+
+
+
+ Handles these cases:
+ key value -> value
+ key=value -> value
+ key = value -> value
+ key = value -> value
+ key "value with spaces" -> value with spaces
+ key "value with \" quotation marks" -> value with " quotation marks
+
+ Tested in CommandLineTests.cs
+
+
+
+
+ Is the application running as a headless server?
+ Replacement for isDedicated property. The property could not be changed to const in dedicated-server-only
+ builds without potentially breaking plugins. Only development builds can be run as both client or server.
+
+
+
+
+ Are we currently running the standalone dedicated server app?
+
+
+
+
+ Should dedicated server disable requests to internet?
+ While in LAN mode skips the Steam backend connection and workshop item queries.
+ Needs a non-Steam networking implementation before it will be truly offline only.
+
+
+
+
+ Hints/messages are the pop-up texts below the interaction prompt, e.g. "reload" or "full moon rises".
+ Got a complaint that the item placement obstructed hint was shown if placing multiple signs.
+
+
+
+
+ Adjust screen positioning and visibility of player name widgets to match their world-space counterparts.
+
+
+
+
+ Update hitmarker visibility, and their world-space positions if user enabled that.
+
+
+
+
+ Disable hints and messages if no longer applicable.
+
+
+
+
+ Disable vote popup if enough time has passed.
+
+
+
+
+ Pause the game if playing singleplayer and menu is open.
+
+
+
+
+ Many places checked that the cursor and chat were closed to see if a menu could be opened. Moved here to
+ also consider that useable might have a menu open.
+
+
+
+
+ Calculate damage multiplier for individual bullet.
+
+
+
+
+ Each shot has a percentage chance to hit the target. Higher values are more likely to hit. e.g., it
+ decreases from 1.0 at point blank to 0.0 at the weapon's maximum range. This chance is affected by the
+ gun's spread.
+
+
+
+
+ Contains presetsScrollView which contains customPresetsContainer and defaultPresetsContainer.
+
+
+
+
+ Contains column buttons and server list itself.
+
+
+
+
+ Synchronize widgets with their values.
+
+
+
+
+ Each level should have a 380x80 Icon.png file.
+ This class caches them so that the server list can show them quickly.
+
+
+
+
+ Time.time damage was last dealt so that damage is applied once per second.
+
+
+
+
+ Timer increased while taking damage, and reset to zero while inside zone.
+
+
+
+
+ Current position.
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ Is the active level an Arena mode map?
+
+
+
+
+ Find a new smaller circle within the old circle and clamp it to the playable level area.
+
+
+
+
+ Pick a random airdrop node appropriate for the game mode.
+
+
+
+
+ Nelson 2025-04-01: default position intBitCount of 13 has range of [-4096, 4096), but on "insane" size maps
+ the aircraft starts 2 km outside that range. This causes the care package to spawn at the wrong position.
+ Bumping intBitCount to 14 enables a range of [-8192, 8192). (public issue #4972)
+
+
+
+
+ Seconds between weather event starting and reaching full intensity.
+
+
+
+
+ Seconds between weather event ending and reaching zero intensity.
+
+
+
+
+ Sound clip to play. Volume matches the intensity.
+
+
+
+
+ Component to spawn for additional weather logic.
+
+
+
+
+ If per-volume mask AND is non zero the weather will blend in.
+
+
+
+
+ Expands upon Unity physics material properties for gameplay features.
+
+
+
+
+ Originally considered assets for each legacy material with fallback to main material, but the fallback
+ would mean a failed lookup for every property in the vast majority of cases.
+
+
+
+
+ If true, crops can be planted on this material.
+
+
+
+
+ If true, oil drills can be placed on this material.
+
+
+
+
+ For custom friction mode, multiplies character acceleration.
+
+
+
+
+ For custom friction mode, multiplies character deceleration.
+
+
+
+
+ For custom friction mode, multiplies character max speed.
+
+
+
+
+ • Does not support legacy ID.
+ • Caches resolved asset and updates if asset has been reloaded.
+ • See CachingBcAssetRef if legacy ID support is necessary.
+
+
+
+
+ If true, doesn't reference anything.
+ Could also be called "IsZero" or "IsNull".
+
+
+
+
+ Opposite of IsEmpty.
+
+
+
+
+ Assigned GUID, not the referenced asset's GUID.
+
+
+
+
+ Doesn't only check (Get() == asset) because a new asset may have loaded.
+ Rather, checks whether GUID points at asset.
+ If asset is null, returns true if GUID and legacy ID are zero.
+
+
+
+
+ Returns Empty if TryParse returns false.
+
+
+
+
+ Enables assigning assetRef from an existing asset without manually calling constructor.
+
+
+
+
+ Enables assigning assetRef from an asset GUID without manually calling constructor.
+
+
+
+
+ Internal so that CachingBcAssetRef can copy cachedAsset.
+
+
+
+
+ Auto-registering list of volume manager subclasses for level editor.
+
+
+
+
+ Should calling InstantiateVolume create a new volume?
+ False for deprecated (landscape hole volume) types.
+
+
+
+
+ These are methods moved from the Data class which rely on core types and so cannot go in the UnturnedDat assembly.
+
+
+
+
+ Intended as a drop-in replacement for existing assets with property uint16s.
+
+
+
+
+ Intended as a drop-in replacement for existing assets with legacy IDs.
+
+
+
+
+ Enables builder pattern for dat edits.
+ Inclusion of asset type is optional for cases where it's not obvious from context.
+
+
+
+
+ Enables builder pattern for dat edits.
+ Inclusion of asset type is optional for cases where it's not obvious from context.
+
+ Legacy asset references are converted to GUID if the asset is available. If not available, type prefix
+ is only used if legacy type changed.
+
+
+
+
+ This overload assumes legacyType has not changed. This will usually be the case. Legacy type would only
+ change (for example) in cases like spawn tables where they can reference any asset type.
+
+
+
+
+ Kept because lots of modders have been using this script in Unity,
+ so removing legacy effect id would break their content.
+
+
+
+
+ Active while powered.
+
+
+
+
+ This value is confusing because in the level editor it is the normalized radius, but in-game it is the square radius.
+
+
+
+
+ Far clip plane multiplier in-game.
+
+
+
+
+ Far clip plane multiplier in level editor.
+
+
+
+
+ Essentially identical to ContentReference, but MasterBundle is more convenient.
+ Perhaps in the future all asset/content systems will be consolidated.
+
+
+
+
+ Are name or path null or empty?
+
+
+
+
+ Are both name and path non-null and non-empty?
+
+
+
+
+ Name of master bundle file.
+
+
+
+
+ Path to Unity asset within asset bundle.
+
+
+
+
+ Find client with given RPC channel ID.
+
+
+
+
+ Workshop item does not have any IP restrictions in place.
+
+
+
+
+ Workshop item has an IP whitelist, and server IP is not on it.
+
+
+
+
+ Workshop item has an IP blacklist, and server IP is on it.
+
+
+
+
+ Workshop item does have IP restrictions, and server IP is allowed.
+
+
+
+
+ Workshop item has been banned by an admin.
+
+
+
+
+ Workshop item is hidden from everyone.
+
+
+
+
+ Utilities for testing whether a particular server is allowed to download a workshop item.
+ Available from client and server side so that clients can help enforce restrictions.
+
+
+
+
+ Workshop item key-value tag storing IP whitelist and blacklist.
+
+
+
+
+ Get ip restrictions value if set, otherwise null.
+ Can be called from client or server.
+
+
+
+
+ Test whether IP is whitelisted or blacklisted in filter.
+
+
+
+
+ Split x,y-z format into whitelist [x, y] and blacklist [z].
+
+
+
+
+ Split whitelist-blacklist format and parse string IPs into integer IPs.
+
+
+
+
+ Parse CIDR string IPs into integer IPs.
+
+
+
+
+ Added to player's food value.
+
+
+
+
+ Added to player's water value.
+
+
+
+
+ Added to player's virus value.
+
+
+
+
+ Added to player's hallucination value.
+
+
+
+
+ Get animal or player damage based on game mode config.
+
+
+
+
+ Get zombie or player damage based on game mode config.
+
+
+
+
+ Should player/animal/zombie surface be nulled on hit?
+ Requested by spyjack for a chainsaw-style shield that was overboard with the blood.
+
+
+
+
+ Should this weapon bypass the DamageTool.allowedToDamagePlayer test?
+ Used by weapons that heal players in PvE.
+
+
+
+
+ Please refer to ItemWeaponAsset.BuildDescription for an explanation of why this is necessary.
+
+
+
+
+ Please refer to ItemWeaponAsset.BuildDescription for an explanation of why this is necessary.
+
+
+
+
+ Utility for getting local hardware ID.
+
+ One option for future improvement would be using Windows Management Infrastructure (WMI) API:
+ https://github.com/SmartlyDressedGames/Unturned-3.x/issues/1593
+
+
+
+
+ Maximum number of HWIDs before server will reject connection request.
+
+
+
+
+ Get the local hardware ID(s).
+
+
+
+
+ Nelson 2025-05-28: keeping this a struct to simplify memory management (no pool needed). If making this more
+ generic in the future we probably do need to make it a class.
+
+
+
+
+ Only applicable to barricades.
+
+
+
+
+ Preliminary sort order is provided by server, but this takes priority if camera is available.
+
+
+
+
+ Not ideal, but there was a problem because onLevelLoaded was not resetting these after disconnecting.
+
+
+
+
+ Instantiate at least this many items per frame even if we exceed our time budget.
+
+
+
+
+ Called once key/values can be set.
+
+
+
+
+ Lod group will be culled when screen size is smaller than this value.
+
+
+
+
+ Clamp the culling screen percentage to be less than or equal to a maximum value.
+
+
+
+
+ Prevent the lowest LOD from being culled.
+
+
+
+
+ Multiplier to incoming damage. Defaults to 1.0.
+
+
+
+
+ Multiplier to explosive damage. Defaults to value if Armor_Explosion isn't specified.
+
+
+
+
+ Armor against falling damage. Defaults to 1.0, i.e., take the normal amount of damage.
+
+
+
+
+ If true on any worn clothing item, bones never break when falling.
+ Defaults to false.
+
+
+
+
+ Left-handed character skeleton is mirrored, so most item models are mirrored again to preserve appearance.
+ Unfortunately this does not work well for some items e.g. the particle system on Elver/Dango glasses.
+
+
+
+
+ Sound to play when equipped.
+
+
+
+
+ If set, find a child meshrenderer with this name and change its material to the character skin material.
+
+
+
+
+ The player can be wearing both a "real" in-game item and a cosmetic item in the same clothing slot.
+ If true, the real item is shown rather than the cosmetic item. For example, night vision goggles
+ are shown over any glasses cosmetic because of their gameplay-related green glow.
+
+
+
+
+ Overrides value of TakesPriorityOverCosmetic if is true.
+
+
+
+
+ If true, the value of is used rather than .
+ Defaults to false. True if is set.
+
+
+
+
+ For 3D clothes. Ideally, this wouldn't be type specific, but we have a separate prefab property for each
+ type of clothing at the moment.
+
+
+
+
+ The player can be wearing both a "real" in-game item and a cosmetic item in the same clothing slot.
+ This is called on the real item if has not been set.
+ If true, the real item is shown rather than the cosmetic item. If false, the cosmetic item can be seen.
+
+
+
+
+ Durstenfeld version of Fisher-Yates shuffle:
+ https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm
+
+
+
+
+ Same as above, but prevent the last clip from being shuffled to the front in order to prevent repeats.
+
+
+
+
+ Ensures we do not modify the asset in editor.
+
+
+
+
+ Optional case-sensitive identifier in list of blueprints.
+ Added as an alternative to referencing blueprints by index.
+ Defaults to null.
+
+
+
+
+ Index into Owner's blueprints list.
+
+
+
+
+ Operation replaces the special behavior for EBlueprintType.Ammo and EBlueprintType.Repair.
+
+
+
+
+ Note: if resolving ref please use GetCategoryTag instead for caching.
+
+
+
+
+ Category tag replaces the blueprint "Type" which acted as both category AND behaviour modifier.
+
+
+
+
+ Only applicable for operations with a target item.
+
+ Nelson 2025-04-11: initially, this was implemented as the last item in supplies list. However, there are a
+ lot of checks for special handling of target item, so I think it makes sense to separate.
+
+
+
+
+ If not null, these tags must be provided by nearby objects to craft this blueprint.
+ Note: this is the list as-configured. It has not been filtered according to gameplay config.
+
+
+
+
+ If true, and transferState is enabled, delete attached items.
+
+
+
+
+ Must match conditions to craft.
+
+
+
+
+ Extra rewards given after crafting. Not displayed.
+
+
+
+
+ 2023-05-27: requested by Renaxon because some Arid blueprints are debug-only and
+ should not be visible when players search by name. (the 3.23.7.0 update made
+ non-craftable blueprints searchable for Buak)
+
+
+
+
+ Defaults to false. If true, blueprint can become visible in the crafting list even when NPC conditions
+ are not met. This should typically only be enabled if all conditions are configured to be visible in the
+ details panel. Otherwise, the default "conditions unmet" label isn't very informative for players.
+
+
+
+
+ Search output items (excluding target item) for specific item.
+
+
+
+
+ App version string packed into a 32-bit number for replication.
+
+
+
+
+ Path to directory containing "Editor", "Menu", "Player", "Curse_Words.txt", etc files.
+
+
+
+
+ Called clientside by BattlEye when it needs us to send a packet to the server.
+
+
+
+
+ Event for plugins when BattlEye wants to kick a player.
+
+
+
+
+ Called serverside by BattlEye when it needs us to send a packet to a player.
+
+
+
+
+ Call whenever something impacting rich presence changes for example loading a server or changing lobbies.
+
+
+
+
+ Only used on client.
+ Information about current game server retrieved through Steam's "A2S" query system.
+ Available when joining using the Steam server list API (in-game server browser)
+ or querying the Server's A2S port directly (connect by IP menu), but not when
+ joining by Steam ID.
+
+
+
+
+ On client, is current server protected by VAC?
+ Set after initial response is received.
+
+
+
+
+ On client, is current server protected by BattlEye?
+ Set after initial response is received.
+
+
+
+
+ Counts "bad" packets per-connection. Bad packets *may* be legitimate, for example a delayed burst of ping
+ requests. Beyond a certain point, however, it's likely a cheater is trying to waste server processing time.
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ After client submits EServerMessage.Authenticate we are waiting
+ for the EClientMessage.Accepted response.
+
+
+
+
+ Realtime that client sent EServerMessage.Authenticate request.
+
+
+
+
+ File IDs the client thinks the server advertised it was using, or null if UGC response was pending.
+ Prevents the server from advertising a smaller or fake list of items.
+
+
+
+
+ Needed before loading level.
+
+
+
+
+ Only safe to use serverside.
+ Get the list of workshop ids that a client needs to download when joining.
+
+
+
+
+ Only safe to use serverside.
+ Lets clients know that this workshop id is being used on the server, and that they need to download it when joining.
+
+
+
+
+ Channel id was 32-bits, but now that it is in the RPC header it can be 8-bits since there never that many
+ players online. The "manager" components are on channel 1, and each player has a channel.
+
+
+
+
+ Should the network transport layer accept incoming connections?
+ If both the queue and connected slots are full then incoming connections are ignored.
+
+
+
+
+ includeQueuedPlayers ensures player won't be kicked because someone on the same IP joined after them.
+
+
+
+
+ Find player in the queue associated with a client connection.
+
+
+
+
+ Find player associated with a client connection.
+
+
+
+
+ Find net transport layer connection associated with a client steam id. This could be a pending player in the
+ queue, or a fully connected player.
+
+
+
+
+ Find player steam id associated with connection, otherwise nil if not found.
+
+
+
+
+ If there's space on the server, asks player at front of queue for their verification to begin playing.
+
+
+
+
+ Called when determining spawnpoint during player login.
+
+
+
+
+ Is client waiting for response to ESteamPacket.CONNECT request?
+
+
+
+
+ Realtime that client sent ESteamPacket.CONNECT request.
+
+
+
+
+ Nelson 2023-08-09: adding because in some cases, namely workshop download and level loading,
+ we can't properly handle client transport failures because these loading systems don't
+ currently support cancelling partway through. (public issue #4036)
+
+
+
+
+ Manages client to server communication.
+
+
+
+
+ Manages server to client communication.
+
+
+
+
+ Connect to server entry point on client.
+ Requests workshop details for download prior to loading level.
+ Once workshop is ready launch() is called.
+
+
+
+
+ Callback once client transport is ready to send messages.
+
+
+
+
+ Callback when something goes wrong and client must disconnect.
+
+
+
+
+ Multiplayer load level entry point on client.
+ Called once workshop downloads are finished, or we know the server is not using workshop.
+ Once level is loaded the connect packet is sent to the server.
+
+
+
+
+ Event for plugins prior to kicking players during shutdown.
+
+
+
+
+ Set on the server when initializing Steam API.
+ Used to notify pending clients whether VAC is active.
+ Set on clients after initial response is received.
+
+
+
+
+ Set on the server when initializing BattlEye API.
+ Used to notify pending clients whether BE is active.
+ Set on clients after initial response is received.
+
+
+
+
+ Client should call RequestDisconnect instead to ensure all disconnects have a logged reason.
+
+
+
+
+ Internet server callback when backend is ready.
+
+
+
+
+ If missing map is a curated map then log information about how to install it.
+
+
+
+
+ Was not able to find documentation for this unfortunately,
+ but it seems the max length is 127 characters as of 2022-09-12.
+
+
+
+
+ Set key/value tags on Steam server advertisement so that client can display text in browser.
+
+
+
+
+ Set key/value tags on Steam server advertisement so that client can display server config in browser.
+
+
+
+
+ Primarily kept for backwards compatibility with plugins. Some RPCs that reply to sender also use this but
+ should be tidied up.
+
+
+
+
+ Hack to deal with the oversight of reordering the ESteamPacket enum during net messaging rewrite causing
+ older plugins to send wrong packet type.
+
+
+
+
+ Send to a connected client.
+
+
+
+
+ The server ignores workshop info requests if it's been less than 30 seconds,
+ so we cache that info for 1 minute in-case we try to connect again right away.
+
+
+
+
+ This information is needed before the level is loaded.
+
+
+
+
+ Advertised server name. e.g., "Nelson's Unturned Server"
+
+
+
+
+ Name of map to load.
+
+
+
+
+ Legacy difficulty mode that should be removed eventually.
+
+
+
+
+ Perspective settings.
+
+
+
+
+ Server's IP from when we originally received response.
+ Used to test download restrictions.
+
+
+
+
+ Last realtime this cache was updated.
+
+
+
+
+ Hacked-together initial implementation to refuse network messages from specific players.
+ On PC some cheats send garbage packets in which case those clients should be blocked.
+
+
+
+
+ Close connection, and refuse all future connection attempts from a remote player.
+ Used when garbage messages are received from hacked clients to avoid wasting time on them.
+
+
+
+
+ Record that a bad packet was received from connection and maybe kick them if rate limit is exceeded.
+
+
+
+
+ Private to prevent plugins from changing the value.
+
+
+
+
+ Should buffers used by plugin network events be read-only copies?
+
+
+
+
+ First four bytes of RPC messages are the channel id.
+
+
+
+
+ Should players be allowed to join this server regardless of whether their version number matches ours?
+ Useful to allow players to join debug mode servers.
+
+
+
+
+ Is version number supplied by client compatible with us?
+
+
+
+
+ Notify players waiting to join server if their position in the queue has changed.
+
+
+
+
+ Prevent any particular client from delaying the server connection queue process.
+
+
+
+
+ Allows hosting providers to limit the configurable max players value from the command-line.
+
+
+
+
+ Deprecated-ish IPv4 to bind listen socket to. Set by bind command.
+
+
+
+
+ Local address to bind listen socket to. Set by bind command.
+
+
+
+
+ Steam query port.
+
+
+
+
+ If hosting a server, get the game traffic port.
+
+
+
+
+ Called while running
+
+
+
+
+ Used to build packet about each existing player for new player, and then once to build a packet
+ for existing players about the new player. Note that in this second case forPlayer is null
+ because the packet is re-used.
+
+
+
+
+ Not exactly ideal, but this a few old "once per player" client->server RPCs.
+
+
+
+
+ Event for plugins when rejecting a player.
+
+
+
+
+ Notify client that they were kicked.
+
+
+
+
+ Notify client that they were banned.
+
+
+
+
+ Player left server by canceling their ticket, or we are disconnecting them without telling them.
+ Does not send any packets to the disconnecting player.
+
+
+
+
+ Number of transport connection failures on this frame.
+
+
+
+
+ Callback when a pending player or existing player unexpectedly loses connection at the transport level.
+
+
+
+
+ Check whether a server is one of our favorites or not.
+
+
+
+
+ Set whether a server is one of our favorites or not.
+
+
+
+
+ Open URL in the steam overlay, or if disabled use the default browser instead.
+ Warning: any third party url should be checked by WebUtils.ParseThirdPartyUrl.
+
+
+
+
+ Steam's favorites list requires that we know the server's IPv4 address and port,
+ so we can't favorite when joining by Steam ID.
+
+
+
+
+ Toggle whether we've favorited the server we're currently playing on.
+
+
+
+
+ Toggle whether we've bookmarked the server we're currently playing on.
+
+
+
+
+ Ping from client to server, measured in milliseconds.
+
+
+
+
+ Number of seconds since January 1st, 1970 GMT as reported by backend servers.
+
+
+
+
+ Current UTC as reported by backend servers.
+ Used by holiday events to keep timing somewhat synced between players.
+
+
+
+
+ Has the initial backend realtime been queried yet?
+ Not available immediately on servers because SteamGameServerUtils cannot be used until the actual Steam instance is available.
+
+
+
+
+ Invoked after backend realtime becomes available.
+
+
+
+
+ In here because we want to call this very early in startup after initializing provider,
+ but with plenty of time to hopefully install maps prior to reaching the main menu.
+
+
+
+
+ This file is of particular importance to the dedicated server because otherwise Steam networking sockets
+ will say the certificate is for the wrong app. When launching the game outside Steam this sets the app.
+
+
+
+
+ Hackily exposed as an easy way for editor code to check the verison number.
+
+
+
+
+ Has the onApplicationQuitting callback been invoked?
+
+
+
+
+ Moved from OnApplicationQuit when that was deprecated.
+
+
+
+
+ Useful to load files from Steam install of the game while running in the editor.
+
+
+
+
+ Moved from OnApplicationQuit when Application.CancelQuit was deprecated.
+
+
+
+
+ A couple of players have reported the PRO_DESYNC kick because their client thinks they own the gold upgrade,
+ but the Steam backend thinks otherwise. This option is a bit of a hack to work around the problem for them.
+
+
+
+
+ If specified, all Steam achievements and stats progress is lost.
+
+
+
+
+ If specified, all Steam achievements are unlocked during startup.
+
+
+
+
+ Host has not specified a value.
+
+
+
+
+ Not an actual tag. Used for filtering.
+
+
+
+
+ Host has specified that the server does not sell anything for real money.
+
+
+
+
+ Host has specified that the server does have a real money shop, but does not sell anything which affects gameplay.
+
+
+
+
+ Host has specified that the server does have a real money shop which sells benefits that affect gameplay.
+
+
+
+
+ Server list filter for plugin usage.
+
+
+
+
+ Allows Unity events to send text chat messages from the client, for example to execute commands.
+
+
+
+
+ Text to use when SendDefaultTextChatMessage is invoked.
+
+
+
+
+ All players on the server will see the message.
+
+
+
+
+ Only nearby players will see the message.
+
+
+
+
+ Chat mode to send request in.
+
+
+
+
+ Corresponds to not active and not blending with new weather system.
+
+
+
+
+ Corresponds to transitioning in with new weather system.
+
+
+
+
+ Corresponds to active with new weather system.
+
+
+
+
+ Corresponds to transitioning out with new weather system.
+
+
+
+
+ Corresponds to not active and not blending with new weather system.
+
+
+
+
+ Corresponds to transitioning in with new weather system.
+
+
+
+
+ Corresponds to active with new weather system.
+
+
+
+
+ Corresponds to transitioning out with new weather system.
+
+
+
+
+ Kept for backwards compatibility with mod hooks, plugins, and events.
+
+
+
+
+ Kept for backwards compatibility with mod hooks, plugins, and events.
+
+
+
+
+ [0, 1] used to avoid invoking BlendAlphaChanged every frame.
+ Compared against globalBlendAlpha not taking into account local volume.
+
+
+
+
+ Hash of lighting config.
+ Prevents using the level editor to make night time look like day.
+
+
+
+
+ Level designed target fog color.
+
+
+
+
+ Level designed target fog intensity.
+
+
+
+
+ Level designed target atmospheric fog intensity.
+
+
+
+
+ If global ocean plane is enabled then return the worldspace height,
+ otherwise return the optional default value. Default for volume based
+ water is -1024, but atmosphere measure uses a default of zero.
+
+
+
+
+ Ticked on dedicated server as well as client so that server can listen for weather events.
+
+ On dedicated server this is always 0xFFFFFFFF.
+
+
+
+ Reset any global shader properties that may affect the main menu.
+
+
+
+
+ Source effect to group multiple volumes.
+
+
+
+
+ Audio source added to AmbianceAudioGameObject.
+
+
+
+
+ Reset to false before updating volumes.
+
+
+
+
+ Reset to false before updating volumes.
+
+
+
+
+ Reset to zero before updating volumes. If any volume uses distance fadeout, this is the maximum alpha.
+
+
+
+
+ If any volume doesn't use distance fadeout, this is the alpha based on time spent inside..
+
+
+
+
+ Highest priority of overlapping volumes.
+
+
+
+
+ If any volume doesn't use distance fadeout, this is the minimum of their audio fade-in time.
+
+
+
+
+ If any volume doesn't use distance fadeout, this is the minimum of their audio fade-out time.
+ Only reset when created so that value is available after leaving all volumes.
+
+
+
+
+ Visualizes reverb zone in-game.
+
+
+
+
+ Can horde beacons be placed in the associated bounds?
+
+
+
+
+ Overrides vehicle physics values in bulk without building asset bundles.
+
+
+
+
+ Only RPCs from the server will be allowed to invoke this method.
+
+
+
+
+ RPCs are only allowed to invoke this method if we're running as server.
+
+
+
+
+ Only RPCs from the owner of the object will be allowed to invoke this method.
+
+
+
+
+ Maximum number of calls per-second per-player.
+
+
+
+
+ Minimum seconds between calls per-player.
+ Initialized from ratelimitHz when gathering RPCs.
+
+
+
+
+ Index into per-connection rate limiting array.
+
+
+
+
+ Backwards compatibility for older invoke by name code e.g. plugins.
+
+
+
+
+ If changing header size remember to update PlayerManager and allocPlayerChannelId.
+
+
+
+
+ How far to shift compressed voice data.
+
+
+
+
+ If true, this object is owned by a locally-controlled player.
+ For example, some code is not run for "remote" players.
+ Always true in singleplayer. Always false on dedicated server.
+
+
+
+
+ Use on server when invoking client methods on the owning player.
+
+
+
+
+ Replacement for ESteamCall.NOT_OWNER.
+
+
+
+
+ Don't use this. Originally added so that Rocketmod didn't have to inject into the game's assembly.
+
+
+
+ True if the call succeeded, or false if the sender should be refused.
+
+
+
+ Don't use this. Originally added so that Rocketmod didn't have to inject into the game's assembly.
+
+
+
+
+ Calls array needs rebuilding the next time it is used.
+ Should be invoked when adding/removing components with RPCs.
+
+
+
+
+ Does array of RPCs need to be rebuilt?
+
+
+
+
+ Find methods with SteamCall attribute, and gather them into an array.
+
+
+
+
+ Encode byte array of voice data to send.
+
+
+
+
+ Decode voice parameters from byte array.
+
+
+
+
+ If true, light contributes to player spotlight. Defaults to true.
+
+ Can be set to false for modders with a custom light setup. For example, this was added
+ for a modder who is using melee lights to toggle a lightsaber-style glow.
+
+
+
+
+ 32-bit mask granting server plugins additional control over custom UIs.
+ Only replicated to owner.
+
+
+
+
+ Enables cursor movement while not in a vanilla menu.
+
+
+
+
+ Disable background blur regardless of other UI state.
+
+
+
+
+ Enable background blur regardless of other UI state.
+ Takes precedence over NoBlur.
+
+
+
+
+ Enable title card while focusing a nearby player.
+
+
+
+
+ Enable explanation and respawn buttons while dead.
+
+
+
+
+ Enable health meter in the HUD.
+
+
+
+
+ Enable food meter in the HUD.
+
+
+
+
+ Enable water meter in the HUD.
+
+
+
+
+ Enable virus/radiation/infection meter in the HUD.
+
+
+
+
+ Enable stamina meter in the HUD.
+
+
+
+
+ Enable oxygen meter in the HUD.
+
+
+
+
+ Enable icons for bleeding, broken bones, temperature, starving, dehydrating, infected, drowning, full moon,
+ safezone, and arrested status.
+
+
+
+
+ Enable UseableGun ammo and firemode in the HUD.
+
+
+
+
+ Enable vehicle fuel, speed, health, battery charge, and locked status in the HUD.
+
+
+
+
+ Enable center dot when guns are not equipped.
+
+
+
+
+ Enable popup when in-game rep is increased/decreased.
+
+
+
+
+ Default flags set when player spawns.
+
+
+
+
+ 32-bit mask indicating to the server which admin powers are being used.
+ Does not control which admin powers are available.
+
+
+
+
+ Player is using spectator camera.
+
+
+
+
+ Player is using barricade/structure transform tools.
+
+
+
+
+ Player is using overlay showing player names and positions.
+
+
+
+
+ Per-player event invoked when admin usage flags change.
+
+
+
+
+ Event invoked when any player's admin usage flags change.
+
+
+
+
+ Used by plugins.
+
+
+
+
+ Invoked on client when a plugin changes the widget flags.
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ Not rate limited because server tracks number of expected screenshots.
+
+
+
+
+ Request client to open a given URL.
+ Allows plugins to open web browser, but also gives client the chance to ignore it.
+
+
+
+
+ Tell client to join a specific server.
+ Disconnects client and sends them to the join server screen.
+ Only used by plugins.
+
+
+
+
+ Is this player currently in a plugin's modal dialog?
+ Enables cursor movement while not in a vanilla menu.
+
+
+
+
+ Tell the client whether to be in plugin modal mode or not.
+ Kept from prior to introduction of pluginWidgetFlags.
+
+
+
+
+ Which admin powers are currently in use by the client.
+ Reported to the server by the client.
+ Does not control which admin powers are available.
+ Note: Hacks can prevent this notification from being sent.
+
+
+
+
+ Called on the client to notify the server of admin usage changes (if any).
+
+
+
+
+ Called on the client to notify the server of admin usage changes (if any).
+
+
+
+
+ Teleport to a random player spawn designated in the level.
+
+
+
+
+ Teleport to bed, if player has set one.
+
+
+
+
+ How many calls to will succeed per second.
+
+
+
+
+ How many rate limited actions have been performed recently.
+ Increased after performing each rate limited action, and decreased over time.
+ Cannot perform actions when greater than one.
+
+
+
+
+ Note: new official code should be using per-method rate limit attribute.
+ This is kept for backwards compatibility with plugins however.
+
+ Call this method before any requests the client can spam to the server.
+
+ Should your code proceed with the rate limited action?
+
+
+
+ Call every frame to cool down rate limiting.
+
+
+
+
+ This code was in the Start message, and should happen before other initialization.
+
+
+
+
+ Hacky replacement for Start() that runs after net ids are assigned but before sending player state.
+
+
+
+
+ Nelson 2024-11-11: Added to help narrow down if player is destroyed outside of Provider.removePlayer.
+ (public issue #4760)
+
+
+
+
+ Flag in case levelObject is destroyed.
+
+
+
+
+ Poorly named. Specific to InteractableObjectQuest.
+
+
+
+
+ Directly uses input string for custom message popups.
+
+
+
+
+ Player cannot build on a vehicle with occupied seats.
+
+
+
+
+ Horde beacon cannot be built here.
+
+
+
+
+ Item type is not allowed on vehicles.
+
+
+
+
+ Item must be placed closer to vehicle hull.
+
+
+
+
+ Player cannot build while seated in a vehicle because some vehicles are abusable to stick the camera through a wall.
+
+
+
+
+ Interacting with ladder.
+
+
+
+
+ Popup when equipping housing planner "press T to show items"
+
+
+
+
+ Popup when structure is blocked by something named we can format into the message.
+
+
+
+
+ Notice that freeform buildables are blocked by Allow_Freeform_Buildables.
+
+
+
+
+ Popup when structure is blocked by terrain.
+
+
+
+
+ Vehicle doesn't support spray paints.
+
+
+
+
+ Explaining that some blueprints require workstations.
+
+
+
+
+ Nelson 2024-11-29: Curious to put all the gun stats in one place for easier comparison. Rather rudimentary at
+ the moment so not including in the update.
+
+
+
+
+ Controls how first-person arms are moved for turrets operated from the driver's seat.
+
+
+
+
+ Default. Pushes first-person arms off-screen while aiming. Originally implemented for the Fighter Jet where
+ it looks weird if your arms are still visible when the camera zooms in while "aiming."
+
+
+
+
+ Push first-person arms off-screen when equipped.
+
+
+
+
+ No particular use in mind, but included for completeness.
+
+
+
+
+ Default. Plays "Hammer" animation if ammo count was zero.
+
+
+
+
+ Regardless of ammo, does not play "Hammer" animation after reloading.
+
+
+
+
+ Regardless of ammo, will play "Hammer" animation after reloading.
+
+
+
+
+ Sound to play when input is pressed but weapon has a fire delay.
+
+
+
+
+ Maximum distance the gunshot can be heard.
+
+
+
+
+ Override Rangefinder attachment's maximum range.
+ Defaults to range value.
+
+
+
+
+ Can this weapon instantly kill players by headshots?
+ Only valid when game config also enables this.
+
+
+
+
+ Can this weapon be fired without consuming ammo?
+ Some mods use this for turrets.
+
+
+
+
+ Ammo quantity to consume per shot fired.
+
+
+
+
+ Simulation steps to wait after input before firing.
+
+
+
+
+ Can magazine be changed by player?
+
+
+
+
+ Can player ADS while sprinting and vice versa?
+
+
+
+
+ If true, the gun cannot shoot unless the player is aiming.
+ Note: String action overrides this.
+ Defaults to true for miniguns.
+
+
+
+
+ If true, the gun will stop aiming regardless of player input.
+
+
+
+
+ Seconds from pressing "aim" to fully aiming down sights.
+
+
+
+
+ If true, Aim_Start and Aim_Stop animations are scaled according to actual aim duration.
+
+
+
+
+ Selects a default magazine, following magazine replacements and spawn table resolution.
+
+
+
+
+ Selects a default magazine, following magazine replacements and spawn table resolution.
+
+
+
+
+ How long in seconds after firing to rechamber the gun by playing the Hammer animation.
+ Only applicable if RechamberAfterShotCount is >0.
+ Defaults to 0.25 seconds.
+
+
+
+
+ How long in seconds after hammering to eject a bullet casing.
+ Defaults to 0.45 seconds.
+
+
+
+
+ How long in seconds after reloading to eject bullet casings.
+ Only applicable if CasingEjectCountAfterReload is greater than zero.
+ Defaults to 0.5 seconds.
+
+
+
+
+ Defaults to false. If true, attachments must specify at least one non-zero caliber.
+ Requested by Great Hero J to block vanilla attachments in VGR.
+
+
+
+
+ Determines whether "Hammer" animation plays after attaching a magazine.
+ Note: this happens when a magazine replaces another OR fills previously empty slot.
+
+
+
+
+ Determines whether "Hammer" animation plays after detached a magazine.
+ Note: this happens when a magazine is removed from the gun without a replacement.
+
+
+
+
+ Spread multiplier while sprinting.
+
+
+
+
+ Spread multiplier while crouched.
+
+
+
+
+ Spread multiplier while prone.
+
+
+
+
+ Spread multiplier while swimming.
+
+
+
+
+ Spread multiplier while not grounded.
+
+
+
+
+ Recoil magnitude multiplier while the gun is aiming down sights.
+
+
+
+
+ Recoil magnitude while sprinting.
+
+
+
+
+ Recoil magnitude while crouched.
+
+
+
+
+ Recoil magnitude while prone.
+
+
+
+
+ Recoil magnitude while swimming.
+
+
+
+
+ Recoil magnitude while not grounded.
+
+
+
+
+ [0, 1] percentage of maximum range where damage begins decreasing toward falloff multiplier.
+
+
+
+
+ [0, 1] percentage of maximum range where damage finishes decreasing toward falloff multiplier.
+
+
+
+
+ [0, 1] percentage of damage to apply at damageFalloffMaxRange.
+
+
+
+
+ Seconds before physics projectile is destroyed.
+
+
+
+
+ Is this gun setup to have a change of jamming?
+
+
+
+
+ [0, 1] quality percentage that jamming will start happening.
+
+
+
+
+ [0, 1] percentage of the time that shots will jam the gun when at 0% quality.
+ Chance of jamming is blended between 0% at jamQualityThreshold and jamMaxChance% at 0% quality.
+
+
+
+
+ Name of the animation to play when unjamming chamber.
+
+
+
+
+ Movement speed multiplier while the gun is aiming down sights.
+
+
+
+
+ If >0, hammer animation plays after shooting this many shots after RechamberAfterShotDelay seconds pass.
+ Defaults to one for EAction.Pump and EAction.Bolt, zero otherwise.
+
+
+
+
+ If >0, emit particles after hammer after EjectAfterHammerDelay seconds pass.
+ Only applicable if RechamberAfterShotCount is >0.
+ Defaults to 1.
+
+
+
+
+ If >0, emit particles after reloading after EjectAfterReloadDelay seconds pass.
+ Defaults to ammoMax for EAction.Break.
+
+
+
+
+ Please refer to .
+
+
+
+
+ Please refer to .
+
+
+
+
+ The dialogue to go to when a message has no available responses.
+ If this is not specified the previous dialogue is used as a default.
+ If neither is available then a default "goodbye" response is added.
+
+ For example, Chief_Police_Doughnuts_Accepted dialogue has a single message
+ "Let's just keep this between the two of us." shown with "prev" dialogue
+ set to the NPC's root dialogue asset.
+
+
+
+ True if primary action was started and stopPrimary should be called in the future.
+ Useful to allow input to be held until action executes.
+
+
+ True if secondary action was started and stopSecondary should be called in the future.
+ Useful to allow input to be held until action executes.
+
+
+
+ Does useable have a menu open?
+ If so pause menu, dashboard, and other menus cannot be opened.
+
+
+
+
+ Common base for barricades and structures.
+ 2023-01-16: not ideal to be adding this so late in development, but at least it is a step in the right direction.
+
+
+
+
+ If true, this item is eligible for zombies to detect and attack when stuck.
+ Defaults to true.
+
+
+
+
+ Item or spawn table recovered when picked up below 100% health.
+
+
+
+
+ Minimum number of items to recover when salvaged.
+
+
+
+
+ Maximum number of items to recover when salvaged.
+
+
+
+
+ Minimum number of items to drop when destroyed.
+
+
+
+
+ Maximum number of items to drop when destroyed.
+
+
+
+
+ Item or spawn table dropped when destroyed.
+
+
+
+
+ If non-null, this asset provides the listed crafting tags to nearby players.
+
+
+
+
+ Note: this assumes SalvageItemRef points to an ItemAsset.
+
+
+
+
+ By default a crafting ingredient is salvaged.
+
+
+
+
+ Thanks to Glenn Fiedler for this RK4 implementation article:
+ https://gafferongames.com/post/integration_basics/
+
+
+
+
+ Higher values return to the target position faster.
+
+
+
+
+ Higher values reduce bounciness and settle at the target position faster.
+ e.g. a value of zero will bounce back and forth for a long time (indefinitely?)
+
+
+
+
+ Nelson 2025-04-09: this acted as both category AND behaviour modifier, so I'm separating it into a custom tag
+ for categorization and a property for overriding how the blueprint processes input items.
+
+ Nelson 2025-04-10: repair and ammo "types" had a variety of quirks I wanted to sort out:
+ • Moving amount between items required ammo type blueprint, but some modders expressed interest in non-ammo use.
+ (I.e., ideally better supporting amount on non-ammo items going forward.)
+ • Both types ignored output items. Output was used to represent the target item. Similarly, the UI added a fake
+ extra input item representing target item.
+ • PlayerCrafting and PlayerDashboardCraftingUI re-implemented some crafting item searching logic for finding
+ the item to refill or repair that can be converted into input item parameters.
+ The plan at the moment is to make the last input item the "target" item for operations. Legacy ammo/repair
+ blueprints will then default to no output item and add an extra input item. (And add a variety of parameters
+ needed to replicate the specialized item search behaviour.)
+
+
+
+
+ Controls what blueprint does with input items.
+ Separated from EBlueprintType which acted as both category AND operation.
+
+
+
+
+ No special modification to input items.
+
+
+
+
+ Restore target input item to full quality.
+
+
+
+
+ Transfer amount from input items to target item.
+
+
+
+
+ Can be added to any GameObject with a Dropper, Note, or Quest interactable object in its parents.
+
+
+
+
+ Invoked on authority when interactable object is used successfully.
+ Only invoked on clients if ShouldReplicate is true.
+
+
+
+
+ If true, the server will replicate the OnUsed event to clients as well.
+
+
+
+
+ If ShouldReplicate is enabled, should the RPC be called in reliable mode?
+ Unreliable might not be received by clients.
+
+
+
+
+ Applied if greater than zero. Defaults to 128.
+
+
+
+ True if it's a new claim flag.
+
+
+
+ Player stealth radius cannot go below this value.
+
+
+
+
+ Deal damage and break legs if speed is greater than this value.
+
+
+
+
+ By default players in singleplayer and admins in multiplayer have a faster salvage time.
+ This option was requested for maps with entirely custom balanced salvage times.
+
+
+
+
+ Cached result of finding all craftingBlacklists.
+
+
+
+
+ Determines which weather can naturally occur in this level.
+ Null if empty.
+
+
+
+
+ If set, this weather will always be active and scheduled weather is disabled.
+
+
+
+
+ Audio clip to play in 2D when a player dies.
+
+
+
+
+ Defaults to false because some servers have rules and info on the loading screen.
+
+
+
+
+ Volume weather mask used while not inside an ambience volume.
+
+
+
+
+ Allows level to override skill max levels.
+ Null if empty, otherwise matches 1:1 with PlayerSkills._skills.
+
+
+
+
+ If false, clouds are removed from the skybox.
+
+
+
+
+ Players are kicked from multiplayer if their skin color is within threshold of any of these rules.
+
+
+
+
+ Optional Unturned extensions to the LOD Group component.
+
+
+
+
+ Could be extended, e.g. to clamp cull size separately from the per-LOD sizes.
+
+
+
+
+ Unturned will adjust per-LOD sizes to counteract LOD bias.
+ Elver has carefully tuned LOD sizes for the interior of the mall, so LOD bias affecting them is undesirable.
+ Note that due to a Unity bug only LOD0 can be greater than 100%.
+
+
+
+
+ Is player already waiting to exit their group?
+
+
+
+
+ Add player to exit queue if enabled, or immediately remove.
+
+
+
+
+ Remove player from queue if they're waiting to exit their group.
+
+
+
+
+ Invoked immediately before Destroy vehicle.
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ If true, a vehicle asset has been replaced.
+
+
+
+
+ Find vehicle with matching replicated instance ID.
+
+
+
+
+ Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
+
+
+
+
+ Supports redirects by VehicleRedirectorAsset. If paintColor is set that takes priority, otherwise if
+ redirector's SpawnPaintColor is set, that color is used,
+
+
+
+
+ Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
+
+
+
+
+ Supports redirects by VehicleRedirectorAsset. If paintColor is set that takes priority, otherwise if
+ redirector's SpawnPaintColor is set, that color is used,
+
+
+
+
+ Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
+
+
+
+
+ Supports redirects by VehicleRedirectorAsset. If paintColor is set that takes priority, otherwise if
+ redirector's SpawnPaintColor is set, that color is used,
+
+
+
+
+ Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
+
+
+
+
+ Supports redirects by VehicleRedirectorAsset. If paintColor is set that takes priority, otherwise if
+ redirector's SpawnPaintColor is set, that color is used,
+
+
+
+
+ Added so that garage plugins do not need to invoke RPC manually.
+
+ zero spawns without a battery, ushort.MaxValue indicates the battery should be randomly spawned according to asset configuration, other values force a battery to spawn.
+
+
+
+ For backwards compatibility. This older method spawns a vehicle with a random paint color. (set paintColor
+ to zero for a random paint color)
+
+ zero spawns without a battery, ushort.MaxValue indicates the battery should be randomly spawned according to asset configuration, other values force a battery to spawn.
+
+
+
+ Used by external spawn vehicle methods.
+ Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used,
+ unless preferredColor.a is byte.MaxValue.
+
+ Owner to lock vehicle for by default. Used to lock vehicles to the player who purchased them.
+
+
+
+ Client-side request server to toggle headlights.
+
+
+
+
+ As client request server to use bonus feature like towing hook or police sirens.
+
+
+
+
+ Helper for servers with huge numbers of vehicles.
+ Called with fixed span of indexes e.g. [0, 10), then [10, 20). This function then clamps the final span to the vehicle count.
+
+
+
+
+ Does as few tests as possible while maintaining base game expectations.
+
+
+
+
+ Force remove player from vehicle they were in, if any.
+ Called when player disconnects to tidy up and run callbacks.
+
+ True if player was in a vehicle, false otherwise.
+
+
+
+ Remove player from vehicle and teleport them to an unchecked destination.
+
+
+
+
+ Is spawnpoint open for vehicle?
+
+
+
+
+ Try to find a random spawnpoint to spawn a vehicle while server is running.
+
+
+
+
+ Add a new vehicle at given spawnpoint.
+ Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
+
+
+
+
+ Add a new vehicle at given spawnpoint and replicate to clients.
+ Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
+
+
+
+
+ Called when deciding whether to respawn a new vehicle, after gameplay has begun.
+
+
+
+
+ Called during level load to determine how many vehicles to create.
+
+
+
+
+ Called on server each frame to slowly damage abandoned vehicle.
+
+
+
+
+ +0 = InteractableVehicle
+ +1 = root transform
+ +X = VehicleBarricadeRegion
+ Asset does not know number of train cars, so we always reserve slack.
+
+
+
+
+ Speed is unsigned, so 8 bits allows a range of [0, 256).
+
+
+
+
+ Velocity is signed, so 9 bits allows a range of [-256, 256).
+
+
+
+
+ Cast a ray from the sky to find highest point.
+
+
+
+
+ Cast a ray from slightly above point so indoor teleport nodes work.
+
+
+
+
+ If set, we are responsible for destroying texture.
+
+
+
+
+ This is a bit of a hack in order to simplify the foliage menu when most of the time editors are either
+ manually placing foliage or automatically baking it.
+
+
+
+
+ Get brush strength multiplier where strength decreases past falloff. Use this method so that different falloffs e.g. linear, curved can be added.
+
+ Percentage of .
+
+
+
+ Allows foreach loop to iterate Vector2Int within RegionBoundsInt.
+
+
+
+
+ Kept because lots of modders have been using this script in Unity,
+ so removing legacy effect id would break their content.
+
+
+
+
+ Hack for modders using grenade component as a way to deal radial damage. Not a good long term solution but
+ widely requested for the meantime until I get the chance to rewrite some of the health stuff.
+
+
+
+
+ Thanks to Glenn Fiedler for this RK4 implementation article:
+ https://gafferongames.com/post/integration_basics/
+
+
+
+
+ Higher values return to the target position faster.
+
+
+
+
+ Higher values reduce bounciness and settle at the target position faster.
+ e.g. a value of zero will bounce back and forth for a long time (indefinitely?)
+
+
+
+
+ At low framerate deltaTime can be so high the spring explodes unless we use a fixed timestep.
+
+
+
+
+ Initially these were structs so that they would be adjacent in memory and therefore faster to iterate lots of them,
+ but making them classes lets them reference each other which significantly simplifies finding adjactent housing parts.
+
+
+
+
+ Item along positive direction.
+ Can be multiple on existing saves or if players found an exploit.
+
+
+
+
+ Item along negative direction.
+ Can be multiple on existing saves or if players found an exploit.
+
+
+
+
+ Item between floors.
+ Can be multiple on existing saves or if players found an exploit.
+
+
+
+
+ Is there a wall in this slot, and is it full height (not rampart)?
+
+
+
+
+ This check prevents placing roof onto the upper edge of a rampart because ramparts
+ create an edge at full wall height even though they are short.
+
+ Ideally in the future wall height will become configurable and remove
+ the need for this check.
+
+ See public issue #3590.
+
+
+
+
+ Position at the base of the pillar.
+
+
+
+
+ Yaw if placing pillar at this vertex.
+
+
+
+
+ Pillar or post currently occupying this slot.
+ Can be multiple on existing saves or if players found an exploit.
+
+
+
+
+ Can be zero if pillar is floating, or up to six in the center of a triangular circle.
+
+
+
+
+ Is there a pillar in this slot, and is it full height (not post)?
+
+
+
+
+ Floors must be placed touching the terrain, or a fake-terrain object like a grassy cliff model.
+
+
+
+
+ Pillars can be partly underground or inside a designated allowed underground area. Otherwise,
+ if the very top of the pillar is underground placement is blocked. (public issue #4250)
+
+
+
+
+ Side length of square and triangular floor/roof.
+ Walls can be slightly less, but we treat them as if they are the full length.
+
+
+
+
+ Vertical distance from edge center to wall pivot.
+
+
+
+
+ Vertical distance from edge center to rampart pivot.
+
+
+
+
+ If position is nearly equal within this threshold then edges/vertices will connect.
+
+
+
+
+ Maximum distance from player's viewpoint to allow placement.
+
+
+
+
+ How far to search for empty slot best match.
+
+
+
+
+ Cosine of the angle between ray direction and direction toward slot must be greater than this.
+
+
+
+
+ When validating item placement expand physics overlap this much.
+ Useful to ensure slightly-touching overlaps (e.g. pillar touching the pillar above) are handled properly.
+
+
+
+
+ Ensure players, vehicles, zombies, animals, etc are not within this distance of pending placement.
+
+
+
+
+ Distance from triangle pivot to apex of triangle.
+
+
+
+
+ Radius of circle within triangle edges.
+
+
+
+
+ Distance from triangle pivot to center of triangle.
+
+
+
+
+ Small threshold to allow placing even with existing barricades on the floor.
+
+
+
+
+ House overlap is approximately the same size as the housing item's collider(s), and is intended to check whether
+ any pre-existing barricades or structural items are in the way. For example whether a wall cannot be placed because
+ there is a storage crate in the way, or if a foundation is blocked by another slightly rotated foundation.
+
+
+
+
+ Character overlap is slightly larger than the house overlap, and checks whether any players, vehicles, animals, zombies, etc
+ are nearby. This is necessary because when house and characters were combined in a single physics query it was possible to
+ stand *just* close enough to step into the collider as it was spawned.
+
+
+
+
+ Called when a housing item is spawned or after moving an existing item.
+
+
+
+
+ Called before a housing item is destroyed or before moving a housing item.
+
+
+
+
+ Search grid for existing vertex at approximately equal position.
+ Considers adjacent grid cells if near cell boundary to avoid issues with floating point inaccuracy.
+
+
+
+
+ Search grid for existing edge at approximately equal position.
+ Considers adjacent grid cells if near cell boundary to avoid issues with floating point inaccuracy.
+
+
+
+
+ Find existing edge and add connection, or add new empty edge.
+
+
+
+
+ Find existing vertex and add connection, or add new empty vertex.
+
+
+
+
+ Find existing edge and set associated wall, or add an empty edge at wall's location.
+
+
+
+
+ Find slot occupied by wall and remove if no longer attached to anything.
+
+
+
+
+ Find existing vertex and set associated pillar, or add an empty vertex at pillar's location.
+
+
+
+
+ Find slot occupied by pillar and remove if no longer attached to anything.
+
+
+
+
+ Hack to prevent ignoring floor which might be overlapping pending floor placement.
+ For example when placing a square floor on the opposite edge of a spot which has a triangular floor
+ we do not want to ignore the triangular floor during the physics query.
+
+
+
+
+ Used by triangular floor and roof validation to test for collisions.
+
+
+
+
+ Ensure wall fits in an empty slot.
+
+
+
+
+ Ensure pillar fits in an empty slot.
+
+
+
+
+ Nelson 2024-06-26: With structure rotation replicated as a quaternion we need to be smarter about extracting
+ yaw from model transform. Quaternion.eulerAngles.y isn't necessarily the yaw anymore.
+
+
+
+
+ Working buffer for placement overlap tests.
+
+
+
+
+ Index of the context parameter, if not None.
+
+
+
+
+ Reflected attribute that was used to find this method.
+ Contains extra information about how to call it.
+
+
+
+
+ Interactable storage barricade to spawn at the drop position.
+
+
+
+
+ Prefab to spawn falling from the aircraft.
+
+
+
+
+ True once per frame, false otherwise.
+
+
+
+
+ Item ID of barricade to spawn after landing.
+
+
+
+
+ Barricade to spawn after landing.
+
+
+
+
+ Cargo spawn table legacy ID.
+
+
+
+
+ Kill any players inside the spawned interactable box.
+ Uses hardcoded size of 4 x 4 x 4.
+
+
+
+
+ Determines how to handle a server if it matches a rule.
+
+
+
+
+ Apply label and continue processing rules.
+
+
+
+
+ Show the server in the list.
+
+
+
+
+ Hide the server from the list.
+
+
+
+
+ Note: Port (if set) refers to the Steam query port.
+
+
+
+
+ If true, negate whether this rule matches. i.e., binary NOT.
+
+
+
+
+ Incremented during server list refresh for each server blocked by this rule.
+
+
+
+
+ Optional image bundled alongside the asset file.
+
+
+
+
+ If true the event will only be invoked in offline mode and on the server.
+
+
+
+
+ Hack to prevent hitting volume rate limit because (at least as of 2022-05-24) we do not have an event for finished dragging.
+
+
+
+
+ Whether this animal was updated in this network tick and needs to be resent.
+
+
+
+
+ Alert this animal that it was damaged from a given position.
+ Offensive animals investigate the position, whereas other animals run away.
+
+
+
+
+ Alerts this animal that it needs to run away.
+
+ The position to run away from.
+
+
+
+ Keep for plugin backwards compatibility.
+
+
+
+
+ Reduces frequency of UndergroundAllowlist checks because it can be expensive with lots of entities and volumes.
+
+
+
+ Unturned_Data folder path
+
+
+
+ Useful to check whether hashing is causing problems.
+
+
+
+
+ Useful to narrow down why a player is getting kicked for modified resource files when joining a server.
+
+
+
+
+ Only set in play mode for determing if we should cache brute force lengths.
+
+
+
+
+ If set, road properties are taken from this asset instead of the older road properties editor.
+
+
+
+
+ Checkered lines when occluded, solid lines when visible.
+
+
+
+
+ Solid lines regardless of depth.
+
+
+
+
+ In-game debug drawing utility similar to Unity's editor Gizmos.
+
+
+
+ Local space relative to matrix.
+
+
+
+ Wireframe grid on the XZ plane.
+
+
+
+
+ Center relative to matrix.
+
+
+
+
+ Center relative to matrix.
+
+
+
+
+ LateUpdate so that the most up-to-date gizmos and main camera position are used.
+
+
+
+
+ Callback to draw in the Unity editor scene view.
+
+
+
+
+ Can be null if nothing has been added at position.
+
+
+
+
+ Does not add new lists to empty cells.
+
+
+
+
+ Number of Lists to preallocate in batches.
+ (GRID_SIZE * GRID_SIZE) % LIST_POOL_SIZE should be zero leftover.
+ Reduces constructor performance cost. (public issue #4209)
+
+
+
+
+ Matches the console behavior prior to command IO refactor.
+
+
+
+
+ Add fuel to target.
+
+
+
+
+ Remove fuel from target.
+
+
+
+
+ Whether local client is currently penalized for potentially using a lag switch. Server has an equivalent check which reduces
+ damage dealt, whereas the clientside check stops shooting in order to prevent abuse of inbound-only lagswitches. For example,
+ if a cheater freezes enemy positions by dropping inbound traffic while still sending movement and shooting outbound traffic.
+
+
+
+
+ Labels for named locations.
+
+
+
+
+ Contains arena outer circle and inner target points.
+
+
+
+
+ Player avatars.
+
+
+
+
+ Arrow oriented with the local player.
+
+
+
+
+ Convert level-space 3D position into normalized 2D position.
+
+
+
+
+ Convert normalized 2D position into level-space 3D position.
+
+
+
+
+ Temporary to unbind events because this class is static for now. (sigh)
+
+
+
+
+ Manages render queue for transparent materials on non-stationary objects.
+ Updates one material per frame.
+
+
+
+
+ Callback when camera above/under water changes.
+
+
+
+
+ Material to use during the Christmas event instead.
+
+
+
+
+ Material to use during the Halloween event instead.
+
+
+
+
+ Material to use during the April Fools event instead.
+
+
+
+
+ Nelson 2024-08-19: This link has been checked with WebUtils.CanParseThirdPartyUrl, but is not the
+ potentially altered link to go through Steam's link filter. This way the UI shows the original link.
+
+
+
+
+ Unturned wrapper for Debug.Log, Debug.LogWarning, Debug.LogError, etc.
+
+
+
+
+ Log an exception with message providing context.
+
+
+
+
+ Recursively logs inner exception.
+
+ Should only be called by itself and exception because notifications
+ to CommandWindow would otherwise get re-sent here as errors.
+
+
+
+
+ This is the ONLY place Unturned should be binding logMessageReceived.
+
+ This gives us greater control over how logging is handled. In particular, Unity's
+ headless builds route logs (including stack traces) through stdout which is undesirable
+ for dedicated servers, so we only call Debug.Log* in the editor and development builds.
+
+
+
+
+ Log an exception with message providing context.
+
+
+
+
+ Get SteamID of vehicle's driver, or nil if not driven.
+
+
+
+
+ Crashed into something, if applicable take self damage from collision.
+
+
+
+
+ Remove all color rich formatting so that shadow text displays correctly.
+
+
+
+
+ Shadow text needs the color tags removed, otherwise the shadow uses those colors.
+
+
+
+
+ Wrap text with color tags.
+
+
+
+
+ Wrap text with color tags.
+
+
+
+
+ Wrap text with color tags.
+
+
+
+
+ Replace br tags with newlines.
+
+
+
+
+ Should player be allowed to write given text on a sign?
+ Keep in mind that newer signs use TMP, whereas older signs use uGUI.
+
+
+
+
+ Disable style, align, and space because they make server list unfair.
+
+
+
+
+ 2023-01-25: fixing killing self with explosive to track kill under
+ the assumption that this is only used for tracking stats. (public issue #2692)
+
+
+
+
+ "Single-Render" scope as opposed to "Dual-Render" (rendering the scene a second time with a zoomed-in camera).
+ Blits middle square of the player's view into the viewmodel scope material's render target.
+
+
+
+
+ Finds an existing "{{Cargo/name" (if any), otherwise adds a new one.
+
+
+
+
+ Adds a new "{{Cargo/name" even if one already exists.
+
+
+
+
+ Helper for wiki writers to dump game data into a useful format.
+
+
+
+
+ Non-item replacement for SleekJars.
+ Arranges children in an equally-spaced ring around the center.
+
+
+
+
+ Actual unfiltered text.
+ Kept because plugins might be referencing, and game should use directly once state byte array is refactored.
+
+
+
+
+ If profanity filter is enabled this filtered text is displayed on the 3D sign and in the note UI.
+ Null or empty on the dedicated server.
+
+
+
+
+ Legacy uGUI text on canvas.
+
+
+
+
+ Legacy uGUI text on canvas.
+
+
+
+
+ Splits string and compares substrings ignoring case.
+ Tokens containing a colon ':' are ignored so that they can represent special filters like MasterBundleSearchFilter.
+
+
+
+
+ Should the RPC be called in reliable mode? Unreliable effects might not be received.
+
+
+
+
+ Applied if greater than zero. Defaults to 128.
+
+
+
+
+ Extra text added to tooltip.
+
+
+
+
+ Internal struct menu uses to sort items in box.
+
+
+
+
+ Item definition id.
+
+
+
+
+ Rarity used to sort mythical > legendary > epic > rare.
+
+
+
+
+ [0, 1] calculated chance of this item being unboxed.
+ Shown to player in item tooltips.
+
+
+
+
+ Sorts box entries from highest to lowest rarity.
+
+
+
+
+ Format qualityRarities as ##.#
+ Does not use 'P' format because localized strings unfortunately already had % sign.
+
+
+
+
+ Items server told us we unboxed, but we wait for the animation to finish before showing.
+ Typically one, but some newer boxes have bonus items occassionally.
+
+
+
+
+ Is one of the unboxed items mythical rarity?
+
+
+
+
+ Items in the box.
+
+
+
+
+ Skip unboxing animation.
+ Initial call rotates to just before the item, next call skips entirely.
+
+
+
+
+ Does client know about all the granted items?
+ If not, either something is bad in the econ config (uh oh!) or client is out of date.
+
+
+
+
+ Relatively efficiently find mesh components, and log an error if their mesh is missing, among other checks.
+
+
+
+
+ Unity warns about renderers registered with more than one LOD group, so we do our own validation as part of
+ asset loading to make it easier to find these.
+
+
+
+
+ Replaced by ServerMethodHandle.
+
+
+
+
+ Replaced by ClientInstanceMethod.InvokeAndLoopback or ClientStaticMethod.InvokeAndLoopback.
+
+
+
+
+ Replaced by ClientMethodHandle invoked with Provider.EnumerateClients_Remote.
+ Unlike ESteamCall.CLIENTS this is not loopback invoked.
+
+
+
+
+ Replaced by ClientMethodHandle invoked with SteamChannel.GetOwnerTransportConnection.
+
+
+
+
+ Replaced by ClientMethodHandle invoked with SteamChannel.EnumerateClients_RemoteNotOwner.
+
+
+
+
+ Replaced by ClientMethodHandle invoked with Provider.EnumerateClients.
+ Unlike ESteamCall.OTHERS this will be loopback invoked in singleplayer or listen server.
+
+
+
+
+ May have been used by voice in early versions, but has been completely removed.
+
+
+
+
+ Parses -X=Y from command-line.
+ Ideally we could do "where T : TryParse" but for the meantime there are specialized subclasses.
+
+
+
+
+ Maps region coord to a list of sub-road renderers in that region.
+ Unlike older "region" features, coord can be outside of the old bounds.
+ Not used in the editor or the dedicated server.
+
+ Nelson 2025-03-28: experimenting with this to see whether it reduces time spent culling far-away road
+ renderers on Rio de Janeiro Remastered. (Lots of roads on this map.)
+
+
+
+
+ Max draw distance outside editor.
+
+
+
+
+ Called by navmesh baking to complete pending object changes that may affect which nav objects are enabled.
+
+
+
+
+ Allows Unity events to broadcast Event NPC rewards.
+
+
+
+
+ Event ID to use when SendDefaultEventId is invoked.
+
+
+
+
+ The event messenger can only be triggered on the authority (server).
+ If true, the server will replicate the event to clients.
+
+
+
+
+ Interface between the dedicated server command I/O and per-platform console.
+
+
+
+
+ Called when this implementation is setup by command window.
+
+
+
+
+ Called when this implementation is deleted or application quits.
+
+
+
+
+ Called each Unity update.
+
+
+
+
+ Broadcasts when the enter key is pressed.
+
+
+
+
+ Print white message.
+
+
+
+
+ Print yellow message.
+
+
+
+
+ Print red message.
+
+
+
+
+ July 7th!
+
+
+
+
+ This is the only /required/ override of text writer.
+
+
+
+
+ Can be added to certain entities to modify which crafting tags they make available to players.
+ At the time of writing (2025-04-08) the compatible entities are:
+ • Barricade
+ • Structure
+ • Vehicle
+ • Resource
+ • Object
+
+
+
+
+ Each specified component modifies tags.
+
+
+
+
+ If true then level should convert old node types to volumes.
+
+
+
+
+ If true then level should convert old non-volumes types to devkit objects.
+
+
+
+
+ Hash of nodes file.
+ Prevents using the level editor to make noLight nodes visible.
+
+
+
+
+ Code common to and .
+
+
+
+
+ Nelson 2025-05-13: replacing the "workshop request log" which used transport connection hash code with this
+ more recent IP address and Steam ID rate limiter.
+
+
+
+
+ Manually placed from the asset browser or old editor.
+
+
+
+
+ Spawned by foliage baking system.
+
+
+
+
+ Brushed on with the foliage tool.
+
+
+
+
+ Utilities for calling workshop functions without worrying about client/server.
+ This could be nicely refactored into a client and server interface, but not enough time for that right now.
+
+
+
+
+ Client/server safe version of GetQueryUGCNumKeyValueTags.
+
+
+
+
+ Client/server safe version of GetQueryUGCKeyValueTag.
+
+
+
+
+ Search for the value associated with a given key.
+
+
+
+
+ Client/server safe version of GetQueryUGCResult.
+
+
+
+
+ Is file banned?
+
+
+
+
+ Originally this was only in the uGUI implementation, but plugins can create uGUI text fields
+ regardless of which glazier is used.
+
+
+
+
+ Stockpile item definition id with rev-share for the level creators.
+ Randomly selected from associated items list.
+
+
+
+
+ Other menus can modify DevkitSelectionToolOptions so we need to sync our menu when opened.
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ Remove structure instance on server and client.
+
+
+
+
+ Used by ownership change and damaged event to tell relevant clients the new health.
+
+
+
+
+ Legacy function for UseableStructure.
+
+
+
+
+ Spawn a new structure and replicate it.
+
+
+
+
+ Not an instance method because structure might not exist yet, in which case we cancel instantiation.
+
+
+
+
+ Not ideal, but there was a problem because onLevelLoaded was not resetting these after disconnecting.
+
+
+
+
+ Maps prefab unique id to inactive list.
+
+
+
+
+ Sending yaw only costs 1 bit (flag) plus yaw bits, so compared to the old 24-bit rotation we may as well
+ make it high-precision. Quaternion mode uses 1+27 bits!
+
+
+
+
+ +0 = StructureDrop
+ +1 = root transform
+
+
+
+
+ Invoked when askUseObjectQuest succeeds.
+
+
+
+
+ When a client method is called on a target object that does not exist yet this class is responsible for
+ deferring the invocation until the instance does exist. For example until finished async loading.
+
+
+
+
+ Called by generated methods when target object does not exist. If target object has been marked deferred
+ then the method will be invoked after it exists.
+
+
+
+
+ Add list of deferred invocations for key. Otherwise messages will be discarded assuming it was canceled.
+
+
+
+
+ Remove pending invocations.
+
+
+
+
+ Invoke all deferred calls.
+
+
+
+
+ Invocations are grouped by net id block to ensure order is preserved between related objects.
+
+
+
+
+ Not a member of ClientMethodInfo because it does not need to be looked up using reflection.
+
+
+
+
+ Called before loading level.
+
+
+
+
+ Update currency and owned items if inventory has changed and menu is open.
+
+
+
+
+ Update currency or experience depending what the vendor accepts.
+
+
+
+
+ Nelson 2025-06-10: new code should favor Vector2Int. We don't want to introduce further uint8 region usage.
+
+
+
+
+ Get net ID only if transform is directly registered, not if transform is the child of a registered transform.
+
+
+
+
+ Log every registered pairing.
+
+
+
+
+ Called before loading level.
+
+
+
+
+ Reverse pairing specifically for building net id + relative path name.
+
+
+
+
+ Write header common to both static and instance methods, and return writer.
+
+
+
+
+ Valid when opened in Begin or End mode.
+
+ If the quest is ready to complete the UI is opened in End mode to allow
+ the player to see what rewards they will receive after clicking continue.
+ Otherwise, in Begin mode the UI is opened to allow the player to review
+ the conditions before accepting or declining the request.
+
+ If the player cancels the pending response is NOT chosen.
+
+
+
+
+ Valid when opened in Begin or End mode.
+ The player clicked pendingResponse in this dialogue to open the quest UI.
+
+
+
+
+ It is useful to be able to reference transforms generically over the network, for example to attach a bullet
+ hole to a tree or vehicle without tagging it as a tree or vehicle, but most entities placed in the level do not
+ have unique IDs. To work around this we count downward from uint.MaxValue for level objects to avoid conflicts
+ with server-assigned net ids.
+
+
+
+
+ Nelson 2025-06-10: this is used by older level file formats, but with placement of trees outside legacy
+ bounds now supported we use only the index in that case with GetTreeNetIdV2.
+
+ Each region can have ushort.MaxValue trees, and we reserve that entire block so that a region can be slightly
+ modified on the client or server without breaking all netids in the level.
+
+
+
+
+ Each region can have ushort.MaxValue objects, and we reserve that entire block so that a region can be slightly
+ modified on the client or server without breaking all netids in the level.
+
+
+
+
+ Devkit instance IDs should already be fairly stable. There is no way any level is using more than 30 bits
+ for the instance ID, so it should be safe to set those bits to prevent collisions with server net IDs.
+
+
+
+
+ Struct interface so that for transient asset bundles (older workshop mods) they can be preloaded
+ and retrieved as-needed, but for master bundles the asset loading can be deferred until needed.
+
+
+
+
+ Legacy implementation that preloads assets.
+
+
+
+
+ Save a reference to an object in the asset bundle, but defer loading it until requested by game code.
+
+
+
+
+ Has a new announcement been posted by the developer?
+ If so, it is given priority over the featured workshop item.
+
+
+
+
+ Called after newsResponse is updated from web request.
+
+
+
+
+ Read News.txt file from Cloud directory to preview on main menu.
+
+
+
+
+ Helper for handlePopularItemResults.
+ If player has not dismissed item at index then proceed with query and return true.
+
+
+
+
+ Nelson 2024-04-23: A concerned player raised the issue that mature content could potentially be returned in
+ popular item results. Steam excludes certain mature content by default, but just in case, we check for these
+ words and hide if contained in title.
+
+
+
+
+ Successfully queried popular workshop items.
+ Tries to decide on an item that player has not dismissed.
+
+
+
+
+ Response about the item we decided to display.
+
+
+
+
+ Submit query for recently trending popular workshop items.
+
+
+
+
+ Entry point to deciding which workshop item is featured above recent announcements.
+
+
+
+
+ Ensures workshop files are not refreshed more than once per main menu load.
+
+
+
+
+ Synchronize widgets with their values.
+
+
+
+
+ Represents an item the vendor is buying from players.
+
+
+
+
+ Zero is treated as unset.
+
+
+
+
+ Has the contained been animated into visibility on-screen?
+ Used to disable animating out if disabled.
+
+
+
+
+ Allow Unity events to forcefully remove any barricades inside a sphere.
+
+
+
+
+ Prevents static member from being initialized during MonoBehaviour construction. (Unity warning)
+
+
+
+
+ Mesh Replacement Details
+ .dat Flags:
+ Has_1P_Character_Mesh_Override True Bool
+ Character_Mesh_3P_Override_LODs # Int
+ Has_Character_Material_Override True Bool
+ Asset Bundle Objects:
+ Character_Mesh_1P_Override_# GameObject with MeshFilter (mesh set to a skinned mesh)
+ Character_Mesh_3P_Override_# GameObject with MeshFilter (mesh set to a skinned mesh)
+ Character_Material_Override Material
+
+
+
+
+ Replacements for the main 1st-person character mesh.
+
+
+
+
+ Replacements for the main 3rd-person character mesh.
+
+
+
+
+ Replacement for the main character material that typically has clothes and skin color.
+
+
+
+
+ Sort servers by name A to Z.
+
+
+
+
+ Sort servers by name Z to A.
+
+
+
+
+ Sort servers by map name A to Z.
+
+
+
+
+ Sort servers by map name Z to A.
+
+
+
+
+ Sort servers by player count high to low.
+
+
+
+
+ Sort servers by player count low to high.
+
+
+
+
+ Sort servers by max player count high to low.
+
+
+
+
+ Sort servers by max player count low to high.
+
+
+
+
+ Sort servers by normalized player count high to low.
+
+
+
+
+ Sort servers by normalized player count low to high.
+
+
+
+
+ Sort servers by ping low to high.
+
+
+
+
+ Sort servers by ping high to low.
+
+
+
+
+ Information about a game server retrieved through Steam's "A2S" query system.
+ Available when joining using the Steam server list API (in-game server browser)
+ or querying the Server's A2S port directly (connect by IP menu), but not when
+ joining by Steam ID.
+
+
+
+
+ Join server by IP.
+
+
+
+
+ Server is not using an anycast proxy.
+
+
+
+
+ Server host indicated an anycast proxy is in use.
+
+
+
+
+ Moderator flagged server as using an anycast proxy. (EHostBanFlags.QueryPingWarning)
+
+
+
+
+ Ping time measured in milliseconds.
+
+
+
+
+ ID of network transport implementation to use.
+
+
+
+
+ Known plugin systems.
+
+
+
+
+ Probably just checks whether IP is link-local, but may as well use Steam's utility function.
+
+
+
+
+ Active player count divided by max player count.
+
+
+
+
+ Nelson 2024-08-20: This score is intended to prioritize low ping without making it the be-all end-all. The
+ old default of sorting by ping could put near-empty servers at the top of the list, and encouraged using
+ anycast caching to make the server appear as low-ping as possible.
+
+
+
+
+ Nelson 2024-08-20: This score is intended to prioritize servers around 75% capacity. My thought process is
+ that near-empty and near-full servers are already easy to find, but typically if you want to play online you
+ want a server with space for you and your friends. Unfortunately, servers with plenty of players but an even
+ higher max players make a 50% score plenty good.
+
+
+
+
+ Nelson 2024-08-20: This score is intended to balance out the downside of the fullness score decreasing for
+ servers with very high max player counts, and over-scoring servers with low max players.
+
+
+
+
+ Called before inserting to server list.
+
+
+
+
+ Parses value between two keys thing would parse thing
+
+
+
+
+ If set, this server was denied by a server curation list.
+
+
+
+
+ Disables Unity native systems unused by Unturned.
+
+
+
+
+ Enabled for effects held by guns and sentries.
+
+
+
+
+ Listen for OnDestroy callback because mods may be destroying themselves in unexpected ways (e.g., Grenade
+ component) and still need to be cleaned up.
+
+
+
+
+ Seconds after placement before damage can be dealt.
+
+
+
+
+ Seconds interval between damage dealt.
+ i.e., will not cause damage if less than this amount of time passed since the last damage.
+
+
+
+
+ UITK implementation consists of a container element which respects the regular position and size
+ properties, and a child content element which fits itself in the container.
+
+
+
+ Start Vertex
+ Start Vertex + Start Tangent
+ End Vertex + End Tangent
+ End Vertex
+
+
+ Start Vertex
+ Start Vertex + Start Tangent
+ End Vertex + End Tangent
+ End Vertex
+
+
+ Start Vertex
+ Start Vertex + Start Tangent
+ End Vertex + End Tangent
+ End Vertex
+
+
+ Start Vertex
+ Start Vertex + Start Tangent
+ End Vertex + End Tangent
+ End Vertex
+ World units length along curve.
+ Spacing between points.
+ Max estimate distance from uniform interval before we have to retry.
+ How many times to retry if the estimate is too far off.
+ If length is already known pass it in, otherwise it's recalculated.
+ Time along curve. [0-1]
+
+
+ Start Vertex
+ Start Vertex + Start Tangent
+ End Vertex + End Tangent
+ End Vertex
+ Spacing between points.
+ Max estimate distance from uniform interval before we have to retry.
+ How many times to retry if the estimate is too far off.
+
+
+
+ Single percentage randomness with two outcomes.
+
+
+
+
+ If true the event will only be invoked in offline mode and on the server.
+
+
+
+
+ Percentage chance of event occurring.
+
+
+
+
+ Invoked when random event occurs.
+
+
+
+
+ Invoked when random event does NOT occur.
+
+
+
+
+ Whether the pointer is currently in a spot that can be painted.
+
+
+
+
+ Get brush strength multiplier where strength decreases past falloff. Use this method so that different falloffs e.g. linear, curved can be added.
+
+ Percentage of .
+
+
+
+ Allows pooling elements.
+ If set, this is called rather than removing element from scroll view.
+
+
+
+
+ Kind of hacky... Used by player list for group connections.
+
+
+
+
+ Read commands from standard input, and write logs to standard output.
+
+
+
+
+ Broadcast the inputCommited event.
+
+
+
+
+ Synchronize console's title bar text.
+ Virtual because at one point Win32 SetTitleText was required.
+
+
+
+
+ Intercept the Ctrl-C or Ctrl-Break termination.
+
+
+
+
+ Handle Ctrl-C or Ctrl-Break on the game thread.
+
+
+
+
+ Has Ctrl-C or Ctrl-Break signal been received?
+
+
+
+
+ Is the Ctrl-C or Ctrl-Break signal being handled?
+
+
+
+
+ Names of achievements that can be granted by NPC rewards.
+
+
+
+
+ Name of promo level to additively load.
+
+
+
+
+ UTC when to begin load promo level.
+
+
+
+
+ UTC when to stop loading promo level.
+
+
+
+
+ Folder name of the map when it was in the game.
+
+
+
+
+ Published steam id for the file after it was moved to the workshop.
+
+
+
+
+ Dependencies to subscribe to when subscribing through the in-game menu.
+ e.g. Hawaii's assets are stored separately on the workshop.
+
+
+
+
+ Only applies if player is not subscribed to the workshop file.
+ Should an advertisement be shown in the Menu > Singleplayer > Curated list?
+
+
+
+
+ Published steam id to subscribe to.
+
+
+
+
+ If logging in after this point, subscribe.
+
+
+
+
+ If logging in before this point, subscribe.
+
+
+
+
+ Maps not installed by default, but recommended from maps list.
+
+
+
+
+ Maps to install to automatically.
+ Used early in startup to hopefully install before reaching main menu.
+
+
+
+
+ When moving between physics materials we need to continue any previous tire kickup particles until they expire.
+ This class manages the individual effect per-physics-material. Each wheel can have multiple at once. When the
+ particles have despawned and the effect is no longer needed, the effect game object is returned to the effect
+ pool and this class is returned to .
+
+
+
+
+ Name from .
+
+
+
+
+ Instantiated effect. Null after returning to pool.
+
+
+
+
+ Effect's transform. Null after returning to pool.
+
+
+
+
+ Component on gameObject. Null after returning to pool.
+
+
+
+
+ Whether this effect should be emitting particles. False stops the particle system immediately, whereas true
+ only starts playing on the next frame to avoid filling a gap between positions, e.g., after a jump.
+
+
+
+
+ Prevents repeated lookups if asset is null, while allowing asset to be looked up each time this effect
+ becomes active so that it can be iterated on without restarting the game.
+
+
+
+
+ Does this wheel affect brake torque?
+
+
+
+
+ Turn on/off physics as needed. Overridden by isAlive.
+
+
+
+
+ [0.0, 1.0] normalized position of wheel along suspension.
+
+
+
+
+ [0.0, 1.0] normalized position animated toward replicatedSuspensionState.
+
+
+
+
+ Model position interpolated toward animatedSuspensionState according to modelSuspensionSpeed.
+
+
+
+
+ [0, 360] angle of rotation around wheel axle. Measured in degrees because Quaternion.AngleAxis takes degrees.
+
+ We track rather than using GetWorldPose so that we can alternate between using replicated and simulated
+ results without snapping transforms.
+
+
+
+
+ List is created if this wheel has a collider and uses collider pose. Null when vehicle is destroyed to
+ prevent creation of more effects.
+
+
+
+
+ Instance corresponding to current ground material. Doesn't necessarily mean the particle system is active.
+
+
+
+
+ Called after construction and on all clients and server when a player stops driving.
+
+
+
+
+ Called when vehicles explodes.
+
+
+
+
+ Called during FixedUpdate if vehicle is driven by the local player.
+
+
+
+
+ Calculate suspension state from GetWorldPose result.
+
+ Nelson 2024-03-25: Originally we used the result of GetWorldPose for the model transform and calculated
+ the suspension state from it because I thought Unity was internally using the spring position that isn't
+ (currently) exposed to the API. Whether or not it is, it seems fine to calculate the spring position using
+ the ground hit point instead. We switched entirely away from GetWorldPose so that the wheel can retain
+ its roll angle when transitioning between locally simulated and replicated.
+
+
+
+
+ Called during Update on dedicated server only if replicated suspension state is enabled.
+
+
+
+
+ Set replicated suspension state AND animated suspension state when vehicle is first received.
+
+
+
+
+
+ Supported when locally simulated and on remote clients.
+
+
+
+
+ Called during Update on client.
+
+
+
+
+ Called during Update if vehicle is driven by the local player.
+
+
+
+
+ Called during Update on the server while vehicle is driven by player.
+
+
+
+
+ Seamlessly teleports player to an equivalent position at the destination upon contact.
+
+
+
+
+ Target position and rotation.
+
+
+
+
+ Only used in the Unity editor for visualization.
+
+
+
+
+ If true, PopulateAsset can modify data. For example, to replace deprecated properties.
+ Only true if asset re-saving and asset metadata parsing are enabled, and asset origin allows re-saving.
+ Modifications are not saved if asset has any errors in order to avoid losing data.
+
+
+
+
+ If true, an asset with the same ID or GUID has been added to the current asset mapping, replacing this one.
+
+
+
+
+ If true, errors related to this asset were reported during loading.
+
+
+
+
+ Null or empty if created at runtime, otherwise set by when loading.
+
+
+
+
+ Contents of file this asset was loaded from. Only kept if data re-saving is enabled. (So that this memory
+ is collected after populating the asset.)
+
+
+
+
+ Master bundle this asset loaded from.
+
+
+
+
+ Were this asset's shaders set to Standard and/or consolidated?
+ Needed for vehicle rotors special case.
+
+
+
+
+ Should texture non-power-of-two warnings be ignored?
+ Unfortunately some third party assets have odd setups.
+
+
+
+
+ Should read/write texture warnings be ignored?
+
+
+
+
+ Hash of the original input file.
+
+
+
+
+ Maybe temporary? Used when something in-game changes the asset so that it shouldn't be useable on the server anymore.
+
+
+
+
+ Most asset classes end in "Asset", so in debug strings if asset is clear from context we can remove the unnecessary suffix.
+
+
+
+
+ Remove "Asset" suffix and convert to title case.
+
+
+
+
+ e.g. Canned Beans (Consumeable Item)
+
+
+
+
+ Perform any initialization required when PopulateAsset won't be called.
+
+
+
+
+ Planning ahead to potentially convert the game to use Unity's newer Addressables feature.
+
+
+
+
+ 2023-04-17: suggestion is to have a hardcoded list of hate speech that gets filtered
+ regardless of whether profanity filter is enabled. (https://forum.smartlydressedgames.com/t/22477)
+
+
+
+
+ Special asset type that isn't (shouldn't be) returned by asset Find methods. Instead, if found when resolving
+ an asset legacy ID or GUID, Find is called again with the target specified by this asset.
+
+
+
+
+ Enumerate elements that are not in the pool.
+
+
+
+
+ Sanity check all returned elements have a gameObject.
+
+
+
+
+ Map creator can specify a constant weather mode.
+
+
+
+
+ Associates a train vehicle ID with the index of a road path to spawn it on.
+ The level only spawns the train if this vehicle ID isn't present in the map yet, so every train on the map has to be different.
+
+
+
+
+ Should underwater bubble particles be activated?
+
+
+
+
+ Should positions underground be clamped above ground?
+ Underground volumes are used to whitelist valid positions.
+
+
+
+
+ If true, certain objects redirect to load others in-game.
+
+
+
+
+ If true, electric objects are always powered, and generators have no effect.
+
+
+
+
+ Display version in the format "a.b.c.d".
+
+
+
+
+ Version string packed into integer.
+
+
+
+
+ Number of custom tips defined in per-level localization file.
+ Tip keys are read as Tip_#
+
+
+
+
+ LevelBatching is currently only enabled if map creator has verified it works properly.
+
+
+
+
+ If true, map creator has verified the clutter option works as-expected.
+
+
+
+
+ Absolute path to the map folder.
+
+
+
+
+ Whether unity analytics should track this map's name. Don't want to burn all the analysis points!
+
+
+
+
+ Maps included with the game only, separate from category because arena maps are misc.
+ Category is set as part of the config file. This is only mainly used to enable unity analytics tracking for map name.
+
+
+
+
+ Only used for play menu categories at the moment.
+
+
+
+
+ SHA1 hash of the Level.dat file.
+
+
+
+
+ Test whether this map's workshop file ID is in the curated maps list.
+
+
+
+
+ Web URL to map feedback discussions.
+
+
+
+
+ If true, this info is out-of-date and may have been renamed or deleted.
+
+
+
+
+ Preview.png should be 320x180
+
+
+
+
+ Get a random file path in the /Screenshots folder, or fallback to Level.png if it exists.
+
+
+
+
+ Get a random file path in the /Screenshots folder
+
+
+
+
+ When adding or removing entries remember to update NetMessages size and regenerate NetCode!
+
+
+
+
+ Client requesting workshop files to download.
+
+
+
+
+ Client has loaded the level.
+
+
+
+
+ Client providing Steam login token.
+
+
+
+
+ Client sending BattlEye payload to server.
+
+
+
+
+ Client sent a ping.
+
+
+
+
+ Client responded to our ping.
+
+
+
+
+ Client calling an RPC.
+
+
+
+
+ Client providing asset GUIDs with their file hashes to check integrity.
+
+
+
+
+ Client intends to disconnect. It is fine if server does not receive this message
+ because players are also removed for transport failure (e.g. timeout) and for expiry
+ of Steam authentication ticket. This message is useful to know the client instigated
+ the disconnection rather than an error.
+
+
+
+
+ Error code that the server exited with.
+ 0 is succesful, anything else is an error.
+
+
+
+
+ Empty if successful,
+ otherwise an explanation of the first error encountered.
+
+
+
+
+ Register all built-in asset and useable types.
+
+
+
+
+ Can be added to any GameObject to receive weather events for a specific custom weather asset.
+
+
+
+
+ GUID of custom weather asset to listen for.
+
+
+
+
+ Invoked when custom weather is activated, or immediately if weather is fading in when registered.
+
+
+
+
+ Invoked when custom weather finishes fading in, or immediately if weather is already fully active when registered.
+
+
+
+
+ Invoked when custom weather is deactivated and begins fading out.
+
+
+
+
+ Invoked when custom weather finishes fading out and is destroyed.
+
+
+
+
+ GUID parsed from WeatherAssetGuid parameter.
+
+
+
+
+ Default. Create a material instance for child renderer of Toggle game object.
+ Downside of this is exclusion from level batching texture atlas.
+
+
+
+
+ Object does not have any toggleable emissive materials.
+
+
+
+
+ Prevents calling getOrLoad redundantly if asset does not exist.
+
+
+
+
+ If set, overrides model prefab in the level editor.
+
+
+
+
+ Clip.prefab
+
+
+
+
+ Object.prefab
+
+
+
+
+ If true, object will be hidden when rendering GPS/satellite view.
+ Defaults to true if is set.
+
+
+
+
+ If true, Nav game object will be instantiated in singleplayer and on dedicated server. Useful for objects
+ which need to affect navmesh baking without colliding with zombies during gameplay.
+ Defaults to true for "medium" and "large" objects.
+
+
+
+
+ If true, Nav game object will be instantiated in the level editor. Useful for objects which need collision
+ with zombies during gameplay without affecting navmesh baking.
+ Defaults to true for "medium" and "large" objects.
+
+
+
+
+ Should landing on this object inflict fall damage?
+
+
+
+
+ If true, object is not loaded when clutter is turned off in graphics menu.
+
+
+
+
+ Property is not exposed at the moment because interactability properties should really be moved into some
+ sort of sub-asset.
+
+
+
+
+ Same as interactabilityDialogueRef, not public because it really needs to be cleaned up. :(
+
+
+
+
+ Effect played when single segment is destroyed.
+
+
+
+
+ Effect played when all segments are destroyed.
+
+
+
+
+ Weapon must have matching blade ID to damage object.
+ Both weapons and objects default to zero so they can be damaged by default.
+
+
+
+
+ [0, 1] probability of dropping any rewards.
+
+
+
+
+ If true, zombies can attack this object if it's blocking them. Defaults to false.
+
+
+
+
+ Multiplier for damage from zombies if RubbleCanZombiesDamage is true.
+
+
+
+
+ Controls how rubble affects Nav game object.
+
+
+
+
+ If set (>0), alerts nearby entities when an individual section is destroyed.
+
+
+
+
+ If set (>0), alerts nearby entities when all sections are destroyed.
+
+
+
+
+ Should colliders in the Triggers GameObject with "Kill" name kill players?
+ If Triggers GameObject is not set, searches Object instead.
+
+
+
+
+ Should this object only be visible if gore is enabled?
+ Allows pre-placed blood splatters to be hidden for younger players.
+
+
+
+
+ Only activated during this holiday.
+
+
+
+
+ Object to use during the Christmas event instead.
+
+
+
+
+ Object to use during the Halloween event instead.
+
+
+
+
+ Get asset ref to replace this one for holiday, or null if it should not be redirected.
+
+
+
+
+ If any conditions use flags they will be added to a set,
+ otherwise null is returned.
+
+
+
+
+ Recursively change all children including root from oldTag to newTag.
+ Aborts if a child doesn't match the old tag because it might be something we shouldn't change the tag of.
+ True if tags were all successfully changed.
+
+
+
+
+ Recursively change all children including root from oldLayer to newLayer.
+ Aborts if a child doesn't match the old layer because it might be something we shouldn't change the layer of.
+ True if layers were all successfully changed.
+
+
+
+
+ Called if we have a valid Nav GameObject.
+ Recast requires any meshes used on the Nav objects to be CPU readable, so we log errors here if they're not marked as such.
+
+
+
+
+ Should zombie(s) of the required type be spawned when player enters the area?
+
+
+
+
+ How many to spawn if spawning is enabled.
+
+
+
+
+ If greater than zero, find this zombie type configured in the level editor. For example, if the level editor
+ lists "0 Fire (4)", then 4 is the unique ID, and if assigned to this condition a zombie from the "Fire"
+ table will spawn.
+
+
+
+
+ Navmesh index player must be within. If set to byte.MaxValue then anywhere on the map is eligible.
+
+
+
+
+ Only kills within this radius around the player are tracked.
+
+
+
+
+ Only kills outside this radius around the player are tracked.
+ NSTM requested this for a sniping zombies quest.
+
+
+
+
+ If spawning is enabled, whether to use the timer between spawns.
+
+
+
+
+ Shows inspect buttons for each item mentioned in purchasable box or bundle's description text.
+
+
+
+
+ Manages global post-process volumes.
+
+
+
+
+ Callback when in-game graphic settings change.
+
+
+
+
+ Callback when player changes perspective.
+
+
+
+
+ Unfortunately EditorPrefs cannot be used in constructor.
+
+
+
+
+ Represents whether a player can craft a provided blueprint. If yes, which items to use, if no, why not.
+ Previously, some of this data was (confusingly) stored in the blueprint definition.
+ For performance, caller should re-use a list of BlueprintStatus and *not* discard unused results.
+
+
+
+
+ Total number of missing required nearby crafting tags.
+
+
+
+
+ Total required input item count minus available input item count.
+
+
+
+
+ Currently only used by housing planner.
+ Doesn't work with NPC conditions / rewards.
+
+
+
+
+ Currently only used by housing planner.
+ Doesn't work with NPC conditions / rewards.
+
+
+
+
+ Used to sort blueprints from "most craftable" (1) to "least craftable" (0).
+
+
+
+
+ Reset values set by PlayerCrafting.UpdateBlueprintDynamicStatus.
+
+
+
+
+ If not zero, use this amount instead of .
+ Used by as amount of ammo needed.
+
+
+
+
+ If true, cancel updating status as soon as anything goes wrong.
+ False for client UI where all info about blueprint is needed for display.
+ True on server where extra processing is a waste.
+
+
+
+
+ If set, log errors here.
+
+
+
+
+ Is current UTC time within this time span, and player has not dismissed?
+
+
+
+
+ Has the current time span been dismissed?
+ For example, player may have dismissed a previous event but not this current one.
+
+
+
+
+ Is current UTC time within this time span?
+
+
+
+
+ Allows file name to be included in kick message that client would otherwise not know.
+
+
+
+
+ Actual max value is plus one because message never contains zero items.
+
+
+
+
+ Has player dismissed the given workshop item?
+
+
+
+
+ Track that the player has dismissed the given workshop item.
+
+
+
+
+ Has player already auto-subscribed to the given workshop item?
+
+
+
+
+ Track that the player has auto-subscribed to the given workshop item.
+
+
+
+
+ Find colliders in gameObject and encapsulate their bounding boxes together.
+
+ True if bounds were determined, false otherwise.
+
+
+
+ Find colliders in gameObject and the point closest to position, otherwise use gameObject position.
+
+ Collider is only included if its layer is enabled in layer mask.
+
+
+
+ Does sphere overlap anything?
+
+
+
+
+ Allows foreach loop to iterate renderers defined in lod group.
+
+
+
+
+ Counts hits per-IPv4 address (if available) and per-SteamID (if available).
+ Connection is blocked if more than "threshold" hits occur within category (IPv4/SteamID).
+ Hit count resets when "window" seconds have passed since last hit.
+
+
+
+
+ If hit is within this many seconds of previous hit, it counts. Otherwise, counter is reset.
+
+
+
+
+ If more than this many hits occur the limit is reached.
+
+
+
+
+ Hack, we put this string on a newline for box probabilities.
+
+
+
+
+ Called on the client after a new message is inserted to the front of the list.
+
+
+
+
+ Called on the server when preparing a message to be sent to a player.
+ Allows controlling how %SPEAKER% is formatted for the receiving player.
+
+
+
+
+ Called on the server when formatting a player's message before sending to anyone.
+ Allows structuring the message and where the player's name is, for example: '[CustomPluginRoleThing] %SPEAKER% - OriginalMessageText'
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ Add a newly received chat message to the front of the list,
+ and remove an old message if necessary.
+
+
+
+
+ Previous messages sent to server from this client.
+ Newest at the front, oldest at the back. Used to repeat chat commands.
+
+
+
+
+ Send a request to chat from the client to the server.
+
+
+
+
+ Allows Unity events to send text chat messages from the client, for example to execute commands.
+ Messenger context is logged to help track down abusive assets.
+
+
+
+
+ Allows Unity events to broadcast text chat messages from the server.
+ Messenger context is logged to help track down abusive assets.
+
+
+
+
+ Server send message to specific player.
+ Used in vanilla for the welcome message.
+ Should not be removed because plugins may depend on it.
+
+
+
+
+ Server send message to specific player.
+ Used in vanilla by help command to tell player about command options.
+ Should not be removed because plugins may depend on it.
+
+
+
+
+ Server send message to all players.
+ Used in vanilla by some alerts and broadcast command.
+ Should not be removed because plugins may depend on it.
+
+
+
+
+ Serverside send a chat message to all players, or a specific player.
+
+ Contents to display.
+ Default text color unless rich formatting overrides it.
+ Player who sent the message (used for avatar), or null if send by a plugin.
+ Send message to only this player, or all players if null.
+ Mostly deprecated, but global/local/group may be displayed.
+ URL to a 32x32 .png to show rather than a player avatar, or null/empty.
+ Enable rich tags e.g., bold, italics in the message contents.
+
+
+
+ Nelson 2024-10-14: We might want to elaborate on this with "client-side chat commands" in the future, but
+ for the meantime I've hacked in this one command.
+
+
+
+
+ If set, find a child meshrenderer with this name and change its material to the character hair material.
+
+
+
+
+ If non-zero, legacy ID of final Asset to return.
+
+
+
+
+ If non-zero, legacy ID of SpawnAsset to resolve.
+
+
+
+
+ If both legacy IDs are zero this GUID will be used. If the target asset is
+ a SpawnAsset it will be further resolved, otherwise the found asset is returned.
+
+
+
+
+ Can be enabled by spawn tables that insert themselves into other spawn tables using the roots list.
+ If true, zeros the weight of child tables in the parent spawn table.
+
+
+
+
+ Has this spawn been added as a root of its child spawn table?
+ Used for debugging spawn hierarchy in editor.
+
+
+
+
+ Helper method for plugins because IDs are internal.
+
+
+
+
+ Parent spawn assets this would like to be inserted into.
+
+
+
+
+ Zero weights of child spawn tables.
+ Called when inserting a root marked isOverride.
+
+
+
+
+ Do tables need to be sorted and normalized?
+
+
+
+
+ Sort children by weight ascending, and calculate their normalized chance as a percentage of total weight.
+
+
+
+
+ Remove from roots, and if reference is valid remove us from their children.
+
+
+
+
+ Remove from tables, and if referencing a child table remove us from their roots.
+
+
+
+
+ Spawns an animal into the world.
+
+ The ID of the animal.
+ Position to spawn the animal.
+ Angle to spawn the animal.
+ Whether the animal is dead or not.
+
+
+
+ Gets the animal at a specific index.
+
+ The index of the animal.
+
+
+
+
+ Find replacement spawnpoint for an animal and teleport it there.
+
+
+
+
+ Used in arena mode to reset all animals to dead.
+
+
+
+
+ Stripped-down version of structure prefab for previewing where the structure will be spawned.
+
+
+
+
+ Whether preview object is currently highlighted positively.
+
+
+
+
+ Time when "Use" animation clip started playing in seconds.
+
+
+
+
+ Length of "Use" animation clip in seconds.
+
+
+
+
+ True when animation starts playing, false after placement sound is played.
+
+
+
+
+ Whether the "Use" animation clip started playing.
+
+
+
+
+ If running as server, whether ReceiveBuildStructure has been called yet.
+
+
+
+
+ Whether basic range and claim checks passed.
+
+
+
+
+ Position the item should be spawned at.
+
+
+
+
+ Rotation the item should be spawned at.
+
+
+
+
+ Interpolated toward customRotationOffset.
+
+
+
+
+ Allows players to flip walls.
+
+
+
+
+ Vertical offset using scroll wheel.
+
+
+
+
+ Whether enough time has passed for "Use" animation to finish.
+
+
+
+
+ Whether animation has reached the time when placement sound should play.
+
+
+
+
+ Used to aid backwards compatibility as much as possible when transitioning Unity versions breaks asset bundles.
+
+
+
+
+ Unity 5.5 and earlier per-asset .unity3d file.
+
+
+
+
+ When "master bundles" were first introduced in order to convert older Unity 5.5 asset bundles in bulk.
+
+
+
+
+ Unity 2018 needed a new version number in order to convert materials from 2017 LTS asset bundles. 2019 did not need a
+ new version number, but in retrospect it seems unfortunate that we cannot distinguish them, so 2020 does have its own.
+
+
+
+
+ 2021 LTS+
+
+
+
+
+ The first time asset loading finishes it will load the main menu.
+
+
+
+
+ If true, either loading during initial startup or full refresh.
+
+
+
+
+ If true, currently searching locations added after initial startup loading.
+
+
+
+
+ Has initial client UGC loading step run yet?
+ Used to defer asset loading for workshop installs that occured during startup.
+
+
+
+
+ Has initial map loading step run yet?
+ Used to defer map loading for workshop installs that occured during startup.
+
+
+
+
+ Calling this "legacy" is a bit of a stretch because even most of the vanilla assets are
+ built around the 16-bit IDs. Ideally no new code should be relying on 16-bit IDs however.
+
+
+
+
+ Incremented when assets are added or removed.
+ Used by boombox UI to only refresh songs list if assets have changed.
+
+
+
+
+ In singleplayer and the level editor this is the same as defaultAssetMapping,
+ but when playing on a server a subset of assets based on the server's workshop files is used.
+
+
+
+
+ Should folders be scanned for and load .dat and asset bundle files?
+ Plugin developers find it useful to quickly launch the server.
+
+
+
+
+ Do we want to enable shouldDeferLoadingAssets?
+
+
+
+
+ Should extra validation be performed on assets as they load?
+ Useful for developing, but it does slow down loading.
+
+
+
+
+ Should asset file metadata such as line numbers and comments be parsed?
+ Useful for development (e.g., error messages), but may slow down loading and increases RAM usage.
+
+
+
+
+ Should asset files be re-saved after all loading is finished?
+ Requires asset metadata. Useful for automatically upgrading .dat/.asset files.
+
+
+
+
+ Should some specific asset types which opt-in be allowed to defer loading from asset bundles until used?
+ Disabled by asset validation because all assets need to be loaded.
+
+
+
+
+ Should workshop asset names and IDs be logged while loading?
+ Useful when debugging unknown workshop content.
+
+
+
+
+ Should a JSON report of all the game's assets be exported?
+
+
+
+
+ Should GC and clear unused assets be called after every loading frame?
+ Potentially useful for players running out of RAM, refer to:
+ https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/1352#issuecomment-751138105
+
+
+
+
+ Should modded spawn tables being inserted into parents be logged?
+ Useful for debugging workshop spawn table problems.
+
+
+
+
+ Loaded master bundles.
+
+
+
+
+ Loading master bundles.
+
+
+
+
+ Master bundle from root /Bundles directory containing vanilla assets.
+
+
+
+
+ While an asset is being loaded, this is the master bundle for that asset.
+ Used by master bundle pointer as a default.
+
+
+
+
+ This method supports .
+
+
+
+
+ Find an asset by GUID reference.
+ This method supports .
+
+ Asset with matching GUID if it exists, null otherwise.
+
+
+
+ Find an asset by GUID reference.
+ This method supports .
+ Maybe considered a hack? Ignores the current per-server asset mapping.
+
+ Asset with matching GUID if it exists, null otherwise.
+
+
+
+ Find an asset by GUID reference.
+ This method supports .
+ Maybe considered a hack? Ignores the current per-server asset mapping.
+
+ Asset with matching GUID if it exists, null otherwise.
+
+
+
+ Load content from an assetbundle.
+
+
+
+
+ Find an asset by GUID reference.
+ This method supports .
+
+ Asset with matching GUID if it exists, null otherwise.
+
+
+
+ Find an asset by GUID reference.
+ This method supports .
+
+ Asset with matching GUID if it exists, null otherwise.
+
+
+
+ This method supports .
+
+
+
+
+ This method supports .
+
+
+
+
+ This method supports .
+ Note: this method doesn't handle redirects by VehicleRedirectorAsset.
+
+
+
+
+ This method supports .
+ Note: this method doesn't handle redirects by VehicleRedirectorAsset.
+
+
+
+
+ This method supports .
+
+
+
+
+ This method supports .
+
+
+
+
+ Useful if GUID can reference a different asset type than legacy ID. For example, gun magazine GUID can
+ reference a SpawnAsset while its legacy ID cannot.
+ This method supports .
+
+
+
+
+ Append assets that extend from result type.
+
+
+
+
+ Maybe considered a hack? Ignores the current per-server asset mapping.
+ Append assets that extend from result type.
+
+
+
+
+ While playing on server the client will use the same dictionary/list of assets the server uses in order
+ to reduce issues with ID conflicts.
+
+ 2023-05-27: server now ALSO uses the same logic to ensure IDs are applied in consistent order regardless
+ of multi-threaded loading order.
+
+
+
+
+ Search all loaded master bundles for one in path's hierarchy.
+
+
+
+
+ Find loaded master bundle by name.
+
+
+
+
+ Unload all asset bundles from memory, and empty known list.
+ Called when reloading assets.
+
+
+
+
+ Catches exceptions thrown by LoadFile to avoid breaking loading.
+
+
+
+
+ Called when a new workshop item is installed either on client or server.
+
+
+
+
+ Reload assets in given folder.
+
+
+
+
+ Do we have any new spawn assets that have not been linked yet?
+ Used to skip linking spawns if not required when downloading assets.
+
+
+
+
+ Can now be safely called multiple times on client in order to handle spawns for downloaded maps.
+ Spawn tables have "roots" which allow mods to insert custom spawns into the vanilla spawn tables.
+ This method is used after workshop assets are loaded on client, or after the dedicated server is done downloading workshop content.
+
+
+
+
+ Look through all item blueprints and log errors if there are duplicates.
+
+
+
+
+ Look through all dialogue and check that their referenced
+ dialogueID or vendorID is an actual loaded asset.
+
+
+
+
+ Manually run asset unload and garbage collection in the hope
+ that it will minimize RAM allocated during loading.
+
+
+
+
+ Helper for Assets.init.
+ Load all non-map assets from:
+ /Bundles/Workshop/Content
+ /Servers/ServerID/Workshop/Content
+ /Servers/ServerID/Bundles
+
+
+
+
+ Helper for Assets.init.
+ Load all non-map assets from subscribed UGC.
+
+
+
+
+ Helper for modders creating workshop content.
+ Loads folders in the "Sandbox" directory the same way workshop files are loaded.
+
+
+
+
+ Helper for Assets.init.
+ Load all assets in each map's Bundles folder, and content in map's Content folder.
+
+
+
+
+ Not the tidiest place for this, but it allows startup to pause and show error message.
+ Occasionally there have been reports of the steamclient redist files being out of date on the dedicated
+ server causing problems. For example: https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/2866#issuecomment-965945985
+
+
+
+
+ Note: inventory service does not support exchanging multiple items simultaneously.
+
+
+
+
+ Optional parameter for error logging and responding to the invoker.
+
+
+
+
+ Wraps audio source to prevent caller from meddling with it, and to allow the implementation
+ to change in the future if necessary.
+
+
+
+
+ 2D audio.
+
+
+
+
+ Optional parent transform to attach the audio source to.
+
+
+
+
+ 0 = 2D, 1 = 3D
+
+
+
+
+ Associates an ID with the instance of the sound being played. This ensures that if Stop() is called
+ on an old handle it will not stop playing the audio if the component has already been recycled.
+
+
+
+
+ True while inactive, false while playing.
+
+
+
+
+ Timer needs playId as well in case source has been recycled by the time duration expires.
+
+
+
+
+ Not extendable until transport API is better finalized.
+
+
+
+
+ How many seconds message should popup.
+
+
+
+
+ Which item ID we thought was there. If the item ID currently at the coordinates doesn't match we clear this hotkey.
+
+
+
+
+ Start/Stop input is encoded as 2 bits, 1 bit for Start flag and 1 bit for Stop flag.
+
+ Prior to 2023-03-16 it was a single bit. The server would Start if true and the previous frame was false,
+ and vice versa call Stop if false and the previous frame was true. The problem with that approach was when
+ the client FPS is higher than the simulation FPS a series of repeated attack presses would be treated as a
+ continuous held attack input. Semi-auto guns were difficult to shoot at their max rate of fire. Sending both
+ allows the server to theoretically call Start every simulation frame as opposed to only half.
+
+ First approach was to OR Start if held, otherwise OR Stop. This doesn't work because for example when Aim is
+ pressed the Stop flag will already be enabled, so the gun Starts aiming, Stops aiming, Starts aiming, and then
+ stays aiming rather than just Start and stay aiming. Instead we only want Stop to be sent once.
+
+
+
+
+ Wants to "start" primary or secondary input. (e.g., Useable.startPrimary)
+
+
+
+
+ Wants to "stop" primary or secondary input. (e.g., Useable.stopPrimary)
+
+
+
+
+ Invoked from tellEquip after change.
+
+
+
+
+ Skin applied to the currently equipped useable.
+
+
+
+
+ Does equipped useable have a menu open?
+ If so pause menu, dashboard, and other menus cannot be opened.
+
+
+
+
+ For aiming toggle input.
+
+
+
+
+ Get ragdoll effect to use when the current weapon deals damage.
+
+
+
+
+ It should be safe to call this immediately because hotkeys are loaded in InitializePlayer.
+
+
+
+
+ Prevent multiple hotkeys from referencing the same item.
+
+
+
+
+ Left-handed characters need the stat tracker to be flipped on the X axis so that the text reads properly.
+ ItemTool doesn't know about left/right handedness, so for the moment that's handled here because only players need this fixed up.
+
+
+
+
+ Match stat tracker gameobject's isActive to whether skins are visible.
+
+
+
+
+ Match all stat tracker visibilities to whether skins are visible.
+
+
+
+
+ Called clientside to ask server to equip an item in the inventory.
+
+
+
+
+ Hacked-in to bypass regular clientside checks when client would predict the item at given coords.
+
+
+
+
+ Remove the item from inventory so that if we die before the item isn't dropped
+
+
+
+
+ Finish dequipping from
+
+
+
+
+ Invoked before dealing damage regardless of whether the punch impacted anything.
+
+
+
+
+ (Temporarily?) separated out from simulate to try and get a better exception call stack.
+
+
+
+
+ (Temporarily?) separated out from simulate to try and get a better exception call stack.
+
+
+
+
+ (Temporarily?) separated out from simulate to try and get a better exception call stack.
+
+
+
+
+ Allow UI to process input [0, 9] key press when cursor is visible.
+
+
+
+
+ Process input [0, 9] key press.
+
+
+
+
+ If equipped item is bound to a hotkey, return the button [0, 9] associated.
+ Otherwise, return -1.
+
+
+
+
+ Called by input when preparing for simulation frame.
+
+
+
+
+ Called once by Setup.
+
+
+
+
+ Extension method for Thread class.
+ Plugins use this.
+ I might have accidentally removed it due to zero refs and Pustalorc was mad:
+ https://github.com/SmartlyDressedGames/Unturned-3.x-Community/discussions/4131
+
+
+
+
+ Throw an exception if current thread is not the game thread.
+
+
+
+
+ Only on dedicated server: throw an exception if current thread is not the game thread.
+
+
+
+
+ Search loaded assets for blueprints that output a single structure item and are
+ available on the current map.
+
+
+
+
+ Update status of all relevant blueprints.
+
+
+
+
+ Currently saved craftableBlueprint for asset may have become uncraftable,
+ in which case we try finding a craftable replacement.
+
+
+
+
+ Get a blank status from the pool or construct a new one.
+
+
+
+
+ Search inventory for housing items, count the quantity of each, and remove
+ duplicate entries from the list because it is used for the UI.
+
+
+
+
+ Stripped-down version of structure prefab for previewing where the structure will be spawned.
+
+
+
+
+ Whether preview object is currently highlighted positively.
+
+
+
+
+ Position the item should be spawned at.
+
+
+
+
+ Rotation the item should be spawned at.
+
+
+
+
+ Interpolated toward customRotationOffset.
+
+
+
+
+ Allows players to flip walls.
+
+
+
+
+ Vertical offset using scroll wheel.
+
+
+
+
+ Box in the HUD with selected item name and quantity.
+
+
+
+
+ Blueprints which create a structure item.
+
+
+
+
+ One craftable blueprint per potential structure item.
+
+
+
+
+ Recycled blueprint statuses.
+
+
+
+
+ Steam currency codes seem to be ISO 4217, however the documentation (as of 2021-01-29) does not say so.
+
+
+
+
+ If overlay is disabled there is no point showing the in-game item store because the player will not be able
+ to checkout. We request listings regardless in order to show the "sale" label automatically.
+
+
+
+
+ Windows-specific extensions of Windows console input.
+ Uses the Win32 API to force a console to be created and destroyed.
+
+
+
+
+ Directory the game files are installed in. For the editor this is the /Builds/Shared directory.
+ Windows and Linux: contains the executable and the Unturned_Data directory.
+ MacOS: contains the Unturned.app bundle.
+
+
+
+
+ Handles VehicleRedirectorAsset (if any) and returns actual vehicle asset (if any).
+
+
+
+
+ Handles VehicleRedirectorAsset returning load paint color override (if any) and returns actual vehicle asset (if any).
+
+
+
+
+ Handles VehicleRedirectorAsset returning spawn paint color override (if any) and returns actual vehicle asset (if any).
+
+
+
+
+ Handles VehicleRedirectorAsset (if any) and returns actual vehicle asset (if any).
+
+
+
+
+ Handles VehicleRedirectorAsset returning load paint color override (if any) and returns actual vehicle asset (if any).
+
+
+
+
+ Handles VehicleRedirectorAsset returning spawn paint color override (if any) and returns actual vehicle asset (if any).
+
+
+
+
+ Handles VehicleRedirectorAsset (if any) and returns actual vehicle asset (if any).
+
+
+
+
+ Handles VehicleRedirectorAsset returning load paint color override (if any) and returns actual vehicle asset (if any).
+
+
+
+
+ Handles VehicleRedirectorAsset returning spawn paint color override (if any) and returns actual vehicle asset (if any).
+
+
+
+
+ Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
+
+
+
+
+ Supports redirects by VehicleRedirectorAsset. If redirector's SpawnPaintColor is set, that color is used.
+
+ true if matching vehicle asset was found. (Not necessarily whether vehicle was spawned.)
+
+
+
+ Tools like carjacks and tires can be used in safezone by admins for maintenance.
+
+
+
+
+ Create glazier implementation. Invoked early during startup.
+
+
+
+
+ Multiplier for the maximum distance the gunshot can be heard.
+
+
+
+ true if key existed and was removed.
+
+
+ true if key existed and was removed.
+
+
+
+ Unturned equivalent of unity's PlayerPrefs.
+ Convenient for saving one-off key-value pairs.
+
+
+
+
+ String table specifically for Unity physics material names.
+ Implemented so that tires can more efficiently replicate which ground material they are touching.
+
+
+
+
+ Get an ID that can be used to reference a physics material name over the network. If given material name
+ isn't supported (e.g., not registered in a PhysicsMaterialAsset or over max material limit) returns
+ instead.
+
+
+
+
+ Get name of a physics material from network ID. Returns null if ID is null, e.g., if the sent name wasn't
+ registered or was over the max material limit.
+
+
+
+
+ Called when resetting network state.
+
+
+
+
+ Called on server and singleplayer before loading level.
+
+
+
+
+ Number of bits needed to replicate PhysicsMaterialNetId.
+
+
+
+
+ Implemented by components to support taking damage from explosions.
+ Not intended for external use (yet?) and may need to change.
+
+
+
+
+ Used to exclude dead entities from further evaluation.
+
+
+
+
+ Used to sort damage from nearest to furthest.
+
+
+
+
+ Intended for internal use only.
+
+
+
+
+ Data that we pool to reduce allocations, but needs to be separate per-invocation of explosion in case it's
+ invoked recursively. (for example, by blowing up a vehicle)
+
+
+
+
+ Replacement for playerDamaged.
+
+
+
+
+ Replacement for zombieDamaged.
+
+
+
+
+ Replacement for animalDamaged.
+
+
+
+
+ Refer to ExplosionPoolData for pooling explanation.
+
+
+
+
+ Was necessary when structures were children of level transform.
+
+
+
+
+ Was necessary when trees were children of ground transform.
+
+
+
+
+ Somewhat hacked-together to find owner of a vehicle, barricade, or structure descendant.
+
+
+
+
+ Get average explosionArmor of player's equipped clothing.
+
+
+
+
+ Refer to getPlayerExplosionArmor for explanation of total/average.
+
+
+
+
+ Do damage to a zombie.
+
+
+
+
+ Legacy function replaced by damageZombie.
+
+
+
+
+ Legacy function replaced by damageZombie.
+
+
+
+
+ Do damage to an animal.
+
+
+
+
+ Legacy function replaced by damageAnimal.
+
+
+
+
+ Legacy function replaced by damageAnimal.
+
+
+
+
+ This unwieldy mess is the original explode function, but should be maintained for backwards compatibility with plugins.
+
+
+
+
+ Used if explosion won't damage anything.
+
+
+
+
+ Do radial damage.
+
+
+
+
+ Server spawn impact effect for all players within range.
+
+
+
+
+ Server spawn impact effect for all players within range. Optional "spectator" receives effect regardless of distance.
+
+
+
+
+ Server spawn effect by ID for all players within range. Optional "spectator" receives effect regardless of distance.
+
+
+
+
+ Server spawn effect for all players within range and instigator receives effect regardless of distance.
+
+
+
+
+ parent should only be set if that system also calls ClearAttachments, otherwise attachedEffects will leak memory.
+
+
+
+
+ Nelson 2025-03-10: This aims to avoid messing with Magazine transform IsActive unless skin already did.
+
+
+
+
+ Nelson 2024-11-15: By default, attachments use their corresponding "hook" transform. For example, magazines
+ use the "Magazine" transform as their parent. If a child of the hook transform matches a caliber in the
+ attachment's caliber list that is used instead.
+
+
+
+
+ Should the buying and selling lists be alphabetically sorted?
+
+
+
+
+ This prevents identical tag provider setups from listing in the UI.
+ For example, two workbenches providing the same tags shouldn't show two UI listings.
+
+
+
+
+ Player does not want to see this blueprint.
+
+
+
+
+ Player wants to save this blueprint in a special category.
+
+
+
+
+ Find nearby crafting tag providers and query their tags.
+
+
+
+
+ Tests whether nearby tags include specified tag.
+ Doesn't update nearby tags, so call UpdateAvailableCraftingTags if out-of-date.
+
+
+
+
+ Requested for plugin use.
+ Notifies owner they should refresh the crafting menu.
+
+
+
+
+ Update anything that will not change as blueprint is invoked repeatedly on server.
+
+
+
+
+ Update anything that can change as blueprint is invoked repeatedly on server.
+
+
+
+
+ Returns true if should exit early.
+ If updating behavior here please remember to update .
+
+
+
+
+ Find all item assets available to the player for crafting.
+ Used to more quickly identify blueprints that might be craftable, rather than testing all blueprints.
+ If updating behavior here please remember to update .
+
+
+
+
+ Allows housing planner to craft without playing effect, without also allowing
+ cheaters to craft without playing effect. (if it were an RPC param)
+
+
+
+
+ Get local player's per-blueprint preferences.
+
+
+
+
+ Set local player's per-blueprint preferences.
+ This is helpful both to prevent accidentally crafting certain blueprints (like blindfolds) when click to
+ craft is enabled, and to save frequently used blueprints.
+
+
+
+
+ Why isn't tags list public visibility? Because if adding features to (for example) consume a resource when
+ crafting tag provider is used that will require an API change.
+
+
+
+
+ Extensions to the built-in Screen class.
+ We have run into multiple problems with the Screen.resolutions property over the years, so this class aims to
+ protect against bad data.
+
+
+
+
+ Work-in-progress plan to allow modders to create custom physics effects.
+
+
+
+
+ Can crops be planted on a given material?
+
+
+
+
+ Can oil drills be placed on a given material?
+
+
+
+
+ Original width field is misleadingly named. It represents half the width of the flat section of the road.
+
+
+
+
+ Original depth field is misleadingly named. It represents half the "up" size of the road.
+
+
+
+
+ Distance along the terrain surface normal to move each road vertex.
+
+
+
+
+ New code should not use this. Only intended for backwards compatibility.
+
+
+
+
+ Ideally the interactable components should have a reference to their barricade, but that will maybe happen
+ after the NetId rewrites. For the meantime this is to avoid calling FindBarricadeByRootTransform. If we go
+ the component route then FindBarricadeByRootTransform will do the same as this method.
+
+
+
+ -1 if table was not found.
+
+
+
+ By default, clickable only responds to LeftMouse without the Control modifier.
+ Unturned (currently) filters left/right mouse and modifiers outside Glazier,
+ so add activators for left/right and control modifier to all clickables.
+
+
+
+
+ USS best practices mentions inline styles have a higher memory overhead, so we
+ only apply an inline value if it doesn't match the default :root font style.
+
+
+
+
+ USS best practices mentions inline styles have a higher memory overhead, so we
+ only apply an inline value if it doesn't match the default :root text alignment.
+
+
+
+
+ Ehh kind of a stretch to mark this obsolete or for backwards compatibility. Introducing it for road assets
+ which specify the PhysicMaterial to assign to the colliders. Specifying an asset path is available, but
+ for the common case we will use the built-in vanilla resources.
+
+
+
+
+ Get legacy enum corresponding to Unity physics material object name.
+ Moved from obsolete checkMaterial method.
+
+
+
+
+ If collider and its physics material are not null, get the physics material's name. Null otherwise.
+
+ Nelson 2025-04-22: this method may seem silly on first glance. However, I tracked down some every-frame
+ memory allocation to getting the PhysicMaterial.name property. This method caches the instance ID to
+ name lookup in a dictionary to avoid that. Note: we don't worry about clearing the dictionary because
+ there aren't very many physics materials.
+
+
+
+
+ Base class for uGUI implementations of primitive building block widgets.
+
+
+
+
+ Called after constructor when not populating from component pool.
+
+
+
+
+ Called after constructor when re-using components from pool.
+
+
+
+
+ Synchronize uGUI component colors with background/text/image etc. colors.
+ Called when custom UI colors are changed, and after constructor.
+
+
+
+
+ Synchronize uGUI component sprites with theme sprites.
+ Called when custom UI theme is changed, and after constructor.
+
+
+
+ False if element couldn't be released into pool and should be destroyed.
+
+
+
+ Unity recommends enabling components after parenting into the destination hierarchy.
+
+
+
+
+ RectTransform children should be attached to. Overridden by ScrollView content panel.
+
+
+
+
+ This helper property's purpose is to:
+ - Ensure other properties don't accidentally remove LayoutElement if others need it.
+ - Ensure LayoutElement is destroyed before returning to pool.
+
+
+
+
+ Parameters for connecting to a game server.
+
+ Admittedly there are other parameters to the Connect method,
+ but those are for detecting advertisement discrepencies and can be null.
+
+
+
+
+ Server's public IP address of a Steam "Fake IP" address.
+
+
+
+
+ Port for Steam's "A2S" query system. This the port we refer to when
+ sharing a server's address (e.g., 127.0.0.1:queryport).
+
+
+
+
+ Port for game traffic. i.e., Steam manages the query port socket while
+ we manage the connection port socket. The game assumes it's the query
+ port plus one. NOTE HOWEVER after the introduction of "Fake IP" support
+ (2023-12-07) the connection port is the same as the query port for fake
+ IPs. In keeping with the spirit of fake values to simplify existing code,
+ we act as if the connection port is plus one except in the appropriate
+ ClientTransport code when the fake IP is detected.
+
+
+
+
+ Referred to as "Server Code" in menus.
+ Used if address is zero.
+
+
+
+
+ If -1, this region is finished activating/deactivating.
+ Otherwise, incremented once per frame until per-region count is reached.
+
+ Per-region data is removed when isInsideMask is false and progressIndex is -1.
+
+
+
+
+ If true, this region is within MaxDistance of current CameraCoord.
+
+
+
+
+ Tracks activation and deactivation of Regions as camera moves around the level.
+
+
+
+
+ Mark all cells as finished loading and remove cells outside the camera view.
+ Used after teleporting or loading.
+
+
+
+
+ Caller passes an empty dictionary to be filled with update info.
+ Increments progressIndex for each returned region.
+ If region is finished updating, call NotifyRegionFinishedUpdating.
+
+
+
+
+ Called when progressIndex has reached end of given region.
+
+
+
+
+ Fill output set with mask offsets applied to current camera coordinate.
+
+
+
+
+ Find changes between old and current coordinate sets to mark regions in/out of mask.
+
+
+
+
+ Reset region's progress counter and change inside/outside status.
+
+
+
+
+ Allows Unity events to spawn effects.
+
+
+
+
+ GUID of effect asset to spawn when SpawnDefaultEffect is invoked.
+
+
+
+
+ If true the server will spawn the effect and replicate it to clients,
+ otherwise clients will predict their own local copy.
+
+
+
+
+ Should the RPC be called in reliable mode? Unreliable effects might not be received.
+
+
+
+
+ Transform to spawn the effect at.
+ If unset this game object's transform will be used instead.
+
+
+
+
+ Applied if greater than zero. Defaults to 128.
+
+
+
+
+ Marker for counting number of tips.
+
+
+
+
+ Camera used while transitioning between scenes to prevent the "no cameras rendering" warning.
+
+
+
+
+ Shown when game connection ping is significantly higher than server browser ping. At the time of writing
+ (2025-01-17) this is likely because the server is using an "anycast proxy" in front of Steam A2S cache.
+
+
+
+
+ Set to Time.frameCount + 1 while loading.
+ In the past used realtime, but that was unreliable if an individual frame took too long.
+
+
+
+
+ Select a loading image while on the startup screen or a level without any images.
+
+
+
+
+ Convert world-space point into region coordinates that may be out of bounds.
+
+
+
+
+ Convert world-space position into a region coordinate that may be out-of-bounds.
+
+
+
+
+ Returns true if coord is within legacy range.
+
+
+
+
+ Clamp position into the maximum bounds expected by the game, not necessarily the level bounds.
+
+ True if position was modified.
+
+
+
+ Kick players maybe trying to impersonate me. I guess nobody else named Nelson is allowed in the game!
+ 2023-09-19: relaxed this a bit by trimming names and using Equals/Starts/Ends rather than Contains
+ because there was a player with Nelson in their username.
+
+
+
+
+ GUID of the asset this is referring to.
+
+
+
+
+ Whether the type has been asigned. Note that this doesn't mean an asset with exists.
+
+
+
+
+ True if resovling this type reference would get that type.
+
+
+
+
+ Maximum count of naturally spawned boss zombies. Unlimited if negative.
+ Game will not spawn/respawn boss zombie types passing this limit, but quest spawns can bypass it.
+
+
+
+
+ Base class for UIToolkit implementations of primitive building block widgets.
+
+
+
+
+ Set by child.
+
+
+
+
+ Synchronize control colors with background/text/image etc. colors.
+ Called when custom UI colors are changed, and after constructor.
+
+
+
+
+ If set, takes priority over VehicleRedirectorAsset's paint color and over VehicleAsset's default paint color.
+
+
+
+
+ Returned asset is not necessarily a vehicle asset yet: It can also be a VehicleRedirectorAsset which the
+ vehicle spawner requires to properly set paint color.
+
+
+
+
+ Plugin-only event when throwable is spawned on server.
+
+
+
+
+ Allows NPCs to trigger plugin or script events.
+
+
+
+
+ instigatingPlayer can be null. For example, if instigated by NpcGlobalEventMessenger.
+
+
+
+
+ Circular mask for 2D distances in meters on a 2D cell grid.
+ Includes a cell if the meters distance between the center cell
+ and the closest point on test cell is within radius.
+
+
+
+
+ World space distance in meters.
+
+
+
+
+ Region cell size in meters.
+
+
+
+
+ Data in common between list downloaded from a GET request and a ServerListCurationAsset.
+
+
+
+
+ Optional web image path if icon isn't included.
+
+
+
+
+ Incremented during server list refresh for each server blocked by this rule.
+
+
+
+
+ Starting position when the bullet was fired.
+
+
+
+
+ Only available on the server. For use by plugins developers who want to analyze deviation between approximate
+ start direction and final hit position using and
+ per public issue #4450. Note that origin and direction on server are not necessarily exactly the same as on
+ the client for a variety of reasons, including that bullets on the client can be spawned between simulation
+ frames when the aim direction was different. (Aim direction is updated every drawn frame on the client as
+ opposed to every simulation frame on the server.) Rather than kicking for one particularly large deviation
+ we would recommend tracking stats for each shot's actual deviation vs max theoretical deviation. Remember
+ to account for bullet drop and that aim spread is relative to this direction. (For example, a shotgun may
+ fire ~8 pellets in a cone around this direction.) Note also that in third-person the bullet can turn up to
+ 90 degrees from the aim direction if the camera is up against a wall.
+
+
+
+
+ Combination of gun and attachments' bullet gravity multipliers.
+
+
+
+ Whether plugin allowed attachment.
+
+
+
+ Plugin-only event when bullet is fired on server.
+
+
+
+
+ Plugin-only event when bullet hit is received from client.
+
+
+
+
+ Plugin-only event when projectile is spawned on server.
+
+
+
+
+ reticuleHook.localPosition after instantiation, or zero if null.
+
+
+
+
+ True if startPrimary was called this simulation frame.
+ Allows gun to shoot even if stopPrimary is called immediately afterwards.
+
+
+
+
+ Remaining calls to tock before firing.
+
+
+
+
+ Shot counter used by needsRechamber and RechamberAfterShotCount.
+
+
+
+
+ Is the tactical attachment toggle on?
+ e.g. True when the laser is enabled.
+
+
+
+
+ Should stat modifiers from the current tactical attachment be used?
+
+
+
+
+ Factor e.g. 2 is a 2x multiplier.
+ Prior to 2022-04-11 this was the target field of view. (90/fov)
+
+
+
+
+ Zoom multiplier in third-person.
+
+
+
+
+ Whether main camera field of view should zoom without scope camera / scope overlay.
+
+
+
+
+ Original barrel and magazine assets are supplied because they may have already been deleted. Barrel is only
+ valid if quality was greater than zero.
+
+
+
+
+ Called on server and owning client.
+
+
+
+
+ Calculate damage multiplier for individual bullet.
+
+
+
+
+ Requested for plugin use.
+
+
+
+
+ Request from the server to play a gun jammed animation.
+ Since client can't predict chamber jams we fixup the predicted ammo count.
+
+
+
+
+ Note: This is the m/s² acceleration, not the multiplier.
+
+
+
+
+ This is a bit of a hack... aimAccuracy is [0, maxAimingAccuracy] and changed during each FixedUpdate call,
+ but was used in some gameplay display features like holo sight, laser, ADS, etc. (yes, should
+ be de-coupled from FixedUpdate but that is its own issue) To smooth this out we interpolate
+ slightly behind the aimAccuracy value depending on the time since FixedUpdate.
+
+
+
+
+ Holographic sights follow the true aiming direction regardless of viewmodel animation.
+
+
+
+
+ Note: This is the multiplier, not the m/s² acceleration.
+
+
+
+
+ Code common for regular gun and sentry gun.
+
+
+
+
+ Consolidates parameters for older, separate inventory search methods.
+
+ The "player" part of the name refers to the PlayerInventory-specific parameters. It can still be used to search
+ the Items class, in which case those parameters do not apply.
+
+
+
+
+ List to populate with matching items.
+
+
+
+
+ If true, search player's primary and secondary weapon slots.
+ Only applicable when used with PlayerInventory class. (I.e., not Items class.)
+
+
+
+
+ If true, search storage container player is currently interacting with (if any).
+ Only applicable when used with PlayerInventory class. (I.e., not Items class.)
+
+
+
+
+ If greater than zero, search exits early once Results count meets MaxResultCount.
+
+
+
+
+ If set, item must be this type to match.
+
+
+
+
+ If set, AssetRef must be a reference to item's asset to match.
+ Replaces older "id" parameter which matched if item's legacy asset ID was the same.
+
+
+
+
+ If true, items with amount of zero can match. Otherwise, they are ignored.
+ Replaces older "findEmpty" parameter which matched if (findEmpty || amount > 0).
+
+
+
+
+ If true, items with an "amount" >= their MaxAmount are ignored. Otherwise, they can match (default).
+
+
+
+
+
+ If set, item must be of type ItemCaliberAsset. Asset's caliber list must either:
+ • Contain this caliber ID.
+ • Or, if empty, IncludeUnspecifiedCaliber must be true.
+ Otherwise, item is ignored.
+
+
+
+
+ If set, item must be of type ItemCaliberAsset. Asset's caliber list must either:
+ • Contain one of these caliber IDs.
+ • Or, if empty, IncludeUnspecifiedCaliber must be true.
+ Otherwise, item is ignored.
+
+
+
+
+ Only applicable if CaliberId or AnyCaliberIds is set.
+ If true, assets with an empty calibers list can match. Otherwise, they are ignore.d
+
+
+
+
+ If set, do not include this specific item instance in search results.
+ Kind of hacked-in for ignoring "target item" as a potential input item.
+
+
+
+
+ Nearly identical to InventorySearch aside from:
+ • Struct instead of class to improve garbage collection performance in pooled lists.
+ • More understandable name.
+ • Provides reference to Items holding "Jar." Longer-term this should be preferred over the "Page" property.
+
+
+
+
+ Serverside delete an amount of this item.
+
+ False for crafting where original item can be kept, true when selling to vendors.
+ Total amount deleted.
+
+
+
+ -1 if no eligible item is found.
+ If includeMaxQuality is true an item with quality of 100 can be "lowest quality", otherwise item has to
+ be less than 100 quality.
+
+
+
+
+ Please use PlayerInventorySearchResultV2 for better performance!
+
+
+
+
+ Serverside delete an amount of this item.
+
+ Total amount deleted.
+
+
+
+ Used by the server to validate client Unity player files (assemblies and resources).
+
+
+
+
+ Should players be allowed to join this server regardless of whether their DLL hash matches ours?
+ Useful to allow players to join debug mode servers.
+
+
+
+
+ Should players be allowed to join this server regardless of whether their resources hash matches ours?
+ Useful to allow players to join debug mode servers.
+
+
+
+
+ Experience to add or subtract when used. Defaults to zero.
+
+
+
+
+ Canned beans have skins from April Fools.
+
+
+
+
+ Note: if calling ItemRef.Get() please use FindItemAsset instead to avoid redundant asset lookups.
+
+
+
+
+ Does this blueprint output create the specified item?
+
+
+
+
+ Reset dragging handle and register transformation.
+
+
+
+
+ If true, vest and backpack spawn System_Area instead of System_Hook.
+
+
+
+
+ Sets the point to lerp from, should be called after resetting position or things like that.
+
+
+
+
+ Logs enabled when WITH_NSB_LOGGING is defined.
+ Tracking down an issue where snapshot buffer stops working for groups of networked objects.
+
+
+
+
+ When adding or removing entries remember to update NetMessages size and regenerate NetCode!
+
+
+
+
+ Server sent a ping.
+
+
+
+
+ Server replying to our ping.
+
+
+
+
+ Server is shutting down shortly.
+
+
+
+
+ Create game object for player.
+
+
+
+
+ Destroy game object for player.
+
+
+
+
+ Download these files before loading the level.
+
+
+
+
+ Server wants additional info before accepting us.
+
+
+
+
+ Server has accepted us and will create a player game object.
+
+
+
+
+ Server rejected us, we will go back to the menu.
+
+
+
+
+ Banned either during connect or gameplay.
+
+
+
+
+ Kicked during gameplay.
+
+
+
+
+ Should be converted to an RPC. Leftover from prior to net messaging code.
+
+
+
+
+ Should be converted to an RPC. Leftover from prior to net messaging code.
+
+
+
+
+ Server sending BattlEye payload to client.
+
+
+
+
+ Infrequent notification of queue position.
+
+
+
+
+ Server calling an RPC.
+
+
+
+
+ Allow Unity events to apply damage in a sphere. (doesn't have any visual effects)
+ Intended to replace unsupported/unintentional use of "Grenade.cs" and "Rocket.cs" scripts.
+
+
+
+
+ Zombie explosion types have slight variations e.g. lighting zombies on fire.
+
+
+
+
+ If greater than -0.5, overrides default radius zombies and animals will be alerted within.
+
+
+
+
+ If true, per-surface effects like blood splatter are created.
+
+
+
+
+ If true, explosion damage passes through Barricades and Structures.
+
+
+
+
+ Speed to launch players away from blast position.
+
+
+
+
+ Overrides how fall damage is calculated when landing on this game object or its descendants.
+
+
+
+
+ Could be extended in the future to increase, decrease, or set fall damage.
+
+
+
+
+ Potentially useful for an event to toggle the override.
+
+
+
+
+ Character will not take any fall damage.
+
+
+
+
+ Payload for the DamageTool.damageZombie function.
+
+
+
+
+ Should game mode config damage multiplier be factored in?
+
+
+
+
+ Equivalent to the "armor" parameter of the legacy damage function.
+
+
+
+
+ Defaults to 1.
+
+
+
+
+ If not null and damage is applied, is called with this position (startle: true).
+
+
+
+
+ If non-zero, NPC name is shown as ??? until bool flag is true.
+
+
+
+
+ This value is confusing because in the level editor it is the normalized radius, but in-game it is the square radius.
+
+
+
+
+ Returning an Asset rather than the older IDs allows GUIDs to be used.
+ legacyTargetAssetType is required for compatibility with spawn tables using legacy 16-bit IDs. If set to
+ None and the spawn asset uses legacy IDs a warning is logged explaining GUIDs are necessary.
+
+
+
+
+
+ Doesn't support spawn assets with legacy 16-bit IDs.
+
+
+
+
+ For backwards compatibility with features that still need a legacy ID rather than asset.
+
+
+
+
+ For backwards compatibility with features that still need a legacy ID rather than asset.
+
+
+
+
+ For backwards compatibility with features that still need a legacy ID rather than asset.
+
+
+
+
+ If using a map or mods from the workshop, this class monitors them for changes so the server can be restarted.
+
+
+
+
+ Request status of workshop items.
+
+
+
+
+ Called the next tick after update(s) detected.
+
+
+
+
+ Called when a queried item's update timestamp is newer than our initially loaded version.
+
+
+
+
+ Called when results from a call to submitQueryRequest are available.
+
+
+
+
+ Called once timer reaches interval.
+
+
+
+
+ Were update(s) detected that should be handled on next tick?
+
+
+
+
+ Are we done monitoring?
+ Default finished once an update is detected.
+
+
+
+
+ Interval between query submissions.
+
+
+
+
+ Accumulated time before submitting query after passing interval.
+
+
+
+
+ Callback from Steam when results from a call to submitQueryRequest are available.
+
+
+
+
+ Slightly interpolated copy of actual spread angle to smooth out sharp changes like crouch/prone.
+
+
+
+
+ Allows interpolatedSpread to snap to target value when crosshair becomes visible.
+
+
+
+
+ Deserialize JSON onto an existing object instance.
+
+
+
+
+ Potentially useful for players with corrupted cloud storage.
+ https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/2756
+
+
+
+
+ Introduced much later (2020) than most of the other methods in this class (2014) in order to properly handle
+ BOM/preamble of text files. Matches somewhat undesirable legacy behavior like creating directories.
+
+
+
+
+ NOTE: From and to are both relative to PATH.
+
+
+
+
+ Read GUI texture from a .jpg or .png file.
+
+
+
+
+ Read GUI texture from a .jpg or .png file.
+
+
+
+
+ Windows-specific extensions of console input.
+ Uses the Win32 API to force a console to be created and destroyed.
+
+
+
+
+ Called by navmesh baking to complete pending object changes that may affect which nav objects are enabled.
+
+
+
+
+ Hide culling volume by default because new mappers might wonder what these purple boxes
+ are and why their number goes away after moving objects.
+
+
+
+
+ Check a fixed number of volumes for visibility updates per frame.
+
+
+
+
+ Any volumes in the process of enabling/disabling get updated once per frame.
+
+
+
+
+ True for the next update after the player is teleported.
+
+
+
+
+ Associates items of the same currency, e.g. dollars or bullets.
+
+
+
+
+ Should this item/value be shown in the list of vendor currency items?
+ Useful to hide modded item stacks e.g. a stack of 100x $20 bills.
+
+
+
+
+ String to format value {0} into.
+
+
+
+
+ String to format value {0} of total {1} into if not otherwise specified in NPC condition.
+
+
+
+
+ Sum up value of each currency item in player's inventory.
+
+
+
+
+ Does player have access to items covering certain value?
+
+
+
+
+ Add items to player's inventory to reward value.
+
+
+
+
+ Remove items from player's inventory to pay required value.
+
+
+
+
+ Sort currency entries by value.
+
+
+
+
+ Temporary replacement for static block member because plugins might depend on it.
+
+
+
+
+ Parses fv:X from input string and loads X.txt from game folder.
+
+
+
+
+ Called after lod bias may have changed.
+
+
+
+
+ Can be added to any GameObject with an interactable binary state in its parents.
+
+ If players should not be allowed to interact with the object in the ordinary manner,
+ add the Interactability_Remote flag to its asset to indicate only mod hooks should control it.
+
+
+
+
+ When a state change is requested in singleplayer it should be treated as if running as a client on a server.
+ This is the default to match behavior from before this option was added.
+
+
+
+
+ When a state change is requested in singleplayer it should be treated as if running as a dedicated server.
+
+
+
+
+ Invoked when interactable object enters the Used / On / Enabled state.
+
+
+
+
+ Invoked when interactable object enters the Unused / Off / Disabled state.
+
+
+
+
+ Should the OnStateEnabled and OnStateDisabled events be invoked when the object is loaded, becomes relevant
+ in multiplayer, and is reset? True is useful when visuals need to be kept in sync with the state, whereas
+ false is useful for transient interactions.
+
+
+
+
+ Controls how state change requests are performed when running as both client and server ("listen server").
+ On the dedicated server, requesting a state change overrides the current state without processing NPC
+ conditions, whereas when a client requests a state change NPC conditions apply. This option fixes the
+ inconsistency in singleplayer of whether to treat as server or client. (public issue #4298)
+ At the time of writing (2024-01-29) listen server only applies to singleplayer.
+
+
+
+
+ Set state to Enabled if currently Disabled.
+
+ On dedicated server this directly changes the state,
+ but as client this will apply the usual conditions and rewards.
+
+
+
+
+ Set state to Disabled if currently Enabled.
+
+ On dedicated server this directly changes the state,
+ but as client this will apply the usual conditions and rewards.
+
+
+
+
+ Toggle between the Enabled and Disabled states.
+
+ On dedicated server this directly changes the state,
+ but as client this will apply the usual conditions and rewards.
+
+
+
+
+ Tests whether current or recent history contains point.
+
+
+
+
+ Half second history at 50 tickrate.
+
+
+
+
+ Not originally supported by networking. Added temporarily during netpak rewrite because the quaternion
+ compression is so much better for vehicles than three byte Euler rotation.
+
+
+
+
+ Gets barricades both attached to vehicles and not attached to vehicles.
+
+
+
+
+ Nelson 2025-04-08: thank goodness that this didn't use the temperature system! (For some reason?) Makes it
+ relatively straightforward to convert campfires and ovens to Crafting Tags, and means vanilla has a test
+ case for the mod hook, too. (This method tests for CraftingHeatTag in radius.)
+
+
+
+
+ Index into Blueprints list. -1 means blueprint name is used instead.
+
+
+
+
+ Name to look for in Blueprints list.
+
+
+
+
+ Other menus can modify DevkitSelectionToolOptions so we need to sync our menu when opened.
+
+
+
+
+ Thanks to Glenn Fiedler for this RK4 implementation article:
+ https://gafferongames.com/post/integration_basics/
+
+
+
+
+ Higher values return to the target position faster.
+
+
+
+
+ Higher values reduce bounciness and settle at the target position faster.
+ e.g. a value of zero will bounce back and forth for a long time (indefinitely?)
+
+
+
+
+ Should objects that failed to load due to missing assets be saved?
+ If true, a placeholder transform is created and used to save.
+ If false, objects without assets are zeroed during save. (old default)
+
+
+
+
+ Hash of Objects.dat
+
+
+
+
+ Called by navmesh baking to complete pending object changes that may affect which nav objects are enabled.
+
+
+
+
+ Stagger regional visibility across multiple frames.
+
+
+
+
+ Caches uint16 ID to ID redirects.
+
+
+
+ Matches handle returned by request, or -1 if cached.
+
+
+
+ Revive all trees in a specific region.
+
+
+
+
+ Revive trees worldwide. Used between arena rounds.
+
+
+
+
+ Material instantiated when dual-render scopes are enabled.
+ Overrides the material of the gun sight attachment.
+
+
+
+
+ Unintuitively (to say the least), a pitch of 0 is up, 90 is forward, and 180 is down.
+
+
+
+
+ Nelson 2025-06-27: previously, stopping aim cancelled the sway offset immediately. When
+ experimenting with removing the dual-render scope blur this felt jarring.
+
+
+
+
+ Reset to actual fov when first used.
+
+
+
+
+ If true, freecam controls take input priority.
+ Previously named isOrbiting.
+
+
+
+
+ Should player stats be visible in spectator mode?
+
+
+
+
+ Smoothing adds some initial blend-in which felt nicer for explosion rumble.
+
+
+
+
+ Slightly clamped third-person version of "eyes" value to prevent sweep from hitting floor.
+
+
+
+
+ Get point-of-view in world-space.
+
+
+
+
+ Get point of view in worldspace without the left/right leaning modifier.
+
+
+
+
+ This is only used after capturing dual-render scope, not when exiting scope overlay.
+ Otherwise the lighting vision may have changed between entering and exiting the scope.
+
+
+
+
+ Clamp _pitch within the [0, 180] range.
+
+
+
+
+ Clamp yaw while seated, and keep within the [-360, 360] range.
+
+
+
+
+ Can spectating be used without admin powers?
+ Plugins can enable spectator mode.
+
+
+
+
+ Can workzone be used without admin powers?
+ Plugins can enable workzone permissions.
+
+
+
+
+ Can spectator overlays be used without admin powers?
+ Plugins can enable specstats permissions.
+
+
+
+
+ Called from the server to allow spectating without admin powers.
+ Only used by plugins.
+
+
+
+
+ Allow use of spectator mode without admin powers.
+ Only used by plugins.
+
+
+
+
+ Called from the server to allow workzone without admin powers.
+ Only used by plugins.
+
+
+
+
+ Allow use of workzone mode without admin powers.
+ Only used by plugins.
+
+
+
+
+ Called from the server to allow spectator overlays without admin powers.
+ Only used by plugins.
+
+
+
+
+ Allow use of spectator overlay mode without admin powers.
+ Only used by plugins.
+
+
+
+
+ Multiple hits are necessary because the first returned hit is not always the closest.
+
+
+
+
+ Sweep a sphere to find collisions blocking the third-person camera.
+
+ Valid world-space camera position.
+
+
+
+ Replacement for enum origin.
+
+
+
+
+ Hardcoded built-in name, or name of workshop file if known.
+
+
+
+
+ Steam file ID if loaded from the workshop, zero otherwise.
+
+
+
+
+ If true, when added to asset mapping the new assets will override existing ones.
+ This ensures workshop files installed by servers take priority and disables warnings about overlapping IDs.
+
+
+
+
+ If true, we can re-save .dat/.asset files from this origin.
+ Defaults to false. Only true for assets in the game install folder.
+
+
+
+
+ Can be added to any GameObject to receive text chat events.
+
+
+
+
+ Message can be in any chat channel.
+
+
+
+
+ Message must be in Global channel.
+
+
+
+
+ Message must be in Local channel.
+
+
+
+
+ Filter to apply to message type.
+
+
+
+
+ Sphere radius (squared) around this transform to detect player messages.
+ e.g. 16 is 4 meters
+
+
+
+
+ Substring to search for in message.
+
+
+
+
+ Message must start with phrase text.
+
+
+
+
+ Message must contain phrase text.
+
+
+
+
+ Message must end with phrase text.
+
+
+
+
+ Filter to apply to message text.
+
+
+
+
+ Invoked when a player message passes the filters.
+
+
+
+
+ Calculate angle in radians the player would need to offset their aim upward
+ to hit a target a certain distance away.
+
+
+
+
+ Separate from isEnabled to hide markers when they are outside the scope.
+
+
+
+
+ Used to sync hasLabel visibility.
+
+
+
+
+ True while fading in or fully transitioned in.
+
+
+
+
+ True while fading in, but not at full intensity.
+
+
+
+
+ True while finished fading in.
+
+
+
+
+ True while fading out, but not at zero intensity.
+
+
+
+
+ True while finished fading out.
+
+
+
+
+ True while fading in or out.
+
+
+
+ Matches handle returned by request, or -1 if cached.
+
+
+
+ Read commands from standard input, and write logs to standard output.
+
+
+
+
+ Each Update we consume a key press from the console buffer if available.
+ Unfortunately ReadLine is not an option without blocking output, so we maintain our own pending input.
+
+
+
+
+ Entry in the MenuPlayServerBookmarksUI list.
+
+
+
+
+ Null token.
+
+
+
+
+ Text between tags.
+
+
+
+
+ [b]
+
+
+
+
+ [/b]
+
+
+
+
+ [i]
+
+
+
+
+ [/i]
+
+
+
+
+ [list]
+
+
+
+
+ [/list]
+
+
+
+
+ [olist]
+
+
+
+
+ [/olist]
+
+
+
+
+ [*] value
+ Nelson 2025-07-02: manually written lists typically don't have a ListItemClose token.
+
+
+
+
+ [/*]
+ Nelson 2025-07-02: Steam's new visual editor adds closing tokens to list items, but
+ manually-written list items typically don't have them.
+
+
+
+
+ [h1]
+
+
+
+
+ [/h1]
+
+
+
+
+ [h2]
+
+
+
+
+ [/h2]
+
+
+
+
+ [h3]
+
+
+
+
+ [/h3]
+
+
+
+
+ [url=value]
+
+
+
+
+ [/url]
+
+
+
+
+ [img]
+
+
+
+
+ [/img]
+
+
+
+
+ [previewyoutube=value]
+
+
+
+
+ [/previewyoutube]
+
+
+
+
+ '\n' or "\r\n"
+
+
+
+
+ [quote=value] (value is author)
+
+
+
+
+ [/quote]
+
+
+
+
+ [p]
+
+
+
+
+ [/p]
+
+
+
+
+ [u]
+
+
+
+
+ [/u]
+
+
+
+
+ Steam's new visual editor quotes value in [url=x] tag. If value is not quoted, this method returns as-is.
+ If it IS quoted, this methods returns without quotation marks.
+
+
+
+
+ Breaks down Steam's version of BBcode into tokens like, "[b]", "[i]", "actual text", etc.
+
+
+
+
+ If true, parse newlines in the input as LineBreak tokens. (default true)
+ If false, exclude LineBreak tokens from output.
+ Steam's new visual editor doesn't emit newlines, instead inferring line breaks from paragraph blocks. To
+ make life easier we will do the same for the main menu announcement feed.
+
+
+
+
+ Reset to -1 when not chatting. If player presses up/down we get index 0 (most recent).
+
+
+
+
+ Fill chat field with previous sent message.
+ Useful for repeating commands with minor changes.
+
+
+
+
+ Use the latest hotbar items in the UI.
+
+
+
+
+ Icon uploaded to CDN.
+
+
+
+
+ Icon used in game menus.
+
+
+
+
+ Project-relative asset importer version of
+
+
+
+
+ Icon saved for community members in Extras folder.
+
+
+
+
+ Has the small icon been captured yet?
+
+
+
+
+ Has the large icon been captured yet?
+
+
+
+
+ Moved icon code from MenuTitleUI to here.
+
+
+
+
+ These directories are excluded from source control and Steam depots so they might not exist yet.
+
+
+
+
+ If updating this method please remember to update the support article:
+ https://support.smartlydressedgames.com/hc/en-us/articles/13452208765716
+
+
+
+
+ Does name contain rich text tags?
+ Some players were abusing rich text enabled servers by inserting admin colors into their steam name.
+
+
+
+
+ Used when damaging zombies to override in which situations they are stunned.
+
+
+
+
+ Default stun behaviour determined by damage dealt.
+
+
+
+
+ Don't stun even if damage is over threshold.
+
+
+
+
+ Stun regardless of damage.
+
+
+
+
+ Overrides hat item from zombie table with a specific item ID.
+
+
+
+
+ Overrides gear item from zombie table with a specific item ID.
+
+
+
+
+ If zombie is stuck this was a nearby barricade potentially blocking our path.
+
+
+
+
+ If zombie is stuck this was a nearby structure potentially blocking our path.
+
+
+
+
+ If zombie is stuck this was a nearby vehicle potentially blocking our path.
+
+
+
+
+ If target player is passenger in a vehicle this is their vehicle.
+
+
+
+
+ If zombie is stuck this was a nearby object potentially blocking our path.
+
+
+
+
+ Incremented while stuck. Prevents doing overlap test too frequently.
+
+
+
+
+ Add or remove from ticking list if needed.
+ Separated from updateTicking in order to move once after first spawn.
+
+
+
+
+ Boss zombies are considered mega as well.
+
+
+
+
+ Yeah it seems kinda ugly to pollute all zombies with this code... zombie rewrite eventually please.
+
+
+
+
+ If damage exceeds this value, stun the zombie.
+
+
+
+
+ Used to kill night-only zombies at dawn.
+
+
+
+
+ Cache difficulty asset (if any) for this zombie's current type and bound.
+ Allows difficulty assets to override certain zombie behaviors.
+ Called after bound/type is initialized, and after type changes during respawn.
+
+
+
+
+ Called when zombie does not have a target, but has been stuck for a period.
+
+
+
+
+ Reduces frequency of UndergroundAllowlist checks because it can be expensive with lots of entities and volumes.
+
+
+
+
+ Helper to prevent mistakes or plugins from breaking alive zombie count.
+
+
+
+
+ Helper to prevent mistakes or plugins from breaking alive boss zombie count.
+
+
+
+
+ 2023-01-31: set height to 2 rather than adjusting per-zombie-type. Tall zombies (megas) couldn't
+ get through doorways, and short zombies (crawlers) could get underneath objects they shouldn't
+ like gas tanks. Zombies were also stacking on top of eachother a bit too much.
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ Ideally in a future rewrite asset overload will become the default rather than the overload taking legacy ID.
+
+
+
+
+ If true, item has 100% quality. If false, item has a random quality.
+
+
+
+
+ Get animal or player damage based on game mode config.
+
+
+
+
+ Get zombie or player damage based on game mode config.
+
+
+
+
+ Allows Unity events to spawn barricades.
+
+
+
+
+ Distance along tree's local up axis to offset debris spawn position. Defaults to 1.0.
+
+
+
+
+ Before had randomization properties (which trees don't currently use
+ as of 2024-12-11 because rotation/scale aren't saved) each tree has some random rotation and scale variation
+ based on its position. This property controls the rotation away from upright.
+
+
+
+
+ Amount of experience to reward foraging player.
+
+
+
+
+ Forageable resource message.
+
+
+
+
+ Weapon must have matching blade ID to damage tree.
+ Both weapons and trees default to zero so they can be damaged by default.
+
+
+
+
+ If true, prevent collisions between falling tree and the stump. (i.e., debris can fall through stump)
+ Defaults to true.
+
+
+
+
+ Only activated during this holiday.
+
+
+
+
+ Tree to use during the Christmas event instead.
+
+
+
+
+ Tree to use during the Halloween event instead.
+
+
+
+
+ Get asset ref to replace this one for holiday, or null if it should not be redirected.
+
+
+
+
+ Essentially deprecated for now.
+
+
+
+
+ Server response to a non-rejected CONNECT request. Notifies client they are in the queue.
+
+
+
+
+ Rather than creating all SleekItems as once we create a few per frame.
+
+
+
+
+ Reset all items hotkey label.
+
+
+
+
+ Kept because lots of modders have been using this script in Unity,
+ so removing legacy effect id would break their content.
+
+
+
+
+ Find an item to apply stat tracker tool to.
+
+
+
+
+ Find an item with a stat tracker to remove.
+
+
+
+
+ Find an item with a ragdoll effect to remove.
+
+
+
+
+ Find an item to apply ragdoll effect tool to.
+
+
+
+
+ Toggle button to open/close advanced filters panel.
+
+
+
+
+ On/off checkbox for including description text in filter.
+
+
+
+
+ Switch between sort modes.
+
+
+
+
+ On/off checkbox to reverse sort results.
+
+
+
+
+ On/off checkbox to show only equipped items.
+
+
+
+
+ Container for advanced options.
+
+
+
+
+ Whether to include description text in filter.
+
+
+
+
+ How to sort filtered items.
+
+
+
+
+ Should sorted list be reversed?
+
+
+
+
+ Should only equipped items be shown?
+
+
+
+
+ Remove items that do not match search text.
+
+
+
+
+ Removed items that are not equipped.
+
+
+
+
+ All main menu MTX shop code should be routed through here so that it could theoretically be ported to other
+ platforms or stores. Obviously this is all very Steam specific at the moment, but at least the UI does not
+ depend on Steam API here as much as older parts of the game.
+
+
+
+
+ Was this item marked as new in the config?
+ If new, and not marked as seen, then a "NEW" label is shown on the listing.
+
+
+
+
+ Do we have pricing details for a given item?
+ Price results may not have been returned yet, or item might not be public.
+
+
+
+
+ Messy, but we only show a menu alert if there was a problem.
+
+
+
+
+ Already filtered to only return locally known items which pass country restrictions.
+
+
+
+
+ Empty if outside new time window.
+
+
+
+
+ Subset of listings.
+
+
+
+
+ Subset of listings.
+
+
+
+
+ Subset of listings.
+
+
+
+
+ Subset of listings.
+
+
+
+
+ Subset of listings.
+
+
+
+
+ May be out of date by one frame.
+
+
+
+
+ Currently used by vehicles to deactivate some rendering features when outside rendering distance.
+ Uses "frozen" position if applicable, otherwise the camera position from the most recent Update. This means
+ it could be out-of-date, but for LOD purposes it should be "good enough."
+
+
+
+
+ Reset prior to joining a new server.
+
+
+
+
+ By default if the client submits an asset guid which the server cannot find an asset for the client will
+ be kicked. This is necessary to prevent cheaters from spamming huge numbers of random guids. In certain cases
+ like a terrain material missing the server knows the client will be missing it as well, and can register
+ it here to prevent the client from being kicked unnecessarily.
+
+
+
+
+ Send asset hash (or lack thereof) to server.
+
+ IMPORTANT: should only be called in cases where the server has verified the asset exists by loading it,
+ otherwise only if the asset exists on the client. This is because the server kicks if the asset does not
+ exist in order to prevent hacked clients from spamming requests. Context parameter is intended to help
+ narrow down cases where this rule is being broken.
+
+
+
+
+ Send asset hash to server.
+ Used in cases where server does not verify asset exists. (see other method's comment)
+
+
+
+
+ Called each Update on the client.
+
+
+
+
+ Called from the server to override salvage duration.
+ Only used by plugins.
+
+
+
+
+ Override salvage duration without admin.
+ Only used by plugins.
+
+
+
+
+ Outlined object is not necessarily the focused object, so we track it to disable later if focus is destroyed.
+
+
+
+
+ Search up hierarchy for most specific Target transform.
+
+
+
+
+ Was focus non-null during last update? Used to detect when focus was destroyed.
+
+
+
+
+ Currently used by plugins to identify what damaged a buildable.
+
+
+
+
+ Explosion instigated by .
+
+
+
+
+ Should only be used by .
+ For example: "Condition_##" where ## is an index.
+
+
+
+
+ If >0 the game will start a coroutine to grant the reward after waiting.
+
+
+
+
+ If true and player has this reward pending when they die or disconnect it will be granted.
+
+
+
+
+ Intended to replace filling data from constructor.
+
+
+
+
+ Intended to replace filling data from constructor. Legacy is for backwards compatibility with Reward_#_Key
+ format, whereas V2 uses the list and dictionary features.
+
+
+
+
+ Used in a test scene to quickly test UI Toolkit implementation.
+
+
+
+
+ Assigned when a named preset is created.
+ 0 is the default and should be replaced by a preset when loaded.
+ -1 indicates the preset was modified.
+ -2 and below are the default presets.
+
+
+
+
+ Nelson 2024-09-20: Changing default to any (from has players) because the default server list sort will now
+ push empty servers to the bottom.
+
+
+
+
+ If true, only servers with available player slots are shown.
+ Nelson 2024-09-20: Changing default to false because the default server list sort will now push them down
+ from the top a little bit.
+
+
+
+
+ If >0, servers with ping higher than this will not be shown.
+
+
+
+ True if level was added to the list of maps.
+
+
+
+ Version before named version constants were introduced. (2023-11-13)
+
+
+
+
+ % Full
+
+
+
+
+ Note: this can be different from status.blueprint after status refreshes because status is pooled.
+
+
+
+
+ Update the title box describing the "most important" item: item to repair, salvage, craft, etc.
+
+
+
+
+ The dialogue to go to when a message has no available responses.
+ If this is not specified the previous dialogue is used as a default.
+
+
+
+
+ For level objects with QuestCondition called when quests are added or removed.
+
+
+
+
+ Event specifically for plugins to listen to global quest progress.
+
+
+
+
+ Event for plugins when group or rank changes.
+
+
+
+
+ Overrides label text next to marker on map.
+ Used by plugins. Not saved to disk.
+
+
+
+
+ Kept serverside. Used to check whether the player is currently in their Steam group or just a normal in-game group.
+
+
+
+
+ Check before allowing changes to this player's
+
+
+
+
+ Can rename the group.
+
+
+
+
+ Can promote and demote members.
+
+
+
+
+ If set, default spawn logic will check for a location node or spawnpoint node matching name.
+ Saved and loaded between sessions.
+
+
+
+
+ If true, hide viewmodel and prevent using equipped item. For example, to prevent shooting gun on top of a
+ first-person scene. This could be expanded in the future with other flags and options.
+
+
+
+
+ Called serverside to set marker on clients.
+
+
+
+
+ Ask server to set marker.
+
+
+
+
+ Call serverside to replicate new rank to clients
+
+
+
+
+ Set player's group to their Steam group (if any) without testing restrictions.
+
+
+
+ Ignores group changing rules when true.
+
+
+
+ Serverside send packet telling player about this invite
+
+
+
+
+ Called on server to finalize and remove quest.
+
+
+
+
+ Called by quest details UI to request server to abandon quest.
+
+
+
+
+ Called when there are no responses to choose, but server has indicated a next dialogue is available.
+
+
+
+
+ Called in singleplayer and on the server after client requests NPC dialogue.
+
+
+
+
+ Prevent re-creating it during destroy (e.g. plugin granting rewards) from leaking gameobject.
+
+
+
+
+ White 1x1 texture for solid colored images.
+ uGUI empty image draws like this, but we need the texture for IMGUI backwards compatibility.
+
+
+
+
+ Is the server this widget represents currently favorited?
+ Can be false on the favorites list.
+
+
+
+
+ Payload for the DamageTool.damagePlayer function.
+
+
+
+
+ Should armor worn on matching limb be factored in?
+
+
+
+
+ Should game mode config damage multiplier be factored in?
+
+
+
+
+ If player dies should it count towards quests?
+
+
+
+
+ Effect to apply to ragdoll if dead.
+
+
+
+
+ Read 8-bit per channel color excluding alpha.
+
+
+
+
+ Intended as a drop-in replacement for existing assets with property uint16s.
+
+
+
+
+ Is a point safely within the level bounds?
+ Also checks player clip volumes if legacy borders are disabled.
+
+
+
+
+ Is given Y (vertical) coordinate within level's height range?
+ Maps using landscapes have a larger range than older maps.
+
+
+
+
+ Notify menus that levels list has changed.
+ Used when creating/deleting levels, as well as following workshop changes.
+
+
+
+
+ Get level's cached asset, if any.
+
+
+
+
+ Should loading code proceed with redirects?
+ Disabled by level and when in the editor.
+
+
+
+
+ Placeholder created between unloading the main menu and loading into game or editor.
+
+
+
+
+ Loading screen music.
+
+
+
+
+ Clip to play to fade out loop.
+
+
+
+
+ Useful to narrow down why a player is getting kicked for modified level files when joining a server.
+
+
+
+
+ Display version string of the currently loaded level.
+
+
+
+
+ Version string of the currently loaded level packed into an integer.
+
+
+
+
+ Refreshes known levels and attempts to redirect level reference if it no longer exists.
+
+
+
+
+ Find level matching both name AND workshop file ID (can be zero).
+
+
+
+
+ Load level details from Level.dat in directory path.
+
+
+
+
+ Server list allows player to enter a map name when searching, so we try to find a local
+ copy of the level for version number comparison. (Server map version might differ.)
+
+
+
+
+ New map filter uses lowercase map name and doesn't need startswith.
+
+
+
+
+ Search all map folders to add any previously unregistered maps.
+
+
+
+
+ Temporary to unbind events because this class is static for now. (sigh)
+
+
+
+
+ Defines how instance methods handle invocation when the target instance does not exist yet, for example
+ if the target instance is async loading or has time sliced instantiation.
+
+
+
+
+ Invocation should be ignored if the target instance does not exist.
+ This is the only applicable defer mode for static methods and server methods.
+
+
+
+
+ Invocation will be queued up if the target instance does not exist.
+ Originally an "Overwrite" mode was considered for cases like SetHealth where only the newest value is
+ displayed, but this was potentially error-prone if multiple queued methods depended on values from each other.
+
+
+
+
+ Allows Unity events to execute commands from the server.
+ Messenger context is logged to help track down abusive assets.
+
+
+
+
+ Responsible for loading asset definitions on a separate thread.
+
+
+
+
+ Parser error messages, if any.
+
+
+
+
+ Warning: on worker thread this only acts as handle. Do not access.
+
+
+
+
+ Used on main thread to determine when all queued tasks have finished.
+
+
+
+
+ Loop searching directories recursively for asset bundle and asset definition files.
+
+
+
+
+ Warning: on worker thread this only acts as handle. Do not access.
+
+
+
+
+ Absolute path to *.log file.
+
+
+
+
+ Responsible for the per-process .log file in the Logs directory.
+ Kept multiple log files in the past, but now consolidates all information
+ into a single file named Client.log or Server_{Identifier}.log.
+
+
+
+
+ Should setup of the default *.log file be disabled?
+
+
+
+
+ If true, information like IP addresses and login tokens should be censored in vanilla logs.
+ Nelson 2024-11-11: Special thanks to Jdance and asineth0 in public issue #4740!
+
+
+
+
+ Text to replace with if is enabled.
+
+
+
+
+ *ATTEMPTS* to replace IPv4 address(es) with .
+ Should only be called if is enabled.
+ Case-by-case redaction should be preferred for performance reasons over using this function. This function
+ is intended for third-party messages (e.g., BattlEye) that we don't have control over.
+
+ True if message was modified.
+
+
+
+ Get logging to path.
+
+
+
+
+ Set path to log to.
+
+
+
+
+ Close current log file.
+
+
+
+
+ Invoked when door is opened/closed, but not when loaded.
+
+
+
+
+ Switches between "legacy" (per-level road textures bundle) and "assets" (using RoadAsset).
+
+
+
+
+ If modifying usage please update support article:
+ https://support.smartlydressedgames.com/hc/en-us/articles/13452208765716
+
+
+
+
+ If modifying usage please update support article:
+ https://support.smartlydressedgames.com/hc/en-us/articles/13452208765716
+
+
+
+
+ Client has a critical module the server doesn't.
+
+
+
+
+ Server has a critical module the client doesn't.
+
+
+
+
+ Level config's version number does not match.
+
+
+
+
+ EconInfo.json hash does not match.
+
+
+
+
+ Master bundle hashes do not match.
+
+
+
+
+ Server has not received an auth session response from Steam yet.
+
+
+
+
+ Server has not received an economy response from Steam yet.
+
+
+
+
+ Server has not received a groups response from Steam yet.
+
+
+
+
+ Player nickname exceeds limit.
+
+
+
+
+ Player nickname contains invalid characters.
+
+ If modifying usage please update support article:
+ https://support.smartlydressedgames.com/hc/en-us/articles/13452208765716
+
+
+
+
+ Player nickname should not be a number.
+
+
+
+
+ Player resources folders don't match.
+
+
+
+
+ The network identity in the ticket does not match the server authenticating the ticket.
+ This can happen if server's Steam ID has changed from what the client thinks it is.
+ For example, joining a stale entry in the server list. (public issue #4101)
+
+
+
+
+ Player's skin color is too similar to one of .
+
+
+
+
+ Steam ID reported by net transport doesn't match client's reported Steam ID.
+ This was exploited to fill the server queue with fake players.
+
+
+
+
+ Received too many connection requests from player in a short window.
+
+
+
+
+ Received too many invalid messages from connection in a short window.
+
+
+
+
+ Server limits how many clients are joining from the same IP address.
+ (public issue #5001)
+
+
+
+
+ Zero is treated as unset.
+
+
+
+
+ Returned asset is not necessarily a vehicle asset yet: It can also be a VehicleRedirectorAsset which the
+ vehicle spawner requires to properly set paint color.
+
+
+
+
+ Kept because lots of modders have been using this script in Unity,
+ so removing legacy effect id would break their content.
+
+
+
+
+ Matches level with same file name AND workshop file ID.
+
+
+
+
+ Version before named version constants were introduced. (2023-11-08)
+
+
+
+
+ Moved into ServerListFilters.
+
+
+
+
+ Exposed for plugins. Can be null. Please do not modify.
+
+
+
+
+ This overload supports legacy Condition_# format.
+
+
+
+
+ This overload doesn't support legacy Condition_# format.
+
+
+
+
+ If true, button tooltip will be overridden with tooltip from states array.
+
+
+
+
+ If true oxygen is restored while in this volume, otherwise if false oxygen is depleted.
+
+
+
+
+ Merges textures used in the level into an atlas to assist runtime draw call batching.
+
+
+
+
+ Skip renderer children of these transforms, if any.
+ For example we skip lights with material instances and rubble debris.
+
+
+
+
+ Most objects in Unturned use the standard shader without transparency/emissive/detail/etc.
+
+
+
+
+ Meshes we logged an explanation for as to why they can't be atlased.
+
+
+
+
+ Textures we logged an explanation for as to why they can't be atlased.
+
+
+
+
+ Materials we logged an explanation for as to why they can't be atlased.
+
+
+
+
+ Objects instantiated for the lifetime of the level that should be destroyed when exiting the level.
+
+
+
+
+ If true, don't assign texture atlas to material so batched materials are obvious.
+
+
+
+
+ If true, assign a red material to excluded meshes so they are obvious.
+
+
+
+
+ If true, replace each unique material with a colored one before static batching.
+
+
+
+
+ If true, log why texture/material can't be included in atlas.
+
+
+
+
+ If true, log if mesh has UVs outside [0, 1] range.
+
+
+
+
+ We generate a 1x1 texture for materials without one.
+
+
+
+
+ Tracks which mesh filters and skinned mesh renderers were referencing a given mesh.
+
+
+
+
+ Tracks which meshes and materials were referencing a given texture.
+
+
+
+
+ If true, UVs should be centered and overridden because original mesh was not textured.
+
+
+
+
+ Maps original mesh to any mesh filters using it.
+ When mesh's UVs are modified the mesh filters need to be pointed at the copied mesh.
+
+
+
+
+ Renderers with a material using the texture.
+ After combining texture the renderers need to be pointed at the combined material.
+
+
+
+
+ Tracks which textures were referencing a given shader.
+
+
+
+
+ StaticBatchingUtility.Combine requires input renderers are enabled and active in hierarchy,
+ so we temporarily activate/enable them to keep this logic out of LevelObject/ResourceSpawnpoint.
+
+
+
+
+ Payload for the DamageTool.damageAnimal function.
+
+
+
+
+ Should game mode config damage multiplier be factored in?
+
+
+
+
+ If not null and damage is applied, is called with this position.
+
+
+
+
+ Can be added to EquipablePrefab item GameObject to receive events.
+
+
+
+
+ Invoked when item begins inspect animation.
+
+
+
+
+ Entry in the MenuPlayServerCurationUI list.
+
+
+
+
+ In-game rich text does not support embedded YouTube videos, but they look great in the web browser,
+ so we simply remove them from the in-game text.
+
+
+
+
+ Unfortunately in-game rich text does not have code formatting yet, so remove the tags while preserving text.
+
+
+
+
+ Nelson 2025-01-28: This command reproduces a bug destroying the player gameObject if the vehicle is
+ destroyed on the same frame as the request to enter.
+ https://github.com/SmartlyDressedGames/Unturned-3.x-Community/issues/4760#issuecomment-2613090165
+
+
+
+
+ Not using rate limit attribute because this is potentially called for hundreds of barricades at once,
+ and only admins will actually be allowed to apply the transform.
+
+
+
+
+ Only used by plugins.
+
+
+
+
+ See BarricadeRegion.FindBarricadeByRootFast comment.
+
+
+
+
+ For code which does not know whether transform exists and/or even is a barricade.
+ See BarricadeRegion.FindBarricadeByRootFast comment.
+
+
+
+
+ Does this label fade out as the chat message gets older?
+
+
+
+
+ Chat message values to show.
+
+
+
+
+ Tree activation is time-sliced, so this does not necessarily match whether the region is active.
+
+
+
+
+ Can this tree be damaged?
+ Allows holiday restrictions to be taken into account. (Otherwise holiday trees could be destroyed out of season.)
+
+
+
+
+ Some new code common to SteamPending and SteamPlayer.
+
+
+
+
+ Realtime the first ping request was received.
+
+
+
+
+ Number of ping requests the server has received from this client.
+
+
+
+
+ Called when a ping request is received from this client.
+
+
+
+
+ Realtime passed since the first ping request was received from this client.
+
+
+
+
+ Average number of ping requests received from this client per second.
+ Begins tracking 10 seconds after the first ping request was received, or -1 if average is unknown yet.
+
+
+
+
+ Only set on server. Associates player with their connection.
+
+
+
+
+ Used when kicking player in queue to log what backend system might be failing.
+
+
+
+
+ Number of alive zombies.
+
+
+
+
+ Last time a quest boss was spawned.
+
+
+
+
+ Allow another quest to spawn a boss zombie immediately.
+
+
+
+
+ Kills the boss zombie if nobody is around, if the boss was killed it calls UpdateBoss.
+
+
+
+
+ Checks for players in the area with quests and spawns boss zombies accordingly.
+
+
+
+
+ HUD with projected labels for teammates.
+
+
+
+
+ Allows map makers to create custom weather events.
+
+
+
+
+ Does this weather affect fog color and density?
+
+
+
+
+ Does this weather affect sky fog color?
+
+
+
+
+ Does this weather affect cloud colors?
+
+
+
+
+ Directional light shadow strength multiplier.
+
+
+
+
+ Exponent applied to effect blend alpha.
+
+
+
+
+ Exponent applied to effect blend alpha.
+
+
+
+
+ SpeedTree wind strength for blizzard. Should be removed?
+
+
+
+
+ If specified level editor color can be used rather than a per-asset color.
+
+
+
+
+ Remove any existing item alert widgets.
+
+
+
+
+ Open fullscreen alert showcasing newly granted items.
+ Uses first item for title color, so items should be sorted by priority.
+
+
+
+
+ Open fullscreen alert showcasing newly granted items.
+
+
+
+
+ Handle esc/back key press.
+ Still really messy, but this used to be inside a huge nested if/elseif in Update.
+
+
+
+
+ Despite being newer code, this is obviously not ideal. Previously the news request was using the Steam HTTP
+ API which might have been the cause of some crashes, so it was quickly converted to Unity web request instead.
+
+
+
+
+ Invoked when web item is first loaded or reloaded.
+
+
+
+
+ If false this structure cannot take damage.
+
+
+
+
+ Modded structures can disable pooling if they have custom incompatible logic.
+
+
+
+
+ Length of raycast downward from pivot to check floor is above terrain.
+ Vanilla floors can be placed a maximum of 10 meters above terrain.
+
+
+
+
+ Optional alternative structure prefab specifically for the client preview spawned.
+
+
+
+
+ Called on the dedicated server to optimize client prefab for server usage.
+
+
+
+
+ Compares weather intensity to value.
+
+
+
+
+ Called during startup and when returning to the main menu.
+
+
+
+
+ Result is never null, but may be empty or out-of-date.
+
+
+
+
+ Can be added to Vehicle GameObject to receive events.
+
+
+
+
+ Invoked when any player enters the driver seat.
+
+
+
+
+ Invoked when any player exits the driver seat.
+
+
+
+
+ Invoked when a locally controlled player enters the driver seat.
+
+
+
+
+ Invoked when a locally controlled player exits the driver seat.
+
+
+
+
+ Invoked when a locally controlled player enters the vehicle.
+
+
+
+
+ Invoked when a locally controlled player exits the vehicle.
+
+
+
+
+ Invoked when lock is engaged.
+
+
+
+
+ Invoked when lock is disengaged.
+
+
+
+
+ Invoked when horn is played.
+
+
+
+
+ Invoked after explosion plays.
+
+
+
+
+ Root transform.
+
+
+
+
+ Hit collider's transform. Can be null.
+
+
+
+
+ Tag display name without rich text formatting. To use, for example, in logging, sorting, or with rich color override.
+
+
+
+
+ If true, tag requests name to be displayed in UI with NameColor label color override.
+
+
+
+
+ Color to use in UI when displaying name.
+
+
+
+
+ If HasNameColor is enabled, this is PlainTextName wrapped with NameColor rich text color tags.
+ If unset, falls back to PlainTextName.
+
+ Nelson 2025-05-02: initially, we allowed enabling any rich text tags in names. But, considering that we
+ are also using PlainTextName for other color overrides (e.g. "bad" when missing), this will be disappointing
+ if tags are displayed inconsistently.
+
+
+
+
+ If true, icon should be tinted according to player's foreground color preference.
+
+
+
+
+ Wrap PlainTextName with color rich text tag.
+
+
+
+
+ Wrap PlainTextName with player's font color preference.
+
+
+
+
+ If HasNameColor, get RichTextName. Otherwise, get PlainTextNameWithPreferredFontColor.
+
+
+
+
+ Get sleek color for UI. If HasNameColor, get NameColor. Otherwise, preferred font color.
+
+
+
+
+ Allows Unity events to modify which crafting tags are provided by owning object.
+ Must be connected to a Crafting Tag Provider.
+
+
+
+
+ GUIDs of Unturned tag assets to modify.
+
+
+
+
+ Add listed tags to provided tags.
+
+
+
+
+ Remove listed tags from provided tags.
+
+
+
+
+ Apply only if this component is active and enabled.
+
+
+
+
+ Apply only if this component is inactive and/or disabled.
+
+
+
+
+ Always apply.
+
+
+
+
+ Get wrapper method rather than Awake because component might be inactive but should still apply modifiers.
+
+
+
+
+ Used for item placement in displays / holsters, and whether useable can be placed in primary/secondary slot.
+
+
+
+
+ Cannot be placed in primary nor secondary slots, but can be equipped from bag.
+
+
+
+
+ Can be placed in primary slot, but cannot be equipped in secondary or bag.
+
+
+
+
+ Can be placed in primary or secondary slot, but cannot be equipped from bag.
+
+
+
+
+ Only used by NPCs.
+
+
+
+
+ Can be placed in primary, secondary, or equipped while in bag.
+
+
+
+
+ Project current field of view onto screen compared to desired field of view.
+
+
+
+
+ Multiply sensitivity according to scope/optic zoom. For example an 8x zoom has 1/8th sensitivity.
+
+
+
+
+ Preserve how sensitivity felt prior to 3.22.8.0 update.
+
+
+
+
+ Do not adjust sensitivity while aiming.
+
+
+
+
+ When held the cursor is released.
+
+
+
+
+ If held while clicking a blueprint action in the item context menu, the crafting menu is bypassed.
+
+
+
+
+ Replace instances of with their bound key text.
+ Allows server effects to display plugin hotkeys.
+
+
+
+
+ Item 0 is "1" and item 9 is "0"
+
+
+
+
+ Multiplier for Input.GetAxis("mouse_x") and Input.GetAxis("mouse_y")
+
+
+
+
+ When held the cursor is released.
+
+
+
+
+ If held while clicking a blueprint action in the item context menu, the crafting menu is bypassed.
+
+
+
+
+ Broadcasts once all workshop assets are finished installing.
+
+
+
+
+ Called once the server is done registering items it wants to install.
+
+ True when running in offline-only mode.
+
+
+
+ Request for details about the pending items.
+
+
+
+
+ File IDs of all the items we have enqueued for query.
+
+
+
+
+ Built from user-specified workshop item IDs, and then expanded as the query results
+ arrive with details about any dependent or child items.
+
+
+
+
+ File IDs requested by the latest query submitted.
+
+
+
+
+ Number of times we've tried re-submitted failed queries.
+
+
+
+
+ Built as the valid list of items arrive.
+
+
+
+
+ ID of the latest item we requested for download so that we can test if the callback is for us.
+
+
+
+
+ Enqueue an item if we have not queried it yet. This guards against querying an item
+ that is in two separate collections leading to duplicates.
+
+
+
+ True if item was installed from cache.
+
+
+
+ Used in offline-only mode.
+
+
+
+
+ Prepare a query that will request metadata for all the workshop items we want to install.
+ This allows us to check if the items are allowed to be auto-downloaded to this server, and to
+ detect any child or dependent items.
+
+ Waits for onQueryCompleted.
+
+
+
+
+ Re-submit previous query after a query failure.
+
+
+
+
+ If level is using underground whitelist then conditionally clamp world-space position.
+
+
+
+
+ If level is using underground allowlist then conditionally clamp world-space position.
+
+
+
+
+ Used by animals and zombies to teleport to a spawnpoint if outside the map.
+
+
+
+
+ Used by housing validation to check item isn't placed underground.
+
+
+
+
+ Almost every menu has a container element for its contents which spans the entire screen. This element is then
+ animated into and out of view. In the IMGUI implementation this was fine because containers off-screen were not
+ processed, but with uGUI they were still considered active. To solve the uGUI performance overhead this class
+ was introduced to disable visibility after animating out of view.
+
+
+
+
+ Payload for the EffectManager.triggerEffect method.
+
+
+
+
+ Required effect to spawn.
+
+
+
+
+ World-space position to spawn at.
+
+
+
+
+ Local-space scale. Defaults to one.
+
+
+
+
+ If running as server should this effect be replicated to clients?
+ Defaults to true. Set to false for code that is called on client AND server.
+
+
+
+
+ Should the RPC be called in reliable mode? Unreliable effects might not be received.
+
+
+
+
+ Was a player directly responsible for triggering this effect?
+ For example grenade explosions are instigated by players, whereas zombie acid explosions are not.
+ Used to prevent mod damage on the effect prefab from hurting players on PvE servers.
+
+
+
+
+ Players within this radius will be sent the effect unless the effect overrides it.
+ Defaults to 128.
+
+
+
+
+ Get world-space rotation for the effect.
+
+
+
+
+ Set world-space rotation for the effect.
+
+
+
+
+ World-space rotation for the effect.
+
+
+
+
+ If true, rotation was specified by setter methods.
+ Required for backwards compatibility because `direction` field is public.
+
+
+
+
+ Only send the effect to the given player, if set.
+
+
+
+
+ Only send the effect to the given players, if set.
+ Otherwise relevantDistance is used.
+
+
+
+
+ Only send the effect to the given player, if set.
+
+
+
+
+ World-space direction to orient the Z axis along. Defaults to up.
+
+
+
+
+ Nelson 2025-04-08: newer code should probably use CachingAssetRef instead. (Or CachingLegacyAssetRef if legacy
+ ID support is necessary.)
+
+
+
+
+ Whether the asset has been assigned. Note that this doesn't mean an asset with exists.
+
+
+
+
+ Is this asset not assigned?
+
+
+
+
+ True if resolving this asset reference would get that asset.
+
+
+
+
+ Resolve reference with asset manager.
+
+
+
+
+ GUID of the asset this is referring to.
+
+
+
+
+ Each quality tier has different rarities.
+ Legendary: 5% Epic: 20% Rare: 75%
+
+
+
+
+ Each item has an equal chance regardless of quality.
+
+
+
+
+ Kept because lots of modders have been these scripts in Unity,
+ so removing legacy effect id would break their content.
+ Note: unsure about this one because it is private and not serialized.
+
+
+
+
+ Sorts higher rarity items into the front of the list.
+
+
+
+
+ Set handles pivot point according to selection transform.
+ Doesn't apply if handle is currently being dragged.
+
+
+
+
+ If Unturned is loading this asset bundle from a Steam workshop file but the file ID does not match then
+ loading will be canceled. Prevents the asset bundle from being easily copied/stolen.
+
+
+
+
+ Same as ownerWorkshopFileId for cases where the asset bundle is allowed in multiple uploads.
+
+ Uploading the same asset bundle multiple times is not ideal because the game doesn't handle
+ multiple of them with the same name well, and Unity logs an error if an asset bundle with the
+ same files is already loaded. That being said, the game doesn't handle dependencies between
+ workshop files well either (as of 2023-01-12), so this is perhaps the lesser of two evils.
+
+ My understanding is that some mod creators license their work to multiple servers that upload
+ the files and this property will make it easier so it doesn't need to be re-exported multiple times.
+
+
+
+
+ Helpers on the dedicated server to optimize client prefabs for server usage.
+
+
+
+
+ Optimize client prefab for server usage.
+
+
+
+
+ If true, object is within a culling volume.
+ Name is old and not very specific, but not changing because it's public.
+
+
+
+
+ Transform created to preserve objects whose assets failed to load.
+ Separate from default transform to avoid messing with old behavior when transform is null.
+
+
+
+
+ If true, can be instantiated. Defaults to true.
+ Enables mappers to remove culling volumes embedded in objects if they're causing issues.
+
+
+
+
+ Can this object's rubble be damaged?
+ Allows holiday restrictions to be taken into account. (Otherwise holiday presents could be destroyed out of season.)
+
+
+
+
+ Object activation is time-sliced, so this does not necessarily match whether the region is active.
+
+
+
+
+ Defaults to true because most objects are not inside a culling volume.
+
+
+
+
+ Used by InteractableObjectBinaryState to indicate whether it wants navGameObject to be active. It's only
+ active if both IOBS and Rubble want it active.
+
+
+
+
+ Used by InteractableObjectRubble to indicate whether it wants navGameObject to be active. It's only
+ active if both IOBS and Rubble want it active.
+
+
+
+
+ Used if the object asset has weather blend alpha conditions.
+
+
+
+
+ Used if the object asset has weather status conditions.
+
+
+
+
+ Callback when an individual quest flag changes for the local player.
+ Refreshes visibility conditions if the flag was relevant to this object.
+
+
+
+
+ Separate from UpdateActiveAndRenderersEnabled so graphics settings can call it.
+
+
+
+
+ Assume renderers default to enabled.
+
+
+
+
+ Combine two existing 20-byte hashes.
+
+
+
+
+ Utility to hash a stream of bytes over several frames.
+
+
+
+
+ [0, 1] percentage progress through the stream.
+
+
+
+
+ Advance 1MB further into the stream.
+
+ True if there is more data, false if complete.
+
+
+
+ Get the computed hash after processing stream.
+
+
+
+
+ If true, visible in chart and satellite UIs.
+
+
+
+
+ Multiplier for explosive projectile damage.
+
+
+
+
+ Multiplier for explosive projectile's blast radius.
+
+
+
+
+ Multiplier for explosive projectile's initial force.
+
+
+
+
+ Should amount be filled to capacity when detached?
+
+
+
+
+ Nelson 2024-10-18: Moved to a constant because clients need this value for footsteps and they don't have the
+ character controller component.
+
+
+
+
+ Jump speed = sqrt(2 * jump height * gravity)
+ Jump height = (jump speed ^ 2) / (2 * gravity)
+ With 7 speed and 9.81 * 3 gravity = apex height of 1.66496772
+
+
+
+
+ Note: Only UpdateCharacterControllerEnabled should modify whether controller is enabled.
+ (turning off and back on is fine though)
+
+
+
+
+ Valid while isRadiated.
+
+
+
+
+ Set according to volume or level global asset fallback.
+
+
+
+
+ Was set to true during teleport, and restored to false during the next movement tick.
+
+ Server pauses movement when this is set until next client update that matches,
+ in order to prevent rubberbanding following a teleport.
+
+
+
+
+ Used instead of actual position to avoid revealing admins in "vanish" mode.
+
+
+
+
+ Flag for plugins to allow maintenance access underneath the map.
+
+
+
+
+ Get seat (if any), otherwise null.
+
+
+
+
+ Serverside force player to exit vehicle regardless of safe exit points.
+
+ True if player was seated in vehicle.
+
+
+
+ Dedicated server simulate while input queue is empty.
+
+
+
+
+ Dedicated server simulate driving input.
+
+
+
+
+ Client and dedicated server simulate walking input.
+
+
+
+
+ In the future this can probably replace checkGround for locally simulated character?
+ (Unturned only started using OnControllerColliderHit on 2023-01-31)
+
+ 2023-02-28: be careful with .gameObject property because it returns .collider.gameObject
+ which can cause a null reference exception. (public issue #3726)
+
+
+
+
+ Examine a store listing with description text.
+
+
+
+
+ Only visible when cart is not empty.
+
+
+
+
+ Convert 32-bit version into 8-char string.
+ String is advertised on server list for clients to filter their local map version.
+
+
+
+
+ Parse 32-bit version from 8-char string.
+ String is advertised on server list for clients to filter their local map version.
+
+
+
+
+ These server relay variables redirect the client to another server when the menu opens
+ similar to how Steam sets the +connect string on game startup. Allows plugin to redirect
+ player to another server on the same network.
+
+
+
+ If true the server is immediately joined, otherwise show server details beforehand.
+
+
+
+ If player gets too far away from this storage while using it, should we close out?
+ False by default for trunk storage because player is inside vehicle.
+ Plugins needed to be able to set this to false for "virtual storage" plugins,
+ so we default to false and set to true if asset enables it.
+
+
+
+
+ Keep all the uGUI Canvas sort orders in the same place.
+
+
+
+
+ Manually created canvas in the Menu scene.
+
+
+
+
+ Devkit canvas in the Setup scene.
+
+
+
+
+ Dropdowns, drag-drop content, tab destinations, etc.
+
+
+
+
+ Devkit tooltips should be visible over all other devkit content.
+
+
+
+
+ uGUI glazier contains tooltips and cursor regardless of mode (e.g. devkit), so takes absolute priority.
+
+
+
+
+ Plugins were spawning canvases with high sort orders that showed over the loading screen, so as a hacky
+ workaround we put the uGUI loading screen on a higher sort order than normal glazier.
+
+
+
+
+ uGUI cursor needs to show above plugin canvas.
+ Unity exposes sort order as an int32, but it is actually an int16, so this value is slightly below the 32767 max.
+
+
+
+
+ Worst case scenario, maybe shotgun hit or fast spray SMG.
+
+
+
+
+ Tags how client expects server to use a raycast input.
+ For example, client may think they fired a gun while server thinks they dequipped the gun,
+ so tagging the input prevents the server from handling it as a punch instead.
+
+
+
+
+ Resulting transform.position immediately after movement.simulate was called.
+
+
+
+
+ Calls to UseableGun.tock per second.
+
+
+
+
+ Called for every input packet received allowing plugins to listen for a few special
+ keys they can display in chat/effect UIs.
+
+
+
+
+ Whether client is currently penalized for potentially using a lag switch. False positives are relatively
+ likely when client framerate hitches (e.g. loading dense region), so we only modify their stats (e.g. reduce
+ player damage) for a corresponding duration.
+
+
+
+
+ Server tracks history of this player's bounding box to assist with validating hits.
+ Some padding is added to reduce false positives sliding against walls (substep) and
+ player movement inside vehicles.
+
+
+
+
+ Get the hit result of a raycast on the server. Until a generic way to address net objects is implemented
+ this is how legacy features specify which player/animal/zombie/vehicle/etc they want to interact with.
+
+
+
+
+ Ideally simulation frame number would be signed, but there is a lot of code expecting unsigned.
+
+
+
+
+ Can be enabled in the unity inspector to test that discarding inputs recovers properly.
+
+
+
+
+ askInput is always called the same number of times per second because it's run from FixedUpdate,
+ but the spacing between calls can vary depending on network and whether client FPS is low.
+
+
+
+
+ If average askInput calls per second exceeds this, we either ignore their request or flat-out kick them.
+
+
+
+
+ If average askInput calls per second exceeds this we silently kick them.
+
+
+
+
+ Number of times askInput has been called by client.
+ Even with huge packet loss, we know that
+
+
+
+
+ Realtime that the first call to askInput was made by the client.
+
+
+
+
+ Realtime that the previous askInput kick test was performed.
+
+
+
+
+ Set rollingWindowIndex to newIndex, zeroing all input counts along the way.
+ Important to zero the intermediary indexes in-case server stalled for more than one second.
+
+
+
+
+ Notify client there has been a prediction error, so movement needs to be re-simulated.
+
+
+
+
+ Notify client old inputs can be discarded because they were predicted correctly.
+
+
+
+
+ Not using rate limit attribute because it internally keeps a rolling window limit.
+
+
+
+
+ Only bound on dedicated server.
+ When dieing in a vehicle this prevents delay handling packets.
+
+
+
+
+ Counter of simulation frames before fake lag penalty is disabled.
+
+
+
+
+ Player damage multiplier while under penalty for fake lag. (10%)
+
+
+
+
+ If set, this item is prioritized over equipped cosmetics. Used by item inspect menu.
+ Admittedly, this is very hacked-together. Hopefully rewriting this file someday?
+
+
+
+
+ Is cosmetic or skin equipped?
+
+
+
+
+ Merging the devkit, legacy, and housing transform handles into one place.
+
+
+
+
+ Position and plane handles for each axis.
+
+
+
+
+ Disc handles for each axis.
+
+
+
+
+ Scale handles for each axis.
+
+
+
+
+ Position handles on each side of box.
+
+
+
+
+ Scale handles on each side of box which both move and resize the box.
+
+
+
+
+ Invoked when handle is clicked so that tool can save selection transform relative to pivot.
+ This avoids floating point precision loss of applying delta for each Transformed event.
+
+
+
+
+ Invoked when handle is dragged and value actually changes.
+
+
+
+
+ Invoked when handle is dragged and value actually changes.
+
+
+
+
+ Preferred mode only takes effect while not dragging.
+ Bounds modes fall back to non-bounds modes if bounds are not set.
+
+
+
+
+ Pivot only takes effect while not dragging. This is to help ensure
+ the caller does not depend on the internal pivot values.
+
+
+
+
+ Somewhat hacky, useful to make the "copy-paste transform" feature easier to implement.
+ Invoke tranformed callback as if pivot were manually dragged to the new position and rotation.
+
+
+
+
+ Called before raycasting into the regular physics scene to give transform tool priority.
+
+
+
+
+ Update properties that depend on the transform of the camera relative to our handles.
+
+
+
+
+ Center of handle.
+
+
+
+
+ Rotation of handle.
+
+
+
+
+ True if pivotBounds is non-zero.
+
+
+
+
+ Mouse currently over this handle.
+
+
+
+
+ Mouse currently dragging this handle.
+
+
+
+
+ Direction from camera toward pivot.
+
+
+
+
+ Multiplier according to distance between camera and pivot to keep handles a constant on-screen size.
+
+
+
+
+ Multiplier to flip axis handles according to which side the camera is on.
+
+
+
+
+ Pivot rotation when rotation drag started.
+
+
+
+
+ Rotating around this axis.
+
+
+
+
+ Direction from circle center to edge point.
+
+
+
+
+ Point on the edge of the circle.
+
+
+
+
+ Drag along this tangent to the circle.
+
+
+
+
+ Does having this item show the compass?
+
+
+
+
+ Does having this item show the chart?
+
+
+
+
+ Does having this item show the satellite?
+
+
+
+
+ Ideally component Awake/Start order should not matter, but Unturned's menu is a mess.
+ For most players the default order was fine, but it seems it was not deterministic so it would break for some players.
+
+
+
+
+ Index into per-connection rate limiting array.
+
+
+
+
+ Number of server methods with rate limits.
+
+
+
+
+ Log all known net methods.
+
+
+
+
+ Useful debug check to ensure every built-in handle is claimed exactly once.
+
+
+
+
+ This class gets used from type initializers, so Unity's built-in log is not an option unfortunately.
+
+
+
+
+ Not *really* supported but *might* probably work. Adding for public discussion #4176.
+
+
+
+
+ Kept for backwards compatibility with plugins.
+
+
+
+
+ Can be added to EquipablePrefab item GameObject to receive events.
+
+
+
+
+ Invoked when gun is fired.
+
+
+
+
+ Invoked when gun begins reload sequence.
+
+
+
+
+ Invoked when gun begins hammer sequence.
+
+
+
+
+ Invoked when gun begins aiming.
+
+
+
+
+ Invoked when gun ends aiming.
+
+
+
+
+ Invoked when Magazine game object is activated.
+
+
+
+
+ Invoked when Magazine game object is activated.
+
+
+
+
+ TextMesh Pro uGUI text components.
+
+
+
+
+ TextMesh Pro uGUI input field components.
+
+
+
+
+ Exposed for Rocket transition to modules backwards compatibility.
+
+
+
+
+ This effect makes a nice clicky sound and lots of older code used it,
+ so I moved it into a little helper method here.
+
+
+
+ If true, client will download the image once and re-use it for subsequent calls.
+ If true, client will destroy any cached copy of the image and re-acquire it.
+
+
+
+ Notify server that a button was clicked in a clientside effect.
+
+
+
+
+ Notify server that an input field text was committed.
+
+
+
+
+ If an effect with a given key exists, destroy it.
+
+
+
+
+ parent should only be set if that system also calls ClearAttachments, otherwise attachedEffects will leak memory.
+
+
+
+
+ Helper for sending and spawning effects.
+ Newer and refactored code should use this method.
+
+
+
+
+ Objects registered so that they can be destroyed all at once if needed.
+ May be null if they were destroyed with a timer.
+
+
+
+
+ Plugin UIs spawned by the server.
+
+
+
+
+ Called prior to destroying effect (if attached) to free up attachments list.
+
+
+
+
+ Called after attaching effect so that it can be returned to pool when/if parent is destroyed.
+
+
+
+
+ Maps root transform to any attached effects.
+ This allows us to detach effects when returning a barricade/structure to their pool.
+
+
+
+
+ Recycled lists for attachedEffects dictionary.
+
+
+
+
+ Find materials in finished ragdoll and replace them with the appropriate effect.
+
+
+
+
+ Context for the Assets.ReportError methods.
+ Nelson 2024-11-20: Converted from directly using asset to this interface so that asset-related features can
+ more easily log warnings to the in-game menu.
+
+
+
+
+ Format text to prefix any errors reported in this context. (e.g., this asset's name and ID)
+
+
+
+
+ Alerts any agents in the area to the player if needed.
+
+ The player causing this alert.
+ The position of the alert.
+ The detection radius.
+ Whether or not to hide.
+
+
+
+ Alerts any agents in the area.
+
+ The position of the alert.
+ The detection radius.
+
+
+
+ Report success or failure from game systems, conditionally compiled into the Windows 64-bit build.
+
+
+
+
+ Call when the server is done all loading without running into errors.
+ Ignored if not running in CI mode, otherwise exits the server successfully with error code 0.
+
+
+
+
+ Call when the server encounters any error.
+ Ignored if not running in CI mode, otherwise exits the server with error code 1.
+
+
+
+
+ Entry in the MenuPlayServerCurationRulesUI list.
+
+
+
+
+ Seconds to wait between burning one unit of fuel.
+
+
+
+
+ Number of seconds to finish growing.
+
+
+
+
+ Item legacy ID to grant the player.
+
+
+
+
+ Uses unscaled time (realtime) because "planted" time is a timestamp.
+
+
+
+
+ Created when a chat entry is received from the server for display in the UI.
+
+
+
+
+ Player who sent the message, or null if it was a plugin broadcast.
+ Used to retrieve player avatar.
+
+
+
+
+ Web address of a 32x32 .png to use rather than a platform avatar.
+ Only used if not null/empty.
+
+
+
+
+ How the message was sent through global, local or group.
+ Mostly deprecated because that status isn't formatted into texts anymore.
+
+
+
+
+ Default font color to use unless overridden by rich text formatting.
+
+
+
+
+ Whether this entry should enable rich text formatting.
+ False by default because players abuse font size and ugly colors.
+
+
+
+
+ Text to display for this message.
+
+
+
+
+ When the entry was locally received from the server.
+
+
+
+
+ How many seconds ago this message was locally received from the server.
+
+
+
+
+ Event for plugins to be notified when a server update is detected.
+
+ Pandahut requested this because they run the game as a Windows service and need to shutdown
+ through their central management system rather than per-process.
+
+
+
+
+ Manages scheduled restart for dedicated server.
+
+
+
+
+ Sorted from low to high.
+
+
+
+
+ Sorted from low to high.
+
+
+
+
+ Non-NPC object the player can talk with.
+
+
+
+
+ Broadcasts for plugins before applying consumeable stats to another player.
+
+
+
+
+ Broadcasts for plugins after applying consumeable stats to another player.
+
+
+
+
+ Broadcasts for plugins before applying consumeable stats to self.
+
+
+
+
+ Broadcasts for plugins after applying consumeable stats to self.
+
+
+
+
+ Called serverside when using consumeable on another player.
+
+
+
+
+ Called by owner and server when using consumeable on self.
+
+
+
+
+ If false, a deny rule matched the input.
+
+
+
+
+ If true, at least one rule matched the input.
+
+
+
+
+ If set, this was the final match.
+
+
+
+
+ Optional. If set, filled with any rules that matched.
+
+
+
+
+ If >0, this link was added by live config.
+
+
+
+
+ Determines how a server that doesn't match any rules is handled.
+
+
+
+
+ Include in the list. Default.
+
+
+
+
+ Exclude from list. (same as EServerListCurationDenyMode.Hide)
+
+
+
+
+ Move to the bottom of the list. Similar to EServerListCurationDenyMode.MoveToBottom, but the server is
+ still clickable. I.e., low priority.
+
+
+
+
+ Called earlier during startup to try and have web lists ready by the time server browser is opened.
+
+
+
+
+ Used to detect asset refresh.
+
+
+
+
+ If true, list needs to be sorted.
+
+
+
+
+ If true, MergeRules should be called before doing any filtering.
+
+
+
+
+ If false, LoadWebUrls still needs to be called.
+
+
+
+
+ For non-repeat weapons the "Use" audio clip is played once time reaches this point.
+
+
+
+
+ Catch exceptions to prevent a broken powerable from breaking all the other powerable items in the area.
+
+
+
+
+ Unsorted list of world space generators turned-on and fueled.
+
+
+
+
+ Allows Unity events to broadcast text chat messages from the server.
+
+
+
+
+ Text to use when SendDefaultTextChatMessage is invoked.
+
+
+
+
+ URL of a png or jpg image file to show next to the message.
+
+
+
+
+ Text color when rich text does not override with color tags.
+
+
+
+
+ Should rich text tags be parsed?
+ e.g. bold, italic, color
+
+
+
+
+ Allows Unity events to spawn vehicles.
+
+
+
+
+ Recoil magnitude multiplier while the gun is aiming down sights.
+
+
+
+
+ Multiplier for gun's Aim_In_Duration.
+
+
+
+
+ For backwards compatibility this is *subtracted* from the gun's firerate, so a positive number decreases
+ the time between shots and a negative number increases the time between shots.
+
+
+
+
+ Multiplier for normal bullet damage.
+
+
+
+
+ Multiplier for bullet acceleration due to gravity.
+
+
+
+
+ Movement speed multiplier while the gun is aiming down sights.
+
+
+
+
+ If true, gun can damage entities with Invulnerable tag. Defaults to false.
+
+
+
+
+ Name to use when instantiating attachment prefab.
+ By default the asset guid is used, but it can be overridden because some
+ modders rely on the name for Unity's legacy animation component. For example
+ in Toothy Deerryte's case there were a lot of duplicate animations to work
+ around the guid naming, simplified by overriding name.
+
+
+
+
+ Returns true if calibers list contains provided caliber ID.
+
+
+
+
+ Returns true if calibers list contains any of the provided caliber IDs.
+
+
+
+
+ Note: If barricade is attached to a vehicle this is the local rotation.
+
+
+
+
+ Extensions to the built-in Physics class.
+
+ Shares similar functionality to the SDG.Framework.Utilities.PhysicsUtility class, but that should be moved here
+ because the "framework" is unused and and the long name is annoying.
+
+
+
+
+ Wrapper that respects landscape hole volumes.
+
+
+
+
+ Wrapper that respects landscape hole volumes.
+
+
+
+
+ Wrapper that respects landscape hole volumes.
+
+
+
+
+ Wrapper that respects landscape hole volumes.
+
+
+
+
+ Button in a list of levels.
+
+
+
+
+ Button in the list of levels for server browser filters.
+
+
+
+
+ Button in the list of levels for the map editor.
+
+
+
+
+ Base class for IMGUI implementations of primitive building block widgets.
+
+
+
+
+ Position passed into the GUI draw methods.
+
+
+
+
+ Hashes for Windows, Linux, and Mac asset bundles.
+ Only loaded on the dedicated server. Null otherwise.
+
+
+
+
+ Does given hash match any of the platform hashes?
+
+
+
+
+ Compares client asset bundle hash with server known hashes.
+
+
+
+
+ Called by asset startup to cache which bundles are eligible for hashing.
+
+
+
+
+ Used in a test scene to quickly test all Glazier features.
+
+
+
+
+ Reference type for testing SleekList.
+
+
+
+
+ Uses the Win32 API to force a console to be created and destroyed.
+
+
+
+
+ Should we manually create and destroy a Win32 console?
+ Useful for IO on Windows desktop, but not as much for dedicated machines.
+
+
+
+
+ Allocate Windows console if enabled.
+
+
+
+
+ Free Windows console if enabled.
+
+
+
+
+ A CTRL+C signal was received, either from keyboard input or from a signal generated by the GenerateConsoleCtrlEvent function.
+
+
+
+
+ A CTRL+BREAK signal was received, either from keyboard input or from a signal generated by GenerateConsoleCtrlEvent.
+
+
+
+
+ A signal that the system sends to all processes attached to a console when the user closes the console
+ (either by clicking Close on the console window's window menu, or by clicking the End Task button command from Task Manager).
+
+
+
+
+ Tracks whether we should show the "NEW" label on listings and item store button.
+
+
+
+
+ Track that player has seen the new crafting blueprints.
+
+
+
+
+ Track that player has seen the page with all new listings.
+
+
+
+
+ Has player seen the given listing?
+
+
+
+
+ Track that the player has seen the given listing.
+
+
+
+
+ Absolute path to directory containing bundle and .dat file.
+
+
+
+
+ Name of the actual asset bundle file, e.g. Hawaii.unity3d
+ Asset bundle should be next to this config file.
+
+
+
+
+ assetBundleName without final .* extension.
+
+
+
+
+ Prefixed to all asset paths loaded from asset bundle.
+ Final path is built from assetPrefix + pathRelativeToBundlesFolder + assetName,
+ e.g. Assets/Hawaii/Bundles + /Objects/Large/House/ + Object.prefab
+
+
+
+
+ Custom asset bundle version used by Unturned to detect whether imports need
+ fixing up because they were exported from an older version of Unity.
+
+
+
+
+ Get absolute path to asset bundle file.
+
+
+
+
+ Get absolute path to file with per-platform hashes.
+
+
+
+
+ Insert path prefix if set.
+
+
+
+
+ When to use this instead of formatAssetPath? MasterBundleReference and AudioReference repeatedly invoke
+ this string formatting (e.g., footstep sounds) and benefit from not generating that garbage.
+
+
+
+
+ Loaded asset bundle.
+
+
+
+
+ Hash of loaded asset bundle file.
+ This is per-platform, so the server loads a hash file with all platform hashes.
+
+
+
+
+ True if the server .hash file exists.
+ Hash file is not used by client, but client uses whether it exists to decide whether to include asset bundle hash in asset hash.
+
+
+
+
+ Hashes for Windows, Linux, and Mac asset bundles.
+ Only loaded on the dedicated server. Null otherwise.
+
+
+
+
+ On the surface level this is rather silly.
+ The primary reason for it is reducing garbage created by repeated calls to formatAssetPath.
+ Theoretically we could use this for caching redirected paths if/when that feature is added.
+
+
+
+
+ Load the underlying asset bundle.
+
+
+
+
+ If true, the associated asset bundle couldn't be loaded and was instead copied from another config.
+
+
+
+
+ If the type name has been redirected this method will be called recursively until the most recent name is found and returned.
+
+
+
+
+ After the key "limit" is loaded we stop reading.
+
+
+
+
+ Path to the folder which contains the Unity player executable.
+
+
+
+
+ Called by loading after landscapes (and legacy conversion) have been loaded.
+
+
+
+
+ True is solid and false is empty.
+
+
+
+
+ Marked true when level editor or legacy hole volumes modify hole data.
+ Defaults to false in which case holes do not need to be saved.
+
+ Initially this was not going to be marked by hole volumes because they can re-generate the holes, but saving
+ hole volume cuts is helpful when upgrading to remove hole volumes from a map.
+
+
+
+
+ If true, SetHeightsDelayLOD was called without calling SyncHeightmap yet.
+
+
+
+
+ If true, SetHolesDelayLOD was called without calling SyncTexture yet.
+
+
+
+
+ Heightmap-only data used in level editor. Refer to Landscape.DisableHoleColliders for explanation.
+
+
+
+
+ Call this when done changing material references to grab their textures and pass them to the terrain renderer.
+
+
+
+
+ If a heightmap coordinate is out of bounds the tile/heightamp coordinate will be adjusted so that it is in bounds again.
+
+
+
+
+ If a splatmap coordinate is out of bounds the tile/splatmap coordinate will be adjusted so that it is in bounds again.
+
+
+
+
+ Hacky workaround for height and material brushes in editor. As far as I can tell in Unity 2019 LTS there is no method to ignore
+ holes when raycasting against terrain (e.g. when painting holes), so we use a duplicate TerrainData without holes in the editor.
+
+
+
+
+ Is point (on XZ plane) inside a masked-out pixel?
+
+
+
+ If the highest weight layer is ignoreLayer then the next highest will be returned.
+
+
+ If the highest weight layer is ignoreLayer then the next highest will be returned.
+
+
+
+ Appends heightmap vertices to points list.
+
+
+
+
+ Appends heightmap vertices to points list.
+
+
+
+
+ Call this after you're done adding new tiles.
+
+
+
+
+ Call this to sync a new tile up with nearby tiles.
+
+
+
+
+ Capturing ortho view of map, so we raise the terrain to max quality.
+
+
+
+
+ Finished capturing ortho view of map, so we restore the terrain to preferred quality.
+
+
+
+
+ Nelson 2025-03-10: I want to experiment whether this fixes a strange terrain hole painting bug (public issue
+ #4851) without potentially introducing crashes for other players. (Per an earlier, undated comment we'd
+ run into a SetHolesDelayLOD-related crash in 2019 LTS.)
+
+
+
+
+ Directly blend current value toward target value.
+
+
+
+
+ Only blend current value toward target value if current is greater than target.
+
+
+
+
+ Only blend current value toward target value if current is less than target.
+
+
+
+
+ If true, write to LevelHierarchy file.
+ False for externally managed objects like legacy lighting WaterVolume.
+
+
+
+
+ If true, editor tools can select and transform.
+ False for items like the object-owned culling volumes.
+
+
+
+
+ Hold onto collider and gameobject separately because collider isn't necessarily attached to gameobject.
+
+
+
+
+ Kept because lots of modders have been using this script in Unity,
+ so removing legacy effect id would break their content.
+
+
+
+
+ If per-weather mask AND is non zero the weather will blend in.
+
+
+
+
+ Distinguishes from zero falloff which may be useful deep in a cave.
+
+
+
+
+ Higher priority volumes override lower priority volumes.
+
+
+
+
+ When falloff is OFF, how long to fade in audio by time.
+
+
+
+
+ When falloff is OFF, how long to fade out audio by time.
+
+
+
+
+ When falloff is OFF, how long to fade in audio by time.
+
+
+
+
+ When falloff is OFF, how long to fade out audio by time.
+
+
+
+
+ When falloff is OFF, how long to fade in lighting by time.
+
+
+
+
+ When falloff is OFF, how long to fade out lighting by time.
+
+
+
+
+ Used by lighting to get the currently active effect.
+
+
+
+
+ Open a new transaction group which stores multiple undo/redoable actions, for example this would be called before moving an object.
+
+
+
+
+ Close the pending transaction and finalize any change checks.
+
+
+
+
+ Clear the undo/redo queues.
+
+
+
+
+ If false this transaction is ignored. If there were no changes at all in the group it's discarded.
+
+
+
+
+ Called when history buffer is too long so this transaction is discarded.
+
+
+
+
+ Save the state of all the fields and properties on this object to the current transaction group so that they can be checked for changes once the transaction has ended.
+
+
+
+
+ Kept because lots of modders have been using this script in Unity,
+ so removing legacy effect id would break their content.
+
+
+
+
+ Called when we position, rotate or scale this transform.
+
+
+
+ Identical to this object.
+
+
+
+ Devkit objects are now converted to regular objects and excluded from the file when re-saving.
+
+
+
+
+ Hacked to check horizontal distance.
+
+
+
+
+ Nelson 2024-06-10: Changed this from guid to string because Unity serialization doesn't support guids
+ and neither does the inspector. (e.g., couldn't duplicate reward volume without re-assigning guid)
+
+
+
+
+ If true, vehicles overlapping volume will check conditions and (if met) grant rewards to passengers.
+
+
+
+
+ ModuleHook looks for module entry/exit points, then calls when enabled and when disabled.
+
+
+
+
+ Register components of this module.
+
+
+
+
+ Cleanup after this module.
+
+
+
+
+ Holds module configuration.
+
+
+
+
+ Whether to load assemblies.
+
+
+
+
+ Directory containing Module file, set when loading.
+
+
+
+
+ Path to the Module file, set when loading.
+
+
+
+
+ Used for module dependencies.
+
+
+
+
+ Nicely formatted version, converted into .
+
+
+
+
+ Used for module dependencies.
+
+
+
+
+ Modules that must be loaded before this module.
+
+
+
+
+ Relative file paths of .dlls to load.
+
+
+
+
+ Wraps module assembly and handles initialization.
+
+
+
+
+ True when config is enabled and dependencies are enabled.
+
+
+
+
+ Metadata.
+
+
+
+
+ Assembly files loaded.
+
+
+
+
+ Types in the assemblies of this module. Refer to this for types rather than the assemblies to avoid exception and garbage.
+
+
+
+
+ How far along the initialization to shutdown lifecycle this module is.
+
+
+
+
+ Runs before everything else to find and load modules.
+
+
+
+
+ Temporarily contains Unturned's code untils it's moved into modules.
+
+
+
+
+ Temporarily contains types.
+
+
+
+
+ Should module assemblies be loaded?
+
+
+
+
+ Called once after all startup enabled modules are loaded. Not called when modules are initialized due to enabling/disabling.
+
+
+
+
+ Called once after all modules are shutdown. Not called when modules are shutdown due to enabling/disabling.
+
+
+
+
+ Find modules containing an assembly with the Both_Required role.
+
+ Modules to append to.
+
+
+
+ Find module using dependency name.
+
+
+
+
+
+ These are *.dll files discovered in the modules folder.
+
+
+
+
+ Should missing DLLs be logged?
+ Opt-in because RocketMod has its own handler.
+
+
+
+
+ Should vanilla search for *.dll files?
+ Can be turned off in case it conflicts with third-party search mechanism.
+
+
+
+
+ If set, search for .dll and .module files in this directory instead of in Unturned/Modules.
+
+
+
+
+ Event for plugin frameworks (e.g., Rocket) to override AssemblyResolve handling.
+
+
+
+
+ Depending on the platform, assemblies are found in different directories.
+
+ Root folder for modules.
+
+
+
+ Search Modules directory for .dll files and save their AssemblyName to discoveredNameToPath.
+
+
+
+
+ Search Modules directory for .module files and load them.
+
+
+
+
+ Orders configs by dependency and removes those that are missing files.
+
+
+
+
+ Sorts modules by dependencies.
+
+
+
+
+ Nicely formatted version, converted into .
+
+
+
+
+ Used for module dependencies.
+
+
+
+
+ Requested by Trojaner. LoadFile locks the file while in use which prevents OpenMod from updating itself.
+
+
+
+
+ Equivalent to MonoBehaviour.Update
+
+
+
+
+ Equivalent to MonoBehaviour.FixedUpdate
+
+
+
+
+ Useful when caller is not a MonoBehaviour, or coroutine should not be owned by a component which might get
+ deactivated. For example attached effects destroy timer should happen regardless of parent deactivation.
+
+
+
+
+ Stop a coroutine started by InvokeAfterDelay.
+
+
+
+
+ For use with PoolablePool when no special construction is required.
+
+
+
+
+ Called when this instance is getting claimed.
+
+
+
+
+ Called when this instance is returned to the pool.
+
+
+
+
+ Number of items in underlying queue.
+
+
+
+
+ Pool of objects that implement the IPoolable interface.
+
+ Useful for types that do not need special construction,
+ and want notification when claimed and released.
+
+
+
+
+ Not necessarily cheap to calculate - probably best to cache.
+
+
+
+
+ Internal cubic meter volume.
+
+
+
+
+ Surface square meters area.
+
+
+
+
+ Nelson 2024-11-11: Collider may have been destroyed by an unexpected mod script configuration (or perhaps
+ simply missing in the first place). Should fix/prevent public issue #4749.
+
+
+
+
+ Replacement foliage storage with all tiles in a single file.
+
+ In the level editor all tiles are loaded into memory, whereas during gameplay the relevant tiles
+ are loaded as-needed by a worker thread.
+
+
+
+
+ Entry point for worker thread loop.
+
+
+
+
+ Order is important because TileBecameRelevant is called from the closest tile outward.
+
+
+
+
+ Offsets into blob for per-tile data.
+
+
+
+
+ Tiles save an index into this list rather than guid.
+
+
+
+
+ Offset from header data.
+
+
+
+
+ Data-only FoliageInstanceList shared between threads.
+
+
+
+
+ Data-only FoliageTile shared between threads.
+
+
+
+
+ Ready to be released to the worker thread during the next lock.
+
+
+
+
+ Mutex lock. Only used in the main thread Update loop and worker thread loop.
+
+
+
+
+ SHARED BY BOTH THREADS!
+ Coordinates requested by main thread for worker thread to read.
+ This is a list because while main thread is busy the worker thread can continue reading.
+
+
+
+
+ SHARED BY BOTH THREADS!
+ Tiles read by worker thread ready to be copied into actual foliage tiles on main thread.
+
+
+
+
+ SHARED BY BOTH THREADS!
+ Main thread has finished using this tile data and it can be released back to the pool on the worker thread.
+ This is a list because main thread could have populated multiple foliage tiles while the worker thread was busy reading.
+
+
+
+
+ Lifecycle:
+ 1. Worker thread claims or allocates data.
+ 2. Worker thread passes data to main thread.
+ 3. Main thread copies data over to actual foliage tile.
+ 4. Main thread passes data back to worker thread.
+ 5. Worker thread releases data back to pool.
+
+
+
+
+ Does this tile contain any placed foliage?
+
+
+
+
+ If true, mesh is not loaded when clutter is turned off in graphics menu.
+ Defaults to false.
+
+
+
+
+ Foliage to use during the Christmas event instead.
+
+
+
+
+ Foliage to use during the Halloween event instead.
+
+
+
+
+ Get asset ref to replace this one for holiday, invalid to disable, or null if it should not be redirected.
+
+
+
+
+ Responsible for reading and writing persistent foliage data.
+
+
+
+
+ Called after creating instance for level, prior to any loading.
+ Not called when creating the auto-upgrade instance for editorSaveAllTiles.
+
+
+
+
+ Called prior to destroying instance.
+
+
+
+
+ Called when tile wants to be drawn.
+
+
+
+
+ Called when tile no longer wants to be drawn.
+
+
+
+
+ Called during Unity's Update loop.
+
+
+
+
+ Load known tiles during level load.
+
+
+
+
+ Save tiles during level save.
+
+
+
+ Should angle limits and subtractive volumes be respected? Disabled when manually placing individually.
+ If true, trees do a sphere overlap to prevent placement inside objects.
+
+
+
+ Pick a point inside the bounds to test for foliage placement. The base implementation is completely random, but a blue noise implementation could be very nice.
+
+
+
+
+ Legacy implementation of foliage storage, with one file per tile.
+
+
+
+ True if other IFoliageSurface methods can be called.
+
+
+
+ Settings configured when starting the bake.
+
+
+
+
+ Implementation of tile data storage.
+
+
+
+
+ Nelson 2025-04-22: instanced foliage rendering is a decent chunk of CPU time. In retrospect this seems like
+ an obvious optimization: Graphics.DrawMeshInstanced accepts up to 1023 instances per call. Each tile
+ groups instances in lists of up to 1023, but often isn't that high. Now, we collect instances until we
+ hit the 1023 limit. This is particularly useful for sparse variants like colored flowers.
+ With a consistent camera transform ("/copycameratransform") on an upcoming map remaster I went from between
+ 0.72-0.8 ms on my PC to 0.55-0.6 ms!
+
+
+
+
+ 2022-04-26: drawTiles previously looped over a square [-N, +N] from the upper-left to the bottom-right,
+ and each tile checked radial distance. We can improve over this by pre-computing the radial offsets and
+ starting from the center to improve responsiveness. N is [1, 5]
+
+
+
+
+ Must be within [0, MAX_MATRICES_PER_BATCH] range.
+
+
+
+ Version number associated with this particular system instance.
+
+
+
+
+ Automatically placing foliage onto tiles in editor.
+
+
+
+
+ 2022-04-26: this used to be environment layer, but "scope focus foliage" can draw outside that render distance
+ so we now use the sky layer which is visible up to the far clip plane.
+
+
+
+
+ Whether add can be called from the inspector.
+
+
+
+
+ Whether remove can be called from the inspector.
+
+
+
+
+ Called when the inspector adds an element.
+
+
+
+
+ Called when the inspector removes an element.
+
+
+
+
+ Called when the inspector sets an element to a different value.
+
+
+
+
+ Whether add can be called from the inspector.
+
+
+
+
+ Whether remove can be called from the inspector.
+
+
+
+
+ All water tiles and the planar reflection component reference this material.
+
+
+
+
+ If true rain will be occluded below the surface on the Y axis.
+
+
+
+
+ Flag for legacy sea level.
+
+
+
+
+ Water volume marked as being sea level.
+
+
+
+ Null if under old water level, otherwise the volume.
+
+
+
+ Find the water elevation underneath point, or above point if underwater.
+
+
+
+
+ Reads data into the data array.
+
+ The file path to read from.
+ The array to read into.
+ Whether the read succesfully executed.
+
+
+
+ Writes data out of data array.
+
+ The file path to write to.
+ The array to write from.
+ The length of the array with data.
+ Whether the write succesfully executed.
+
+
+
+ Checks the size of a file.
+
+ The file path to check.
+ The size of the file.
+ Whether the check succesfully executed.
+
+
+
+ Checks whether the path already exists.
+
+ The file path to check.
+ Whether the file exists.
+ Whether the check succesfully executed.
+
+
+
+ Deletes the path.
+
+ The file path to delete.
+ Whether the deletion succesfully executed.
+
+
+
+ For once the provider interface actually came in useful!
+ Fakes loading the Steam remote storage files from a separate folder.
+
+
+
+
+ Triggered when the user's statistics are available.
+
+
+
+
+ Checks the current user's statistics with this name.
+
+ The name of the statistic.
+ The value of the statistic.
+ Whether the check succesfully executed.
+
+
+
+ Assigns the current user's statistics with this name.
+
+ The name of the statistic.
+ The value of the statistic.
+ Whether the check succesfully executed.
+
+
+
+ Checks the current user's statistics with this name.
+
+ The name of the statistic.
+ The value of the statistic.
+ Whether the check succesfully executed.
+
+
+
+ Assigns the current user's statistics with this name.
+
+ The name of the statistic.
+ The value of the statistic.
+ Whether the check succesfully executed.
+
+
+
+ Requests the user's statistics.
+
+ Whether the refresh succesfully executed.
+
+
+
+ Triggered when the global statistics are available.
+
+
+
+
+ Checks the global total of the statistic with this name.
+
+ The name of the statistic.
+ The value of the statistic.
+ Whether the check succesfully executed.
+
+
+
+ Checks the global total of the statistic with this name.
+
+ The name of the statistic.
+ The value of the statistic.
+ Whether the check succesfully executed.
+
+
+
+ Requests the global statistics.
+
+ Whether the refresh succesfully executed.
+
+
+
+ Current user statistics implementation.
+
+
+
+
+ Current global statistics implementation.
+
+
+
+
+ Current client multiplayer implementation.
+
+
+
+
+ Current server multiplayer implementation.
+
+
+
+
+ Information about currently connected server.
+
+
+
+
+ Whether a server is currently connected to.
+
+
+
+
+ Whether connection attempts are being made.
+
+
+
+
+ Network buffer memory stream.
+
+
+
+
+ Network buffer memory stream reader.
+
+
+
+
+ Network buffer memory stream writer.
+
+
+
+
+ Connect to a server.
+
+ Server to join.
+
+
+
+ Disconnect from current server.
+
+
+
+
+ Receive a packet from an entity across the network.
+
+ Sender of data.
+
+
+ Whether any data was read.
+
+
+
+ Send a packet to an entity across the network.
+
+ Recipient of data.
+ Packet to send.
+ Size of data in array.
+
+
+
+ Send a packet to an entity across the network.
+
+ Recipient of data.
+ Packet to send.
+ Size of data in array.
+ Type of send to use.
+
+
+
+ Information about currently hosted server.
+
+
+
+
+ Whether a server is open.
+
+
+
+
+ Network buffer memory stream.
+
+
+
+
+ Network buffer memory stream reader.
+
+
+
+
+ Network buffer memory stream writer.
+
+
+
+
+ Open a new server.
+
+
+
+
+ Close an existing server.
+
+
+
+
+ Receive a packet from an entity across the network.
+
+ Sender of data.
+
+
+ Whether any data was read.
+
+
+
+ Send a packet to an entity across the network.
+
+ Recipient of data.
+ Packet to send.
+ Size of data in array.
+
+
+
+ Send a packet to an entity across the network.
+
+ Recipient of data.
+ Packet to send.
+ Size of data in array.
+ Type of send to use.
+
+
+
+ Whether the user has their overlay enabled.
+
+
+
+
+ Requests the user's inventory.
+
+ Called when the request is completed.
+ Handle for checking the owner of the callback.
+
+
+
+ Requests a check for promotional items.
+
+ Called when the request is completed.
+ Handle for checking the owner of the callback.
+
+
+
+ Converts the input items into the output items.
+
+ Items to be converted from.
+ Item amounts to be consumed.
+ Items to be converted to.
+ Item amounts to be generated.
+ Called when the exchange is completed.
+
+
+
+ Whether the user has their overlay enabled.
+
+
+
+
+ View a package on the store.
+
+ Package to view.
+
+
+
+ Checks whether the current user has an achievement with this name.
+
+ The name of the achievement.
+ Whether the user has this achievement.
+ Whether the check succesfully executed.
+
+
+
+ Assigns the current user an achievement with this name.
+
+ The name of the achievement.
+ Whether the assignment succesfully executed.
+
+
+
+ Whether the user has their overlay enabled.
+
+
+
+
+ Initialize this service's external API. Should be called before using.
+
+
+
+
+ Update this service's external API. Should be called every frame.
+
+
+
+
+ Shutdown this service's external API. Should be called before closing the program.
+
+
+
+
+ Used to show a warning when a lot of servers are blocked by curation list.
+
+
+
+
+ Reset after starting connection attempt, so set to true afterwards to auto join the server.
+
+
+
+
+ EItemType
+
+
+
+
+ Nelson 2024-12-06: This was added 2023-06-19, so unfortunately it will be inaccurate for older items.
+
+
+
+
+ This enum exists for sorting items based on rarity, and is derived from quality.
+ Quality order cannot be changed due to loading from older files, but this one is ordered
+ from lowest rarity to highest rarity and should match entries in quality.
+
+
+
+
+ Response data from IInventoryService GetInventory web API.
+
+ One player's inventory became so large that the Steam client's built-in GetInventory fails,
+ so as temporary fix we can send them a json file with their inventory.
+
+
+
+
+ Json string representation of the contained items.
+
+
+
+
+ Parse response from json file.
+
+
+
+
+ Details of a workshop item that the game may want to refer to later.
+ Cached during client startup after getting installed items, and while
+ downloading UGC for the dedicated server.
+
+
+
+
+ Banned workshop files are shown in red.
+
+
+
+
+ Used on dedicated server to test whether map has been updated, and whether local copy of file is out-of-date.
+
+
+
+
+ Some workshop thieves use an empty title, in which case we show the file ID as title text.
+
+
+
+
+ Used when transitioning Unity versions breaks asset bundles. Replaced by AssetBundleVersion const values.
+
+
+
+
+ Workshop item key-value tag storing the version number.
+
+
+
+
+ Maps published file id to name, version, etc.
+
+
+
+
+ Get compatibility version from workshop query, or zero if unset.
+
+
+
+
+ Save the details from a workshop query for lookup later.
+ Allows game to inspect the installed files before deciding if they are
+ compatible, since maps and localization are not affected by unity upgrades.
+ Previously the compatibility test occurred before downloading the content.
+
+
+
+
+ Get cached workshop item details.
+
+
+
+
+ Should caller skip loading a given workshop file?
+
+ Used to skip workshop version of map if the map is locally installed,
+ e.g. Canyon Arena moved to workshop and auto-subscribed.
+
+
+
+
+ Helper for downloadServerItems.
+ Called for each workshop item we want to download for the server.
+
+
+
+
+ Called once we know which items the server is allowed to use (queryServerItems),
+ or the query has failed in which case we proceed with all items it told us.
+
+
+
+
+ Is currently connected server allowed to auto-download the workshop item?
+ Requested by mod authors so that they can whitelist/blacklist access.
+
+
+
+
+ Successfully queried details of the items current server is using.
+ Ensure server has permission to use these items, then proceed with downloading.
+ Also caches item titles for use on the loading screen.
+
+
+
+
+ IO or bad result occurred when querying items the current server is using.
+ We do not know the file details, but we proceed with downloading them all.
+
+
+
+
+ File IDs the client knows the server is using. Fallback in-case the query fails.
+
+
+
+
+ IP of the currently connected server, or zero if unable to retrieve from network system.
+ Used for testing download restrictions.
+
+
+
+
+ Number of items currently connected server was not authorized to download.
+
+
+
+
+ Called prior to downloading, and after a connection failure.
+
+
+
+
+ Client now knows the published file IDs the server is using, but
+ queries the workshop for additional information before installing.
+
+
+
+
+ Callback when player subscribes to an item and it finishes downloading.
+ Different than the game-managed DownloadItem calls.
+
+
+
+
+ Get path to an already-installed workshop item.
+
+ True if the path was found.
+
+
+
+ Used during startup to register subscribed workshop items.
+ Given a workshop item file id, if its files exist on disk then register it.
+
+
+
+
+ Workshop file ids we were locally subscribed to during startup.
+ These items are queried for compatibility before registering.
+
+
+
+
+ Called when subscribed items callback was successful to register all compatible files.
+
+
+
+
+ Called when subscribed items callback did not execute as expected,
+ maybe because steam's servers are offline. In this case we can't check
+ compatibility so we register all the locally subscribed items as compatible.
+
+
+
+
+ Register any localization-type workshop content before waiting for the steam callbacks.
+ Important so that localizations are available for loading screens and whatnot during startup.
+ Any items we register now will be skipped later.
+
+
+
+
+ If specified, player's workshop file subscriptions are not registered at startup.
+
+
+
+
+ Map of subscriptions added/removed by the player through the in-game client API, as opposed to the web browser.
+
+
+
+
+ Called by us when we subscribe to an item from in-game.
+ If item already exists on-disk steam doesn't always call onItemInstalled, so we do our own check and potentially load.
+
+
+
+
+ Current achievements implementation.
+
+
+
+
+ Current browser implementation.
+
+
+
+
+ Current cloud implementation.
+
+
+
+
+ Current community implementation.
+
+
+
+
+ Current economy implementation.
+
+
+
+
+ Current matchmaking implementation.
+
+
+
+
+ Current multiplayer implementation.
+
+
+
+
+ Current statistics implementation.
+
+
+
+
+ Current store implementation.
+
+
+
+
+ Current translation implementation.
+
+
+
+
+ Current workshop implementation.
+
+
+
+
+ Initialize this provider's external API. Should be called before using provider features.
+
+ Thrown if initializing fails.
+
+
+
+ Update this provider's external API. Should be called every frame if using provider features.
+
+
+
+
+ Shutdown this provider's external API. Should be called before closing the program if using provider features.
+
+
+
+
+ Parse dynamic tag mythic effect.
+
+ ID of mythical asset, or zero if not in tags.
+
+
+
+ For purchasable box and bundle itemdefs this maps their itemdefid to the list of itemdefids in their desc.
+
+
+
+
+ Invoked after a successful exchange with the newly granted items.
+
+
+
+
+ Invoke after a succesful purchase from the item store.
+
+
+
+
+ Purchase result does not have a handle, so we guess based on when it arrives.
+
+
+
+
+ Find the first instanceId of a given itemDefId.
+
+
+
+
+ Count quantity of a given itemDefId.
+
+
+
+
+ Find certain quantity of given itemDefId.
+
+
+
+
+ Does itemdefid exist in the EconInfo.json file?
+
+
+
+
+ Get item with an exchange recipe for the appropriate number of scraps.
+
+
+
+
+ Get list of itemdefids mentioned in purchasable box or bundle item description.
+
+
+
+
+ One player's inventory became so large that the Steam client's built-in GetInventory fails,
+ so as temporary fix we can send them a json file with their inventory.
+
+
+
+
+ Add an item locally that we know exists in the online inventory, but is just a matter of waiting for it.
+
+
+
+
+ Remove an item locally that we know no longer exists in the online inventory.
+
+
+
+
+ Update our local version of an item that we know has changed, but we are waiting for a full refresh.
+
+
+
+
+ Callback when client knows which items were crafted or exchanged.
+
+
+
+
+ Callback when client thinks result was from purchase.
+
+
+
+
+ 2022-01-01 it does not seem to be documented by Steam, but we get SteamInventoryResultReady callbacks
+ for external events like AddItem calls, so we may as well handle them.
+
+
+
+
+ Do we know the player's region?
+ If not, default to not allowing random items.
+
+
+
+
+ Does the player's region allow crates and keys to be used?
+ Similar to TF2 and other Valve games we disable unboxing in certain regions.
+
+
+
+
+ If player's region does not allow crates and keys to be used, return the country code.
+
+
+
+
+ Similar to TF2 and other Valve games we disable unboxing in certain regions, so hide those items.
+
+
+
+
+ Similar to TF2 and other Valve games we disable unboxing in certain regions.
+
+
+
+
+ Not called on dedicated server.
+
+
+
+
+ Implementing as a struct wrapping the connection handle would remove the cost of looking up the connection,
+ but implementing as a class makes it cheap to cache information like the remote identity.
+
+
+
+
+ Find game connection associated with Steam connection.
+
+
+
+
+ Must close the handle to free up resources.
+
+
+
+
+ Must close the handle to free up resources.
+
+
+
+
+ Defaults to true. If false, skip Steam Networking Sockets creation of regular IP socket.
+
+
+
+
+ Defaults to true. If false, skip Steam Networking Sockets creation of non-FakeIP P2P socket.
+ (this is the socket used by "server codes")
+
+
+
+
+ Must close the handle to free up resources.
+
+
+
+
+ Must close the handle to free up resources.
+
+
+
+
+ Recycled array for every read call.
+
+
+
+
+ Log verbose information that should not be included in release builds.
+
+
+
+
+ Log helpful information that should be included in release builds.
+
+
+
+
+ Should certificate authentication be disabled for UDP connections?
+
+
+
+
+ This callback may be called from a service thread. It must be threadsafe and fast! Do not make any other
+ Steamworks calls from within the handler.
+
+
+
+
+ Thanks DiFFoZ! Ensures GC does not release the delegate.
+
+
+
+
+ Does host want extra debug output?
+
+
+
+
+ Overrides k_ESteamNetworkingConfig_SendBufferSize.
+
+
+
+
+ Overrides k_ESteamNetworkingConfig_EnableDiagnosticsUI.
+
+
+
+
+ Implementation using .NET Berkeley sockets.
+
+
+
+
+ Implements message boundaries on top of a TCP stream socket.
+
+
+
+
+ Implementation using .NET Berkeley sockets.
+
+
+
+
+ SteamNetworking is deprecated.
+
+
+
+
+ SteamNetworking is deprecated.
+
+
+
+
+ Dummy connection used in singleplayer.
+
+
+
+
+ Does initialOverlaps array contain hit collider?
+
+
+
+
+ Does initialOverlaps array contain every hit collider?
+
+
+
+
+ Perform a move, then do a capsule cast to determine if Unity PhysX went through a wall.
+
+ Required when disabling overlap recovery because there are issues when walking toward slopes that bend inward.
+ To test if Unity works properly in the future; walk toward the inside of a barracks building in the PEI base.
+
+
+
+
+ Set detectCollisions to false and cancel deferred requests to enable.
+
+
+
+
+ Set detectCollisions to true on the next frame.
+ Useful when CharacterController is teleported to prevent adding huge forces to overlapping rigidbodies.
+
+
+
+
+ If true EnableDetectCollisionsNextFrame, if false DisableDetectCollisions.
+
+
+
+
+ Intentionally Update, not FixedUpdate. Physics transforms are applied between frames, whereas at low frame
+ rates there may be multiple FixedUpdates per frame.
+
+
+
+
+ Used to capture promotional images.
+
+ Unity does not allow components in the editor assembly, so this component is in the game assembly but only compiled in the editor.
+
+
+
+
+ Test to compare differrent Unity instancing meshes.
+
+ Unity does not allow components in the editor assembly, so this component is in the game assembly but only compiled in the editor.
+
+
+
+
+ Hacky workaround to fix item skin material leak. Unfortunately none of the original item skin code destroyed
+ instantiated materials, and did not keep a reference to the instantiated materials, so until that code gets a
+ rewrite this will take care of cleanup.
+
+
+
+
+ Debug component in the editor to see if GetRandomForwardVectorInCone seems correct. :)
+ Not much of a mathematician. :(
+
+
+
+
diff --git a/redist/redist-client-preview/RocketModFix.Unturned.Redist.Client.nuspec b/redist/redist-client-preview/RocketModFix.Unturned.Redist.Client.nuspec
index 70649cf1..a7c6cda0 100644
--- a/redist/redist-client-preview/RocketModFix.Unturned.Redist.Client.nuspec
+++ b/redist/redist-client-preview/RocketModFix.Unturned.Redist.Client.nuspec
@@ -2,7 +2,7 @@
RocketModFix.Unturned.Redist.Client
- 3.25.7.1
+ 3.25.7.2-preview19137120
Unturned 3 Client-side redistributables. Standalone and always up-to-date.
diff --git a/redist/redist-client-preview/SDG.NetPak.Runtime.xml b/redist/redist-client-preview/SDG.NetPak.Runtime.xml
old mode 100644
new mode 100755
index 375e4e6d..f4215536
--- a/redist/redist-client-preview/SDG.NetPak.Runtime.xml
+++ b/redist/redist-client-preview/SDG.NetPak.Runtime.xml
@@ -1,292 +1,292 @@
-
-
-
- SDG.NetPak.Runtime
-
-
-
-
- Indicates net reader/writer implementation should be generated.
-
-
-
-
- Uses "smallest three" optimization described by Glenn Fiedler: https://gafferongames.com/post/snapshot_compression/
- Quoting here in case the link moves: "Since we know the quaternion represents a rotation its length must
- be 1, so x^2+y^2+z^2+w^2 = 1. We can use this identity to drop one component and reconstruct it on the
- other side. For example, if you send x,y,z you can reconstruct w = sqrt(1 - x^2 - y^2 - z^2). You might
- think you need to send a sign bit for w in case it is negative, but you don’t, because you can make w always
- positive by negating the entire quaternion if w is negative (in quaternion space (x,y,z,w) and (-x,-y,-z,-w)
- represent the same rotation.) Don’t always drop the same component due to numerical precision issues.
- Instead, find the component with the largest absolute value and encode its index using two bits [0, 3]
- (0=x, 1=y, 2=z, 3=w), then send the index of the largest component and the smallest three components over
- the network (hence the name). On the other side use the index of the largest bit to know which component
- you have to reconstruct from the other three."
-
-
-
-
- Similar to the quaternion optimization, but needs a sign bit for the largest value.
-
-
-
-
- Default intBitCount of 13 allows a range of [-4096, +4096).
-
-
-
-
- Write 8-bit per channel color excluding alpha.
-
-
-
-
- Write 8-bit per channel color including alpha.
-
-
-
-
- Note: "Special" here refers to the -90 rotation on the X axis. :)
- If quaternion is only a rotation around the Y axis (yaw) which is common for barricades and structures,
- write only yaw. Otherwise, write full quaternion.
-
-
-
-
- Packs bits into a 32-bit buffer value, and from there into a byte array. GafferOnGames recommends this approach
- rather than "farting across a buffer at byte level like it's 1985".
-
-
-
-
- Lightweight error when exceptions are disabled. Bitwise OR to prevent different errors from clobbering each other.
-
-
-
-
- Uses "smallest three" optimization described by Glenn Fiedler: https://gafferongames.com/post/snapshot_compression/
- Quoting here in case the link moves: "Since we know the quaternion represents a rotation its length must
- be 1, so x^2+y^2+z^2+w^2 = 1. We can use this identity to drop one component and reconstruct it on the
- other side. For example, if you send x,y,z you can reconstruct w = sqrt(1 - x^2 - y^2 - z^2). You might
- think you need to send a sign bit for w in case it is negative, but you don’t, because you can make w always
- positive by negating the entire quaternion if w is negative (in quaternion space (x,y,z,w) and (-x,-y,-z,-w)
- represent the same rotation.) Don’t always drop the same component due to numerical precision issues.
- Instead, find the component with the largest absolute value and encode its index using two bits [0, 3]
- (0=x, 1=y, 2=z, 3=w), then send the index of the largest component and the smallest three components over
- the network (hence the name). On the other side use the index of the largest bit to know which component
- you have to reconstruct from the other three."
-
-
-
-
- Similar to the quaternion optimization, but needs a sign bit for the largest value.
-
-
-
-
- Default intBitCount of 13 allows a range of [-4096, +4096).
-
-
-
-
- Read 8-bit per channel color excluding alpha.
-
-
-
-
- Read 8-bit per channel color excluding alpha.
-
-
-
-
- Read 8-bit per channel color including alpha.
-
-
-
-
- Read 8-bit per channel color including alpha.
-
-
-
-
- Note: "Special" here refers to the -90 rotation on the X axis. :)
- Read only yaw if quaternion was flat, full quaternion otherwise.
-
-
-
-
- For example bitCount of 7 allows range [-64, +64).
-
-
-
-
- Values outside the range are clamped into range.
- For example intBitCount of 7 allows range [0, 128).
-
-
-
-
- Values outside the range are clamped into range.
- For example intBitCount of 7 allows range [-64, +64).
-
-
-
-
- Encode a float in the range [0.0, 1.0]. Endpoints are encoded exactly, but not the midpoint (0.5).
-
-
-
-
- Encode a float in the range [-1.0, +1.0]. Endpoints and midpoint (0.0) are encoded exactly.
-
-
-
-
- Encode radians wrapped into the range [0, TWO_PI).
-
-
-
-
- Encode degrees wrapped into the range [0, 360).
-
-
-
-
- Placeholder allowing user assembly to compile before specialized implementation is generated.
-
-
-
-
- Ideally should not be used by new code.
-
-
-
-
- For example bitCount of 7 allows range [-64, +64).
-
-
-
-
- Values outside the range are clamped into range.
- For example intBitCount of 7 allows range [0, 128).
-
-
-
-
- Values outside the range are clamped into range.
- For example intBitCount of 7 allows range [-64, +64).
-
-
-
-
- Decode a float in the range [0.0, 1.0]. Endpoints are encoded exactly, but not the midpoint (0.5).
-
-
-
-
- Decode a float in the range [-1.0, +1.0]. Endpoints and midpoint (0.0) are encoded exactly.
-
-
-
-
- Placeholder allowing user assembly to compile before specialized implementation is generated.
-
-
-
-
- Ideally should not be used by new code.
-
-
-
-
- Unpacks bits from a byte array into a 32-bit buffer value. GafferOnGames recommends this approach rather than
- "farting across a buffer at byte level like it's 1985".
-
-
-
-
- Lightweight error when exceptions are disabled. Bitwise OR to prevent different errors from clobbering each other.
-
-
-
-
- Call to ReadBits or ReadBytes would have overflowed our buffer.
-
-
-
-
- Buffer passed into ReadBytes would have overflowed.
-
-
-
-
- AlignToByte bits should be zero.
-
-
-
-
- Buffer passed into SaveState would have overflowed.
-
-
-
-
- Imprecise because sent byte length is rounded up from bit length, but should help find particularly
- egregious reading errors.
-
-
-
-
- Number of bytes until end of segment is reached.
-
-
-
-
- Save remaining data to resume reading later. Used by net invokables to defer invocation.
-
-
-
-
- Used by invocation messages to show more error context rather than the default.
-
-
-
-
- Used by NetInvokable loopback to copy buffer from writer to reader.
-
-
-
-
- Assumes length is greater than zero!
- Moves reader forward according to length.
-
-
-
-
- Uses "smallest three" optimization described by Glenn Fiedler: https://gafferongames.com/post/snapshot_compression/
- Quoting here in case the link moves: "If v is the absolute value of the largest quaternion component,
- the next largest possible component value occurs when two components have the same absolute value and the
- other two components are zero. The length of that quaternion (v,v,0,0) is 1, therefore v^2 + v^2 = 1,
- 2v^2 = 1, v = 1/sqrt(2). This means you can encode the smallest three components in [-0.707107,+0.707107]
- instead of [-1,+1] giving you more precision with the same number of bits."
-
-
-
-
- Maximum number of bits to read/write for string byte count without overflowing the string buffer.
-
-
-
-
- Maximum number of UTF8 bytes for string.
- Before the "null or empty" flag was added the length had to be able to represent 0, but now the receiver
- can infer that the byte count is at least 1.
-
-
-
-
- encoderShouldEmitUTF8Identifier enables byte order mark (BOM) which is unnecessary for UTF8.
- throwOnInvalidBytes allows reader to discard bad string packets.
-
-
-
-
+
+
+
+ SDG.NetPak.Runtime
+
+
+
+
+ Indicates net reader/writer implementation should be generated.
+
+
+
+
+ Uses "smallest three" optimization described by Glenn Fiedler: https://gafferongames.com/post/snapshot_compression/
+ Quoting here in case the link moves: "Since we know the quaternion represents a rotation its length must
+ be 1, so x^2+y^2+z^2+w^2 = 1. We can use this identity to drop one component and reconstruct it on the
+ other side. For example, if you send x,y,z you can reconstruct w = sqrt(1 - x^2 - y^2 - z^2). You might
+ think you need to send a sign bit for w in case it is negative, but you don’t, because you can make w always
+ positive by negating the entire quaternion if w is negative (in quaternion space (x,y,z,w) and (-x,-y,-z,-w)
+ represent the same rotation.) Don’t always drop the same component due to numerical precision issues.
+ Instead, find the component with the largest absolute value and encode its index using two bits [0, 3]
+ (0=x, 1=y, 2=z, 3=w), then send the index of the largest component and the smallest three components over
+ the network (hence the name). On the other side use the index of the largest bit to know which component
+ you have to reconstruct from the other three."
+
+
+
+
+ Similar to the quaternion optimization, but needs a sign bit for the largest value.
+
+
+
+
+ Default intBitCount of 13 allows a range of [-4096, +4096).
+
+
+
+
+ Write 8-bit per channel color excluding alpha.
+
+
+
+
+ Write 8-bit per channel color including alpha.
+
+
+
+
+ Note: "Special" here refers to the -90 rotation on the X axis. :)
+ If quaternion is only a rotation around the Y axis (yaw) which is common for barricades and structures,
+ write only yaw. Otherwise, write full quaternion.
+
+
+
+
+ Packs bits into a 32-bit buffer value, and from there into a byte array. GafferOnGames recommends this approach
+ rather than "farting across a buffer at byte level like it's 1985".
+
+
+
+
+ Lightweight error when exceptions are disabled. Bitwise OR to prevent different errors from clobbering each other.
+
+
+
+
+ Uses "smallest three" optimization described by Glenn Fiedler: https://gafferongames.com/post/snapshot_compression/
+ Quoting here in case the link moves: "Since we know the quaternion represents a rotation its length must
+ be 1, so x^2+y^2+z^2+w^2 = 1. We can use this identity to drop one component and reconstruct it on the
+ other side. For example, if you send x,y,z you can reconstruct w = sqrt(1 - x^2 - y^2 - z^2). You might
+ think you need to send a sign bit for w in case it is negative, but you don’t, because you can make w always
+ positive by negating the entire quaternion if w is negative (in quaternion space (x,y,z,w) and (-x,-y,-z,-w)
+ represent the same rotation.) Don’t always drop the same component due to numerical precision issues.
+ Instead, find the component with the largest absolute value and encode its index using two bits [0, 3]
+ (0=x, 1=y, 2=z, 3=w), then send the index of the largest component and the smallest three components over
+ the network (hence the name). On the other side use the index of the largest bit to know which component
+ you have to reconstruct from the other three."
+
+
+
+
+ Similar to the quaternion optimization, but needs a sign bit for the largest value.
+
+
+
+
+ Default intBitCount of 13 allows a range of [-4096, +4096).
+
+
+
+
+ Read 8-bit per channel color excluding alpha.
+
+
+
+
+ Read 8-bit per channel color excluding alpha.
+
+
+
+
+ Read 8-bit per channel color including alpha.
+
+
+
+
+ Read 8-bit per channel color including alpha.
+
+
+
+
+ Note: "Special" here refers to the -90 rotation on the X axis. :)
+ Read only yaw if quaternion was flat, full quaternion otherwise.
+
+
+
+
+ For example bitCount of 7 allows range [-64, +64).
+
+
+
+
+ Values outside the range are clamped into range.
+ For example intBitCount of 7 allows range [0, 128).
+
+
+
+
+ Values outside the range are clamped into range.
+ For example intBitCount of 7 allows range [-64, +64).
+
+
+
+
+ Encode a float in the range [0.0, 1.0]. Endpoints are encoded exactly, but not the midpoint (0.5).
+
+
+
+
+ Encode a float in the range [-1.0, +1.0]. Endpoints and midpoint (0.0) are encoded exactly.
+
+
+
+
+ Encode radians wrapped into the range [0, TWO_PI).
+
+
+
+
+ Encode degrees wrapped into the range [0, 360).
+
+
+
+
+ Placeholder allowing user assembly to compile before specialized implementation is generated.
+
+
+
+
+ Ideally should not be used by new code.
+
+
+
+
+ For example bitCount of 7 allows range [-64, +64).
+
+
+
+
+ Values outside the range are clamped into range.
+ For example intBitCount of 7 allows range [0, 128).
+
+
+
+
+ Values outside the range are clamped into range.
+ For example intBitCount of 7 allows range [-64, +64).
+
+
+
+
+ Decode a float in the range [0.0, 1.0]. Endpoints are encoded exactly, but not the midpoint (0.5).
+
+
+
+
+ Decode a float in the range [-1.0, +1.0]. Endpoints and midpoint (0.0) are encoded exactly.
+
+
+
+
+ Placeholder allowing user assembly to compile before specialized implementation is generated.
+
+
+
+
+ Ideally should not be used by new code.
+
+
+
+
+ Unpacks bits from a byte array into a 32-bit buffer value. GafferOnGames recommends this approach rather than
+ "farting across a buffer at byte level like it's 1985".
+
+
+
+
+ Lightweight error when exceptions are disabled. Bitwise OR to prevent different errors from clobbering each other.
+
+
+
+
+ Call to ReadBits or ReadBytes would have overflowed our buffer.
+
+
+
+
+ Buffer passed into ReadBytes would have overflowed.
+
+
+
+
+ AlignToByte bits should be zero.
+
+
+
+
+ Buffer passed into SaveState would have overflowed.
+
+
+
+
+ Imprecise because sent byte length is rounded up from bit length, but should help find particularly
+ egregious reading errors.
+
+
+
+
+ Number of bytes until end of segment is reached.
+
+
+
+
+ Save remaining data to resume reading later. Used by net invokables to defer invocation.
+
+
+
+
+ Used by invocation messages to show more error context rather than the default.
+
+
+
+
+ Used by NetInvokable loopback to copy buffer from writer to reader.
+
+
+
+
+ Assumes length is greater than zero!
+ Moves reader forward according to length.
+
+
+
+
+ Uses "smallest three" optimization described by Glenn Fiedler: https://gafferongames.com/post/snapshot_compression/
+ Quoting here in case the link moves: "If v is the absolute value of the largest quaternion component,
+ the next largest possible component value occurs when two components have the same absolute value and the
+ other two components are zero. The length of that quaternion (v,v,0,0) is 1, therefore v^2 + v^2 = 1,
+ 2v^2 = 1, v = 1/sqrt(2). This means you can encode the smallest three components in [-0.707107,+0.707107]
+ instead of [-1,+1] giving you more precision with the same number of bits."
+
+
+
+
+ Maximum number of bits to read/write for string byte count without overflowing the string buffer.
+
+
+
+
+ Maximum number of UTF8 bytes for string.
+ Before the "null or empty" flag was added the length had to be able to represent 0, but now the receiver
+ can infer that the byte count is at least 1.
+
+
+
+
+ encoderShouldEmitUTF8Identifier enables byte order mark (BOM) which is unnecessary for UTF8.
+ throwOnInvalidBytes allows reader to discard bad string packets.
+
+
+
+
diff --git a/redist/redist-client-preview/manifest.sha256.json b/redist/redist-client-preview/manifest.sha256.json
new file mode 100644
index 00000000..07ee4fd5
--- /dev/null
+++ b/redist/redist-client-preview/manifest.sha256.json
@@ -0,0 +1,108 @@
+{
+ "UnityEngine.AudioModule.dll": "90af0d5c570b9bc108ed3ee8df429d1bed50421830cacaacba5a27407f7d6dd3",
+ "UnityEngine.TextCoreTextEngineModule.dll": "0ce73214fb83f46e6625f801fdfa3bca1a2f943ae34ec55f5662e92be0d9e697",
+ "System.Xml.Linq.dll": "b0a3e5fd478114c76e87d6f41362156c62579aee9fe6e82cfe286b0a723c0f3f",
+ "UnityEngine.AssetBundleModule.dll": "ff20356f44af32db558cd08f8dcc5c0710a5e3ebe990ccfbc863c149babf3af3",
+ "UnityEngine.PhysicsModule.dll": "4d87dea4e75b95cf70d32923a43281027ca99a9c6ca5924e339d374593e09c28",
+ "UnityEngine.UnityAnalyticsModule.dll": "5a6db23ceff8547ecd2a9a2e8044138dea02918dcb6e8552573c47cd568c2953",
+ "UnityEngine.AndroidJNIModule.dll": "683006a2e7409fbfe8d17a046561115f689879044edbee1147c31191d1108a15",
+ "UnityEngine.ProfilerModule.dll": "4ff78ce6422ecb62707f922b7e15b90e37a9ea4b2158b51aa291ff4111638733",
+ "UnityEngine.UnityConnectModule.dll": "5b790f435e6fa04c0c4e1200e5bb79a41df2ac50abb971010bf6505180c3056c",
+ "UnityEngine.UnityAnalyticsCommonModule.dll": "2461f1908c90f482b12cf9b35836d7d099c4d38874b14fa3dd04828f22b77cc5",
+ "UnityEngine.StreamingModule.dll": "aaf016453b667931aa6a5a2091db10eb304de938ab13dee550eb03bfcfe4a0b4",
+ "UnityEngine.GameCenterModule.dll": "5453b2db8b044f731e467f079a80c5342182bca2daa36c02e12eb7e5fda76e54",
+ "UnityEngine.UNETModule.dll": "116b49bf60214ba6a29b5839556d523ccd8896526616dd52ced50a6f216cb418",
+ "UnityEngine.TilemapModule.dll": "f7ed46d37a4a26762064c4714638644a18a1d92bfea79927f819a5dd8847d831",
+ "UnityEngine.ClothModule.dll": "f9fc4a30f38326b9a4024eef90c8b7e454d13046199954d36efc9ad0dba72200",
+ "UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule.dll": "4430377c421993dcc3dd8e7233e23d75e77e0dbb10bdbb5fc060f77e00043c02",
+ "UnityEngine.HotReloadModule.dll": "95047b1635eaf93581f186c90d3878de558b7d5f3e53f944da5c61c7a9214db3",
+ "System.Data.dll": "9208d9f99340a6fc86c07240b681c69070a35b750b572a1b04c623dbc8c8ce80",
+ "UnityEngine.CrashReportingModule.dll": "1b26f786cae8d489ab2475e3dd36c9501e5e10e03860865597325ffd5cc4124d",
+ "HighlightingSystem.dll": "14bf35ba30748d9567ed4391f44551611d69a0dfa3f0d526cf50d55c374c1051",
+ "UnityEngine.UnityWebRequestModule.dll": "ec0edae02b5557961699f205984f561a9e30de9f954136154d4fcd5009813deb",
+ "UnityEngine.ImageConversionModule.dll": "f38ada8de8c4d086cd0871af20e98f6db4e7363f6d4f8703979340ee8c198bb1",
+ "UnityEngine.InputLegacyModule.dll": "3adb044fabcb986e670813ed2a430ce2faf95aa07ef370702ea92bec0cc1e41c",
+ "Pathfinding.Poly2Tri.dll": "6d37c20001d050b2bfd5071d64ee19f7fd7415e021e8122f1e9070613e4d570b",
+ "UnityEngine.UIModule.dll": "60f35b8e38fa384d2eef4c6737bb468955ee34b3426ac8d7e9fef00d9ae52733",
+ "UnityEngine.UnityWebRequestTextureModule.dll": "df47042df8014ad87a95ae4cd76c5c352fbb4477fe7823b316fa29dfa30abdac",
+ "Unity.TextMeshPro.dll": "013283266a0a5d070fcddb89d75e7eae9acb601fb7155a3a976d5971cba0b837",
+ "Unturned.LiveConfig.Runtime.dll": "42a47abeecd633d0023712164a1cebb3ff0792e78163f25de766fb41db3307bd",
+ "UnityEngine.TerrainPhysicsModule.dll": "0a66795a35a4d4fae15fa562c032e25ecf47da1c94590ffebe08240a3083c74a",
+ "UnityEngine.CoreModule.dll": "3301a7929654c989bdaed4786b87d89977d10be8bb693d6b4a2d76faa5344524",
+ "UnityEngine.AIModule.dll": "bce511d9eaa61d1227524bb12c8c577bd637bf6c088b800ebd9dcfaee98ef44c",
+ "SDG.Glazier.Runtime.dll": "bb711d4fd66aafb485e0daee9293b6570846a19676ceecd0971663692377ada6",
+ "System.Xml.dll": "87868137fafcacdba529669c444336903f530d75c2c0d34aeb0fc0ee4c159dd1",
+ "UnityEngine.AnimationModule.dll": "add3ee8fe46c57acfb965eed098644dde4c77c8c2239816aa49614a2ea008f46",
+ "UnityEngine.GridModule.dll": "4651c38fde6dd1b32c783ce317c42a4940508313547c790b8244195877f4e81c",
+ "UnityEngine.JSONSerializeModule.dll": "f651818c316e28cd6f6c748e9d96dd052281f28f18d02ecd8e68c1c42d6e9fca",
+ "UnityEngine.SubstanceModule.dll": "9606aec0e3bfeed12f4f839f0c395238251dc8e4672b82d5082706c65816ccd4",
+ "System.Transactions.dll": "377b67149887d424148bfd263121f3ca6cc43cf986611edf5b4581dc323046a0",
+ "UnityEngine.TerrainModule.dll": "dcad9e74caa4069b2120887e01116ae1a879ca7ca5f3e436844ce3f94dc33b4f",
+ "UnityEngine.AccessibilityModule.dll": "dba9768901368e62f46a92d3aa6736d0dd352310dc084804ae02f40b74ff442e",
+ "UnityEngine.UnityWebRequestAssetBundleModule.dll": "2b7314423da743566bc5e589bfa93a7ffa940ca69d72c8dc95ceb746eb008463",
+ "Unity.Postprocessing.Runtime.dll": "e807fc6fd75741e0a87b4907e1ac133f6c736598c3b6bb2cceeafdf299d1324c",
+ "System.Configuration.dll": "e9a6f402068425dd918daf4b77cb8505bbcc5681fb58cdf4b5e6bfe5d3533599",
+ "UnityEngine.DSPGraphModule.dll": "5712c7aa891365a5cf839391aa8b5d529fbfa311d5896f4307922bd6f6d38ee4",
+ "UnityEngine.PerformanceReportingModule.dll": "b09ad6e015f8872e133284da39d713188e9609cb6a7949fa4342ea0781877fac",
+ "UnityEngine.ClusterRendererModule.dll": "1c466fb7207ce4367d73faab2306126bcdc10a489cba19883ebf09b8b74dbe8f",
+ "UnityEngine.UnityCurlModule.dll": "6178c9767bdda18e987d69cb4361d5b541e0f2303e4a57e6ab3f6000efa3b974",
+ "UnityEngine.VideoModule.dll": "c2d3f2c6b8ffa678177b344acf5907f275a860551031911fad7f12a4dfe9c64a",
+ "UnityEngine.SharedInternalsModule.dll": "cf43401f7186b07af9831bd6b522262a867cb0e3dedc20bb7d6bd4b55dda528f",
+ "UnityEngine.SpriteMaskModule.dll": "e70656c9fb2b4c300f1ff0a74093450cbf319d4250edff45c003c88a7a5fc32f",
+ "UnityEngine.UnityTestProtocolModule.dll": "efaba99d0ec9250e99c1384d96bd3a51a41b6905a38a2140a258e211deb80039",
+ "BattlEye.dll": "0e3980d3a3ae57d436bb72a3755df6f2d515c6ac7cc56dd8900b1fd76b21e70b",
+ "UnityEngine.UIElementsModule.dll": "b45228b0b207e417c45dcdccdb718b8a96bf2d8247d2809bdc3ab0663dc229ed",
+ "UnityEngine.UnityWebRequestAudioModule.dll": "5df00b24d032668ff92362b4d412be81f7f243b7dfd5b8d4272b53e791d490bf",
+ "UnityEngine.TextRenderingModule.dll": "ac848bb00a0493838425bdb3c16e64d0699530e1ca723cef87950634b2376e43",
+ "UnityEngine.VirtualTexturingModule.dll": "42461859b1eb9c276b27a83319837ab2754a011e7e514f0b1f0aadafb431f694",
+ "Pathfinding.Ionic.Zip.Reduced.dll": "481cc0f9a53a9ba94f8ea3fc0fb2a520b41812c2fdc6ab10581751eada743d34",
+ "UnityEngine.UIElementsNativeModule.dll": "e5b6a5ba3423dad69cbc025287e8a55e84cb664a7ee00638ccb6474bdf1306db",
+ "UnityEngine.LocalizationModule.dll": "969efd792fb4ec16426a6a0ff41fa60226989c1923df0a6d68d87437fe25a021",
+ "UnityEngine.UmbraModule.dll": "02bffc875edc1a2c068cec4083fd57755d8cdfc48dc7bb9a05a73ead1bb09f31",
+ "UnityEngine.TextCoreModule.dll": "e0576903a0a3d931da09732c046e73b8843ba52756496a049985564c001c63ed",
+ "UnityEngine.UnityWebRequestWWWModule.dll": "f1638730754ff52a23ca422b358a1f77a0099a296a36c08f458a0d4119b1e461",
+ "UnityEngine.TLSModule.dll": "78e19f3c34ea72906fd73a457b8a2c0123818bcaedb81a275774baa0782b4dbf",
+ "UnityEngine.ParticleSystemModule.dll": "98ce8393af4996d85a1e0f3811716584df1f1d3e75490c76c4ee3a3f9b291b2a",
+ "Newtonsoft.Json.dll": "d134937ec381729074694490e81983b08ec7991b31550eabafb9202e5b404f89",
+ "UnityEngine.VehiclesModule.dll": "3f5f81cca35c686b28342354db6e82c4938aca8a210ec3bd72eb4ad77a7f32ec",
+ "System.dll": "ffdd4c759dcef3dc4f51eb3d45eb8787d45da6bd47a373e23dbeab80d40f28cb",
+ "UnityEngine.TextCoreFontEngineModule.dll": "5aa0db3b3ce7e68a5b3b757e002c20607c4169ba096a5c71d3fdeb29ca62e955",
+ "System.Runtime.Serialization.dll": "7f9fc41d5a21e368ed56cf00bbb41e44d2cd2f18a2596c8500590c3c9e294831",
+ "Pathfinding.ClipperLib.dll": "4651eba68167202db81c212f445e23a2742560d70b605c0b367ad26a4d8dc1b3",
+ "Assembly-CSharp.dll": "5d7f8b0cb2eda24c7c0b106150ddb5b571620f55ed7000ee59c26c4bba571fff",
+ "Mono.Security.dll": "22f18aee38c7a8b1eedeb37da10a4cd93f8185b2f85d1eb95657cc6f5f473eb3",
+ "StandardAssets.dll": "1b9c15fbaa3ee1aacae0aff21be2ba68e593b6cfb198802f1bf774c5a2d2d82d",
+ "UnityEngine.dll": "4e8aabd8a38b80efb06f440b665c85e8ba7647dcc98a33155405c857abc8db9d",
+ "UnityEx.dll": "023873148eeaad563e4b4e57d98bf9869b1ac88023bc30ecc86f079aab629e53",
+ "UnityEngine.VFXModule.dll": "e26df07ddfce940a4cb753fd2aa03be76c7c8ee9daac6feade652a06ae13b86e",
+ "Assembly-CSharp.xml": "1b33fe59fac4bb54319799b7a69bde8ee3d2d72f5f69ed47432ca3bb115c193d",
+ "SDG.NetPak.Runtime.xml": "032c8d2d0a3e1f15ef1139b98f5370eb1fb94d65bf01c4462a0c0e6578bb705a",
+ "UnityEngine.WindModule.dll": "eb4670be37cec7824d64711526008538567c86eb0dad8c773b0d7a56fd4ef158",
+ "System.Security.dll": "07282d060237039adb6d11adc5f6e60e72a0049a5482545b5133f3dbb6ba840b",
+ "UnityEngine.SpriteShapeModule.dll": "152817cc97ad9d9010d708f13c7e2ed5955afa06a324500c7da74e4369fe88d1",
+ "mscorlib.dll": "5d3324b4b13081b0672a0e633050a81ecd33ef15e5acf23770ea60cc7a7d1d22",
+ "UnityEngine.DirectorModule.dll": "27ea4188f92af07fb8dc2c5789dae81326315861dd78770cc52b0189780b4cce",
+ "System.EnterpriseServices.dll": "7cf9a3bcb9519fe5f925b477613b38327370a7e77ee9afe617f53485c2a7babb",
+ "UnturnedDat.dll": "6e63686448d6f0ed0d24cec611b68a26fad4f5925accea021efaae04393a6b7f",
+ "UnityEngine.ClusterInputModule.dll": "f0616fc39619a26ac61c4606865503cdef2dbcbca0caea6e1ebc1c9f052f9c01",
+ "UnityEngine.SubsystemsModule.dll": "f5430b7b51054ec6dabc7be5fd62c152f085deecb1514268437efd5b4d361089",
+ "UnityEngine.InputModule.dll": "60f09b160e7582472023a2503a4d20ae5a5b4af66347671812ee47f8fd3977c2",
+ "Pathfinding.JsonFx.dll": "7705bad049f46adc7b1fa2ab401de1c84e7cf229894768f4869b6d23824c32ea",
+ "com.rlabrecque.steamworks.net.dll": "846866e49c176c3cb2ef93b32dce218d3434faaeeb671464cdcb8b779efdd3f4",
+ "UnityEngine.IMGUIModule.dll": "65e2f59ed0d0d88229b99fff0a5abd2bf3ab2d303df0b639da94154b759389c1",
+ "Mono.Posix.dll": "3db99e792651c291e69ee763cf49d9b248dbfe043764619057f6fd0a342090dc",
+ "System.Core.dll": "63e626271d04ebda91c6d101ba09a458486c85d86232fc752d082271fa1108d2",
+ "System.ServiceModel.Internals.dll": "db7e6471391a24791996a7155a5d432d58d3c7858295da7c50b546422d9b79da",
+ "UnityEngine.Physics2DModule.dll": "d09fa56a30ab5867d11b8deb7305094bc505ef1e7c60535af90e3484899c289a",
+ "UnityEngine.UI.dll": "189f9532ababf35c0dcb6870240f240b3cdc2cef8c71ba588effe15f2ce07ced",
+ "SDG.HostBans.Runtime.dll": "859b225b40ab376365fee0612b5a1b1589a8fe361bb3c60e21e012f5f589960a",
+ "SDG.NetTransport.dll": "f7427ff4079125a9dba13459ae005e22c5221b3dbf00d7a6e5ea59aef14cee0e",
+ "SystemEx.dll": "6398f529ad739f9402dc10d9bab57e28d964aeeaa581a5789160dbdfc55325e2",
+ "UnityEngine.XRModule.dll": "26cfe71735e8dab40feb0f1760b7ddd9b8487346127cda05d5a8f1afdbd91dd3",
+ "AstarPathfindingProject.dll": "773e7f1492764ee58acce91ee2b730aefc9a6816bc41e33c393736bf18c32de1",
+ "UnityEngine.GIModule.dll": "d0e2bdfb95aa5aaa7b70092be78d3d00a0198e6c270e949707cc3176846ee939",
+ "UnityEngine.ScreenCaptureModule.dll": "63f547fa3dd23302710ef7d935e5900f792c3088eb5f498e56f9a81690f6f527",
+ "UnityEngine.VRModule.dll": "468c3b980454c2678be4aa52c4336a7f00e9a7dbe791ae9765c0f1a642bbad86",
+ "System.Numerics.dll": "d3e868fd37ed0c4c52b258ab262c600ae42eb2d78c038e8392604bd5144879a2",
+ "SDG.NetPak.Runtime.dll": "3dbed421eecd1d3ee90c44a2096fdcb7e6931ef84455e659854e5215c14ad1ef"
+}
\ No newline at end of file
diff --git a/redist/redist-client-preview/version.preview.json b/redist/redist-client-preview/version.preview.json
new file mode 100644
index 00000000..a074d9a4
--- /dev/null
+++ b/redist/redist-client-preview/version.preview.json
@@ -0,0 +1,7 @@
+{
+ "GameVersion": "3.25.7.2",
+ "BuildId": "19137120",
+ "NuGetVersion": "3.25.7.2-preview19137120",
+ "FilesHash": "465006D9E99A9DA4EF980EBCE0A3853E26EF848A90C4E98A629DB5FD67ED8007",
+ "LastUpdated": "2025-07-08T16:27:47.4799174Z"
+}
\ No newline at end of file