The Battle for Wesnoth 1.21.0-dev
 
Loading...
Searching...
No Matches
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
39
40#include <string> // for string
41#include <vector> // for vector
42
43
44namespace ai {
45// =======================================================================
46// Engines
47// =======================================================================
48
49static 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
158
159
162
163
165 goal_factory_protect_location("protect_location");
166
167
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.
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< bool > > simple_targeting__standard_aspect_factory2("simple_targeting*")
static register_aspect_factory< standard_aspect< double > > caution__standard_aspect_factory2("caution*")
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_shares_keep__standard_aspect_factory("passive_leader_shares_keep*standard_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_engine_factory< engine_cpp > composite_ai_factory_cpp("cpp")
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::move_leader_to_keep_phase > move_leader_to_keep_phase_factory("ai_default_rca::move_leader_to_keep_phase")
static register_lua_aspect_factory< lua_aspect< double > > retreat_enemy_weight__lua_aspect_factory("retreat_enemy_weight*lua_aspect")
static register_candidate_action_factory< ai_default_rca::combat_phase > old_combat_phase_factory("testing_ai_default::combat_phase")
static register_aspect_factory< standard_aspect< double > > retreat_enemy_weight__standard_aspect_factory2("retreat_enemy_weight*")
static register_lua_aspect_factory< lua_aspect< unit_advancements_aspect > > advancements__lua_aspect_factory("advancements*lua_aspect")
static register_aspect_factory< standard_aspect< int > > villages_per_scout__standard_aspect_factory("villages_per_scout*standard_aspect")
static register_engine_factory< engine_lua > composite_ai_factory_lua("lua")
static register_aspect_factory< standard_aspect< utils::variant< bool, std::vector< std::string > > > > leader_ignores_keep__standard_aspect_factory2("leader_ignores_keep*")
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")
static register_aspect_factory< composite_aspect< std::vector< std::string > > > recruitment_more__composite_aspect_factory("recruitment_more*composite_aspect")
static register_aspect_factory< standard_aspect< config > > recruitment_save_gold__standard_aspect_factory2("recruitment_save_gold*")
static register_aspect_factory< composite_aspect< config > > recruitment_save_gold__composite_aspect_factory("recruitment_save_gold*composite_aspect")
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_lua_aspect_factory< lua_aspect< std::vector< std::string > > > recruitment_pattern__lua_aspect_factory("recruitment_pattern*lua_aspect")
static register_aspect_factory< default_recruitment::recruitment_aspect > recruitment_instructions__standard_aspect_factory2("recruitment_instructions*")
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< standard_aspect< utils::variant< bool, std::vector< std::string > > > > passive_leader__standard_aspect_factory("passive_leader*standard_aspect")
static register_aspect_factory< standard_aspect< config > > leader_goal__standard_aspect_factory("leader_goal*standard_aspect")
static register_goal_factory< protect_unit_goal > goal_factory_protect_unit("protect_unit")
static register_aspect_factory< composite_aspect< double > > retreat_enemy_weight__composite_aspect_factory("retreat_enemy_weight*composite_aspect")
static register_aspect_factory< standard_aspect< std::vector< std::string > > > recruitment_more__standard_aspect_factory("recruitment_more*standard_aspect")
static register_lua_aspect_factory< lua_aspect< double > > village_value__lua_aspect_factory("village_value*lua_aspect")
static register_aspect_factory< composite_aspect< int > > recruitment_randomness__composite_aspect_factory("recruitment_randomness*composite_aspect")
static register_aspect_factory< standard_aspect< bool > > simple_targeting__standard_aspect_factory("simple_targeting*standard_aspect")
static register_lua_aspect_factory< lua_aspect< double > > caution__lua_aspect_factory("caution*lua_aspect")
static register_aspect_factory< standard_aspect< bool > > support_villages__standard_aspect_factory("support_villages*standard_aspect")
static register_candidate_action_factory< default_recruitment::recruitment > default_recruitment_factory("default_recruitment::recruitment")
static register_goal_factory< lua_goal > goal_factory_lua_goal("lua_goal")
static register_aspect_factory< standard_aspect< int > > recruitment_randomness__standard_aspect_factory2("recruitment_randomness*")
static register_aspect_factory< standard_aspect< terrain_filter > > avoid__standard_aspect_factory("avoid*standard_aspect")
static register_aspect_factory< standard_aspect< bool > > allow_ally_villages__standard_aspect_factory2("allow_ally_villages*")
static register_aspect_factory< standard_aspect< double > > village_value__standard_aspect_factory2("village_value*")
static register_aspect_factory< standard_aspect< std::vector< std::string > > > recruitment_pattern__standard_aspect_factory("recruitment_pattern*standard_aspect")
static register_lua_aspect_factory< lua_aspect< double > > leader_aggression__lua_aspect_factory("leader_aggression*lua_aspect")
static register_lua_aspect_factory< lua_aspect< bool > > allow_ally_villages__lua_aspect_factory("allow_ally_villages*lua_aspect")
static register_aspect_factory< composite_aspect< double > > leader_aggression__composite_aspect_factory("leader_aggression*composite_aspect")
static register_lua_aspect_factory< lua_aspect< double > > scout_village_targeting__lua_aspect_factory("scout_village_targeting*lua_aspect")
static register_aspect_factory< standard_aspect< double > > scout_village_targeting__standard_aspect_factory2("scout_village_targeting*")
static register_aspect_factory< standard_aspect< unit_advancements_aspect > > advancements__standard_aspect_factory2("advancements*")
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< double > > caution__composite_aspect_factory("caution*composite_aspect")
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_lua_aspect_factory< lua_aspect< bool > > support_villages__lua_aspect_factory("support_villages*lua_aspect")
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< composite_aspect< config > > recruitment_instructions__composite_aspect_factory("recruitment_instructions*composite_aspect")
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_lua_aspect_factory< lua_aspect< bool > > simple_targeting__lua_aspect_factory("simple_targeting*lua_aspect")
static register_goal_factory< target_location_goal > goal_factory_target_location("target_location")
static register_aspect_factory< standard_aspect< double > > retreat_enemy_weight__standard_aspect_factory("retreat_enemy_weight*standard_aspect")
static register_aspect_factory< standard_aspect< double > > caution__standard_aspect_factory("caution*standard_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_candidate_action_factory< ai_default_rca::goto_phase > old_goto_phase_factory("testing_ai_default::goto_phase")
static register_aspect_factory< standard_aspect< std::vector< std::string > > > recruitment_pattern__standard_aspect_factory2("recruitment_pattern*")
static register_aspect_factory< composite_aspect< double > > scout_village_targeting__composite_aspect_factory("scout_village_targeting*composite_aspect")
static register_aspect_factory< standard_aspect< std::string > > grouping__standard_aspect_factory2("grouping*")
static register_aspect_factory< composite_aspect< config > > recruitments__composite_aspect_factory("recruitment*composite_aspect")
static register_aspect_factory< default_recruitment::recruitment_aspect > recruitment_instructions__standard_aspect_factory("recruitment_instructions*standard_aspect")
static register_aspect_factory< standard_aspect< terrain_filter > > avoid__standard_aspect_factory2("avoid*")
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< standard_aspect< double > > leader_value__standard_aspect_factory2("leader_value*")
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< std::vector< std::string > > > recruitment_pattern__composite_aspect_factory("recruitment_pattern*composite_aspect")
static register_aspect_factory< standard_aspect< double > > leader_aggression__standard_aspect_factory("leader_aggression*standard_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< bool > > allow_ally_villages__composite_aspect_factory("allow_ally_villages*composite_aspect")
static register_aspect_factory< composite_aspect< bool > > support_villages__composite_aspect_factory("support_villages*composite_aspect")
static register_candidate_action_factory< ai_default_rca::goto_phase > goto_phase_factory("ai_default_rca::goto_phase")
static register_aspect_factory< composite_aspect< std::string > > grouping__composite_aspect_factory("grouping*composite_aspect")
static register_aspect_factory< composite_aspect< unit_advancements_aspect > > advancements__composite_aspect_factory("advancements*composite_aspect")
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< composite_aspect< utils::variant< bool, std::vector< std::string > > > > passive_leader__composite_aspect_factory("passive_leader*composite_aspect")
static register_goal_factory< protect_location_goal > goal_factory_protect_location("protect_location")
static register_aspect_factory< standard_aspect< double > > leader_value__standard_aspect_factory("leader_value*standard_aspect")
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_candidate_action_factory< ai_default_rca::leader_control_phase > leader_control_phase_factory("ai_default_rca::leader_control_phase")
static register_aspect_factory< composite_aspect< double > > retreat_factor__composite_aspect_factory("retreat_factor*composite_aspect")
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_lua_aspect_factory< lua_aspect< double > > aggression__lua_aspect_factory("aggression*lua_aspect")
static register_aspect_factory< default_recruitment::recruitment_aspect > recruitment__standard_aspect_factory("recruitment*standard_aspect")
static register_lua_aspect_factory< lua_aspect< double > > leader_value__lua_aspect_factory("leader_value*lua_aspect")
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_lua_aspect_factory< lua_aspect< utils::variant< bool, std::vector< std::string > > > > passive_leader__lua_aspect_factory("passive_leader*lua_aspect")
static register_aspect_factory< composite_aspect< attacks_vector > > attacks__composite_aspect_factory("attacks*composite_aspect")
static register_aspect_factory< composite_aspect< bool > > simple_targeting__composite_aspect_factory("simple_targeting*composite_aspect")
static register_lua_aspect_factory< lua_aspect< int > > villages_per_scout__lua_aspect_factory("villages_per_scout*lua_aspect")
static register_aspect_factory< standard_aspect< double > > recruitment_diversity__standard_aspect_factory2("recruitment_diversity*")
static register_candidate_action_factory< ai_default_rca::get_healing_phase > old_get_healing_phase_factory("testing_ai_default::get_healing_phase")
static register_candidate_action_factory< ai_default_rca::get_villages_phase > get_villages_phase_factory("ai_default_rca::get_villages_phase")
static register_lua_aspect_factory< lua_aspect< config > > leader_goal__lua_aspect_factory("leader_goal*lua_aspect")
static register_aspect_factory< standard_aspect< config > > leader_goal__standard_aspect_factory2("leader_goal*")
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< double > > leader_value__composite_aspect_factory("leader_value*composite_aspect")
static register_aspect_factory< standard_aspect< double > > leader_aggression__standard_aspect_factory2("leader_aggression*")
static register_aspect_factory< standard_aspect< config > > recruitment_save_gold__standard_aspect_factory("recruitment_save_gold*standard_aspect")
static register_goal_factory< target_unit_goal > goal_factory_target("target")
static register_aspect_factory< standard_aspect< double > > retreat_factor__standard_aspect_factory("retreat_factor*standard_aspect")
static register_aspect_factory< standard_aspect< double > > aggression__standard_aspect_factory2("aggression*")
static register_aspect_factory< composite_aspect< int > > villages_per_scout__composite_aspect_factory("villages_per_scout*composite_aspect")
static register_aspect_factory< standard_aspect< bool > > support_villages__standard_aspect_factory2("support_villages*")
static register_aspect_factory< standard_aspect< double > > recruitment_diversity__standard_aspect_factory("recruitment_diversity*standard_aspect")
static register_aspect_factory< standard_aspect< double > > retreat_factor__standard_aspect_factory2("retreat_factor*")
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< composite_aspect< config > > leader_goal__composite_aspect_factory("leader_goal*composite_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_candidate_action_factory< ai_default_rca::retreat_phase > retreat_phase_factory("ai_default_rca::retreat_phase")
static register_candidate_action_factory< ai_default_rca::leader_control_phase > old_leader_control_phase_factory("testing_ai_default::leader_control_phase")
static register_lua_aspect_factory< lua_aspect< terrain_filter > > avoid__lua_aspect_factory("avoid*lua_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::get_healing_phase > get_healing_phase_factory("ai_default_rca::get_healing_phase")
static register_candidate_action_factory< ai_default_rca::combat_phase > combat_phase_factory("ai_default_rca::combat_phase")
static register_aspect_factory< composite_aspect< double > > village_value__composite_aspect_factory("village_value*composite_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< standard_aspect< int > > recruitment_randomness__standard_aspect_factory("recruitment_randomness*standard_aspect")
static register_aspect_factory< default_recruitment::recruitment_aspect > recruitment__standard_aspect_factory2("recruitment*")
static register_lua_aspect_factory< lua_aspect< std::string > > grouping__lua_aspect_factory("grouping*lua_aspect")
static register_aspect_factory< composite_aspect< double > > aggression__composite_aspect_factory("aggression*composite_aspect")
static register_lua_aspect_factory< lua_aspect< double > > retreat_factor__lua_aspect_factory("retreat_factor*lua_aspect")
static register_aspect_factory< standard_aspect< double > > aggression__standard_aspect_factory("aggression*standard_aspect")
static register_aspect_factory< standard_aspect< double > > village_value__standard_aspect_factory("village_value*standard_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_aspect_factory< standard_aspect< double > > scout_village_targeting__standard_aspect_factory("scout_village_targeting*standard_aspect")
static register_aspect_factory< standard_aspect< int > > villages_per_scout__standard_aspect_factory2("villages_per_scout*")
static register_aspect_factory< standard_aspect< unit_advancements_aspect > > advancements__standard_aspect_factory("advancements*standard_aspect")
static register_aspect_factory< composite_aspect< double > > recruitment_diversity__composite_aspect_factory("recruitment_diversity*composite_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< std::string > > grouping__standard_aspect_factory("grouping*standard_aspect")
candidate action framework
Recruitment Engine by flix See https://wiki.wesnoth.org/AI_Recruitment.
All known AI parts.
Composite AI stages.
candidate action evaluator