Built-in AI packages
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) |