The Battle for Wesnoth  1.19.13+dev
registry.cpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2009 - 2025
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/lua/engine_lua.hpp" // for engine_lua
32 #include "ai/composite/goal.hpp" // for register_goal_factory, etc
34 #include "ai/default/recruitment.hpp" // for recruitment
35 #include "ai/default/aspect_attacks.hpp" // for aspect_attacks
36 #include "ai/default/ca.hpp" // for leader_shares_keep_phase, etc
38 #include "ai/default/stage_rca.hpp"
39 
40 #include <string> // for string
41 #include <vector> // for vector
42 
43 
44 namespace ai {
45 // =======================================================================
46 // Engines
47 // =======================================================================
48 
49 static register_engine_factory<engine_cpp>
51 
54 
55 // =======================================================================
56 // Stages
57 // =======================================================================
58 
60  candidate_action_evaluation_loop_factory("ai_default_rca::candidate_action_evaluation_loop");
61 
64 
65 // === Also keep the old syntax ===
67  old_candidate_action_evaluation_loop_factory("testing_ai_default::candidate_action_evaluation_loop");
68 
69 // =======================================================================
70 // Candidate actions
71 // =======================================================================
72 
74  goto_phase_factory("ai_default_rca::goto_phase");
75 
77  combat_phase_factory("ai_default_rca::combat_phase");
78 
80  move_leader_to_goals_phase_factory("ai_default_rca::move_leader_to_goals_phase");
81 
83  move_leader_to_keep_phase_factory("ai_default_rca::move_leader_to_keep_phase");
84 
86  get_villages_phase_factory("ai_default_rca::get_villages_phase");
87 
89  get_healing_phase_factory("ai_default_rca::get_healing_phase");
90 
92  retreat_phase_factory("ai_default_rca::retreat_phase");
93 
95  default_move_to_targets_phase_factory("ai_default_rca::move_to_targets_phase");
96 
98  leader_control_phase_factory("ai_default_rca::leader_control_phase");
99 
101  leader_shares_keep_phase_factory("ai_default_rca::leader_shares_keep_phase");
102 
103 //Also keep passive_leader_shares_keep_phase for backward compatibility
105  passive_leader_shares_keep_phase_factory("ai_default_rca::passive_leader_shares_keep_phase");
106 
108  default_recruitment_factory("default_recruitment::recruitment");
109 
110 // === Also keep the old syntax ===
112  old_goto_phase_factory("testing_ai_default::goto_phase");
113 
115  old_combat_phase_factory("testing_ai_default::combat_phase");
116 
118  old_move_leader_to_goals_phase_factory("testing_ai_default::move_leader_to_goals_phase");
119 
121  old_move_leader_to_keep_phase_factory("testing_ai_default::move_leader_to_keep_phase");
122 
124  old_get_villages_phase_factory("testing_ai_default::get_villages_phase");
125 
127  old_get_healing_phase_factory("testing_ai_default::get_healing_phase");
128 
130  old_retreat_phase_factory("testing_ai_default::retreat_phase");
131 
133  old_default_move_to_targets_phase_factory("testing_ai_default::default_move_to_targets_phase");
134 
136  old_testing_move_to_targets_phase_factory("testing_ai_default::testing_move_to_targets_phase");
137 
139  old_leader_control_phase_factory("testing_ai_default::leader_control_phase");
140 
142  old_passive_leader_shares_keep_phase_factory("testing_ai_default::passive_leader_shares_keep_phase");
143 
144 // =======================================================================
145 // Goals
146 // =======================================================================
147 
150 
151 
154 
155 
157  goal_factory_target_unit("target_unit");
158 
159 
161  goal_factory_target_location("target_location");
162 
163 
165  goal_factory_protect_location("protect_location");
166 
167 
169  goal_factory_protect_unit("protect_unit");
170 
173 
174 
175 // =======================================================================
176 // Aspects
177 // =======================================================================
178 
179 //name=composite_aspect
180 
182  advancements__composite_aspect_factory("advancements*composite_aspect");
183 
185  aggression__composite_aspect_factory("aggression*composite_aspect");
186 
188  allow_ally_villages__composite_aspect_factory("allow_ally_villages*composite_aspect");
189 
191  attacks__composite_aspect_factory("attacks*composite_aspect");
192 
194  avoid__composite_aspect_factory("avoid*composite_aspect");
195 
197  caution__composite_aspect_factory("caution*composite_aspect");
198 
200  grouping__composite_aspect_factory("grouping*composite_aspect");
201 
203  leader_aggression__composite_aspect_factory("leader_aggression*composite_aspect");
204 
206  leader_goal__composite_aspect_factory("leader_goal*composite_aspect");
207 
209  leader_igores_keep__composite_aspect_factory("leader_ignores_keep*composite_aspect");
210 
212  leader_value__composite_aspect_factory("leader_value*composite_aspect");
213 
215  passive_leader__composite_aspect_factory("passive_leader*composite_aspect");
216 
218  passive_leader_shares_keep__composite_aspect_factory("passive_leader_shares_keep*composite_aspect");
219 
221  recruitment_diversity__composite_aspect_factory("recruitment_diversity*composite_aspect");
222 
224  recruitment_instructions__composite_aspect_factory("recruitment_instructions*composite_aspect");
225 
227  recruitment_more__composite_aspect_factory("recruitment_more*composite_aspect");
228 
230  recruitment_pattern__composite_aspect_factory("recruitment_pattern*composite_aspect");
231 
233  recruitment_randomness__composite_aspect_factory("recruitment_randomness*composite_aspect");
234 
236  recruitment_save_gold__composite_aspect_factory("recruitment_save_gold*composite_aspect");
237 
239  retreat_enemy_weight__composite_aspect_factory("retreat_enemy_weight*composite_aspect");
240 
242  retreat_factor__composite_aspect_factory("retreat_factor*composite_aspect");
243 
245  scout_village_targeting__composite_aspect_factory("scout_village_targeting*composite_aspect");
246 
248  simple_targeting__composite_aspect_factory("simple_targeting*composite_aspect");
249 
251  support_villages__composite_aspect_factory("support_villages*composite_aspect");
252 
254  village_value__composite_aspect_factory("village_value*composite_aspect");
255 
257  villages_per_scout__composite_aspect_factory("villages_per_scout*composite_aspect");
258 
259 
260 //name=standard_aspect
262  advancements__standard_aspect_factory("advancements*standard_aspect");
263 
265  aggression__standard_aspect_factory("aggression*standard_aspect");
266 
268  allow_ally_villages__standard_aspect_factory("allow_ally_villages*standard_aspect");
269 
271  attacks__testing_ai_default_aspect_attacks_factory("attacks*ai_default_rca::aspect_attacks");
272 
274  avoid__standard_aspect_factory("avoid*standard_aspect");
275 
277  caution__standard_aspect_factory("caution*standard_aspect");
278 
280  grouping__standard_aspect_factory("grouping*standard_aspect");
281 
283  leader_aggression__standard_aspect_factory("leader_aggression*standard_aspect");
284 
286  leader_goal__standard_aspect_factory("leader_goal*standard_aspect");
287 
289  leader_ignores_keep__standard_aspect_factory("leader_ignores_keep*standard_aspect");
290 
292  leader_value__standard_aspect_factory("leader_value*standard_aspect");
293 
295  passive_leader__standard_aspect_factory("passive_leader*standard_aspect");
296 
298  passive_leader_shares_keep__standard_aspect_factory("passive_leader_shares_keep*standard_aspect");
299 
301  recruitment_diversity__standard_aspect_factory("recruitment_diversity*standard_aspect");
302 
304  recruitment_instructions__standard_aspect_factory("recruitment_instructions*standard_aspect");
305 
307  recruitment_more__standard_aspect_factory("recruitment_more*standard_aspect");
308 
310  recruitment_pattern__standard_aspect_factory("recruitment_pattern*standard_aspect");
311 
313  recruitment_randomness__standard_aspect_factory("recruitment_randomness*standard_aspect");
314 
316  recruitment_save_gold__standard_aspect_factory("recruitment_save_gold*standard_aspect");
317 
319  retreat_enemy_weight__standard_aspect_factory("retreat_enemy_weight*standard_aspect");
320 
322  retreat_factor__standard_aspect_factory("retreat_factor*standard_aspect");
323 
325  scout_village_targeting__standard_aspect_factory("scout_village_targeting*standard_aspect");
326 
328  simple_targeting__standard_aspect_factory("simple_targeting*standard_aspect");
329 
331  support_villages__standard_aspect_factory("support_villages*standard_aspect");
332 
334  village_value__standard_aspect_factory("village_value*standard_aspect");
335 
337  villages_per_scout__standard_aspect_factory("villages_per_scout*standard_aspect");
338 
339 
340 // Also keep the old syntax
342  old_attacks__testing_ai_default_aspect_attacks_factory("attacks*testing_ai_default::aspect_attacks");
343 
344 //name = default
347 
350 
353 
356 
359 
362 
365 
368 
371 
374 
377 
380 
383 
386 
389 
392 
395 
398 
401 
404 
407 
410 
413 
416 
419 
422 
423 
424 //name = lua
426  advancements__lua_aspect_factory("advancements*lua_aspect");
427 
429  aggression__lua_aspect_factory("aggression*lua_aspect");
430 
432  allow_ally_villages__lua_aspect_factory("allow_ally_villages*lua_aspect");
433 
435  attacks__lua_aspect_factory("attacks*lua_aspect");
436 
438  avoid__lua_aspect_factory("avoid*lua_aspect");
439 
441  caution__lua_aspect_factory("caution*lua_aspect");
442 
444  grouping__lua_aspect_factory("grouping*lua_aspect");
445 
447  leader_aggression__lua_aspect_factory("leader_aggression*lua_aspect");
448 
450  leader_goal__lua_aspect_factory("leader_goal*lua_aspect");
451 
453  leader_ignores_keep__lua_aspect_factory("leader_ignores_keep*lua_aspect");
454 
456  leader_value__lua_aspect_factory("leader_value*lua_aspect");
457 
459  passive_leader__lua_aspect_factory("passive_leader*lua_aspect");
460 
462  passive_leader_shares_keep__lua_aspect_factory("passive_leader_shares_keep*lua_aspect");
463 
465  retreat_enemy_weight__lua_aspect_factory("retreat_enemy_weight*lua_aspect");
466 
468  retreat_factor__lua_aspect_factory("retreat_factor*lua_aspect");
469 
471  scout_village_targeting__lua_aspect_factory("scout_village_targeting*lua_aspect");
472 
474  simple_targeting__lua_aspect_factory("simple_targeting*lua_aspect");
475 
477  support_villages__lua_aspect_factory("support_villages*lua_aspect");
478 
480  village_value__lua_aspect_factory("village_value*lua_aspect");
481 
483  villages_per_scout__lua_aspect_factory("villages_per_scout*lua_aspect");
484 
486  recruitment_pattern__lua_aspect_factory("recruitment_pattern*lua_aspect");
487 
488 
489 // Some compatibility - recruitment is a removed aspect, but its syntax
490 // is compatible with recruitment_instructions
492  recruitments__composite_aspect_factory("recruitment*composite_aspect");
493 
495  recruitment__standard_aspect_factory("recruitment*standard_aspect");
496 
499 
501 {
502 }
503 
504 } //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.
LUA AI Support engine - creating specific ai components from config.
Game information for the AI.
void init()
Definition: registry.cpp:500
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_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