Built-in AI packages

OpenMW version: 0.49.0
core.API_REVISION: 62 *

Starting an AI package

There are two ways to start AI package:

-- from local script add package to self
local AI = require('openmw.interfaces').AI
AI.startPackage(options)

-- via event to any actor
actor:sendEvent('StartAIPackage', options)

options is Lua table with arguments of the AI package.

Common arguments that can be used with any AI package

name type description
type string [required] the name of the package (see packages listed below)
cancelOther boolean [default=true] whether to cancel all other AI packages

Combat

Attack another actor.

Arguments

name type description
target GameObject [required] the actor to attack

Examples

-- from local script add package to self
local AI = require('openmw.interfaces').AI
AI.startPackage({type='Combat', target=anotherActor})

-- via event to any actor
actor:sendEvent('StartAIPackage', {type='Combat', target=anotherActor})

Pursue

Pursue another actor.

Arguments

name type description
target GameObject [required] the actor to pursue

Follow

Follow another actor.

Arguments

name type description
target GameObject [required] the actor to follow
destCell Cell [optional] the destination cell
duration number [optional] duration in game time (will be rounded up to the next hour)
destPosition 3d vector [optional] the destination point
isRepeat boolean [optional] Will the package repeat (true or false)

Escort

Escort another actor to the given location.

Arguments

name type description
target GameObject [required] the actor to follow
destPosition 3d vector [required] the destination point
destCell Cell [optional] the destination cell
duration number [optional] duration in game time (will be rounded up to the next hour)
isRepeat boolean [optional] Will the package repeat (true or false)

Example

actor:sendEvent('StartAIPackage', {
    type = 'Escort',
    target = object.self,
    destPosition = util.vector3(x, y, z),
    duration = 3 * time.hour,
    isRepeat = true
})

Wander

Wander nearby current position.

Arguments

name type description
distance float [default=0] the actor to follow
duration number [optional] duration in game time (will be rounded up to the next hour)
idle table [optional] Idle chance values, up to 8
isRepeat boolean [optional] Will the package repeat (true or false)

Example

local idleTable = {
    idle2 = 60,
    idle3 = 50,
    idle4 = 40,
    idle5 = 30,
    idle6 = 20,
    idle7 = 10,
    idle8 = 0,
    idle9 = 25
}
actor:sendEvent('StartAIPackage', {
    type = 'Wander',
    distance = 5000,
    duration = 5 * time.hour,
    idle = idleTable,
    isRepeat = true
})

Travel

Go to given location.

Arguments

name type description
destPosition 3d vector [required] the point to travel to
isRepeat boolean [optional] Will the package repeat (true or false)