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 = 1;
|
||
|
if (pgood != nullptr) {
|
||
|
priority = pgood->replace_priority;
|
||
|
}
|
||
|
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 = 1;
|
||
|
if (can_establish_trade_route(homecity, pcity, pgood->replace_priority)) {
|
||
|
if (pgood != nullptr) {
|
||
|
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 != nullptr) {
|
||
|
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 != nullptr) {
|
||
|
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 != nullptr) {
|
||
|
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 != nullptr) {
|
||
|
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() : 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 */
|
||
| ... | ... | |
|
const struct goods_type *pgood,
|
||
|
const struct caravan_parameter *param)
|
||
|
{
|
||
|
int priority = 1;
|
||
|
if (pgood != nullptr) {
|
||
|
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 nullptr 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 nullptr
|
||
|
*************************************************************************/
|
||
|
struct goods_type *goods_from_city_to_unit(const struct city *src,
|
||
|
const struct unit *punit)
|
||
| ... | ... | |
|
} goods_type_iterate_end;
|
||
|
if (i == 0) {
|
||
|
return NULL;
|
||
|
return nullptr;
|
||
|
}
|
||
|
return potential[fc_rand(i)];
|
||
| ... | ... | |
|
/*********************************************************************//**
|
||
|
What goods unit would provide if it established trade route now?
|
||
|
May return nullptr 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 nullptr
|
||
|
*************************************************************************/
|
||
|
struct goods_type *unit_current_goods(const struct unit *punit,
|
||
|
const struct city *homecity)
|
||