Bug #2179 » 2179_Main.patch
| ai/default/daiunit.c | ||
|---|---|---|
|
/* We check to see if our current goal is feasible */
|
||
|
struct city *city_dest = tile_city(punit->goto_tile);
|
||
|
struct goods_type *pgood = unit_current_goods(punit, homecity);
|
||
|
int priority = unit_current_good_replace_priority(pgood);
|
||
|
if ((city_dest == nullptr)
|
||
|
|| !pplayers_allied(unit_owner(punit), city_dest->owner)
|
||
|
|| (unit_data->task == AIUNIT_TRADE
|
||
|
&& !(can_cities_trade(homecity, city_dest)
|
||
|
&& can_establish_trade_route(homecity, city_dest,
|
||
|
pgood->replace_priority)))
|
||
|
priority)))
|
||
|
|| (unit_data->task == AIUNIT_WONDER
|
||
|
/* Helping the (new) production is illegal. */
|
||
|
&& !city_production_gets_caravan_shields(&city_dest->production))
|
||
| client/gui-sdl2/menu.c | ||
|---|---|---|
|
punit->carrying,
|
||
|
TRUE);
|
||
|
struct goods_type *pgood = unit_current_goods(punit, homecity);
|
||
|
int priority = unit_current_good_replace_priority(pgood);
|
||
|
if (can_establish_trade_route(homecity, pcity, pgood->replace_priority)) {
|
||
|
if (can_establish_trade_route(homecity, pcity, priority)) {
|
||
|
fc_snprintf(cbuf, sizeof(cbuf),
|
||
|
_("%s With %s ( %d one time bonus + %d trade ) (R)"),
|
||
|
action_id_name_translation(ACTION_TRADE_ROUTE),
|
||
| client/gui-sdl3/menu.c | ||
|---|---|---|
|
punit->carrying,
|
||
|
TRUE);
|
||
|
struct goods_type *pgood = unit_current_goods(punit, homecity);
|
||
|
int priority = unit_current_good_replace_priority(pgood);
|
||
|
if (can_establish_trade_route(homecity, pcity, pgood->replace_priority)) {
|
||
|
if (can_establish_trade_route(homecity, pcity, priority)) {
|
||
|
fc_snprintf(cbuf, sizeof(cbuf),
|
||
|
_("%s With %s ( %d one time bonus + %d trade ) (R)"),
|
||
|
action_id_name_translation(ACTION_TRADE_ROUTE),
|
||
| client/text.c | ||
|---|---|---|
|
struct city *hcity = game_city_by_number(pfocus_unit->homecity);
|
||
|
if (utype_can_do_action(unit_type_get(pfocus_unit), ACTION_TRADE_ROUTE)
|
||
|
&& can_cities_trade(hcity, pcity)
|
||
|
&& can_establish_trade_route(hcity, pcity,
|
||
|
unit_current_goods(pfocus_unit,
|
||
|
hcity)->replace_priority)) {
|
||
|
/* TRANS: "Trade from Warsaw: 5" */
|
||
|
astr_add_line(&str, _("Trade from %s: %d"),
|
||
|
city_name_get(hcity),
|
||
|
trade_base_between_cities(hcity, pcity));
|
||
|
&& can_cities_trade(hcity, pcity)) {
|
||
|
struct goods_type *pgood =
|
||
|
unit_current_goods(pfocus_unit, hcity);
|
||
|
int priority = unit_current_good_replace_priority(pgood);
|
||
|
if (can_establish_trade_route(hcity, pcity, priority)) {
|
||
|
/* TRANS: "Trade from Warsaw: 5" */
|
||
|
astr_add_line(&str, _("Trade from %s: %d"),
|
||
|
city_name_get(hcity),
|
||
|
trade_base_between_cities(hcity, pcity));
|
||
|
}
|
||
|
}
|
||
|
} unit_list_iterate_end;
|
||
|
}
|
||
| common/actres.c | ||
|---|---|---|
|
* entering the market place. */
|
||
|
if (result == ACTRES_TRADE_ROUTE) {
|
||
|
struct goods_type *pgood = unit_current_goods(actor->unit, homecity);
|
||
|
int priority = unit_current_good_replace_priority(pgood);
|
||
|
if (!can_establish_trade_route(homecity, target->city,
|
||
|
pgood->replace_priority)) {
|
||
|
if (!can_establish_trade_route(homecity, target->city, priority)) {
|
||
|
return TRI_NO;
|
||
|
}
|
||
|
}
|
||
| common/aicore/caravan.c | ||
|---|---|---|
|
if (!param->consider_windfall || !can_cities_trade(src, dest)) {
|
||
|
return 0;
|
||
|
} else {
|
||
|
bool can_establish = (unit_can_do_action(caravan, ACTION_TRADE_ROUTE)
|
||
|
&& can_establish_trade_route(src, dest,
|
||
|
pgood->replace_priority));
|
||
|
int priority =
|
||
|
unit_current_good_replace_priority(pgood);
|
||
|
bool can_establish = unit_can_do_action(caravan, ACTION_TRADE_ROUTE)
|
||
|
&& can_establish_trade_route(src, dest, priority);
|
||
|
int bonus = get_caravan_enter_city_trade_bonus(src, dest,
|
||
|
unit_type_get(caravan),
|
||
|
nullptr, can_establish);
|
||
| ... | ... | |
|
/* If the city can handle this route, we don't break any old routes */
|
||
|
losttrade = 0;
|
||
|
} else {
|
||
|
int priority = unit_current_good_replace_priority(pgood);
|
||
|
struct trade_route_list *would_remove
|
||
|
= (countloser ? trade_route_list_new() : nullptr);
|
||
|
int oldtrade = city_trade_removable(pcity, pgood->replace_priority,
|
||
|
would_remove);
|
||
|
int oldtrade = city_trade_removable(pcity, priority, would_remove);
|
||
|
/* If we own the city, the trade benefit is only by how much
|
||
|
better we are than the old trade route */
|
||
| ... | ... | |
|
/* First, see if a new route is made. */
|
||
|
if (!can_cities_trade(src, dest)
|
||
|
|| !can_establish_trade_route(src, dest, pgood->replace_priority)) {
|
||
|
|| !can_establish_trade_route(src, dest,
|
||
|
unit_current_good_replace_priority(pgood))) {
|
||
|
return 0;
|
||
|
}
|
||
|
if (max_trade_routes(src) <= 0 || max_trade_routes(dest) <= 0) {
|
||
| common/traderoutes.c | ||
|---|---|---|
|
}
|
||
|
/*********************************************************************//**
|
||
|
Fond out goods type for the new trade route
|
||
|
Return goods type for the new trade route.
|
||
|
May return NULL if city can't provide any goods.
|
||
|
@param src City to start traderoute from
|
||
|
@param punit Unit to carry the goods
|
||
|
@return Goods to carry
|
||
|
@return Goods to carry, may be NULL
|
||
|
*************************************************************************/
|
||
|
struct goods_type *goods_from_city_to_unit(const struct city *src,
|
||
|
const struct unit *punit)
|
||
| ... | ... | |
|
/*********************************************************************//**
|
||
|
What goods unit would provide if it established trade route now?
|
||
|
May return NULL if city can't provide any goods.
|
||
|
@param punit Unit to establish the trade route
|
||
|
@param homecity Homecity of the unit. Can be used speculatively.
|
||
|
@return What good unit would provide
|
||
|
@return What good unit would provide, may be NULL
|
||
|
*************************************************************************/
|
||
|
struct goods_type *unit_current_goods(const struct unit *punit,
|
||
|
const struct city *homecity)
|
||
| common/unit.c | ||
|---|---|---|
|
return utype_upkeep_cost(unit_type_get(punit), punit, unit_owner(punit),
|
||
|
otype);
|
||
|
}
|
||
|
/**********************************************************************//**
|
||
|
Returns the *pgood's replace_priority, or -1 if pgood is nullptr
|
||
|
**************************************************************************/
|
||
|
int unit_current_good_replace_priority(const struct goods_type *pgood)
|
||
|
{
|
||
|
return pgood != nullptr ? pgood->replace_priority : -1;
|
||
|
}
|
||
| common/unit.h | ||
|---|---|---|
|
enum gen_action activity_default_action(enum unit_activity act);
|
||
|
int unit_current_good_replace_priority(const struct goods_type *pgood);
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif /* __cplusplus */
|
||
- « Previous
- 1
- 2
- Next »