HostedRedmine.com has moved to the Planio platform. All logins and passwords remained the same. All users will be able to login and use Redmine just as before. "Read more...":https://support.plan.io/news/187
Feature #825236 ยป 0055-Disallow-placing-extras-where-also-workers-are-makin.patch
common/extras.c | ||
---|---|---|
}
|
||
}
|
||
/* Placing extras is not allowed to tiles where also workers do changes. */
|
||
unit_list_iterate(ptile->units, punit) {
|
||
tile_changing_activities_iterate(act) {
|
||
if (punit->activity == act) {
|
||
return FALSE;
|
||
}
|
||
} tile_changing_activities_iterate_end;
|
||
} unit_list_iterate_end;
|
||
return player_can_build_extra(pextra, pplayer, ptile);
|
||
}
|
||
common/unit.c | ||
---|---|---|
Activity_type_id real_activities[ACTIVITY_LAST];
|
||
const Activity_type_id tile_changing_activities[] =
|
||
{ ACTIVITY_PILLAGE, ACTIVITY_GEN_ROAD, ACTIVITY_IRRIGATE, ACTIVITY_MINE,
|
||
ACTIVITY_BASE, ACTIVITY_CULTIVATE, ACTIVITY_PLANT, ACTIVITY_TRANSFORM,
|
||
ACTIVITY_POLLUTION, ACTIVITY_FALLOUT, ACTIVITY_LAST };
|
||
struct cargo_iter {
|
||
struct iterator vtable;
|
||
const struct unit_list_link *links[GAME_TRANSPORT_MAX_RECURSIVE];
|
common/unit.h | ||
---|---|---|
activity_type_list_iterate_end \
|
||
}
|
||
extern const Activity_type_id tile_changing_activities[ACTIVITY_LAST];
|
||
#define tile_changing_activities_iterate(_act_) \
|
||
{ \
|
||
activity_type_list_iterate(tile_changing_activities, _act_)
|
||
#define tile_changing_activities_iterate_end \
|
||
activity_type_list_iterate_end \
|
||
}
|
||
|
||
bool unit_can_help_build_wonder_here(const struct unit *punit);
|
||
bool unit_can_est_trade_route_here(const struct unit *punit);
|
||
enum unit_airlift_result
|
server/unittools.c | ||
---|---|---|
int total = 0;
|
||
bool tgt_matters = activity_requires_target(act);
|
||
unit_list_iterate (ptile->units, punit) {
|
||
unit_list_iterate(ptile->units, punit) {
|
||
if (punit->activity == act
|
||
&& (!tgt_matters || punit->activity_target == tgt)) {
|
||
total += punit->activity_count;
|
||
... | ... | |
**************************************************************************/
|
||
static void update_unit_activity(struct unit *punit)
|
||
{
|
||
const enum unit_activity tile_changing_actions[] =
|
||
{ ACTIVITY_PILLAGE, ACTIVITY_GEN_ROAD, ACTIVITY_IRRIGATE, ACTIVITY_MINE,
|
||
ACTIVITY_BASE, ACTIVITY_CULTIVATE, ACTIVITY_PLANT, ACTIVITY_TRANSFORM,
|
||
ACTIVITY_POLLUTION, ACTIVITY_FALLOUT, ACTIVITY_LAST };
|
||
struct player *pplayer = unit_owner(punit);
|
||
bool unit_activity_done = FALSE;
|
||
enum unit_activity activity = punit->activity;
|
||
struct tile *ptile = unit_tile(punit);
|
||
int i;
|
||
|
||
switch (activity) {
|
||
case ACTIVITY_IDLE:
|
||
... | ... | |
} unit_list_iterate_end;
|
||
}
|
||
for (i = 0; tile_changing_actions[i] != ACTIVITY_LAST; i++) {
|
||
if (tile_changing_actions[i] == activity) {
|
||
tile_changing_activities_iterate(act) {
|
||
if (act == activity) {
|
||
/* Some units nearby may not be able to continue their action,
|
||
* such as building irrigation if we removed the only source
|
||
* of water from them. */
|
||
... | ... | |
} adjc_iterate_end;
|
||
break;
|
||
}
|
||
}
|
||
} tile_changing_activities_iterate_end;
|
||
}
|
||
if (activity == ACTIVITY_FORTIFYING) {
|