Added Nuclear Submarines & Missile Cruisers, capable of transporting missiles (#4260)

* Implemented Nuclear Submarine and Missile Cruiser units

* Information Era -> Atomic Era; Future Era -> Information Era, conform G&K

* Fixed deprecated uniques still working

* Implemented requested changes
This commit is contained in:
Xander Lenstra 2021-06-26 21:47:27 +02:00 committed by GitHub
parent 30ac1dae1c
commit 1c079bcef3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 151 additions and 134 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -452,254 +452,268 @@ Minuteman
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Mobile SAM Missile Cruiser
rotate: false rotate: false
xy: 436, 112 xy: 436, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Modern Armor Mobile SAM
rotate: false rotate: false
xy: 544, 220 xy: 544, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Mohawk Warrior Modern Armor
rotate: false rotate: false
xy: 652, 334 xy: 652, 334
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Musketeer Mohawk Warrior
rotate: false rotate: false
xy: 760, 436 xy: 760, 436
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Musketeer
rotate: false
xy: 868, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Musketman Musketman
rotate: false rotate: false
xy: 868, 545 xy: 976, 653
size: 100, 99 size: 100, 99
orig: 100, 99 orig: 100, 99
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Naresuan's Elephant Naresuan's Elephant
rotate: false rotate: false
xy: 976, 652 xy: 1084, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Norwegian Ski Infantry Norwegian Ski Infantry
rotate: false rotate: false
xy: 1084, 760 xy: 1192, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Nuclear Missile Nuclear Missile
rotate: false
xy: 1192, 868
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Panzer
rotate: false rotate: false
xy: 436, 4 xy: 436, 4
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Paratrooper Nuclear Submarine
rotate: false rotate: false
xy: 544, 112 xy: 544, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Persian Immortal Panzer
rotate: false rotate: false
xy: 652, 226 xy: 652, 226
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Pikeman Paratrooper
rotate: false rotate: false
xy: 760, 328 xy: 760, 328
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Persian Immortal
rotate: false
xy: 868, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Pikeman
rotate: false
xy: 976, 545
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Rifleman Rifleman
rotate: false
xy: 868, 437
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Rocket Artillery
rotate: false
xy: 976, 544
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Samurai
rotate: false rotate: false
xy: 1084, 652 xy: 1084, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Scout Rocket Artillery
rotate: false rotate: false
xy: 1192, 760 xy: 1192, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Settler Samurai
rotate: false rotate: false
xy: 1300, 868 xy: 1300, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Ship of the Line Scout
rotate: false rotate: false
xy: 544, 4 xy: 544, 4
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Sipahi Settler
rotate: false rotate: false
xy: 652, 118 xy: 652, 118
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Slinger Ship of the Line
rotate: false rotate: false
xy: 760, 220 xy: 760, 220
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Sipahi
rotate: false
xy: 868, 328
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Slinger
rotate: false
xy: 976, 437
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Spearman Spearman
rotate: false
xy: 868, 329
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Stealth Bomber
rotate: false
xy: 976, 436
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Submarine
rotate: false rotate: false
xy: 1084, 544 xy: 1084, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Swordsman Stealth Bomber
rotate: false rotate: false
xy: 1192, 652 xy: 1192, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Tank Submarine
rotate: false rotate: false
xy: 1300, 760 xy: 1300, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Tercio Swordsman
rotate: false rotate: false
xy: 1408, 868 xy: 1408, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Trebuchet Tank
rotate: false rotate: false
xy: 652, 10 xy: 652, 10
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Triplane Tercio
rotate: false rotate: false
xy: 760, 112 xy: 760, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Trireme Trebuchet
rotate: false rotate: false
xy: 868, 220 xy: 868, 220
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Triplane
rotate: false
xy: 976, 329
size: 100, 100
orig: 100, 100
offset: 0, 0
index: -1
Trireme
rotate: false
xy: 1084, 435
size: 100, 101 size: 100, 101
orig: 100, 101 orig: 100, 101
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Turtle Ship Turtle Ship
rotate: false rotate: false
xy: 976, 328 xy: 1192, 544
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
War Chariot War Chariot
rotate: false rotate: false
xy: 1084, 436 xy: 1300, 652
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
War Elephant War Elephant
rotate: false rotate: false
xy: 1192, 544 xy: 1408, 760
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Warrior Warrior
rotate: false rotate: false
xy: 1300, 652 xy: 1516, 868
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Work Boats Work Boats
rotate: false rotate: false
xy: 1408, 760 xy: 868, 112
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Worker Worker
rotate: false rotate: false
xy: 1516, 868 xy: 976, 221
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0
index: -1 index: -1
Zero Zero
rotate: false rotate: false
xy: 868, 112 xy: 1084, 327
size: 100, 100 size: 100, 100
orig: 100, 100 orig: 100, 100
offset: 0, 0 offset: 0, 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 316 KiB

After

Width:  |  Height:  |  Size: 320 KiB

View File

@ -934,7 +934,7 @@
"quote": "'Come to me, all who labor and are heavy burdened, and I will give you rest.' - New Testament, Matthew 11:28" "quote": "'Come to me, all who labor and are heavy burdened, and I will give you rest.' - New Testament, Matthew 11:28"
}, },
// Information Era // Atomic Era
// Column 13 // Column 13
{ {
@ -998,7 +998,7 @@
"requiredTech": "Rocketry" "requiredTech": "Rocketry"
}, },
// Future Era // Information Era
// Column 15 // Column 15
{ {

View File

@ -482,7 +482,7 @@
}, },
{ {
"columnNumber": 13, "columnNumber": 13,
"era": "Information era", "era": "Atomic era",
"techCost": 5100, "techCost": 5100,
"buildingCost": 500, "buildingCost": 500,
"wonderCost": 1250, "wonderCost": 1250,
@ -515,7 +515,7 @@
}, },
{ {
"columnNumber": 14, "columnNumber": 14,
"era": "Information era", "era": "Atomic era",
"techCost": 6400, "techCost": 6400,
"buildingCost": 500, "buildingCost": 500,
"wonderCost": 1250, "wonderCost": 1250,
@ -548,7 +548,7 @@
}, },
{ {
"columnNumber": 15, "columnNumber": 15,
"era": "Future era", "era": "Information era",
"techCost": 7700, "techCost": 7700,
"buildingCost": 750, "buildingCost": 750,
"wonderCost": 1250, "wonderCost": 1250,
@ -595,7 +595,7 @@
{ {
"columnNumber": 16, "columnNumber": 16,
"era": "Future era", "era": "Information era",
"techCost": 8800, "techCost": 8800,
"buildingCost": 750, "buildingCost": 750,
"wonderCost": 1250, "wonderCost": 1250,

View File

@ -165,8 +165,7 @@
{ {
"name": "Academy", "name": "Academy",
"science": 8, "science": 8,
"uniques": ["Great Improvement", "[+2 Science] once [Scientific Theory] is discovered"] "uniques": ["Great Improvement", "[+2 Science] once [Scientific Theory] is discovered", "[+2 Science] once [Atomic Theory] is discovered"]
// in Gods & Kings academy will also have "[+2 Science] once [Atomic Theory] is discovered"
}, },
{ {
"name": "Landmark", "name": "Landmark",

View File

@ -250,19 +250,19 @@
}, },
{ {
"name": "Flight Deck I", "name": "Flight Deck I",
"effect": "Can carry 1 extra air unit", "effect": "Can carry [1] extra [Air] units",
"unitTypes": ["WaterAircraftCarrier"] "unitTypes": ["WaterAircraftCarrier"]
}, },
{ {
"name": "Flight Deck II", "name": "Flight Deck II",
"prerequisites": ["Flight Deck I"], "prerequisites": ["Flight Deck I"],
"effect": "Can carry 1 extra air unit", "effect": " Can carry [1] extra [Air] units",
"unitTypes": ["WaterAircraftCarrier"] "unitTypes": ["WaterAircraftCarrier"]
}, },
{ {
"name": "Flight Deck III", "name": "Flight Deck III",
"prerequisites": ["Flight Deck II"], "prerequisites": ["Flight Deck II"],
"effect": "Can carry 1 extra air unit", "effect": "Can carry [1] extra [Air] units",
"unitTypes": ["WaterAircraftCarrier"] "unitTypes": ["WaterAircraftCarrier"]
}, },

View File

@ -936,7 +936,7 @@
"rangedStrength": 60, "rangedStrength": 60,
"cost": 325, "cost": 325,
"requiredTech": "Refrigeration", "requiredTech": "Refrigeration",
// "upgradesTo": "Nuclear Submarine", "upgradesTo": "Nuclear Submarine",
"uniques": ["+[75]% Strength when attacking", "Invisible to others", "Can only attack water", "Can attack submarines", "Can enter ice tiles"] "uniques": ["+[75]% Strength when attacking", "Invisible to others", "Can only attack water", "Can attack submarines", "Can enter ice tiles"]
}, },
{ {
@ -1013,7 +1013,7 @@
"strength": 40, "strength": 40,
"cost": 375, "cost": 375,
"requiredTech": "Electronics", "requiredTech": "Electronics",
"uniques": ["Cannot attack","Can carry 2 aircraft"] "uniques": ["Cannot attack", "Can carry [2] [Air] units"]
}, },
{ {
"name": "Battleship", "name": "Battleship",
@ -1025,7 +1025,8 @@
"cost": 375, "cost": 375,
"requiredResource": "Oil", "requiredResource": "Oil",
"requiredTech": "Electronics", "requiredTech": "Electronics",
"uniques": ["Ranged attacks may be performed over obstacles"] "uniques": ["Ranged attacks may be performed over obstacles"],
// Does not actually upgrade to Missile Cruisers
}, },
{ {
"name": "Machine Gun", "name": "Machine Gun",
@ -1076,6 +1077,9 @@
"uniques": ["Can attack submarines", "[40]% chance to intercept air attacks", "uniques": ["Can attack submarines", "[40]% chance to intercept air attacks",
"May withdraw before melee ([80]%)", "+[100]% Strength vs [WaterSubmarine]"] "May withdraw before melee ([80]%)", "+[100]% Strength vs [WaterSubmarine]"]
}, },
// Atomic Era
{ {
"name": "Marine", "name": "Marine",
"unitType": "Melee", "unitType": "Melee",
@ -1275,22 +1279,18 @@
}, },
// Information Era // Information Era
/*
{ {
"name": "Nuclear Submarine", "name": "Nuclear Submarine",
"unitType": "WaterSubmarine", "unitType": "WaterSubmarine",
"movement": 6, "movement": 6,
"strength": 30, "strength": 50,
"range": 3, "range": 3,
"rangedStrength": 70, "rangedStrength": 85,
"cost": 425, "cost": 425,
"requiredTech": "Computers", "requiredTech": "Telecommunications",
"uniques": ["Bonus vs Attacker [75]%", "Invisible to others", "Can only attack water", "Can attack submarines", "Can enter ice tiles","+1 Visibility Range"] "uniques": ["+[75]% Strength when attacking", "Invisible to others", "Can only attack water",
// Can carry 2 Missiles "Can attack submarines", "Can enter ice tiles", "+1 Visibility Range", "Can carry [2] [Missile] units"]
// 50 strength, 85 rangedStrength, requiredTech "Telecommunications" in expansions
}, },
*/
{ {
"name": "Mechanized Infantry", "name": "Mechanized Infantry",
"unitType": "Melee", "unitType": "Melee",
@ -1299,23 +1299,20 @@
"cost": 375, "cost": 375,
"requiredTech": "Mobile Tactics" "requiredTech": "Mobile Tactics"
}, },
/*
{ {
"name": "Missile Cruiser", "name": "Missile Cruiser",
"unitType": "WaterRanged", "unitType": "WaterRanged",
"movement": 7, "movement": 7,
"strength": 60, "strength": 80,
"rangedStrength": 25, "rangedStrength": 100,
"range": 3, "range": 3,
"interceptRange": 2, "interceptRange": 2,
"cost": 425, "cost": 425,
"requiredTech": "Robotics", "requiredTech": "Robotics",
"uniques": ["[100]% chance to intercept air attacks", "Can attack submarines", "uniques": ["[100]% chance to intercept air attacks", "Can attack submarines",
"Ranged attacks may be performed over obstacles"] "Ranged attacks may be performed over obstacles", "Can carry [3] [Missile] units",
// Can carry 3 missiles - Guided Missiles and Nuclear Missiles, Attack vs submarines 100 "+[100]% Strength vs [submarine units]"]
// 100 rangedStrength, 80 strength in expansions
}, },
*/
{ {
"name": "Modern Armor", "name": "Modern Armor",
"unitType": "Armor", "unitType": "Armor",

View File

@ -672,7 +672,7 @@ class MapUnit {
// evacuation of transported units before disbanding, if possible. toListed because we're modifying the unit list. // evacuation of transported units before disbanding, if possible. toListed because we're modifying the unit list.
for (unit in currentTile.getUnits().filter { it.isTransported && isTransportTypeOf(it) } for (unit in currentTile.getUnits().filter { it.isTransported && isTransportTypeOf(it) }
.toList()) { .toList()) {
// we disbanded a carrier in a city, it can still stay in the city // if we disbanded a unit carrying other units in a city, the carried units can still stay in the city
if (currentTile.isCityCenter() && unit.movement.canMoveTo(currentTile)) continue if (currentTile.isCityCenter() && unit.movement.canMoveTo(currentTile)) continue
// if no "fuel" to escape, should be disbanded as well // if no "fuel" to escape, should be disbanded as well
if (unit.currentMovement < 0.1) if (unit.currentMovement < 0.1)
@ -818,27 +818,24 @@ class MapUnit {
} }
fun isTransportTypeOf(mapUnit: MapUnit): Boolean { fun isTransportTypeOf(mapUnit: MapUnit): Boolean {
val isAircraftCarrier = hasUnique("Can carry 2 aircraft") // Currently, only missiles and airplanes can be carried
val isMissileCarrier = hasUnique("Can carry 2 missiles") if (!mapUnit.type.isMissile() && !mapUnit.type.isAirUnit()) return false
if (!isMissileCarrier && !isAircraftCarrier) return getMatchingUniques("Can carry [] [] units").any { mapUnit.matchesFilter(it.params[1]) }
return false
if (!mapUnit.type.isAirUnit()) return false
if (isMissileCarrier && mapUnit.type != UnitType.Missile)
return false
if (isAircraftCarrier && mapUnit.type == UnitType.Missile)
return false
return true
} }
fun canTransport(mapUnit: MapUnit): Boolean { fun carryCapacity(unit: MapUnit): Int {
if (!isTransportTypeOf(mapUnit)) return false var capacity = getMatchingUniques("Can carry [] [] units").filter { unit.matchesFilter(it.params[1]) }.sumBy { it.params[0].toInt() }
if (owner != mapUnit.owner) return false capacity += getMatchingUniques("Can carry [] extra [] units").filter { unit.matchesFilter(it.params[1]) }.sumBy { it.params[0].toInt() }
// Deprecated since 3.15.5
var unitCapacity = 2 capacity += getMatchingUniques("Can carry 2 air units").filter { unit.matchesFilter("Air") }.sumBy { 2 }
unitCapacity += getUniques().count { it.text == "Can carry 1 extra air unit" } capacity += getMatchingUniques("Can carry 1 extra air units").filter { unit.matchesFilter("Air") }.sumBy { 1 }
return capacity
if (currentTile.airUnits.count { it.isTransported } >= unitCapacity) return false }
fun canTransport(unit: MapUnit): Boolean {
if (owner != unit.owner) return false
if (!isTransportTypeOf(unit)) return false
if (currentTile.airUnits.count { it.isTransported } >= carryCapacity(unit)) return false
return true return true
} }

View File

@ -249,7 +249,8 @@ class BaseUnit : INamed, IConstruction {
"Water", "water units", "Water units" -> unitType.isWaterUnit() "Water", "water units", "Water units" -> unitType.isWaterUnit()
"Air", "air units" -> unitType.isAirUnit() "Air", "air units" -> unitType.isAirUnit()
"Missile" -> unitType.isMissile() "Missile" -> unitType.isMissile()
"non-air" -> !unitType.isAirUnit() "Submarine", "submarine units" -> unitType == UnitType.WaterSubmarine
"non-air" -> !unitType.isAirUnit() && !unitType.isMissile()
"Military", "military units" -> unitType.isMilitary() "Military", "military units" -> unitType.isMilitary()
"Nuclear Weapon" -> isNuclearWeapon() "Nuclear Weapon" -> isNuclearWeapon()
// Deprecated as of 3.15.2 // Deprecated as of 3.15.2

View File

@ -84,33 +84,41 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
* [Artillery](https://thenounproject.com/search/?q=Artillery&i=1165261) By Creative Mania * [Artillery](https://thenounproject.com/search/?q=Artillery&i=1165261) By Creative Mania
* [Ship](https://thenounproject.com/term/ship/1594793/) By Aisyah for Ironclad * [Ship](https://thenounproject.com/term/ship/1594793/) By Aisyah for Ironclad
### Modern, Atomic and Information Eras ### Modern Era
* [Submarine](https://thenounproject.com/search/?q=submarine&i=589519) By Hea Poh Lin, MY
* [Helmet](https://thenounproject.com/term/helmet/25216/) By Daniel Turner for Great War Infantry * [Helmet](https://thenounproject.com/term/helmet/25216/) By Daniel Turner for Great War Infantry
* [Cap](https://thenounproject.com/search/?q=kepi&i=950267) By Creative Mania for Foreign Legion * [Cap](https://thenounproject.com/search/?q=kepi&i=950267) By Creative Mania for Foreign Legion
* [Tank](https://thenounproject.com/term/tank/1287510/) By corpus delicti for Landship
* [Warship](https://thenounproject.com/term/warship/1597474/) By zidney for Destroyer
* [Battleship](https://thenounproject.com/search/?q=battleship&i=1986807) By Vitaliy Gorbachev, KZ for Battleship
* [Submarine](https://thenounproject.com/search/?q=submarine&i=589519) By Hea Poh Lin, MY
* [xm8](https://thenounproject.com/term/xm8/172007/) By Xela Ub for Infantry * [xm8](https://thenounproject.com/term/xm8/172007/) By Xela Ub for Infantry
* Icon for Carrier made by [JackRainy](https://github.com/JackRainy), based on [Aircraft Carrier](https://thenounproject.com/icolabs/collection/flat-icons-transport/?i=2332914) By IcoLabs, BR
* [Battleship](https://thenounproject.com/search/?q=battleship&i=1986807) By Vitaliy Gorbachev, KZ for Battleship
* [machine-gun](https://thenounproject.com/search/?q=machine%20gun&i=591058) By Joana Pereira for Machine Gun * [machine-gun](https://thenounproject.com/search/?q=machine%20gun&i=591058) By Joana Pereira for Machine Gun
* Icon for Anti-Aircraft made by Yair Morgenstern, based on a free design * Icon for Anti-Aircraft made by Yair Morgenstern, based on a free design
[on Vectorstock](https://www.vectorstock.com/royalty-free-vector/flat-icon-design-collection-anti-aircraft-gun-vector-16396060) [on Vectorstock](https://www.vectorstock.com/royalty-free-vector/flat-icon-design-collection-anti-aircraft-gun-vector-16396060)
* [Anti-Tank Gun](https://thenounproject.com/term/anti-tank-gun/1802450/) By Tom Fricker * [Tank](https://thenounproject.com/term/tank/1287510/) By corpus delicti for Landship
* [Tank](https://thenounproject.com/search/?q=tank&i=981914) By jeff * [Warship](https://thenounproject.com/term/warship/1597474/) By zidney for Destroyer
* [Tank](https://thenounproject.com/manueldixken/collection/german-tanks/?i=960769) Manuel Dixken, DE for Panzer
* [APC](https://thenounproject.com/search/?q=apc&i=9965) By Luke Anthony Firth for Mechanized Infantry ### Atomic Era
* [Missile](https://thenounproject.com/term/missile/2311325/) By Eucalyp for Mobile SAM
* [Military vehicle](https://thenounproject.com/search/?q=Army%20rocket&i=23115) By Luke Anthony Firth For Rocket Artillery
* [Modern Armor](https://thenounproject.com/search/?q=tank&i=218) By Public Domain Nouns for Modern Armor
* [Manhattan Project](https://thenounproject.com/search/?q=Nuclear%20Bomb&i=2041074) By corpus delicti, GR
* [Nuclear Missile](https://thenounproject.com/marialuisa.iborra/collection/missiles-bombs/?i=1022574) By Lluisa Iborra, ES
* Icon for Carrier made by [JackRainy](https://github.com/JackRainy), based on [Aircraft Carrier](https://thenounproject.com/icolabs/collection/flat-icons-transport/?i=2332914) By IcoLabs, BR
* [Water Gun](https://thenounproject.com/term/water-gun/2121571) by ProSymbols for Marine * [Water Gun](https://thenounproject.com/term/water-gun/2121571) by ProSymbols for Marine
* [Parachute](https://thenounproject.com/term/parachute/2025018) by Nociconist for Paratrooper * [Parachute](https://thenounproject.com/term/parachute/2025018) by Nociconist for Paratrooper
* [Tank](https://thenounproject.com/search/?q=tank&i=981914) By jeff for Tank
* [Tank](https://thenounproject.com/manueldixken/collection/german-tanks/?i=960769) Manuel Dixken, DE for Panzer
* [Anti-Tank Gun](https://thenounproject.com/term/anti-tank-gun/1802450/) By Tom Fricker
* [atomic bomb](https://thenounproject.com/search/?q=atomic+bomb&i=3712713) by AmruID for Atomic Bomb * [atomic bomb](https://thenounproject.com/search/?q=atomic+bomb&i=3712713) by AmruID for Atomic Bomb
* [Military vehicle](https://thenounproject.com/search/?q=Army%20rocket&i=23115) By Luke Anthony Firth For Rocket Artillery
* [Missile](https://thenounproject.com/term/missile/2311325/) By Eucalyp for Mobile SAM
### Information Era
* [Submarine](https://www.flaticon.com/free-icon/submarine_1534201) by Freepik adapted for Nuclear Submarine
* [APC](https://thenounproject.com/search/?q=apc&i=9965) By Luke Anthony Firth for Mechanized Infantry
* [Battleship](https://thenounproject.com/search/?q=battleship&i=3441862) by Edi Prastyo for Missile Cruiser
* [Modern Armor](https://thenounproject.com/search/?q=tank&i=218) By Public Domain Nouns for Modern Armor
* [Nuclear Missile](https://thenounproject.com/marialuisa.iborra/collection/missiles-bombs/?i=1022574) By Lluisa Iborra, ES
* [Robot](https://thenounproject.com/term/robot/1182459/) by Lluisa Iborra, ES for Giant Death Robot * [Robot](https://thenounproject.com/term/robot/1182459/) by Lluisa Iborra, ES for Giant Death Robot
### Great People ### Great People
* [Pallet](https://thenounproject.com/search/?q=Pallet&i=6862) By James Keuning for Great Artist * [Pallet](https://thenounproject.com/search/?q=Pallet&i=6862) By James Keuning for Great Artist
@ -274,6 +282,7 @@ Unless otherwise specified, all the following are from [the Noun Project](https:
* [Water dam](https://thenounproject.com/term/water-dam/1002726/) By Symbolon for Hydro Plant * [Water dam](https://thenounproject.com/term/water-dam/1002726/) By Symbolon for Hydro Plant
* [Solar panel](https://thenounproject.com/term/solar-panel/1131/) By Modik for Solar Plant * [Solar panel](https://thenounproject.com/term/solar-panel/1131/) By Modik for Solar Plant
* [Opera House Sydney](https://thenounproject.com/term/opera-house-sydney/1626283/) By Pham Duy Phuong Hung for Sydney Opera House * [Opera House Sydney](https://thenounproject.com/term/opera-house-sydney/1626283/) By Pham Duy Phuong Hung for Sydney Opera House
* [Manhattan Project](https://thenounproject.com/search/?q=Nuclear%20Bomb&i=2041074) By corpus delicti, GR
* [Spaceship](https://thenounproject.com/term/spaceship/1444621/) By Dinosoft Labs for Apollo Program * [Spaceship](https://thenounproject.com/term/spaceship/1444621/) By Dinosoft Labs for Apollo Program
* [Build](https://thenounproject.com/term/build/1156478/) By Michael G Brown for Spaceship Factory * [Build](https://thenounproject.com/term/build/1156478/) By Michael G Brown for Spaceship Factory
* [Nuclear Plant](https://thenounproject.com/term/nuclear-plant/1132340/) By Andrejs Kirma * [Nuclear Plant](https://thenounproject.com/term/nuclear-plant/1132340/) By Andrejs Kirma