Commit graph

111 commits

Author SHA1 Message Date
Erik Ogenvik
0a81e9897f Added a concept of goal "validity".
Calling "is_valid" checks whether the goal actually can be fulfilled.
If it can't be, False is returned.
By default all Goals return True unless a "validity" function is supplied
in the constructor.

For now we only use it for checking whether movement goals can be reached.
2016-06-08 22:03:59 +02:00
Erik Ogenvik
ec857b57e5 Handle movement goals not being reachable.
Though perhaps we should have a more general mechanism for querying
goals about their validity?
2016-06-08 21:46:37 +02:00
Erik Ogenvik
374a691735 Allow destination to be set to another entity.
This only works for entities that share the same domain.
It also allows for entities to follow other entities.
2016-04-03 21:25:39 +02:00
Erik Ogenvik
924ba32982 Added extra goals to some goals.
These are goals that can be injected to run when the parent goal
is fulfilled.
2016-03-30 22:34:44 +02:00
Erik Ogenvik
b5e7861669 Added linger and iterate goals. 2016-03-23 22:23:15 +01:00
Erik Ogenvik
48839bc8e7 Send range on to move_me goal. 2016-03-21 21:50:56 +01:00
Erik Ogenvik
58f3cabb73 Set both location and radius when setting destination. 2016-03-20 22:48:03 +01:00
Erik Ogenvik
fa4eb7bb0b Limit too long distances.
If the character wants to travel too far, we shouldn't try to map the whole
path straight away. Instead we'll cut down on the lenght, and increase the
acceptable radius.
This works since the AI will issue a new destination on its next Tick.
2016-03-19 23:05:13 +01:00
Erik Ogenvik
e76e0fc7ad Skip movement goals that are unreachable.
A goal is considered to be unreachable when all tiles in the awareness area
have been mapped, and no path still could be found.
2016-03-19 23:05:13 +01:00
Erik Ogenvik
c1d0bf48c5 Improved querying of paths. 2016-03-19 23:05:13 +01:00
Erik Ogenvik
7c2ab63fca Dial down logging. 2016-03-19 23:05:13 +01:00
Erik Ogenvik
b683fb3464 Allow for inspection of the path.
Authoring clients can send a Think op, wrapping a Get op with a "path"
attribute to get information about the path. The mind code will then
send back a list of points for the path.
2016-03-19 23:05:13 +01:00
Erik Ogenvik
14354137a7 Hooked up steering to the move_me goal. 2016-03-19 23:05:13 +01:00
Erik Ogenvik
7b0d30680c Setup steering.
The setup is that steering is handled separately from the normal mind
ticks. At a closer interval (0.2 seconds currently) steering will be
evaluated.
2016-03-19 23:05:13 +01:00
Yaroslav Taben
e0e331f08a Changed move_it_outof_me goal to use EntityFilter.
The goal now searches for entities to drop within the
inventory (contains property) of a mind that used
this goal.
2014-09-27 18:30:33 -04:00
Yaroslav Taben
550e6b8db6 Changed accompany goal to use entity filter.
With this change, the goal can still be created focusing on
an entity with specified ID, but it now also supports wider
range of criteria.
2014-08-25 15:08:47 -04:00
Yaroslav Taben
05481fb2e5 Renamed filter to entity_filter in python to avoid a conflict
filter name conflicts with built-in filter method and causes
confusion
2014-08-14 17:09:27 -04:00
Yaroslav Taben
80643d4de6 Changed avoid goal to use Entity Filter. 2014-08-08 21:05:07 -04:00
Yaroslav Taben
bf376578e3 Added use of EntityFilter to hunt and defend goals 2014-08-08 00:30:36 -04:00
Yaroslav Taben
b1d28434a9 Changed implementation of spot_something goal
The goal now requires a single query string instead of a list.
2014-08-05 19:47:23 -04:00
Yaroslav Taben
c13d6b269d Fixed "search" goal 2014-04-30 13:37:57 -04:00
Erik Ogenvik
873e4c7c1c Fix erratic movement in the "roam" goal. 2013-07-31 00:27:44 +02:00
Erik Ogenvik
38580dcfbd Use better param names. 2013-07-17 23:32:36 +02:00
Erik Ogenvik
3b0e191c70 Added goal of spotting in area. 2013-06-29 15:47:17 +02:00
Erik Ogenvik
ddcaeed05c Restrict import. 2013-06-29 15:44:06 +02:00
Erik Ogenvik
313b247213 Added a "move me near" goal.
This goal will move a character close to something, and then keep the
character within a certain distance of this thing.
This is useful when you want the character to get close to something,
but then search for something else within the vicinity.
2013-06-27 21:54:35 +02:00
Erik Ogenvik
0a50c56a2c Don't focus on things we've already discovered.
Also forget these after a while.
This makes sure that this goal doesn't result in the character getting
stuck on one thing. If used with the clear_focus goal the character can
instead move on to other things, and then return to the same thing after
a while after it's "forgotten".
2013-06-27 21:52:48 +02:00
Erik Ogenvik
49420ba35f Added goal for clearing focus.
This is useful when we need to forget our current focus and move on.
2013-06-27 21:49:09 +02:00
Erik Ogenvik
43cab79a97 Take into account size of entity when moving.
Else the NPC would always want to walk into even solid objects.
We should of course also add checks for solid and non-solid entities.
2013-06-16 00:12:05 +02:00
Erik Ogenvik
9ca9e64b7a Added roam goal.
This makes the NPC wander aimlessly within a specified series of
location. This is often more suitable than "wander", as that goal will
make the NPC wander over the whole map, which often isn't what you want.
2013-05-21 21:31:44 +02:00
Erik Ogenvik
af6ca21694 Fixed "wander" goal.
The NPC will now wander randomly. However, this isn't completely
natural. The change in direction is too erratic. And the goal should be
expanded to stay within a certain area.
2013-05-19 22:52:30 +02:00
Erik Ogenvik
6832d54c8d Added extra sanity check. 2013-04-20 17:56:55 +02:00
Erik Ogenvik
34f1544b1a Spelling fixes. 2013-04-05 20:56:55 +02:00
Amey Parulekar
eab877b245 Corrected bugs in code for detecting presence of hook in fish's inventory 2009-08-03 20:44:40 +05:30
Amey Parulekar
e91e37f004 Amble goal will return if a hook is present inside fish 2009-07-29 00:17:22 +05:30
Amey Parulekar
c5f8fec6b1 Created a new branch of master and merged all changes into it 2009-07-10 03:15:53 +05:30
Alistair Riddoch
c2cff84e1f Clean up imports removing deprecated support and obsolete modules. 2009-07-01 14:07:28 +01:00
Alistair Riddoch
531e4f512d Update all scripts to use atlas.Oplist 2009-05-21 16:34:27 +01:00
Alistair Riddoch
6679b1b30f Update all Python scripts to import vector and point from physics 2009-05-20 19:34:01 +01:00
Al Riddoch
9776626954 2008-09-18 Al Riddoch <alriddoch@googlemail.com>
* rulesets/basic/mind/goals/animal/domestic.py,
	  rulesets/basic/mind/goals/animal/herd.py,
	  rulesets/basic/mind/goals/common/misc_goal.py,
	  rulesets/basic/mind/goals/common/trigger.py,
	  rulesets/basic/mind/goals/dynamic/add_unique_goal.py,
	  rulesets/basic/mind/goals/humanoid/construction.py,
	  rulesets/basic/mind/goals/humanoid/fire.py,
	  rulesets/basic/mind/goals/humanoid/mason.py,
	  rulesets/basic/mind/goals/humanoid/transaction.py:
	  Add nominal doc strings to some goal classes.
