Freeciv-3.2
Loading...
Searching...
No Matches
Data Structures | Functions | Variables
effects.c File Reference
#include <ctype.h>
#include <string.h>
#include "astring.h"
#include "fcintl.h"
#include "log.h"
#include "mem.h"
#include "support.h"
#include "shared.h"
#include "string_vector.h"
#include "city.h"
#include "game.h"
#include "government.h"
#include "improvement.h"
#include "map.h"
#include "packets.h"
#include "player.h"
#include "tech.h"
#include "effects.h"

Go to the source code of this file.

Data Structures

struct  user_effect
 

Functions

struct effect_listget_effects (enum effect_type effect_type)
 
struct effect_listget_req_source_effects (const struct universal *psource)
 
struct effecteffect_new (enum effect_type type, int value, struct multiplier *pmul)
 
void effect_free (struct effect *peffect)
 
void effect_remove (struct effect *peffect)
 
struct effecteffect_copy (struct effect *old, enum effect_type override_type)
 
void effect_req_append (struct effect *peffect, struct requirement req)
 
void ruleset_cache_init (void)
 
void ruleset_cache_free (void)
 
int effect_cumulative_max (enum effect_type type, struct universal *unis, size_t n_unis)
 
int effect_cumulative_min (enum effect_type type, struct universal *for_uni)
 
int effect_value_from_universals (enum effect_type type, struct universal *unis, size_t n_unis)
 
bool effect_universals_value_never_below (enum effect_type type, struct universal *unis, size_t n_unis, int min_value)
 
int effect_value_will_make_positive (enum effect_type type)
 
void recv_ruleset_effect (const struct packet_ruleset_effect *packet)
 
void send_ruleset_cache (struct conn_list *dest)
 
bool building_has_effect (const struct impr_type *pimprove, enum effect_type effect_type)
 
static bool is_effect_prevented (const struct req_context *context, const struct player *other_player, const struct effect *peffect, const enum req_problem_type prob_type)
 
bool is_building_replaced (const struct city *pcity, const struct impr_type *pimprove, const enum req_problem_type prob_type)
 
int get_target_bonus_effects (struct effect_list *plist, const struct req_context *context, const struct player *other_player, enum effect_type effect_type)
 
double get_effect_expected_value (const struct req_context *context, const struct player *other_player, enum effect_type effect_type, eft_value_filter_cb weighter, void *data, int n_data)
 
int get_world_bonus (enum effect_type effect_type)
 
int get_player_bonus (const struct player *pplayer, enum effect_type effect_type)
 
int get_city_bonus (const struct city *pcity, enum effect_type effect_type)
 
int get_tile_bonus (const struct tile *ptile, enum effect_type effect_type)
 
int get_city_specialist_output_bonus (const struct city *pcity, const struct specialist *pspecialist, const struct output_type *poutput, enum effect_type effect_type)
 
int get_city_tile_output_bonus (const struct city *pcity, const struct tile *ptile, const struct output_type *poutput, enum effect_type effect_type)
 
int get_tile_output_bonus (const struct city *pcity, const struct tile *ptile, const struct output_type *poutput, enum effect_type effect_type)
 
int get_player_output_bonus (const struct player *pplayer, const struct output_type *poutput, enum effect_type effect_type)
 
int get_city_output_bonus (const struct city *pcity, const struct output_type *poutput, enum effect_type effect_type)
 
int get_building_bonus (const struct city *pcity, const struct impr_type *building, enum effect_type effect_type)
 
int get_unittype_bonus (const struct player *pplayer, const struct tile *ptile, const struct unit_type *punittype, const struct action *paction, enum effect_type effect_type)
 
int get_unit_bonus (const struct unit *punit, enum effect_type effect_type)
 
int get_unit_vs_tile_bonus (const struct tile *ptile, const struct unit *punit, enum effect_type etype)
 
int get_player_bonus_effects (struct effect_list *plist, const struct player *pplayer, enum effect_type effect_type)
 
int get_city_bonus_effects (struct effect_list *plist, const struct city *pcity, const struct output_type *poutput, enum effect_type effect_type)
 
int get_current_construction_bonus (const struct city *pcity, enum effect_type effect_type, const enum req_problem_type prob_type)
 
int get_potential_improvement_bonus (const struct impr_type *pimprove, const struct city *pcity, enum effect_type effect_type, const enum req_problem_type prob_type, bool consider_multipliers)
 
