Skip to content

Changelog ​

2026-10-07 ​

Changed ​

FunctionChange
pickup_kindvalues: 14 values → 15 values (+health_orb)

2026-10-07 ​

Changed ​

FunctionChange
get_bone_positionreturns: vec3 → vec3?

2026-10-05 ​

Changed ​

FunctionChange
breakable_kindvalues: 12 values → 13 values (+tough_crate)

2026-10-01 ​

Changed ​

FunctionChange
hero_idvalues: 45 values → 51 values (+deadmandanny, ratking, solomon, violet, nurseharrow, baba)

2026-10-01 ​

Changed ​

FunctionChange
pickup_kindvalues: 11 values → 14 values (+bullet_resist, move_speed, weapon_range)

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_)