Ethiopia - Nation (#5387)

* Ethiopia - Nation

* Ethiopia - Unit and Stele

* Ethiopia - Graphics

* Ethiopia - color
This commit is contained in:
SomeTroglodyte
2021-10-04 19:56:34 +02:00
committed by GitHub
parent ec036dc3dd
commit 088e35ff13
17 changed files with 792 additions and 707 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -419,441 +419,448 @@ BuildingIcons/Medical Lab
index: -1
BuildingIcons/Military Academy
rotate: false
xy: 1300, 1516
xy: 1408, 1624
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Military Base
rotate: false
xy: 1408, 1624
xy: 1516, 1732
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Mint
rotate: false
xy: 1516, 1732
xy: 1624, 1840
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Monastery
rotate: false
xy: 544, 652
xy: 652, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Monument
rotate: false
xy: 652, 760
xy: 760, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Mosque
rotate: false
xy: 760, 868
xy: 868, 982
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Mud Pyramid Mosque
rotate: false
xy: 868, 982
xy: 976, 1084
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Mughal Fort
rotate: false
xy: 976, 1084
xy: 1084, 1192
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Museum
rotate: false
xy: 1084, 1192
xy: 1192, 1300
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/National College
rotate: false
xy: 1516, 1624
xy: 1624, 1732
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/National Epic
rotate: false
xy: 1624, 1732
xy: 1732, 1840
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/National Treasury
rotate: false
xy: 1732, 1840
xy: 4, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Neuschwanstein
rotate: false
xy: 4, 4
xy: 112, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Notre Dame
rotate: false
xy: 220, 220
xy: 328, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Nuclear Plant
rotate: false
xy: 436, 436
xy: 544, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Observatory
rotate: false
xy: 652, 652
xy: 760, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Opera House
rotate: false
xy: 760, 760
xy: 868, 874
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Oxford University
rotate: false
xy: 868, 874
xy: 976, 976
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Pagoda
rotate: false
xy: 976, 976
xy: 1084, 1084
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Palace
rotate: false
xy: 1084, 1084
xy: 1192, 1192
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Paper Maker
rotate: false
xy: 1300, 1301
xy: 1408, 1409
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Pentagon
rotate: false
xy: 1516, 1516
xy: 1624, 1624
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Petra
rotate: false
xy: 1732, 1732
xy: 1840, 1840
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Porcelain Tower
rotate: false
xy: 220, 112
xy: 328, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Public School
rotate: false
xy: 436, 328
xy: 544, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Research Lab
rotate: false
xy: 652, 544
xy: 760, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/SS Booster
rotate: false
xy: 976, 868
xy: 1084, 976
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/SS Cockpit
rotate: false
xy: 1084, 976
xy: 1192, 1084
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/SS Engine
rotate: false
xy: 1192, 1084
xy: 1300, 1192
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/SS Stasis Chamber
rotate: false
xy: 1300, 1193
xy: 1408, 1301
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Satrap's Court
rotate: false
xy: 1516, 1408
xy: 1624, 1516
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Seaport
rotate: false
xy: 1840, 1732
xy: 220, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Shrine
rotate: false
xy: 436, 220
xy: 544, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Sistine Chapel
rotate: false
xy: 652, 436
xy: 760, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Solar Plant
rotate: false
xy: 868, 658
xy: 976, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Spaceship Factory
rotate: false
xy: 976, 760
xy: 1084, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Stable
rotate: false
xy: 1192, 976
xy: 1300, 1084
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Stadium
rotate: false
xy: 1300, 1085
xy: 1408, 1193
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Statue of Liberty
rotate: false
xy: 1408, 1192
xy: 1516, 1300
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Statue of Zeus
rotate: false
xy: 1516, 1300
xy: 1624, 1408
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Stock Exchange
rotate: false
xy: 1732, 1516
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Stone Works
BuildingIcons/Stele
rotate: false
xy: 1840, 1624
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Stonehenge
BuildingIcons/Stock Exchange
rotate: false
xy: 328, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Stone Works
rotate: false
xy: 436, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Stonehenge
rotate: false
xy: 544, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Sydney Opera House
rotate: false
xy: 652, 328
xy: 868, 550
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Taj Mahal
rotate: false
xy: 760, 436
xy: 976, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Temple
rotate: false
xy: 976, 652
xy: 1192, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Temple of Artemis
rotate: false
xy: 1084, 760
xy: 1300, 976
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Terracotta Army
rotate: false
xy: 1300, 977
xy: 1516, 1192
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/The Great Library
rotate: false
xy: 1408, 1084
xy: 1624, 1300
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/The Great Lighthouse
rotate: false
xy: 1516, 1192
xy: 1732, 1408
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/The Louvre
rotate: false
xy: 1624, 1300
xy: 1840, 1516
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/The Oracle
rotate: false
xy: 1732, 1408
xy: 436, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/The Pyramids
rotate: false
xy: 1840, 1516
xy: 544, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Theatre
rotate: false
xy: 436, 4
xy: 652, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/United Nations
rotate: false
xy: 976, 544
xy: 1192, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/University
rotate: false
xy: 1084, 652
xy: 1300, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Utopia Project
rotate: false
xy: 1192, 760
xy: 1408, 977
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Walls
rotate: false
xy: 1300, 869
xy: 1516, 1084
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Walls of Babylon
rotate: false
xy: 1408, 976
xy: 1624, 1192
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Wat
rotate: false
xy: 1840, 1408
xy: 652, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Water Mill
rotate: false
xy: 544, 4
xy: 760, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Windmill
rotate: false
xy: 652, 112
xy: 868, 334
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
BuildingIcons/Workshop
rotate: false
xy: 976, 436
xy: 1192, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
@ -1369,310 +1376,317 @@ UnitIcons/Mechanized Infantry
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Minuteman
UnitIcons/Mehal Sefari
rotate: false
xy: 1624, 1840
xy: 1300, 1516
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Missile Cruiser
UnitIcons/Minuteman
rotate: false
xy: 4, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Missionary
UnitIcons/Missile Cruiser
rotate: false
xy: 112, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Mobile SAM
UnitIcons/Missionary
rotate: false
xy: 220, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Modern Armor
UnitIcons/Mobile SAM
rotate: false
xy: 328, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Mohawk Warrior
UnitIcons/Modern Armor
rotate: false
xy: 436, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Mohawk Warrior
rotate: false
xy: 544, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Musketeer
rotate: false
xy: 1192, 1300
xy: 1300, 1408
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Musketman
rotate: false
xy: 1300, 1409
xy: 1408, 1517
size: 100, 99
orig: 100, 99
offset: 0, 0
index: -1
UnitIcons/Naresuan's Elephant
rotate: false
xy: 1408, 1516
xy: 1516, 1624
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Norwegian Ski Infantry
rotate: false
xy: 112, 112
xy: 220, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Nuclear Missile
rotate: false
xy: 328, 328
xy: 436, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Nuclear Submarine
rotate: false
xy: 544, 544
xy: 652, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Panzer
rotate: false
xy: 1192, 1192
xy: 1300, 1300
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Paratrooper
rotate: false
xy: 1408, 1408
xy: 1516, 1516
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Persian Immortal
rotate: false
xy: 1624, 1624
xy: 1732, 1732
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Pictish Warrior
rotate: false
xy: 1840, 1840
xy: 112, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Pikeman
rotate: false
xy: 112, 4
xy: 220, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Privateer
rotate: false
xy: 328, 220
xy: 436, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Quinquereme
rotate: false
xy: 544, 436
xy: 652, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Rifleman
rotate: false
xy: 760, 652
xy: 868, 766
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Rocket Artillery
rotate: false
xy: 868, 766
xy: 976, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Samurai
rotate: false
xy: 1408, 1300
xy: 1516, 1408
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Scout
rotate: false
xy: 1624, 1516
xy: 1732, 1624
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Sea Beggar
rotate: false
xy: 1732, 1624
xy: 1840, 1732
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Settler
rotate: false
xy: 220, 4
xy: 328, 112
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Ship of the Line
rotate: false
xy: 328, 112
xy: 436, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Sipahi
rotate: false
xy: 544, 328
xy: 652, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Slinger
rotate: false
xy: 760, 544
xy: 868, 658
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Spearman
rotate: false
xy: 1084, 868
xy: 1192, 976
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Stealth Bomber
rotate: false
xy: 1624, 1408
xy: 1732, 1516
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Submarine
rotate: false
xy: 436, 112
xy: 652, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Swordsman
rotate: false
xy: 544, 220
xy: 760, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Tank
rotate: false
xy: 868, 550
xy: 1084, 760
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Tercio
rotate: false
xy: 1192, 868
xy: 1408, 1085
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Trebuchet
rotate: false
xy: 544, 112
xy: 760, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Triplane
rotate: false
xy: 652, 220
xy: 868, 442
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Trireme
rotate: false
xy: 760, 327
xy: 976, 543
size: 100, 101
orig: 100, 101
offset: 0, 0
index: -1
UnitIcons/Turtle Ship
rotate: false
xy: 868, 442
xy: 1084, 652
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/War Chariot
rotate: false
xy: 1516, 1084
xy: 1732, 1300
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/War Elephant
rotate: false
xy: 1624, 1192
xy: 1840, 1408
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Warrior
rotate: false
xy: 1732, 1300
xy: 544, 4
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Work Boats
rotate: false
xy: 760, 219
xy: 976, 435
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Worker
rotate: false
xy: 868, 334
xy: 1084, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
UnitIcons/Zero
rotate: false
xy: 1084, 544
xy: 1300, 760
size: 100, 100
orig: 100, 100
offset: 0, 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 664 KiB

After

Width:  |  Height:  |  Size: 672 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -21,6 +21,17 @@
"maintenance": 1,
"uniques": ["Destroyed when the city is captured"]
},
{
"name": "Stele",
"replaces": "Monument",
"uniqueTo": "Ethiopia",
"culture": 2,
"faith": 2,
"cost": 40,
"hurryCostModifier": 40,
"maintenance": 1,
"uniques": ["Destroyed when the city is captured"] //"Hidden when religion is disabled"
},
// Column 1
{
"name": "Granary",

View File

@ -863,7 +863,42 @@
"St. Austell","Saint-Malo","Onchan","Dundee","Londonderry","Llanfairpwllgwyngyll","Falmouth","Lorient"]
// Llanfairpwllgwyngyll should actually be Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch
},
{
"name": "Ethiopia",
"leaderName": "Haile Selassie",
"adjective": ["ethiopian"],
"startBias": ["Jungle"],
"preferredVictoryType": "Cultural",
"startIntroPart1": "Blessings be upon you, honorable and righteous Emperor of Ethiopia, Haile Selassie. Your legacy as one of Ethiopia's greatest rulers, and as the spiritual leader to the Rastafarian movement, is outshone only by the influence you had on diplomacy and political cooperation throughout the world. In introducing Ethiopia's first written constitution, you planted the seeds of democracy that would take root over the coming years, and your infinitely wise grasp of global affairs secured Ethiopia's place as a charter member of the United Nations. Spearheading efforts to reform and modernize the nation during your reign, you changed the course of Ethiopian history forever",
"startIntroPart2": "Revered king, your composed demeanor once protected the people from the many conflicts that plague the nations of men, and the kingdom looks to you to assure peace once again. Will you lead the people with courage and authority, moving forward into a new age? Will you build a civilization that stands the test of time?",
"declaringWar": "I have tried all other avenues, but yet you persist in this madness. I hope, for your sake, your end is swift.",
"attacked": "It is silence that allows evil to triumph. We will not stand mute and allow you to continue on this mad quest unchecked.",
"defeated": "God and history will remember your actions this day. I hope you are ready for your impending judgment.",
"introduction": "A thousand welcomes to our fair nation. I am Selassie, the Ras Tafari Makonnen and Emperor of Ethiopia, your humble servant.",
"tradeRequest": "I request that you consider this offer between our two peoples. I believe it will do us both good.",
"afterPeace": "Today is the day on which we defeated our enemy. However, we shall only rejoice in our hearts, and in the spirit of heaven.",
"neutralHello": "Welcome.",
"neutralLetsHearIt": ["Continue.","I am listening.","Yes?"],
"neutralNo": ["It is not right.","We oppose because it is not right.","But I feel the agreement is done."],
"neutralYes": ["Great.","An agreement has been reached.","Our heart and soul is very much satisfied."],
"hateHello": "What do you want?",
"hateLetsHearIt": ["You said it.","What?","Continue."],
"hateNo": ["That is unacceptable.","You are not sure about it.","Please repeat for me."],
"hateYes": ["Fine, in my understanding.","It is clear.","It is clear."],
"outerColor": [19,70,24],
"innerColor": [255,46,46],
"uniqueName": "Spirit of Adwa",
"uniques": ["[+20]% Strength <when fighting units from a Civilization with more Cities than you>"],
"cities": ["Addis Ababa","Harar","Adwa","Lalibela","Gondar","Axum","Dire Dawa","Bahir Dar","Adama",
"Mek'ele","Awasa","Jimma","Jijiga","Dessie","Debre Berhan","Shashamane","Debre Zeyit","Sodo","Hosaena",
"Nekemte","Asella","Dila","Adigrat","Debre Markos","Kombolcha","Debre Tabor","Sebeta",
"Shire","Ambo","Negele Arsi","Gambela","Ziway","Weldiya"]
},
// City-States sorted by cityStateType, name
{

View File

@ -538,5 +538,9 @@
{
"name": "Pictish Courage", // only for Pictish Warrior and subsequent upgrades
"uniques": ["No movement cost to pillage", "+[20]% Strength in [Foreign Land]"]
},
{
"name": "Home Sweet Home", // only for Mehal Sefari and subsequent upgrades
"uniques": ["[+30]% Strength decreasing with distance from the capital"]
}
]

