mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-28 06:16:37 -04:00
Added Japan civ!
Some units now recieve promotions when created/upgraded to, as per Civ V
This commit is contained in:
parent
f3cbeb5ca4
commit
58e38ea634
@ -37,6 +37,7 @@ All the following are from [the Noun Project](https://thenounproject.com) licenc
|
|||||||
* [Longbow](https://thenounproject.com/search/?q=longbow&i=815991) By Hamish for Longbowman
|
* [Longbow](https://thenounproject.com/search/?q=longbow&i=815991) By Hamish for Longbowman
|
||||||
* [Trebuchet](https://thenounproject.com/search/?q=Trebuchet&i=827987) By Ben Davis
|
* [Trebuchet](https://thenounproject.com/search/?q=Trebuchet&i=827987) By Ben Davis
|
||||||
* [Sword](https://thenounproject.com/search/?q=Sword&i=1432662) By uzeir syarief for Longswordsman
|
* [Sword](https://thenounproject.com/search/?q=Sword&i=1432662) By uzeir syarief for Longswordsman
|
||||||
|
* [Samurai](https://thenounproject.com/search/?q=samurai&i=1683729) By Chanut is Industries
|
||||||
* [Spear](https://thenounproject.com/search/?q=Spear&i=1233840) By Alvaro Cabrera for Pikeman
|
* [Spear](https://thenounproject.com/search/?q=Spear&i=1233840) By Alvaro Cabrera for Pikeman
|
||||||
* [Knight](https://thenounproject.com/search/?q=Knight&i=30912) By Tyler Glaude
|
* [Knight](https://thenounproject.com/search/?q=Knight&i=30912) By Tyler Glaude
|
||||||
|
|
||||||
|
BIN
android/Images/UnitIcons/Samurai.png
Normal file
BIN
android/Images/UnitIcons/Samurai.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.2 KiB |
@ -412,161 +412,161 @@ BuildingIcons/SS Stasis Chamber
|
|||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Seaport
|
BuildingIcons/Seaport
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1814, 620
|
xy: 1916, 620
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Sistine Chapel
|
BuildingIcons/Sistine Chapel
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 653, 520
|
xy: 551, 418
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Solar Plant
|
BuildingIcons/Solar Plant
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 755, 520
|
xy: 551, 316
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Spaceship Factory
|
BuildingIcons/Spaceship Factory
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 551, 316
|
xy: 653, 418
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Stable
|
BuildingIcons/Stable
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 755, 418
|
xy: 959, 520
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Stadium
|
BuildingIcons/Stadium
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 959, 520
|
xy: 755, 316
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Statue of Liberty
|
BuildingIcons/Statue of Liberty
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 755, 316
|
xy: 857, 418
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Stock Exchange
|
BuildingIcons/Stock Exchange
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 857, 316
|
xy: 959, 418
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Stone Works
|
BuildingIcons/Stone Works
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1163, 520
|
xy: 959, 316
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Stonehenge
|
BuildingIcons/Stonehenge
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 959, 316
|
xy: 1061, 418
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Sydney Opera House
|
BuildingIcons/Sydney Opera House
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1163, 316
|
xy: 1265, 418
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Taj Mahal
|
BuildingIcons/Taj Mahal
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1265, 418
|
xy: 1265, 316
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Temple
|
BuildingIcons/Temple
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1367, 519
|
xy: 1367, 417
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/The Great Library
|
BuildingIcons/The Great Library
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1367, 417
|
xy: 1367, 315
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/The Great Lighthouse
|
BuildingIcons/The Great Lighthouse
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1367, 315
|
xy: 1469, 518
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/The Louvre
|
BuildingIcons/The Louvre
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1469, 518
|
xy: 1469, 416
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/The Oracle
|
BuildingIcons/The Oracle
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1469, 416
|
xy: 1571, 518
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/The Pyramids
|
BuildingIcons/The Pyramids
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1571, 518
|
xy: 1571, 416
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Theatre
|
BuildingIcons/Theatre
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1673, 518
|
xy: 1673, 416
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/University
|
BuildingIcons/University
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1877, 416
|
xy: 1469, 314
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Walls
|
BuildingIcons/Walls
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1571, 314
|
xy: 1673, 314
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Windmill
|
BuildingIcons/Windmill
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 438, 203
|
xy: 438, 101
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
BuildingIcons/Workshop
|
BuildingIcons/Workshop
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 755, 214
|
xy: 857, 214
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -762,7 +762,7 @@ ImprovementIcons/Road
|
|||||||
index: -1
|
index: -1
|
||||||
ImprovementIcons/Trading post
|
ImprovementIcons/Trading post
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1775, 518
|
xy: 1775, 416
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -839,14 +839,14 @@ OtherIcons/Pillage
|
|||||||
index: -1
|
index: -1
|
||||||
OtherIcons/Shield
|
OtherIcons/Shield
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 449, 408
|
xy: 449, 306
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
OtherIcons/Sleep
|
OtherIcons/Sleep
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 551, 418
|
xy: 755, 520
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -860,7 +860,7 @@ OtherIcons/Star
|
|||||||
index: -1
|
index: -1
|
||||||
OtherIcons/Stop
|
OtherIcons/Stop
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1061, 418
|
xy: 1265, 520
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -909,7 +909,7 @@ PolicyIcons/Civil Society
|
|||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Collective Rule
|
PolicyIcons/Collective Rule
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 959, 264
|
xy: 1061, 264
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -930,14 +930,14 @@ PolicyIcons/Democracy
|
|||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Discipline
|
PolicyIcons/Discipline
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1011, 264
|
xy: 1113, 264
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
StatIcons/Strength
|
StatIcons/Strength
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1011, 264
|
xy: 1113, 264
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -951,224 +951,224 @@ PolicyIcons/Entrepreneurship
|
|||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Facism
|
PolicyIcons/Facism
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1063, 264
|
xy: 1165, 264
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Free Religion
|
PolicyIcons/Free Religion
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1115, 264
|
xy: 1217, 264
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Free Speech
|
PolicyIcons/Free Speech
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1167, 264
|
xy: 1269, 264
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Free Thought
|
PolicyIcons/Free Thought
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1219, 264
|
xy: 1061, 212
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Humanism
|
PolicyIcons/Humanism
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1271, 264
|
xy: 1113, 212
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Landed Elite
|
PolicyIcons/Landed Elite
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 959, 212
|
xy: 1165, 212
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Legalism
|
PolicyIcons/Legalism
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1011, 212
|
xy: 1217, 212
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Mandate Of Heaven
|
PolicyIcons/Mandate Of Heaven
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1063, 212
|
xy: 1269, 212
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Mercantilism
|
PolicyIcons/Mercantilism
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1115, 212
|
xy: 492, 49
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Meritocracy
|
PolicyIcons/Meritocracy
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1167, 212
|
xy: 1966, 1588
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Militarism
|
PolicyIcons/Militarism
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1219, 212
|
xy: 1966, 1536
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Military Caste
|
PolicyIcons/Military Caste
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1271, 212
|
xy: 1966, 1484
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Military Tradition
|
PolicyIcons/Military Tradition
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 492, 49
|
xy: 1966, 1432
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Monarchy
|
PolicyIcons/Monarchy
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 1588
|
xy: 1966, 1380
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Oligarchy
|
PolicyIcons/Oligarchy
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 1484
|
xy: 1966, 1276
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Organized Religion
|
PolicyIcons/Organized Religion
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 1432
|
xy: 1966, 1224
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Patronage
|
PolicyIcons/Patronage
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 1380
|
xy: 1966, 1172
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Police State
|
PolicyIcons/Police State
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 1328
|
xy: 1966, 1120
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Populism
|
PolicyIcons/Populism
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 1276
|
xy: 1966, 1068
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Professional Army
|
PolicyIcons/Professional Army
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 1224
|
xy: 1966, 1016
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Protectionism
|
PolicyIcons/Protectionism
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 1172
|
xy: 1966, 964
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Reformation
|
PolicyIcons/Reformation
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 1068
|
xy: 540, 110
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Representation
|
PolicyIcons/Representation
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 1016
|
xy: 592, 162
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Republic
|
PolicyIcons/Republic
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 964
|
xy: 592, 110
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Scientific Revolution
|
PolicyIcons/Scientific Revolution
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 540, 162
|
xy: 644, 162
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Secularism
|
PolicyIcons/Secularism
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 540, 110
|
xy: 644, 110
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Sovereignty
|
PolicyIcons/Sovereignty
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 592, 162
|
xy: 696, 162
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Theocracy
|
PolicyIcons/Theocracy
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 592, 110
|
xy: 696, 110
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Total War
|
PolicyIcons/Total War
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 644, 162
|
xy: 748, 162
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Trade Unions
|
PolicyIcons/Trade Unions
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 644, 110
|
xy: 748, 110
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Universal Suffrage
|
PolicyIcons/Universal Suffrage
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 696, 162
|
xy: 800, 162
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
PolicyIcons/Warrior Code
|
PolicyIcons/Warrior Code
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 696, 110
|
xy: 800, 110
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -1301,70 +1301,70 @@ ResourceIcons/Pearls
|
|||||||
index: -1
|
index: -1
|
||||||
ResourceIcons/Sheep
|
ResourceIcons/Sheep
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 449, 510
|
xy: 449, 408
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
ResourceIcons/Silk
|
ResourceIcons/Silk
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 449, 306
|
xy: 551, 520
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
ResourceIcons/Silver
|
ResourceIcons/Silver
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 551, 520
|
xy: 653, 520
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
ResourceIcons/Spices
|
ResourceIcons/Spices
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 653, 316
|
xy: 755, 418
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
ResourceIcons/Stone
|
ResourceIcons/Stone
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 959, 418
|
xy: 1163, 520
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
ResourceIcons/Sugar
|
ResourceIcons/Sugar
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1061, 316
|
xy: 1163, 418
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
ResourceIcons/Uranium
|
ResourceIcons/Uranium
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1469, 314
|
xy: 1571, 314
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
ResourceIcons/Whales
|
ResourceIcons/Whales
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1775, 314
|
xy: 1877, 314
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
ResourceIcons/Wheat
|
ResourceIcons/Wheat
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1877, 314
|
xy: 438, 203
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
ResourceIcons/Wine
|
ResourceIcons/Wine
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 438, 101
|
xy: 551, 214
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -1427,7 +1427,7 @@ StatIcons/Malcontent
|
|||||||
index: -1
|
index: -1
|
||||||
StatIcons/Movement
|
StatIcons/Movement
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 1536
|
xy: 1966, 1328
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -1448,7 +1448,7 @@ StatIcons/Production
|
|||||||
index: -1
|
index: -1
|
||||||
StatIcons/RangedStrength
|
StatIcons/RangedStrength
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 1120
|
xy: 540, 162
|
||||||
size: 50, 50
|
size: 50, 50
|
||||||
orig: 50, 50
|
orig: 50, 50
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -1469,7 +1469,7 @@ StatIcons/Science
|
|||||||
index: -1
|
index: -1
|
||||||
StatIcons/Specialist
|
StatIcons/Specialist
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 857, 520
|
xy: 653, 316
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -1938,56 +1938,56 @@ TechIcons/Sailing
|
|||||||
index: -1
|
index: -1
|
||||||
TechIcons/Satellites
|
TechIcons/Satellites
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1508, 620
|
xy: 1610, 620
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
TechIcons/Scientific Theory
|
TechIcons/Scientific Theory
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1610, 620
|
xy: 1712, 620
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
TechIcons/Steam Power
|
TechIcons/Steam Power
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 857, 418
|
xy: 1061, 520
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
TechIcons/Steel
|
TechIcons/Steel
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1061, 520
|
xy: 857, 316
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
TechIcons/The Wheel
|
TechIcons/The Wheel
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1571, 416
|
xy: 1673, 518
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
TechIcons/Theology
|
TechIcons/Theology
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1673, 416
|
xy: 1775, 518
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
TechIcons/Trapping
|
TechIcons/Trapping
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1775, 416
|
xy: 1877, 518
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
TechIcons/Writing
|
TechIcons/Writing
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 857, 214
|
xy: 959, 214
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -2370,51 +2370,58 @@ UnitIcons/Rocket Artillery
|
|||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
|
UnitIcons/Samurai
|
||||||
|
rotate: false
|
||||||
|
xy: 1508, 620
|
||||||
|
size: 100, 100
|
||||||
|
orig: 100, 100
|
||||||
|
offset: 0, 0
|
||||||
|
index: -1
|
||||||
UnitIcons/Scout
|
UnitIcons/Scout
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1712, 620
|
xy: 1814, 620
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitIcons/Settler
|
UnitIcons/Settler
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1916, 620
|
xy: 449, 510
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitIcons/Spearman
|
UnitIcons/Spearman
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 653, 418
|
xy: 857, 520
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitIcons/Submarine
|
UnitIcons/Submarine
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1265, 520
|
xy: 1061, 316
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitIcons/Swordsman
|
UnitIcons/Swordsman
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1163, 418
|
xy: 1163, 316
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitIcons/Tank
|
UnitIcons/Tank
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1265, 316
|
xy: 1367, 519
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitIcons/Trebuchet
|
UnitIcons/Trebuchet
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1877, 518
|
xy: 1877, 416
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -2428,21 +2435,21 @@ UnitIcons/Trireme
|
|||||||
index: -1
|
index: -1
|
||||||
UnitIcons/Warrior
|
UnitIcons/Warrior
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1673, 314
|
xy: 1775, 314
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitIcons/Work Boats
|
UnitIcons/Work Boats
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 551, 214
|
xy: 653, 214
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitIcons/Worker
|
UnitIcons/Worker
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 653, 214
|
xy: 755, 214
|
||||||
size: 100, 100
|
size: 100, 100
|
||||||
orig: 100, 100
|
orig: 100, 100
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -2540,105 +2547,105 @@ UnitPromotionIcons/Bombardment_I_(Civ5)
|
|||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Charge_(Civ5)
|
UnitPromotionIcons/Charge_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1323, 294
|
xy: 1321, 294
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Coastal_Raider_III_(Civ5)
|
UnitPromotionIcons/Coastal_Raider_III_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1345, 294
|
xy: 2015, 1822
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Coastal_Raider_II_(Civ5)
|
UnitPromotionIcons/Coastal_Raider_II_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 2015, 1822
|
xy: 1966, 942
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Coastal_Raider_I_(Civ5)
|
UnitPromotionIcons/Coastal_Raider_I_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1966, 942
|
xy: 852, 192
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Cover_II_(Civ5)
|
UnitPromotionIcons/Cover_II_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 748, 192
|
xy: 1531, 1952
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Cover_I_(Civ5)
|
UnitPromotionIcons/Cover_I_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1531, 1952
|
xy: 2018, 678
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Drill_III_(Civ5)
|
UnitPromotionIcons/Drill_III_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 2018, 678
|
xy: 1979, 576
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Drill_II_(Civ5)
|
UnitPromotionIcons/Drill_II_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1979, 576
|
xy: 1981, 1952
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Drill_I_(Civ5)
|
UnitPromotionIcons/Drill_I_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1981, 1952
|
xy: 2003, 1974
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Formation_II_(Civ5)
|
UnitPromotionIcons/Formation_II_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 2003, 1974
|
xy: 336, 5
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Formation_I_(Civ5)
|
UnitPromotionIcons/Formation_I_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 336, 5
|
xy: 358, 27
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Indirect_Fire_(Civ5)
|
UnitPromotionIcons/Indirect_Fire_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 358, 27
|
xy: 106, 24
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Logistics_(Civ5)
|
UnitPromotionIcons/Logistics_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 106, 24
|
xy: 106, 2
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/March_(Civ5)
|
UnitPromotionIcons/March_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 106, 2
|
xy: 1343, 294
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Mobility_(Civ5)
|
UnitPromotionIcons/Mobility_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1323, 272
|
xy: 1321, 272
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -2659,14 +2666,14 @@ UnitPromotionIcons/Scouting_III_(Civ5)
|
|||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Scouting_II_(Civ5)
|
UnitPromotionIcons/Scouting_II_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 748, 170
|
xy: 852, 170
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Scouting_I_(Civ5)
|
UnitPromotionIcons/Scouting_I_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 770, 192
|
xy: 874, 192
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
@ -2708,49 +2715,49 @@ UnitPromotionIcons/Siege_(Civ5)
|
|||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Targeting_III_(Civ5)
|
UnitPromotionIcons/Targeting_III_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1323, 250
|
xy: 1321, 250
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Targeting_II_(Civ5)
|
UnitPromotionIcons/Targeting_II_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1345, 272
|
xy: 1343, 272
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Targeting_I_(Civ5)
|
UnitPromotionIcons/Targeting_I_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 1367, 293
|
xy: 2015, 1778
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Volley_(Civ5)
|
UnitPromotionIcons/Volley_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 2015, 1778
|
xy: 852, 148
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Wolfpack_III_(Civ5)
|
UnitPromotionIcons/Wolfpack_III_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 748, 148
|
xy: 874, 170
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Wolfpack_II_(Civ5)
|
UnitPromotionIcons/Wolfpack_II_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 770, 170
|
xy: 896, 192
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
index: -1
|
index: -1
|
||||||
UnitPromotionIcons/Wolfpack_I_(Civ5)
|
UnitPromotionIcons/Wolfpack_I_(Civ5)
|
||||||
rotate: false
|
rotate: false
|
||||||
xy: 792, 192
|
xy: 2018, 634
|
||||||
size: 20, 20
|
size: 20, 20
|
||||||
orig: 20, 20
|
orig: 20, 20
|
||||||
offset: 0, 0
|
offset: 0, 0
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 878 KiB After Width: | Height: | Size: 885 KiB |
@ -319,6 +319,36 @@
|
|||||||
"Portland","St. Louis","Miami","Buffalo","Detroit","New Orleans","Baltimore","Denver","Cincinnati","Dallas","Memphis",
|
"Portland","St. Louis","Miami","Buffalo","Detroit","New Orleans","Baltimore","Denver","Cincinnati","Dallas","Memphis",
|
||||||
"Cleveland","Kansas City","San Diego","Richmond","Las Vegas","Phoenix","Albuquerque","Minneapolis","Pittsburgh"]
|
"Cleveland","Kansas City","San Diego","Richmond","Las Vegas","Phoenix","Albuquerque","Minneapolis","Pittsburgh"]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name:"Japan",
|
||||||
|
leaderName:"Oda Nobunaga",
|
||||||
|
|
||||||
|
startIntroPart1: "Blessings upon you, noble Oda Nobunaga, ruler of Japan, the land of the Rising Sun! May you long walk among its flowering blossoms. The Japanese are an island people, proud and pious with a rich culture of arts and letters. Your civilization stretches back thousands of years, years of bloody warfare, expansion and isolation, great wealth and great poverty. In addition to their prowess on the frield of battle, your people are also immensely industious, and their technological innovation and mighty factories are the envy of lesser people everywhere."
|
||||||
|
startIntroPart2: "Legendary damiyo, will you grab the reins of destiny? Will you bring your family and people the honor and glory they deserve? Will you once again pick up the sword and march to triumph? Will you build a civilization that stands the test of time?"
|
||||||
|
|
||||||
|
declaringWar:"I hereby inform you of our intention to wipe out your civilization from this world."
|
||||||
|
attacked:"Pitiful fool! Now we shall destroy you!"
|
||||||
|
defeated:"You were much wiser than I thought."
|
||||||
|
introduction:"We hope for a fair and just relationship with you, who are renowned for military bravery."
|
||||||
|
|
||||||
|
neutralHello:"Hello."
|
||||||
|
neutralLetsHearIt:["Go on.","Proceed.","I'm listening."]
|
||||||
|
neutralNo:["Sorry.","No.","Maybe another time."]
|
||||||
|
neutralYes:["Very well.","Agreed.","Hai. (Yes)"]
|
||||||
|
|
||||||
|
hateHello:"Oh, it's you..."
|
||||||
|
hateLetsHearIt:["Let me hear it.","Go on","Proceed"]
|
||||||
|
hateNo:["Hya. (No)","Excuse me?","Maybe another time"]
|
||||||
|
hateYes:["I agree.","Oh... very well.","There is probably no other way."]
|
||||||
|
|
||||||
|
afterPeace:"It was an honor to fight you."
|
||||||
|
tradeRequest:"I would be grateful if you agreed on the following proposal."
|
||||||
|
|
||||||
|
mainColor:[215,225,225],
|
||||||
|
secondaryColor:[185,0,0],
|
||||||
|
unique: "Units fight as though they were at full strength even when damaged",
|
||||||
|
cities:["Kyoto","Osaka","Tokyo","Satsuma","Kagoshima","Nara","Nagoya","Izumo","Nagasaki","Yokohama","Shimonoseki","Matsuyama","Sapporo","Hakodate","Ise","Toyama","Fukushima","Suo","Bizen","Echizen","Izumi","Omi","Echigo","Kozuke","Sado","Kobe","Nagano","Hiroshima","Takayama","Akita","Fukuoka","Aomori","Kamakura","Kochi","Naha","Sendai","Gifu","Hakodate","Ota","Tottori"]
|
||||||
|
},
|
||||||
/*
|
/*
|
||||||
{
|
{
|
||||||
name:"Germany",
|
name:"Germany",
|
||||||
@ -447,36 +477,6 @@
|
|||||||
unique:"Melee units cost 50% less maintenance, and all units require 25% less experience to earn their next promotion.",
|
unique:"Melee units cost 50% less maintenance, and all units require 25% less experience to earn their next promotion.",
|
||||||
cities:["Ulundi","Umugungundlovu","Nobamba","Bulawayo","KwaDukuza","Nongoma","oNdini","Nodwengu","Ndonakusuka","Babanango","Khangela","KwaHlomendlini","Hlobane","eThekwini","Mlambongwenya","Eziqwaqweni","eMangweni","Isiphezi","Masotsheni","Mtunzini","Nyakamubi","Dumazulu","Hlatikulu","Mthonjaneni","Empangeni","Pongola","Tugela","Kwamashi","Ingwavuma","Hluhluwe","Matubatuba","Mhlahlandlela","Mthatha","Maseru","Lobamba","Qunu"]
|
cities:["Ulundi","Umugungundlovu","Nobamba","Bulawayo","KwaDukuza","Nongoma","oNdini","Nodwengu","Ndonakusuka","Babanango","Khangela","KwaHlomendlini","Hlobane","eThekwini","Mlambongwenya","Eziqwaqweni","eMangweni","Isiphezi","Masotsheni","Mtunzini","Nyakamubi","Dumazulu","Hlatikulu","Mthonjaneni","Empangeni","Pongola","Tugela","Kwamashi","Ingwavuma","Hluhluwe","Matubatuba","Mhlahlandlela","Mthatha","Maseru","Lobamba","Qunu"]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name:"Japan",
|
|
||||||
leaderName:"Oda Nobunaga",
|
|
||||||
|
|
||||||
startIntroPart1: "Blessings upon you, noble Oda Nobunaga, ruler of Japan, the land of the Rising Sun! May you long walk among its flowering blossoms. The Japanese are an island people, proud and pious with a rich culture of arts and letters. Your civilization stretches back thousands of years, years of bloody warfare, expansion and isolation, great wealth and great poverty. In addition to their prowess on the frield of battle, your people are also immensely industious, and their technological innovation and mighty factories are the envy of lesser people everywhere."
|
|
||||||
startIntroPart2: "Legendary damiyo, will you grab the reins of destiny? Will you bring your family and people the honor and glory they deserve? Will you once again pick up the sword and march to triumph? Will you build a civilization that stands the test of time?"
|
|
||||||
|
|
||||||
declaringWar:"I hereby inform you of our intention to wipe out your civilization from this world."
|
|
||||||
attacked:"Pitiful fool! Now we shall destroy you!"
|
|
||||||
defeated:"You were much wiser than I thought."
|
|
||||||
introduction:"We hope for a fair and just relationship with you, who are renowned for military bravery."
|
|
||||||
|
|
||||||
neutralHello:"Hello."
|
|
||||||
neutralLetsHearIt:["Go on.","Proceed.","I'm listening."]
|
|
||||||
neutralNo:["Sorry.","No.","Maybe another time."]
|
|
||||||
neutralYes:["Very well.","Agreed.","Hai. (Yes)"]
|
|
||||||
|
|
||||||
hateHello:"Oh, it's you..."
|
|
||||||
hateLetsHearIt:["Let me hear it.","Go on","Proceed"]
|
|
||||||
hateNo:["Hya. (No)","Excuse me?","Maybe another time"]
|
|
||||||
hateYes:["I agree.","Oh... very well.","There is probably no other way."]
|
|
||||||
|
|
||||||
afterPeace:"It was an honor to fight you."
|
|
||||||
tradeRequest:"I would be grateful if you agreed on the following proposal."
|
|
||||||
|
|
||||||
mainColor:[255,255,255],
|
|
||||||
secondaryColor:[255,0,0],
|
|
||||||
unique:"Units fight as though they were at full strength even when damaged. You gain +1 Culture from each Fishing Boat, and +2 Culture from each Atoll.",
|
|
||||||
cities:["Kyoto","Osaka","Tokyo","Satsuma","Kagoshima","Nara","Nagoya","Izumo","Nagasaki","Yokohama","Shimonoseki","Matsuyama","Sapporo","Hakodate","Ise","Toyama","Fukushima","Suo","Bizen","Echizen","Izumi","Omi","Echigo","Kozuke","Sado","Kobe","Nagano","Hiroshima","Takayama","Akita","Fukuoka","Aomori","Kamakura","Kochi","Naha","Sendai","Gifu","Hakodate","Ota","Tottori"]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name:"Incan",
|
name:"Incan",
|
||||||
leaderName:"Pachacuti",
|
leaderName:"Pachacuti",
|
||||||
|
@ -3872,6 +3872,7 @@
|
|||||||
French:"Arabie"
|
French:"Arabie"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
"America":{
|
"America":{
|
||||||
Italian:"Stati Uniti"
|
Italian:"Stati Uniti"
|
||||||
Romanian:"Statele Unite"
|
Romanian:"Statele Unite"
|
||||||
@ -3888,9 +3889,15 @@
|
|||||||
German:"Alle militärischen Landeinheiten haben +1 Sicht; 50% niedrigerer Preis beim Kauf von Feldern"
|
German:"Alle militärischen Landeinheiten haben +1 Sicht; 50% niedrigerer Preis beim Kauf von Feldern"
|
||||||
French:"Toutes les unités terrestres ont +1 porté de vision, les cases coutent 50% de leurs prix à l'achat"
|
French:"Toutes les unités terrestres ont +1 porté de vision, les cases coutent 50% de leurs prix à l'achat"
|
||||||
}
|
}
|
||||||
"Uniques:":{
|
|
||||||
|
"Japan":{}
|
||||||
|
"Units fight as though they were at full strength even when damaged":{}
|
||||||
|
|
||||||
|
"Uniques":{ // unit uniques, displayed on the new game screen when choosing a civ
|
||||||
Italian:"Abilità unica"
|
Italian:"Abilità unica"
|
||||||
}
|
}
|
||||||
|
"Promotions":{}
|
||||||
|
|
||||||
"units in rough terrain:":{
|
"units in rough terrain:":{
|
||||||
Italian:"unità in terreno accidentato"
|
Italian:"unità in terreno accidentato"
|
||||||
}
|
}
|
||||||
@ -7476,7 +7483,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
" OR ":{// as in "Requires Accuracy I OR Barrage I
|
" OR ":{// as in "Requires Accuracy I OR Barrage I
|
||||||
Italian:"O"
|
Italian:" O "
|
||||||
}
|
}
|
||||||
|
|
||||||
"Accuracy I":{
|
"Accuracy I":{
|
||||||
|
@ -226,7 +226,7 @@
|
|||||||
{
|
{
|
||||||
name:"Longbowman",
|
name:"Longbowman",
|
||||||
unitType:"Ranged",
|
unitType:"Ranged",
|
||||||
range:3,
|
range:2,
|
||||||
movement:2,
|
movement:2,
|
||||||
strength:13,
|
strength:13,
|
||||||
rangedStrength:18,
|
rangedStrength:18,
|
||||||
@ -236,6 +236,7 @@
|
|||||||
requiredTech:"Machinery",
|
requiredTech:"Machinery",
|
||||||
upgradesTo:"Gatling Gun",
|
upgradesTo:"Gatling Gun",
|
||||||
obsoleteTech:"Industrialization",
|
obsoleteTech:"Industrialization",
|
||||||
|
promotions:["Range"],
|
||||||
hurryCostModifier:20,
|
hurryCostModifier:20,
|
||||||
attackSound:"arrow"
|
attackSound:"arrow"
|
||||||
},
|
},
|
||||||
@ -266,6 +267,23 @@
|
|||||||
hurryCostModifier:20,
|
hurryCostModifier:20,
|
||||||
attackSound:"metalhit"
|
attackSound:"metalhit"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name:"Samurai",
|
||||||
|
replaces:"Longswordsman",
|
||||||
|
uniqueTo:"Japan",
|
||||||
|
unitType:"Melee",
|
||||||
|
movement:2,
|
||||||
|
strength:21,
|
||||||
|
cost: 120,
|
||||||
|
requiredTech:"Steel",
|
||||||
|
upgradesTo:"Musketman",
|
||||||
|
obsoleteTech:"Gunpowder",
|
||||||
|
requiredResource:"Iron",
|
||||||
|
uniques:["Combat very likely to create Great Generals"]
|
||||||
|
promotions:["Shock I"]
|
||||||
|
hurryCostModifier:20,
|
||||||
|
attackSound:"metalhit"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name:"Pikeman",
|
name:"Pikeman",
|
||||||
unitType:"Melee",
|
unitType:"Melee",
|
||||||
@ -390,7 +408,8 @@
|
|||||||
requiredTech:"Gunpowder",
|
requiredTech:"Gunpowder",
|
||||||
upgradesTo:"Rifleman"
|
upgradesTo:"Rifleman"
|
||||||
obsoleteTech:"Rifling",
|
obsoleteTech:"Rifling",
|
||||||
uniques:["Bonus vs units in rough terrain 15%","Ignores terrain cost"]
|
uniques:["Ignores terrain cost"]
|
||||||
|
promotions:["Drill I"],
|
||||||
hurryCostModifier:20,
|
hurryCostModifier:20,
|
||||||
attackSound:"shot"
|
attackSound:"shot"
|
||||||
},
|
},
|
||||||
|
@ -20,7 +20,7 @@ class UnCivGame : Game() {
|
|||||||
val viewEntireMapForDebug = false
|
val viewEntireMapForDebug = false
|
||||||
|
|
||||||
// For when you need to test something in an advanced game and don't have time to faff around
|
// For when you need to test something in an advanced game and don't have time to faff around
|
||||||
val superchargedForDebug = false
|
val superchargedForDebug = true
|
||||||
|
|
||||||
lateinit var worldScreen: WorldScreen
|
lateinit var worldScreen: WorldScreen
|
||||||
|
|
||||||
|
@ -124,8 +124,8 @@ class UnitAutomation{
|
|||||||
|
|
||||||
val tileCombatant = Battle(combatant.getCivInfo().gameInfo).getMapCombatantOfTile(tile)
|
val tileCombatant = Battle(combatant.getCivInfo().gameInfo).getMapCombatantOfTile(tile)
|
||||||
if(tileCombatant==null) return false
|
if(tileCombatant==null) return false
|
||||||
if(tileCombatant.getCivilization()==combatant.getCivInfo() ) return false
|
if(tileCombatant.getCivInfo()==combatant.getCivInfo() ) return false
|
||||||
if(!combatant.getCivInfo().isAtWarWith(tileCombatant.getCivilization())) return false
|
if(!combatant.getCivInfo().isAtWarWith(tileCombatant.getCivInfo())) return false
|
||||||
|
|
||||||
//only submarine and destroyer can attack submarine
|
//only submarine and destroyer can attack submarine
|
||||||
//garisoned submarine can be attacked by anyone, or the city will be in invincible
|
//garisoned submarine can be attacked by anyone, or the city will be in invincible
|
||||||
|
@ -47,7 +47,7 @@ class Battle(val gameInfo:GameInfo) {
|
|||||||
|
|
||||||
private fun postBattleAction(attacker: ICombatant, defender: ICombatant, attackedTile:TileInfo){
|
private fun postBattleAction(attacker: ICombatant, defender: ICombatant, attackedTile:TileInfo){
|
||||||
|
|
||||||
if(attacker.getCivilization()!=defender.getCivilization()) { // If what happened was that a civilian unit was captures, that's dealt with in the CaptureCilvilianUnit function
|
if(attacker.getCivInfo()!=defender.getCivInfo()) { // If what happened was that a civilian unit was captures, that's dealt with in the CaptureCilvilianUnit function
|
||||||
val whatHappenedString =
|
val whatHappenedString =
|
||||||
if (attacker !is CityCombatant && attacker.isDefeated()) " {was destroyed while attacking}"
|
if (attacker !is CityCombatant && attacker.isDefeated()) " {was destroyed while attacking}"
|
||||||
else " has " + (if (defender.isDefeated()) "destroyed" else "attacked")
|
else " has " + (if (defender.isDefeated()) "destroyed" else "attacked")
|
||||||
@ -58,7 +58,7 @@ class Battle(val gameInfo:GameInfo) {
|
|||||||
if (defender.getUnitType() == UnitType.City) " [" + defender.getName()+"]"
|
if (defender.getUnitType() == UnitType.City) " [" + defender.getName()+"]"
|
||||||
else " our [" + defender.getName()+"]"
|
else " our [" + defender.getName()+"]"
|
||||||
val notificationString = attackerString + whatHappenedString + defenderString
|
val notificationString = attackerString + whatHappenedString + defenderString
|
||||||
defender.getCivilization().addNotification(notificationString, attackedTile.position, Color.RED)
|
defender.getCivInfo().addNotification(notificationString, attackedTile.position, Color.RED)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -71,11 +71,11 @@ class Battle(val gameInfo:GameInfo) {
|
|||||||
|
|
||||||
// we're a melee unit and we destroyed\captured an enemy unit
|
// we're a melee unit and we destroyed\captured an enemy unit
|
||||||
else if (attacker.isMelee()
|
else if (attacker.isMelee()
|
||||||
&& (defender.isDefeated() || defender.getCivilization()==attacker.getCivilization() )
|
&& (defender.isDefeated() || defender.getCivInfo()==attacker.getCivInfo() )
|
||||||
// This is so that if we attack e.g. a barbarian in enemy territory that we can't enter, we won't enter it
|
// This is so that if we attack e.g. a barbarian in enemy territory that we can't enter, we won't enter it
|
||||||
&& (attacker as MapUnitCombatant).unit.canMoveTo(attackedTile)) {
|
&& (attacker as MapUnitCombatant).unit.canMoveTo(attackedTile)) {
|
||||||
// we destroyed an enemy military unit and there was a civilian unit in the same tile as well
|
// we destroyed an enemy military unit and there was a civilian unit in the same tile as well
|
||||||
if(attackedTile.civilianUnit!=null && attackedTile.civilianUnit!!.civInfo != attacker.getCivilization())
|
if(attackedTile.civilianUnit!=null && attackedTile.civilianUnit!!.civInfo != attacker.getCivInfo())
|
||||||
captureCivilianUnit(attacker,MapUnitCombatant(attackedTile.civilianUnit!!))
|
captureCivilianUnit(attacker,MapUnitCombatant(attackedTile.civilianUnit!!))
|
||||||
attacker.unit.moveToTile(attackedTile)
|
attacker.unit.moveToTile(attackedTile)
|
||||||
}
|
}
|
||||||
@ -98,16 +98,19 @@ class Battle(val gameInfo:GameInfo) {
|
|||||||
// XP!
|
// XP!
|
||||||
fun addXp(thisCombatant:ICombatant, amount:Int, otherCombatant:ICombatant){
|
fun addXp(thisCombatant:ICombatant, amount:Int, otherCombatant:ICombatant){
|
||||||
if(thisCombatant !is MapUnitCombatant) return
|
if(thisCombatant !is MapUnitCombatant) return
|
||||||
if(thisCombatant.unit.promotions.totalXpProduced() >= 30 && otherCombatant.getCivilization().isBarbarianCivilization())
|
if(thisCombatant.unit.promotions.totalXpProduced() >= 30 && otherCombatant.getCivInfo().isBarbarianCivilization())
|
||||||
return
|
return
|
||||||
var amountToAdd = amount
|
var amountToAdd = amount
|
||||||
if(thisCombatant.getCivilization().policies.isAdopted("Military Tradition")) amountToAdd = (amountToAdd * 1.5f).toInt()
|
if(thisCombatant.getCivInfo().policies.isAdopted("Military Tradition")) amountToAdd = (amountToAdd * 1.5f).toInt()
|
||||||
thisCombatant.unit.promotions.XP += amountToAdd
|
thisCombatant.unit.promotions.XP += amountToAdd
|
||||||
|
|
||||||
if(thisCombatant.getCivilization().getNation().unique
|
if(thisCombatant.getCivInfo().getNation().unique
|
||||||
== "Great general provides double combat bonus, and spawns 50% faster")
|
== "Great general provides double combat bonus, and spawns 50% faster")
|
||||||
amountToAdd = (amountToAdd * 1.5f).toInt()
|
amountToAdd = (amountToAdd * 1.5f).toInt()
|
||||||
thisCombatant.getCivilization().greatPeople.greatGeneralPoints += amountToAdd
|
if(thisCombatant.unit.hasUnique("Combat very likely to create Great Generals"))
|
||||||
|
amountToAdd *= 2
|
||||||
|
|
||||||
|
thisCombatant.getCivInfo().greatPeople.greatGeneralPoints += amountToAdd
|
||||||
}
|
}
|
||||||
|
|
||||||
if(attacker.isMelee()){
|
if(attacker.isMelee()){
|
||||||
@ -123,8 +126,8 @@ class Battle(val gameInfo:GameInfo) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(defender.isDefeated() && defender is MapUnitCombatant && !defender.getUnitType().isCivilian()
|
if(defender.isDefeated() && defender is MapUnitCombatant && !defender.getUnitType().isCivilian()
|
||||||
&& attacker.getCivilization().policies.isAdopted("Honor Complete"))
|
&& attacker.getCivInfo().policies.isAdopted("Honor Complete"))
|
||||||
attacker.getCivilization().gold += defender.unit.baseUnit.getGoldCost(hashSetOf()) / 10
|
attacker.getCivInfo().gold += defender.unit.baseUnit.getGoldCost(hashSetOf()) / 10
|
||||||
|
|
||||||
if(attacker is MapUnitCombatant && attacker.unit.action!=null && attacker.unit.action!!.startsWith("moveTo"))
|
if(attacker is MapUnitCombatant && attacker.unit.action!=null && attacker.unit.action!!.startsWith("moveTo"))
|
||||||
attacker.unit.action=null
|
attacker.unit.action=null
|
||||||
@ -132,14 +135,14 @@ class Battle(val gameInfo:GameInfo) {
|
|||||||
|
|
||||||
private fun conquerCity(city: CityInfo, attacker: ICombatant) {
|
private fun conquerCity(city: CityInfo, attacker: ICombatant) {
|
||||||
val enemyCiv = city.civInfo
|
val enemyCiv = city.civInfo
|
||||||
attacker.getCivilization().addNotification("We have conquered the city of [${city.name}]!",city.location, Color.RED)
|
attacker.getCivInfo().addNotification("We have conquered the city of [${city.name}]!",city.location, Color.RED)
|
||||||
|
|
||||||
city.getCenterTile().apply {
|
city.getCenterTile().apply {
|
||||||
if(militaryUnit!=null) militaryUnit!!.destroy()
|
if(militaryUnit!=null) militaryUnit!!.destroy()
|
||||||
if(civilianUnit!=null) captureCivilianUnit(attacker,MapUnitCombatant(civilianUnit!!))
|
if(civilianUnit!=null) captureCivilianUnit(attacker,MapUnitCombatant(civilianUnit!!))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attacker.getCivilization().isBarbarianCivilization()){
|
if (attacker.getCivInfo().isBarbarianCivilization()){
|
||||||
city.destroyCity()
|
city.destroyCity()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -149,12 +152,12 @@ class Battle(val gameInfo:GameInfo) {
|
|||||||
|
|
||||||
city.health = city.getMaxHealth() / 2 // I think that cities recover to half health when conquered?
|
city.health = city.getMaxHealth() / 2 // I think that cities recover to half health when conquered?
|
||||||
|
|
||||||
if(!attacker.getCivilization().policies.isAdopted("Police State")) {
|
if(!attacker.getCivInfo().policies.isAdopted("Police State")) {
|
||||||
city.expansion.cultureStored = 0
|
city.expansion.cultureStored = 0
|
||||||
city.expansion.reset()
|
city.expansion.reset()
|
||||||
}
|
}
|
||||||
|
|
||||||
city.moveToCiv(attacker.getCivilization())
|
city.moveToCiv(attacker.getCivInfo())
|
||||||
city.resistanceCounter = city.population.population
|
city.resistanceCounter = city.population.population
|
||||||
city.cityStats.update()
|
city.cityStats.update()
|
||||||
}
|
}
|
||||||
@ -183,7 +186,7 @@ class Battle(val gameInfo:GameInfo) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun captureCivilianUnit(attacker: ICombatant, defender: ICombatant){
|
fun captureCivilianUnit(attacker: ICombatant, defender: ICombatant){
|
||||||
if(attacker.getCivilization().isBarbarianCivilization()){
|
if(attacker.getCivInfo().isBarbarianCivilization()){
|
||||||
defender.takeDamage(100)
|
defender.takeDamage(100)
|
||||||
return
|
return
|
||||||
} // barbarians don't capture civilians!
|
} // barbarians don't capture civilians!
|
||||||
@ -192,6 +195,6 @@ class Battle(val gameInfo:GameInfo) {
|
|||||||
defender.getTile().position, Color.RED)
|
defender.getTile().position, Color.RED)
|
||||||
|
|
||||||
capturedUnit.civInfo.removeUnit(capturedUnit)
|
capturedUnit.civInfo.removeUnit(capturedUnit)
|
||||||
capturedUnit.assignOwner(attacker.getCivilization())
|
capturedUnit.assignOwner(attacker.getCivInfo())
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -46,19 +46,19 @@ class BattleDamage{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//https://www.carlsguides.com/strategy/civilization5/war/combatbonuses.php
|
//https://www.carlsguides.com/strategy/civilization5/war/combatbonuses.php
|
||||||
if (combatant.getCivilization().happiness < 0)
|
if (combatant.getCivInfo().happiness < 0)
|
||||||
modifiers["Unhappiness"] = max(0.02f * combatant.getCivilization().happiness,-0.9f) // otherwise it could exceed -100% and start healing enemy units...
|
modifiers["Unhappiness"] = max(0.02f * combatant.getCivInfo().happiness,-0.9f) // otherwise it could exceed -100% and start healing enemy units...
|
||||||
|
|
||||||
if(combatant.getCivilization().policies.isAdopted("Populism"))
|
if(combatant.getCivInfo().policies.isAdopted("Populism"))
|
||||||
modifiers["Populism"] = 0.25f
|
modifiers["Populism"] = 0.25f
|
||||||
|
|
||||||
if(combatant.getCivilization().policies.isAdopted("Discipline") && combatant.isMelee()
|
if(combatant.getCivInfo().policies.isAdopted("Discipline") && combatant.isMelee()
|
||||||
&& combatant.getTile().neighbors.flatMap { it.getUnits() }
|
&& combatant.getTile().neighbors.flatMap { it.getUnits() }
|
||||||
.any { it.civInfo==combatant.getCivilization() && !it.type.isCivilian()})
|
.any { it.civInfo==combatant.getCivInfo() && !it.type.isCivilian()})
|
||||||
modifiers["Discipline"] = 0.15f
|
modifiers["Discipline"] = 0.15f
|
||||||
|
|
||||||
val requiredResource = combatant.unit.baseUnit.requiredResource
|
val requiredResource = combatant.unit.baseUnit.requiredResource
|
||||||
if(requiredResource!=null && combatant.getCivilization().getCivResourcesByName()[requiredResource]!!<0){
|
if(requiredResource!=null && combatant.getCivInfo().getCivResourcesByName()[requiredResource]!!<0){
|
||||||
modifiers["Missing resource"]=-0.25f
|
modifiers["Missing resource"]=-0.25f
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ class BattleDamage{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (combatant.getCivilization().policies.isAdopted("Honor") && enemy.getCivilization().isBarbarianCivilization())
|
if (combatant.getCivInfo().policies.isAdopted("Honor") && enemy.getCivInfo().isBarbarianCivilization())
|
||||||
modifiers["vs Barbarians"] = 0.25f
|
modifiers["vs Barbarians"] = 0.25f
|
||||||
|
|
||||||
return modifiers
|
return modifiers
|
||||||
@ -119,7 +119,7 @@ class BattleDamage{
|
|||||||
if (attacker.isMelee()) {
|
if (attacker.isMelee()) {
|
||||||
val numberOfAttackersSurroundingDefender = defender.getTile().neighbors.count {
|
val numberOfAttackersSurroundingDefender = defender.getTile().neighbors.count {
|
||||||
it.militaryUnit != null
|
it.militaryUnit != null
|
||||||
&& it.militaryUnit!!.owner == attacker.getCivilization().civName
|
&& it.militaryUnit!!.owner == attacker.getCivInfo().civName
|
||||||
&& MapUnitCombatant(it.militaryUnit!!).isMelee()
|
&& MapUnitCombatant(it.militaryUnit!!).isMelee()
|
||||||
}
|
}
|
||||||
if (numberOfAttackersSurroundingDefender > 1)
|
if (numberOfAttackersSurroundingDefender > 1)
|
||||||
@ -172,13 +172,15 @@ class BattleDamage{
|
|||||||
|
|
||||||
private fun modifiersToMultiplicationBonus(modifiers: HashMap<String, Float>): Float {
|
private fun modifiersToMultiplicationBonus(modifiers: HashMap<String, Float>): Float {
|
||||||
// modifiers are like 0.1 for a 10% bonus, -0.1 for a 10% loss
|
// modifiers are like 0.1 for a 10% bonus, -0.1 for a 10% loss
|
||||||
var modifier = 1f
|
var finalModifier = 1f
|
||||||
for (m in modifiers.values) modifier *= (1 + m)
|
for (modifierValue in modifiers.values) finalModifier *= (1 + modifierValue)
|
||||||
return modifier
|
return finalModifier
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getHealthDependantDamageRatio(combatant: ICombatant): Float {
|
private fun getHealthDependantDamageRatio(combatant: ICombatant): Float {
|
||||||
if (combatant.getUnitType() == UnitType.City) return 1f
|
if (combatant.getUnitType() == UnitType.City
|
||||||
|
|| combatant.getCivInfo().getNation().unique == "Units fight as though they were at full strength even when damaged")
|
||||||
|
return 1f
|
||||||
return 1/2f + combatant.getHealth()/200f // Each point of health reduces damage dealt by 0.5%
|
return 1/2f + combatant.getHealth()/200f // Each point of health reduces damage dealt by 0.5%
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,12 +12,11 @@ class CityCombatant(val city: CityInfo) : ICombatant {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getHealth(): Int = city.health
|
override fun getHealth(): Int = city.health
|
||||||
override fun getCivilization(): CivilizationInfo = city.civInfo
|
override fun getCivInfo(): CivilizationInfo = city.civInfo
|
||||||
override fun getTile(): TileInfo = city.getCenterTile()
|
override fun getTile(): TileInfo = city.getCenterTile()
|
||||||
override fun getName(): String = city.name
|
override fun getName(): String = city.name
|
||||||
override fun isDefeated(): Boolean = city.health==1
|
override fun isDefeated(): Boolean = city.health==1
|
||||||
override fun isInvisible(): Boolean = false
|
override fun isInvisible(): Boolean = false
|
||||||
override fun getCivInfo(): CivilizationInfo = city.civInfo
|
|
||||||
override fun canAttack(): Boolean = (!city.attackedThisTurn)
|
override fun canAttack(): Boolean = (!city.attackedThisTurn)
|
||||||
|
|
||||||
override fun takeDamage(damage: Int) {
|
override fun takeDamage(damage: Int) {
|
||||||
|
@ -13,10 +13,9 @@ interface ICombatant{
|
|||||||
fun getDefendingStrength(): Int
|
fun getDefendingStrength(): Int
|
||||||
fun takeDamage(damage:Int)
|
fun takeDamage(damage:Int)
|
||||||
fun isDefeated():Boolean
|
fun isDefeated():Boolean
|
||||||
fun getCivilization(): CivilizationInfo
|
fun getCivInfo(): CivilizationInfo
|
||||||
fun getTile(): TileInfo
|
fun getTile(): TileInfo
|
||||||
fun isInvisible(): Boolean
|
fun isInvisible(): Boolean
|
||||||
fun getCivInfo(): CivilizationInfo
|
|
||||||
fun canAttack(): Boolean
|
fun canAttack(): Boolean
|
||||||
|
|
||||||
fun isMelee(): Boolean {
|
fun isMelee(): Boolean {
|
||||||
|
@ -8,12 +8,11 @@ import com.unciv.models.gamebasics.unit.UnitType
|
|||||||
class MapUnitCombatant(val unit: MapUnit) : ICombatant {
|
class MapUnitCombatant(val unit: MapUnit) : ICombatant {
|
||||||
override fun getHealth(): Int = unit.health
|
override fun getHealth(): Int = unit.health
|
||||||
override fun getMaxHealth() = 100
|
override fun getMaxHealth() = 100
|
||||||
override fun getCivilization(): CivilizationInfo = unit.civInfo
|
override fun getCivInfo(): CivilizationInfo = unit.civInfo
|
||||||
override fun getTile(): TileInfo = unit.getTile()
|
override fun getTile(): TileInfo = unit.getTile()
|
||||||
override fun getName(): String = unit.name
|
override fun getName(): String = unit.name
|
||||||
override fun isDefeated(): Boolean = unit.health <= 0
|
override fun isDefeated(): Boolean = unit.health <= 0
|
||||||
override fun isInvisible(): Boolean = unit.isInvisible()
|
override fun isInvisible(): Boolean = unit.isInvisible()
|
||||||
override fun getCivInfo(): CivilizationInfo = unit.civInfo
|
|
||||||
override fun canAttack(): Boolean = unit.canAttack()
|
override fun canAttack(): Boolean = unit.canAttack()
|
||||||
|
|
||||||
override fun takeDamage(damage: Int) {
|
override fun takeDamage(damage: Int) {
|
||||||
|
@ -86,6 +86,10 @@ class TileMap {
|
|||||||
// only once we know the unit can be placed do we add it to the civ's unit list
|
// only once we know the unit can be placed do we add it to the civ's unit list
|
||||||
unit.putInTile(unitToPlaceTile)
|
unit.putInTile(unitToPlaceTile)
|
||||||
unit.currentMovement = unit.getMaxMovement().toFloat()
|
unit.currentMovement = unit.getMaxMovement().toFloat()
|
||||||
|
|
||||||
|
// Only once we add the unit to the civ we can activate addPromotion, because it will try to update civ viewable tiles
|
||||||
|
for(promotion in unit.baseUnit.promotions)
|
||||||
|
unit.promotions.addPromotion(promotion,true)
|
||||||
}
|
}
|
||||||
else civInfo.removeUnit(unit) // since we added it to the civ units in the previous assignOwner
|
else civInfo.removeUnit(unit) // since we added it to the civ units in the previous assignOwner
|
||||||
|
|
||||||
|
@ -11,6 +11,9 @@ import com.unciv.models.gamebasics.tr
|
|||||||
import com.unciv.models.stats.INamed
|
import com.unciv.models.stats.INamed
|
||||||
|
|
||||||
// This is BaseUnit because Unit is already a base Kotlin class and to avoid mixing the two up
|
// This is BaseUnit because Unit is already a base Kotlin class and to avoid mixing the two up
|
||||||
|
|
||||||
|
/** This is the basic info of the units, as specified in Units.json,
|
||||||
|
in contrast to MapUnit, which is a specific unit of a certain type that appears on the map */
|
||||||
class BaseUnit : INamed, IConstruction, ICivilopedia {
|
class BaseUnit : INamed, IConstruction, ICivilopedia {
|
||||||
|
|
||||||
override lateinit var name: String
|
override lateinit var name: String
|
||||||
@ -25,6 +28,7 @@ class BaseUnit : INamed, IConstruction, ICivilopedia {
|
|||||||
var requiredTech:String? = null
|
var requiredTech:String? = null
|
||||||
var requiredResource:String? = null
|
var requiredResource:String? = null
|
||||||
var uniques =HashSet<String>()
|
var uniques =HashSet<String>()
|
||||||
|
var promotions =HashSet<String>()
|
||||||
var obsoleteTech:String?=null
|
var obsoleteTech:String?=null
|
||||||
var upgradesTo:String? = null
|
var upgradesTo:String? = null
|
||||||
var replaces:String?=null
|
var replaces:String?=null
|
||||||
@ -40,9 +44,10 @@ class BaseUnit : INamed, IConstruction, ICivilopedia {
|
|||||||
|
|
||||||
fun getShortDescription(): String {
|
fun getShortDescription(): String {
|
||||||
val infoList= mutableListOf<String>()
|
val infoList= mutableListOf<String>()
|
||||||
for(unique in uniques){
|
for(unique in uniques)
|
||||||
infoList+=Translations.translateBonusOrPenalty(unique)
|
infoList+=Translations.translateBonusOrPenalty(unique)
|
||||||
}
|
for(promotion in promotions)
|
||||||
|
infoList += promotion.tr()
|
||||||
if(strength!=0) infoList += "{Strength}: $strength".tr()
|
if(strength!=0) infoList += "{Strength}: $strength".tr()
|
||||||
if(rangedStrength!=0) infoList += "{Ranged strength}: $rangedStrength".tr()
|
if(rangedStrength!=0) infoList += "{Ranged strength}: $rangedStrength".tr()
|
||||||
if(movement!=2) infoList+="{Movement}: $movement".tr()
|
if(movement!=2) infoList+="{Movement}: $movement".tr()
|
||||||
@ -67,9 +72,12 @@ class BaseUnit : INamed, IConstruction, ICivilopedia {
|
|||||||
sb.appendln()
|
sb.appendln()
|
||||||
}
|
}
|
||||||
|
|
||||||
for(unique in uniques) {
|
for(unique in uniques)
|
||||||
sb.appendln(unique.tr())
|
sb.appendln(unique.tr())
|
||||||
}
|
|
||||||
|
for(promotion in promotions)
|
||||||
|
sb.appendln(promotion.tr())
|
||||||
|
|
||||||
sb.appendln("{Movement}: $movement".tr())
|
sb.appendln("{Movement}: $movement".tr())
|
||||||
return sb.toString()
|
return sb.toString()
|
||||||
}
|
}
|
||||||
@ -77,7 +85,9 @@ class BaseUnit : INamed, IConstruction, ICivilopedia {
|
|||||||
fun getMapUnit(): MapUnit {
|
fun getMapUnit(): MapUnit {
|
||||||
val unit = MapUnit()
|
val unit = MapUnit()
|
||||||
unit.name = name
|
unit.name = name
|
||||||
|
|
||||||
unit.setTransients() // must be after setting name because it sets the baseUnit according to the name
|
unit.setTransients() // must be after setting name because it sets the baseUnit according to the name
|
||||||
|
|
||||||
return unit
|
return unit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,10 +76,10 @@ class NationTable(val nation: Nation, val newGameParameters: GameParameters, ski
|
|||||||
textList+= " {Range} " + unit.range+ " vs " + originalUnit.range
|
textList+= " {Range} " + unit.range+ " vs " + originalUnit.range
|
||||||
if (unit.movement!= originalUnit.movement)
|
if (unit.movement!= originalUnit.movement)
|
||||||
textList+= " {Movement} " + unit.movement+ " vs " + originalUnit.movement
|
textList+= " {Movement} " + unit.movement+ " vs " + originalUnit.movement
|
||||||
val newUniques = unit.uniques.filterNot { it in originalUnit.uniques }
|
for(unique in unit.uniques.filterNot { it in originalUnit.uniques })
|
||||||
if(newUniques.isNotEmpty())
|
textList += " "+Translations.translateBonusOrPenalty(unique)
|
||||||
textList+=" {Uniques}: "+newUniques.joinToString{ Translations.translateBonusOrPenalty(it) }
|
for(promotions in unit.promotions.filter { it !in originalUnit.promotions})
|
||||||
textList+=""
|
textList += " "+promotions.tr()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -49,9 +49,9 @@ class BattleTable(val worldScreen: WorldScreen): Table() {
|
|||||||
val defender: ICombatant? = Battle(worldScreen.gameInfo).getMapCombatantOfTile(selectedTile)
|
val defender: ICombatant? = Battle(worldScreen.gameInfo).getMapCombatantOfTile(selectedTile)
|
||||||
|
|
||||||
if(defender==null ||
|
if(defender==null ||
|
||||||
defender.getCivilization()==worldScreen.currentPlayerCiv
|
defender.getCivInfo()==worldScreen.currentPlayerCiv
|
||||||
|| !(UnCivGame.Current.viewEntireMapForDebug
|
|| !(UnCivGame.Current.viewEntireMapForDebug
|
||||||
|| attacker.getCivilization().exploredTiles.contains(selectedTile.position))) {
|
|| attacker.getCivInfo().exploredTiles.contains(selectedTile.position))) {
|
||||||
hide()
|
hide()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,11 @@ class UnitActions {
|
|||||||
val newunit = unit.civInfo.placeUnitNearTile(unitTile.position, upgradedUnit.name)
|
val newunit = unit.civInfo.placeUnitNearTile(unitTile.position, upgradedUnit.name)
|
||||||
newunit.health = unit.health
|
newunit.health = unit.health
|
||||||
newunit.promotions = unit.promotions
|
newunit.promotions = unit.promotions
|
||||||
|
|
||||||
|
for(promotion in unit.baseUnit.promotions)
|
||||||
|
if(promotion !in newunit.promotions.promotions)
|
||||||
|
newunit.promotions.addPromotion(promotion,true)
|
||||||
|
|
||||||
newunit.updateUniques()
|
newunit.updateUniques()
|
||||||
newunit.currentMovement = 0f
|
newunit.currentMovement = 0f
|
||||||
worldScreen.shouldUpdate = true
|
worldScreen.shouldUpdate = true
|
||||||
|
Loading…
x
Reference in New Issue
Block a user