Commit graph

1012 commits

Author SHA1 Message Date
mattsc
a333b9a5b7 High XP Attack CA: correctly deal with hidden and petrified units 2016-10-17 17:59:03 -07:00
mattsc
d99ee0fc88 Lurkers MAI test scenario: keep side leaders hidden after reload 2016-10-17 17:59:02 -07:00
mattsc
ba6973f543 High XP Attack CA test scenario: use new syntax for [option] 2016-10-17 17:59:02 -07:00
Celtic Minstrel
e81131fcc5 Add deprecation messages for old AI aspect fetchers
This commit also updates uses of these fetchers in mainline Lua code.
2016-10-17 14:24:51 -04:00
Gregory A Lundberg
fc6774289e Upgrade deprecated Lua
loadstring was removed, load does the same thing.
atan2 was remvoed, atan works instead
2016-10-17 10:34:43 -05:00
mattsc
b302289402 Micro AIs: correctly deal with hidden and petrified enemies
Previously, the Micro AI behavior was inconsistent at best when it came
to dealing with these units and could even result in AI errors when an
AI unit was ambushed or a petrified unit was in the way of a move. Now,
both types of units are properly "ignored" and the AI moves have been
made robust against unexpected events such as ambushes. Incidentally,
the latter also makes the AI more robust against WML events doing
things the AI cannot know about (such as removing units).
2016-10-16 19:59:19 -07:00
mattsc
2c2f79545e Assassin Micro AI: remove unused parameters from function calls 2016-10-12 15:17:11 -07:00
mattsc
5770fa74f0 ai_helper: check variable type when viewing_side is required parameter
This is done because the code will not complain but silently produce
non-sensical results if, for example, the filter is passed as the first
argument to get_visible_units().
2016-10-12 07:42:33 -07:00
mattsc
7834b25b57 Forest Animals Micro AI: move only one unit per execution
There is essentially no time saving involved with doing it all in one
execution as all tables need to be reevaluated for each unit anyway in
order to adapt to potential changes due to ambushes or WML events. (The
latter is not all done yet, will be added in a follow-up commit.)
2016-10-11 10:11:01 -07:00
mattsc
3d2fd331d3 Hunter Micro AI: goto hex must be passable for hunter 2016-10-10 17:13:13 -07:00
mattsc
2eeed5ad35 Big Animals Micro AI: move only one unit per execution
There is essentially no time saving involved with doing it all in one
execution as all tables need to be reevaluated for each unit anyway in
order to adapt to potential changes due to ambushes or WML events. (The
latter is not all done yet, will be added in a follow-up commit.)
2016-10-10 17:13:13 -07:00
mattsc
c91a65dde4 ai_helper check unit functions: also check if unit exists 2016-10-10 07:43:38 -07:00
mattsc
f28d4336bf ai_helper.move_unit_out_of_way: normalize dx/dy here
Instead of making it a requirement that they should be normalized by
the calling function.
2016-10-09 14:25:15 -07:00
mattsc
1a5e9051a8 ai_helper: correctly and consistently deal with invisible units
Previously, some functions saw invisible units, while others did not.
Moreover, this behavior could be triggered on and off for some
functions, but not for others, and the parameter to do so was not the
same in all cases.

Now, the default setting for all ai_helper functions is to ignore
invisible units and this can be turned on and off with the same
parameter, viewing_side, with the same syntax and meaning as for the
built-in functions wesnoth.find_path() and wesnoth.find_reach(). This
means hat it can be passed directly between those functions and all the
ai_helper functions.
2016-10-09 08:51:13 -07:00
mattsc
8ad055e77f ai_helper: remove double spaces after punctuation 2016-10-05 19:30:47 -07:00
mattsc
e65a460342 ai_helper: add E_FAILED_TELEPORT to list of non-fatal move errors 2016-10-05 19:28:52 -07:00
mattsc
75817d3ba4 ai_helper: new function robust_move_and_attack() 2016-10-05 19:19:25 -07:00
mattsc
e38dd8ff16 ai_helper: new utility functions to find attackable enemies
Attackable enemies are defined as visible (can’t attack it if I can’t
see it) and not petrified.

This is in preparation for making the Micro AIs deal correctly with
hidden and petrified enemies.
2016-10-04 17:17:16 -07:00
mattsc
b00e6d5d96 ai_helper.LS_to_triples: fix function name
For consistency with LS_of_triples.
2016-10-04 17:17:16 -07:00
mattsc
52826a3824 High XP attack CA: do not try to attack petrified enemies 2016-10-02 09:13:54 -07:00
mattsc
371b9b67ec Lua AI helper functions: remove attacks/moves on failed action
If this is not done, there are some rare cases in which a Lua AI might
get caught in an infinite loop by trying the same failed action over
and over again.
2016-10-02 09:13:54 -07:00
mattsc
3d0c29b7fc Experimental AI: do not let AI try to recruit on fogged/shrouded hexes
The engine will refuse to recruit on shrouded hexes, which will result
in part or all of the rest of the AI actions to be disabled.  Fogged
hexes may cause problems also if there is an enemy unit on them.