View File

@ -1048,6 +1048,20 @@
"promotions": ["March"],
"attackSound": "shot"
},
{
"name": "Mehal Sefari",
"unitType": "Gunpowder",
"replaces": "Rifleman",
"uniqueTo": "Ethiopia",
"movement": 2,
"strength": 34,
"cost": 200,
"requiredTech": "Rifling",
"obsoleteTech": "Replaceable Parts",
"upgradesTo": "Great War Infantry",
"promotions": ["Drill I","Home Sweet Home"],
"attackSound": "shot"
},
{
"name": "Cavalry",
"unitType": "Mounted",

View File

@ -39,7 +39,15 @@ object BattleDamage {
) {
modifiers.add(getModifierStringFromUnique(unique), unique.params[0].toInt())
}
for (unique in combatant.unit.getMatchingUniques(UniqueType.StrengthNearCapital)) {
if (civInfo.cities.isEmpty()) break
val distance = combatant.getTile().aerialDistanceTo(civInfo.getCapital().getCenterTile())
// https://steamcommunity.com/sharedfiles/filedetails/?id=326411722#464287
val effect = unique.params[0].toInt() - 3 * distance
if (effect <= 0) continue
modifiers.add("${unique.sourceObjectName} (${unique.sourceObjectType})", effect)
}
// Deprecated since 3.17.3
for (unique in
combatant.unit.getMatchingUniques("+[]% Strength vs []")
@ -52,11 +60,11 @@ object BattleDamage {
if (enemy.matchesCategory(unique.params[1]))
modifiers.add("vs [${unique.params[1]}]", -unique.params[0].toInt())
}
for (unique in combatant.unit.getMatchingUniques("+[]% Combat Strength"))
modifiers.add("Combat Strength", unique.params[0].toInt())
//
//https://www.carlsguides.com/strategy/civilization5/war/combatbonuses.php
val civHappiness = if (civInfo.isCityState() && civInfo.getAllyCiv() != null)
// If we are a city state with an ally we are vulnerable to their unhappiness.
@ -77,7 +85,7 @@ object BattleDamage {
//
val adjacentUnits = combatant.getTile().neighbors.flatMap { it.getUnits() }
for (unique in civInfo.getMatchingUniques("[]% Strength for [] units which have another [] unit in an adjacent tile")) {
if (combatant.matchesCategory(unique.params[1])
&& adjacentUnits.any { it.civInfo == civInfo && it.matchesFilter(unique.params[2]) }
@ -85,7 +93,7 @@ object BattleDamage {
modifiers.add("Adjacent units", unique.params[0].toInt())
}
}
for (unique in adjacentUnits.filter { it.civInfo.isAtWarWith(combatant.getCivInfo()) }
.flatMap { it.getMatchingUniques("[]% Strength for enemy [] units in adjacent [] tiles") })
if (combatant.matchesCategory(unique.params[1]) && combatant.getTile().matchesFilter(unique.params[2]))

View File

@ -51,10 +51,10 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s
state.civInfo != null && state.civInfo.statsForNextTurn.happiness >= 0
UniqueType.ConditionalGoldenAge ->
state.civInfo != null && state.civInfo.goldenAges.isGoldenAge()
UniqueType.ConditionalSpecialistCount ->
state.cityInfo != null && state.cityInfo.population.getNumberOfSpecialists() >= condition.params[0].toInt()
UniqueType.ConditionalVsCity ->
state.defender != null && state.defender.matchesCategory("City")
UniqueType.ConditionalVsUnits ->
@ -64,7 +64,12 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s
|| (state.unit != null && state.unit.matchesFilter(condition.params[0]))
UniqueType.ConditionalAttacking -> state.combatAction == CombatAction.Attack
UniqueType.ConditionalDefending -> state.combatAction == CombatAction.Defend
UniqueType.ConditionalVsLargerCiv -> {
val yourCities = state.civInfo?.cities?.size ?: 1
val theirCities = state.defender?.getCivInfo()?.cities?.size ?: 0
yourCities < theirCities
}
UniqueType.ConditionalNeighborTiles ->
state.cityInfo != null &&
state.cityInfo.getCenterTile().neighbors.count {

View File

@ -119,6 +119,7 @@ enum class UniqueType(val text:String, vararg targets: UniqueTarget) {
///////////////////////////////////////// UNIT UNIQUES /////////////////////////////////////////
Strength("[amount]% Strength", UniqueTarget.Unit, UniqueTarget.Global),
StrengthNearCapital("[amount]% Strength decreasing with distance from the capital", UniqueTarget.Unit),
@Deprecated("As of 3.17.3", ReplaceWith("[amount]% Strength"), DeprecationLevel.WARNING)
StrengthPlus("+[amount]% Strength", UniqueTarget.Unit),
@ -212,6 +213,7 @@ enum class UniqueType(val text:String, vararg targets: UniqueTarget) {
ConditionalOurUnit("for [mapUnitFilter] units", UniqueTarget.Conditional),
ConditionalVsCity("vs cities", UniqueTarget.Conditional),
ConditionalVsUnits("vs [mapUnitFilter] units", UniqueTarget.Conditional),
ConditionalVsLargerCiv("when fighting units from a Civilization with more Cities than you", UniqueTarget.Conditional),
ConditionalAttacking("when attacking", UniqueTarget.Conditional),
ConditionalDefending("when defending", UniqueTarget.Conditional),
// ConditionalIntercepting("when intercepting", UniqueTarget.Conditional),

View File

@ -6,14 +6,11 @@ import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.map.MapUnit
import com.unciv.models.ruleset.Ruleset
import com.unciv.models.ruleset.RulesetObject
import com.unciv.models.ruleset.unique.Unique
import com.unciv.models.ruleset.unique.UniqueTarget
import com.unciv.models.ruleset.unique.UniqueType
import com.unciv.models.stats.INamed
import com.unciv.models.stats.Stat
import com.unciv.models.translations.tr
import com.unciv.ui.civilopedia.FormattedLine
import com.unciv.ui.civilopedia.ICivilopediaText
import com.unciv.ui.utils.Fonts
import com.unciv.ui.utils.toPercent
import kotlin.collections.ArrayList
@ -557,7 +554,7 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction {
isRanged()
&& (uniqueObjects + getType().uniqueObjects)
.any { it.isOfType(UniqueType.Strength)
&& it.params[0].toInt() > 0
&& it.params[0].toInt() > 0
&& it.conditionals.any { conditional -> conditional.isOfType(UniqueType.ConditionalVsCity) }
}
)
@ -593,8 +590,12 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction {
power += 4000
// Uniques
for (unique in uniqueObjects) {
val allUniques = uniqueObjects.asSequence() +
promotions.asSequence()
.mapNotNull { ruleset.unitPromotions[it] }
.flatMap { it.uniqueObjects }
for (unique in allUniques) {
when {
unique.isOfType(UniqueType.Strength) && unique.params[0].toInt() > 0 -> {
if (unique.conditionals.any { it.isOfType(UniqueType.ConditionalVsUnits) } ) { // Bonus vs some units - a quarter of the bonus
@ -607,6 +608,9 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction {
power *= (unique.params[0].toInt() / 2f).toPercent()
}
}
unique.isOfType(UniqueType.StrengthNearCapital) && unique.params[0].toInt() > 0 ->
power *= (unique.params[0].toInt() / 4f).toPercent() // Bonus decreasing with distance from capital - not worth much most of the map???
// Deprecated since 3.17.3
unique.isOfType(UniqueType.StrengthPlusVs) && unique.params[1] == "City" // City Attack - half the bonus
-> power += (power * unique.params[0].toInt()) / 200
@ -623,46 +627,13 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction {
-> power += power / 4
unique.placeholderText == "Must set up to ranged attack" // Must set up - 20 % penalty
-> power -= power / 5
unique.placeholderText == "[] additional attacks per turn" // Extra attacks - 20% bonus per extra attack
-> power += (power * unique.params[0].toInt()) / 5
unique.placeholderText == "+[]% Strength in []" // Bonus in terrain or feature - half the bonus
-> power += (power * unique.params[0].toInt()) / 200
}
}
// Base promotions
for (promotionName in promotions) {
for (unique in ruleset.unitPromotions[promotionName]!!.uniqueObjects) {
when {
unique.isOfType(UniqueType.Strength) && unique.params[0].toInt() > 0 -> {
if (unique.conditionals.any { it.isOfType(UniqueType.ConditionalVsUnits) } ) { // Bonus vs some units - a quarter of the bonus
power *= (unique.params[0].toInt() / 4f).toPercent()
} else if (
unique.conditionals.any { it.isOfType(UniqueType.ConditionalVsCity) } || // City Attack - half the bonus
unique.conditionals.any { it.isOfType(UniqueType.ConditionalAttacking) } || // Attack - half the bonus
unique.conditionals.any { it.isOfType(UniqueType.ConditionalDefending) } // Defense - half the bonus
) {
power *= (unique.params[0].toInt() / 2f).toPercent()
}
}
// Deprecated since 3.17.3
unique.isOfType(UniqueType.StrengthPlusVs) && unique.params[1] == "City" // City Attack - half the bonus
-> power += (power * unique.params[0].toInt()) / 200
unique.isOfType(UniqueType.StrengthPlusVs) && unique.params[1] != "City" // Bonus vs something else - a quarter of the bonus
-> power += (power * unique.params[0].toInt()) / 400
//
// Deprecated since 3.17.4
unique.isOfType(UniqueType.StrengthAttacking) // Attack - half the bonus
-> power += (power * unique.params[0].toInt()) / 200
unique.isOfType(UniqueType.StrengthDefending) // Defense - half the bonus
-> power += (power * unique.params[0].toInt()) / 200
//
unique.placeholderText == "[] additional attacks per turn" // Extra attacks - 20% bonus per extra attack
-> power += (power * unique.params[0].toInt()) / 5
unique.placeholderText == "+[]% Strength in []" // Bonus in terrain or feature - half the bonus
-> power += (power * unique.params[0].toInt()) / 200
}
}
}
cachedForceEvaluation = power.toInt()
}
}

View File

@ -100,6 +100,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
* [Rifle](https://thenounproject.com/search/?q=Rifle&i=604291) By Chameleon Design for Rifleman
* [Bayonet](https://thenounproject.com/term/bayonet/3101681/) By food lover for Carolean
* [soldier](https://thenounproject.com/term/soldier/2096497/) by ProSymbols for Mehal Sefari
* [Horse](https://thenounproject.com/search/?q=Horse&i=1023745) By Bakunetso Kaito for Cavalry
* [horse racing](https://thenounproject.com/antimso/uploads/?i=2427932) By Sergio Morozov for Cossack
* [Marching Band](https://thenounproject.com/term/marching-band/871426/) by Darrin Loeliger, US for Hussar. The original work has been modified.
@ -217,6 +218,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
* [Block](https://thenounproject.com/term/block/1711553/) By Monjin Friends for Stone Works
* [korean palace](https://thenounproject.com/term/korean-palace/1797542/) By 1516 for Palace
* [Obelisk](https://thenounproject.com/term/obelisk/749104/) By Eliricon for Monument
* [obelisk](https://thenounproject.com/term/obelisk/3520415/) By IconMark for Stele
* [Cross swords](https://thenounproject.com/term/cross-swords/965398/) By Creaticca Creative Agency for Barracks
* [Fortress](https://thenounproject.com/search/?q=fortress&i=146989) By Creative Stall for Krepost
* [Paper](https://thenounproject.com/term/paper/1443472/) By anam
@ -564,7 +566,11 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
* [Iroquois](https://github.com/ravignir/5Hex-Tileset/blob/master/Images/NationIcons/Iroquois.png) by Ravignir for Iroquois
* [Songhai](https://github.com/ravignir/5Hex-Tileset/blob/master/Images/NationIcons/Songhai.png) by Ravignir for Songhai
* [Celtic Knot](https://thenounproject.com/term/celtic/168483/) by Ervin Bolat for the Celts
* Ethiopian Icon created in Gimp by Unciv team from the following:
* [Lion](https://thenounproject.com/term/lion/4074339/) by IronSV
* [royal crown](https://thenounproject.com/term/royal-crown/2054222/) by Vectors Market
* [Spear](https://thenounproject.com/term/spear/3930020/) by Firza Alamsyah
* [pennant](https://thenounproject.com/term/pennant/194797/) by Sara Jeffries
## Promotions
@ -598,6 +604,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
* [Anchor](https://thenounproject.com/term/anchor/676586) by Gregor Cresnar for Amphibious
* [survival knife](https://thenounproject.com/search/?q=survival&i=2663392) by b faris for Survivalism
* [Shamrock](https://thenounproject.com/term/shamrock/358507/) By P Thanga Vignesh for Pictish Courage
* [home sweet home](https://thenounproject.com/term/home-sweet-home/3817166/) By Silviu Ojog for Home Sweet Home
## Religions