Skip to content

Lua hooks

The game calls these function names on the script table returned by LuaScriptPath during gameplay. Override the ones you need on a table 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()
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
animationCompleted HeldItem:animationCompleted(monster, animationName)
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, hitLocation)
performAction HeldItem:performAction(actionIndex)
performActionNetworked HeldItem:performActionNetworked(actionIndex)
primaryAttackEnd HeldItem:primaryAttackEnd()
primaryAttackStart HeldItem:primaryAttackStart()
primaryAttackUpdate HeldItem:primaryAttackUpdate()
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(monster, animationName)
equip MeleeWeapon:equip()
hitBlock MeleeWeapon:hitBlock(monster)
hitCreature MeleeWeapon:hitCreature(monster)
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, velocityAtImpact)
hitCreature Projectile:hitCreature(creature, collisionPoint)
initialize Projectile:initialize()
start Projectile:start()
update Projectile:update()

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

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

Generated 2026-08-14T18:38:10.4882241Z · b67bc26a · 9 base classes.

Official modding overview · Signs of Life on Steam