Feature #2052 » 2052_Main.patch
| 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);
|
||
- « Previous
- 1
- 2
- Next »