Feature #613 ยป 0001-Make-req-eval-functions-take-other_context-insted-of.patch
ai/default/daimilitary.c | ||
---|---|---|
**************************************************************************/
|
||
static enum fc_tristate
|
||
tactical_req_cb(const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req,
|
||
void *data, int n_data)
|
||
{
|
||
... | ... | |
/* FIXME: in actor_reqs, may allow attack _from_ a city with... */
|
||
if (req->survives || NULL == context->city || is_great_wonder(b)
|
||
|| !city_has_building(context->city, b) || b->sabotage <= 0) {
|
||
return tri_req_active(context, other_player, req);
|
||
return tri_req_active(context, other_context, req);
|
||
}
|
||
/* Else may be sabotaged */
|
||
}
|
||
... | ... | |
return TRI_MAYBE;
|
||
case VUT_MINVETERAN:
|
||
/* Can be changed forth but not back */
|
||
return is_req_preventing(context, other_player, req, RPT_POSSIBLE)
|
||
return is_req_preventing(context, other_context, req, RPT_POSSIBLE)
|
||
> REQUCH_CTRL ? TRI_NO : TRI_MAYBE;
|
||
case VUT_MINFOREIGNPCT:
|
||
case VUT_NATIONALITY:
|
||
/* Can be changed back but hardly forth (foreign citizens reduced first) */
|
||
switch (tri_req_active(context, other_player, req)) {
|
||
switch (tri_req_active(context, other_context, req)) {
|
||
case TRI_NO:
|
||
return req->present ? TRI_NO : TRI_MAYBE;
|
||
case TRI_YES:
|
||
... | ... | |
case VUT_MINYEAR:
|
||
/* If it is not near, won't change */
|
||
return tri_req_active_turns(n_data, 5 /* WAG */,
|
||
context, other_player, req);
|
||
context, other_context, req);
|
||
case VUT_CITYSTATUS:
|
||
if (CITYS_OWNED_BY_ORIGINAL != req->source.value.citystatus
|
||
&& CITYS_TRANSFERRED != req->source.value.citystatus) {
|
||
... | ... | |
case VUT_TERRFLAG:
|
||
case VUT_TERRAINALTER:
|
||
case VUT_NONE:
|
||
return tri_req_active(context, other_player, req);
|
||
return tri_req_active(context, other_context, req);
|
||
case VUT_COUNT:
|
||
/* Not implemented. */
|
||
break;
|
||
... | ... | |
enabler) {
|
||
/* We assume that we could build or move units into the city
|
||
* that are not present there yet */
|
||
if (TRI_NO != tri_reqs_cb_active(&actor_ctx, target_player,
|
||
if (TRI_NO != tri_reqs_cb_active(&actor_ctx, &target_ctx,
|
||
&enabler->actor_reqs, NULL,
|
||
tactical_req_cb, NULL, turns)
|
||
&&
|
||
TRI_NO != tri_reqs_cb_active(&target_ctx, actor_player,
|
||
TRI_NO != tri_reqs_cb_active(&target_ctx, &actor_ctx,
|
||
&enabler->target_reqs, NULL,
|
||
tactical_req_cb, NULL, turns)) {
|
||
return TRUE;
|
common/actions.c | ||
---|---|---|
const struct req_context *actor,
|
||
const struct req_context *target)
|
||
{
|
||
return are_reqs_active(actor, target != NULL ? target->player : NULL,
|
||
&enabler->actor_reqs, RPT_CERTAIN)
|
||
&& are_reqs_active(target, actor != NULL ? actor->player : NULL,
|
||
&enabler->target_reqs, RPT_CERTAIN);
|
||
return are_reqs_active(actor, target, &enabler->actor_reqs, RPT_CERTAIN)
|
||
&& are_reqs_active(target, actor, &enabler->target_reqs, RPT_CERTAIN);
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
result = TRI_NO;
|
||
action_enabler_list_iterate(action_enablers_for_action(wanted_action),
|
||
enabler) {
|
||
current = fc_tristate_and(mke_eval_reqs(actor->player, actor,
|
||
target->player,
|
||
current = fc_tristate_and(mke_eval_reqs(actor->player,
|
||
actor, target,
|
||
&enabler->actor_reqs,
|
||
RPT_CERTAIN),
|
||
mke_eval_reqs(actor->player, target,
|
||
actor->player,
|
||
mke_eval_reqs(actor->player,
|
||
target, actor,
|
||
&enabler->target_reqs,
|
||
RPT_CERTAIN));
|
||
if (current == TRI_YES) {
|
||
... | ... | |
If meta knowledge is missing TRI_MAYBE will be returned.
|
||
context may be NULL. This is equivalent to passing an empty context.
|
||
context and other_context may be NULL. This is equivalent to passing
|
||
empty contexts.
|
||
**************************************************************************/
|
||
static bool is_effect_val_known(enum effect_type effect_type,
|
||
const struct player *pov_player,
|
||
const struct req_context *context,
|
||
const struct player *other_player)
|
||
const struct req_context *other_context)
|
||
{
|
||
effect_list_iterate(get_effects(effect_type), peffect) {
|
||
if (TRI_MAYBE == mke_eval_reqs(pov_player, context,
|
||
other_player,
|
||
if (TRI_MAYBE == mke_eval_reqs(pov_player, context, other_context,
|
||
&(peffect->reqs), RPT_CERTAIN)) {
|
||
return FALSE;
|
||
}
|
||
... | ... | |
.unit = act_unit,
|
||
.unittype = unit_type_get(act_unit),
|
||
},
|
||
tgt_player)
|
||
&(const struct req_context) {
|
||
.player = tgt_player,
|
||
})
|
||
&& is_effect_val_known(EFT_ACTION_RESIST_PCT, act_player,
|
||
&(const struct req_context) {
|
||
.player = tgt_player,
|
||
.city = tgt_city,
|
||
.unit = act_unit,
|
||
},
|
||
act_player)) {
|
||
&(const struct req_context) {
|
||
.player = act_player,
|
||
})) {
|
||
int unconverted = action_dice_roll_odds(act_player, act_unit, tgt_city,
|
||
tgt_player, paction);
|
||
struct act_prob result = { .min = unconverted * ACTPROB_VAL_1_PCT,
|
||
... | ... | |
.unittype = actu_type,
|
||
.action = paction,
|
||
},
|
||
tgt_player,
|
||
&(const struct req_context) {
|
||
.player = tgt_player,
|
||
},
|
||
EFT_ACTION_ODDS_PCT))
|
||
/ 100)
|
||
- ((odds
|
||
... | ... | |
.unittype = actu_type,
|
||
.action = paction,
|
||
},
|
||
act_player,
|
||
&(const struct req_context) {
|
||
.player = act_player,
|
||
},
|
||
EFT_ACTION_RESIST_PCT))
|
||
/ 100);
|
||
... | ... | |
{
|
||
action_enabler_list_iterate(action_enablers_for_action(wanted_action),
|
||
enabler) {
|
||
if (are_reqs_active(target, actor_player,
|
||
if (are_reqs_active(target,
|
||
&(const struct req_context) {
|
||
.player = actor_player,
|
||
},
|
||
&enabler->target_reqs, RPT_POSSIBLE)) {
|
||
return TRUE;
|
||
}
|
common/base.c | ||
---|---|---|
.player = pplayer,
|
||
.tile = ptile,
|
||
},
|
||
tile_owner(ptile),
|
||
&(const struct req_context) {
|
||
.player = tile_owner(ptile),
|
||
},
|
||
&pextra->reqs, RPT_POSSIBLE);
|
||
}
|
||
... | ... | |
.unit = punit,
|
||
.unittype = unit_type_get(punit),
|
||
},
|
||
tile_owner(ptile),
|
||
&(const struct req_context) {
|
||
.player = tile_owner(ptile),
|
||
},
|
||
&pextra->reqs, RPT_CERTAIN);
|
||
}
|
||
common/combat.c | ||
---|---|---|
.city = pcity,
|
||
.tile = ptile,
|
||
},
|
||
owner, EFT_NUKE_PROOF)) {
|
||
&(const struct req_context) {
|
||
.player = owner,
|
||
},
|
||
EFT_NUKE_PROOF)) {
|
||
return pcity;
|
||
}
|
||
} square_iterate_end;
|
common/diptreaty.c | ||
---|---|---|
* the requirements. */
|
||
if (client_player == NULL || client_player == pfrom) {
|
||
if (!are_reqs_active(&(const struct req_context) { .player = pfrom },
|
||
pto, &clause_infos[type].giver_reqs, RPT_POSSIBLE)) {
|
||
&(const struct req_context) { .player = pto },
|
||
&clause_infos[type].giver_reqs, RPT_POSSIBLE)) {
|
||
return FALSE;
|
||
}
|
||
}
|
||
if (client_player == NULL || client_player == pto) {
|
||
if (!are_reqs_active(&(const struct req_context) { .player = pto },
|
||
pfrom, &clause_infos[type].receiver_reqs,
|
||
&(const struct req_context) { .player = pfrom },
|
||
&clause_infos[type].receiver_reqs,
|
||
RPT_POSSIBLE)) {
|
||
return FALSE;
|
||
}
|
||
}
|
||
if (client_player == NULL) {
|
||
if (!are_reqs_active(&(const struct req_context) { .player = pfrom },
|
||
pfrom, &clause_infos[type].either_reqs,
|
||
&(const struct req_context) { .player = pto },
|
||
&clause_infos[type].either_reqs,
|
||
RPT_POSSIBLE)
|
||
&& !are_reqs_active(&(const struct req_context) { .player = pto },
|
||
pfrom, &clause_infos[type].either_reqs,
|
||
&(const struct req_context) { .player = pfrom },
|
||
&clause_infos[type].either_reqs,
|
||
RPT_POSSIBLE)) {
|
||
return FALSE;
|
||
}
|
common/effects.c | ||
---|---|---|
context may be NULL. This is equivalent to passing an empty context.
|
||
**************************************************************************/
|
||
static bool is_effect_prevented(const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct effect *peffect,
|
||
const enum req_problem_type prob_type)
|
||
{
|
||
... | ... | |
/* Only check present=FALSE requirements; these will return _FALSE_
|
||
* from is_req_active() if met, and need reversed prob_type */
|
||
if (!preq->present
|
||
&& !is_req_active(context, other_player,
|
||
&& !is_req_active(context, other_context,
|
||
preq, REVERSED_RPT(prob_type))) {
|
||
return TRUE;
|
||
}
|
||
... | ... | |
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.
|
||
context and other_context may be NULL. This is equivalent to passing
|
||
empty contexts.
|
||
Returns the effect sources of this type _currently active_.
|
||
... | ... | |
**************************************************************************/
|
||
int get_target_bonus_effects(struct effect_list *plist,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
enum effect_type effect_type)
|
||
{
|
||
int bonus = 0;
|
||
... | ... | |
/* Loop over all effects of this type. */
|
||
effect_list_iterate(get_effects(effect_type), peffect) {
|
||
/* For each effect, see if it is active. */
|
||
if (are_reqs_active(context, other_player,
|
||
if (are_reqs_active(context, other_context,
|
||
&peffect->reqs, RPT_CERTAIN)) {
|
||
/* This code will add value of effect. If there's multiplier for
|
||
/* This code will add value of effect. If there's multiplier for
|
||
* effect and target_player aren't null, then value is multiplied
|
||
* by player's multiplier factor. */
|
||
if (peffect->multiplier) {
|
||
... | ... | |
.unit = punit,
|
||
.unittype = utype,
|
||
},
|
||
tile_owner(ptile),
|
||
&(const struct req_context) {
|
||
.player = tile_owner(ptile),
|
||
},
|
||
etype);
|
||
}
|
||
common/effects.h | ||
---|---|---|
int get_target_bonus_effects(struct effect_list *plist,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
enum effect_type effect_type);
|
||
double get_effect_expected_value(const struct req_context *context,
|
||
const struct player *other_player,
|
common/extras.c | ||
---|---|---|
.player = pplayer,
|
||
.tile = ptile,
|
||
},
|
||
tile_owner(ptile),
|
||
&(const struct req_context) {
|
||
.player = tile_owner(ptile),
|
||
},
|
||
&pextra->reqs,
|
||
RPT_POSSIBLE);
|
||
}
|
||
... | ... | |
.unit = punit,
|
||
.unittype = unit_type_get(punit),
|
||
},
|
||
tile_owner(ptile),
|
||
&(const struct req_context) {
|
||
.player = tile_owner(ptile),
|
||
},
|
||
&pextra->reqs,
|
||
RPT_CERTAIN);
|
||
}
|
||
... | ... | |
.player = pplayer,
|
||
.tile = ptile,
|
||
},
|
||
tile_owner(ptile),
|
||
&(const struct req_context) {
|
||
.player = tile_owner(ptile),
|
||
},
|
||
&pextra->rmreqs,
|
||
RPT_POSSIBLE);
|
||
}
|
||
... | ... | |
.unit = punit,
|
||
.unittype = unit_type_get(punit),
|
||
},
|
||
tile_owner(ptile),
|
||
&(const struct req_context) {
|
||
.player = tile_owner(ptile),
|
||
},
|
||
&pextra->rmreqs, RPT_CERTAIN);
|
||
}
|
||
... | ... | |
}
|
||
extra_type_by_rmcause_iterate(ERM_ENTER, extra) {
|
||
if (tile_has_extra(ptile, extra)
|
||
&& are_reqs_active(&context, tile_owner(ptile), &extra->rmreqs,
|
||
RPT_POSSIBLE)) {
|
||
&& are_reqs_active(&context,
|
||
&(const struct req_context) {
|
||
.player = tile_owner(ptile),
|
||
},
|
||
&extra->rmreqs, RPT_POSSIBLE)) {
|
||
return TRUE;
|
||
}
|
||
} extra_type_by_rmcause_iterate_end;
|
||
... | ... | |
}
|
||
extra_type_by_rmcause_iterate(ERM_ENTER, extra) {
|
||
if (tile_has_extra(ptile, extra)
|
||
&& are_reqs_active(&context, tile_owner(ptile), &extra->rmreqs,
|
||
RPT_POSSIBLE)) {
|
||
&& are_reqs_active(&context,
|
||
&(const struct req_context) {
|
||
.player = tile_owner(ptile),
|
||
},
|
||
&extra->rmreqs, RPT_POSSIBLE)) {
|
||
return TRUE;
|
||
}
|
||
} extra_type_by_rmcause_iterate_end;
|
||
... | ... | |
&& is_native_tile_to_extra(pextra, ptile)
|
||
&& !extra_conflicting_on_tile(pextra, ptile)
|
||
&& are_reqs_active(&(const struct req_context) { .tile = ptile },
|
||
tile_owner(ptile),
|
||
&(const struct req_context) {
|
||
.player = tile_owner(ptile),
|
||
},
|
||
&pextra->appearance_reqs, RPT_CERTAIN);
|
||
}
|
||
... | ... | |
&& is_extra_removed_by(pextra, ERM_DISAPPEARANCE)
|
||
&& can_extra_be_removed(pextra, ptile)
|
||
&& are_reqs_active(&(const struct req_context) { .tile = ptile },
|
||
tile_owner(ptile),
|
||
&(const struct req_context) {
|
||
.player = tile_owner(ptile),
|
||
},
|
||
&pextra->disappearance_reqs, RPT_CERTAIN);
|
||
}
|
||
common/metaknowledge.c | ||
---|---|---|
Is an evaluation of the requirement accurate when pov_player evaluates
|
||
it?
|
||
context may be NULL. This is equivalent to passing an empty context.
|
||
context and other_context may be NULL. This is equivalent to passing
|
||
empty contexts.
|
||
TODO: Move the data to a data file. That will
|
||
- let non programmers help complete it and/or fix what is wrong
|
||
... | ... | |
**************************************************************************/
|
||
static bool is_req_knowable(const struct player *pov_player,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req,
|
||
const enum req_problem_type prob_type)
|
||
{
|
||
... | ... | |
if (context == NULL) {
|
||
context = req_context_empty();
|
||
}
|
||
if (other_context == NULL) {
|
||
other_context = req_context_empty();
|
||
}
|
||
if (req->source.kind == VUT_UTFLAG
|
||
|| req->source.kind == VUT_UTYPE
|
||
... | ... | |
|| req->source.kind == VUT_DIPLREL_UNITANY_O) {
|
||
switch (req->range) {
|
||
case REQ_RANGE_LOCAL:
|
||
if (other_player == NULL
|
||
if (other_context->player == NULL
|
||
|| context->player == NULL) {
|
||
/* The two players may exist but not be passed when the problem
|
||
* type is RPT_POSSIBLE. */
|
||
... | ... | |
}
|
||
if (pov_player == context->player
|
||
|| pov_player == other_player) {
|
||
|| pov_player == other_context->player) {
|
||
return TRUE;
|
||
}
|
||
if (can_plr_see_all_sym_diplrels_of(pov_player, context->player)
|
||
|| can_plr_see_all_sym_diplrels_of(pov_player, other_player)) {
|
||
|| can_plr_see_all_sym_diplrels_of(pov_player,
|
||
other_context->player)) {
|
||
return TRUE;
|
||
}
|
||
... | ... | |
/**********************************************************************//**
|
||
Evaluate a single requirement given pov_player's knowledge.
|
||
context may be NULL. This is equivalent to passing an empty context.
|
||
context and other_context may be NULL. This is equivalent to passing
|
||
empty contexts.
|
||
Note: Assumed to use pov_player's data.
|
||
**************************************************************************/
|
||
enum fc_tristate
|
||
mke_eval_req(const struct player *pov_player,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req,
|
||
const enum req_problem_type prob_type)
|
||
{
|
||
if (!is_req_knowable(pov_player, context, other_player,
|
||
if (!is_req_knowable(pov_player, context, other_context,
|
||
req, prob_type)) {
|
||
return TRI_MAYBE;
|
||
}
|
||
if (is_req_active(context, other_player, req, prob_type)) {
|
||
if (is_req_active(context, other_context, req, prob_type)) {
|
||
return TRI_YES;
|
||
} else {
|
||
return TRI_NO;
|
||
... | ... | |
/**********************************************************************//**
|
||
Evaluate a requirement vector given pov_player's knowledge.
|
||
context may be NULL. This is equivalent to passing an empty context.
|
||
context and other_context may be NULL. This is equivalent to passing
|
||
empty contexts.
|
||
Note: Assumed to use pov_player's data.
|
||
**************************************************************************/
|
||
enum fc_tristate
|
||
mke_eval_reqs(const struct player *pov_player,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement_vector *reqs,
|
||
const enum req_problem_type prob_type)
|
||
{
|
||
... | ... | |
result = TRI_YES;
|
||
requirement_vector_iterate(reqs, preq) {
|
||
current = mke_eval_req(pov_player, context, other_player,
|
||
current = mke_eval_req(pov_player, context, other_context,
|
||
preq, prob_type);
|
||
if (current == TRI_NO) {
|
||
return TRI_NO;
|
common/metaknowledge.h | ||
---|---|---|
enum fc_tristate
|
||
mke_eval_req(const struct player *pov_player,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req,
|
||
const enum req_problem_type prob_type);
|
||
enum fc_tristate
|
||
mke_eval_reqs(const struct player *pov_player,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement_vector *reqs,
|
||
const enum req_problem_type prob_type);
|
||
common/player.c | ||
---|---|---|
.unittype = off_ut,
|
||
.action = paction,
|
||
},
|
||
tgt_plr,
|
||
&(const struct req_context) {
|
||
.player = tgt_plr,
|
||
},
|
||
outcome);
|
||
if (casus_belli_amount >= CASUS_BELLI_OUTRAGE) {
|
common/requirements.c | ||
---|---|---|
static
|
||
enum fc_tristate tri_req_present(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req);
|
||
/* Function pointer for requirement-type-specific is_req_active handlers */
|
||
typedef enum fc_tristate
|
||
(*is_req_active_cb)(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req);
|
||
static inline bool are_tiles_in_range(const struct tile *tile1,
|
||
... | ... | |
is satisfied in a given context (it always is), ignoring parts of the
|
||
requirement that can be handled uniformly for all requirement types.
|
||
context and req must not be null, and req must be a none requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a none requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_none_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_NONE);
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a building requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a building requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_building_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
const struct impr_type *building;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a building genus
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a building genus requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_buildinggenus_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_IMPR_GENUS);
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a building flag
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a building flag requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_buildingflag_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_IMPR_FLAG);
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a building flag
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a player flag requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_plr_flag_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_PLAYER_FLAG);
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a building flag
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a player state requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_plr_state_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_PLAYER_STATE);
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a tech requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a tech requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_tech_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
Tech_type_id tech;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a techflag requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a techflag requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_techflag_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
enum tech_flag_id techflag;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a minculture requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a minculture requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_minculture_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
int minculture;
|
||
... | ... | |
a given context, ignoring parts of the requirement that can be handled
|
||
uniformly for all requirement types.
|
||
context and req must not be null, and req must be a minforeignpct
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a minforeignpct requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_minforeignpct_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
int min_foreign_pct, foreign_pct;
|
||
... | ... | |
given context, ignoring parts of the requirement that can be handled
|
||
uniformly for all requirement types.
|
||
context and req must not be null, and req must be a maxunitsontile
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a maxunitsontile requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_maxunitsontile_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
int max_units;
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be an extra requirement
|
||
context, other_context and req must not be null,
|
||
and req must be an extra requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_extra_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
const struct extra_type *pextra;
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a goods requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a goods requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_good_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
const struct goods_type *pgood;
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be an action requirement
|
||
context, other_context and req must not be null,
|
||
and req must be an action requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_action_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_ACTION);
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be an output type
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be an output type requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_outputtype_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_OTYPE);
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a specialist requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a specialist requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_specialist_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_SPECIALIST);
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a terrain requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a terrain requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_terrain_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
const struct terrain *pterrain;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a terrain class
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a terrain class requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_terrainclass_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
enum terrain_class pclass;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a terrain flag
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a terrain flag requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_terrainflag_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
enum terrain_flag_id terrflag;
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a roadflag requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a roadflag requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_roadflag_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
enum road_flag_id roadflag;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be an extraflag requirement
|
||
context, other_context and req must not be null,
|
||
and req must be an extraflag requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_extraflag_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
enum extra_flag_id extraflag;
|
||
... | ... | |
is satisfied in a given context, ignoring parts of the requirement that
|
||
can be handled uniformly for all requirement types.
|
||
context and req must not be null, and req must be a terrainalter
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a terrainalter requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_terrainalter_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
enum terrain_alteration alteration;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a gov requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a gov requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_gov_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_GOVERNMENT);
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a style requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a style requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_style_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_STYLE);
|
||
... | ... | |
given context, ignoring parts of the requirement that can be handled
|
||
uniformly for all requirement types.
|
||
context and req must not be null, and req must be a mintechs requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a mintechs requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_mintechs_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_MINTECHS);
|
||
... | ... | |
given context, ignoring parts of the requirement that can be handled
|
||
uniformly for all requirement types.
|
||
context and req must not be null, and req must be a mincities requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a mincities requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_mincities_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_MINCITIES);
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be an AI level requirement
|
||
context, other_context and req must not be null,
|
||
and req must be an AI level requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_ai_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_AI_LEVEL);
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a nation requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a nation requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_nation_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
const struct nation_type *nation;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a nation group
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a nation group requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_nationgroup_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
const struct nation_group *ngroup;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a nationality
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a nationality requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_nationality_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
const struct nation_type *nationality;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be an original owner
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be an original owner requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_originalowner_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
const struct nation_type *nation;
|
||
... | ... | |
satisfied in a given context, ignoring parts of the requirement that can
|
||
be handled uniformly for all requirement types.
|
||
context and req must not be null, and req must be a diplrel requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a diplrel requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_diplrel_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_DIPLREL);
|
||
return is_diplrel_in_range(context->player, other_player, req->range,
|
||
req->source.value.diplrel);
|
||
return is_diplrel_in_range(context->player, other_context->player,
|
||
req->range, req->source.value.diplrel);
|
||
}
|
||
/**********************************************************************//**
|
||
... | ... | |
requirement is satisfied in a given context, ignoring parts of the
|
||
requirement that can be handled uniformly for all requirement types.
|
||
context and req must not be null, and req must be a diplrel_tile
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a diplrel_tile requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_diplrel_tile_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_DIPLREL_TILE);
|
||
... | ... | |
parts of the requirement that can be handled uniformly for all requirement
|
||
types.
|
||
context and req must not be null, and req must be a diplrel_tile_o
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a diplrel_tile_o requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_diplrel_tile_o_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_DIPLREL_TILE_O);
|
||
return is_diplrel_in_range(context->tile ? tile_owner(context->tile)
|
||
: NULL,
|
||
other_player,
|
||
other_context->player,
|
||
req->range,
|
||
req->source.value.diplrel);
|
||
}
|
||
... | ... | |
parts of the requirement that can be handled uniformly for all requirement
|
||
types.
|
||
context and req must not be null, and req must be a diplrel_unitany
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a diplrel_unitany requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_diplrel_unitany_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_DIPLREL_UNITANY);
|
||
... | ... | |
parts of the requirement that can be handled uniformly for all requirement
|
||
types.
|
||
context and req must not be null, and req must be a diplrel_unitany_o
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a diplrel_unitany_o requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_diplrel_unitany_o_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_DIPLREL_UNITANY_O);
|
||
return is_diplrel_unitany_in_range(context->tile, other_player,
|
||
return is_diplrel_unitany_in_range(context->tile, other_context->player,
|
||
req->range,
|
||
req->source.value.diplrel);
|
||
}
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a unittype requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a unittype requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_unittype_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
const struct unit_type *punittype;
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a unitflag requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a unitflag requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_unitflag_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
enum unit_type_flag_id unitflag;
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a unitclass requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a unitclass requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_unitclass_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
const struct unit_class *pclass;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a unitclassflag
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a unitclassflag requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_unitclassflag_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
enum unit_class_flag_id ucflag;
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a unitstate requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a unitstate requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_unitstate_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
enum ustate_prop uprop;
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be an activity requirement
|
||
context, other_context and req must not be null,
|
||
and req must be an activity requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_activity_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
enum unit_activity activity;
|
||
... | ... | |
satisfied in a given context, ignoring parts of the requirement that can
|
||
be handled uniformly for all requirement types.
|
||
context and req must not be null, and req must be a minveteran requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a minveteran requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_minveteran_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_MINVETERAN);
|
||
... | ... | |
is satisfied in a given context, ignoring parts of the requirement that
|
||
can be handled uniformly for all requirement types.
|
||
context and req must not be null, and req must be a minmovefrags
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a minmovefrags requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_minmovefrags_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_MINMOVES);
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a minhitpoints
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a minhitpoints requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_minhitpoints_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_MINHP);
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be an age requirement
|
||
context, other_context and req must not be null,
|
||
and req must be an age requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_age_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_AGE);
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a form age requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a form age requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_form_age_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_FORM_AGE);
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a citytile requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a citytile requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_citytile_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
enum citytile_type citytile;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a city status
|
||
requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a city status requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_citystatus_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
enum citystatus_type citystatus;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|
||
context and req must not be null, and req must be a minsize requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a minsize requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_minsize_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_MINSIZE);
|
||
... | ... | |
ignoring parts of the requirement that can be handled uniformly for all
|
||
requirement types.
|
||
context and req must not be null, and req must be a counter requirement
|
||
context, other_context and req must not be null,
|
||
and req must be a counter requirement
|
||
**************************************************************************/
|
||
static enum fc_tristate
|
||
is_counter_req_active(const struct civ_map *nmap,
|
||
const struct req_context *context,
|
||
const struct player *other_player,
|
||
const struct req_context *other_context,
|
||
const struct requirement *req)
|
||
{
|
||
const struct counter *count;
|
||
... | ... | |
context, ignoring parts of the requirement that can be handled uniformly
|
||
for all requirement types.
|