Общий вывод - какие ошибки содержит нынешнее ситуация с налогами и как с ней бороться.


I Кто виноват?
Нынешняя ситуация с налогами содержит аж три ошибки:
1) Торговля с индейцами повышает налоги. Как я понял - не напрямую, просто увеличивается iTotalTraded (?). В любом случае это грустно.
2) Вторая и главная ошибка - После повышения налогов iTotalTraded не обнуляется! Что приводит к тому, что повышения налогов при превышении iTotalTraded значения TAX_TRADE_THRESHOLD повышения налогов следует одно за другим, фактически почти все время идет проверка по TAX_INCREASE_CHANCE. При бойкоте повышения налогов iTotalTraded тоже не сбрасывается. Вы можете проверить это - если установите TAX_INCREASE_CHANCE 100, и дадите бойкот то повышение налогв будет на следущий ход.
3) По идее задуманно, что скорость повышения налогов тем выше чем хуже отношения с королем и тем меньше, чем выше текущий уровень налогов. На это влияют переменные TAX_TRADE_THRESHOLD_ATTITUDE_PERCENT и TAX_TRADE_THRESHOLD_TAX_RATE_PERCENT. Задумка хорошая но формула такова, что при значении этих переменных по умолчанию 10% налогов влияют также как -1 очко отношений.


II Что делать?
1) Поправить ошибки кода.
Собственно говоря у меня так руки и тянутся это сделать. Но помимо того что надо разобраться что и где поправить, что не особо и сложно, надо будет разобраться что с результатом эти правок делать а это надо изучать уже. Это непросто. я вот пока не берусь.
2) Отменить налоги установив TAX_INCREASE_CHANCE 0.
На мой взгляд не лучшее решение.
3) Поправить переменные в XML так чтоб налоги росли но разумно.
На мой взгляд оптимальное решение. Его я пытаюсь реализовать в моде Fortune, правда оптимального набора переменых не подобрал.
Нам понадобятся переменные
TAX_TRADE_THRESHOLD - влияет на количество товара которое нужно продать для повышения налогов.
Разберем ситуацию для марафона.
iTotalTraded * 10000 > GC.getDefineINT("TAX_TRADE_THRESHOLD") * std::max(100, iMultiplier) * GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getGrowthPercent())
Вначале игры ситуация будет вида.
iTotalTraded_пороговое = TAX_TRADE_THRESHOLD*3
Если оставить по умолчанию значение то повышение будет после всего 2 полных партий товара!
Если же поставить TAX_TRADE_THRESHOLD = 10000 то псоле 100. Практика показала это число излишне велико.

TAX_INCREASE_CHANCE
TAX_RATE_MAX_INCREASE

Шанс повышения налогов при достижении порогового значения и максимальное повышение.

На мой взгляд оптимальные числа будут 100 и 1. Во избежании сейвлоада.

Теперь переменные
TAX_TRADE_THRESHOLD_TAX_RATE_PERCENT - влияние текущего уровня налогов
TAX_TRADE_THRESHOLD_ATTITUDE_PERCENT - влияние текущего уровня отношений.

Они влияют на переменную iMultiplier (базовое значение 100)
По формуле каждые 100 очков TAX_TRADE_THRESHOLD_TAX_RATE_PERCENT увеличивают iMultiplier на 1 и каждое 1 очко TAX_TRADE_THRESHOLD_ATTITUDE_PERCENT уменьшает его на 1.
С текущими значениями этих переменых получается полный бред.

Мне кажется раумным установить TAX_TRADE_THRESHOLD_TAX_RATE_PERCENT = 10000 и TAX_TRADE_THRESHOLD_ATTITUDE_PERCENT = 50.
Тогда при отношениях с королем -5 и теущих налогах 10% iMultiplier будет равен 850. То-есть общее количество проданных товаров для повышения налогв должно уже будет превысить базовое в 8,5 раз.
К сожалению налоги все равно будут расти все быстрее (без правки кода этого не избежать) но ростперестанет быть стремительным.

Еще бы неплохо было бы ограничить подарки королю но я не знаю где