84#define REQUC_LOCAL unchanging_local
100#define REQUC_PRESENT unchanging_present
115#define REQUC_WORLD unchanging_world
139#define REQUC_NALLY unchanging_noally
162#define REQUC_CITYTILE unchanging_citytile
183#define REQUC_CITYSTATUS unchanging_citystatus
223#define REQUC_IMPR unchanging_building
290 if (
source->value.advance !=
nullptr) {
303 if (
source->value.govern !=
nullptr) {
315 if (
source->value.achievement !=
nullptr) {
321 if (
source->value.style !=
nullptr) {
328 if (
source->value.building !=
nullptr) {
352 if (
source->value.extra !=
nullptr) {
358 if (
source->value.good !=
nullptr) {
383 if (
source->value.nationgroup !=
nullptr) {
411 if (
source->value.utype) {
423 if (
source->value.uclass) {
428 source->value.unitclassflag
436 if (
source->value.minveteran > 0) {
454 if (
source->value.minmoves > 0) {
460 if (
source->value.min_hit_points > 0) {
466 if (
source->value.age > 0) {
472 if (
source->value.form_age > 0) {
478 if (
source->value.min_techs > 0) {
484 if (
source->value.future_techs > 0) {
490 if (
source->value.min_cities > 0) {
496 if (
source->value.action !=
nullptr) {
508 if (
source->value.specialist) {
514 if (
source->value.minsize > 0) {
520 if (
source->value.minculture > 0) {
526 if (
source->value.minforeignpct > 0) {
538 if (0 <=
source->value.max_tile_total_units) {
544 if (0 <=
source->value.max_tile_top_units) {
549 source->value.terrainclass
573 if (
source->value.mincalfrag >= 0) {
597 source->value.terrainalter
631 if (
source->value.counter !=
nullptr) {
637 if (0 <=
source->value.distance_sq) {
643 if (0 <
source->value.region_tiles) {
676 source.value.advance =
nullptr;
681 if (
source.value.advance !=
nullptr) {
690 if (
source.value.govern !=
nullptr) {
699 if (
source.value.achievement !=
nullptr) {
705 if (
source.value.style !=
nullptr) {
712 if (
source.value.building !=
nullptr) {
733 if (
source.value.terrain !=
nullptr) {
742 if (
source.value.nation !=
nullptr) {
748 if (
source.value.nationgroup !=
nullptr) {
764 if (
source.value.nationality !=
nullptr) {
770 if (
source.value.origowner !=
nullptr) {
776 if (
source.value.utype !=
nullptr) {
785 if (
source.value.uclass !=
nullptr) {
824 if (
source.value.action !=
nullptr) {
911 source.value.advance =
nullptr;
947 return source->value.techflag;
951 return source->value.govflag;
960 return source->value.impr_genus;
962 return source->value.impr_flag;
964 return source->value.plr_flag;
972 return source->value.terrainflag;
986 return source->value.diplrel;
990 return source->value.unitflag;
994 return source->value.unitclassflag;
996 return source->value.minveteran;
998 return source->value.unit_state;
1000 return source->value.activity;
1002 return source->value.minmoves;
1004 return source->value.min_hit_points;
1006 return source->value.age;
1008 return source->value.form_age;
1010 return source->value.min_techs;
1012 return source->value.future_techs;
1014 return source->value.min_cities;
1018 return source->value.outputtype;
1022 return source->value.minsize;
1024 return source->value.minculture;
1026 return source->value.minforeignpct;
1028 return source->value.ai_level;
1030 return source->value.max_tile_total_units;
1032 return source->value.max_tile_top_units;
1034 return source->value.terrainclass;
1036 return source->value.roadflag;
1038 return source->value.extraflag;
1040 return source->value.minyear;
1042 return source->value.mincalfrag;
1044 return source->value.topo_property;
1046 return source->value.wrap_property;
1048 return source->value.ssetval;
1050 return source->value.terrainalter;
1052 return source->value.citytile;
1054 return source->value.citystatus;
1056 return source->value.plrstate;
1061 return source->value.latitude;
1063 return source->value.distance_sq;
1065 return source->value.region_tiles;
1067 return source->value.tilerel;
1125 const char *error =
nullptr;
1131 error =
"bad type or name";
1135 if (
range !=
nullptr) {
1433 error =
"bad range";
1518 error =
"bad 'survives'";
1523 log_error(
"Invalid requirement %s | %s | %s | %s | %s: %s",
1525 present ?
"present" :
"", value, error);
1622 return (
impr_req->source.value.building->genus
1628 return (
impr_req->source.value.building->genus
1709 switch (
ct_req->source.value.citytile) {
1727 &&
ct_req->source.value.citytile
1923#define EXTRACT_INFO(req) \
1924 if (req->present) { \
1925 if (req->source.kind == VUT_MINLATITUDE) { \
1927 minimum = MAX(minimum, req->source.value.latitude); \
1930 maximum = MIN(maximum, req->source.value.latitude); \
1933 covered_range = MAX(covered_range, req->range); \
1934 if (req->source.kind == VUT_MINLATITUDE) { \
1936 maximum = MIN(maximum, req->source.value.latitude - 1); \
1939 minimum = MAX(minimum, req->source.value.latitude + 1); \
1948 return (maximum < minimum
2067 switch (
other->source.value.tilerel) {
2072 return (!
other->present);
2185#define IS_REQ_ACTIVE_VARIANT_ASSERT(_kind) \
2187 fc_assert_ret_val(req != nullptr, TRI_MAYBE); \
2188 fc_assert_ret_val(req->source.kind == _kind, TRI_MAYBE); \
2189 fc_assert(context != nullptr); \
2190 fc_assert(other_context != nullptr); \
2222 log_error(
"World-ranged requirements are only supported for wonders.");
2235 log_error(
"World-ranged requirements are only supported for wonders.");
2258 log_error(
"Player-ranged requirements are only supported for wonders.");
2272 log_error(
"Player-ranged requirements are only supported for wonders.");
2292 log_error(
"Island-ranged requirements are only supported for wonders.");
2329 switch (req->
range) {
2334 if (
context->player ==
nullptr) {
2345 if (
context->player ==
nullptr) {
2358 log_error(
"Surviving requirements are only supported at "
2359 "World/Alliance/Team/Player ranges.");
2368 switch (req->
range) {
2373 if (
context->player ==
nullptr) {
2384 if (
context->player ==
nullptr) {
2396 continent, building)
2429 if (
context->building == building) {
2492 if (
pcity ==
nullptr) {
2523 switch (req->
range) {
2532 if (
context->tile ==
nullptr) {
2570 switch (req->
range) {
2572 return (
context->player !=
nullptr
2611 switch (req->
range) {
2613 return (
context->player !=
nullptr
2662 switch (req->
range) {
2664 if (
context->player !=
nullptr) {
2673 if (
context->player ==
nullptr) {
2687 if (
context->player ==
nullptr) {
2729 switch (req->
range) {
2731 if (
context->player !=
nullptr) {
2740 if (
context->player ==
nullptr) {
2759 if (
context->player ==
nullptr) {
2801 switch (req->
range) {
2830 if (
context->player ==
nullptr) {
2875 switch (req->
range) {
2947 switch (req->
range) {
3019 switch (req->
range) {
3120 switch (req->
range) {
3218 switch (req->
range) {
3333 const struct terrain *pterrain;
3339 switch (req->
range) {
3360 if (pterrain !=
nullptr) {
3373 if (pterrain !=
nullptr) {
3437 switch (req->
range) {
3539 switch (req->
range) {
3647 switch (req->
range) {
3752 switch (req->
range) {
3852 switch (req->
range) {
3891 if (
context->player ==
nullptr) {
3915 if (
context->player ==
nullptr) {
3939 if (
context->player ==
nullptr) {
3963 switch (req->
range) {
3969 if (
context->player ==
nullptr) {
3999 switch (req->
range) {
4010 if (
context->player ==
nullptr) {
4037 switch (req->
range) {
4039 if (
context->player ==
nullptr) {
4069 if (
context->player ==
nullptr) {
4073 &&
context->player->ai_common.skill_level
4098 switch (req->
range) {
4100 if (
context->player ==
nullptr) {
4106 if (
context->player ==
nullptr) {
4160 switch (req->
range) {
4162 if (
context->player ==
nullptr) {
4170 if (
context->player ==
nullptr) {
4218 switch (req->
range) {
4220 if (
context->city ==
nullptr) {
4231 if (
context->city ==
nullptr) {
4292 switch (req->
range) {
4294 if (
context->city ==
nullptr ||
context->city->original ==
nullptr) {
4325 const struct player *other_player,
4441 const struct player *other_player,
4525 switch (req->
range) {
4534 if (
context->tile ==
nullptr) {
4605 switch (req->
range) {
4614 if (
context->tile ==
nullptr) {
4685 switch (req->
range) {
4694 if (
context->tile ==
nullptr) {
4765 switch (req->
range) {
4774 if (
context->tile ==
nullptr) {
4846 "Unsupported range \"%s\"",
4851 if (
context->unit ==
nullptr) {
4912 "Unsupported range \"%s\"",
4915 if (
context->unit ==
nullptr) {
4929 switch (
context->unit->activity) {
4960 if (
context->unit ==
nullptr) {
4984 if (
context->unit ==
nullptr) {
4988 <=
context->unit->moves_left);
5008 if (
context->unit ==
nullptr) {
5032 switch (req->
range) {
5043 if (
context->city ==
nullptr) {
5052 if (
context->player ==
nullptr) {
5081 switch (req->
range) {
5114 }
else if (cont < 0) {
5168 "Invalid range %d for tile relation \"%s\" req",
5205 "Invalid range %d for tile relation \"%s\" req",
5243 "Invalid range %d for tile relation \"%s\" req",
5274 "Invalid range %d for tile relation \"%s\" req",
5318 "Illegal value %d for tile relationship requirement.",
5329 if (
pcity ==
nullptr) {
5357 if (
context->tile ==
nullptr) {
5363 switch (req->
range) {
5404 switch (req->
range) {
5408 if (
context->tile->owner !=
nullptr) {
5419 if (
context->tile->owner !=
nullptr) {
5444 switch (req->
range) {
5448 if (
context->tile->extras_owner !=
nullptr) {
5452 if (
adjc_tile->extras_owner !=
nullptr) {
5459 if (
context->tile->extras_owner !=
nullptr) {
5463 if (
adjc_tile->extras_owner !=
nullptr) {
5484 switch (req->
range) {
5488 if (
context->tile->worked !=
nullptr) {
5499 if (
context->tile->worked !=
nullptr) {
5538 switch (req->
range) {
5629 switch (req->
range) {
5637 if (0 == tc ||
ukt) {
5640 for (
int i = 0;
i <
n;
i++) {
5665 for (
int i = 0;
i <
n;
i++) {
5689 for (
int i = 0;
i <
n;
i++) {
5719 log_error(
"is_req_active(): citytile %d not supported.",
5744 if (
context->city ==
nullptr) {
5748 switch (citystatus) {
5750 switch (req->
range) {
5752 if (
context->city->original ==
nullptr) {
5794 switch (req->
range) {
5801 if (
context->city->had_famine) {
5835 switch (req->
range) {
5842 if (
context->city->anarchy > 0) {
5876 switch (req->
range) {
5883 if (
context->city->rapture > 0) {
5917 switch (req->
range) {
5963 switch (req->
range) {
5966 &&
context->city->server.aarea->capital);
5971 if (
context->city->server.aarea !=
nullptr
5972 &&
context->city->server.aarea->capital) {
6011 log_error(
"is_req_active(): citystatus %d not supported.",
6033 if (
context->city ==
nullptr) {
6080 if (
context->city ==
nullptr) {
6084 context->city->counter_values[
6110 }
else if (
context->player ==
nullptr) {
6166 switch (req->
range) {
6172 if (
context->tile ==
nullptr) {
6181 if (
context->tile ==
nullptr) {
6220 "Illegal range %d for latitude requirement.", req->
range);
6241 switch (req->
range) {
6255 "Illegal range %d for max squared distance requirement.",
6279 switch (req->
range) {
6282 if (
context->tile ==
nullptr) {
6285 ?
nmap->num_cardinal_dirs
6286 :
nmap->num_valid_dirs);
6327 }
else if (cont < 0) {
6337 "Illegal range %d for max region tiles requirement.",
6576 log_error(
"tri_req_present(): invalid source kind %d.",
6727 switch (req->
range) {
6739 if (
context->city ==
nullptr) {
6749 if (
context->player ==
nullptr) {
6882 "Invalid source kind %d.", req->
source.
kind);
6974 if (
preq->present &&
preq->source.kind == kind) {
7167 if (
namer ==
nullptr) {
7277 sizeof(
out->description_translated));
7282 for (
i = 0;
i <
out->num_suggested_solutions;
i++) {
7285 out->suggested_solutions[
i].vector_number = -1;
7286 out->suggested_solutions[
i].req.source.kind =
VUT_NONE;
7302 const char *descr, ...)
7330 issue->num_suggested_solutions = 0;
7378 N_(
"Requirements {%s} and {%s} contradict each other."),
7462 if (
preq->present) {
7472 N_(
"Requirement {%s} requires %s but it will never be"
7489 N_(
"Requirement {%s} mentions %s but it will never be there."),
7552 N_(
"Requirements {%s} and {%s} are the same."),
7596 if (
out !=
nullptr) {
7603 if (
out !=
nullptr) {
7716 return psource1->value.max_tile_total_units ==
psource2->value.max_tile_total_units;
7718 return psource1->value.max_tile_top_units ==
psource2->value.max_tile_top_units;
7764 static char buffer[10];
8054 Q_(
"?utflag:\"%s\" units"),
8067 Q_(
"?ucflag:\"%s\" units"),
8069 psource->value.unitclassflag));
8077 switch (
psource->value.unit_state) {
8086 _(
"On livable tile"));
8100 _(
"On native tile"));
8106 _(
"In native extra"));
8115 "Invalid unit state property.");
8132 psource->value.min_hit_points);
8176 psource->value.minforeignpct);
8187 psource->value.max_tile_total_units),
8188 psource->value.max_tile_total_units);
8193 "<=%d units",
psource->value.max_tile_top_units),
8194 psource->value.max_tile_top_units);
8204 Q_(
"?terrflag:\"%s\" terrain"),
8211 Q_(
"?roadflag:\"%s\" road"),
8217 Q_(
"?extraflag:\"%s\" extra"),
8250 switch (
psource->value.citytile) {
8277 switch (
psource->value.citystatus) {
8304 switch (
psource->value.tilerel) {
8364 switch (target->
kind) {
8385 bool changed =
FALSE;
8500 "No req item found function for %s",
8524 "No req item found function for %s",
8532 if (
preq->present) {
8537 if (
preq->present) {
8564 log_error(
"Unhandled item_found value");
8576 switch (
preq->source.kind) {
8639 switch (
preq->source.kind) {
8642 if (
source->value.building ==
preq->source.value.building) {
8647 if (
source->value.building->genus ==
preq->source.value.impr_genus) {
8653 preq->source.value.impr_flag)) {
8672 switch (
preq->source.kind) {
8695 switch (
preq->source.kind) {
8724 switch (
preq->source.kind) {
8742 switch (
preq->source.kind) {
8753 preq->source.value.terrainalter)
8770 switch (
preq->source.kind) {
8772 return (
source->value.citytile ==
preq->source.value.citytile
8790 switch (
preq->source.kind) {
8838 if (
preq->source.value.diplrel ==
source->value.diplrel) {
8879 switch (
preq->source.kind) {
8900 switch (
source->value.unit_state) {
8911 if (
source->value.unit_state ==
preq->source.value.unit_state) {
8963 const int max_value)
8967 const int pres_start = (present ? 0 : max_value);
bool achievement_player_has(const struct achievement *pach, const struct player *pplayer)
struct achievement * achievement_by_number(int id)
int achievement_number(const struct achievement *pach)
const char * achievement_rule_name(struct achievement *pach)
struct achievement * achievement_by_rule_name(const char *name)
const char * achievement_name_translation(struct achievement *pach)
bool achievement_claimed(const struct achievement *pach)
const char * action_name_translation(const struct action *paction)
bool action_is_in_use(struct action *paction)
struct action * action_by_rule_name(const char *name)
const char * action_rule_name(const struct action *action)
const char * action_id_rule_name(action_id act_id)
int action_number(const struct action *action)
static struct action * action_by_number(action_id act_id)
void astr_free(struct astring *astr)
void astr_set(struct astring *astr, const char *format,...)
void astr_init(struct astring *astr)
static const char * astr_str(const struct astring *astr) fc__attribute((nonnull(1)))
#define BV_ISSET(bv, bit)
const char * textcalfrag(int frag)
const char * textyear(int year)
citizens citizens_nation_foreign(const struct city *pcity)
#define citizens_iterate_end
#define citizens_iterate(_pcity, _pslot, _nationality)
bool city_has_building(const struct city *pcity, const struct impr_type *pimprove)
Output_type_id output_type_by_identifier(const char *id)
const char * get_output_identifier(Output_type_id output)
const char * get_output_name(Output_type_id output)
int city_map_radius_sq_get(const struct city *pcity)
#define city_tile(_pcity_)
static citizens city_size_get(const struct city *pcity)
#define city_owner(_pcity_)
static bool is_city_center(const struct city *pcity, const struct tile *ptile)
#define city_tile_iterate(_nmap, _radius_sq, _city_tile, _tile)
#define city_tile_iterate_end
#define city_built_iterate(_pcity, _p)
#define city_built_iterate_end
int counter_index(const struct counter *pcount)
const char * counter_name_translation(const struct counter *counter)
struct counter * counter_by_rule_name(const char *name)
const char * counter_rule_name(struct counter *pcount)
struct counter * counter_by_id(int id)
int counter_id(struct counter *pcount)
int city_culture(const struct city *pcity)
int player_culture(const struct player *plr)
struct unit struct city struct unit * target_unit
struct unit struct city struct unit struct tile * target_tile
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id struct unit struct unit * punit
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id struct unit struct unit int const struct action *paction struct unit struct city * pcity
int get_world_bonus(enum effect_type effect_type)
static bool is_server(void)
signed short Continent_id
#define PL_(String1, String2, n)
const char * government_name_translation(const struct government *pgovern)
struct government * government_by_number(const Government_type_id gov)
struct government * government_of_player(const struct player *pplayer)
Government_type_id government_number(const struct government *pgovern)
const char * government_rule_name(const struct government *pgovern)
struct government * government_by_rule_name(const char *name)
static GtkWidget * source
struct impr_type * improvement_by_number(const Impr_type_id id)
bool great_wonder_is_built(const struct impr_type *pimprove)
bool great_wonder_is_destroyed(const struct impr_type *pimprove)
bool wonder_is_lost(const struct player *pplayer, const struct impr_type *pimprove)
bool wonder_is_built(const struct player *pplayer, const struct impr_type *pimprove)
Impr_type_id improvement_number(const struct impr_type *pimprove)
bool can_improvement_go_obsolete(const struct impr_type *pimprove)
const char * improvement_rule_name(const struct impr_type *pimprove)
struct city * city_from_wonder(const struct player *pplayer, const struct impr_type *pimprove)
int impr_build_shield_cost(const struct city *pcity, const struct impr_type *pimprove)
bool is_wonder(const struct impr_type *pimprove)
bool is_great_wonder(const struct impr_type *pimprove)
bool improvement_obsolete(const struct player *pplayer, const struct impr_type *pimprove, const struct city *pcity)
bool improvement_has_flag(const struct impr_type *pimprove, enum impr_flag_id flag)
struct impr_type * improvement_by_rule_name(const char *name)
const char * improvement_name_translation(const struct impr_type *pimprove)
bool great_wonder_is_available(const struct impr_type *pimprove)
#define fc_assert_msg(condition, message,...)
#define fc_assert(condition)
#define fc_assert_ret_val(condition, val)
#define log_normal(message,...)
#define log_error(message,...)
#define fc_assert_ret_val_msg(condition, val, message,...)
int sq_map_distance(const struct tile *tile0, const struct tile *tile1)
bool is_tiles_adjacent(const struct tile *tile0, const struct tile *tile1)
int map_signed_latitude(const struct tile *ptile)
bool same_pos(const struct tile *tile1, const struct tile *tile2)
int get_island_surrounder(Continent_id id)
int get_lake_surrounder(Continent_id id)
int map_distance(const struct tile *tile0, const struct tile *tile1)
#define current_topo_has_flag(flag)
#define range_adjc_iterate(nmap, center_tile, range, itr_tile)
#define MAP_MAX_REAL_LATITUDE(_nmap)
#define range_adjc_iterate_end
#define square_iterate(nmap, center_tile, radius, tile_itr)
#define cardinal_adjc_iterate_end
#define adjc_iterate(nmap, center_tile, itr_tile)
#define is_whole_continent_known(cont)
#define square_iterate_end
#define cardinal_adjc_iterate(nmap, center_tile, itr_tile)
#define circle_iterate(nmap, center_tile, sq_radius, tile_itr)
#define current_wrap_has_flag(flag)
#define is_whole_ocean_known(ocean)
#define MAP_MIN_REAL_LATITUDE(_nmap)
#define circle_iterate_end
const char * move_points_text(int mp, bool reduce)
bool can_unit_exist_at_tile(const struct civ_map *nmap, const struct unit *punit, const struct tile *ptile)
bool is_native_tile(const struct unit_type *punittype, const struct tile *ptile)
struct nation_group * nation_group_by_rule_name(const char *name)
const char * nation_rule_name(const struct nation_type *pnation)
Nation_type_id nation_number(const struct nation_type *pnation)
const char * nation_adjective_translation(const struct nation_type *pnation)
struct nation_type * nation_by_number(const Nation_type_id nation)
const char * nation_group_rule_name(const struct nation_group *pgroup)
struct nation_type * nation_of_player(const struct player *pplayer)
bool nation_is_in_group(const struct nation_type *pnation, const struct nation_group *pgroup)
const char * nation_group_name_translation(const struct nation_group *pgroup)
struct nation_type * nation_by_rule_name(const char *name)
struct nation_group * nation_group_by_number(int id)
int nation_group_number(const struct nation_group *pgroup)
#define NO_NATION_SELECTED
bool player_knows_techs_with_flag(const struct player *pplayer, enum tech_flag_id flag)
bool player_has_state(const struct player *pplayer, enum plrstate_type state)
bv_diplrel_all_reqs diplrel_req_contradicts(const struct requirement *req)
int diplrel_by_rule_name(const char *value)
bool players_on_same_team(const struct player *pplayer1, const struct player *pplayer2)
bool is_diplrel_to_other(const struct player *pplayer, int diplrel)
bool player_has_flag(const struct player *pplayer, enum plr_flag_id flag)
const char * diplrel_name_translation(int value)
bool is_diplrel_between(const struct player *player1, const struct player *player2, int diplrel)
int player_age(const struct player *pplayer)
bool pplayers_allied(const struct player *pplayer, const struct player *pplayer2)
struct player * player_slot_get_player(const struct player_slot *pslot)
const char * diplrel_rule_name(int value)
#define players_iterate_end
#define players_iterate(_pplayer)
#define player_nation(_plr_)
#define players_iterate_alive_end
#define players_iterate_alive(_pplayer)
static enum req_item_found terrain_type_found(const struct requirement *preq, const struct universal *source)
bool universal_never_there(const struct universal *source)
static enum fc_tristate is_unitclass_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_unitflag_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
bool universal_is_relevant_to_requirement(const struct requirement *req, const struct universal *source)
static enum fc_tristate is_futuretechs_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
#define EXTRACT_INFO(req)
bool is_req_in_vec(const struct requirement *req, const struct requirement_vector *vec)
int universal_build_shield_cost(const struct city *pcity, const struct universal *target)
static enum fc_tristate is_terrainflag_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum req_item_found city_tile_found(const struct requirement *preq, const struct universal *source)
struct req_vec_problem * req_vec_get_first_contradiction(const struct requirement_vector *vec, requirement_vector_number get_num, const void *parent_item)
static universal_found universal_found_function[VUT_COUNT]
static enum req_unchanging_status unchanging_local(const struct civ_map *nmap, enum req_unchanging_status def, const struct req_context *context, const struct requirement *req)
const struct req_context * req_context_empty(void)
static enum fc_tristate is_action_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum req_item_found unit_type_found(const struct requirement *preq, const struct universal *source)
void universal_extraction(const struct universal *source, int *kind, int *value)
static int num_player_buildings(const struct player *pplayer, const struct impr_type *building)
static enum fc_tristate is_tech_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_none_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static int num_continent_buildings(const struct player *pplayer, int continent, const struct impr_type *building)
static enum fc_tristate is_minveteran_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
const char * req_to_fstring(const struct requirement *req, struct astring *astr)
static enum fc_tristate is_counter_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
req_vec_num_in_item req_vec_vector_number(const void *parent_item, const struct requirement_vector *vec)
static bool present_implies_not_present(const struct requirement *req1, const struct requirement *req2)
enum fc_tristate tri_req_active(const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
struct requirement_vector * req_vec_by_number(const void *parent_item, req_vec_num_in_item number)
bool universal_fulfills_requirements(bool check_necessary, const struct requirement_vector *reqs, const struct universal *source)
static bool activity_is_valid_in_requirement(enum unit_activity act)
enum fc_tristate tri_reqs_cb_active(const struct req_context *context, const struct req_context *other_context, const struct requirement_vector *reqs, struct requirement_vector *maybe_reqs, req_tester_cb tester, void *data, int n_data)
static enum fc_tristate is_minsize_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_ai_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum req_unchanging_status unchanging_noally(const struct civ_map *nmap, enum req_unchanging_status def, const struct req_context *context, const struct requirement *req)
static enum fc_tristate is_max_distance_sq_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
bool req_vec_change_apply(const struct req_vec_change *modification, requirement_vector_by_number getter, const void *parent_item)
void universal_copy(struct universal *dst, const struct universal *src)
static enum fc_tristate is_minculture_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum req_unchanging_status unchanging_building(const struct civ_map *nmap, enum req_unchanging_status def, const struct req_context *context, const struct requirement *req)
static enum fc_tristate is_terrain_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
bool are_requirements_equal(const struct requirement *req1, const struct requirement *req2)
static enum fc_tristate is_minforeignpct_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_diplrel_unitany_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_minyear_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum req_item_found extra_type_found(const struct requirement *preq, const struct universal *source)
static enum fc_tristate is_buildingflag_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_diplrel_unitany_in_range(const struct tile *target_tile, const struct player *other_player, enum req_range range, int diplrel)
const char * req_vec_change_translation(const struct req_vec_change *change, const requirement_vector_namer namer)
struct requirement req_from_str(const char *type, const char *range, bool survives, bool present, bool quiet, const char *value)
struct req_vec_problem * req_vec_suggest_repair(const struct requirement_vector *vec, requirement_vector_number get_num, const void *parent_item)
static enum fc_tristate is_wrap_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
void universal_value_from_str(struct universal *source, const char *value)
static enum fc_tristate is_buildingflag_in_city(const struct city *pcity, enum impr_flag_id flag)
static enum fc_tristate is_latitude_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
void req_get_values(const struct requirement *req, int *type, int *range, bool *survives, bool *present, bool *quiet, int *value)
struct requirement req_from_values(int type, int range, bool survives, bool present, bool quiet, int value)
static enum fc_tristate is_nationality_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
const char * universal_rule_name(const struct universal *psource)
static enum req_unchanging_status unchanging_present(const struct civ_map *nmap, enum req_unchanging_status def, const struct req_context *context, const struct requirement *req)
bool universal_replace_in_req_vec(struct requirement_vector *reqs, const struct universal *to_replace, const struct universal *replacement)
static enum req_item_found action_found(const struct requirement *preq, const struct universal *source)
static enum fc_tristate is_minmovefrags_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_diplrel_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
bool are_requirements_contradictions(const struct requirement *req1, const struct requirement *req2)
struct req_vec_problem * req_vec_problem_new(int num_suggested_solutions, const char *descr,...)
static enum fc_tristate is_buildinggenus_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_diplrel_in_range(const struct player *target_player, const struct player *other_player, enum req_range range, int diplrel)
static enum fc_tristate is_mintechs_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
bool is_req_active(const struct req_context *context, const struct req_context *other_context, const struct requirement *req, const enum req_problem_type prob_type)
static enum fc_tristate is_originalowner_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static bool are_bounds_contradictions(int bound1, bool is_upper1, int bound2, bool is_upper2)
static enum fc_tristate is_diplrel_tile_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
bool universal_is_legal_in_requirement(const struct universal *univ)
enum fc_tristate default_tester_cb(const struct req_context *context, const struct req_context *other_context, const struct requirement *req, void *data, int n_data)
static enum fc_tristate tri_req_present(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
int requirement_kind_ereq(const int value, const enum req_range range, const bool present, const int max_value)
static enum fc_tristate is_achievement_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
void req_vec_problem_free(struct req_vec_problem *issue)
static struct req_def req_definitions[VUT_COUNT]
static bool impr_contra_flag(const struct requirement *impr_req, const struct requirement *flag_req)
bool are_reqs_active(const struct req_context *context, const struct req_context *other_context, const struct requirement_vector *reqs, const enum req_problem_type prob_type)
static enum req_item_found improvement_found(const struct requirement *preq, const struct universal *source)
struct req_vec_problem * req_vec_get_first_missing_univ(const struct requirement_vector *vec, requirement_vector_number get_num, const void *parent_item)
static enum req_item_found mincities_found(const struct requirement *preq, const struct universal *source)
static enum fc_tristate is_extraflag_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
enum req_unchanging_status is_req_preventing(const struct req_context *context, const struct req_context *other_context, const struct requirement *req, enum req_problem_type prob_type)
static enum fc_tristate is_plr_state_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static bool players_in_same_range(const struct player *pplayer1, const struct player *pplayer2, enum req_range range)
struct requirement * req_vec_first_contradiction_in_vec(const struct requirement *req, const struct requirement_vector *vec)
enum req_item_found(* universal_found)(const struct requirement *, const struct universal *)
static enum fc_tristate is_terrainclass_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
struct universal universal_by_number(const enum universals_n kind, const int value)
static enum fc_tristate is_roadflag_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
enum req_item_found universal_fulfills_requirement(const struct requirement *preq, const struct universal *source)
static enum fc_tristate is_building_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_age_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
bool are_reqs_active_ranges(const enum req_range min_range, const enum req_range max_range, const struct req_context *context, const struct req_context *other_context, const struct requirement_vector *reqs, const enum req_problem_type prob_type)
static enum fc_tristate is_gov_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_diplrel_tile_o_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_good_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_unitstate_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static bool city_center_contra(const struct requirement *cc_req, const struct requirement *ct_req)
static enum req_item_found ustate_found(const struct requirement *preq, const struct universal *source)
static enum fc_tristate is_terrainalter_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_unittype_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
bool req_vec_wants_type(const struct requirement_vector *reqs, enum universals_n kind)
static int num_world_buildings_total(const struct impr_type *building)
static enum req_unchanging_status unchanging_citytile(const struct civ_map *nmap, enum req_unchanging_status def, const struct req_context *context, const struct requirement *req)
static enum req_item_found output_type_found(const struct requirement *preq, const struct universal *source)
static enum fc_tristate is_citystatus_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_tile_rel_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
struct req_vec_problem * req_vec_get_first_redundant_req(const struct requirement_vector *vec, requirement_vector_number get_num, const void *parent_item)
static enum fc_tristate is_mincities_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static bool is_city_in_tile(const struct tile *ptile, const struct city *pcity)
bool does_req_contradicts_reqs(const struct requirement *req, const struct requirement_vector *vec)
static enum req_item_found government_found(const struct requirement *preq, const struct universal *source)
static enum fc_tristate does_region_surrounder_match(Continent_id cont, Continent_id surrounder)
static enum fc_tristate is_extra_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum req_unchanging_status unchanging_world(const struct civ_map *nmap, enum req_unchanging_status def, const struct req_context *context, const struct requirement *req)
static enum fc_tristate is_mincalfrag_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_maxtopunitsontile_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_activity_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
bool are_universals_equal(const struct universal *psource1, const struct universal *psource2)
static enum fc_tristate is_max_region_tiles_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
struct req_vec_problem * req_vec_problem_new_transl(int num_suggested_solutions, const char *description, const char *description_translated)
static enum fc_tristate is_nationgroup_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum req_item_found unit_activity_found(const struct requirement *preq, const struct universal *source)
static enum fc_tristate is_minhitpoints_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
enum fc_tristate tri_req_active_turns(int pass, int period, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_outputtype_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
bool universals_say_everything(struct requirement_vector *reqs, struct universal *unis, size_t n_unis)
static enum fc_tristate is_unitclassflag_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum req_item_found nation_found(const struct requirement *preq, const struct universal *source)
static enum fc_tristate is_govflag_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
const char * universal_type_rule_name(const struct universal *psource)
static enum fc_tristate is_maxtotalunitsontile_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
void universal_found_functions_init(void)
static enum fc_tristate is_style_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum req_item_found unit_class_found(const struct requirement *preq, const struct universal *source)
#define IS_REQ_ACTIVE_VARIANT_ASSERT(_kind)
int universal_number(const struct universal *source)
static enum fc_tristate is_techflag_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
bool universal_is_mentioned_by_requirements(const struct requirement_vector *reqs, const struct universal *psource)
static enum fc_tristate is_citytile_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum req_item_found diplrel_found(const struct requirement *preq, const struct universal *source)
bool req_vec_is_impossible_to_fulfill(const struct requirement_vector *reqs)
bool req_implies_req(const struct requirement *req1, const struct requirement *req2)
static enum fc_tristate is_specialist_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
void req_copy(struct requirement *dst, const struct requirement *src)
enum req_unchanging_status is_req_unchanging(const struct req_context *context, const struct requirement *req)
static bool player_has_ever_built(const struct player *pplayer, const struct impr_type *building)
enum fc_tristate(* is_req_active_cb)(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static bool nation_contra_group(const struct requirement *nation_req, const struct requirement *group_req)
static enum fc_tristate is_serversetting_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_plr_flag_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_nation_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
bool req_is_impossible_to_fulfill(const struct requirement *req)
static bool are_tiles_in_range(const struct tile *tile1, const struct tile *tile2, enum req_range range)
static bool are_requirements_opposites(const struct requirement *req1, const struct requirement *req2)
static enum fc_tristate is_form_age_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static int num_world_buildings(const struct impr_type *building)
static enum req_unchanging_status unchanging_citystatus(const struct civ_map *nmap, enum req_unchanging_status def, const struct req_context *context, const struct requirement *req)
static enum fc_tristate is_topology_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
static enum fc_tristate is_diplrel_unitany_o_req_active(const struct civ_map *nmap, const struct req_context *context, const struct req_context *other_context, const struct requirement *req)
const char * universal_name_translation(const struct universal *psource, char *buf, size_t bufsz)
struct universal universal_by_rule_name(const char *kind, const char *value)
bool universals_mean_unfulfilled(struct requirement_vector *reqs, struct universal *unis, size_t n_unis)
struct req_vec_problem * req_vec_suggest_improvement(const struct requirement_vector *vec, requirement_vector_number get_num, const void *parent_item)
static bool impr_contra_genus(const struct requirement *impr_req, const struct requirement *genus_req)
enum fc_tristate(* req_tester_cb)(const struct req_context *context, const struct req_context *other_context, const struct requirement *req, void *data, int n_data)
#define requirement_diplrel_ereq(_id_, _range_, _present_)
signed char req_vec_num_in_item
req_vec_num_in_item a requirement vectors number in an item.
req_vec_num_in_item(* requirement_vector_number)(const void *parent_item, const struct requirement_vector *vec)
const char *(* requirement_vector_namer)(req_vec_num_in_item number)
#define universal_is_mentioned_by_requirement(preq, psource)
enum req_unchanging_status(* req_unchanging_cond_cb)(const struct civ_map *nmap, enum req_unchanging_status def, const struct req_context *context, const struct requirement *req)
#define requirement_vector_iterate_end
struct universal universal_by_number(const enum universals_n kind, const int value)
struct requirement_vector *(* requirement_vector_by_number)(const void *parent_item, req_vec_num_in_item number)
#define requirement_vector_iterate(req_vec, preq)
struct research * research_get(const struct player *pplayer)
enum tech_state research_invention_state(const struct research *presearch, Tech_type_id tech)
bool road_has_flag(const struct road_type *proad, enum road_flag_id flag)
bool is_road_flag_near_tile(const struct civ_map *nmap, const struct tile *ptile, enum road_flag_id flag)
bool is_road_flag_card_near(const struct civ_map *nmap, const struct tile *ptile, enum road_flag_id flag)
bool ssetv_setting_has_value(ssetv val)
ssetv ssetv_by_rule_name(const char *name)
const char * ssetv_rule_name(ssetv val)
const char * ssetv_human_readable(ssetv val, bool present)
enum fc_tristate fc_tristate_or(enum fc_tristate one, enum fc_tristate two)
#define BOOL_TO_TRISTATE(tri)
struct specialist * specialist_by_rule_name(const char *name)
struct specialist * specialist_by_number(const Specialist_type_id id)
Specialist_type_id specialist_number(const struct specialist *sp)
const char * specialist_rule_name(const struct specialist *sp)
const char * specialist_plural_translation(const struct specialist *sp)
struct packet_game_info info
struct packet_calendar_info calendar
bool global_advances[A_LAST]
enum req_unchanging_status unchanging
req_unchanging_cond_cb unchanging_cond
const is_req_active_cb cb
req_vec_num_in_item vector_number
enum req_vec_change_operation operation
int num_suggested_solutions
char description_translated[500]
const struct unit_type * utype
struct nation_style * style_by_rule_name(const char *name)
struct nation_style * style_by_number(int id)
const char * style_name_translation(const struct nation_style *pstyle)
const char * style_rule_name(const struct nation_style *pstyle)
int style_number(const struct nation_style *pstyle)
int fc_snprintf(char *str, size_t n, const char *format,...)
size_t fc_strlcpy(char *dest, const char *src, size_t n)
int fc_strcasecmp(const char *str0, const char *str1)
size_t fc_strlcat(char *dest, const char *src, size_t n)
int cat_snprintf(char *str, size_t n, const char *format,...)
int fc_vsnprintf(char *str, size_t n, const char *format, va_list ap)
struct advance * advance_by_number(const Tech_type_id atype)
bool advance_has_flag(Tech_type_id tech, enum tech_flag_id flag)
const char * advance_name_translation(const struct advance *padvance)
const char * advance_rule_name(const struct advance *padvance)
struct advance * advance_by_rule_name(const char *name)
Tech_type_id advance_number(const struct advance *padvance)
struct terrain * terrain_by_rule_name(const char *name)
bool is_terrain_class_near_tile(const struct civ_map *nmap, const struct tile *ptile, enum terrain_class tclass)
bool is_terrain_class_card_near(const struct civ_map *nmap, const struct tile *ptile, enum terrain_class tclass)
const char * terrain_class_name_translation(enum terrain_class tclass)
const char * terrain_name_translation(const struct terrain *pterrain)
struct terrain * terrain_by_number(const Terrain_type_id type)
bool terrain_can_support_alteration(const struct terrain *pterrain, enum terrain_alteration alter)
bool is_terrain_card_near(const struct civ_map *nmap, const struct tile *ptile, const struct terrain *pterrain, bool check_self)
const char * terrain_rule_name(const struct terrain *pterrain)
enum terrain_class terrain_type_terrain_class(const struct terrain *pterrain)
bool is_terrain_flag_near_tile(const struct civ_map *nmap, const struct tile *ptile, enum terrain_flag_id flag)
Terrain_type_id terrain_number(const struct terrain *pterrain)
bool is_terrain_flag_card_near(const struct civ_map *nmap, const struct tile *ptile, enum terrain_flag_id flag)
bool is_terrain_near_tile(const struct civ_map *nmap, const struct tile *ptile, const struct terrain *pterrain, bool check_self)
#define terrain_has_flag(terr, flag)
bool tile_has_extra_flag(const struct tile *ptile, enum extra_flag_id flag)
bool tile_has_native_base(const struct tile *ptile, const struct unit_type *punittype)
bool tile_has_road_flag(const struct tile *ptile, enum road_flag_id flag)
struct city * tile_city(const struct tile *ptile)
#define tile_terrain(_tile)
#define tile_continent(_tile)
#define tile_has_extra(ptile, pextra)
#define tile_owner(_tile)
bool goods_can_be_provided(const struct city *pcity, const struct goods_type *pgood, const struct unit *punit)
Goods_type_id goods_number(const struct goods_type *pgood)
bool goods_has_flag(const struct goods_type *pgood, enum goods_flag_id flag)
struct goods_type * goods_by_rule_name(const char *name)
const char * goods_rule_name(struct goods_type *pgood)
const char * goods_name_translation(struct goods_type *pgood)
struct goods_type * goods_by_number(Goods_type_id id)
bool city_receives_goods(const struct city *pcity, const struct goods_type *pgood)
#define trade_partners_iterate_end
#define trade_partners_iterate(c, p)
const struct unit_type * utype
struct nation_style * style
struct specialist * specialist
enum impr_genus_id impr_genus
enum citytile_type citytile
struct nation_group * nationgroup
struct extra_type * extra
enum wrap_flag wrap_property
enum plrstate_type plrstate
enum tilerel_type tilerel
struct nation_type * nation
struct government * govern
struct nation_type * origowner
enum impr_flag_id impr_flag
enum citystatus_type citystatus
const struct impr_type * building
struct achievement * achievement
enum unit_activity activity
enum ustate_prop unit_state
Output_type_id outputtype
enum topo_flag topo_property
struct unit_class * uclass
struct nation_type * nationality
enum plr_flag_id plr_flag
int get_transporter_occupancy(const struct unit *ptrans)
bool unit_transported(const struct unit *pcargo)
#define unit_list_iterate(unitlist, punit)
#define unit_list_iterate_end
const char * uclass_name_translation(const struct unit_class *pclass)
const struct unit_type * unit_type_get(const struct unit *punit)
bool unit_has_class_flag(const struct unit *punit, enum unit_class_flag_id flag)
struct unit_type * unit_type_by_rule_name(const char *name)
bool uclass_flag_is_in_use(enum unit_class_flag_id ucflag)
struct unit_class * uclass_by_number(const Unit_Class_id id)
const char * utype_rule_name(const struct unit_type *punittype)
struct unit_class * unit_class_get(const struct unit *punit)
struct unit_type * utype_by_number(const Unit_type_id id)
bool unit_has_type_flag(const struct unit *punit, enum unit_type_flag_id flag)
const char * uclass_rule_name(const struct unit_class *pclass)
Unit_type_id utype_number(const struct unit_type *punittype)
struct unit_class * unit_class_by_rule_name(const char *s)
bool utype_flag_is_in_use(enum unit_type_flag_id uflag)
int utype_build_shield_cost(const struct city *pcity, const struct player *pplayer, const struct unit_type *punittype)
Unit_Class_id uclass_number(const struct unit_class *pclass)
const char * utype_name_translation(const struct unit_type *punittype)
static bool uclass_has_flag(const struct unit_class *punitclass, enum unit_class_flag_id flag)
static bool utype_has_flag(const struct unit_type *punittype, int flag)
bool victory_enabled(enum victory_condition_type victory)