* Added warning to improvement picker buttons for improvements out of range for population to work
City population can not work tiles farther than 3 tiles from the city center. The improvement picker did not warn that improvements providing stat increases would not be workable, so the improvement might be worthless. The ImprovementPicker screen will now warn on the improvement button if the improvement provides a stat increase, but is farther than 3 tiles from the owning city center. The warning happens for all improvements that increase the tile stats, including Luxury and Strategic resource improvements. The warning does not disallow building the improvement.
* Changed methods for finding positive stat increases and added translation for warning text
* Condensed conditional for warning text in ImprovementPicker
* Additional unit tests
* Missing import
* Changing stuff solely to avoid an import
* Example of the test, in different orders
* New PromotionTree test
* Add functions to make PromotionTree easier to work with
* Changing values to be lateinit variables
* Defensive Pacts can now be offered.
* Signing a defensive pact now makes the Civs join all defensive wars. Any future defensive wars will force the other civ to join.
* Removed Popup Alert Defensive Pact.
* Defensive pact and Research pact now are only on the trade screen.
* AI now offers defensive pacts.
* Added AI evaluating sending and receiving Defensive Pact offers.
* Reverted some temporary changes
* Reduced the chance an AI offers a defensive pact
* Starting an offensive war now cancels all Defensive Pacts with other civilisations.
* Removed extra requirements before an AI will sign or offer a defensive pact.
* Added Defensive Pacts to the Civilopedia.
* Fixed the AI counter offering with treaties.
* Fixed a test using the old method of checking if a civ is at war.
* Fixed a previous refactor error.
* Deleted commented out Research Agreement button code.
* Fixed some spelling errors and remnant debugging code.
* Removed signing a defensive pact brings both Civ's into each others previous defensive wars.
* Refactored setFriendshipBasedModifier to look better
* Starting an offensive war now removes the defensive pact form both sides.
* Reverted changes to DiplomaticStatus
* Removed extra technology check to sign a defensive pact.
* Removed DiplomacyManager.isAtWar() completely.
* Moved setting defensivePact flags from TradeLogic.transferTrade() to DiplomacyManager.signDefensivePact.
* Changed diplomatic modifiers related to Defensive Pacts to be less extreme.
* Fixed canceling Defensive Pacts when declaring war and notifying other Civs.
* Updated the Defensive Pact entry in the Civilopedia and fixed some spelling.
* Fixed Defensive Pact behavior while attacking and defending.
* Changed a variable to a more readable name.
* Improved readability of setFriendshipBasedModifier().
* Moved the important onWarDeclared functionality to their own functions.
* Added a notification for the attacking Civ when a Civ joins war through a Defensive Pact.
* Refactored setDefensivePactBasedModifier() to be more readable.
* Increased DeclinedDefensivePact time.
* Deleted old commented code that removed the research agreement button.
* Fixed having reverting changes errors in UnitMovementTests.
* Refactored breaking treaties when declaring war.
* Removed unnecessary semicolons.
* Mod Manager - move classes, visibility
* Mod Manager - separate metadata from UI buttons
* Mod Manager - split off info/actions pane and make it scrollable
* Mod Manager - fix bottom button mouseover
* Mod Manager - getRepoSize lint and doc
* Mod Manager - banner for builtin rulesets and hide visual checkbox in obvious-BS cases
* Mod Manager - MB rounded to next instead of down
* Mod Manager - One missed lint
* Post-merge sort imports
* Avatars as fallback for preview
Previously if a promotion could require 2 promotions from branch A but 1 branch B and the branch B also lead to an earlier promotion from branch A, it erroneously consider that a loop. Solved by copying the logic from the ruleset Validator (going child up to parent, rather than parent to child and passing in the hashset rather than using a global one)
* Defensive Tileset loading
* Deleting a mod should do the same cleanup as downloading a new one
* Extensive RulesetValidator checks on Tileset mod integrity
* Fix Mod Manager not displaying some freshly downloaded mods immediately
(and scroll it into view)
* Mod Manager DL-from-URL stays open after invalid link
* Minor lint
* Another lint on an unfortunate lint
* IHasUniques without INamed removed - treat ModOptions same as GlobalUniques in that respect
* Unify uniqueObjects and uniqueMap initialization
* Move and split RulesetValidator
* Split Ruleset file to make it pure single-class
* Minor linting
* Treat remaining untyped Uniques in default rulesets, make unit test catch them
* Change untyped filtering Uniques check to Validation by inclusion in GlobalUniques instead of UniqueType.AircraftMarker
* Wiki for untyped filtering Uniques
* Re-include the "Who knows" of Future Tech on the Tech picker
* Added tests to ensure that resources from buildings behave as expected
* More tests suggested by @SeventhM
* Caught an edge case - if you pillage your own tile improvement, your resources would not have updated!
* Actually every time an improvement changes you could have a resource change
* Update resources eon every improvement change because they could be providing resources via uniques