Freeciv21
Develop your civilization from humble roots to a global empire
aitech.cpp File Reference
#include <cstring>
#include "log.h"
#include "game.h"
#include "government.h"
#include "player.h"
#include "research.h"
#include "tech.h"
#include "plrhand.h"
#include "srv_log.h"
#include "techtools.h"
#include "advdata.h"
#include "aidata.h"
#include "ailog.h"
#include "aiplayer.h"
#include "aitools.h"
#include "daieffects.h"
#include "aitech.h"
+ Include dependency graph for aitech.cpp:

Go to the source code of this file.

Classes

struct  ai_tech_choice
 

Functions

static void dai_select_tech (struct ai_type *ait, struct player *pplayer, struct ai_tech_choice *choice, struct ai_tech_choice *goal)
 Massage the numbers provided to us by ai.tech_want into unrecognizable pulp. More...
 
static adv_want dai_tech_base_want (struct ai_type *ait, struct player *pplayer, struct city *pcity, struct advance *padv)
 Calculates want for some techs by actually adding the tech and measuring the effect. More...
 
static void dai_tech_effect_values (struct ai_type *ait, struct player *pplayer)
 Add effect values in to tech wants. More...
 
void dai_manage_tech (struct ai_type *ait, struct player *pplayer)
 Key AI research function. More...
 
struct unit_typedai_wants_defender_against (struct ai_type *ait, struct player *pplayer, struct city *pcity, const struct unit_type *att, int want)
 Returns the best defense multiplier unit we can build, or nullptr if none. More...
 
struct unit_typedai_wants_role_unit (struct ai_type *ait, struct player *pplayer, struct city *pcity, int role, int want)
 Returns the best unit we can build, or nullptr if none. More...
 
void dai_clear_tech_wants (struct ai_type *ait, struct player *pplayer)
 Zero player tech wants. More...
 

Function Documentation

◆ dai_clear_tech_wants()

void dai_clear_tech_wants ( struct ai_type ait,
struct player pplayer 
)

Zero player tech wants.

Definition at line 604 of file aitech.cpp.

Referenced by dai_do_last_activities().

◆ dai_manage_tech()

void dai_manage_tech ( struct ai_type ait,
struct player pplayer 
)

Key AI research function.

Disable if we are in a team with human team mates in a research pool.

Definition at line 335 of file aitech.cpp.

Referenced by dai_do_last_activities().

◆ dai_select_tech()

static void dai_select_tech ( struct ai_type ait,
struct player pplayer,
struct ai_tech_choice choice,
struct ai_tech_choice goal 
)
static

Massage the numbers provided to us by ai.tech_want into unrecognizable pulp.

TODO: Write a transparent formula.

Notes: 1. research_goal_unknown_techs returns 0 for known techs, 1 if tech is immediately available etc.

  1. A tech is reachable means we can research it now; tech is available means it's on our tech tree (different nations can have different techs).
  2. ai.tech_want is usually upped by each city, so it is divided by number of cities here.
  3. A tech isn't a requirement of itself.

Definition at line 64 of file aitech.cpp.

Referenced by dai_manage_tech().

◆ dai_tech_base_want()

static adv_want dai_tech_base_want ( struct ai_type ait,
struct player pplayer,
struct city pcity,
struct advance padv 
)
static

Calculates want for some techs by actually adding the tech and measuring the effect.

Definition at line 212 of file aitech.cpp.

Referenced by dai_tech_effect_values().

◆ dai_tech_effect_values()

static void dai_tech_effect_values ( struct ai_type ait,
struct player pplayer 
)
static

Add effect values in to tech wants.

Definition at line 239 of file aitech.cpp.

Referenced by dai_manage_tech().

◆ dai_wants_defender_against()

struct unit_type* dai_wants_defender_against ( struct ai_type ait,
struct player pplayer,
struct city pcity,
const struct unit_type att,
int  want 
)

Returns the best defense multiplier unit we can build, or nullptr if none.

Assigns tech wants for techs to get better units, but only for the cheapest to research.

Definition at line 397 of file aitech.cpp.

Referenced by assess_danger().

◆ dai_wants_role_unit()

struct unit_type* dai_wants_role_unit ( struct ai_type ait,
struct player pplayer,
struct city pcity,
int  role,
int  want 
)

Returns the best unit we can build, or nullptr if none.

"Best" here means last in the unit list as defined in the ruleset. Assigns tech wants for techs to get better units with given role, but only for the cheapest to research "next" unit up the "chain".

Definition at line 518 of file aitech.cpp.

Referenced by dai_choose_help_wonder(), dai_choose_role_unit(), dai_choose_trade_route(), and domestic_advisor_choose_build().