40#define U_LAST MAX_NUM_UNITS
56#define UNIT_MAX_PARADROP_RANGE (65535 - 1)
59#define SPECENUM_NAME unit_class_flag_id
60#define SPECENUM_VALUE0 UCF_TERRAIN_SPEED
61#define SPECENUM_VALUE0NAME N_("?uclassflag:TerrainSpeed")
62#define SPECENUM_VALUE1 UCF_TERRAIN_DEFENSE
63#define SPECENUM_VALUE1NAME N_("?uclassflag:TerrainDefense")
64#define SPECENUM_VALUE2 UCF_DAMAGE_SLOWS
65#define SPECENUM_VALUE2NAME N_("?uclassflag:DamageSlows")
67#define SPECENUM_VALUE3 UCF_CAN_OCCUPY_CITY
68#define SPECENUM_VALUE3NAME N_("?uclassflag:CanOccupyCity")
69#define SPECENUM_VALUE4 UCF_BUILD_ANYWHERE
70#define SPECENUM_VALUE4NAME N_("?uclassflag:BuildAnywhere")
71#define SPECENUM_VALUE5 UCF_UNREACHABLE
72#define SPECENUM_VALUE5NAME N_("?uclassflag:Unreachable")
74#define SPECENUM_VALUE6 UCF_COLLECT_RANSOM
75#define SPECENUM_VALUE6NAME N_("?uclassflag:CollectRansom")
77#define SPECENUM_VALUE7 UCF_ZOC
78#define SPECENUM_VALUE7NAME N_("?uclassflag:ZOC")
80#define SPECENUM_VALUE8 UCF_DOESNT_OCCUPY_TILE
81#define SPECENUM_VALUE8NAME N_("?uclassflag:DoesntOccupyTile")
83#define SPECENUM_VALUE9 UCF_ATTACK_NON_NATIVE
84#define SPECENUM_VALUE9NAME N_("?uclassflag:AttackNonNative")
86#define SPECENUM_VALUE10 UCF_KILLCITIZEN
87#define SPECENUM_VALUE10NAME N_("?uclassflag:KillCitizen")
89#define SPECENUM_VALUE11 UCF_HUT_FRIGHTEN
90#define SPECENUM_VALUE11NAME N_("?uclassflag:HutFrighten")
92#define SPECENUM_VALUE12 UCF_NONNAT_BOMBARD_TGT
93#define SPECENUM_VALUE12NAME N_("?uclassflag:NonNatBombardTgt")
95#define SPECENUM_VALUE13 UCF_USER_FLAG_1
96#define SPECENUM_VALUE14 UCF_USER_FLAG_2
97#define SPECENUM_VALUE15 UCF_USER_FLAG_3
98#define SPECENUM_VALUE16 UCF_USER_FLAG_4
99#define SPECENUM_VALUE17 UCF_USER_FLAG_5
100#define SPECENUM_VALUE18 UCF_USER_FLAG_6
101#define SPECENUM_VALUE19 UCF_USER_FLAG_7
102#define SPECENUM_VALUE20 UCF_USER_FLAG_8
103#define SPECENUM_VALUE21 UCF_USER_FLAG_9
104#define SPECENUM_VALUE22 UCF_USER_FLAG_10
105#define SPECENUM_VALUE23 UCF_USER_FLAG_11
106#define SPECENUM_VALUE24 UCF_USER_FLAG_12
107#define SPECENUM_VALUE25 UCF_USER_FLAG_13
108#define SPECENUM_VALUE26 UCF_USER_FLAG_14
109#define SPECENUM_VALUE27 UCF_USER_FLAG_15
110#define SPECENUM_VALUE28 UCF_USER_FLAG_16
111#define SPECENUM_VALUE29 UCF_USER_FLAG_17
112#define SPECENUM_VALUE30 UCF_USER_FLAG_18
113#define SPECENUM_VALUE31 UCF_USER_FLAG_19
114#define SPECENUM_VALUE32 UCF_USER_FLAG_20
115#define SPECENUM_VALUE33 UCF_USER_FLAG_21
116#define SPECENUM_VALUE34 UCF_USER_FLAG_22
117#define SPECENUM_VALUE35 UCF_USER_FLAG_23
118#define SPECENUM_VALUE36 UCF_USER_FLAG_24
119#define SPECENUM_VALUE37 UCF_USER_FLAG_25
122#define SPECENUM_COUNT UCF_COUNT
123#define SPECENUM_NAMEOVERRIDE
124#define SPECENUM_BITVECTOR bv_unit_class_flags
127#define UCF_LAST_USER_FLAG UCF_USER_FLAG_25
128#define MAX_NUM_USER_UCLASS_FLAGS (UCF_LAST_USER_FLAG \
129 - UCF_USER_FLAG_1 + 1)
132#define SPECENUM_NAME unit_move_type
133#define SPECENUM_VALUE0 UMT_LAND
134#define SPECENUM_VALUE0NAME "Land"
135#define SPECENUM_VALUE1 UMT_SEA
136#define SPECENUM_VALUE1NAME "Sea"
137#define SPECENUM_VALUE2 UMT_BOTH
138#define SPECENUM_VALUE2NAME "Both"
188#define SPECENUM_NAME unit_type_flag_id
190#define SPECENUM_VALUE0 UTYF_NOZOC
191#define SPECENUM_VALUE0NAME N_("?unitflag:HasNoZOC")
192#define SPECENUM_VALUE1 UTYF_IGZOC
194#define SPECENUM_VALUE1NAME N_("?unitflag:IgZOC")
195#define SPECENUM_VALUE2 UTYF_CIVILIAN
196#define SPECENUM_VALUE2NAME N_("?unitflag:NonMil")
197#define SPECENUM_VALUE3 UTYF_IGTER
199#define SPECENUM_VALUE3NAME N_("?unitflag:IgTer")
200#define SPECENUM_VALUE4 UTYF_FIELDUNIT
201#define SPECENUM_VALUE4NAME N_("?unitflag:FieldUnit")
204#define SPECENUM_VALUE5 UTYF_PROVOKING
205#define SPECENUM_VALUE5NAME N_("?unitflag:Provoking")
207#define SPECENUM_VALUE6 UTYF_NEVER_PROTECTS
208#define SPECENUM_VALUE6NAME N_("?unitflag:NeverProtects")
210#define SPECENUM_VALUE7 UTYF_WORKERS
211#define SPECENUM_VALUE7NAME N_("?unitflag:Workers")
212#define SPECENUM_VALUE8 UTYF_DIPLOMAT
213#define SPECENUM_VALUE8NAME N_("?unitflag:Diplomat")
215#define SPECENUM_VALUE9 UTYF_COAST_STRICT
216#define SPECENUM_VALUE9NAME N_("?unitflag:CoastStrict")
218#define SPECENUM_VALUE10 UTYF_COAST
219#define SPECENUM_VALUE10NAME N_("?unitflag:Coast")
221#define SPECENUM_VALUE11 UTYF_SHIELD2GOLD
222#define SPECENUM_VALUE11NAME N_("?unitflag:Shield2Gold")
224#define SPECENUM_VALUE12 UTYF_SPY
225#define SPECENUM_VALUE12NAME N_("?unitflag:Spy")
227#define SPECENUM_VALUE13 UTYF_ONLY_NATIVE_ATTACK
228#define SPECENUM_VALUE13NAME N_("?unitflag:Only_Native_Attack")
230#define SPECENUM_VALUE14 UTYF_FANATIC
231#define SPECENUM_VALUE14NAME N_("?unitflag:Fanatic")
233#define SPECENUM_VALUE15 UTYF_GAMELOSS
234#define SPECENUM_VALUE15NAME N_("?unitflag:GameLoss")
236#define SPECENUM_VALUE16 UTYF_UNIQUE
237#define SPECENUM_VALUE16NAME N_("?unitflag:Unique")
241#define SPECENUM_VALUE17 UTYF_EVAC_FIRST
242#define SPECENUM_VALUE17NAME N_("?unitflag:EvacuateFirst")
244#define SPECENUM_VALUE18 UTYF_SUPERSPY
245#define SPECENUM_VALUE18NAME N_("?unitflag:SuperSpy")
247#define SPECENUM_VALUE19 UTYF_NOHOME
248#define SPECENUM_VALUE19NAME N_("?unitflag:NoHome")
250#define SPECENUM_VALUE20 UTYF_UNRESERVED
251#define SPECENUM_VALUE20NAME "Unreserved"
253#define SPECENUM_VALUE21 UTYF_CITYBUSTER
254#define SPECENUM_VALUE21NAME N_("?unitflag:CityBuster")
256#define SPECENUM_VALUE22 UTYF_NOBUILD
257#define SPECENUM_VALUE22NAME N_("?unitflag:NoBuild")
260#define SPECENUM_VALUE23 UTYF_BADWALLATTACKER
261#define SPECENUM_VALUE23NAME N_("?unitflag:BadWallAttacker")
263#define SPECENUM_VALUE24 UTYF_BADCITYDEFENDER
264#define SPECENUM_VALUE24NAME N_("?unitflag:BadCityDefender")
266#define SPECENUM_VALUE25 UTYF_BARBARIAN_ONLY
267#define SPECENUM_VALUE25NAME N_("?unitflag:BarbarianOnly")
269#define SPECENUM_VALUE26 UTYF_NEWCITY_GAMES_ONLY
270#define SPECENUM_VALUE26NAME N_("?unitflag:NewCityGamesOnly")
272#define SPECENUM_VALUE27 UTYF_CANKILLESCAPING
273#define SPECENUM_VALUE27NAME N_("?unitflag:CanKillEscaping")
275#define SPECENUM_VALUE28 UTYF_RANDOM_MOVEMENT
276#define SPECENUM_VALUE28NAME N_("?unitflag:RandomMovement")
278#define SPECENUM_VALUE29 UTYF_FLAGLESS
279#define SPECENUM_VALUE29NAME N_("?unitflag:Flagless")
280#define SPECENUM_VALUE30 UTYF_PROVIDES_RANSOM
281#define SPECENUM_VALUE30NAME N_("?unitflag:ProvidesRansom")
283#define SPECENUM_VALUE31 UTYF_USER_FLAG_1
284#define SPECENUM_VALUE32 UTYF_USER_FLAG_2
285#define SPECENUM_VALUE33 UTYF_USER_FLAG_3
286#define SPECENUM_VALUE34 UTYF_USER_FLAG_4
287#define SPECENUM_VALUE35 UTYF_USER_FLAG_5
288#define SPECENUM_VALUE36 UTYF_USER_FLAG_6
289#define SPECENUM_VALUE37 UTYF_USER_FLAG_7
290#define SPECENUM_VALUE38 UTYF_USER_FLAG_8
291#define SPECENUM_VALUE39 UTYF_USER_FLAG_9
292#define SPECENUM_VALUE40 UTYF_USER_FLAG_10
293#define SPECENUM_VALUE41 UTYF_USER_FLAG_11
294#define SPECENUM_VALUE42 UTYF_USER_FLAG_12
295#define SPECENUM_VALUE43 UTYF_USER_FLAG_13
296#define SPECENUM_VALUE44 UTYF_USER_FLAG_14
297#define SPECENUM_VALUE45 UTYF_USER_FLAG_15
298#define SPECENUM_VALUE46 UTYF_USER_FLAG_16
299#define SPECENUM_VALUE47 UTYF_USER_FLAG_17
300#define SPECENUM_VALUE48 UTYF_USER_FLAG_18
301#define SPECENUM_VALUE49 UTYF_USER_FLAG_19
302#define SPECENUM_VALUE50 UTYF_USER_FLAG_20
303#define SPECENUM_VALUE51 UTYF_USER_FLAG_21
304#define SPECENUM_VALUE52 UTYF_USER_FLAG_22
305#define SPECENUM_VALUE53 UTYF_USER_FLAG_23
306#define SPECENUM_VALUE54 UTYF_USER_FLAG_24
307#define SPECENUM_VALUE55 UTYF_USER_FLAG_25
308#define SPECENUM_VALUE56 UTYF_USER_FLAG_26
309#define SPECENUM_VALUE57 UTYF_USER_FLAG_27
310#define SPECENUM_VALUE58 UTYF_USER_FLAG_28
311#define SPECENUM_VALUE59 UTYF_USER_FLAG_29
312#define SPECENUM_VALUE60 UTYF_USER_FLAG_30
313#define SPECENUM_VALUE61 UTYF_USER_FLAG_31
314#define SPECENUM_VALUE62 UTYF_USER_FLAG_32
315#define SPECENUM_VALUE63 UTYF_USER_FLAG_33
316#define SPECENUM_VALUE64 UTYF_USER_FLAG_34
317#define SPECENUM_VALUE65 UTYF_USER_FLAG_35
318#define SPECENUM_VALUE66 UTYF_USER_FLAG_36
319#define SPECENUM_VALUE67 UTYF_USER_FLAG_37
320#define SPECENUM_VALUE68 UTYF_USER_FLAG_38
321#define SPECENUM_VALUE69 UTYF_USER_FLAG_39
322#define SPECENUM_VALUE70 UTYF_USER_FLAG_40
323#define SPECENUM_VALUE71 UTYF_USER_FLAG_41
324#define SPECENUM_VALUE72 UTYF_USER_FLAG_42
325#define SPECENUM_VALUE73 UTYF_USER_FLAG_43
326#define SPECENUM_VALUE74 UTYF_USER_FLAG_44
327#define SPECENUM_VALUE75 UTYF_USER_FLAG_45
328#define SPECENUM_VALUE76 UTYF_USER_FLAG_46
329#define SPECENUM_VALUE77 UTYF_USER_FLAG_47
330#define SPECENUM_VALUE78 UTYF_USER_FLAG_48
331#define SPECENUM_VALUE79 UTYF_USER_FLAG_49
332#define SPECENUM_VALUE80 UTYF_USER_FLAG_50
333#define SPECENUM_VALUE81 UTYF_USER_FLAG_51
334#define SPECENUM_VALUE82 UTYF_USER_FLAG_52
337#define UTYF_LAST_USER_FLAG UTYF_USER_FLAG_52
338#define MAX_NUM_USER_UNIT_FLAGS (UTYF_LAST_USER_FLAG - UTYF_USER_FLAG_1 + 1)
339#define SPECENUM_NAMEOVERRIDE
340#define SPECENUM_NAME_UPDATER
341#define SPECENUM_BITVECTOR bv_unit_type_flags
356#define L_FIRST (UTYF_LAST_USER_FLAG + 1)
358#define SPECENUM_NAME unit_role_id
360#define SPECENUM_VALUE83 L_FIRSTBUILD
361#define SPECENUM_VALUE83NAME N_("?unitflag:FirstBuild")
363#define SPECENUM_VALUE84 L_EXPLORER
364#define SPECENUM_VALUE84NAME N_("?unitflag:Explorer")
366#define SPECENUM_VALUE85 L_HUT
367#define SPECENUM_VALUE85NAME N_("?unitflag:Hut")
369#define SPECENUM_VALUE86 L_HUT_TECH
370#define SPECENUM_VALUE86NAME N_("?unitflag:HutTech")
372#define SPECENUM_VALUE87 L_PARTISAN
373#define SPECENUM_VALUE87NAME N_("?unitflag:Partisan")
375#define SPECENUM_VALUE88 L_DEFEND_OK
376#define SPECENUM_VALUE88NAME N_("?unitflag:DefendOk")
378#define SPECENUM_VALUE89 L_DEFEND_GOOD
379#define SPECENUM_VALUE89NAME N_("?unitflag:DefendGood")
381#define SPECENUM_VALUE90 L_FERRYBOAT
382#define SPECENUM_VALUE90NAME N_("?unitflag:FerryBoat")
384#define SPECENUM_VALUE91 L_BARBARIAN
385#define SPECENUM_VALUE91NAME N_("?unitflag:Barbarian")
387#define SPECENUM_VALUE92 L_BARBARIAN_TECH
388#define SPECENUM_VALUE92NAME N_("?unitflag:BarbarianTech")
390#define SPECENUM_VALUE93 L_BARBARIAN_BOAT
391#define SPECENUM_VALUE93NAME N_("?unitflag:BarbarianBoat")
393#define SPECENUM_VALUE94 L_BARBARIAN_BOAT_TECH
394#define SPECENUM_VALUE94NAME N_("?unitflag:BarbarianBoatTech")
396#define SPECENUM_VALUE95 L_BARBARIAN_BUILD
397#define SPECENUM_VALUE95NAME N_("?unitflag:BarbarianBuild")
399#define SPECENUM_VALUE96 L_BARBARIAN_BUILD_TECH
400#define SPECENUM_VALUE96NAME N_("?unitflag:BarbarianBuildTech")
402#define SPECENUM_VALUE97 L_BARBARIAN_LEADER
403#define SPECENUM_VALUE97NAME N_("?unitflag:BarbarianLeader")
405#define SPECENUM_VALUE98 L_BARBARIAN_SEA
406#define SPECENUM_VALUE98NAME N_("?unitflag:BarbarianSea")
408#define SPECENUM_VALUE99 L_BARBARIAN_SEA_TECH
409#define SPECENUM_VALUE99NAME N_("?unitflag:BarbarianSeaTech")
411#define SPECENUM_VALUE100 L_START_CITIES
412#define SPECENUM_VALUE100NAME N_("?unitflag:CitiesStartUnit")
414#define SPECENUM_VALUE101 L_START_WORKER
415#define SPECENUM_VALUE101NAME N_("?unitflag:WorkerStartUnit")
417#define SPECENUM_VALUE102 L_START_EXPLORER
418#define SPECENUM_VALUE102NAME N_("?unitflag:ExplorerStartUnit")
420#define SPECENUM_VALUE103 L_START_KING
421#define SPECENUM_VALUE103NAME N_("?unitflag:KingStartUnit")
423#define SPECENUM_VALUE104 L_START_DIPLOMAT
424#define SPECENUM_VALUE104NAME N_("?unitflag:DiplomatStartUnit")
426#define SPECENUM_VALUE105 L_START_FERRY
427#define SPECENUM_VALUE105NAME N_("?unitflag:FerryStartUnit")
429#define SPECENUM_VALUE106 L_START_DEFEND_OK
430#define SPECENUM_VALUE106NAME N_("?unitflag:DefendOkStartUnit")
432#define SPECENUM_VALUE107 L_START_DEFEND_GOOD
433#define SPECENUM_VALUE107NAME N_("?unitflag:DefendGoodStartUnit")
435#define SPECENUM_VALUE108 L_START_ATTACK_FAST
436#define SPECENUM_VALUE108NAME N_("?unitflag:AttackFastStartUnit")
438#define SPECENUM_VALUE109 L_START_ATTACK_STRONG
439#define SPECENUM_VALUE109NAME N_("?unitflag:AttackStrongStartUnit")
441#define SPECENUM_VALUE110 L_HUNTER
442#define SPECENUM_VALUE110NAME N_("?unitflag:Hunter")
444#define SPECENUM_VALUE111 L_SETTLERS
445#define SPECENUM_VALUE111NAME N_("?unitflag:Settlers")
446#define L_LAST (L_SETTLERS + 1)
458#define SPECENUM_NAME combat_bonus_type
459#define SPECENUM_VALUE0 CBONUS_DEFENSE_MULTIPLIER
460#define SPECENUM_VALUE0NAME "DefenseMultiplier"
461#define SPECENUM_VALUE1 CBONUS_DEFENSE_DIVIDER
462#define SPECENUM_VALUE1NAME "DefenseDivider"
463#define SPECENUM_VALUE2 CBONUS_LOW_FIREPOWER
464#define SPECENUM_VALUE2NAME "LowFirepower"
465#define SPECENUM_VALUE3 CBONUS_DEFENSE_MULTIPLIER_PCT
466#define SPECENUM_VALUE3NAME "DefenseMultiplierPct"
467#define SPECENUM_VALUE4 CBONUS_DEFENSE_DIVIDER_PCT
468#define SPECENUM_VALUE4NAME "DefenseDividerPct"
469#define SPECENUM_VALUE5 CBONUS_SCRAMBLES_PCT
470#define SPECENUM_VALUE5NAME "CityDefensePct"
483#define SPECLIST_TAG combat_bonus
484#define SPECLIST_TYPE struct combat_bonus
487#define combat_bonus_list_iterate(bonuslist, pbonus) \
488 TYPED_LIST_ITERATE(struct combat_bonus, bonuslist, pbonus)
489#define combat_bonus_list_iterate_end LIST_ITERATE_END
535#define U_NOT_OBSOLETED (NULL)
634 const char *helptxt);
689 const int move_fragments);
749#define uclass_index(_c_) (_c_)->item_number
756#define utype_class(_t_) (_t_)->uclass
782 const char *helptxt);
788 const struct player *pplayer,
843#define utype_fuel(ptype) (ptype)->fuel
859#define unit_type_iterate(_p) \
861 struct unit_type *_p = unit_type_array_first(); \
863 const struct unit_type *_end_##_p = unit_type_array_last(); \
864 for (; _p <= _end_##_p; _p++) {
866#define unit_type_iterate_end \
871#define unit_type_re_active_iterate(_p) \
872 unit_type_iterate(_p) { \
873 if (!_p->ruledit_disabled) {
875#define unit_type_re_active_iterate_end \
877 } unit_type_iterate_end;
879#define unit_tech_reqs_iterate(_utype_, _p) \
881 requirement_vector_iterate(&(_utype_)->build_reqs, preq_##_p) { \
882 if (preq_##_p->source.kind == VUT_ADVANCE) { \
883 struct advance *_p = preq_##_p->source.value.advance;
885#define unit_tech_reqs_iterate_end \
887 } requirement_vector_iterate_end; \
912#define unit_class_iterate(_p) \
914 struct unit_class *_p = unit_class_array_first(); \
916 const struct unit_class *_end_##_p = unit_class_array_last(); \
917 for (; _p <= _end_##_p; _p++) {
919#define unit_class_iterate_end \
924#define unit_class_re_active_iterate(_p) \
925 unit_class_iterate(_p) { \
926 if (!_p->ruledit_disabled) {
928#define unit_class_re_active_iterate_end \
930 } unit_class_iterate_end;
932#define SPECLIST_TAG unit_class
933#define SPECLIST_TYPE struct unit_class
936#define unit_class_list_iterate(uclass_list, pclass) \
937 TYPED_LIST_ITERATE(struct unit_class, uclass_list, pclass)
938#define unit_class_list_iterate_end LIST_ITERATE_END
940#define SPECLIST_TAG unit_type
941#define SPECLIST_TYPE struct unit_type
944#define unit_type_list_iterate(utype_list, ptype) \
945 TYPED_LIST_ITERATE(struct unit_type, utype_list, ptype)
946#define unit_type_list_iterate_end LIST_ITERATE_END
#define BV_DEFINE(name, bits)
#define BV_ISSET(bv, bit)
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
enum output_type_id Output_type_id
#define FC_STATIC_ASSERT(cond, tag)
struct setting_list * level[OLEVELS_NUM]
enum unit_type_flag_id flag
enum combat_bonus_type type
Unit_Class_id item_number
enum unit_move_type move_type
struct unit_class::@85 adv
struct unit_class_list * subset_movers
struct extra_type_list * refuel_extras
struct extra_type_list * native_tile_extras
struct unit_class::@86 cache
struct extra_type_list * native_bases
struct extra_type_list * bonus_roads
struct name_translation name
bv_unit_class_flags flags
struct extra_type_list * hiding_extras
enum move_level land_move
int max_defense_mp_bonus_pct
struct unit_type::@87 adv
struct unit_class * uclass
void * ais[FREECIV_AI_MOD_LAST]
struct requirement_vector build_reqs
char graphic_alt[MAX_LEN_NAME]
char sound_move_alt[MAX_LEN_NAME]
struct veteran_system * veteran
const struct unit_type * obsoleted_by
char graphic_str[MAX_LEN_NAME]
int scramble_coeff[U_LAST]
char sound_move[MAX_LEN_NAME]
struct unit_type::@88 cache
char sound_fight_alt[MAX_LEN_NAME]
struct name_translation name
enum transp_def_type tp_defense
char graphic_alt2[MAX_LEN_NAME]
bv_unit_classes disembarks
const struct unit_type * converted_to
char sound_fight[MAX_LEN_NAME]
int defense_mp_bonuses_pct[U_LAST]
struct combat_bonus_list * bonuses
struct name_translation name
struct veteran_level * definitions
bool utype_may_act_tgt_city_tile(const struct unit_type *punit_type, const action_id act_id, const enum citytile_type prop, const bool is_there)
int utype_buy_gold_cost(const struct city *pcity, const struct unit_type *punittype, int shields_in_stock)
void unit_types_init(void)
bool can_unit_act_when_ustate_is(const struct unit_type *punit_type, const enum ustate_prop prop, const bool is_there)
const char * uclass_name_translation(const struct unit_class *pclass)
void set_unit_class_caches(struct unit_class *pclass)
struct unit_type * best_role_unit(const struct city *pcity, int role)
struct unit_type * role_units_iterate(int role, role_unit_callback cb, void *data)
bool utype_action_takes_all_mp(const struct unit_type *putype, struct action *paction)
const char * utype_veteran_name_translation(const struct unit_type *punittype, int level)
const struct unit_type * unit_type_get(const struct unit *punit)
bool utype_has_class_flag(const struct unit_type *ptype, enum unit_class_flag_id flag)
static bool uclass_has_flag(const struct unit_class *punitclass, enum unit_class_flag_id flag)
void user_unit_type_flags_init(void)
int utype_pays_mp_for_action_base(const struct action *paction, const struct unit_type *putype)
bool utype_player_already_has_this(const struct player *pplayer, const struct unit_type *putype)
bool utype_can_freely_unload(const struct unit_type *pcargotype, const struct unit_type *ptranstype)
const char * unit_class_flag_helptxt(enum unit_class_flag_id id)
bool utype_pays_for_regular_move_to_tgt(const struct action *paction, const struct unit_type *utype)
struct unit_type * role_units_iterate_backwards(int role, role_unit_callback cb, void *data)
bool utype_can_remove_extra(const struct unit_type *putype, const struct extra_type *pextra)
int unit_build_shield_cost(const struct city *pcity, const struct unit *punit)
const char * unit_name_translation(const struct unit *punit)
bool unit_has_class_flag(const struct unit *punit, enum unit_class_flag_id flag)
bool can_player_build_unit_direct(const struct player *p, const struct unit_type *punittype, bool consider_reg_impr_req)
bool utype_is_moved_to_tgt_by_action(const struct action *paction, const struct unit_type *utype)
bool is_tech_req_for_utype(const struct unit_type *ptype, struct advance *padv)
int utype_upkeep_cost(const struct unit_type *ut, struct player *pplayer, Output_type_id otype)
enum unit_move_type utype_move_type(const struct unit_type *punittype)
struct unit_type * first_role_unit_for_player(const struct player *pplayer, int role)
Unit_Class_id uclass_count(void)
bool utype_is_cityfounder(const struct unit_type *utype)
const struct unit_class * unit_class_array_last(void)
struct unit_type * unit_type_by_rule_name(const char *name)
struct unit_type * get_role_unit(int role, int role_index)
struct unit_type * unit_type_array_first(void)
void unit_class_flags_free(void)
bool uclass_flag_is_in_use(enum unit_class_flag_id ucflag)
const char * unit_rule_name(const struct unit *punit)
bool utype_has_role(const struct unit_type *punittype, int role)
void set_unit_move_type(struct unit_class *puclass)
void unit_type_action_cache_init(void)
int utype_build_shield_cost_base(const struct unit_type *punittype)
void set_unit_type_caches(struct unit_type *ptype)
const char * unit_type_flag_id_name_update_cb(const char *old_name)
bool utype_may_act_move_frags(const struct unit_type *punit_type, const action_id act_id, const int move_fragments)
const struct veteran_system * utype_veteran_system(const struct unit_type *punittype)
bool utype_is_consumed_by_action_result(enum action_result result, const struct unit_type *utype)
int num_role_units(int role)
bool utype_player_already_has_this_unique(const struct player *pplayer, const struct unit_type *putype)
static bool utype_has_flag(const struct unit_type *punittype, int flag)
void unit_types_free(void)
bool utype_may_act_at_all(const struct unit_type *putype)
int unit_build_shield_cost_base(const struct unit *punit)
const struct unit_type * can_upgrade_unittype(const struct player *pplayer, const struct unit_type *punittype)
struct unit_type * best_role_unit_for_player(const struct player *pplayer, int role)
void role_unit_precalcs(void)
struct unit_class * uclass_by_number(const Unit_Class_id id)
bool utype_can_create_extra(const struct unit_type *putype, const struct extra_type *pextra)
struct advance * utype_primary_tech_req(const struct unit_type *ptype)
bool utype_can_freely_load(const struct unit_type *pcargotype, const struct unit_type *ptranstype)
void veteran_system_definition(struct veteran_system *vsystem, int level, const char *vlist_name, int vlist_power, int vlist_move, int vlist_raise, int vlist_wraise)
Unit_type_id utype_count(void)
bool(* role_unit_callback)(struct unit_type *ptype, void *data)
int utype_veteran_levels(const struct unit_type *punittype)
int utype_pays_mp_for_action_estimate(const struct civ_map *nmap, const struct action *paction, const struct unit_type *putype, const struct player *act_player, const struct tile *act_tile, const struct tile *tgt_tile)
bool utype_can_do_act_when_ustate(const struct unit_type *punit_type, const action_id act_id, const enum ustate_prop prop, const bool is_there)
void veteran_system_destroy(struct veteran_system *vsystem)
const char * utype_rule_name(const struct unit_type *punittype)
struct unit_class * unit_class_get(const struct unit *punit)
bool utype_can_do_action_result_when_ustate(const struct unit_type *putype, enum action_result result, const enum ustate_prop prop, const bool is_there)
struct unit_type * utype_by_number(const Unit_type_id id)
bool utype_can_do_action_result(const struct unit_type *putype, enum action_result result)
bool unit_has_type_role(const struct unit *punit, enum unit_role_id role)
bool utype_action_takes_all_mp_if_ustate_is(const struct unit_type *putype, struct action *paction, const enum ustate_prop prop)
const struct veteran_level * utype_veteran_level(const struct unit_type *punittype, int level)
bool unit_has_type_flag(const struct unit *punit, enum unit_type_flag_id flag)
bool unit_can_take_over(const struct unit *punit)
void unit_classes_free(void)
void unit_type_action_cache_set(struct unit_type *ptype)
const char * uclass_rule_name(const struct unit_class *pclass)
bool utype_is_consumed_by_action(const struct action *paction, const struct unit_type *utype)
void unit_type_flags_free(void)
Unit_type_id utype_number(const struct unit_type *punittype)
bool utype_veteran_has_power_bonus(const struct unit_type *punittype)
void user_unit_class_flags_init(void)
bool utype_can_act_if_tgt_diplrel_tile_other(const struct unit_type *punit_type, const action_id act_id, const int prop, const bool is_there)
struct unit_class * unit_class_by_rule_name(const char *s)
struct unit_type * unit_type_by_translated_name(const char *name)
const char * unit_type_flag_helptxt(enum unit_type_flag_id id)
const char * utype_values_string(const struct unit_type *punittype)
#define uclass_index(_c_)
void * utype_ai_data(const struct unit_type *ptype, const struct ai_type *ai)
struct unit_class * unit_class_array_first(void)
Unit_type_id utype_index(const struct unit_type *punittype)
void unit_classes_init(void)
bool utype_flag_is_in_use(enum unit_type_flag_id uflag)
int utype_pop_value(const struct unit_type *punittype, const struct city *pcity)
bool utype_can_take_over(const struct unit_type *punittype)
void utype_set_ai_data(struct unit_type *ptype, const struct ai_type *ai, void *data)
void set_user_unit_class_flag_name(enum unit_class_flag_id id, const char *name, const char *helptxt)
bool can_player_build_unit_later(const struct player *p, const struct unit_type *punittype)
int utype_build_shield_cost(const struct city *pcity, const struct player *pplayer, const struct unit_type *punittype)
int unit_pop_value(const struct unit *punit)
void role_unit_precalcs_free(void)
struct veteran_system * veteran_system_new(int count)
Unit_Class_id uclass_number(const struct unit_class *pclass)
bool can_player_build_unit_now(const struct player *p, const struct unit_type *punittype)
bool utype_can_do_action_sub_result(const struct unit_type *putype, enum action_sub_result sub_result)
bool utype_is_unmoved_by_action(const struct action *paction, const struct unit_type *utype)
bool utype_acts_hostile(const struct unit_type *putype)
bool utype_can_do_act_if_tgt_citytile(const struct unit_type *punit_type, const action_id act_id, const enum citytile_type prop, const bool is_there)
const char * utype_name_translation(const struct unit_type *punittype)
bool can_utype_do_act_if_tgt_diplrel(const struct unit_type *punit_type, const action_id act_id, const int prop, const bool is_there)
bool utype_can_do_action(const struct unit_type *putype, const action_id act_id)
void set_user_unit_type_flag_name(enum unit_type_flag_id id, const char *name, const char *helptxt)
int utype_happy_cost(const struct unit_type *ut, const struct player *pplayer)
bool role_units_translations(struct astring *astr, int flag, bool alts)
const char * utype_values_translation(const struct unit_type *punittype)
const struct unit_type * unit_type_array_last(void)
int unit_upgrade_price(const struct player *pplayer, const struct unit_type *from, const struct unit_type *to)