Project

General

Profile

Feature #2052 » 2052_Main.patch

Dean Brown, 06/14/2026 07:36 AM

View differences:

server/techtools.c
/* Alert the owners of any wonders that have been made obsolete */
improvement_iterate(pimprove) {
requirement_vector_iterate(&pimprove->obsolete_by, pobs) {
bool is_range_ok = FALSE;
struct player *city_owner = nullptr;
struct player *new_tech_player =
player_by_number(research_number(presearch));
pcity = city_from_great_wonder(pimprove);
if (pcity) {
city_owner = city_owner(pcity);
}
switch (pobs->range) {
case REQ_RANGE_PLAYER:
if (city_owner
&& (new_tech_player == city_owner)) {
is_range_ok = TRUE;
}
break;
case REQ_RANGE_TEAM:
if (city_owner
&& players_on_same_team(new_tech_player, city_owner)) {
is_range_ok = TRUE;
}
break;
case REQ_RANGE_ALLIANCE:
if (city_owner
&& pplayers_allied(new_tech_player, city_owner)) {
is_range_ok = TRUE;
}
break;
case REQ_RANGE_WORLD:
is_range_ok = TRUE;
break;
default:
break;
}
if (pobs->source.kind == VUT_ADVANCE
&& pobs->source.value.advance == vap
&& pobs->range >= REQ_RANGE_WORLD
&& is_range_ok
&& pobs->present
&& pobs->survives
&& is_great_wonder(pimprove)
&& (pcity = city_from_great_wonder(pimprove))) {
notify_player(city_owner(pcity), NULL, E_WONDER_OBSOLETE, ftc_server,
&& city_owner) {
notify_player(city_owner, nullptr, E_WONDER_OBSOLETE, ftc_server,
_("Discovery of %s OBSOLETES %s in %s!"),
research_advance_name_translation
(research_get(city_owner(pcity)), tech_found),
(research_get(city_owner), tech_found),
improvement_name_translation(pimprove),
city_link(pcity));
}
......
game.info.tech_steal_allow_holes)
&& research_invention_state(presearch, i) != TECH_KNOWN
&& research_invention_state(vresearch, i) == TECH_KNOWN) {
j--;
j--;
}
if (j == 0) {
stolen_tech = i;
break;
stolen_tech = i;
break;
}
} advance_index_iterate_max_end;
fc_assert(stolen_tech != A_NONE);
(2-2/2)