Skip to content

Lua hooks

These base tables define gameplay callbacks and script helpers. The runtime callback names and argument counts are checked against C# call sites. Override the functions you need on a table returned by LuaScriptPath that inherits the matching base class (require("Content/Lua/HeldItem"), etc.).

Armor

Source: Content/Lua/Armor.lua.

Hook Signature
equip Armor:equip()
initialize Armor:initialize()
unequip Armor:unequip()
updateWhileEquipped Armor:updateWhileEquipped(gameTime)

Creature

Source: Content/Lua/Creature.lua.

Hook Signature
animationCompleted Creature:animationCompleted(animationName)
damaged Creature:damaged(damage, collisionPoint)
damagedByEntity Creature:damagedByEntity(entity)
die Creature:die()
initialize Creature:initialize()
keyframeTriggerEvent Creature:keyframeTriggerEvent(triggerString)
removedFromWorld Creature:removedFromWorld()
update Creature:update(gameTime)

Flora

Source: Content/Lua/Flora.lua.

Hook Signature
addedToWorld Flora:addedToWorld()
damaged Flora:damaged(damage)
initialize Flora:initialize()
removedFromWorld Flora:removedFromWorld()
trunkBreak Flora:trunkBreak()
update Flora:update()

HeldItem

Source: Content/Lua/HeldItem.lua.

Hook Signature
abilityEnd HeldItem:abilityEnd()
abilityStart HeldItem:abilityStart()
abilityUpdate HeldItem:abilityUpdate(gameTime)
animationCompleted HeldItem:animationCompleted(animationName)
drawEffect HeldItem:drawEffect()
equip HeldItem:equip()
hitBlock HeldItem:hitBlock(tileX, tileY, hitLocation, velocityAtImpact)
hitCreature HeldItem:hitCreature(creature, hitLocation)
holsterStart HeldItem:holsterStart()
initialize HeldItem:initialize()
keyframeTriggerEvent HeldItem:keyframeTriggerEvent(triggerString)
meleeAttackEnd HeldItem:meleeAttackEnd()
meleeAttackStart HeldItem:meleeAttackStart()
meleeAttackUpdate HeldItem:meleeAttackUpdate()
meleeStruckBlock HeldItem:meleeStruckBlock(tileX, tileY, hitLocation)
meleeStruckDeposit HeldItem:meleeStruckDeposit(deposit)
performAction HeldItem:performAction(actionIndex)
performActionNetworked HeldItem:performActionNetworked(actionIndex)
primaryAttackEnd HeldItem:primaryAttackEnd()
primaryAttackStart HeldItem:primaryAttackStart()
primaryAttackUpdate HeldItem:primaryAttackUpdate(gameTime)
projectTrajectory HeldItem:projectTrajectory()
reloadEnd HeldItem:reloadEnd()
reloadStart HeldItem:reloadStart()
reloadUpdate HeldItem:reloadUpdate()
removedFromWorld HeldItem:removedFromWorld()
secondaryAttackEnd HeldItem:secondaryAttackEnd()
secondaryAttackStart HeldItem:secondaryAttackStart()
secondaryAttackUpdate HeldItem:secondaryAttackUpdate()
start HeldItem:start()
unequip HeldItem:unequip()
updateInWorld HeldItem:updateInWorld(gameTime)
updateWhileEquipped HeldItem:updateWhileEquipped(gameTime)

MeleeWeapon

Source: Content/Lua/MeleeWeapon.lua.

Hook Signature
animationCompleted MeleeWeapon:animationCompleted(animationName)
equip MeleeWeapon:equip()
hitBlock MeleeWeapon:hitBlock(tileX, tileY, hitLocation)
hitCreature MeleeWeapon:hitCreature(creature, hitLocation)
initialize MeleeWeapon:initialize()
keyframeTriggerEvent MeleeWeapon:keyframeTriggerEvent(triggerString)
primaryAttackEnd MeleeWeapon:primaryAttackEnd()
primaryAttackStart MeleeWeapon:primaryAttackStart()
primaryAttackUpdate MeleeWeapon:primaryAttackUpdate()
secondaryAttackEnd MeleeWeapon:secondaryAttackEnd()
secondaryAttackStart MeleeWeapon:secondaryAttackStart()
secondaryAttackUpdate MeleeWeapon:secondaryAttackUpdate()
start MeleeWeapon:start()
unequip MeleeWeapon:unequip()
updateWhileEquipped MeleeWeapon:updateWhileEquipped()

Projectile

Source: Content/Lua/Projectile.lua.

Hook Signature
hitBlock Projectile:hitBlock(tileLocX, tileLocY, collisionPoint)
hitCreature Projectile:hitCreature(creature, collisionPoint)
initialize Projectile:initialize()
start Projectile:start()
update Projectile:update(gameTime)

StatusEffect

Source: Content/Lua/StatusEffect.lua.

Hook Signature
applyEffect StatusEffect:applyEffect(entity, duration, intensity)
initialize StatusEffect:initialize()

Structure

Source: Content/Lua/Structure.lua.

Hook Signature
animationComplete Structure:animationComplete(triggerString)
damagedBone Structure:damagedBone(boneName, damageAmount)
getState Structure:getState()
initialize Structure:initialize()
isAtPoint Structure:isAtPoint(globalPoint)
keyframeTriggerEvent Structure:keyframeTriggerEvent(triggerString)
receivedMessage Structure:receivedMessage(message)
setState Structure:setState(newState)
use Structure:use(player)

Throwable

Source: Content/Lua/Throwable.lua.

Hook Signature
hitBlock Throwable:hitBlock(tileX, tileY, hitLocation, velocityAtImpact)
hitEntity Throwable:hitEntity(entity)
initialize Throwable:initialize()
removedFromWorld Throwable:removedFromWorld()
updateInWorld Throwable:updateInWorld(gameTime)

Generated 2026-10-02T21:05:27.5090099Z · b8c9ae78 · 9 base classes.

Official modding overview · Signs of Life on Steam