Commit Graph

90 Commits

Author SHA1 Message Date
Oskar Niesen
548b536818
Add Defensive pact (#9900)
* 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.
2023-08-16 17:59:41 +03:00
SomeTroglodyte
8576f16c6e
Ruleset validator: Tilesets (#9881)
* Defensive Tileset loading

* Deleting a mod should do the same cleanup as downloading a new one

* Extensive RulesetValidator checks on Tileset mod integrity
2023-08-09 00:47:14 +03:00
SomeTroglodyte
46a84c23b0
Make mod categories curated in Json (#9542)
* Dynamic mod categories from online query

* Move Working string to Constants

* Move Mod categories to json

* Move Mod categories to json - UI

* Move Mod categories to json - initial json
2023-06-14 09:12:24 +03:00
Yair Morgenstern
26a155351e UnitFilter accepts NationFilter of the civ (e.g. "vs [England] units")
chore: Constants for "Embarked" and "Wounded"
2023-04-19 10:51:01 +03:00
SomeTroglodyte
db08c30363
Make City center minimum tile yields moddable (#8804)
* Slight cleanup of TileStatFunctions

* Make City center minimum tile yields moddable

* Make City center minimum tile yields moddable - patch1

* Make City center minimum tile yields moddable - patch1
2023-03-13 17:02:08 +02:00
Yair Morgenstern
3a14ac6248 Allow settlers to be captured when worker replacements exist 2023-02-19 08:18:33 +02:00
Yair Morgenstern
ba097cee9d Stats serialize to notifications - see #8446 2023-02-02 18:16:51 +02:00
Md. Touhidur Rahman
1da08994df
fix UncivServer.xyz not working (#8104)
Normally this is auto-fixed but a `/` at the end of the URL does not work. Because in API you do requests like `GET /file/:filename` and if you also put a `/` at the end of the server URL, it becomes something like this `https://example.com//files/filename`. Since the auto-fix happens only when typing a new URL from `Options` > `Multiplayer`, the default value doesn't get auto-fixed and shows errors.
I tested on a new installation and as expected it shows the `Couldn't upload game` error.
This pr fixes this.
2022-12-10 18:38:53 +02:00
Yair Morgenstern
309aaf99d4 xyz server as default multiplayer server 2022-12-08 13:27:29 +02:00
itanasi
16a7eed4ff
Add Repair and Pillaging Roads (#8015)
* Reapply Changes

* Logic clean up

* Adding getImprovementToPillage() and getRepairableImprovement()

* Cleaning up Unit Actions

* getImprovementToPillage() needs to check for Unpillagable

* Remove redundant logic since canBuildImprovement() returns true if currently repairing

* More redundant logic

* Prevent City Center from being Pillage status
addRepairAction will not show a Repair Action
Adding the improvement to be repaired/pillaged in button text
Utilizing getImprovementToPillage() more

* Some import cleanup
Add Irremovable to blockers
More consolidation of code

* More translation files

* When improvements/roads are built/removed, pillaged flag set to False

* Better and more consistent logic

* Fix dumb logic bug
2022-11-27 19:12:26 +02:00
Yair Morgenstern
67f33c8ac6 Renamed AbsoluteUnits unitset @letstalkaboutdune - see #7980 2022-11-13 00:34:51 +02:00
Leonard Günther
2f69ab0fad
Added unitset selection to options menu (#7980)
* Added unitset selection to options menu

* Added None type to unitset selection

+ added logic to switch unitset when changing tileset as long as one with the same name exists and both are selected

* Updated default unitset to be HexaRealm
2022-11-10 17:06:47 +02:00
Leonard Günther
f4dc138186
Moddable UI Skins [Basics] (#7714)
* Made UI skins selectable

This allows mods to provide alternative skin pngs without overriding the default skin purely by being downloaded

* Added UI Skin loading from NinePatches

This allows mod creators to define the stretch region and padding directly in the png

* Update baseScreen skin on skin reload

* Merged displayTab onChange functions

As all of them are equal anyway
2022-09-04 17:09:14 +03:00
Xander Lenstra
a19fed5d28
Added a screen to move spies between cities (#7665)
* Added a screen to move spies between cities

* Fixed tests

* Reviews

* Avoid labels blinking

Co-authored-by: JackRainy <JackRainy@users.noreply.github.com>
2022-08-28 23:25:14 +03:00
Leonard Günther
18ef8fc20e
Removed legacy tileset code (#7658)
* Removed legacy tileset code

which was only used for the "Default" tileset

* Updated "Default" tileset to support new rendering

* Updated docs

* Fixed fogOfWar coloring bug

* Removed cityImage variable completely

* Renamed variable out to baseHexagon

* Moved color lerp out of for loop

* Renamed "Default" tileset to "Minimal"

* Made "HexaRealm" the games fallback tileset

* Implemented requested changes

* Readded accidentally removed variable

* Reverted updateTileImage back to foreach loop

Since indices are not needed anymore

* Regenerated game.atlas and game.png
2022-08-22 13:02:52 +02:00
Xander Lenstra
52d0814e7b
Update religious AI; buying faith buildings, inquisitor AI updates (#7454)
* Update AI for buying with Faith, allowing it to buy Faith buildings

* Minor bug fixes

* Revamped inquisitor AI, minor changes to missionary AI

* Reviews

* Reviews

* Reviews

* Removed magic number
2022-07-23 13:06:48 -04:00
SomeTroglodyte
1b008905f6
Save and load reorg and keyboard handling (#6929)
* Load and Save Game Screens rework - Linting

* Load and Save Game Screens rework - Modularize and Keyboard

* Load and Save Game Screens rework - error handling

* Load and Save Game Screens rework - Move other save/load code

* Load and Save Game Screens rework - More Keyboard

* Load and Save Game Screens rework - Increase clipboard limit

* Load and Save Game Screens rework - Post-merge patch

* Load and Save Game Screens rework - Home, End, harden

* Load and Save Game Screens rework - Post-merge patch again

* Load and Save Game Screens rework - reviews
2022-05-31 16:31:19 +03:00
SomeTroglodyte
e54fda5a4a
Resource supply list reorg (#6881)
* ResourceSupplyList reorg

* ResourceSupplyList reorg - instrumentation

* ResourceSupplyList reorg - map of maps

* ResourceSupplyList reorg - revert to ArrayList

* ResourceSupplyList reorg - review

* ResourceSupplyList reorg - review

* ResourceSupplyList reorg - almost-immutability
2022-05-25 19:42:51 +03:00
OptimizedForDensity
5a78c59405
Hide Unmet Civ and Capital Names in the Victory Status Screen (#6742)
* Hide the names of unmet yet alive civs in the victory screen.

Mainly affects the DestroyAllPlayers victory but the CaptureAllCapitals (as capital name) and WorldReligion victory code is updated accordingly.

* Redundant condition since dead civs can't hold cities.

* Formatting + undid CaptureAllCapitals name obscuring since there could be some cases where the known capital name suddenly becomes unknown.

* Parameterized if statement

* Hide other capital names until the tile is explored.

* New constant for an unknown city name.

Co-authored-by: OptimizedForDensity <>
2022-05-11 11:46:37 +03:00
Xander Lenstra
8fcfbf752b
Improved clarity and moddability of building improvements (#6712)
* Renamed tile.hasUnique, deprecated `Indestructable`, unique for citadels
Also refactored the consumption of (great) people out of UnitActions.

* Reworked when improvements can be build somewhere for more clarity

* Made resources improvable by multiple improvements; Offshore Platform

* Fix compatability

* WIP

* Fixed the tests, but better

* I suppose I might as well update this now that we're a version later
2022-05-11 00:35:21 +02:00
SomeTroglodyte
4b7edca7a8
Rework of the "Creates improvement on a specific tile" Unique (#6687)
* Make Citadel tile takeover a unique

* CreatesOneImprovement unique overhaul step 1

* CreatesOneImprovement unique overhaul - increase highlights alpha

* Fix missing translatables, again

* CreatesOneImprovement unique overhaul - review suggestions

Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
2022-05-08 21:22:01 +03:00
Xander Lenstra
34105efdda
Moddable victories (#6161)
* Added a moddable (but not yet functional) file for victories

* Spaceship parts are units now

* Fixed tests

* Added milestone objects

* Made 'our status' table in VictoryScreen dependend on file

* Updated VictoryManager to use the new Milestone system

* Fixed bug where in vanilla too many spaceship parts could beb uild

* Whoops

* Updated global victory table to use the jsons

* Updated the new game screen to show the new victory types
Also started with the deprecation of VictorType

* Did some translation stuff, also finally fixed the tests

* Removed VictoryType and reworked AI to use Milestones instead

* Add some checks for the victory file; tested that custom victories work
Also moves some code to a better spot and fixes compilation errors

* Fixed some things I thought about while falling asleep
Most notably: built -> build; fixed spaceship part construction 
priority; removed more code for the old system

* Fixed translation issues on the victory screen
2022-04-24 22:45:38 +03:00
SomeTroglodyte
cf21ade76e
Moddable Ice generation (any impassable feature on Water possible) (#6329)
Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
2022-03-21 21:08:25 +02:00
Yair Morgenstern
2b1251258c
Unciv server (#6384)
* Background implementation for Unciv server with ktor.

Server ip in settings, able to copy your own ip and copy ip from clipboard for easy sharing, created stub for the client-server data transfer. No actual data storage or server implementation.

* Unciv server round 2 - implementing crud for files and it works!
metadata seems to only be in use for mutex, which is currently unused
That's all for today

* When starting a new multiplayer game the files are correctly saved in the server, and the server can return the files, but the function in the game to retrieve the game info is non-blocking so it doesn't work. Still, progress!

* Changed the Gdx http to basic Java http, as used for Dropbox, and now everything works!!!!

* Documentation for running and using the server

* Better texts, translations, etc

* Trog is right this should be a PUT not POST
2022-03-21 21:05:02 +02:00
SomeTroglodyte
797ce09508
Global review of Constants use, linting, maxXPfromBarbarians (#6327)
Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
2022-03-13 22:57:40 +02:00
SomeTroglodyte
6391a5c881
Constants.minimumMovementEpsilon cleanup (#6285) 2022-03-08 14:18:57 +02:00
Yair Morgenstern
78f0ad768a
Step 1 of resolving #6186 freshwater crisis - unify adjacency to a single function, only rivers are outliers (#6219) 2022-02-25 13:39:34 +02:00
Yair Morgenstern
13af71e427
Autoupdates to uniques will multiple solutions now replace to the correct one (#6208)
* Autoupdates to uniques will multiple solutions now replace to the correct one

Problem - some deprecated uniques can lead to multiple possibilities of replacements, depending on the parameter type
This lead to replacements in the jsons that were either unparseable entirely or were causing errors, both of which needed to be corrected by hand
We now separate such deprecations into their constituent potential replacement uniques, and try and take only the unique that doesn't cause any errors
Works like a charmander :)

* Conditional name change

* Resolved #6179 - when changing units production due to deprecation, notification no longer counts the same city multiple times if it appears multiple times in its queue
2022-02-22 11:33:07 +02:00
will-ca
f285abaa26
Fix uneven fonts, unify font sizes. (#6014)
* Fix uneven font sizes.

* Unify standard uses of font size parameter.
2022-01-23 17:14:27 +00:00
will-ca
da748a96f9
Miscellaneous linting, Unique typifying, refactoring, bugfix/consistency to avoid broken links to disabled religious UBs. (#6012)
* Remove unused Constants.

* Remove outdated comments.

* Typified "Will not be displayed in Civilopedia" Unique.

* Fix pre-existing inconsistency that would display religious UBs with broken links in the Civilopedia when religion was disabled.

* Use Sequences, and fewer function params, in Nations' Civilopedia texts.

* Accidentally hid a Unique that should be visible.

* Oops… Missed a negation.

* Unhide limitations on Religious Ruin rewards— But I'm not sure they'll be displayed anywhere even so.
2022-01-23 18:08:26 +01:00
will-ca
fe67dfa1c4
Make "Help" button clearer and translatable, random nation indicators and labels translatable. (#6013)
* Make unknown nation placeholder translatable.

* Make MultiplayerScreen help button clearer and translatable.

* Use `Constants.spectator` more.

* Make random/unknown nation icon translatable.
2022-01-23 09:39:28 +01:00
Yair Morgenstern
0279adadb9
Worker AI for mods, step 2 (#5998)
* Worker AI for mods, step 2

Support for removing terrain features, both when we need to get rid of them for a resource, and when they plain reduce the yield of a tile

Note that the "Remove <improvement>" was implemented WAY before templating and uniques were a thing - the correct solution in these enlightened times would be to separate the improvement *name* from the *effect*, so we could have e.g. a "Deforestation" improvement which would contain botth ["Removes [Jungle]", "Removes [Forest]"] or whatnot.

For now I Constant'D the "Remove " so we can at least follow where it's used.

* Reverted some of the auto-formatting so the PR is cleaner

* Caught 'nullify yields' unique for terrain removal
2022-01-19 14:16:33 +02:00
SimonCeder
e375fb9896
Disable religious quest with religion disabled; enumify "Hidden when religion is disabled" (#5465)
* enumify hidden with religion disabled

* prevent religious quests in no-religion games
2021-10-12 07:31:22 +03:00
SomeTroglodyte
d25adacec7
Minimum city distance across continents (#5404) 2021-10-06 22:51:52 +03:00
SomeTroglodyte
8d33dacc3c
Softcode Fountain of Youth (#5308)
* Softcode Rejuvenation

* Softcode Rejuvenation - comments
2021-09-25 22:15:03 +03:00
ravignir
893f41a0ed
Add missing Natural Wonders (#5204)
* Add files via upload

* Add files via upload

* Add files via upload

* Update Terrains.json

* Update Constants.kt

* Update Constants.kt

* Update NaturalWonderGenerator.kt

* Update Constants.kt

* Update NaturalWonderGenerator.kt

* Natural Wonders generation fixes.
2021-09-13 20:49:46 +03:00
Xander Lenstra
e2a1e44282
Fixed bugs with unit movement (#5126)
* Fixed bugs with unit movement

* Optimized function call

* Cleaning up some code

* Removed comments that are no longer applicable
2021-09-08 21:11:59 +03:00
yairm210
8779ca7147 Mass deprecation 2021-08-28 22:21:35 +03:00
Xander Lenstra
89ea30af95
Implemented Inquisitors (#4909)
* Added inquisitor unit including image

* Inquisitor now blocks spreading of religions

* Added 'remove heresy' action

* Fixed tests

* Reworded remove heresy unique, updated sprites

* Fix Crash

* Implemented requested changes & fixed a few minor bugs

* Implemented requested changes
2021-08-23 20:26:37 +03:00
SomeTroglodyte
13365e5ad6
Ancient Ruins, Civilopedia and Translations (#4907)
* Ancient Ruins, Civilopedia and Translations
- TranslationFileWriter can process Ruins.json
- Hide Religion / Civilopedia uniques hardcoded String moved to Constants
- Civilopedia display of Ruins pulls actual json rewards in code
- Manually curated rewards description removed

* Ancient Ruins, Civilopedia and Translations
- Old rewards descriptions moved to names, color
- Code now recreates old output closely
- civilopediaText allowed additionally
- TranslationFileWriter tweaked accordingly

* Ancient Ruins, Civilopedia and Translations - fix stargazers
2021-08-21 20:57:39 +03:00
SomeTroglodyte
b60c2c71dd
Unit action constants and worker unique cleanup (#4815)
* Unit action constants and worker unique cleanup

* Replace unit action constants with enum properties - patch1

* Replace unit action constants with enum properties - patch2
2021-08-18 12:18:02 +03:00
Xander Lenstra
5d249ee673
Implemented religious pressure (#4863)
* Implemented religious pressure: cities now can have more than one religion in them and religions spread between nearby cities over time.

* Implemented proposed changes

* Implemented requested changes & minor changes I forgot to include last time

* All pantheons not founded by you are now removed when you gain a new city (found this somewhere in the source code of the original, don't know if it's documented anywhere online)
2021-08-15 18:53:01 +03:00
SomeTroglodyte
e59db3ada3
Unit rename UI (#4804)
* Rework Yes/No and OK/Close

* Apply Yes/No and OK/Close constants

* Clean up and decorate RenameUnitPopup
2021-08-09 13:59:30 +03:00
Xander Lenstra
92d3fa65e3
Ruins now have their own file (#4771)
* Ruins now have their own file

* Added religious rewards

* Added an option for only enabling rewards after a certain amount of turns

* You can now weigh rewards making some more likely than others

* Cleaned up some code

* Make new changes compatible with old mods

* Implemented proposed changes

* Implemented requested changes

* Implemented requested changes
2021-08-08 17:31:08 +03:00
SimonCeder
2971e6bba3
Map generation and start locations (#4588)
* cellular automata for mountains and hills

* cellular automata for mountains and hills

* tweaks

* spawn location algorithm

* consolation prizes

* improve city state spawns

* AI settle in place if possible

* make heightmap generation mod agnostic
2021-07-21 14:41:48 +03:00
Xander Lenstra
b8d79dc23d
Split off properties of era's to another JSON file (#4336)
* Added Era.json and imported the data to the ruleset

* Units at start are now also determined by eras.json

* Research agreement costs now determined by json file

* Gold and Culture provided at the start are now awarded

* Can no longer build wonders that are more than two eras older than the starting era

* Default population and buildings for settlers can now be added

* Added checks for validity of eras.json file in mods

* Colors for the icons of technologies are no also saved in eras.json

* Removed constants for all era's as they have been generalized away by this PR

* Removed spurios println's

* Added compatibility for mods

* Updated the military unit you get from ruines to be the military unit you received at the start of the game
2021-07-02 15:45:18 +03:00
Xander Lenstra
e6850b857a
Generalized building of improvements (#4252)
* Generalized building of improvements

* Readded support for the deprecated unique "Can build improvements on tiles"

* Small code quality changes

* Implemented requested chagnes
2021-06-25 16:35:15 +03:00
Xander Lenstra
aa9dda2eea
Added the paratrooper unit (#4025)
* Added the paratrooper unit

* Reverted accidental reordering of action table

* Fixed Github build errors

* Hopefully actually fixed the build errors

* Added a Dutch translation, finally fixing the error

* Paratroopers can no longer actually paradrop on a tile they shouldn't be able to paradrop onto

* Removed double update action
2021-06-03 07:33:38 +03:00
SomeTroglodyte
7c7d4181cc
Fix custom map sizes - saves match, size obeyed, limit UI (#3965)
* Fix custom map sizes - Revive Enum MapSize and fix tech modifier for custom maps

* Fix custom map sizes - Fix saved size not matching tileset, obey custom size

* Fix custom map sizes - limiting custom size and UI

* Fix custom map sizes - linting and reduce warnings

* Fix custom map sizes - less verbose

* Popup gets a KeyPressDispatcher - templates
2021-05-20 22:17:07 +03:00
Alexander Korolyov
453f5588ac
Custom map size (#2876)
* Adding custom map sizes. Initial commit

* Custom map sizes UI update

* Custom map size with rectangular shape

* Added compatibility with older Maps and Game saves

* Fixed build errors and added warning messages

Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
2021-05-06 18:39:28 +03:00