forked from townforge/townforge
cc: give a penalty to agriculture on cliffs
This commit is contained in:
parent
534e5428fb
commit
c7578ffb49
@ -83,7 +83,8 @@ uint32_t cc_command_handler_harvest::get_harvest_amount(const cryptonote::Blockc
|
||||
const bool natural_pesticides = cc::is_discovery_enabled(db, DISCOVERY_NATURAL_PESTICIDES, fd.owner);
|
||||
const bool chemical_pesticides = cc::is_discovery_enabled(db, DISCOVERY_CHEMICAL_PESTICIDES, fd.owner);
|
||||
const bool bountiful_aquifers = (cd.specializations >> cc::CITY_SPECIALIZATION_BOUNTIFUL_AQUIFERS) & 1;
|
||||
return cc::get_harvest_amount(fd.x0, fd.y0, fd.x1, fd.y1, fd.economic_power, crop, crop_yield, nutrients, fd.potential[POTENTIAL_AGRICULTURE], age,
|
||||
return cc::get_harvest_amount(fd.x0, fd.y0, fd.x1, fd.y1, fd.economic_power, crop, crop_yield, nutrients,
|
||||
fd.potential[POTENTIAL_AGRICULTURE], fd.potential[POTENTIAL_CLIFF], age,
|
||||
special_event, fertile_grounds,
|
||||
improved_yoke, advanced_yoke, improved_plough, advanced_plough, improved_scarecrow, irrigation, drainage, weather_expertise,
|
||||
advanced_fertilizers, natural_pesticides, chemical_pesticides, bountiful_aquifers);
|
||||
|
@ -318,7 +318,7 @@ uint32_t get_harvest_labour(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1,
|
||||
return labour;
|
||||
}
|
||||
|
||||
uint32_t get_harvest_amount(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t economic_power, uint8_t crop, uint32_t crop_yield, uint8_t nutrients, uint8_t agricultural_potential, uint64_t age, cc::special_event_t special_event, bool fertile_grounds, bool improved_yoke, bool advanced_yoke, bool improved_plough, bool advanced_plough, bool improved_scarecrow, bool irrigation, bool drainage, bool weather_expertise, bool advanced_fertilizers, bool natural_pesticides, bool chemical_pesticides, bool bountiful_aquifers)
|
||||
uint32_t get_harvest_amount(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t economic_power, uint8_t crop, uint32_t crop_yield, uint8_t nutrients, uint8_t agricultural_potential, uint8_t cliff_potential, uint64_t age, cc::special_event_t special_event, bool fertile_grounds, bool improved_yoke, bool advanced_yoke, bool improved_plough, bool advanced_plough, bool improved_scarecrow, bool irrigation, bool drainage, bool weather_expertise, bool advanced_fertilizers, bool natural_pesticides, bool chemical_pesticides, bool bountiful_aquifers)
|
||||
{
|
||||
const uint32_t w = x1 - x0 + 1;
|
||||
const uint32_t h = y1 - y0 + 1;
|
||||
@ -328,7 +328,8 @@ uint32_t get_harvest_amount(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1,
|
||||
base = base * VEGETABLES_HARVEST_PERCENT / 100;
|
||||
else if (crop == CROP_GRAIN)
|
||||
base = base * GRAIN_HARVEST_PERCENT / 100;
|
||||
uint64_t cooked = cc::scale_generator_output_with_economic_power_allow_0(base, economic_power, agricultural_potential, age);
|
||||
const uint8_t mixed_potential = agricultural_potential - std::min(agricultural_potential, cliff_potential);
|
||||
uint64_t cooked = cc::scale_generator_output_with_economic_power_allow_0(base, economic_power, mixed_potential, age);
|
||||
|
||||
// apply events and discoveries
|
||||
switch (special_event)
|
||||
|
@ -32,7 +32,7 @@ uint32_t get_crop_yield(uint8_t crop, uint32_t start_yield, const std::vector<in
|
||||
std::string print_crop_yield(uint32_t yield);
|
||||
uint32_t get_sowing_labour(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t economic_power);
|
||||
uint32_t get_harvest_labour(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t economic_power, uint8_t crop, bool ergonomic_scythe, bool grain_cradle);
|
||||
uint32_t get_harvest_amount(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t economic_power, uint8_t crop, uint32_t crop_yield, uint8_t nutrients, uint8_t agricultural_potential, uint64_t age, cc::special_event_t special_event, bool fertile_grounds, bool improved_yoke, bool advanced_yoke, bool improved_plough, bool advanced_plough, bool improved_scarecrow, bool irrigation, bool drainage, bool weather_expertise, bool advanced_fertilizers, bool natural_pesticides, bool chemical_pesticides, bool bountiful_aquifers);
|
||||
uint32_t get_harvest_amount(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t economic_power, uint8_t crop, uint32_t crop_yield, uint8_t nutrients, uint8_t agricultural_potential, uint8_t cliff_potential, uint64_t age, cc::special_event_t special_event, bool fertile_grounds, bool improved_yoke, bool advanced_yoke, bool improved_plough, bool advanced_plough, bool improved_scarecrow, bool irrigation, bool drainage, bool weather_expertise, bool advanced_fertilizers, bool natural_pesticides, bool chemical_pesticides, bool bountiful_aquifers);
|
||||
bool check_food_calendar_sanity();
|
||||
|
||||
}
|
||||
|
@ -404,7 +404,15 @@ void UIBuildingSettingsDialog::SetBudget(const Map *map, const GameState *gameSt
|
||||
cc::init_potential(gameState->cityState.id, gameState->cityState.seed, flag->x0, flag->y0, flag->x1, flag->y1, potential);
|
||||
AddRow(rightLayout, "Stability", String((unsigned)potential[POTENTIAL_STABILITY]));
|
||||
if (role == ROLE_AGRICULTURAL)
|
||||
AddRow(rightLayout, "Agricultural potential", String((unsigned)potential[POTENTIAL_AGRICULTURE]));
|
||||
{
|
||||
const uint8_t p_agr = potential[POTENTIAL_AGRICULTURE];
|
||||
const uint8_t p_cliff = potential[POTENTIAL_CLIFF];
|
||||
const uint8_t p_actual = p_agr - std::min(p_agr, p_cliff);
|
||||
if (p_actual < p_agr)
|
||||
AddRow(rightLayout, "Agricultural potential", String((unsigned)p_actual) + " (-" + String((unsigned)(p_agr - p_actual)) + " from cliffs)");
|
||||
else
|
||||
AddRow(rightLayout, "Agricultural potential", String((unsigned)p_actual));
|
||||
}
|
||||
AddRow(rightLayout, "Geothermal potential", String((unsigned)potential[POTENTIAL_GEOTHERMAL]));
|
||||
if (role == ROLE_STONECUTTER)
|
||||
AddRow(rightLayout, "Gemstone potential", String((unsigned)potential[POTENTIAL_GEMSTONE]));
|
||||
@ -588,9 +596,10 @@ void UIBuildingSettingsDialog::SetBudget(const Map *map, const GameState *gameSt
|
||||
const cc::special_event_t special_event = (cc::special_event_t)gameState->cityState.special_event;
|
||||
const bool fertile_ground = (game->cityState.specializations >> cc::CITY_SPECIALIZATION_FERTILE_GROUNDS) & 1;
|
||||
const bool bountiful_aquifers = (game->cityState.specializations >> cc::CITY_SPECIALIZATION_BOUNTIFUL_AQUIFERS) & 1;
|
||||
const uint8_t potential = flag->potential[POTENTIAL_AGRICULTURE];
|
||||
uint32_t vegetables_harvest = cc::get_harvest_amount(flag->x0, flag->y0, flag->x1, flag->y1, economic_power, CROP_VEGETABLES, 65536, flag->vegetables_nutrients, potential, 0, special_event, fertile_ground, false, false, false, false, false, false, false, false, false, false, false, bountiful_aquifers);
|
||||
uint32_t grain_harvest = cc::get_harvest_amount(flag->x0, flag->y0, flag->x1, flag->y1, economic_power, CROP_GRAIN, 65536, flag->grain_nutrients, potential, 0, special_event, fertile_ground, false, false, false, false, false, false, false, false, false, false, false, bountiful_aquifers);
|
||||
const uint8_t agricultural_potential = flag->potential[POTENTIAL_AGRICULTURE];
|
||||
const uint8_t cliff_potential = flag->potential[POTENTIAL_CLIFF];
|
||||
uint32_t vegetables_harvest = cc::get_harvest_amount(flag->x0, flag->y0, flag->x1, flag->y1, economic_power, CROP_VEGETABLES, 65536, flag->vegetables_nutrients, agricultural_potential, cliff_potential, 0, special_event, fertile_ground, false, false, false, false, false, false, false, false, false, false, false, bountiful_aquifers);
|
||||
uint32_t grain_harvest = cc::get_harvest_amount(flag->x0, flag->y0, flag->x1, flag->y1, economic_power, CROP_GRAIN, 65536, flag->grain_nutrients, agricultural_potential, cliff_potential, 0, special_event, fertile_ground, false, false, false, false, false, false, false, false, false, false, false, bountiful_aquifers);
|
||||
uint32_t vegetables_food_points = 0, grain_food_points = 0;
|
||||
cc::get_food_points(ITEM_FOOD_VEGETABLES, vegetables_food_points);
|
||||
cc::get_food_points(ITEM_FOOD_GRAIN, grain_food_points);
|
||||
|
@ -146,7 +146,7 @@ void UIHarvestDialog::UpdateData(const std::shared_ptr<GameWallet> &w)
|
||||
const uint64_t age = game->top_height + 1 - flag->sow_height;
|
||||
const bool fertile_ground = (game->cityState.specializations >> cc::CITY_SPECIALIZATION_FERTILE_GROUNDS) & 1;
|
||||
const bool bountiful_aquifers = (game->cityState.specializations >> cc::CITY_SPECIALIZATION_BOUNTIFUL_AQUIFERS) & 1;
|
||||
uint32_t quantity = cc::get_harvest_amount(flag->x0, flag->y0, flag->x1, flag->y1, flag->economic_power, flag->crop, crop_yield, nutrients, flag->potential[POTENTIAL_AGRICULTURE], age, (cc::special_event_t)game->cityState.special_event, fertile_ground, has_improved_yoke, has_advanced_yoke, has_improved_plough, has_advanced_plough, has_improved_scarecrow, has_irrigation, has_drainage, has_weather_expertise, has_advanced_fertilizers, has_natural_pesticides, has_chemical_pesticides, bountiful_aquifers);
|
||||
uint32_t quantity = cc::get_harvest_amount(flag->x0, flag->y0, flag->x1, flag->y1, flag->economic_power, flag->crop, crop_yield, nutrients, flag->potential[POTENTIAL_AGRICULTURE], flag->potential[POTENTIAL_CLIFF], age, (cc::special_event_t)game->cityState.special_event, fertile_ground, has_improved_yoke, has_advanced_yoke, has_improved_plough, has_advanced_plough, has_improved_scarecrow, has_irrigation, has_drainage, has_weather_expertise, has_advanced_fertilizers, has_natural_pesticides, has_chemical_pesticides, bountiful_aquifers);
|
||||
quantityWidget->SetText(std::to_string(quantity).c_str());
|
||||
|
||||
const uint32_t labour = cc::get_harvest_labour(flag->x0, flag->y0, flag->x1, flag->y1, flag->economic_power, flag->crop, has_ergonomic_scythe, has_grain_cradle);
|
||||
|
Loading…
Reference in New Issue
Block a user