2008-09-18 00:53:14 +00:00
Al Riddoch
c71d5ef8a5 2008-09-17 Al Riddoch <alriddoch@googlemail.com>
* rulesets/basic/mind/goals/common/move.py: Add nominal doc strings
	  to some goal classes.
2008-09-17 17:46:35 +00:00
Al Riddoch
e5bee108c9 2008-09-17 Al Riddoch <alriddoch@googlemail.com>
* rulesets/basic/mind/goals/common/common.py,
	  rulesets/basic/mind/goals/common/move.py,
	  rulesets/basic/mind/goals/humanoid/build_home.py,
	  rulesets/basic/mind/goals/humanoid/fire.py,
	  rulesets/basic/mind/goals/humanoid/mason.py,
	  rulesets/basic/mind/goals/humanoid/transaction.py:
	  Clean up the way goals are imported so it makes more sense,
	  and doxygen has an easier time with it.
2008-09-17 17:33:30 +00:00
Al Riddoch
07d04e99a3 2008-03-28 Al Riddoch <alriddoch@googlemail.com>
* data/devices.xml: Add a second type of operation to the example
	  device.

	* rulesets/Character.cpp: Sort out the fixme so non-default actions
	  can be specified when actuating devices.

	* rulesets/basic/mind/goals/common/misc_goal.py: Clean up the
	  actuation testing goal.