void get_effect_req_text (const struct effect *peffect, char *buf, size_t buf_len)
 
void get_effect_list_req_text (const struct effect_list *plist, struct astring *astr)
 
bool iterate_effect_cache (iec_cb cb, void *data)
 
bool is_user_effect (enum effect_type eff)
 
void user_effect_ai_valued_set (enum effect_type tgt, enum effect_type valued_as)
 
enum effect_type user_effect_ai_valued_as (enum effect_type real)
 

Variables

static bool initialized = FALSE
 
struct user_effect ueffects [EFT_USER_EFFECT_LAST+1 - EFT_USER_EFFECT_1]
 
struct { 
 
   struct effect_list *   tracker 
 
   struct effect_list *   effects [EFT_COUNT
 
   struct { 
 
      struct effect_list *   buildings [B_LAST
 
      struct effect_list *   govs [G_LAST
 
      struct effect_list *   advances [A_LAST
 
   }   reqs 
 
ruleset_cache 
 

Function Documentation

◆ building_has_effect()

bool building_has_effect ( const struct impr_type pimprove,
enum effect_type effect_type effect_type   
)

Returns TRUE if the building has any effect bonuses of the given type.

Note that this function returns a boolean rather than an integer value giving the exact bonus. Finding the exact bonus requires knowing the effect range and may take longer. This function should only be used in situations where the range doesn't matter.

Definition at line 644 of file effects.c.

Referenced by building_crucial(), can_player_build_improvement_direct(), get_building_for_effect(), helptext_building(), try_to_sell_stuff(), and valid_improvement().

◆ effect_copy()

struct effect * effect_copy ( struct effect old,
enum effect_type  override_type 
)

Create copy of the effect. It gets fully registered to the ruleset caches.

Parameters
oldOriginal effect to copy
override_typeType of the effect to create, or effect_type_invalid() to copy type from the original effect
Returns
Newly created effect

Definition at line 246 of file effects.c.

Referenced by effect_list_compat_cb().

◆ effect_cumulative_max()

int effect_cumulative_max ( enum effect_type  type,
struct universal unis,
size_t  n_unis 
)

Get the maximum effect value in this ruleset for the universal (that is, the sum of all positive effects clauses that apply specifically to this universal – this can be an overestimate in the case of mutually exclusive effects). for_uni can be NULL to get max effect value ignoring requirements.

Definition at line 388 of file effects.c.

Referenced by helptext_unit(), rs_common_units(), rs_max_city_radius_sq(), sanity_check_boolean_effects(), set_unit_type_caches(), and utype_unknown_move_cost().

◆ effect_cumulative_min()

int effect_cumulative_min ( enum effect_type  type,
struct universal for_uni 
)

Get the minimum effect value in this ruleset for the universal (that is, the sum of all negative effects clauses that apply specifically to this universal – this can be an overestimate in the case of mutually exclusive effects). for_uni can be NULL to get min effect value ignoring requirements.

Definition at line 424 of file effects.c.

Referenced by effect_value_will_make_positive(), and sanity_check_boolean_effects().

◆ effect_free()

void effect_free ( struct effect peffect)

Free resources reserved for the effect.

This does not remove effect from the cache lists. See effect_remove() for that.

Definition at line 216 of file effects.c.

Referenced by ruleset_cache_free().

◆ effect_new()

struct effect * effect_new ( enum effect_type  type,
int  value,
struct multiplier pmul 
)

◆ effect_remove()

void effect_remove ( struct effect peffect)

Remove effect from the caches.

This does not free effect itself. See effect_free() for that.

Definition at line 230 of file effects.c.

Referenced by effect_edit::delete_now().

◆ effect_req_append()

void effect_req_append ( struct effect peffect,
struct requirement  req 
)

◆ effect_universals_value_never_below()

bool effect_universals_value_never_below ( enum effect_type  type,
struct universal unis,
size_t  n_unis,
int  min_value 
)

Returns TRUE iff the specified effect type is guaranteed to always have a value at or above the specified value given the presence of the specified list of universals. Note that it may be true that the effect type always will be at or above the specified value a even if this function refuses to guarantee it by returning FALSE. It may simply be unable to detect that it is so.

Parameters
typethe effect type
unisthe list of present universals
n_unisthe number of universals in unis
min_valuethe value the effect always should be at or above
Returns
TRUE iff the function promises that the value of the effect type never will be below min_value given the specified universals.

Definition at line 545 of file effects.c.

Referenced by helptext_unit(), utype_act_takes_all_mp_cache_set(), and utype_act_takes_all_mp_ustate_cache_set().

◆ effect_value_from_universals()

int effect_value_from_universals ( enum effect_type  type,
struct universal unis,
size_t  n_unis 
)

Return the base value of a given effect that can always be expected from just the sources in the list, independent of other factors. Adds up all the effects that rely only on these universals; effects that have extra conditions are ignored. In effect, 'unis' is a template against which effects are matched. The first universal in the list is special: effects must have a condition that specifically applies to that source to be included (may be a superset requirement, e.g. ExtraFlag for VUT_EXTRA source).

Definition at line 459 of file effects.c.

Referenced by extra_bonus_for_terrain(), and helptext_unit().

◆ effect_value_will_make_positive()

int effect_value_will_make_positive ( enum effect_type  type)

Returns a value that, if found in an effect value, always will make the result of any evaluation where it is active positive.

Definition at line 582 of file effects.c.

Referenced by rscompat_postprocess().

◆ get_building_bonus()

int get_building_bonus ( const struct city pcity,
const struct impr_type building,
enum effect_type effect_type effect_type   
)

Returns the effect bonus at a building.

Definition at line 1008 of file effects.c.

Referenced by city_improvement_upkeep(), impr_build_shield_cost(), and impr_buy_gold_cost().

◆ get_city_bonus()

int get_city_bonus ( const struct city pcity,
enum effect_type effect_type effect_type   
)

◆ get_city_bonus_effects()

int get_city_bonus_effects ( struct effect_list plist,
const struct city pcity,
const struct output_type poutput,
enum effect_type effect_type effect_type   
)

Returns the effect sources of this type currently active at the city.

The returned vector must be freed (building_vector_free) when the caller is done with it.

Definition at line 1153 of file effects.c.

Referenced by get_city_dialog_culture_text(), get_city_dialog_illness_text(), get_city_dialog_output_text(), redraw_happiness_city_dialog(), text_happiness_buildings(), and text_happiness_wonders().

◆ get_city_output_bonus()

int get_city_output_bonus ( const struct city pcity,
const struct output_type poutput,
enum effect_type effect_type effect_type   
)

Returns the player effect bonus of an output.

Definition at line 984 of file effects.c.

Referenced by city_units_upkeep(), city_waste(), set_city_bonuses(), and set_surpluses().

◆ get_city_specialist_output_bonus()

int get_city_specialist_output_bonus ( const struct city pcity,
const struct specialist pspecialist,
const struct output_type poutput,
enum effect_type effect_type effect_type   
)

Returns the effect bonus of a specialist in a city.

Definition at line 885 of file effects.c.

Referenced by get_specialist_output().

◆ get_city_tile_output_bonus()

int get_city_tile_output_bonus ( const struct city pcity,
const struct tile ptile,
const struct output_type poutput,
enum effect_type effect_type effect_type   
)

Returns the effect bonus at a city tile. pcity must be supplied.

FIXME: this is now used both for tile bonuses, tile-output bonuses, and city-output bonuses. Thus ptile or poutput may be NULL for certain callers. This could be changed by adding 2 new functions to the interface but they'd be almost identical and their likely names would conflict with functions already in city.c. It's also very similar to get_tile_output_bonus(); it should be called when the city is mandatory.

Definition at line 916 of file effects.c.

Referenced by base_city_can_work_tile(), city_tc_effect_refresh(), get_final_city_output_bonus(), and tile_change_side_effects().

◆ get_current_construction_bonus()

int get_current_construction_bonus ( const struct city pcity,
enum effect_type effect_type effect_type  ,
const enum req_problem_type  prob_type 
)

Returns the effect bonus the currently-in-construction-item will provide.

Note this is not called get_current_production_bonus because that would be confused with EFT_PROD_BONUS.

Problem type tells if we need to be CERTAIN about bonus before counting it or is POSSIBLE bonus enough.

Definition at line 1182 of file effects.c.

Referenced by city_build_building(), city_increase_size(), and city_turn_notify().

◆ get_effect_expected_value()

double get_effect_expected_value ( const struct req_context context,
const struct player other_player,
enum effect_type effect_type effect_type  ,
eft_value_filter_cb  weighter,
void data,
int  n_data 
)

Returns the expected value of the effect of given type for given context, calculating value weighted with probability for each individual effect with given callback using arbitrary additional data passed to it.

The way of using multipliers is left on the callback.

Definition at line 793 of file effects.c.

◆ get_effect_list_req_text()

void get_effect_list_req_text ( const struct effect_list plist,
struct astring astr 
)

Make user-friendly text for an effect list. The text is put into a user astring.

Definition at line 1303 of file effects.c.

Referenced by do_tech_parasite_effects(), text_happiness_buildings(), and text_happiness_wonders().

◆ get_effect_req_text()

void get_effect_req_text ( const struct effect peffect,
char buf,
size_t  buf_len 
)

Make user-friendly text for the source. The text is put into a user buffer.

Definition at line 1275 of file effects.c.

Referenced by get_city_dialog_culture_text(), get_city_dialog_illness_text(), get_city_dialog_output_text(), and get_effect_list_req_text().

◆ get_effects()

struct effect_list * get_effects ( enum effect_type effect_type effect_type  )

◆ get_player_bonus()

int get_player_bonus ( const struct player pplayer,
enum effect_type effect_type effect_type   
)

◆ get_player_bonus_effects()

int get_player_bonus_effects ( struct effect_list plist,
const struct player pplayer,
enum effect_type effect_type effect_type   
)

Returns the effect sources of this type currently active at the player.

The returned vector must be freed (building_vector_free) when the caller is done with it.

Definition at line 1130 of file effects.c.

Referenced by do_tech_parasite_effects().

◆ get_player_output_bonus()

int get_player_output_bonus ( const struct player pplayer,
const struct output_type poutput,
enum effect_type effect_type effect_type   
)

Returns the player effect bonus of an output.

Definition at line 961 of file effects.c.

Referenced by get_tile_output_text().

◆ get_potential_improvement_bonus()

int get_potential_improvement_bonus ( const struct impr_type pimprove,
const struct city pcity,
enum effect_type effect_type effect_type  ,
const enum req_problem_type  prob_type,
bool  consider_multipliers 
)

Returns the effect bonus the improvement would or does provide if present.

Problem type tells if we need to be CERTAIN about bonus before counting it or is POSSIBLE bonus enough.

Definition at line 1204 of file effects.c.

Referenced by get_current_construction_bonus(), improvement_has_effects(), and rs_buildings().

◆ get_req_source_effects()

struct effect_list * get_req_source_effects ( const struct universal psource)

Get a list of effects with this requirement source.

Currently only buildings, advances, and governments are supported.

Definition at line 153 of file effects.c.

Referenced by adjust_improvement_wants_by_effects(), adv_data_city_impr_calc(), building_has_effect(), dai_gov_value(), dai_tech_effect_values(), effect_req_append(), get_potential_improvement_bonus(), helptext_government(), improvement_has_effects(), and is_building_replaced().

◆ get_target_bonus_effects()

int get_target_bonus_effects ( struct effect_list plist,
const struct req_context context,
const struct player other_player,
enum effect_type effect_type effect_type   
)

Returns the effect bonus of a given type for any target.

context gives the target (or targets) to evaluate requirements against effect_type gives the effect type to be considered

context may be NULL. This is equivalent to passing an empty context.

Returns the effect sources of this type currently active.

The returned vector must be freed (building_vector_free) when the caller is done with it.

Definition at line 748 of file effects.c.

Referenced by action_dice_roll_odds(), action_success_target_pay_mp(), ap_dipl_battle_win(), api_effects_tile_bonus(), api_effects_unit_bonus(), api_methods_city_inspire_partisans(), casus_belli_range_for(), city_tile_output(), dai_choose_trade_route(), dai_effect_value(), defense_multiplication(), diplomat_success_vs_defender(), do_heal_unit(), do_nuclear_explosion(), fill_grid_sprite_array(), get_building_bonus(), get_caravan_enter_city_trade_bonus(), get_city_bonus(), get_city_bonus_effects(), get_city_output_bonus(), get_city_specialist_output_bonus(), get_city_tile_output_bonus(), get_player_bonus(), get_player_bonus_effects(), get_player_output_bonus(), get_tile_bonus(), get_tile_output_bonus(), get_total_attack_power(), get_unit_bonus(), get_unit_vs_tile_bonus(), get_unittype_bonus(), get_world_bonus(), helptext_government(), illegal_action_pay_price(), impr_estimate_build_shield_cost(), process_attacker_want(), sdi_try_defend(), spy_steal_some_maps(), tile_activity_time(), unit_attack_civilian_casualties(), unit_bribe_cost(), unit_pays_mp_for_action(), unit_shield_value(), unit_vision_range_modifiers(), utype_pays_mp_for_action_estimate(), and utype_upkeep_cost().

◆ get_tile_bonus()

int get_tile_bonus ( const struct tile ptile,
enum effect_type effect_type effect_type   
)

Returns the effect bonus at a tile. Even if the tile has a city, player requirements are not about city owner but tile owner.

Definition at line 866 of file effects.c.

Referenced by tile_border_source_strength().

◆ get_tile_output_bonus()

int get_tile_output_bonus ( const struct city pcity,
const struct tile ptile,
const struct output_type poutput,
enum effect_type effect_type effect_type   
)

Returns the effect bonus at a tile for given output type (or NULL for output-type-independent bonus). If pcity is supplied, it's the bonus for that particular city, otherwise it's the player/city-independent bonus (and any city on the tile is ignored).

Definition at line 940 of file effects.c.

Referenced by city_tile_output().

◆ get_unit_bonus()

int get_unit_bonus ( const struct unit punit,
enum effect_type effect_type effect_type   
)

◆ get_unit_vs_tile_bonus()

int get_unit_vs_tile_bonus ( const struct tile ptile,
const struct unit punit,
enum effect_type  etype 
)

Returns the effect bonus at a tile

Definition at line 1094 of file effects.c.

Referenced by api_effects_unit_vs_tile_bonus().

◆ get_unittype_bonus()

int get_unittype_bonus ( const struct player pplayer,
const struct tile ptile,
const struct unit_type punittype,
const struct action paction,
enum effect_type effect_type effect_type   
)

Returns the effect bonus that applies at a tile for a given unittype.

For instance with EFT_DEFEND_BONUS the attacker's unittype and the defending tile should be passed in. Slightly counter-intuitive! See doc/README.effects to see how the unittype applies for each effect here.

Definition at line 1035 of file effects.c.

Referenced by assess_danger(), assess_danger_unit(), city_got_defense_effect(), city_production_unit_veteran_level(), dai_choose_defender_versus(), dai_wants_defender_against(), defense_multiplication(), find_nearest_safe_city(), get_modified_firepower(), pf_reverse_map_utype_pos(), pft_fill_utype_default_parameter(), unit_type_is_losing_hp(), utype_build_shield_cost(), utype_buy_gold_cost(), utype_move_rate(), and utype_pop_value().

◆ get_world_bonus()

int get_world_bonus ( enum effect_type effect_type effect_type  )

Returns the effect bonus for the whole world.

Definition at line 816 of file effects.c.

Referenced by api_effects_world_bonus(), game_next_year(), and tri_req_active_turns().

◆ is_building_replaced()

bool is_building_replaced ( const struct city pcity,
const struct impr_type pimprove,
const enum req_problem_type  prob_type 
)

Returns TRUE if a building is replaced. To be replaced, all its effects must be made redundant by groups that it is in. prob_type CERTAIN or POSSIBLE is answer to function name.

Definition at line 698 of file effects.c.

Referenced by is_improvement_redundant().

◆ is_effect_prevented()

static bool is_effect_prevented ( const struct req_context context,
const struct player other_player,
const struct effect peffect,
const enum req_problem_type  prob_type 
)
static

Return TRUE iff any of the disabling requirements for this effect are active, which would prevent it from taking effect. (Assumes that any requirement specified in the ruleset with a negative sense is an impediment.)

context may be NULL. This is equivalent to passing an empty context.

Definition at line 675 of file effects.c.

Referenced by is_building_replaced().

◆ is_user_effect()

bool is_user_effect ( enum effect_type  eff)

Is the effect type an user effect type?

Definition at line 1339 of file effects.c.

Referenced by load_ruleset_effects(), user_effect_ai_valued_as(), and user_effect_ai_valued_set().

◆ iterate_effect_cache()

bool iterate_effect_cache ( iec_cb  cb,
void data 
)

Iterate through all the effects in cache, and call callback for each. If any callback returns FALSE, there is no further checking and this will return FALSE.

Definition at line 1323 of file effects.c.

Referenced by is_multiplier_needed(), is_universal_needed(), effect_edit::refresh(), tab_misc::refresh_stats(), rscompat_postprocess(), sanity_check_ruleset_data(), and save_effects_ruleset().

◆ recv_ruleset_effect()

void recv_ruleset_effect ( const struct packet_ruleset_effect packet)

Receives a new effect. This is called by the client when the packet arrives.

Definition at line 591 of file effects.c.

Referenced by handle_ruleset_effect().

◆ ruleset_cache_free()

void ruleset_cache_free ( void  )

Free the ruleset cache. This should be called at the end of the game or when the client disconnects from the server. See ruleset_cache_init().

Definition at line 329 of file effects.c.

Referenced by game_ruleset_free().

◆ ruleset_cache_init()

void ruleset_cache_init ( void  )

Initialize the ruleset cache. The ruleset cache should be empty before this is done (so if it's previously been initialized, it needs to be freed (see ruleset_cache_free) before it can be reused).

Definition at line 297 of file effects.c.

Referenced by game_ruleset_init().

◆ send_ruleset_cache()

void send_ruleset_cache ( struct conn_list dest)

Send the ruleset cache data over the network.

Definition at line 610 of file effects.c.

Referenced by send_rulesets().

◆ user_effect_ai_valued_as()

enum effect_type user_effect_ai_valued_as ( enum effect_type  real)

Get the ai_valued_as effect type for effect. Can be used also for non-user effects - then it just returns the effect itself.

Definition at line 1359 of file effects.c.

Referenced by dai_effect_value(), load_ruleset_effects(), and save_effects_ruleset().

◆ user_effect_ai_valued_set()

void user_effect_ai_valued_set ( enum effect_type  tgt,
enum effect_type  valued_as 
)

Set the ai_valued_as effect type for the target effect. Target must be an user effect.

Definition at line 1348 of file effects.c.

Referenced by load_ruleset_effects().

Variable Documentation

◆ advances

Definition at line 135 of file effects.c.

◆ buildings

struct effect_list* buildings[B_LAST]

Definition at line 131 of file effects.c.

◆ effects

◆ govs

Definition at line 133 of file effects.c.

Referenced by free_current_governments_data(), and notify_new_government_options().

◆ initialized

bool initialized = FALSE
static

◆ [struct]

struct { ... } reqs

Referenced by actions_free(), actions_init(), are_reqs_active(), are_reqs_active_ranges(), basic_city_style_for_style(), city_style(), city_styles_alloc(), city_styles_free(), disaster_types_init(), dlsend_packet_ruleset_multiplier(), dsend_packet_ruleset_multiplier(), extras_free(), extras_init(), goods_free(), goods_init(), helptext_building(), helptext_goods(), helptext_government(), helptext_specialist(), is_universal_needed(), load_ruleset_actions(), load_ruleset_buildings(), load_ruleset_cities(), load_ruleset_effects(), load_ruleset_game(), load_ruleset_governments(), load_ruleset_styles(), load_ruleset_terrain(), load_ruleset_units(), mke_eval_reqs(), moves_left_range(), multipliers_init(), music_styles_alloc(), purge_duplicate_req_vec(), purge_redundant_req_vec(), purge_unused_req_vec(), receive_packet_ruleset_action_auto_100(), receive_packet_ruleset_building_100(), receive_packet_ruleset_city_100(), receive_packet_ruleset_disaster_100(), receive_packet_ruleset_effect_100(), receive_packet_ruleset_extra_100(), receive_packet_ruleset_goods_100(), receive_packet_ruleset_government_100(), receive_packet_ruleset_multiplier_100(), receive_packet_ruleset_music_100(), receive_packet_ruleset_specialist_100(), req_vec_is_impossible_to_fulfill(), req_vec_wants_type(), reqs_may_activate(), sanity_check_ruleset_data(), save_reqs_vector(), save_styles_ruleset(), send_ruleset_cities(), tri_reqs_cb_active(), universal_fulfills_requirements(), universal_is_mentioned_by_requirements(), universal_replace_in_req_vec(), universals_mean_unfulfilled(), universals_say_everything(), and unpack_tech_req().

◆ [struct]

struct { ... } ruleset_cache

◆ tracker

struct effect_list* tracker

Definition at line 123 of file effects.c.

◆ ueffects