Feature #1078 » 0066-Unhardcode-wld.map-from-city_exists_within_max_city_.patch
common/city.c | ||
---|---|---|
Return TRUE iff a city exists within a city radius of the given
|
||
location. may_be_on_center determines if a city at x,y counts.
|
||
**************************************************************************/
|
||
bool city_exists_within_max_city_map(const struct tile *ptile,
|
||
bool city_exists_within_max_city_map(const struct civ_map *nmap,
|
||
const struct tile *ptile,
|
||
bool may_be_on_center)
|
||
{
|
||
const struct civ_map *nmap = &(wld.map);
|
||
city_tile_iterate(nmap, CITY_MAP_MAX_RADIUS_SQ, ptile, ptile1) {
|
||
if (may_be_on_center || !same_pos(ptile, ptile1)) {
|
||
if (tile_city(ptile1)) {
|
common/city.h | ||
---|---|---|
const struct player *owner,
|
||
const struct tile *ptile,
|
||
int distance);
|
||
bool city_exists_within_max_city_map(const struct tile *ptile,
|
||
bool city_exists_within_max_city_map(const struct civ_map *nmap,
|
||
const struct tile *ptile,
|
||
bool may_be_on_center);
|
||
/* Granary size as a function of city size */
|
common/scriptcore/api_game_methods.c | ||
---|---|---|
LUASCRIPT_CHECK_STATE(L, FALSE);
|
||
LUASCRIPT_CHECK_SELF(L, ptile, FALSE);
|
||
return city_exists_within_max_city_map(ptile, may_be_on_center);
|
||
return city_exists_within_max_city_map(&(wld.map), ptile, may_be_on_center);
|
||
}
|
||
/**********************************************************************//**
|
server/unittools.c | ||
---|---|---|
bool ok = TRUE;
|
||
int hut_chance = fc_rand(12);
|
||
struct player *pplayer = unit_owner(punit);
|
||
const struct civ_map *nmap = &(wld.map);
|
||
/* 1 in 12 to get barbarians */
|
||
if (hut_chance != 0) {
|
||
int cred = 25;
|
||
notify_player(pplayer, unit_tile(punit), E_HUT_GOLD, ftc_server,
|
||
PL_("You found %d gold.",
|
||
"You found %d gold.", cred), cred);
|
||
pplayer->economic.gold += cred;
|
||
} else if (city_exists_within_max_city_map(unit_tile(punit), TRUE)
|
||
} else if (city_exists_within_max_city_map(nmap, unit_tile(punit), TRUE)
|
||
|| unit_has_type_flag(punit, UTYF_GAMELOSS)) {
|
||
notify_player(pplayer, unit_tile(punit),
|
||
E_HUT_BARB_CITY_NEAR, ftc_server,
|
||
... | ... | |
wipe_unit(punit, ULR_BARB_UNLEASH, NULL);
|
||
ok = FALSE;
|
||
}
|
||
return ok;
|
||
}
|
||