Project

General

Profile

Bug #2179 » 2179_S3_3.patch

Dean Brown, 08/29/2026 05:06 AM

View differences:

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 = 1;
if (pgood != NULL) {
priority = pgood->replace_priority;
}
if ((city_dest == NULL)
|| !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 = 1;
if (can_establish_trade_route(homecity, pcity, pgood->replace_priority)) {
if (pgood != NULL) {
priority = 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 = 1;
if (can_establish_trade_route(homecity, pcity, pgood->replace_priority)) {
if (pgood != NULL) {
priority = 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 = 1;
if (pgood != NULL) {
priority = pgood->replace_priority;
}
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 = 1;
if (pgood != NULL) {
priority = pgood->replace_priority;
}
if (!can_establish_trade_route(homecity, target->city,
pgood->replace_priority)) {
priority)) {
return TRI_NO;
}
}
common/aicore/caravan.c
bool countloser, int newtrade)
{
int losttrade = 0;
int priority = 1;
if (pgood != NULL) {
priority = pgood->replace_priority;
}
/* If the city is owned by someone else, we don't benefit from the
new trade (but we might still lose from a broken trade route) */
......
} else {
struct trade_route_list *would_remove
= (countloser ? trade_route_list_new() : NULL);
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 */
......
const struct goods_type *pgood,
const struct caravan_parameter *param)
{
int priority = 1;
if (pgood != NULL) {
priority = pgood->replace_priority;
}
/* Do we care about trade at all? */
if (!param->consider_trade) {
return 0;
......
/* 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, priority)) {
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
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)
(2-2/2)