Skip to content

Changelog

2026-07-06

Changed

FunctionChange
breakable_kindvalues: 11 values → 12 values (+koth)

2026-06-16

Changed

FunctionChange
breakable_kindvalues: 10 values → 11 values (+soul_bag)
pickup_kindvalues: 9 values → 11 values (+trooper_health, trooper_soul)

2026-06-12

Added

FunctionDescription
entities.get_xp_orbsAdded to Entity Lists
get_distanceAdded to xp_orb
get_positionAdded to xp_orb
get_extrapolated_positionAdded to xp_orb
get_velocityAdded to xp_orb
is_hittableAdded to xp_orb
get_time_until_hittableAdded to xp_orb
is_hitAdded to xp_orb
is_destroyedAdded to xp_orb
in_screenAdded to xp_orb

2026-06-09

Added

FunctionDescription
get_kindAdded to base_structure
get_labelAdded to base_structure
get_healthAdded to base_structure
get_max_healthAdded to base_structure
get_teamAdded to base_structure
get_distanceAdded to base_structure
get_positionAdded to base_structure
is_aliveAdded to base_structure
is_enemyAdded to base_structure
in_screenAdded to base_structure
get_healthAdded to minion
get_max_healthAdded to minion
get_teamAdded to minion
get_distanceAdded to minion
get_positionAdded to minion
is_aliveAdded to minion
is_enemyAdded to minion
in_screenAdded to minion
get_kindAdded to breakable
get_labelAdded to breakable
get_subclass_nameAdded to breakable
get_distanceAdded to breakable
get_positionAdded to breakable
is_destroyedAdded to breakable
in_screenAdded to breakable
get_kindAdded to pickup
get_labelAdded to pickup
get_subclass_nameAdded to pickup
get_distanceAdded to pickup
get_positionAdded to pickup
is_destroyedAdded to pickup
in_screenAdded to pickup
get_healthAdded to minigame
get_max_healthAdded to minigame
get_stateAdded to minigame
get_state_labelAdded to minigame
is_criticalAdded to minigame
is_hit_window_openAdded to minigame
get_seconds_to_next_eventAdded to minigame
get_cycle_timeAdded to minigame
get_hit_windowAdded to minigame
get_distanceAdded to minigame
get_positionAdded to minigame
is_destroyedAdded to minigame
in_screenAdded to minigame
get_kindAdded to jungle
get_labelAdded to jungle
get_healthAdded to jungle
get_max_healthAdded to jungle
get_distanceAdded to jungle
get_positionAdded to jungle
is_aliveAdded to jungle
in_screenAdded to jungle
entities.get_base_structuresAdded to Entity Lists
entities.get_minionsAdded to Entity Lists
entities.get_breakablesAdded to Entity Lists
entities.get_pickupsAdded to Entity Lists
entities.get_minigamesAdded to Entity Lists
entities.get_jungleAdded to Entity Lists
base_structure_kindAdded to Enums
breakable_kindAdded to Enums
pickup_kindAdded to Enums
jungle_kindAdded to Enums
vault_stateAdded to Enums

2026-06-08

Added

FunctionDescription
keybinds.getAdded to Keybinds
keybinds.ability1_keyAdded to Keybinds
keybinds.ability2_keyAdded to Keybinds
keybinds.ability3_keyAdded to Keybinds
keybinds.ability4_keyAdded to Keybinds
keybinds.item1_keyAdded to Keybinds
keybinds.item2_keyAdded to Keybinds
keybinds.item3_keyAdded to Keybinds
keybinds.item4_keyAdded to Keybinds
keybinds.reload_keyAdded to Keybinds
keybinds.parry_keyAdded to Keybinds
keybinds.dash_keyAdded to Keybinds
keybinds.jump_keyAdded to Keybinds

2026-06-04

Added

FunctionDescription
originAdded to ray
dirAdded to ray
targetAdded to ray
lengthAdded to ray
raytrace.is_world_loadedAdded to Raytrace
raytrace.worldAdded to Raytrace
raytrace.sphereAdded to Raytrace
raytrace.aabbAdded to Raytrace
raytrace.obbAdded to Raytrace
raytrace.capsuleAdded to Raytrace
raytrace.triangleAdded to Raytrace

2026-06-03

Fixed

FunctionChange
get_items, get_item, get_ability, get_abilitiesslot field now reflects the item's current inventory slot live. Previously it was frozen to the slot the item was bought in until the item was sold or rebought.

Changed

FieldChange
depends_onNow accepts a table of keys ({ "a", "b" }) for multi-parent dependencies, in addition to the existing single-string form.
depends_valueNow accepts a parallel table of ints. A scalar broadcasts to every parent. Default is 1 per parent.

Added

  • Visibility check for depends_on is now transitive — if any ancestor in the dependency chain is hidden, descendants are hidden too.
  • Settings with depends_on are auto-indented in the UI by dependency-chain depth, matching the visual hierarchy.

2026-03-25

Changed

FunctionChange
targeting.compute_aim_deltaparams: target:player,bone:int,projectile_speed:float?,speed:float?,position:vec3 → target:player,bone:int,projectile_speed:float?,speed:float?,target:player,position:vec3,projectile_speed:float?,speed:float?,position:vec3

2026-03-24

Added

