Feature #549 » 0067-Unhardcode-wld.map-from-action_prob_vs_unit.patch
ai/default/aidiplomat.c | ||
---|---|---|
pf_path_destroy(path);
|
||
}
|
||
if (action_prob_possible(action_prob_vs_unit(punit,
|
||
if (action_prob_possible(action_prob_vs_unit(nmap, punit,
|
||
ACTION_SPY_BRIBE_UNIT,
|
||
pvictim))) {
|
||
unit_do_action(pplayer, punit->id,
|
||
... | ... | |
} else {
|
||
return FALSE;
|
||
}
|
||
} else if (action_prob_possible(action_prob_vs_unit(punit,
|
||
} else if (action_prob_possible(action_prob_vs_unit(nmap, punit,
|
||
ACTION_SPY_SABOTAGE_UNIT_ESC,
|
||
pvictim))
|
||
&& threat) {
|
ai/default/aiferry.c | ||
---|---|---|
action_by_result_iterate(paction, ACTRES_TRANSPORT_BOARD) {
|
||
enum gen_action act_id = action_id(paction);
|
||
if (action_prob_possible(action_prob_vs_unit(punit, act_id,
|
||
if (action_prob_possible(action_prob_vs_unit(nmap, punit, act_id,
|
||
ferryboat))) {
|
||
if (unit_perform_action(pplayer,
|
||
punit->id, ferryboat->id, 0, "",
|
||
... | ... | |
action_by_result_iterate(paction, ACTRES_TRANSPORT_BOARD) {
|
||
enum gen_action act_id = action_id(paction);
|
||
if (action_prob_possible(action_prob_vs_unit(bodyguard,
|
||
if (action_prob_possible(action_prob_vs_unit(nmap, bodyguard,
|
||
act_id,
|
||
ferryboat))) {
|
||
if (unit_perform_action(pplayer,
|
client/control.c | ||
---|---|---|
struct client_disband_unit_data *next;
|
||
struct client_disband_unit_data *data = p;
|
||
int act;
|
||
const struct civ_map *nmap = &(wld.map);
|
||
fc_assert_ret(can_client_issue_orders());
|
||
... | ... | |
switch (action_id_get_target_kind(act)) {
|
||
case ATK_CITY:
|
||
if ((pcity = tile_city(unit_tile(punit)))
|
||
&& action_prob_possible(action_prob_vs_city(&(wld.map), punit,
|
||
&& action_prob_possible(action_prob_vs_city(nmap, punit,
|
||
act, pcity))) {
|
||
request_do_action(act, punit->id, pcity->id, 0, "");
|
||
}
|
||
break;
|
||
case ATK_UNIT:
|
||
if (action_prob_possible(action_prob_vs_unit(punit, act, punit))) {
|
||
if (action_prob_possible(action_prob_vs_unit(nmap, punit, act, punit))) {
|
||
request_do_action(act, punit->id, punit->id, 0, "");
|
||
}
|
||
break;
|
||
... | ... | |
: ACTRES_TRANSPORT_EMBARK) {
|
||
enum gen_action act_id = action_id(paction);
|
||
if (action_prob_possible(action_prob_vs_unit(pcargo, act_id,
|
||
if (action_prob_possible(action_prob_vs_unit(&(wld.map), pcargo, act_id,
|
||
ptrans))) {
|
||
/* Try the first action that may be legal. */
|
||
/* Implement something like do_disband_alternative() if a ruleset
|
common/actions.c | ||
---|---|---|
Get the actor unit's probability of successfully performing the chosen
|
||
action on the target unit.
|
||
**************************************************************************/
|
||
struct act_prob action_prob_vs_unit(const struct unit *actor_unit,
|
||
struct act_prob action_prob_vs_unit(const struct civ_map *nmap,
|
||
const struct unit *actor_unit,
|
||
const action_id act_id,
|
||
const struct unit *target_unit)
|
||
{
|
||
const struct civ_map *nmap = &(wld.map);
|
||
return action_prob_vs_unit_full(nmap, actor_unit,
|
||
unit_home(actor_unit),
|
||
unit_tile(actor_unit),
|
||
... | ... | |
break;
|
||
case ATK_UNIT:
|
||
if (tgt_unit) {
|
||
prob = action_prob_vs_unit(act_unit, paction->id, tgt_unit);
|
||
prob = action_prob_vs_unit(nmap, act_unit, paction->id, tgt_unit);
|
||
}
|
||
break;
|
||
case ATK_SELF:
|
common/actions.h | ||
---|---|---|
const action_id act_id,
|
||
const struct city *victim);
|
||
struct act_prob action_prob_vs_unit(const struct unit* actor,
|
||
struct act_prob action_prob_vs_unit(const struct civ_map *nmap,
|
||
const struct unit *actor,
|
||
const action_id act_id,
|
||
const struct unit* victim);
|
||
const struct unit *victim);
|
||
struct act_prob action_prob_vs_stack(const struct unit* actor,
|
||
const action_id act_id,
|
common/unit.c | ||
---|---|---|
ptrans, pcargo));
|
||
} else {
|
||
return (action_prob_possible(
|
||
action_prob_vs_unit(pcargo, ACTION_TRANSPORT_DEBOARD, ptrans))
|
||
action_prob_vs_unit(nmap, pcargo, ACTION_TRANSPORT_DEBOARD, ptrans))
|
||
|| action_prob_possible(
|
||
action_prob_vs_unit(ptrans, ACTION_TRANSPORT_UNLOAD,
|
||
action_prob_vs_unit(nmap, ptrans, ACTION_TRANSPORT_UNLOAD,
|
||
pcargo)));
|
||
}
|
||
}
|
server/actiontools.c | ||
---|---|---|
static bool may_unit_act_vs_unit(struct unit *actor, struct unit *target,
|
||
bool accept_all_actions)
|
||
{
|
||
const struct civ_map *nmap = &(wld.map);
|
||
if (actor == NULL || target == NULL) {
|
||
/* Can't do any actions if actor or target are missing. */
|
||
return FALSE;
|
||
... | ... | |
continue;
|
||
}
|
||
if (action_prob_possible(action_prob_vs_unit(actor, act, target))) {
|
||
if (action_prob_possible(action_prob_vs_unit(nmap, actor, act, target))) {
|
||
/* The actor unit may be able to do this action to the target
|
||
* unit. */
|
||
return TRUE;
|
||
... | ... | |
case ATK_UNIT:
|
||
if (tgt_unit
|
||
&& is_action_enabled_unit_on_unit(nmap, act, actor, tgt_unit)) {
|
||
current = action_prob_vs_unit(actor, act, tgt_unit);
|
||
current = action_prob_vs_unit(nmap, actor, act, tgt_unit);
|
||
}
|
||
break;
|
||
case ATK_SELF:
|
server/unithand.c | ||
---|---|---|
case ATK_UNIT:
|
||
if (target_unit) {
|
||
/* Calculate the probabilities. */
|
||
probabilities[act] = action_prob_vs_unit(actor_unit, act,
|
||
probabilities[act] = action_prob_vs_unit(nmap, actor_unit, act,
|
||
target_unit);
|
||
} else {
|
||
/* No target to act against. */
|
server/unittools.c | ||
---|---|---|
tgt_id = tgt_city->id;
|
||
break;
|
||
case ATK_UNIT:
|
||
prob = action_prob_vs_unit(punit, order.action,
|
||
prob = action_prob_vs_unit(nmap, punit, order.action,
|
||
tgt_unit);
|
||
tgt_id = tgt_unit->id;
|