* added function getResourceModifier to civinfo and tied into cityInfo resource checks
pared down getTileResourceAmount function
* simplified function usage
* adds unique "Will not be displayed in Tech Tree"
* Changed "Will not be displayed in Tech Tree" to "Will not be displayed in Civilopedia", avoiding bloat
* Added "All [] Cities get a free []" unique.
The first parameter is for city type. Currently "new" and "coastal" are supported.
"new" matches every city and "coastal" matches cities on a coastal tile.
"new" and "coastal" were added to template.properties for translation.
Upon city founding, the second parameter building is added to the city.
In civ 5 G&K, Carthage gets a free harbor for every coastal city.
* -Syntax changed to "Get a free [] []"
First paramater is the building and second is the city filter.
Supports "in every city" and "in every coastal city"
-new and coastal was removed from template.properties
-in every coastal city was added to template.properties
* Changed syntax to "Gain a free [] []"
With reference to issue #3307
I think that aircraft on aircraft carriers were being treated at land units at sea.
I have added the check to test whether they are being transported so that they should now heal whilst on aircraft carriers.
-Units with "All tiles costs 1" unique now spend all movement points when embarking.
Technically, in CIV 5, helicopters do not embark or spend all movement units when moving to water, if embarkation (Optics) isn't researched.
IMO, though, it is so unlikely that someone will have helicopters researched but not embarkation, that I don't think it is worth editing the code for this fringe case.
Their entries were kept in the json files so as to not break pre-existing save files.
-Units and buildings that are unbuildable are not shown in the pedia or tech picker as being unlockable by tech
* Preparation for Helicopter unit
-"All tiles costs 1" unique makes every tile cost 1. Used by Helicopter in CIV 5.
-"Can pass through impassable tiles" unique allows unit to pass through any tile. Used by Helicopter in CIV 5. Does not let units cross ocean if they couldn't already, just terrain that is considered "impassable"
-Mountains now do 50 damage to units that end turn on it. In civ 5 and its expansion this is what happens to any unit that is able to pass mountains.
This is "hard coded" for now. Also added the notification text to template.properties
* mountains do not give sight bonus when on them
* Revert "mountains do not give sight bonus when on them"
This reverts commit 83ad3df5d4.
* -Consolidated unit kill bonus uniques.
Syntax is "Earn []% of [] opponent's [] as [] for kills" for both units and nations.
Ex.
"Earn [10]% of [military] opponent's [Cost] as [Gold] for kills"
or
"Earn [100]% of [Barbarians] opponent's [Strength] as [Culture] for kills"
Only Culture and Gold are supported as rewards now, but it can be expanded later. The pictish warrior unit in G&K gets 50% of opponent's strength as faith, so we can have the function edited to allow for faith when we get to that point.
Only Strength or Cost is supported as what the reward amount is based on.
-Policies.json and Nations.json were changed to fit the new syntax. The old syntax still works for mods for now.
-matchesCategory MapUnit function can now check if the unit is a barbarian
* -Compatibility for depecrated unit kill bonus uniques done more efficiently and counted only once (since prior to this PR, it was also counted only once)
* -Changed it to "Barbarian" instead of "Barbarians", added "Barbarian" to template.properties
* space after translation template
* -New unit unique "Bonus as Defender []%". "+25% Combat Bonus when defending" now deprecated, but kept for now for mods. Json promotion changed to fit new syntax.
Defender Bonus modifier "Defender Bonus" added to template.properties for translation.
-"All newly-trained [] units in this city receive the [] promotion" now uses unit category checking.
-New building unique "New [] units start with [] Experience in this city"
This can used by Poland's stable unique replacement in BNW, as it gives extra xp for mounted units.
"New [] units start with [] Experience" is the new nation wide version of this.
"New military units start with [] Experience" is now deprecated, but kept for now for mods. Json policy changed to fit new syntax.
-Unit category checking can now check for "non-air", "military", "military units" and uniques.
Added "military" to template.properties for translation.
-New unit unique "No defensive terrain penalty". Admittedly this is for a mod I'm making.
* translations must have spaces after!
* -Attacker Bonus unique changed to "+[]% Strength when attacking"
Changed Units.json and and Wolf Pack from UnitPromotions.json to this syntax
-Defender Bonus unique changed to "+[]% Strength when defending"
Armor Plating promotions were changed to this syntax
* City State Personality
* Introduced 4 personalities for city states: Friendly, Neutral, Hostile and Irrational.
* Influence recovery and degrade depends on city state personality.
* Quests assignement dependant on Personality and Trait
* Personality localization strings
* City States influence fix
* Influence when at war = -60f
* Enemies if influence < 0f, neutrality is only from 0f to 30f
* Changed RelationshipLevel accordingly
* City States buttons influence bar
* Influence bar in DiplomacyScreen
* Starting unified unit category checking. This will increase flexibility with uniques as well as cut down on uniques that have only a slightly different way of checking unit categories.
Things currently checked by the category checking method are:
Type of unit
Name of unit
Whether unit is wounded
If the unit is land, water, or air
"Bonus vs City y%" still works currently.
Uniques that have been changed/added to use this category checking method so far are:
"Bonus vs x y%"
"[] units deal +[]% damage" (parameterization of "Wounded military units deal +25% damage")
"[] units gain the [] promotion"
If PR approved, using this method for more uniques would be a good idea.
Commented as depecrated are these uniques
"+[]% Strength vs []" (this has not been used in json files)
"Wounded military units deal +25% damage" (policies json file was updated to use parameterized version)
The following was added to template.properties for translating modifiers:
Air
Wounded
* translation ending with a space
* -Changed matchesCategory method for CityCombatant to what was suggested
-Changed matchesCategory method for MapUnitCombatant to what was suggested
-Use type.name instead of type.toString().toLowerCase()
-Lowercasing is no longer allowed for type names and unit names.
I kept the lower cased versions of wounded, land, water, and air for compatibility as several of the uniques are phrased like "Bonus vs land units 25%" and such and have entries in template.properties (ie. land units = ).
* -Lowercasing is no longer allowed. For wounded, land, water or air, you have to either use the capitalized version (ie. "Wounded") or lower case with units (ie. "wounded units"). This lets preexisting uniques that use "wounded units" etc still work while also letting people use the singular capitalized word (ie. "Wounded") for other uniques.
* fixed missing check for wounded units
* Redid things with help from HadeanLake:
-"+[]% combat bonus in []" Unit Unique
-"+[]% combat bonus for units fighting in []" Nation Unique
-Both of these can check for terrain or Friendly Land or Foreign Land
-Function to add stacking modifiers
-Himeji Castle and Foreign Legion had uniques changed to fit this syntax
-Old way still works for now, but deprecated
* fixed comments about deprecation and the new syntax
* Renamed some quests to better ones (Kill Camp -> Clear Barbarian Camp and Kill City State -> Conquer City State)
* Quests names are hardcoded in a enum class
* Quests.json translations automated
* City State quests
* Flag to log two civ ever been friends
* Utility functions in GameInfo
* Created Diplomacy Action for notifications
* Utility functions for map
* Can be specified a custom color for surroundWithCircle
* Translation placeholder utility
* Added Quest model
* Utility function: number of researched technologies
* Image atlas rebuilt
* Localization
* Updated DiplomaticFlags and added EverBeenFriends
Slightly reworked nextTurnFlags() for code clarity and introduced the new flag EverBeenFriends that is set as soon as two civilizations are at least friends. It never expires.
* Removed quests not implemented yet from json
* parameterized "Culture cost of adopting new Policies reduced by [10]%" and "Each city founded increases culture cost of policies [33]% less than normal"
* removed old fix for abcense of "Mass Media" tech so mods can have this tech
* This allows for unique unit or building not to be displayed as a unique on the nation select screen and nation civilopedia entry.
The primary usage of this to allow modders to avoid having their dummy unit/building that is used to disallow a nation from making the unit/building it replaces, from
appearing as a unique to the player. In other words, it won't show the comparison stats/etc.
In conjunction with this PR https://github.com/yairm210/Unciv/pull/3180 it allows modders to cleanly disallow nations from making certain units/buildings.
This would also be useful for Venice from the Brave New World expansion as it cannot build Settlers. https://civilization.fandom.com/wiki/Venetian_(Civ5)
Here is a mod to test this PR:
https://cdn.discordapp.com/attachments/670547794951405584/758550228126793759/Test_Hide_As_Unique.zip
This mod disallows Babylon from making Scout and Horseman and also doesn't show the dummy replacement unit/building on Babylon's nation info.
It also makes Babylon have a unique Monument replacement that it can build, but is still not shown as a unique on Babylon's nation info.
It also adds an example Venice nation that can't build Settlers.
* "Will not be displayed in Civilopedia" unique prevents a unit or building from being shown in Civilopedia or shown as a unique
Windmill provides "+[10]% Production when constructing [Buildings]" (only regular buildings) instead of 10% to everything
Oxford University does not provide 50% science boost - it was a copying error from National College
* tweaked techs
Implemented "Reveals the entire map" unique ("Satellites" tech)
discovering a tech can trigger unique
"Remove Marsh" unlocked with "Masonry"
* fixed translation of "Owned: [amountOwned] = " line
* Tweaked culture from killing
Aztecs get melee strength of the unit killed in culture and honor opener does the same thing.
They stack. So you get culture equal to 200% of the dead unit's strength (not ranged strength).
* removed hurryCostModifier from units that should not have it
Default value of HurryCostModifier is 0
List of units with non-default HurryCostModifier:
Settler (20)
SS parts (-1) (cannot be hurried)
Frigate (20)
Ship of the Line (20)
Caravel (30)
Turtle Ship (30)
Catapult (20)
Ballista (20)
Horseman (20)
Companion Cavalry (20)
Swordsman (20)
Mohawk Warrior (20)
Legion (20)
Berserker (20)
* added missing definitions from vanilla (commented out)
added missing obsolete tech tags, etc
* tweaked hurryCostModifier, added missing vanilla buildings (commented out)
* added promotions and parametrized uniques
Morale (+[15]% Combat Strength)
Great Generals I ([Great General] is earned [50]% faster)
Great Generals II ([Great General] is earned [100]% faster)
Quick Study ([50]% Bonus XP gain)
Unretired Mass Media icon
Added Heroic Epic, National Epic and National Treasury national wonders
Heroic Epic has unique "All newly-trained [non-air] units in this city receive the [Morale] promotion" - "non-air" is valid param now
[Raising The Flag on Iwo Jima silhouette, Marine Corps War Memorial Raising the Flag on Iwo Jima Battle of Iwo Jima Washington, D.C., memorial free png](https://www.pngfuel.com/free-png/opgid) for Heroic Epic and Morale promotion
[Arc de Triomphe](https://thenounproject.com/search/?q=Arc%20de%20Triomphe&i=2936011) by iconfield for National Epic
[Bank](https://thenounproject.com/term/bank/213472/) by By P Thanga Vignesh for National Treasury
reused general icon for Great Generals and Quick Study promotions
* implemented "Cost increases by [30] per owned city of cities" unique
All vanilla national wonders that require something in all cities have it
* added uniques
"Nuclear weapon" - Game option "nuclearWeaponsEnabled" enables units with this unique
"Requires [building]" - Apollo Program, Manhattan Project etc
"Requires adopted [policy]" - in expansions Statue of Zeus will require "Honor", Prora - "Autocracy", Landsknecht - "Mercenary Army".
* merged "Requires adopted [policy]" with "Requires [Wonder]"
* Separated unique.params[0] to val filter
* Changed National Epic image
* Implement custom save locations for Android and Desktop
* Request write permission to save to external storage
* Fix race condition for custom saves/loads caused by autosaves
* Remove unnecessary WRITE_EXTERNAL_STORAGE permission for saving files
* Fix padding for custom save/load location buttons
* Use nullability checks as defined in coding style guide
* Use nullability checks as defined in coding style guide
* Use early return for readability
* Rename save/load completion callbacks for custom locations and implement error handling
fixed isAdjacentToFreshwater - should also check for river on tile
use fitsUniqueFilter instead of checking baseTerrain, terrainFeature and some other filters separately
changes nothing but makes hill PR a lot more readable
Fixed Moai
Wonder overlay will remove terrain overlay in default tileset
Oasis, Marsh and Atoll now have "Rare feature" unique, rare features can be added by mods
implemented TileInfo.fitsUniqueFilter(filterText:String): Boolean
parameterized uniques:
* "Must have an owned [Mountain] within [2] tiles"
* "Must be on [River]" - not to be confused with "Must be next to [River]" - the tile city on must have river at its border, not the adjacent tile
* "Must not be on [Hill]"
* "Must not be next to []"
* "Must be on [seacoast]" - next to "Coast" tile
* "Must be on [tile adjacent to source of fresh water]"
* "Must be next to [Water]" - next to any water tile, including "Lakes"
* "Must be next to [terrainFeature]"
* "Must be next to [unique]" - e.g "Must be next to [Rare feature]" - next to terrain or terrain feature having this unique