FunctionDescription
get_view_anglesAdded to Player Object
camera.get_positionAdded to Camera
camera.get_view_anglesAdded to Camera
camera.get_forwardAdded to Camera
camera.get_fovAdded to Camera
camera.get_screen_sizeAdded to Camera
camera.world_to_screenAdded to Camera

Changed

FunctionChange
get_abilityreturns: table → table?
targeting.compute_aim_deltaparams: target:player,bone:int,projectile_speed:float?,speed:float? → target:player,bone:int,projectile_speed:float?,speed:float?,position:vec3
slotvalues: 8 values → 22 values (+held, zipline, mantle, climb_rope, jump, slide, teleport, zipline_boost, innate1, innate2, innate3, weapon_secondary, weapon_primary, weapon_melee)

2026-03-23

Added

FunctionDescription
dotAdded to vec2
angle_toAdded to vec2
dotAdded to vec3
crossAdded to vec3
angle_toAdded to vec3
get_itemAdded to Player Object
is_ability_readyAdded to Player Object
is_targetableAdded to Player Object
targeting.find_all_in_rangeAdded to Targeting
targeting.smoothness_compensationAdded to Targeting
printAdded to Global Functions
wait_until_in_rangeAdded to Helper Functions
snap_to_targetAdded to Helper Functions
item_slot_to_keyAdded to Helper Functions
debounceAdded to Helper Functions
find_closest_by_predicateAdded to Helper Functions

Changed

FunctionChange
targeting.compute_aim_deltaparams: target:player,bone:int,projectile_speed:float? → target:player,bone:int,projectile_speed:float?,speed:float?
input.move_mouseparams: delta:vec2,smooth_speed:float? → delta:vec2,speed:float?,detach_factor:float?
hero_idvalues: 44 values → 45 values (+any)

Removed

FunctionNote
is_shutting_downRemoved from Global Functions
wait_for_targetRemoved from Helper Functions
printRemoved from Config

2026-03-22 (latest)

Renamed

BeforeAfter
click_mouse()left_click()
targeting.find_closest(fov, max_dist)targeting.find_closest_by_fov(fov, max_dist)
p:get_flags()p:get_modifier_flags()
p:has_flag(flag)p:has_modifier_flag(modifier_flag)
player_flag enum (modifier flags)modifier_flag enum
engine_flag enumplayer_flag enum

Added

FunctionDescription
p:get_items()Get table of item tables with fields: name, subclass, bucket, slot, cooldown
p:has_item(name)Check if player has an item by designer name (e.g. "upgrade_burst_fire")
p:get_item_count()Get the number of items the player has
bucket enumNew enum: innate (-1), weapon (0), vitality (1), spirit (2)
p:has_modifier(name)Check if a specific modifier is active by exact name string
p:get_modifier_names()Get table of all active modifier name strings (requires Modifier List setting)
p:get_modifier_count()Get the number of active modifiers on this player
p:get_active_projectile_speed()Projectile speed of the currently active ability (falls back to weapon speed)
input.snap_to(player, bone, speed?)Convergent flick — iteratively moves to target with fresh camera reads each step. Optional projectile speed for prediction
p:has_abilities()Whether abilities are initialized for this player
p:get_ability(slot)Get ability table for a slot (works on any player, not just local)
p:get_abilities()Get all abilities keyed by slot enum value
targeting.find_closest_by_distance(max_dist)Find closest enemy by distance
p:get_velocity()Current velocity vector
p:is_scoped()Is scoped in
p:is_in_reload()Is reloading
p:is_enemy()Is an enemy
p:is_primary_weapon_active()Primary weapon is active
p:is_in_melee_attack()Is in melee attack
p:is_(player_flag)Check player flag (see player_flag enum)
player_flag enumNew enum: onground, ducking, fly, frozen, etc.
Multiple scripts per heroYou can now assign more than one script to a hero

Changed

FunctionChange
input.move_mouse(vec2, speed?)Smoothing is now always applied via easing curves (no more raw 1:1 movement). Speed defaults to 1.0

Merged

BeforeAfter
aim.move_mouse(vec2) / aim.move_mouse_smooth(vec2, speed)input.move_mouse(vec2, speed?) — pass optional speed (0.01-1.0) for smoothing

Removed

FunctionNote
is_shutting_down()
precise_sleep(ms)
aim.move_mouse_by(x, y)
ability.* tableReplaced by p:get_ability(slot) on the player object
aim.* tableMerged into input as input.move_mouse() and input.snap_to()

Fixed

  • shiv.lua script now correctly uses has_modifier_flag(modifier_flag.attached) / modifier_flag.burrow instead of the wrong table (player_flag)

Notes

  • get_items() returns a table of tables; each entry has name (string), subclass (string), bucket (int), slot (int), cooldown (float, percentage 0-100)
  • Use the bucket enum to filter items by category (e.g. if item.bucket == bucket.spirit then ...)
  • has_item() matches against the designer name, not the display name
  • has_modifier() works on all players regardless of settings — pass the exact modifier name (e.g. "modifier_citadel_stunned")
  • get_modifier_names() requires the Modifier List HUD setting to be enabled for name strings to be populated
  • The existing modifier_flag system is unchanged and continues to work alongside the new per-modifier API

Docs

  • Clarified modifier_flag vs player_flag enum sections: modifier_flag is for gameplay state (has_modifier_flag), player_flag is for engine entity flags (is_)