From 0624542fd832f6c1cac709ef019c5d13c2f7b682 Mon Sep 17 00:00:00 2001 From: Jack Rainy Date: Sat, 11 Apr 2020 22:31:53 +0300 Subject: [PATCH] New civilization: Denmark (#2370) * Enable the Denmark civilization * Nation unique ability is implemented * Units unique abilities are implemented * Unit icons * Misprint in the tech name is corrected --- android/Images/NationIcons/Denmark.png | Bin 0 -> 1936 bytes android/Images/UnitIcons/Berserker.png | Bin 0 -> 2906 bytes .../Images/UnitIcons/Norwegian Ski Infantry.png | Bin 0 -> 4363 bytes android/assets/jsons/Nations.json | 4 +--- android/assets/jsons/Units.json | 11 +++-------- core/src/com/unciv/logic/battle/BattleDamage.kt | 10 +++++++++- core/src/com/unciv/logic/map/MapUnit.kt | 11 +++++++---- .../unciv/logic/map/UnitMovementAlgorithms.kt | 8 +++++++- .../com/unciv/ui/worldscreen/unit/UnitActions.kt | 8 +++++++- 9 files changed, 34 insertions(+), 18 deletions(-) create mode 100644 android/Images/NationIcons/Denmark.png create mode 100644 android/Images/UnitIcons/Berserker.png create mode 100644 android/Images/UnitIcons/Norwegian Ski Infantry.png diff --git a/android/Images/NationIcons/Denmark.png b/android/Images/NationIcons/Denmark.png new file mode 100644 index 0000000000000000000000000000000000000000..6447bf6c7d37d7bb8e604aecae7ae7ec65b50bcf GIT binary patch literal 1936 zcmeAS@N?(olHy`uVBq!ia0vp^DImNSs56Z83KGlT!G^M|NjS)qhK@yMqmh}m%T{_<`agJAirQ>Mi|L}A^1DHDliFf z7I;J!Gca%qfiUBxyLEqng6t)pzOL*~nB}=7SU=jT>jH%&N?apKg7ec#$`gxH8440J z^GfvcQcDy}^bGY3leOk}GcYh+^K@|x$#8x<>1~jXA`k2P+W+m>CYU%k7_>xg&C>nd zK3j%wOZr``JP0-F6k# zJYuYB=qjf8TH~& z>qEhw1tzTOLU|D%#vvyA5PsdZj+Q zzI8)DPRqlV{n5vMnRn`n=pQOLcKy^1m5E2IdJT9A_8NtH=4^~p=24FEU*^3?GTGI8 zo~zB{EF)9Tgo~4!EfNb&CFdM*N^_pfHPdO!k*O&kCLP%1wmUn@waxF+Bav%;na_>B zOnNQ%TI`kbzkoK!M|pxJEbcC{cPH{JR@o!s5Upr*Vv3Z{q%}*ca~OMLy>#1j@xso<*YZ@&rOv%yd9>H%Vz}&) z>MToT%@?oP-)nz$3;WdZEB3Ev(4PrM?C!?}$?kVJ^t{|_o&1xxs=f9n1^2st`uLIa XYcumK%a@URK?SC#tDnm{r-UW|A&P@m literal 0 HcmV?d00001 diff --git a/android/Images/UnitIcons/Berserker.png b/android/Images/UnitIcons/Berserker.png new file mode 100644 index 0000000000000000000000000000000000000000..1785760b4dd0e7a6d42dfb374d12938239c1db2d GIT binary patch literal 2906 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 literal 0 HcmV?d00001 diff --git a/android/Images/UnitIcons/Norwegian Ski Infantry.png b/android/Images/UnitIcons/Norwegian Ski Infantry.png new file mode 100644 index 0000000000000000000000000000000000000000..e67794768ba4d7f1241c2ed87369ff4bc8021fba GIT binary patch literal 4363 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 FV1f%vJFWl# literal 0 HcmV?d00001 diff --git a/android/assets/jsons/Nations.json b/android/assets/jsons/Nations.json index 646d8873e6..ec86ebdde3 100644 --- a/android/assets/jsons/Nations.json +++ b/android/assets/jsons/Nations.json @@ -607,9 +607,7 @@ "Huaras","Riobamba","Caxamalca","Sausa","Tambo Colorado","Huaca","Tumbes","Chan Chan","Sipan","Pachacamac", "Llactapata","Pisac","Kuelap","Pajaten","Chucuito","Choquequirao"] }, - /* { - //NEEDS SNOW AND ICE "name": "Denmark", "leaderName": "Harald Bluetooth", "adjective": ["Danish"], @@ -633,7 +631,7 @@ "Sarpsborg","Odense","Aalborg","Stavanger","Vorbasse","Schleswig","Kristiansand","Halogaland","Randers", "Fredrikstad","Kolding","Horsens","Tromsoe","Vejle","Koge","Sandnes","Holstebro","Slagelse","Drammen", "Hillerod","Sonderborg","Skien","Svendborg","Holbaek","Hjorring","Fladstrand","Haderslev","Ringsted","Skrive"] - }, + }, /* { "name": "Sweden", "leaderName": "Gustavus Adolphus", diff --git a/android/assets/jsons/Units.json b/android/assets/jsons/Units.json index 92cdfb1540..97ca138c30 100644 --- a/android/assets/jsons/Units.json +++ b/android/assets/jsons/Units.json @@ -484,7 +484,6 @@ "attackSound": "metalhit" //Aside from the Great Generals II promotion, Samurai should also create Fishing Boats (not now, surely) }, - /* { "name": "Berserker", "replaces": "Longswordsman", @@ -493,7 +492,7 @@ "movement": 3, "strength": 21, "cost": 120, - "requiredTech": "Steel", + "requiredTech": "Metal Casting", "upgradesTo": "Musketman", "obsoleteTech": "Metallurgy", "requiredResource": "Iron", @@ -503,7 +502,6 @@ "attackSound": "metalhit" //Danish unique unit. Can attack from the sea without any penalty, and moves faster. }, - */ { "name": "Pikeman", "unitType": "Melee", @@ -894,10 +892,8 @@ "hurryCostModifier": 20, "attackSound": "shot" }, - - /* { - "name": "Norvegian Ski Infantry", + "name": "Norwegian Ski Infantry", "unitType": "Melee", "replaces": "Rifleman", "uniqueTo": "Denmark", @@ -907,11 +903,10 @@ "requiredTech": "Rifling", "obsoleteTech": "Replaceable Parts", "upgradesTo": "Great War Infantry", - "uniques": ["Bonus in Snow, Tundra and Hills"], + "uniques": ["+25% bonus in Snow, Tundra and Hills", "Double movement in Snow, Tundra and Hills"], "hurryCostModifier": 20, "attackSound": "shot" }, - */ { "name": "Cavalry", "unitType": "Mounted", diff --git a/core/src/com/unciv/logic/battle/BattleDamage.kt b/core/src/com/unciv/logic/battle/BattleDamage.kt index 2dd5b0393f..4c6720b69e 100644 --- a/core/src/com/unciv/logic/battle/BattleDamage.kt +++ b/core/src/com/unciv/logic/battle/BattleDamage.kt @@ -125,7 +125,7 @@ object BattleDamage { else modifiers["Attacker Bonus"] = bonus } - if(attacker.unit.isEmbarked()) + if(attacker.unit.isEmbarked() && !attacker.unit.hasUnique("Amphibious")) modifiers["Landing"] = -0.5f if (attacker.isMelee()) { @@ -206,6 +206,14 @@ object BattleDamage { if(!tile.isFriendlyTerritory(unit.getCivInfo()) && unit.unit.hasUnique("+20% bonus outside friendly territory")) modifiers["Foreign Land"] = 0.2f + if (unit.unit.hasUnique("+25% bonus in Snow, Tundra and Hills") && + (tile.baseTerrain == Constants.snow + || tile.baseTerrain == Constants.tundra + || tile.baseTerrain == Constants.hill) && + // except when there is a vegetation + (tile.terrainFeature != Constants.forest + || tile.terrainFeature != Constants.jungle)) + modifiers[tile.baseTerrain] = 0.25f if(unit.getCivInfo().nation.unique == UniqueAbility.WAYFINDING && tile.getTilesInDistance(2).any { it.improvement=="Moai" }) modifiers["Moai"] = 0.1f diff --git a/core/src/com/unciv/logic/map/MapUnit.kt b/core/src/com/unciv/logic/map/MapUnit.kt index 577d9d59c3..7b98111c47 100644 --- a/core/src/com/unciv/logic/map/MapUnit.kt +++ b/core/src/com/unciv/logic/map/MapUnit.kt @@ -38,6 +38,7 @@ class MapUnit { @Transient var roughTerrainPenalty = false @Transient var doubleMovementInCoast = false @Transient var doubleMovementInForestAndJungle = false + @Transient var doubleMovementInSnowTundraAndHills = false lateinit var owner: String lateinit var name: String @@ -133,10 +134,11 @@ class MapUnit { uniques.addAll(promotions.promotions.map { currentTile.tileMap.gameInfo.ruleSet.unitPromotions[it]!!.effect }) tempUniques = uniques - if("Ignores terrain cost" in uniques) ignoresTerrainCost=true - if("Rough terrain penalty" in uniques) roughTerrainPenalty=true - if("Double movement in coast" in uniques) doubleMovementInCoast=true - if("Double movement rate through Forest and Jungle" in uniques) doubleMovementInForestAndJungle=true + if("Ignores terrain cost" in uniques) ignoresTerrainCost = true + if("Rough terrain penalty" in uniques) roughTerrainPenalty = true + if("Double movement in coast" in uniques) doubleMovementInCoast = true + if("Double movement rate through Forest and Jungle" in uniques) doubleMovementInForestAndJungle = true + if("Double movement in Snow, Tundra and Hills" in uniques) doubleMovementInSnowTundraAndHills = true } fun hasUnique(unique:String): Boolean { @@ -227,6 +229,7 @@ class MapUnit { fun getEmbarkedMovement(): Int { var movement=2 movement += civInfo.tech.getTechUniques().count { it == "Increases embarked movement +1" } + if (civInfo.nation.unique == UniqueAbility.VIKING_FURY) movement +=1 return movement } diff --git a/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt b/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt index 66056aaa8b..27316627c1 100644 --- a/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt +++ b/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt @@ -10,7 +10,8 @@ class UnitMovementAlgorithms(val unit:MapUnit) { // This function is called ALL THE TIME and should be as time-optimal as possible! fun getMovementCostBetweenAdjacentTiles(from: TileInfo, to: TileInfo, civInfo: CivilizationInfo): Float { - if ((from.isLand != to.isLand) && unit.type.isLandUnit()) + if ((from.isLand != to.isLand) && unit.type.isLandUnit() && + (unit.civInfo.nation.unique != UniqueAbility.VIKING_FURY)) return 100f // this is embarkment or disembarkment, and will take the entire turn var extraCost = 0f @@ -39,6 +40,11 @@ class UnitMovementAlgorithms(val unit:MapUnit) { if (unit.doubleMovementInCoast && to.baseTerrain == Constants.coast) return 1 / 2f + extraCost + if (unit.doubleMovementInSnowTundraAndHills && to.baseTerrain == Constants.hill) + return 1f + extraCost // usually hills take 2 + if (unit.doubleMovementInSnowTundraAndHills && (to.baseTerrain == Constants.snow || to.baseTerrain == Constants.tundra)) + return 1 / 2f + extraCost + return to.getLastTerrain().movementCost.toFloat() + extraCost // no road } diff --git a/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt b/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt index 9360911c8e..59e8613a3e 100644 --- a/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt +++ b/core/src/com/unciv/ui/worldscreen/unit/UnitActions.kt @@ -3,6 +3,7 @@ package com.unciv.ui.worldscreen.unit import com.badlogic.gdx.graphics.Color import com.unciv.Constants import com.unciv.UncivGame +import com.unciv.UniqueAbility import com.unciv.logic.automation.UnitAutomation import com.unciv.logic.automation.WorkerAutomation import com.unciv.logic.civilization.CivilizationInfo @@ -183,8 +184,13 @@ object UnitActions { } tile.improvement = null if (tile.resource!=null) tile.getOwner()?.updateDetailedCivResources() // this might take away a resource - if (!unit.hasUnique("No movement cost to pillage")) unit.useMovementPoints(1f) + + if (!unit.hasUnique("No movement cost to pillage") && + (!unit.type.isMelee() || unit.civInfo.nation.unique != UniqueAbility.VIKING_FURY)) + unit.useMovementPoints(1f) + unit.healBy(25) + }.takeIf { unit.currentMovement > 0 && canPillage(unit, tile) }) }