mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-06 09:55:35 +00:00
178 lines
3.1 KiB
ReStructuredText
178 lines
3.1 KiB
ReStructuredText
Built-in AI packages
|
|
====================
|
|
|
|
Starting an AI package
|
|
----------------------
|
|
|
|
There are two ways to start AI package:
|
|
|
|
.. code-block:: Lua
|
|
|
|
-- 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**
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
:widths: 20 20 60
|
|
|
|
* - 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**
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
:widths: 20 20 60
|
|
|
|
* - name
|
|
- type
|
|
- description
|
|
* - target
|
|
- `GameObject <openmw_core.html##(GameObject)>`_ [required]
|
|
- the actor to attack
|
|
|
|
**Examples**
|
|
|
|
.. code-block:: Lua
|
|
|
|
-- 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**
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
:widths: 20 20 60
|
|
|
|
* - name
|
|
- type
|
|
- description
|
|
* - target
|
|
- `GameObject <openmw_core.html##(GameObject)>`_ [required]
|
|
- the actor to pursue
|
|
|
|
Follow
|
|
------
|
|
|
|
Follow another actor.
|
|
|
|
**Arguments**
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
:widths: 20 20 60
|
|
|
|
* - name
|
|
- type
|
|
- description
|
|
* - target
|
|
- `GameObject <openmw_core.html##(GameObject)>`_ [required]
|
|
- the actor to follow
|
|
|
|
Escort
|
|
------
|
|
|
|
Escort another actor to the given location.
|
|
|
|
**Arguments**
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
:widths: 20 20 60
|
|
|
|
* - name
|
|
- type
|
|
- description
|
|
* - target
|
|
- `GameObject <openmw_core.html##(GameObject)>`_ [required]
|
|
- the actor to follow
|
|
* - destPosition
|
|
- `3d vector <openmw_util.html##(Vector3)>`_ [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)
|
|
|
|
**Example**
|
|
|
|
.. code-block:: Lua
|
|
|
|
actor:sendEvent('StartAIPackage', {
|
|
type = 'Escort',
|
|
target = object.self,
|
|
destPosition = util.vector3(x, y, z),
|
|
duration = 3 * time.hour,
|
|
})
|
|
|
|
Wander
|
|
------
|
|
|
|
Wander nearby current position.
|
|
|
|
**Arguments**
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
:widths: 20 20 60
|
|
|
|
* - 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)
|
|
|
|
Travel
|
|
------
|
|
|
|
Go to given location.
|
|
|
|
**Arguments**
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
:widths: 20 20 60
|
|
|
|
* - name
|
|
- type
|
|
- description
|
|
* - destPosition
|
|
- `3d vector <openmw_util.html##(Vector3)>`_ [required]
|
|
- the point to travel to
|
|
|