This fixes at least part of bug #25112.
2016-09-24 19:17:39 -07:00
mattsc
20a8a2f456 High XP attack CA: fix rare case of AI choosing wrong weapon
Because the attack simulation during CA evaluation is done with enemy
XP set to zero, the AI previously sometimes chose a different weapon
during execution than what was used for evaluation. This resulted, for
example, in archers sometimes attacking an enemy without ranged attacks
with their melee attack when aggression=1.
2016-09-23 08:32:34 -07:00
mattsc
d3a3825a26 High XP attack CA: don't attack hidden enemies 2016-09-23 07:54:29 -07:00
mattsc
0e87d7fd43 High XP attack CA: respect the default 'avoid' aspect 2016-09-17 16:41:41 -07:00
mattsc
b84ec9f775 Micro AIs: fix attacks aspect setup when ca_id= key not given
This is an optional key of the [micro_ai] tag.
2016-09-17 08:33:55 -07:00
mattsc
c03bd5411f Various Lua AI code: use simpler and faster new syntax
No change in behavior.
2016-09-04 18:54:26 -07:00
mattsc
d781e6263a High XP attacks: adapt other AIs to existence of new CA
This means:
1. Adding the new CA to AI configs
2. Removing it whenever the combat CA is removed
3. Preventing conflicts for AIs that previously used overlapping scores
2016-09-03 20:00:12 -07:00
mattsc
f76e2d0c59 High XP attack CA: remove a debug message
Also remove a related message from the test scenario.
2016-09-03 16:47:15 -07:00
mattsc
390d1fdc10 High XP CA: simplify attack conditions with 1.13 syntax 2016-09-03 07:03:00 -07:00
mattsc
6950ee1dd0 New high_xp_attack candidate action for default AI
This CA performs attacks on enemy units so close to leveling that the
default AI's combat CA would not attack them (with some exceptions).
This is meant to keep players from being able to exploit this known
weakness of the default AI.
2016-09-02 20:22:17 -07:00
mattsc
f7d9d747c0 New Micro AI: Assassin Squad AI 2016-09-01 14:41:17 -07:00
fendrin
8eea8122f9 Replace FOREACH 2016-08-06 06:20:41 +02:00
Celtic Minstrel
95c4556a59 fai -> wfl in FormulaAI files 2016-07-29 12:52:10 -04:00
mattsc
3f2df87bed Recruit rushers AIs: adapt syntax to recent AI changes
This caused an error message and recruiting to be abandoned when the
recruit rushers Micro AI was used for two different sides in the same
scenario.  It was only presents since the AI refactoring done during
1.13.4+dev and did not affect any release.
2016-07-27 19:58:22 -07:00
Celtic Minstrel
232709ea57 A few Micro AI tweaks
- For MAIs using aspects, make the facet ID more unique
- Only shallow-preparse the [micro_ai], rather than fully preparsing it
  (This is so that filters in Micro AIs can use $this_unit if needed)
2016-07-15 16:15:44 -04:00
Celtic Minstrel
01d3156d47 Micro AIs: Fix not properly deleting aspects
(This affects the Protect and Wolves MAIs)
2016-07-15 16:07:22 -04:00
Celtic Minstrel
21e79b5f6a Protect Micro AI: Fix missing aspect ID 2016-07-15 15:50:24 -04:00
mattsc
20b07c6379 Micro AIs: internal changes to AI and CA ID handling
This is needed to fix some corner cases of multiple Micro AI changes
during a scenario, such as for the bats in the Goto test scenario.
2016-04-02 07:54:57 -07:00
mattsc
91130a3df2 Fix error in Formula AI test scenario 2016-03-30 07:33:37 -07:00
Celtic Minstrel
74ce7454d9 Random Recruit MAI test: Add second [probability] tag 2016-03-30 01:04:44 -04:00
Celtic Minstrel
85a498ba15 Fast MAI: Correctly honour the attacks aspect if set 2016-03-30 01:04:42 -04:00
Celtic Minstrel
7c5c79aa20 Update all FormulaAI scripts for renamed keys
Also, note the changes in the changelog and RN
2016-03-29 13:04:21 -04:00
mattsc
ff11fecfe3 Guardians MAI test scenario: update portrait paths 2016-03-28 17:42:50 -07:00
Celtic Minstrel
c8b47e48a1 Simple Attack MAI: Fix filters being ignored 2016-03-28 14:59:38 -04:00
Celtic Minstrel
d4104e01c5 Rush Recruit MAI: Pass requested CA score to recruit engine 2016-03-28 14:58:53 -04:00
Celtic Minstrel
32c3abbbaf Micro AIs: Distinguish attribute and tag parameters and copy all of the latter
(Though currently only Protect Unit and Random Recruiting actually honour multiples of any tag.)
2016-03-28 12:54:25 -04:00
mattsc
c82ae94ae9 Random Recruiting Micro AI: fix [probability] tag 2016-03-28 07:22:52 -07:00
mattsc
1e3d80df0b Micro AI tests: do not change controller to null for active side 2016-03-27 20:39:02 -07:00
mattsc
9ed1b39b90 Random Recruiting MAI: use require() instead of dofile() 2016-03-27 20:39:02 -07:00