The Battle for Wesnoth  1.17.21+dev
registry.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2009 - 2023
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/ai.hpp" // for ai_composite
30 #include "ai/composite/aspect.hpp" // for composite_aspect, etc
31 #include "ai/default/engine_cpp.hpp" // for engine_cpp
32 #include "ai/formula/engine_fai.hpp" // for engine_fai
33 #include "ai/lua/engine_lua.hpp" // for engine_lua
34 #include "ai/composite/goal.hpp" // for register_goal_factory, etc
36 #include "ai/default/recruitment.hpp" // for recruitment
37 #include "ai/default/aspect_attacks.hpp" // for aspect_attacks
38 #include "ai/default/ca.hpp" // for leader_shares_keep_phase, etc
40 #include "ai/default/stage_rca.hpp"
41 
42 #include <string> // for string
43 #include <vector> // for vector
44 
45 
46 namespace ai {
47 // =======================================================================
48 // Engines
49 // =======================================================================
50 
51 static register_engine_factory<engine_cpp>
53 
56 
59 
60 // =======================================================================
61 // Stages
62 // =======================================================================
63 
65  candidate_action_evaluation_loop_factory("ai_default_rca::candidate_action_evaluation_loop");
66 
69 
70 // === Also keep the old syntax ===
72  old_candidate_action_evaluation_loop_factory("testing_ai_default::candidate_action_evaluation_loop");
73 
74 // =======================================================================
75 // Candidate actions
76 // =======================================================================
77 
79  goto_phase_factory("ai_default_rca::goto_phase");
80 
82  combat_phase_factory("ai_default_rca::combat_phase");
83 
85  move_leader_to_goals_phase_factory("ai_default_rca::move_leader_to_goals_phase");
86 
88  move_leader_to_keep_phase_factory("ai_default_rca::move_leader_to_keep_phase");
89 
91  get_villages_phase_factory("ai_default_rca::get_villages_phase");
92 
94  get_healing_phase_factory("ai_default_rca::get_healing_phase");
95 
97  retreat_phase_factory("ai_default_rca::retreat_phase");
98 
100  default_move_to_targets_phase_factory("ai_default_rca::move_to_targets_phase");
101 
103  leader_control_phase_factory("ai_default_rca::leader_control_phase");
104 
106  leader_shares_keep_phase_factory("ai_default_rca::leader_shares_keep_phase");
107 
108 //Also keep passive_leader_shares_keep_phase for backward compatibility
110  passive_leader_shares_keep_phase_factory("ai_default_rca::passive_leader_shares_keep_phase");
111 
113  default_recruitment_factory("default_recruitment::recruitment");
114 
115 // === Also keep the old syntax ===
117  old_goto_phase_factory("testing_ai_default::goto_phase");
118 
120  old_combat_phase_factory("testing_ai_default::combat_phase");
121 
123  old_move_leader_to_goals_phase_factory("testing_ai_default::move_leader_to_goals_phase");
124 
126  old_move_leader_to_keep_phase_factory("testing_ai_default::move_leader_to_keep_phase");
127 
129  old_get_villages_phase_factory("testing_ai_default::get_villages_phase");
130 
132  old_get_healing_phase_factory("testing_ai_default::get_healing_phase");
133 
135  old_retreat_phase_factory("testing_ai_default::retreat_phase");
136 
138  old_default_move_to_targets_phase_factory("testing_ai_default::default_move_to_targets_phase");
139 
141  old_testing_move_to_targets_phase_factory("testing_ai_default::testing_move_to_targets_phase");
142 
144  old_leader_control_phase_factory("testing_ai_default::leader_control_phase");
145 
147  old_passive_leader_shares_keep_phase_factory("testing_ai_default::passive_leader_shares_keep_phase");
148 
149 // =======================================================================
150 // Goals
151 // =======================================================================
152 
155 
156 
159 
160 
162  goal_factory_target_unit("target_unit");
163 
164 
166  goal_factory_target_location("target_location");
167 
168 
170  goal_factory_protect_location("protect_location");
171 
172 
174  goal_factory_protect_unit("protect_unit");
175 
178 
179 
180 // =======================================================================
181 // Aspects
182 // =======================================================================
183 
184 //name=composite_aspect
185 
187  advancements__composite_aspect_factory("advancements*composite_aspect");
188 
190  aggression__composite_aspect_factory("aggression*composite_aspect");
191 
193  allow_ally_villages__composite_aspect_factory("allow_ally_villages*composite_aspect");
194 
196  attacks__composite_aspect_factory("attacks*composite_aspect");
197 
199  avoid__composite_aspect_factory("avoid*composite_aspect");
200 
202  caution__composite_aspect_factory("caution*composite_aspect");
203 
205  grouping__composite_aspect_factory("grouping*composite_aspect");
206 
208  leader_aggression__composite_aspect_factory("leader_aggression*composite_aspect");
209 
211  leader_goal__composite_aspect_factory("leader_goal*composite_aspect");
212 
214  leader_igores_keep__composite_aspect_factory("leader_ignores_keep*composite_aspect");
215 
217  leader_value__composite_aspect_factory("leader_value*composite_aspect");
218 
220  passive_leader__composite_aspect_factory("passive_leader*composite_aspect");
221 
223  passive_leader_shares_keep__composite_aspect_factory("passive_leader_shares_keep*composite_aspect");
224 
226  recruitment_diversity__composite_aspect_factory("recruitment_diversity*composite_aspect");
227 
229  recruitment_instructions__composite_aspect_factory("recruitment_instructions*composite_aspect");
230 
232  recruitment_more__composite_aspect_factory("recruitment_more*composite_aspect");
233 
235  recruitment_pattern__composite_aspect_factory("recruitment_pattern*composite_aspect");
236 
238  recruitment_randomness__composite_aspect_factory("recruitment_randomness*composite_aspect");
239 
241  recruitment_save_gold__composite_aspect_factory("recruitment_save_gold*composite_aspect");
242 
244  retreat_enemy_weight__composite_aspect_factory("retreat_enemy_weight*composite_aspect");
245 
247  retreat_factor__composite_aspect_factory("retreat_factor*composite_aspect");
248 
250  scout_village_targeting__composite_aspect_factory("scout_village_targeting*composite_aspect");
251 
253  simple_targeting__composite_aspect_factory("simple_targeting*composite_aspect");
254 
256  support_villages__composite_aspect_factory("support_villages*composite_aspect");
257 
259  village_value__composite_aspect_factory("village_value*composite_aspect");
260 
262  villages_per_scout__composite_aspect_factory("villages_per_scout*composite_aspect");
263 
264 
265 //name=standard_aspect
267  advancements__standard_aspect_factory("advancements*standard_aspect");
268 
270  aggression__standard_aspect_factory("aggression*standard_aspect");
271 
273  allow_ally_villages__standard_aspect_factory("allow_ally_villages*standard_aspect");
274 
276  attacks__testing_ai_default_aspect_attacks_factory("attacks*ai_default_rca::aspect_attacks");
277 
279  avoid__standard_aspect_factory("avoid*standard_aspect");
280 
282  caution__standard_aspect_factory("caution*standard_aspect");
283 
285  grouping__standard_aspect_factory("grouping*standard_aspect");
286 
288  leader_aggression__standard_aspect_factory("leader_aggression*standard_aspect");
289 
291  leader_goal__standard_aspect_factory("leader_goal*standard_aspect");
292 
294  leader_ignores_keep__standard_aspect_factory("leader_ignores_keep*standard_aspect");
295 
297  leader_value__standard_aspect_factory("leader_value*standard_aspect");
298 
300  passive_leader__standard_aspect_factory("passive_leader*standard_aspect");
301 
303  passive_leader_shares_keep__standard_aspect_factory("passive_leader_shares_keep*standard_aspect");
304 
306  recruitment_diversity__standard_aspect_factory("recruitment_diversity*standard_aspect");
307 
309  recruitment_instructions__standard_aspect_factory("recruitment_instructions*standard_aspect");
310 
312  recruitment_more__standard_aspect_factory("recruitment_more*standard_aspect");
313 
315  recruitment_pattern__standard_aspect_factory("recruitment_pattern*standard_aspect");
316 
318  recruitment_randomness__standard_aspect_factory("recruitment_randomness*standard_aspect");
319 
321  recruitment_save_gold__standard_aspect_factory("recruitment_save_gold*standard_aspect");
322 
324  retreat_enemy_weight__standard_aspect_factory("retreat_enemy_weight*standard_aspect");
325 
327  retreat_factor__standard_aspect_factory("retreat_factor*standard_aspect");
328 
330  scout_village_targeting__standard_aspect_factory("scout_village_targeting*standard_aspect");
331 
333  simple_targeting__standard_aspect_factory("simple_targeting*standard_aspect");
334 
336  support_villages__standard_aspect_factory("support_villages*standard_aspect");
337 
339  village_value__standard_aspect_factory("village_value*standard_aspect");
340 
342  villages_per_scout__standard_aspect_factory("villages_per_scout*standard_aspect");
343 
344 
345 // Also keep the old syntax
347  old_attacks__testing_ai_default_aspect_attacks_factory("attacks*testing_ai_default::aspect_attacks");
348 
349 //name = default
352 
355 
358 
361 
364 
367 
370 
373 
376 
379 
382 
385 
388 
391 
394 
397 
400 
403 
406 
409 
412 
415 
418 
421 
424 
427 
428 
429 //name = lua
431  advancements__lua_aspect_factory("advancements*lua_aspect");
432 
434  aggression__lua_aspect_factory("aggression*lua_aspect");
435 
437  allow_ally_villages__lua_aspect_factory("allow_ally_villages*lua_aspect");
438 
440  attacks__lua_aspect_factory("attacks*lua_aspect");
441 
443  avoid__lua_aspect_factory("avoid*lua_aspect");
444 
446  caution__lua_aspect_factory("caution*lua_aspect");
447 
449  grouping__lua_aspect_factory("grouping*lua_aspect");
450 
452  leader_aggression__lua_aspect_factory("leader_aggression*lua_aspect");
453 
455  leader_goal__lua_aspect_factory("leader_goal*lua_aspect");
456 
458  leader_ignores_keep__lua_aspect_factory("leader_ignores_keep*lua_aspect");
459 
461  leader_value__lua_aspect_factory("leader_value*lua_aspect");
462 
464  passive_leader__lua_aspect_factory("passive_leader*lua_aspect");
465 
467  passive_leader_shares_keep__lua_aspect_factory("passive_leader_shares_keep*lua_aspect");
468 
470  retreat_enemy_weight__lua_aspect_factory("retreat_enemy_weight*lua_aspect");
471 
473  retreat_factor__lua_aspect_factory("retreat_factor*lua_aspect");
474 
476  scout_village_targeting__lua_aspect_factory("scout_village_targeting*lua_aspect");
477 
479  simple_targeting__lua_aspect_factory("simple_targeting*lua_aspect");
480 
482  support_villages__lua_aspect_factory("support_villages*lua_aspect");
483 
485  village_value__lua_aspect_factory("village_value*lua_aspect");
486 
488  villages_per_scout__lua_aspect_factory("villages_per_scout*lua_aspect");
489 
491  recruitment_pattern__lua_aspect_factory("recruitment_pattern*lua_aspect");
492 
493 
494 // Some compatibility - recruitment is a removed aspect, but its syntax
495 // is compatible with recruitment_instructions
497  recruitments__composite_aspect_factory("recruitment*composite_aspect");
498 
500  recruitment__standard_aspect_factory("recruitment*standard_aspect");
501 
504 
506 {
507 }
508 
509 } //end of namespace ai
Aspect: attacks.
Default AI (Testing)
Strategic movement routine, for experimentation.
Composite AI with turn sequence which is a vector of stages.
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:505
A small explanation about what's going on here: Each action has access to two game_info objects First...
Definition: actions.cpp:61
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