2008-03-28 02:03:09 +00:00
Al Riddoch
6ab0d6753d 2008-03-28 Al Riddoch <alriddoch@googlemail.com>
* rulesets/basic/mind/goals/common/misc_goal.py: Make the checking
	  for a list simpler. Add a test goal for exercising the device
	  activation interface.

	* rulesets/mason/define_world.py: Add client test method to try
	  out the activation goal.
2008-03-28 01:20:29 +00:00
Al Riddoch
0ee685cf25 2008-03-28 Al Riddoch <alriddoch@googlemail.com>
* rulesets/Py_Location.cpp: Implement the repr() method of the
	  Python object protocol for this wrapper, making debugging easier in
	  scripts.
2008-03-28 01:13:26 +00:00
Al Riddoch
8e9bd398af 2008-01-04 Al Riddoch <alriddoch@googlemail.com>
* rulesets/Python_API.cpp: Remove the server_python flag used to
	  allow scripts to run unmodified on the obsolete python prototype.

	* rulesets/basic/mind/NPCMind.py,
	  rulesets/basic/mind/goals/animal/herd.py,
	  rulesets/basic/mind/goals/common/common.py,
	  rulesets/basic/mind/goals/common/move.py,
	  rulesets/mason/world/objects/buildings/House.py: Remove support
	  for running these scripts on the obsolete python prototype.
2008-01-04 00:45:39 +00:00
Al Riddoch
412e9d6df5 2007-07-06 Al Riddoch <alriddoch@zepler.org>
* rulesets/basic/mind/goals/common/misc_goal.py: Don't use "with"
	  as a variable name as it is about to become a reserved word in
	  Python 2.6.
2007-07-06 00:41:26 +00:00
Al Riddoch
c4c19a3ca9 2007-06-18 Al Riddoch <alriddoch@zepler.org>
* rulesets/basic/mind/goals/common/trigger.py: Generic common trigger
	  goals, starting with a trigger base chase goal.

	* rulesets/basic/mind/goals/animal/domestic.py: Trigger goals specific
	  to domesticated animals, starting with goals for pig herding.

	* rulesets/basic/mind/goals/__init__.py: Add the two new files of
	  trigger goals.

	* rulesets/mason/mind/PigMind.py, rulesets/mason/mind/SkelMind.py,
	  rulesets/mason/mind/WolfMind.py, rulesets/mason/mind/__init__.py:
	  Remove special mind classes for pig, skeleton and wolf, as it
	  should be possible to do it more cleanly with trigger goals.

	* rulesets/mason/define_world.py: Add trigger goals for pig and
	  skeleton to replace the behavior that used to be in special purpose
	  mind classes.
2007-06-18 17:46:14 +00:00
Al Riddoch
127bfd5d92 2007-04-24 Al Riddoch <alriddoch@zepler.org>
* rulesets/basic/mind/goals/common/misc_goal.py,
	  rulesets/basic/mind/goals/common/move.py,
	  rulesets/basic/mind/goals/humanoid/construction.py,
	  rulesets/mason/define_world.py: Fix most goals so they no longer
	  require a reference to the owning mind object on initialisation,
	  meaning they are now more stateless.
2007-04-23 23:42:38 +00:00
Al Riddoch
d43e7f2bb4 2007-04-22 Al Riddoch <alriddoch@zepler.org>
* rulesets/basic/mind/goals/common/move.py: Expire the accompany goal
	  used by mercenaries when the person they are working for no longer
	  exists.
2007-04-22 21:54:00 +00:00