The Battle for Wesnoth  1.19.7+dev
registry.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2009 - 2024
3  by Yurii Chernyi <terraninfo@terraninfo.net>
4  Part of the Battle for Wesnoth Project https://www.wesnoth.org/
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY.
12 
13  See the COPYING file for more details.
14 */
15 
16 /**
17  * All known c++ AI parts. Workaround to a linker feature of not including all symbols from files, and including only actually referenced stuff. this is not good for 'static registry' pattern. (other workarounds such as --whole-archive for ld are possible, but require messing with all buildsystems)
18  * @file
19  */
20 
21 #include "ai/registry.hpp"
22 
23 #include "config.hpp" // for config, operator<<
24 #include "terrain/filter.hpp" // for terrain_filter
25 #include "ai/composite/engine.hpp" // for register_engine_factory
26 #include "ai/composite/stage.hpp" // for ministage, idle_stage, etc
27 #include "ai/composite/rca.hpp"
28 #include "ai/game_info.hpp" // for attacks_vector
29 #include "ai/composite/aspect.hpp" // for composite_aspect, etc
30 #include "ai/default/engine_cpp.hpp" // for engine_cpp
31 #include "ai/formula/engine_fai.hpp" // for engine_fai
32 #include "ai/lua/engine_lua.hpp" // for engine_lua
33 #include "ai/composite/goal.hpp" // for register_goal_factory, etc
35 #include "ai/default/recruitment.hpp" // for recruitment
36 #include "ai/default/aspect_attacks.hpp" // for aspect_attacks
37 #include "ai/default/ca.hpp" // for leader_shares_keep_phase, etc
39 #include "ai/default/stage_rca.hpp"
40 
41 #include <string> // for string
42 #include <vector> // for vector
43 
44 
45 namespace ai {
46 // =======================================================================
47 // Engines
48 // =======================================================================
49 
50 static register_engine_factory<engine_cpp>
52 
55 
58 
59 // =======================================================================
60 // Stages
61 // =======================================================================
62 
64  candidate_action_evaluation_loop_factory("ai_default_rca::candidate_action_evaluation_loop");
65 
68 
69 // === Also keep the old syntax ===
71  old_candidate_action_evaluation_loop_factory("testing_ai_default::candidate_action_evaluation_loop");
72 
73 // =======================================================================
74 // Candidate actions
75 // =======================================================================
76 
78  goto_phase_factory("ai_default_rca::goto_phase");
79 
81  combat_phase_factory("ai_default_rca::combat_phase");
82 
84  move_leader_to_goals_phase_factory("ai_default_rca::move_leader_to_goals_phase");
85 
87  move_leader_to_keep_phase_factory("ai_default_rca::move_leader_to_keep_phase");
88 
90  get_villages_phase_factory("ai_default_rca::get_villages_phase");
91 
93  get_healing_phase_factory("ai_default_rca::get_healing_phase");
94 
96  retreat_phase_factory("ai_default_rca::retreat_phase");
97 
99  default_move_to_targets_phase_factory("ai_default_rca::move_to_targets_phase");
100 
102  leader_control_phase_factory("ai_default_rca::leader_control_phase");
103 
105  leader_shares_keep_phase_factory("ai_default_rca::leader_shares_keep_phase");
106 
107 //Also keep passive_leader_shares_keep_phase for backward compatibility
109  passive_leader_shares_keep_phase_factory("ai_default_rca::passive_leader_shares_keep_phase");
110 
112  default_recruitment_factory("default_recruitment::recruitment");
113 
114 // === Also keep the old syntax ===
116  old_goto_phase_factory("testing_ai_default::goto_phase");
117 
119  old_combat_phase_factory("testing_ai_default::combat_phase");
120 
122  old_move_leader_to_goals_phase_factory("testing_ai_default::move_leader_to_goals_phase");
123 
125  old_move_leader_to_keep_phase_factory("testing_ai_default::move_leader_to_keep_phase");
126 
128  old_get_villages_phase_factory("testing_ai_default::get_villages_phase");
129 
131  old_get_healing_phase_factory("testing_ai_default::get_healing_phase");
132 
134  old_retreat_phase_factory("testing_ai_default::retreat_phase");
135 
137  old_default_move_to_targets_phase_factory("testing_ai_default::default_move_to_targets_phase");
138 
140  old_testing_move_to_targets_phase_factory("testing_ai_default::testing_move_to_targets_phase");
141 
143  old_leader_control_phase_factory("testing_ai_default::leader_control_phase");
144 
146  old_passive_leader_shares_keep_phase_factory("testing_ai_default::passive_leader_shares_keep_phase");
147 
148 // =======================================================================
149 // Goals
150 // =======================================================================
151 
154 
155 
158 
159 
161  goal_factory_target_unit("target_unit");
162 
163 
165  goal_factory_target_location("target_location");
166 
167 
169  goal_factory_protect_location("protect_location");
170 
171 
173  goal_factory_protect_unit("protect_unit");
174 
177 
178 
179 // =======================================================================
180 // Aspects
181 // =======================================================================
182 
183 //name=composite_aspect
184 
186  advancements__composite_aspect_factory("advancements*composite_aspect");
187 
189  aggression__composite_aspect_factory("aggression*composite_aspect");
190 
192  allow_ally_villages__composite_aspect_factory("allow_ally_villages*composite_aspect");
193 
195  attacks__composite_aspect_factory("attacks*composite_aspect");
196 
198  avoid__composite_aspect_factory("avoid*composite_aspect");
199 
201  caution__composite_aspect_factory("caution*composite_aspect");
202 
204  grouping__composite_aspect_factory("grouping*composite_aspect");
205 
207  leader_aggression__composite_aspect_factory("leader_aggression*composite_aspect");
208 
210  leader_goal__composite_aspect_factory("leader_goal*composite_aspect");
211 
213  leader_igores_keep__composite_aspect_factory("leader_ignores_keep*composite_aspect");
214 
216  leader_value__composite_aspect_factory("leader_value*composite_aspect");
217 
219  passive_leader__composite_aspect_factory("passive_leader*composite_aspect");
220 
222  passive_leader_shares_keep__composite_aspect_factory("passive_leader_shares_keep*composite_aspect");
223 
225  recruitment_diversity__composite_aspect_factory("recruitment_diversity*composite_aspect");
226 
228  recruitment_instructions__composite_aspect_factory("recruitment_instructions*composite_aspect");
229 
231  recruitment_more__composite_aspect_factory("recruitment_more*composite_aspect");
232 
234  recruitment_pattern__composite_aspect_factory("recruitment_pattern*composite_aspect");
235 
237  recruitment_randomness__composite_aspect_factory("recruitment_randomness*composite_aspect");
238 
240  recruitment_save_gold__composite_aspect_factory("recruitment_save_gold*composite_aspect");
241 
243  retreat_enemy_weight__composite_aspect_factory("retreat_enemy_weight*composite_aspect");
244 
246  retreat_factor__composite_aspect_factory("retreat_factor*composite_aspect");
247 
249  scout_village_targeting__composite_aspect_factory("scout_village_targeting*composite_aspect");
250 
252  simple_targeting__composite_aspect_factory("simple_targeting*composite_aspect");
253 
255  support_villages__composite_aspect_factory("support_villages*composite_aspect");
256 
258  village_value__composite_aspect_factory("village_value*composite_aspect");
259 
261  villages_per_scout__composite_aspect_factory("villages_per_scout*composite_aspect");
262 
263 
264 //name=standard_aspect
266  advancements__standard_aspect_factory("advancements*standard_aspect");
267 
269  aggression__standard_aspect_factory("aggression*standard_aspect");
270 
272  allow_ally_villages__standard_aspect_factory("allow_ally_villages*standard_aspect");
273 
275  attacks__testing_ai_default_aspect_attacks_factory("attacks*ai_default_rca::aspect_attacks");
276 
278  avoid__standard_aspect_factory("avoid*standard_aspect");
279 
281  caution__standard_aspect_factory("caution*standard_aspect");
282 
284  grouping__standard_aspect_factory("grouping*standard_aspect");
285 
287  leader_aggression__standard_aspect_factory("leader_aggression*standard_aspect");
288 
290  leader_goal__standard_aspect_factory("leader_goal*standard_aspect");
291 
293  leader_ignores_keep__standard_aspect_factory("leader_ignores_keep*standard_aspect");
294 
296  leader_value__standard_aspect_factory("leader_value*standard_aspect");
297 
299  passive_leader__standard_aspect_factory("passive_leader*standard_aspect");
300 
302  passive_leader_shares_keep__standard_aspect_factory("passive_leader_shares_keep*standard_aspect");
303 
305  recruitment_diversity__standard_aspect_factory("recruitment_diversity*standard_aspect");
306 
308  recruitment_instructions__standard_aspect_factory("recruitment_instructions*standard_aspect");
309 
311  recruitment_more__standard_aspect_factory("recruitment_more*standard_aspect");
312 
314  recruitment_pattern__standard_aspect_factory("recruitment_pattern*standard_aspect");
315 
317  recruitment_randomness__standard_aspect_factory("recruitment_randomness*standard_aspect");
318 
320  recruitment_save_gold__standard_aspect_factory("recruitment_save_gold*standard_aspect");
321 
323  retreat_enemy_weight__standard_aspect_factory("retreat_enemy_weight*standard_aspect");
324 
326  retreat_factor__standard_aspect_factory("retreat_factor*standard_aspect");
327 
329  scout_village_targeting__standard_aspect_factory("scout_village_targeting*standard_aspect");
330 
332  simple_targeting__standard_aspect_factory("simple_targeting*standard_aspect");
333 
335  support_villages__standard_aspect_factory("support_villages*standard_aspect");
336 
338  village_value__standard_aspect_factory("village_value*standard_aspect");
339 
341  villages_per_scout__standard_aspect_factory("villages_per_scout*standard_aspect");
342 
343 
344 // Also keep the old syntax
346  old_attacks__testing_ai_default_aspect_attacks_factory("attacks*testing_ai_default::aspect_attacks");
347 
348 //name = default
351 
354 
357 
360 
363 
366 
369 
372 
375 
378 
381 
384 
387 
390 
393 
396 
399 
402 
405 
408 
411 
414 
417 
420 
423 
426 
427 
428 //name = lua
430  advancements__lua_aspect_factory("advancements*lua_aspect");
431 
433  aggression__lua_aspect_factory("aggression*lua_aspect");
434 
436  allow_ally_villages__lua_aspect_factory("allow_ally_villages*lua_aspect");
437 
439  attacks__lua_aspect_factory("attacks*lua_aspect");
440 
442  avoid__lua_aspect_factory("avoid*lua_aspect");
443 
445  caution__lua_aspect_factory("caution*lua_aspect");
446 
448  grouping__lua_aspect_factory("grouping*lua_aspect");
449 
451  leader_aggression__lua_aspect_factory("leader_aggression*lua_aspect");
452 
454  leader_goal__lua_aspect_factory("leader_goal*lua_aspect");
455 
457  leader_ignores_keep__lua_aspect_factory("leader_ignores_keep*lua_aspect");
458 
460  leader_value__lua_aspect_factory("leader_value*lua_aspect");
461 
463  passive_leader__lua_aspect_factory("passive_leader*lua_aspect");
464 
466  passive_leader_shares_keep__lua_aspect_factory("passive_leader_shares_keep*lua_aspect");
467 
469  retreat_enemy_weight__lua_aspect_factory("retreat_enemy_weight*lua_aspect");
470 
472  retreat_factor__lua_aspect_factory("retreat_factor*lua_aspect");
473 
475  scout_village_targeting__lua_aspect_factory("scout_village_targeting*lua_aspect");
476 
478  simple_targeting__lua_aspect_factory("simple_targeting*lua_aspect");
479 
481  support_villages__lua_aspect_factory("support_villages*lua_aspect");
482 
484  village_value__lua_aspect_factory("village_value*lua_aspect");
485 
487  villages_per_scout__lua_aspect_factory("villages_per_scout*lua_aspect");
488 
490  recruitment_pattern__lua_aspect_factory("recruitment_pattern*lua_aspect");
491 
492 
493 // Some compatibility - recruitment is a removed aspect, but its syntax
494 // is compatible with recruitment_instructions
496  recruitments__composite_aspect_factory("recruitment*composite_aspect");
497 
499  recruitment__standard_aspect_factory("recruitment*standard_aspect");
500 
503 
505 {
506 }
507 
508 } //end of namespace ai
Aspect: attacks.
Default AI (Testing)
Strategic movement routine, for experimentation.
Definitions for the interface to Wesnoth Markup Language (WML).
AI Support engine - creating specific ai components from config.
CPP AI Support engine - creating specific ai components from config.
FAI AI Support engine - creating specific ai components from config.
LUA AI Support engine - creating specific ai components from config.
Game information for the AI.
void init()
Definition: registry.cpp:504
A small explanation about what's going on here: Each action has access to two game_info objects First...
Definition: actions.cpp:59
static register_aspect_factory< standard_aspect< int > > villages_per_scout__standard_aspect_factory("villages_per_scout*standard_aspect")
static register_lua_aspect_factory< lua_aspect< double > > scout_village_targeting__lua_aspect_factory("scout_village_targeting*lua_aspect")
static register_lua_aspect_factory< lua_aspect< double > > retreat_factor__lua_aspect_factory("retreat_factor*lua_aspect")
static register_lua_aspect_factory< lua_aspect< int > > villages_per_scout__lua_aspect_factory("villages_per_scout*lua_aspect")
static register_candidate_action_factory< ai_default_rca::move_leader_to_goals_phase > move_leader_to_goals_phase_factory("ai_default_rca::move_leader_to_goals_phase")
static register_candidate_action_factory< ai_default_rca::leader_control_phase > leader_control_phase_factory("ai_default_rca::leader_control_phase")
static register_aspect_factory< standard_aspect< double > > retreat_factor__standard_aspect_factory2("retreat_factor*")
static register_lua_aspect_factory< lua_aspect< double > > aggression__lua_aspect_factory("aggression*lua_aspect")
static register_engine_factory< engine_fai > composite_ai_factory_fai("fai")
static register_aspect_factory< standard_aspect< double > > aggression__standard_aspect_factory2("aggression*")
static register_aspect_factory< standard_aspect< double > > caution__standard_aspect_factory("caution*standard_aspect")
static register_aspect_factory< standard_aspect< double > > village_value__standard_aspect_factory2("village_value*")
static register_lua_aspect_factory< lua_aspect< unit_advancements_aspect > > advancements__lua_aspect_factory("advancements*lua_aspect")
static register_aspect_factory< standard_aspect< double > > leader_aggression__standard_aspect_factory2("leader_aggression*")
static register_aspect_factory< composite_aspect< double > > caution__composite_aspect_factory("caution*composite_aspect")
static register_goal_factory< protect_location_goal > goal_factory_protect_location("protect_location")
static register_aspect_factory< standard_aspect< int > > recruitment_randomness__standard_aspect_factory("recruitment_randomness*standard_aspect")
static register_candidate_action_factory< ai_default_rca::leader_control_phase > old_leader_control_phase_factory("testing_ai_default::leader_control_phase")
static register_aspect_factory< standard_aspect< double > > leader_aggression__standard_aspect_factory("leader_aggression*standard_aspect")
static register_stage_factory< ai_default_rca::candidate_action_evaluation_loop > candidate_action_evaluation_loop_factory("ai_default_rca::candidate_action_evaluation_loop")
static register_aspect_factory< standard_aspect< config > > leader_goal__standard_aspect_factory("leader_goal*standard_aspect")
static register_aspect_factory< default_recruitment::recruitment_aspect > recruitment_instructions__standard_aspect_factory2("recruitment_instructions*")
static register_aspect_factory< composite_aspect< config > > leader_goal__composite_aspect_factory("leader_goal*composite_aspect")
static register_engine_factory< engine_lua > composite_ai_factory_lua("lua")
static register_aspect_factory< standard_aspect< double > > retreat_enemy_weight__standard_aspect_factory("retreat_enemy_weight*standard_aspect")
static register_lua_aspect_factory< lua_aspect< utils::variant< bool, std::vector< std::string > > > > leader_ignores_keep__lua_aspect_factory("leader_ignores_keep*lua_aspect")
static register_aspect_factory< composite_aspect< bool > > simple_targeting__composite_aspect_factory("simple_targeting*composite_aspect")
static register_candidate_action_factory< ai_default_rca::move_to_targets_phase > old_testing_move_to_targets_phase_factory("testing_ai_default::testing_move_to_targets_phase")
static register_lua_aspect_factory< lua_aspect< double > > leader_aggression__lua_aspect_factory("leader_aggression*lua_aspect")
static register_aspect_factory< composite_aspect< double > > leader_aggression__composite_aspect_factory("leader_aggression*composite_aspect")
static register_goal_factory< target_location_goal > goal_factory_target_location("target_location")
static register_aspect_factory< composite_aspect< std::vector< std::string > > > recruitment_more__composite_aspect_factory("recruitment_more*composite_aspect")
static register_candidate_action_factory< ai_default_rca::leader_shares_keep_phase > passive_leader_shares_keep_phase_factory("ai_default_rca::passive_leader_shares_keep_phase")
static register_aspect_factory< composite_aspect< utils::variant< bool, std::vector< std::string > > > > passive_leader__composite_aspect_factory("passive_leader*composite_aspect")
static register_candidate_action_factory< ai_default_rca::move_leader_to_goals_phase > old_move_leader_to_goals_phase_factory("testing_ai_default::move_leader_to_goals_phase")
static register_aspect_factory< composite_aspect< std::string > > grouping__composite_aspect_factory("grouping*composite_aspect")
static register_aspect_factory< composite_aspect< double > > aggression__composite_aspect_factory("aggression*composite_aspect")
static register_aspect_factory< standard_aspect< terrain_filter > > avoid__standard_aspect_factory("avoid*standard_aspect")
static register_aspect_factory< standard_aspect< double > > scout_village_targeting__standard_aspect_factory("scout_village_targeting*standard_aspect")
static register_aspect_factory< standard_aspect< std::vector< std::string > > > recruitment_more__standard_aspect_factory2("recruitment_more*")
static register_candidate_action_factory< ai_default_rca::leader_shares_keep_phase > old_passive_leader_shares_keep_phase_factory("testing_ai_default::passive_leader_shares_keep_phase")
static register_aspect_factory< standard_aspect< bool > > allow_ally_villages__standard_aspect_factory2("allow_ally_villages*")
static register_aspect_factory< standard_aspect< unit_advancements_aspect > > advancements__standard_aspect_factory2("advancements*")
static register_lua_aspect_factory< lua_aspect< config > > leader_goal__lua_aspect_factory("leader_goal*lua_aspect")
static register_candidate_action_factory< ai_default_rca::goto_phase > goto_phase_factory("ai_default_rca::goto_phase")
static register_aspect_factory< standard_aspect< std::string > > grouping__standard_aspect_factory("grouping*standard_aspect")
static register_aspect_factory< standard_aspect< utils::variant< bool, std::vector< std::string > > > > passive_leader_shares_keep__standard_aspect_factory("passive_leader_shares_keep*standard_aspect")
static register_aspect_factory< standard_aspect< utils::variant< bool, std::vector< std::string > > > > leader_ignores_keep__standard_aspect_factory2("leader_ignores_keep*")
static register_aspect_factory< ai_default_rca::aspect_attacks > attacks__testing_ai_default_aspect_attacks_factory("attacks*ai_default_rca::aspect_attacks")
static register_aspect_factory< standard_aspect< double > > retreat_enemy_weight__standard_aspect_factory2("retreat_enemy_weight*")
static register_aspect_factory< composite_aspect< terrain_filter > > avoid__composite_aspect_factory("avoid*composite_aspect")
static register_aspect_factory< ai_default_rca::aspect_attacks > attacks__testing_ai_default_aspect_attacks_factory2("attacks*")
static register_goal_factory< target_unit_goal > goal_factory_target("target")
static register_lua_aspect_factory< lua_aspect< double > > retreat_enemy_weight__lua_aspect_factory("retreat_enemy_weight*lua_aspect")
static register_candidate_action_factory< default_recruitment::recruitment > default_recruitment_factory("default_recruitment::recruitment")
static register_aspect_factory< composite_aspect< config > > recruitment_instructions__composite_aspect_factory("recruitment_instructions*composite_aspect")
static register_candidate_action_factory< ai_default_rca::goto_phase > old_goto_phase_factory("testing_ai_default::goto_phase")
static register_aspect_factory< standard_aspect< double > > aggression__standard_aspect_factory("aggression*standard_aspect")
static register_lua_aspect_factory< lua_aspect< utils::variant< bool, std::vector< std::string > > > > passive_leader_shares_keep__lua_aspect_factory("passive_leader_shares_keep*lua_aspect")
static register_aspect_factory< standard_aspect< int > > villages_per_scout__standard_aspect_factory2("villages_per_scout*")
static register_aspect_factory< standard_aspect< bool > > support_villages__standard_aspect_factory("support_villages*standard_aspect")
static register_aspect_factory< default_recruitment::recruitment_aspect > recruitment_instructions__standard_aspect_factory("recruitment_instructions*standard_aspect")
static register_aspect_factory< standard_aspect< std::string > > grouping__standard_aspect_factory2("grouping*")
static register_aspect_factory< standard_aspect< terrain_filter > > avoid__standard_aspect_factory2("avoid*")
static register_aspect_factory< standard_aspect< bool > > support_villages__standard_aspect_factory2("support_villages*")
static register_aspect_factory< standard_aspect< utils::variant< bool, std::vector< std::string > > > > passive_leader_shares_keep__standard_aspect_factory2("passive_leader_shares_keep*")
static register_aspect_factory< composite_aspect< bool > > support_villages__composite_aspect_factory("support_villages*composite_aspect")
static register_aspect_factory< composite_aspect< int > > villages_per_scout__composite_aspect_factory("villages_per_scout*composite_aspect")
static register_aspect_factory< composite_aspect< config > > recruitment_save_gold__composite_aspect_factory("recruitment_save_gold*composite_aspect")
static register_aspect_factory< composite_aspect< double > > scout_village_targeting__composite_aspect_factory("scout_village_targeting*composite_aspect")
static register_aspect_factory< ai_default_rca::aspect_attacks > old_attacks__testing_ai_default_aspect_attacks_factory("attacks*testing_ai_default::aspect_attacks")
static register_lua_aspect_factory< aspect_attacks_lua > attacks__lua_aspect_factory("attacks*lua_aspect")
static register_aspect_factory< composite_aspect< int > > recruitment_randomness__composite_aspect_factory("recruitment_randomness*composite_aspect")
static register_candidate_action_factory< ai_default_rca::retreat_phase > retreat_phase_factory("ai_default_rca::retreat_phase")
static register_candidate_action_factory< ai_default_rca::get_healing_phase > get_healing_phase_factory("ai_default_rca::get_healing_phase")
static register_aspect_factory< composite_aspect< bool > > allow_ally_villages__composite_aspect_factory("allow_ally_villages*composite_aspect")
static register_goal_factory< lua_goal > goal_factory_lua_goal("lua_goal")
static register_lua_aspect_factory< lua_aspect< std::string > > grouping__lua_aspect_factory("grouping*lua_aspect")
static register_candidate_action_factory< ai_default_rca::get_villages_phase > get_villages_phase_factory("ai_default_rca::get_villages_phase")
static register_aspect_factory< composite_aspect< config > > recruitments__composite_aspect_factory("recruitment*composite_aspect")
static register_candidate_action_factory< ai_default_rca::move_leader_to_keep_phase > move_leader_to_keep_phase_factory("ai_default_rca::move_leader_to_keep_phase")
static register_aspect_factory< composite_aspect< unit_advancements_aspect > > advancements__composite_aspect_factory("advancements*composite_aspect")
static register_aspect_factory< composite_aspect< double > > retreat_factor__composite_aspect_factory("retreat_factor*composite_aspect")
static register_goal_factory< target_unit_goal > goal_factory_target_unit("target_unit")
static register_candidate_action_factory< ai_default_rca::move_leader_to_keep_phase > old_move_leader_to_keep_phase_factory("testing_ai_default::move_leader_to_keep_phase")
static register_aspect_factory< default_recruitment::recruitment_aspect > recruitment__standard_aspect_factory("recruitment*standard_aspect")
static register_aspect_factory< standard_aspect< bool > > allow_ally_villages__standard_aspect_factory("allow_ally_villages*standard_aspect")
static register_aspect_factory< standard_aspect< double > > scout_village_targeting__standard_aspect_factory2("scout_village_targeting*")
static register_aspect_factory< standard_aspect< int > > recruitment_randomness__standard_aspect_factory2("recruitment_randomness*")
static register_aspect_factory< composite_aspect< attacks_vector > > attacks__composite_aspect_factory("attacks*composite_aspect")
static register_stage_factory< ai_default_rca::candidate_action_evaluation_loop > old_candidate_action_evaluation_loop_factory("testing_ai_default::candidate_action_evaluation_loop")
static register_goal_factory< target_unit_goal > goal_factory("")
static register_aspect_factory< standard_aspect< double > > caution__standard_aspect_factory2("caution*")
static register_lua_aspect_factory< lua_aspect< utils::variant< bool, std::vector< std::string > > > > passive_leader__lua_aspect_factory("passive_leader*lua_aspect")
static register_candidate_action_factory< ai_default_rca::leader_shares_keep_phase > leader_shares_keep_phase_factory("ai_default_rca::leader_shares_keep_phase")
static register_aspect_factory< composite_aspect< utils::variant< bool, std::vector< std::string > > > > passive_leader_shares_keep__composite_aspect_factory("passive_leader_shares_keep*composite_aspect")
static register_aspect_factory< standard_aspect< utils::variant< bool, std::vector< std::string > > > > passive_leader__standard_aspect_factory("passive_leader*standard_aspect")
static register_candidate_action_factory< ai_default_rca::get_healing_phase > old_get_healing_phase_factory("testing_ai_default::get_healing_phase")
static register_lua_aspect_factory< lua_aspect< bool > > simple_targeting__lua_aspect_factory("simple_targeting*lua_aspect")
static register_aspect_factory< standard_aspect< double > > retreat_factor__standard_aspect_factory("retreat_factor*standard_aspect")
static register_aspect_factory< composite_aspect< double > > retreat_enemy_weight__composite_aspect_factory("retreat_enemy_weight*composite_aspect")
static register_lua_aspect_factory< lua_aspect< bool > > support_villages__lua_aspect_factory("support_villages*lua_aspect")
static register_aspect_factory< standard_aspect< double > > leader_value__standard_aspect_factory2("leader_value*")
static register_aspect_factory< standard_aspect< bool > > simple_targeting__standard_aspect_factory("simple_targeting*standard_aspect")
static register_lua_aspect_factory< lua_aspect< double > > village_value__lua_aspect_factory("village_value*lua_aspect")
static register_lua_aspect_factory< lua_aspect< double > > leader_value__lua_aspect_factory("leader_value*lua_aspect")
static register_aspect_factory< standard_aspect< std::vector< std::string > > > recruitment_pattern__standard_aspect_factory2("recruitment_pattern*")
static register_candidate_action_factory< ai_default_rca::move_to_targets_phase > default_move_to_targets_phase_factory("ai_default_rca::move_to_targets_phase")
static register_aspect_factory< composite_aspect< double > > recruitment_diversity__composite_aspect_factory("recruitment_diversity*composite_aspect")
static register_aspect_factory< composite_aspect< double > > village_value__composite_aspect_factory("village_value*composite_aspect")
static register_aspect_factory< standard_aspect< double > > leader_value__standard_aspect_factory("leader_value*standard_aspect")
static register_aspect_factory< standard_aspect< std::vector< std::string > > > recruitment_pattern__standard_aspect_factory("recruitment_pattern*standard_aspect")
static register_aspect_factory< standard_aspect< double > > village_value__standard_aspect_factory("village_value*standard_aspect")
static register_candidate_action_factory< ai_default_rca::combat_phase > old_combat_phase_factory("testing_ai_default::combat_phase")
static register_lua_aspect_factory< lua_aspect< terrain_filter > > avoid__lua_aspect_factory("avoid*lua_aspect")
static register_aspect_factory< standard_aspect< config > > leader_goal__standard_aspect_factory2("leader_goal*")
static register_candidate_action_factory< ai_default_rca::combat_phase > combat_phase_factory("ai_default_rca::combat_phase")
static register_aspect_factory< standard_aspect< bool > > simple_targeting__standard_aspect_factory2("simple_targeting*")
static register_aspect_factory< standard_aspect< double > > recruitment_diversity__standard_aspect_factory2("recruitment_diversity*")
static register_aspect_factory< default_recruitment::recruitment_aspect > recruitment__standard_aspect_factory2("recruitment*")
static register_engine_factory< engine_cpp > composite_ai_factory_cpp("cpp")
static register_lua_aspect_factory< lua_aspect< bool > > allow_ally_villages__lua_aspect_factory("allow_ally_villages*lua_aspect")
static register_lua_aspect_factory< lua_aspect< double > > caution__lua_aspect_factory("caution*lua_aspect")
static register_aspect_factory< composite_aspect< double > > leader_value__composite_aspect_factory("leader_value*composite_aspect")
static register_aspect_factory< composite_aspect< std::vector< std::string > > > recruitment_pattern__composite_aspect_factory("recruitment_pattern*composite_aspect")
static register_lua_aspect_factory< lua_aspect< std::vector< std::string > > > recruitment_pattern__lua_aspect_factory("recruitment_pattern*lua_aspect")
static register_aspect_factory< standard_aspect< utils::variant< bool, std::vector< std::string > > > > passive_leader__standard_aspect_factory2("passive_leader*")
static register_candidate_action_factory< ai_default_rca::get_villages_phase > old_get_villages_phase_factory("testing_ai_default::get_villages_phase")
static register_aspect_factory< composite_aspect< utils::variant< bool, std::vector< std::string > > > > leader_igores_keep__composite_aspect_factory("leader_ignores_keep*composite_aspect")
static register_aspect_factory< standard_aspect< config > > recruitment_save_gold__standard_aspect_factory("recruitment_save_gold*standard_aspect")
static register_aspect_factory< standard_aspect< double > > recruitment_diversity__standard_aspect_factory("recruitment_diversity*standard_aspect")
static register_aspect_factory< standard_aspect< std::vector< std::string > > > recruitment_more__standard_aspect_factory("recruitment_more*standard_aspect")
static register_aspect_factory< standard_aspect< config > > recruitment_save_gold__standard_aspect_factory2("recruitment_save_gold*")
static register_candidate_action_factory< ai_default_rca::move_to_targets_phase > old_default_move_to_targets_phase_factory("testing_ai_default::default_move_to_targets_phase")
static register_aspect_factory< standard_aspect< unit_advancements_aspect > > advancements__standard_aspect_factory("advancements*standard_aspect")
static register_goal_factory< protect_unit_goal > goal_factory_protect_unit("protect_unit")
static register_aspect_factory< standard_aspect< utils::variant< bool, std::vector< std::string > > > > leader_ignores_keep__standard_aspect_factory("leader_ignores_keep*standard_aspect")
static register_candidate_action_factory< ai_default_rca::retreat_phase > old_retreat_phase_factory("testing_ai_default::retreat_phase")
static register_stage_factory< idle_stage > ai_idle_stage_factory("empty")
candidate action framework
Recruitment Engine by flix See https://wiki.wesnoth.org/AI_Recruitment.
All known AI parts.
Composite AI stages.
candidate action evaluator