EntityLoad( filename:string, pos_x:number = 0, pos_y:number = 0 ) | entity_id:int |
--- | --- | ---
EntityLoadEndGameItem( filename:string, pos_x:number = 0, pos_y:number = 0 ) | entity_id:int |
EntityLoadCameraBound( filename:string, pos_x:number = 0, pos_y:number = 0 ) |  |
EntityLoadToEntity( filename:string, entity:int ) |  | Loads components from 'filename' to 'entity'. Does not load tags and other stuff.
EntitySave( entity_id:int, filename:string ) |  | Note: works only in dev builds.
EntityCreateNew( name:string = "" ) | entity_id:int |
EntityKill( entity_id:int ) |  |
EntityGetIsAlive( entity_id:int ) | bool |
EntityAddComponent( entity_id:int, component_type_name:string, table_of_component_values:{string} = nil ) | component_id:int |
EntityRemoveComponent( entity_id:int, component_id:int ) |  |
EntityGetAllComponents( entity_id:int ) | {int} | Returns a table of component ids.
EntityGetComponent( entity_id:int, component_type_name:string, tag:string = "" ) | {component_id}|nil |
EntityGetFirstComponent( entity_id:int, component_type_name:string, tag:string = "" ) | component_id|nil |
EntityGetComponentIncludingDisabled( entity_id:int, component_type_name:string, tag:string = "" ) | {component_id}|nil |
EntityGetFirstComponentIncludingDisabled( entity_id:int, component_type_name:string, tag:string = "" ) | component_id|nil |
EntitySetTransform( entity_id:int, x:number, y:number = 0, rotation:number = 0, scale_x:number = 1, scale_y:number = 1 ) |  |
EntityApplyTransform( entity_id:int, x:number, y:number = 0, rotation:number = 0, scale_x:number = 1, scale_y:number = 1 ) |  | Sets the transform and tries to immediately refresh components that calculate values based on an entity's transform.
EntityGetTransform( entity_id:int ) | x:number, y:number, rotation:number, scale_x:number, scale_y:number |
EntityAddChild( parent_id:int, child_id:int ) |  |
EntityGetAllChildren( entity_id:int, tag:string = "" ) | {entity_id:int}|nil | If passed the optional 'tag' parameter, will return only child entities that have that tag (If 'tag' isn't a valid tag name, will return no entities). If no entities are returned, might return either an empty table or nil.
EntityGetParent( entity_id:int ) | entity_id:int |
EntityGetRootEntity( entity_id:int ) | entity_id:int | Returns the given entity if it has no parent, otherwise walks up the parent hierarchy to the topmost parent and returns it.
EntityRemoveFromParent( entity_id:int ) |  |
EntitySetComponentsWithTagEnabled( entity_id:int, tag:string, enabled:bool ) |  |
EntitySetComponentIsEnabled( entity_id:int, component_id:int, is_enabled:bool ) |  |
EntityGetName( entity_id:int ) | name:string |
EntitySetName( entity_id:int, name:string ) |  |
EntityGetTags( entity_id:int ) | string|nil | Returns a string where the tags are comma-separated, or nil if 'entity_id' doesn't point to a valid entity.
EntityGetWithTag( tag:string ) | {entity_id:int} | Returns all entities with 'tag'.
EntityGetInRadius( pos_x:number, pos_y:number, radius:number ) | {entity_id:int} | Returns all entities in 'radius' distance from 'x','y'.
EntityGetInRadiusWithTag( pos_x:number, pos_y:number, radius:number, entity_tag:string ) | {entity_id:int} | Returns all entities in 'radius' distance from 'x','y'.
EntityGetClosest( pos_x:number, pos_y:number ) | entity_id:int |
EntityGetClosestWithTag( pos_x:number, pos_y:number, tag:string ) | entity_id:int |
EntityGetWithName( name:string ) | entity_id:int |
EntityAddTag( entity_id:int, tag:string ) |  |
EntityRemoveTag( entity_id:int, tag:string ) |  |
EntityHasTag( entity_id:int, tag:string ) | bool |
EntityGetFilename( entity_id:int ) | full_path:string | Return value example: 'data/entities/items/flute.xml'. Incorrect value is returned if the entity has passed through the world streaming system.
EntitiesGetMaxID() | entity_max_id:number | Returns the max entity ID currently in use. Entity IDs are increased linearly.
ComponentGetValue( component_id:int, variable_name:string ) | string|nil | Deprecated, use ComponentGetValue2() instead.
ComponentGetValueBool( component_id:int, variable_name:string ) | bool|nil | Deprecated, use ComponentGetValue2() instead.
ComponentGetValueInt( component_id:int, variable_name:string ) | int|nil | Deprecated, use ComponentGetValue2() instead.
ComponentGetValueFloat( component_id:int, variable_name:string ) | number|nil | Deprecated, use ComponentGetValue2() instead.
ComponentGetValueVector2( component_id:int, variable_name:string ) | x:number, y:number|nil | Deprecated, use ComponentGetValue2() instead.
ComponentSetValue( component_id:int, variable_name:string, value:string ) |  | Deprecated, use ComponentSetValue2() instead.
ComponentSetValueVector2( component_id:int, variable_name:string, x:number, y:number ) |  | Deprecated, use ComponentSetValue2() instead.
ComponentSetValueValueRange( component_id:int, variable_name:string, min:number, max:number ) |  | Deprecated, use ComponentSetValue2() instead.
ComponentSetValueValueRangeInt( component_id:int, variable_name:string, min:number, max:number ) |  | Deprecated, use ComponentSetValue2() instead.
ComponentSetMetaCustom( component_id:int, variable_name:string, value:string ) |  | Deprecated, use ComponentSetValue2() instead.
ComponentGetMetaCustom( component_id:int, variable_name:string ) | string|nil | Deprecated, use ComponentGetValue2() instead.
ComponentObjectGetValue( component_id:int, object_name:string, variable_name:string ) | string|nil | Deprecated, use ComponentObjectGetValue2() instead.
ComponentObjectSetValue( component_id:int, object_name:string, variable_name:string, value:string ) |  | Deprecated, use ComponentObjectSetValue2() instead.
ComponentAddTag( component_id:int, tag:string ) |  |
ComponentRemoveTag( component_id:int, tag:string ) |  |
ComponentGetTags( component_id:int ) | string|nil | Returns a string where the tags are comma-separated, or nil if can't find 'component_id' component.
ComponentHasTag( component_id:int, tag:string ) | bool |
ComponentGetValue2( component_id:int, field_name:string ) | multiple_types|nil | Returns one or many values matching the type or subtypes of the requested field. Reports error and returns nil if the field type is not supported or field was not found. This is up to 7.5x faster than the old ComponentSetValue functions.
ComponentSetValue2( component_id:int, field_name:string, value_or_values:multiple_types ) |  | Sets the value of a field. Value(s) should have a type matching the field type. Reports error if the values weren't given in correct type, the field type is not supported, or the component does not exist. This is up to 20x faster than the old ComponentSetValue functions.
ComponentObjectGetValue2( component_id:int, object_name:string, field_name:string ) | multiple types|nil | Returns one or many values matching the type or subtypes of the requested field in a component subobject. Reports error and returns nil if the field type is not supported or 'object_name' is not a metaobject.
ComponentObjectSetValue2( component_id:int, object_name:string, field_name:string, value_or_values:multiple_types ) |  | Sets the value of a field in a component subobject. Value(s) should have a type matching the field type. Reports error if the values weren't given in correct type, the field type is not supported or 'object_name' is not a metaobject.
EntityAddComponent2( entity_id:int, component_type_name, table_of_component_values:{string-multiple_types} = nil ) | component_id |
ComponentGetVectorSize( component_id:int, array_member_name:string, type_stored_in_vector:string ) | int | 'type_stored_in_vector' should be "int", "float" or "string".
ComponentGetVectorValue( component_id:int, array_name:string, type_stored_in_vector:string, index:int ) | int|number|string|nil | 'type_stored_in_vector' should be "int", "float" or "string".
ComponentGetVector( component_id:int, array_name:string, type_stored_in_vector:string ) | {int|number|string}|nil | 'type_stored_in_vector' should be "int", "float" or "string".
ComponentGetIsEnabled( component_id:int ) | bool | Returns true if the given component exists and is enabled, else false.
ComponentGetEntity( component_id:int ) | entity_id:int | Returns the id of the entity that owns a component, or 0.
ComponentGetMembers( component_id:int ) | {string-string}|nil | Returns a string-indexed table of string.
ComponentObjectGetMembers( component_id:int, object_name:string ) | {string-string}|nil | Returns a string-indexed table of string or nil.
ComponentGetTypeName( component_id:int ) | string |
GetUpdatedEntityID() | entity_id:int |
GetUpdatedComponentID() | component_id:int |
SetTimeOut( time_to_execute:number, file_to_execute:string, function_to_call:string = nil ) |  |
RegisterSpawnFunction( color:int, function_name:string ) |  |
SpawnActionItem( x:number, y:number, level:int ) |  |
SpawnStash( x:number, y:number, level:int, action_count:int ) | entity_id:int |
SpawnApparition( x:number, y:number, level:int, spawn_now:bool = false ) | spawn_state_id:int, entity_id:int |
LoadEntityToStash( entity_file:string, stash_entity_id:int ) |  |
AddMaterialInventoryMaterial( entity_id:int, material_name:string, count:int ) |  |
RemoveMaterialInventoryMaterial( entity_id:int, material_name:string = "" ) |  | If material_name is empty, all materials will be removed.
GetMaterialInventoryMainMaterial( entity_id:int, ignore_box2d_materials:bool = true ) | material_type:int | Returns the id of the material taking the largest part of the first MaterialInventoryComponent in 'entity_id', or 0 if nothing is found.
GameScreenshake( strength:number, x:number = camera_x, y:number = camera_y ) |  |
GameOnCompleted() |  |
GameGiveAchievement( id:string ) |  |
GameDoEnding2() |  |
GetParallelWorldPosition( world_pos_x:number, world_pos_y:number ) | x, y | x = 0 normal world, -1 is first west world, +1 is first east world, if y < 0 it is sky, if y > 0 it is hell
BiomeMapLoad_KeepPlayer( filename:string, pixel_scenes:string = "data/biome/_pixel_scenes.xml" ) |  |
BiomeMapLoad( filename:string ) |  | Deprecated. Might trigger various bugs. Use BiomeMapLoad_KeepPlayer() instead.
BiomeSetValue( filename:string, field_name:string, value:multiple_types ) |  | Can be used to edit biome configs during initialization. See the nightmare mod for an usage example.
BiomeGetValue( filename:string, field_name:string ) | multiple types|nil | Can be used to read biome configs. Returns one or many values matching the type or subtypes of the requested field. Reports error and returns nil if the field type is not supported or field was not found.
BiomeObjectSetValue( filename:string, meta_object_name:string, field_name:string, value:multiple_types ) |  | Can be used to edit biome configs during initialization. See biome_modifiers.lua for an usage example.
BiomeVegetationSetValue( filename:string, material_name:string, field_name:string, value:multiple_types ) |  | Can be used to edit biome config MaterialComponents during initialization. Sets the given value in all found VegetationComponent with matching tree_material. See biome_modifiers.lua for an usage example.
BiomeMaterialSetValue( filename:string, material_name:string, field_name:string, value:multiple_types ) |  | Can be used to edit biome config MaterialComponents during initialization. Sets the given value in the first found MaterialComponent with matching material_name. See biome_modifiers.lua for an usage example.
BiomeMaterialGetValue( filename:string, material_name:string, field_name:string ) | multiple types|nil | Can be used to read biome config MaterialComponents during initialization. Returns the given value in the first found MaterialComponent with matching material_name. See biome_modifiers.lua for an usage example.
GameIsIntroPlaying() | bool |
GameGetIsGamepadConnected() | bool |
GameGetWorldStateEntity() | entity_id:int |
GameGetPlayerStatsEntity() | entity_id:int |
GameGetOrbCountAllTime() | int |
GameGetOrbCountThisRun() | int |
GameGetOrbCollectedThisRun( orb_id_zero_based:int ) | bool |
GameGetOrbCollectedAllTime( orb_id_zero_based:int ) | bool |
GameClearOrbsFoundThisRun() |  |
GameGetOrbCountTotal() | int | Returns the number of orbs, picked or not.
CellFactory_GetName( material_id:int ) | string | Converts a numeric material id to the material's strings id.
CellFactory_GetType( material_name:string ) | int | Returns the id of a material.
CellFactory_GetUIName( material_id:int ) | string | Returns the displayed name of a material, or an empty string if 'material_id' is not valid. Might return a text key.
CellFactory_GetAllLiquids( include_statics:bool = true, include_particle_fx_materials:bool = false ) | {string} |
CellFactory_GetAllSands( include_statics:bool = true, include_particle_fx_materials:bool = false ) | {string} |
CellFactory_GetAllGases( include_statics:bool = true, include_particle_fx_materials:bool = false ) | {string} |
CellFactory_GetAllFires( include_statics:bool = true, include_particle_fx_materials:bool = false ) | {string} |
CellFactory_GetAllSolids( include_statics:bool = true, include_particle_fx_materials:bool = false ) | {string} |
CellFactory_GetTags( material_id:int ) | {string} |
CellFactory_HasTag( material_id:int, tag:string ) | {bool} |
GameGetCameraPos() | x:number, y:number |
GameSetCameraPos( x:number, y:number ) |  |
GameSetCameraFree( is_free:bool ) |  |
GameGetCameraBounds() | x:number, y:number, w:number, h:number | Returns the camera rectangle. This may not be 100% pixel perfect with regards to what you see on the screen. 'x','y' = top left corner of the rectangle.
GameRegenItemAction( entity_id:int ) |  |
GameRegenItemActionsInContainer( entity_id:int ) |  |
GameRegenItemActionsInPlayer( entity_id:int ) |  |
GameKillInventoryItem( inventory_owner_entity_id:int, item_entity_id:int ) |  |
GamePickUpInventoryItem( who_picks_up_entity_id:int, item_entity_id:int, do_pick_up_effects:bool = true ) |  |
GameGetAllInventoryItems( entity_id:int ) | {item_entity_id}|nil | Returns all the inventory items that entity_id has.
GameDropAllItems( entity_id:int ) |  |
GameDropPlayerInventoryItems( entity_id:int ) |  |
GameDestroyInventoryItems( entity_id:int ) |  |
GameIsInventoryOpen() | bool |
GameTriggerGameOver() |  |
LoadPixelScene( materials_filename:string, colors_filename:string, x:number, y:number, background_file:string, skip_biome_checks:bool = false, skip_edge_textures:bool = false, color_to_material_table:{string-string} = {}, background_z_index:int = 50, load_even_if_duplicate:bool = false ) |  |
LoadBackgroundSprite( background_file:string, x:number, y:number, background_z_index:number = 40.0, check_biome_corners:bool = false ) |  |
RemovePixelSceneBackgroundSprite( background_file:string, x:number, y:number ) | bool - | NOTE! Removes the pixel scene sprite if the name and position match. Will return true if manages the find and destroy the background sprite
RemovePixelSceneBackgroundSprites( x_min:number, y_min:number, x_max:number, y_max:number ) |  | NOTE! Removes pixel scene background sprites inside the given area.
GameCreateCosmeticParticle( material_name:string, x:number, y:number, how_many:int, xvel:number, yvel:number, color:uint32 = 0, lifetime_min:number = 5.0, lifetime_max:number = 10, force_create:bool = true, draw_front:bool = false, collide_with_grid:bool = true, randomize_velocity:bool = true, gravity_x:float = 0, gravity_y:float = 100.0 ) |  |
GameCreateParticle( material_name:string, x:number, y:number, how_many:int, xvel:number, yvel:number, just_visual:bool, draw_as_long:bool = false, randomize_velocity:bool = true ) |  |
GameCreateSpriteForXFrames( filename:string, x:number, y:number, centered:bool = true, sprite_offset_x:number = 0, sprite_offset_y:number = 0, frames:int = 1, emissive:bool = false ) |  |
GameShootProjectile( shooter_entity:int, x:number, y:number, target_x:number, target_y:number, projectile_entity:int, send_message:bool = true, verlet_parent_entity:int = 0 ) |  | 'shooter_entity' can be 0. Warning: If 'projectile_entity' has PhysicsBodyComponent and ItemComponent, components without the "enabled_in_world" tag will be disabled, as if the entity was thrown by player.
EntityInflictDamage( entity:int, amount:number, damage_type:string, description:string, ragdoll_fx:string, impulse_x:number, impulse_y:number, entity_who_is_responsible:int = 0, world_pos_x:number = entity_x, world_pos_y:number = entity_y, knockback_force:number = 0 ) |  |
EntityIngestMaterial( entity:int, material_type:number, amount:number ) |  | Has the same effects that would occur if 'entity' eats 'amount' number of cells of 'material_type' from the game world. Use this instead of directly modifying IngestionComponent values, if possible. Might not work with non-player entities. Use CellFactory_GetType() to convert a material name to material type.
EntityRemoveIngestionStatusEffect( entity:int, status_type_id:string ) |  |
EntityRemoveStainStatusEffect( entity:int, status_type_id:string, status_cooldown:int = 0 ) |  |
EntityAddRandomStains( entity:int, material_type:number, amount:number ) |  | Adds random visible stains of 'material_type' to entity. 'amount' controls the number of stain cells added. Does nothing if 'entity' doesn't have a SpriteStainsComponent. Use CellFactory_GetType() to convert a material name to material type.
EntitySetDamageFromMaterial( entity:int, material_name:string, damage:number ) |  | Modifies DamageModelComponents materials_that_damage and materials_how_much_damage variables (and their parsed out data structures)
EntityRefreshSprite( entity:int, sprite_component:int ) |  | Immediately refreshes the given SpriteComponent. Might be useful with text sprites if you want them to update more often than once a second.
EntityGetWandCapacity( entity:int ) | int | Returns the capacity of a wand entity, or 0 if 'entity' doesnt exist.
EntityGetHotspot( entity:int, hotspot_tag:string, transformed:bool, include_disabled_components:bool = false ) | x:number, y:number | Returns the position of a hot spot defined by a HotspotComponent. If 'transformed' is true, will return the position in world coordinates, transformed using the entity's transform.
GamePlayAnimation( entity_id:int, name:string, priority:int, followup_name:string = "", followup_priority:int = 0 ) |  | Plays animation. Follow up animation ('followup_name') is applied only if 'followup_priority' is given.
GameGetVelocityCompVelocity( entity_id:int ) | x:number, y:number |
GameGetGameEffect( entity_id:int, game_effect_name:string ) | component_id:int |
GameGetGameEffectCount( entity_id:int, game_effect_name:string ) | int |
LoadGameEffectEntityTo( entity_id:int, game_effect_entity_file:string ) | effect_entity_id:int |
GetGameEffectLoadTo( entity_id:int, game_effect_name:string, always_load_new:bool ) | effect_component_id:int, effect_entity_id:int |
PolymorphTableAddEntity( entity_xml:string, is_rare:bool = false, add_only_one_copy:bool = true ) |  | Adds the entity to the polymorph random table
PolymorphTableRemoveEntity( entity_xml:string, from_common_table:bool = true, from_rare_table:bool = true ) |  | Removes the entity from the polymorph random table
PolymorphTableGet( bool rare_table = false ) | {string} | Returns a list of all the entities in the polymorph random table
PolymorphTableSet( {table_of_xml_entities}, bool rare_table = false ) |  | Set a list of all entities sas the polymorph random table
SetPlayerSpawnLocation( x:number, y:number ) |  |
UnlockItem( action_id:string ) |  |
GameGetPotionColorUint( entity_id:int ) | uint |
EntityGetFirstHitboxCenter( entity_id:int ) | (x:number, y:number)|nil | Returns the centroid of first enabled HitboxComponent found in entity, the position of the entity if no hitbox is found, or nil if the entity does not exist. All returned positions are in world coordinates.
Raytrace( x1:number, y1:number, x2:number, y2:number ) | did_hit:bool, hit_x:number, hit_y:number | Does a raytrace that stops on any cell it hits.
RaytraceSurfaces( x1:number, y1:number, x2:number, y2:number ) | did_hit:bool, hit_x:number, hit_y:number | Does a raytrace that stops on any cell that is not fluid, gas (yes, technically gas is a fluid), or fire.
RaytraceSurfacesAndLiquiform( x1:number, y1:number, x2:number, y2:number ) | did_hit:bool, hit_x:number, hit_y:number | Does a raytrace that stops on any cell that is not gas or fire.
RaytracePlatforms( x1:number, y1:number, x2:number, y2:number ) | did_hit:bool, hit_x:number, hit_y:number | Does a raytrace that stops on any cell a character can stand on.
FindFreePositionForBody( ideal_pos_x:number, idea_pos_y:number, velocity_x:number, velocity_y:number, body_radius:number ) | x:number, y:number |
GetSurfaceNormal( pos_x:number, pos_y:number, ray_length:number, ray_count:int ) | found_normal:bool, normal_x:number, normal_y:number, approximate_distance_from_surface:number |
GameGetSkyVisibility( pos_x:number, pos_y:number ) | sky:number | Returns the approximate sky visibility (sky ambient level) at a point as a number between 0 and 1. The value is not affected by weather or time of day. This value is used by the post fx shader after some temporal and spatial smoothing.
GameGetFogOfWar( pos_x:number, pos_y:number ) | fog_of_war:int | Returns an integer between 0 and 255. Larger value means more coverage. Returns -1 if query is outside the bounds of the fog of war grid. For performance reasons consider using the components that manipulate fog of war.
GameGetFogOfWarBilinear( pos_x:number, pos_y:number ) | fog_of_war:int | Returns an integer between 0 and 255. Larger value means more coverage. Returns -1 if query is outside the bounds of the fog of war grid. The value is bilinearly filtered using four samples around 'pos'. For performance reasons consider using the components that manipulate fog of war.
GameSetFogOfWar( pos_x:number, pos_y:number, fog_of_war:int ) | pos_valid:bool | 'fog_of_war' should be between 0 and 255 (but will be clamped to the correct range with a int32->uint8 cast). Larger value means more coverage. Returns a boolean indicating whether or not the position was inside the bounds of the fog of war grid. For performance reasons consider using the components that manipulate fog of war.
DoesWorldExistAt( min_x:int, min_y:int, max_x:int, max_y:int ) | bool |
StringToHerdId( herd_name:string ) | int |
HerdIdToString( herd_id:int ) | string |
GetHerdRelation( herd_id_a:int, herd_id_b:int ) | number |
EntityGetHerdRelation( entity_a:int, entity_b:int ) | number |
EntityGetHerdRelationSafe( entity_a:int, entity_b:int ) | number | does not spam errors, but returns 0 if anything fails
GenomeSetHerdId( entity_id:int, new_herd_id:string ) |  | Deprecated, use GenomeStringToHerdID() and ComponentSetValue2() instead.
EntityGetClosestWormAttractor( pos_x:number, pos_y:number ) | entity_id:int, pos_x:number, pos_y:number | NOTE: entity_id might be NULL, but pos_x and pos_y could still be valid.
EntityGetClosestWormDetractor( pos_x:number, pos_y:number ) | entity_id:int, pos_x:number, pos_y:number, radius:number | NOTE: entity_id might be NULL, but pos_x and pos_y could still be valid
GamePrint( log_line:string ) |  |
GamePrintImportant( title:string, description:string = "", ui_custom_decoration_file:string = "" ) |  |
DEBUG_GetMouseWorld() | x:number, y:number |
DEBUG_MARK( x:number, y:number, message:string = "", color_r:number = 1, color_g:number = 0, color_b:number = 0 ) |  |
GameGetFrameNum() | int |
GameGetRealWorldTimeSinceStarted() | number |
InputIsKeyDown( key_code:int ) | bool (Debugish function - returns if a key is down, does not depend on state. E.g. player could be in menus or inputting text. See data/scripts/debug/keycodes.lua for the constants). |
InputIsKeyJustDown( key_code:int ) | bool (Debugish function - returns if a key is down this frame, does not depend on state. E.g. player could be in menus or inputting text. See data/scripts/debug/keycodes.lua for the constants) |
InputIsKeyJustUp( key_code:int ) | bool (Debugish function - returns if a key is up this frame, does not depend on state. E.g. player could be in menus or inputting text. See data/scripts/debug/keycodes.lua for the constants) |
InputGetMousePosOnScreen() | x:number, y:number (Debugish function - returns raw x, y coordinates of the mouse on screen) |
InputIsMouseButtonDown( mouse_button:int ) | bool (Debugish function - returns if mouse button is down. Does not depend on state. E.g. player could be in menus. See data/scripts/debug/keycodes.lua for the constants) |
InputIsMouseButtonJustDown( mouse_button:int ) | bool (Debugish function - returns if mouse button is down. Does not depend on state. E.g. player could be in menus. See data/scripts/debug/keycodes.lua for the constants) |
InputIsMouseButtonJustUp( mouse_button:int ) | bool (Debugish function - returns if mouse button is down. Does not depend on state. E.g. player could be in menus. See data/scripts/debug/keycodes.lua for the constants) |
InputIsJoystickButtonDown( joystick_index:int, joystick_button:int ) | bool (Debugish function - returns if 'joystick' button is down. Does not depend on state. E.g. player could be in menus. See data/scripts/debug/keycodes.lua for the constants) |
InputIsJoystickButtonJustDown( joystick_index:int, joystick_button:int ) | bool (Debugish function - returns if 'joystick' button is just down. Does not depend on state. E.g. player could be in menus. See data/scripts/debug/keycodes.lua for the constants) |
InputGetJoystickAnalogButton( joystick_index:int, analog_button_index:int ) | float (Debugish function - returns analog 'joystick' button value (0-1). analog_button_index 0 = left trigger, 1 = right trigger Does not depend on state. E.g. player could be in menus. See data/scripts/debug/keycodes.lua for the constants) |
InputIsJoystickConnected( joystick_index:int ) | bool (Debugish function - returns true if 'joystick' at that index is connected. Does not depend on state. E.g. player could be in menus. See data/scripts/debug/keycodes.lua for the constants) |
InputGetJoystickAnalogStick( joystick_index:int, stick_id:int = 0 ) | float x, float y (Debugish function - returns analog stick positions (-1, +1). stick_id 0 = left, 1 = right, Does not depend on state. E.g. player could be in menus. See data/scripts/debug/keycodes.lua for the constants) |
IsPlayer( entity_id:int ) | bool |
IsInvisible( entity_id:int ) | bool |
GameIsDailyRun() | bool |
GameIsDailyRunOrDailyPracticeRun() | bool |
GameIsModeFullyDeterministic() | bool |
GlobalsSetValue( key:string, value:string ) |  |
GlobalsGetValue( key:string, default_value:string = "" ) |  |
MagicNumbersGetValue( key:string ) | string |
SetWorldSeed( new_seed:int ) |  |
SessionNumbersGetValue( key:string ) | string |
SessionNumbersSetValue( key:string, value:string ) |  |
SessionNumbersSave() |  |
AutosaveDisable() |  |
StatsGetValue( key:string ) | string|nil |
StatsGlobalGetValue( key:string ) | string |
StatsBiomeGetValue( key:string ) | string |
StatsBiomeReset() |  |
StatsLogPlayerKill( killed_entity_id:int = 0 ) |  |
CreateItemActionEntity( action_id:string, x:number = 0, y:number = 0 ) | entity_id:int |
GetRandomActionWithType( x:number, y:number, max_level:int, type:int, i:int = 0 ) | string |
GetRandomAction( x:number, y:number, max_level:number, i:int = 0) | string |
GameGetDateAndTimeUTC() | year:int, month:int, day:int, hour:int, minute:int, second:int |
GameGetDateAndTimeLocal() | ear:int, month:int, day:int, hour:int, minute:int, second:int |
GameEmitRainParticles( num_particles:int, width_outside_camera:number, material_name:string, velocity_min:number, velocity_max:number, gravity:number, droplets_bounce:bool, draw_as_long:bool ) |  |
GameCutThroughWorldVertical( x:int, y_min:int, y_max:int, radius:number, edge_darkening_width:number ) |  | Each beam adds a little overhead to things like chunk creation, so please call this sparingly.
BiomeMapSetSize( width:int, height:int ) |  | This is available if BIOME_MAP in magic_numbers.xml points to a lua file, in the context of that file.
BiomeMapGetSize() | width:int, height:int | if BIOME_MAP in magic_numbers.xml points to a lua file returns that context, if not will return the biome_map size
BiomeMapSetPixel( x:int, y:int, color_int:int ) |  | This is available if BIOME_MAP in magic_numbers.xml points to a lua file, in the context of that file.
BiomeMapGetPixel( x:int, y:int ) | color:int | This is available if BIOME_MAP in magic_numbers.xml points to a lua file, in the context of that file.
BiomeMapConvertPixelFromUintToInt( color:int ) | int | Swaps red and blue channels of 'color'. This can be used make sense of the BiomeMapGetPixel() return values. E.g. if( BiomeMapGetPixel( x, y ) == BiomeMapConvertPixelFromUintToInt( 0xFF36D517 ) ) then print('hills') end
BiomeMapLoadImage( x:int, y:int, image_filename:string ) |  | This is available if BIOME_MAP in magic_numbers.xml points to a lua file, in the context of that file.
BiomeMapLoadImageCropped( x:int, y:int, image_filename:string, image_x:int, image_y:int, image_w:int, image_h:int ) |  | This is available if BIOME_MAP in magic_numbers.xml points to a lua file, in the context of that file.
BiomeMapGetVerticalPositionInsideBiome( x:number, y:number ) | number |
BiomeMapGetName( x:number = camera_x, y:number = camera_y ) | name |
SetRandomSeed( x:number, y:number ) |  |
Random( a:int = optional, b:int = optional ) | number|int. | This is kinda messy. If given 0 arguments, returns number between 0.0 and 1.0. If given 1 arguments, returns int between 0 and 'a'. If given 2 arguments returns int between 'a' and 'b'.
Randomf( min:number = optional, max:number = optional ) | number | This is kinda messy. If given 0 arguments, returns number between 0.0 and 1.0. If given 1 arguments, returns number between 0.0 and 'a'. If given 2 arguments returns number between 'a' and 'b'.
RandomDistribution( min:int, max:int, mean:int, sharpness:number = 1, baseline:number = 0.005 ) | int |
RandomDistributionf( min:number, max:number, mean:number, sharpness:number = 1, baseline:number = 0.005 ) | number |
ProceduralRandom( x:number, y:number, a:int|number = optional, b:int|number = optional ) | int|number | This is kinda messy. If given 2 arguments, returns number between 0.0 and 1.0. If given 3 arguments, returns int between 0 and 'a'. If given 4 arguments returns number between 'a' and 'b'.
ProceduralRandomf( x:number, y:number, a:number = optional, b:number = optional ) | number | This is kinda messy. If given 2 arguments, returns number between 0.0 and 1.0. If given 3 arguments, returns a number between 0 and 'a'. If given 4 arguments returns a number between 'a' and 'b'.
ProceduralRandomi( x:number, y:number, a:int = optional, b:int = optional ) | number | This is kinda messy. If given 2 arguments, returns 0 or 1. If given 3 arguments, returns an int between 0 and 'a'. If given 4 arguments returns an int between 'a' and 'b'.
PhysicsAddBodyImage( entity_id:int, image_file:string, material:string = "", offset_x:number = 0, offset_y:number = 0, centered:bool = false, is_circle:bool = false, material_image_file:string = "", use_image_as_colors:bool = true ) | int_body_id | Does not work with PhysicsBody2Component. Returns the id of the created physics body.
PhysicsAddBodyCreateBox( entity_id:int, material:string, offset_x:number, offset_y:number, width:int, height:int, centered:bool = false ) | int|nil | Does not work with PhysicsBody2Component. Returns the id of the created physics body.
PhysicsAddJoint( entity_id:int, body_id0:int, body_id1:int, offset_x:number, offset_y:number, joint_type:string ) | int|nil | Does not work with PhysicsBody2Component. Returns the id of the created joint.
PhysicsApplyForce( entity_id:int, force_x:number, force_y:number ) |  |
PhysicsApplyTorque( entity_id:int, torque:number ) |  |
PhysicsApplyTorqueToComponent( entity_id:int, component_id:int, torque:number ) |  |
PhysicsApplyForceOnArea( calculate_force_for_body_fn:function, ignore_this_entity:int, area_min_x:number, area_min_y:number,area_max_x:number, area_max_y:number ) |  |
PhysicsRemoveJoints( world_pos_min_x:number, world_pos_min_y:number, world_pos_max_x:number, world_pos_max_y:number ) |  |
PhysicsSetStatic( entity_id:int, is_static:bool ) |  |
PhysicsGetComponentVelocity( entity_id:int, component_id:int ) | vel_x:number, vel_y:number |
PhysicsGetComponentAngularVelocity( entity_id:int, component_id:int ) | vel:number |
PhysicsComponentGetTransform( component_id:int ) | x:number, y:number, angle:number, vel_x:number, vel_y:number, angular_vel:number | NOTE! results are Box2D units. Velocities need to converted with PhysicsVecToGameVec.
PhysicsComponentSetTransform( component_id:int, x:number, y:number, angle:number, vel_x:number, vel_y:number, angular_vel:number ) |  |
PhysicsBodyIDGetFromEntity( entity_id:int, component_id:int = 0 ) | {physics_body_id} | NOTE! If component_id is given, will return all the bodies linked to that component. If component_id is not given, will return all the bodies linked to the entity (with joints or through components).
PhysicsBodyIDQueryBodies( world_pos_min_x:number, world_pos_min_y:number, world_pos_max_x:number, world_pos_max_y:number, include_static_bodies:boolean = false, are_these_box2d_units:boolean = false ) | {physics_body_id} | NOTE! returns an array of physics_body_id(s) of all the box2d bodies in the given area. The default coordinates are in game world space. If passing a sixth argument with true, we will assume the coordinates are in box2d units.
PhysicsBodyIDGetTransform( physics_body_id:int ) | nil | x:number, y:number, angle:number, vel_x:number, vel_y:number, angular_vel:number | NOTE! returns nil, if body was not found. Results are Box2D units. Velocities need to converted with PhysicsVecToGameVec.
PhysicsBodyIDSetTransform( physics_body_id:int, x:number, y:number, angle:number, vel_x:number, vel_y:number, angular_vel:number ) |  | Requires min 3 first parameters.
PhysicsBodyIDApplyForce( physics_body_id:int, force_x:number, force_y:number, world_pos_x:number = nil, world_pos_y:number = nil ) |  | NOTE! force is in box2d units. world_pos_ is game world coordinates. If world_pos is not given will use the objects center as the position of where the force will be applied.
PhysicsBodyIDApplyLinearImpulse( physics_body_id:int, force_x:number, force_y:number, world_pos_x:number = nil, world_pos_y:number = nil ) |  | NOTE! impulse is in box2d units. world_pos_ is game world coordinates. If world_pos is not given will use the objects center as the position of where the force will be applied.
PhysicsBodyIDApplyTorque( physics_body_id:int, torque:number ) |  |
PhysicsBodyIDGetWorldCenter( physics_body_id:int ) | x:number, y:number | NOTE! returns nil, if body was not found. Results are Box2D units.
PhysicsBodyIDGetDamping( physics_body_id:int ) | linear_damping:number, angular_damping:number | NOTE! returns nil, if body was not found. Results are 0-1.
PhysicsBodyIDSetDamping( physics_body_id:int, linear_damping:number, angular_damping:number = nil ) |  | NOTE! if angular_damping is given will set it as well.
PhysicsBodyIDGetGravityScale( physics_body_id:int ) | gravity_scale:number | NOTE! returns nil, if body was not found.
PhysicsBodyIDSetGravityScale( physics_body_id:int, gravity_scale:number ) |  |
PhysicsBodyIDGetBodyAABB( physics_body_id:int ) | nil |
PhysicsBody2InitFromComponents( entity_id:int ) |  |
PhysicsPosToGamePos( x:number, y:number = 0 ) | x:number, y:number |
GamePosToPhysicsPos( x:number, y:number = 0 ) | x:number, y:number |
PhysicsVecToGameVec( x:number, y:number = 0 ) | x:number, y:number |
GameVecToPhysicsVec( x:number, y:number = 0 ) | x:number, y:number |
LooseChunk( world_pos_x:number, world_pos_y:number, image_filename:string, max_durability:int = 2147483647 ) |  |
VerletApplyCircularForce( world_pos_x:number, world_pos_y:number, radius:number, force:number ) |  |
VerletApplyDirectionalForce( world_pos_x:number, world_pos_y:number, radius:number, force_x:number, force_y:number ) |  |
AddFlagPersistent( key:string ) | bool_is_new |
RemoveFlagPersistent( key:string ) |  |
HasFlagPersistent( key:string ) | bool |
GameAddFlagRun( flag:string ) |  |
GameRemoveFlagRun( flag:string ) |  |
GameHasFlagRun( flag:string ) | bool |
GameTriggerMusicEvent( event_path:string, can_be_faded:bool, x:number, y:number ) |  |
GameTriggerMusicCue( name:string ) |  |
GameTriggerMusicFadeOutAndDequeueAll( relative_fade_speed:number = 1 ) |  |
GamePlaySound( bank_filename:string, event_path:string, x:number, y:number ) |  |
GameEntityPlaySound( entity_id:int, event_name:string ) |  | Plays a sound through all AudioComponents with matching sound in 'entity_id'.
GameEntityPlaySoundLoop( entity:int, component_tag:string, intensity:number, intensity2:number = 0 ) |  | Plays a sound loop through an AudioLoopComponent tagged with 'component_tag' in 'entity'. 'intensity' & 'intensity2' affect the intensity parameters passed to the audio event. Must be called every frame when the sound should play.
GameSetPostFxParameter( parameter_name:string, x:number, y:number, z:number, w:number ) |  | Can be used to pass custom parameters to the post_final shader, or override values set by the game code. The shader uniform called 'parameter_name' will be set to the latest given values on this and following frames.
GameUnsetPostFxParameter( parameter_name:string ) |  | Will remove a post_final shader parameter value binding set via game GameSetPostFxParameter().
GameSetPostFxTextureParameter( parameter_name:string, texture_filename:string, filtering_mode:int, wrapping_mode:int, update_texture:bool = false ) |  | Can be used to pass 2D textures to the post_final shader. The shader uniform called 'parameter_name' will be set to the latest given value on this and following frames. 'texture_filename' can either point to a file, or a virtual file created using the ModImage API.If 'update_texture' is true, the texture will be re-uploaded to the GPU (could be useful with dynamic textures, but will incur a heavy performance hit with textures that are loaded from the disk).Accepted values for 'filtering_mode' and 'wrapping_mode' can be found in 'data/libs/utilities.lua'. Each call with a unique 'parameter_name' will create a separate texture while the parameter is in use, so this should be used with some care. While it's possible to change 'texture_filename' on the fly, if texture size changed, this causes destruction of the old texture and allocating a new one, which can be quite slow.
GameUnsetPostFxTextureParameter( name:string ) |  | Will remove a post_final shader parameter value binding set via game GameSetPostFxTextureParameter().
GameTextGetTranslatedOrNot( text_or_key:string ) | string |
GameTextGet( key:string, param0:string = "", param1:string = "", param2:string = "" ) | string |
GuiCreate() | gui:obj |
GuiDestroy( gui:obj ) |  |
GuiStartFrame( gui:obj ) |  |
GuiOptionsAdd( gui:obj, option:int ) |  | Sets the options that apply to widgets during this frame. For 'option' use the values in the GUI_OPTION table in "data/scripts/lib/utilities.lua". Values from consecutive calls will be combined. For example calling this with the values GUI_OPTION.Align_Left and GUI_OPTION.GamepadDefaultWidget will set both options for the next widget. The options will be cleared on next call to GuiStartFrame().
GuiOptionsRemove( gui:obj, option:int ) |  | Sets the options that apply to widgets during this frame. For 'option' use the values in the GUI_OPTION table in "data/scripts/lib/utilities.lua". Values from consecutive calls will be combined. For example calling this with the values GUI_OPTION.Align_Left and GUI_OPTION.GamepadDefaultWidget will set both options for the next widget. The options will be cleared on next call to GuiStartFrame().
GuiOptionsClear( gui:obj ) |  | Clears the options that apply to widgets during this frame.
GuiOptionsAddForNextWidget( gui:obj, option:int ) |  |
GuiColorSetForNextWidget( gui:obj, red:number, green:number, blue:number, alpha:number ) |  | Sets the color of the next widget during this frame. Color components should be in the 0-1 range.
GuiZSet( gui:obj, z:float ) |  | Sets the rendering depth ('z') of the widgets following this call. Larger z = deeper. The z will be set to 0 on the next call to GuiStartFrame().
GuiZSetForNextWidget( gui:obj, z:float ) |  |
GuiIdPush( gui:obj, id:int ) |  | Can be used to solve ID conflicts. All ids given to Gui* functions will be hashed with the ids stacked (and hashed together) using GuiIdPush() and GuiIdPop(). The id stack has a max size of 1024, and calls to the function will do nothing if the size is exceeded.
GuiIdPushString( gui:obj, str:string ) |  | Pushes the hash of 'str' as a gui id. See GuiIdPush().
GuiIdPop( gui:obj ) |  | See GuiIdPush().
GuiAnimateBegin( gui:obj ) |  | Starts a scope where animations initiated using GuiAnimateAlphaFadeIn() etc. will be applied to all widgets.
GuiAnimateEnd( gui:obj ) |  | Ends a scope where animations initiated using GuiAnimateAlphaFadeIn() etc. will be applied to all widgets.
GuiAnimateAlphaFadeIn( gui:obj, id:int, speed:number, step:number, reset:bool ) |  | Does an alpha tween animation for all widgets inside a scope set using GuiAnimateBegin() and GuiAnimateEnd().
GuiAnimateScaleIn( gui:obj, id:int, acceleration:number, reset:bool ) |  | Does a scale tween animation for all widgets inside a scope set using GuiAnimateBegin() and GuiAnimateEnd().
GuiText( gui:obj, x:number, y:number, text:string, scale:number = 1, font:string = "", font_is_pixel_font:bool = true ) |  |
GuiTextCentered( gui:obj, x:number, y:number, text:string ) |  | Deprecated. Use GuiOptionsAdd() or GuiOptionsAddForNextWidget() with GUI_OPTION.Align_HorizontalCenter and GuiText() instead.
GuiImage( gui:obj, id:int, x:number, y:number, sprite_filename:string, alpha:number = 1, scale:number = 1, scale_y:number = 0, rotation:number = 0, rect_animation_playback_type:int = GUI_RECT_ANIMATION_PLAYBACK.PlayToEndAndHide, rect_animation_name:string = "" ) |  | 'scale' will be used for 'scale_y' if 'scale_y' equals 0.
GuiImageNinePiece( gui:obj, id:int, x:number, y:number, width:number, height:number, alpha:number = 1, sprite_filename:string = "data/ui_gfx/decorations/9piece0_gray.png", sprite_highlight_filename:string = "data/ui_gfx/decorations/9piece0_gray.png" ) |  |
GuiButton( gui:obj, id:int, x:number, y:number, text:string, scale:number = 1, font:string = "", font_is_pixel_font:bool = true ) | clicked:bool, right_clicked:bool | The old parameter order where 'id' is the last parameter is still supported. The function dynamically picks the correct order based on the type of the 4th parameter.
GuiImageButton( gui:obj, id:int, x:number, y:number, text:string, sprite_filename:string ) | clicked:bool, right_clicked:bool |
GuiSlider( gui:obj, id:int, x:number, y:number, text:string, value:number, value_min:number, value_max:number, value_default:number, value_display_multiplier:number, value_formatting:string, width:number ) | new_value:number | This is not intended to be outside mod settings menu, and might bug elsewhere.
GuiTextInput( gui:obj, id:int, x:number, y:number, text:string, width:number, max_length:int, allowed_characters:string = "" ) | new_text | 'allowed_characters' should consist only of ASCII characters. This is not intended to be outside mod settings menu, and might bug elsewhere.
GuiBeginAutoBox( gui:obj ) |  |
GuiEndAutoBoxNinePiece( gui:obj, margin:number = 5, size_min_x:number = 0, size_min_y:number = 0, mirrorize_over_x_axis:bool = false, x_axis:number = 0, sprite_filename:string = "data/ui_gfx/decorations/9piece0_gray.png", sprite_highlight_filename:string = "data/ui_gfx/decorations/9piece0_gray.png" ) |  |
GuiTooltip( gui:obj, text:string, description:string ) |  |
GuiBeginScrollContainer( gui:obj, id:int, x:number, y:number, width:number, height:number, scrollbar_gamepad_focusable:bool = true, margin_x:number = 2, margin_y:number = 2 ) |  | This can be used to create a container with a vertical scroll bar. Widgets between GuiBeginScrollContainer() and GuiEndScrollContainer() will be positioned relative to the container.
GuiEndScrollContainer( gui:obj ) |  |
GuiLayoutBeginHorizontal( gui:obj, x:number, y:number, position_in_ui_scale:bool = false, margin_x:number = 2, margin_y:number = 2 ) |  | If 'position_in_ui_scale' is 1, x and y will be in the same scale as other gui positions, otherwise x and y are given as a percentage (0-100) of the gui screen size.
GuiLayoutBeginVertical( gui:obj, x:number, y:number, position_in_ui_scale:bool = false, margin_x:number = 0, margin_y:number = 0 ) |  | If 'position_in_ui_scale' is 1, x and y will be in the same scale as other gui positions, otherwise x and y are given as a percentage (0-100) of the gui screen size.
GuiLayoutAddHorizontalSpacing( gui:obj, amount:number = optional ) |  | Will use the horizontal margin from current layout if amount is not set.
GuiLayoutAddVerticalSpacing( gui:obj, amount:number = optional ) |  | Will use the vertical margin from current layout if amount is not set.
GuiLayoutEnd( gui:obj ) |  |
GuiLayoutBeginLayer( gui:obj ) |  | Puts following things to a new layout layer. Can be used to create non-layouted widgets inside a layout.
GuiLayoutEndLayer( gui:obj ) |  |
GuiGetScreenDimensions( gui:obj ) | width:number, height:number | Returns dimensions of viewport in the gui coordinate system (which is equal to the coordinates of the screen bottom right corner in gui coordinates). The values returned may change depending on the game resolution because the UI is scaled for pixel-perfect text rendering.
GuiGetTextDimensions( gui:obj, text:string, scale:number = 1, line_spacing:number = 2, font:string = "", font_is_pixel_font:bool = true ) | width:number, height:number | Returns size of the given text in the gui coordinate system.
GuiGetImageDimensions( gui:obj, image_filename:string, scale:number = 1 ) | width:number, height:number | Returns size of the given image in the gui coordinate system.
GuiGetPreviousWidgetInfo( gui:obj ) | clicked:bool, right_clicked:bool, hovered:bool, x:number, y:number, width:number, height:number, draw_x:number, draw_y:number, draw_width:number, draw_height:number | Returns the final position, size etc calculated for a widget. Some values aren't supported by all widgets.
GameIsBetaBuild() | bool |
DebugGetIsDevBuild() | bool |
DebugEnableTrailerMode() |  |
GameGetIsTrailerModeEnabled() | bool |
Debug_SaveTestPlayer() |  | This doesn't do anything at the moment.
DebugBiomeMapGetFilename( x:number = camera_x, y:number = camera_y ) | string |
EntityConvertToMaterial( entity_id:int, material:string, use_material_colors:bool = true, replace_existing_cells = false ) |  |
ConvertEverythingToGold( material_dynamic:string = "", material_static:string = "" ) |  |
ConvertMaterialEverywhere( material_from_type:int, material_to_type:int ) |  | Converts 'material_from' to 'material_to' everwhere in the game world, replaces 'material_from_type' to 'material_to_type' in the material (CellData) global table, and marks 'material_from' as a "Transformed" material. Every call will add a new entry to WorldStateComponent which serializes these changes, so please call sparingly. The material conversion will be spread over multiple frames. 'material_from' will still retain the original name id and wang color. Use CellFactory_GetType() to convert a material name to material type.
ConvertMaterialOnAreaInstantly( area_x:int, area_y:int, area_w:int, area_h:int, material_from_type:int, material_to_type:int, trim_box2d:bool, update_edge_graphics_dummy:bool ) |  | Converts cells of 'material_from_type' to 'material_to_type' in the given area. If 'box2d_trim' is true, will attempt to trim the created cells where they might otherwise cause physics glitching. 'update_edge_graphics_dummy' is not yet supported.
LoadRagdoll( filename:string, pos_x:float, pos_y:float, material:string ="meat", scale_x:float=1, impulse_x:float=0, impulse_y:float=0 ) |  | Loads a given .txt file as a ragdoll into the game, made of the material given in material.
GetDailyPracticeRunSeed() | int |
ModIsEnabled( mod_id:string ) | bool | Returns true if a mod with the id 'mod_id' is currently active. For example mod_id = "nightmare".
ModGetActiveModIDs() | {string} | Returns a table filled with the IDs of currently active mods.
ModGetAPIVersion() | int |
ModDoesFileExist( filename:string ) | boolean | Returns true if the file exists.
ModMaterialFilesGet() | {string} | Returns a list of filenames from which materials were loaded.
ModSettingGet( id:string ) | bool|number|string|nil | Returns the value of a mod setting. 'id' should normally be in the format 'mod_name.setting_id'. Cache the returned value in your lua context if possible.
ModSettingSet( id:string, value:bool|number|string ) |  |
ModSettingGetNextValue( id:string ) | bool|number|string|nil | Returns the latest value set by the user, which might not be equal to the value that is used in the game (depending on the 'scope' value selected for the setting).
ModSettingSetNextValue( id:string, value:bool|number|string, is_default:bool ) |  | Sets the latest value set by the user, which might not be equal to the value that is displayed to the game (depending on the 'scope' value selected for the setting).
ModSettingRemove( id:string ) | was_removed:bool |
ModSettingGetCount() | int | Returns the number of mod settings defined. Use ModSettingGetAtIndex to enumerate the settings.
ModSettingGetAtIndex( index:int ) | (name:string, value:bool|number|string|nil, value_next:bool|number|string|nil) | nil | 'index' should be 0-based index. Returns nil if 'index' is invalid.
StreamingGetIsConnected() | bool |
StreamingGetConnectedChannelName() | string |
StreamingGetVotingCycleDurationFrames() | int |
StreamingGetRandomViewerName() | string |
StreamingGetSettingsGhostsNamedAfterViewers() | bool |
StreamingSetCustomPhaseDurations( time_between_votes_seconds:number, time_voting_seconds:number ) |  | Sets the duration of the next wait and voting phases. Use -1 for default duration.
StreamingForceNewVoting() |  | Cancels whatever is currently going on, and starts a new voting. _streaming_on_vote_start() and _streaming_get_event_for_vote() will be called as usually.
StreamingSetVotingEnabled( enabled:bool ) |  | Turns the voting UI on or off.
ModLuaFileAppend( to_filename:string, from_filename:string ) |  | Basically calls dofile(from_filename) at the end of 'to_filename'. Available only in init.lua. Should not be called after OnMostPostInit(should be avoided after that because changes might not propagate, or could work in non-deterministic manner).
ModLuaFileGetAppends( filename:string ) | {string} | Returns the paths of files that have been appended to 'filename' using ModLuaFileAppend(). Unlike most Mod* functions, this one is available everywhere.
ModLuaFileSetAppends( filename:string, {string} ) |  | Replaces the appends list (see ModLuaFileAppend) of a file with the given table. Available only in init.lua. Should not be called after OnMostPostInit(should be avoided after that because changes might not propagate, or could work in non-deterministic manner).
ModTextFileGetContent( filename:string ) | string | Returns the current (modded or not) content of the data file 'filename'. Allows access only to data files and files from enabled mods. "mods/mod/data/file.xml" and "data/file.xml" point to the same file. Unlike most Mod* functions, this one is available everywhere.
ModTextFileSetContent( filename:string, new_content:string ) |  | Sets the content the game sees for the file 'filename'. Allows access only to mod and data files. "mods/mod/data/file.xml" and "data/file.xml" point to the same file. Available only in init.lua. Should not be called after OnMostPostInit (should be avoided after that because changes might not propagate, or could work in non-deterministic manner). ModTextFileWhoSetContent might also return incorrect values if this is used after OnMostPostInit.
ModTextFileWhoSetContent( filename:string ) | string | Returns the id of the last mod that called ModTextFileSetContent with 'filename', or "". Unlike most Mod* functions, this one is available everywhere.
ModImageMakeEditable( filename:string, width:int, height:int ) | id:int, w:int, h:int | Makes an image available for in-memory editing through ModImageGetPixel() and ModImageSetPixel(). Returns an id that can be used to access the image, and the dimensions of the image. If an image file with the name wasn't found, an in-memory image of the given size will be created, filled with empty pixels (0x0), and added to the virtual filesystem under 'filename'. If an image with the given name has been previously created through ModImageMakeEditable, the id of that image will be returned. In case memory allocation failed, or if this is called outside mod init using a filename that wasn't succesfully used with this function during the init, 0 will be returned as the id. The game will apply further processing to some images, so the final binary data might end up different. For example, R and B channels are sometimes swapped, and on some textures the colors will be extended by one pixel outside areas where A>0. If game code has already loaded the image (for example this could be the case with some UI textures), the changes will probably not be applied. The changes done using the ModImage* API will need to be done again on each game restart/new game. It's possible that some images will be cached over restarts, and changes will not be visible in the game until a full executable restart - you will have to figure out where that applies. Allows access to data files and files from enabled mods. "mods/mod/data/file.png" and "data/file.png" point to the same file. Available only in init.lua during mod init.
ModImageIdFromFilename( filename:string ) | id:int, w:int, h:int | Returns an id that can be used with ModImageGetPixel and ModImageSetPixel, and the dimensions of the image. If a previous successful call to ModImageMakeEditable hasn't been made with the given filename, 0 will be returned as 'id', 'w' and 'h'. Unlike most Mod* functions, this one is available everywhere.
ModImageGetPixel( id:int, x:int, y:int ) | uint | Returns the color of a pixel in ABGR format (0xABGR). 'x' and 'y' are zero-based. Use ModImageMakeEditable to create an id that can be used with this function. While it's possible to edit images after mod init, it's not guaranteed that game systems will see the changes, as the system might already have loaded the image at that point. The function will silently fail nad return 0 if 'id' isn't valid. Unlike most Mod* functions, this one is available everywhere.
ModImageSetPixel( id:int, x:int, y:int, color:uint ) |  | Sets the color of a pixel in ABGR format (0xABGR). 'x' and 'y' are zero-based. Use ModImageMakeEditable to create an id that can be used with this function. The function will silently fail if 'id' isn't valid. Unlike most Mod* functions, this one is available everywhere.
ModImageWhoSetContent( filename:string ) | string | Returns the id of the last mod that called ModImageMakeEditable with 'filename', or "". Unlike most Mod* functions, this one is available everywhere.
ModImageDoesExist( filename:string ) | bool | Returns true if a file or virtual image exists for the given filename. Unlike most Mod* functions, this one is available everywhere.
ModMagicNumbersFileAdd( filename:string ) |  | Available only during mod initialization in init.lua.
ModMaterialsFileAdd( filename:string ) |  | Available only during mod initialization in init.lua.
ModRegisterAudioEventMappings( filename:string ) |  | Registers custom fmod events. Needs to be called to make the game find events in mods' audio banks. Event mapping (GUID) files can be generated using FMOD Studio. Available only during mod initialization in init.lua.
ModRegisterMusicBank( filename:string ) |  | Registers a custom bank in the music system. After that the tracks can be configured to play through Biome xml, or using GameTriggerMusicEvent. ModRegisterAudioEventMappings also needs to be called to make the game recognize the events in the bank. Available only during mod initialization in init.lua.
ModDevGenerateSpriteUVsForDirectory( directory_path:string, override_existing:bool = false ) |  | Please supply a path starting with "mods/YOUR_MOD_HERE/" or "data/". If override_existing is true, will always generate new maps, overriding existing files. UV maps are generated when you start or continue a game with your mod enabled. Available only during mod initialization in init.lua via noita_dev.exe
RegisterProjectile( entity_filename:string ) |  |
RegisterGunAction() |  |
RegisterGunShotEffects() |  |
BeginProjectile( entity_filename:string ) |  |
EndProjectile() |  |
BeginTriggerTimer( timeout_frames:int ) |  |
BeginTriggerHitWorld() |  |
BeginTriggerDeath() |  |
EndTrigger() |  |
SetProjectileConfigs() |  |
StartReload( reload_time:int ) |  |
ActionUsesRemainingChanged( inventoryitem_id:int, uses_remaining:int ) | uses_remaining_reduced:bool |
ActionUsed( inventoryitem_id:int ) |  |
LogAction( action_name:string ) |  |
OnActionPlayed( action_id:string ) |  |
OnNotEnoughManaForAction() |  |
BaabInstruction( name:string ) |  |
SetValueNumber( key:string, value:number ) |  |
GetValueNumber( key:string, default_value:number ) | number |
SetValueInteger( key:string, value:int ) |  |
GetValueInteger( key:string, default_value:int ) | int |
SetValueBool( key:string, value:number ) |  |
GetValueBool( key:string, default_value:number ) | bool |
dofile( filename:string ) | (nil|script_return_type)|(nil, error_string) | Returns the script's return value, if any. Returns nil,error_string if the script had errors.
dofile_once( filename:string ) | (nil|script_return_type)|(nil, error_string) | Runs the script only once per lua context, returns the script's return value, if any. Returns nil,error_string if the script had errors. For performance reasons it is recommended scripts use dofile_once(), unless the standard dofile behaviour is required.