mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-09 23:39:40 +07:00
All units can be automated
Modders can choose which units get it as a primary action
This commit is contained in:
@ -7,7 +7,7 @@
|
|||||||
"name": "Worker",
|
"name": "Worker",
|
||||||
"unitType": "Civilian",
|
"unitType": "Civilian",
|
||||||
"movement": 2,
|
"movement": 2,
|
||||||
"uniques": ["Can build [Land] improvements on tiles"],
|
"uniques": ["Can build [Land] improvements on tiles", "Automation is a primary action"],
|
||||||
"cost": 70
|
"cost": 70
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -157,7 +157,8 @@
|
|||||||
"movement": 4,
|
"movement": 4,
|
||||||
"cost": 30,
|
"cost": 30,
|
||||||
"requiredTech": "Sailing",
|
"requiredTech": "Sailing",
|
||||||
"uniques": ["Cannot enter ocean tiles <before discovering [Astronomy]>", "May create improvements on water resources", "Uncapturable"]
|
"uniques": ["Cannot enter ocean tiles <before discovering [Astronomy]>", "May create improvements on water resources",
|
||||||
|
"Uncapturable", "Automation is a primary action"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Trireme",
|
"name": "Trireme",
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"name": "Worker",
|
"name": "Worker",
|
||||||
"unitType": "Civilian",
|
"unitType": "Civilian",
|
||||||
"movement": 2,
|
"movement": 2,
|
||||||
"uniques": ["Can build [Land] improvements on tiles"],
|
"uniques": ["Can build [Land] improvements on tiles", "Automation is a primary action"],
|
||||||
"cost": 70
|
"cost": 70
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -143,7 +143,8 @@
|
|||||||
"movement": 4,
|
"movement": 4,
|
||||||
"cost": 30,
|
"cost": 30,
|
||||||
"requiredTech": "Sailing",
|
"requiredTech": "Sailing",
|
||||||
"uniques": ["Cannot enter ocean tiles <before discovering [Astronomy]>", "May create improvements on water resources", "Uncapturable"]
|
"uniques": ["Cannot enter ocean tiles <before discovering [Astronomy]>", "May create improvements on water resources",
|
||||||
|
"Uncapturable", "Automation is a primary action"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Trireme",
|
"name": "Trireme",
|
||||||
|
@ -4,7 +4,6 @@ import com.badlogic.gdx.math.Vector2
|
|||||||
import com.unciv.Constants
|
import com.unciv.Constants
|
||||||
import com.unciv.logic.IsPartOfGameInfoSerialization
|
import com.unciv.logic.IsPartOfGameInfoSerialization
|
||||||
import com.unciv.logic.automation.unit.UnitAutomation
|
import com.unciv.logic.automation.unit.UnitAutomation
|
||||||
import com.unciv.logic.automation.unit.WorkerAutomation
|
|
||||||
import com.unciv.logic.battle.Battle
|
import com.unciv.logic.battle.Battle
|
||||||
import com.unciv.logic.battle.MapUnitCombatant
|
import com.unciv.logic.battle.MapUnitCombatant
|
||||||
import com.unciv.logic.city.City
|
import com.unciv.logic.city.City
|
||||||
@ -478,7 +477,7 @@ class MapUnit : IsPartOfGameInfoSerialization {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isAutomated()) WorkerAutomation.automateWorkerAction(this)
|
if (isAutomated()) UnitAutomation.automateUnitMoves(this)
|
||||||
|
|
||||||
if (isExploring()) UnitAutomation.automatedExplore(this)
|
if (isExploring()) UnitAutomation.automatedExplore(this)
|
||||||
}
|
}
|
||||||
|
@ -375,6 +375,8 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags:
|
|||||||
CanTradeWithCityStateForGoldAndInfluence("Can undertake a trade mission with City-State, giving a large sum of gold and [amount] Influence", UniqueTarget.Unit),
|
CanTradeWithCityStateForGoldAndInfluence("Can undertake a trade mission with City-State, giving a large sum of gold and [amount] Influence", UniqueTarget.Unit),
|
||||||
CanTransform("Can transform to [unit]", UniqueTarget.Unit),
|
CanTransform("Can transform to [unit]", UniqueTarget.Unit),
|
||||||
|
|
||||||
|
AutomationPrimaryAction("Automation is a primary action", UniqueTarget.Unit, flags = UniqueFlag.setOfHiddenToUsers),
|
||||||
|
|
||||||
// Strength bonuses
|
// Strength bonuses
|
||||||
Strength("[relativeAmount]% Strength", UniqueTarget.Unit, UniqueTarget.Global),
|
Strength("[relativeAmount]% Strength", UniqueTarget.Unit, UniqueTarget.Global),
|
||||||
StrengthNearCapital("[relativeAmount]% Strength decreasing with distance from the capital", UniqueTarget.Unit, UniqueTarget.Global),
|
StrengthNearCapital("[relativeAmount]% Strength decreasing with distance from the capital", UniqueTarget.Unit, UniqueTarget.Global),
|
||||||
|
@ -4,7 +4,6 @@ import com.unciv.Constants
|
|||||||
import com.unciv.GUI
|
import com.unciv.GUI
|
||||||
import com.unciv.UncivGame
|
import com.unciv.UncivGame
|
||||||
import com.unciv.logic.automation.unit.UnitAutomation
|
import com.unciv.logic.automation.unit.UnitAutomation
|
||||||
import com.unciv.logic.automation.unit.WorkerAutomation
|
|
||||||
import com.unciv.logic.civilization.Civilization
|
import com.unciv.logic.civilization.Civilization
|
||||||
import com.unciv.logic.civilization.NotificationCategory
|
import com.unciv.logic.civilization.NotificationCategory
|
||||||
import com.unciv.logic.civilization.NotificationIcon
|
import com.unciv.logic.civilization.NotificationIcon
|
||||||
@ -55,7 +54,8 @@ object UnitActions {
|
|||||||
UnitActionsReligion.addEnhanceReligionAction(unit, actionList)
|
UnitActionsReligion.addEnhanceReligionAction(unit, actionList)
|
||||||
actionList += getImprovementConstructionActions(unit, tile)
|
actionList += getImprovementConstructionActions(unit, tile)
|
||||||
UnitActionsReligion.addActionsWithLimitedUses(unit, actionList, tile)
|
UnitActionsReligion.addActionsWithLimitedUses(unit, actionList, tile)
|
||||||
addAutomateBuildingImprovementsAction(unit, actionList)
|
|
||||||
|
addAutomateAction(unit, actionList, true)
|
||||||
addTriggerUniqueActions(unit, actionList)
|
addTriggerUniqueActions(unit, actionList)
|
||||||
addAddInCapitalAction(unit, actionList, tile)
|
addAddInCapitalAction(unit, actionList, tile)
|
||||||
|
|
||||||
@ -88,6 +88,7 @@ object UnitActions {
|
|||||||
|
|
||||||
addSleepActions(actionList, unit, true)
|
addSleepActions(actionList, unit, true)
|
||||||
addFortifyActions(actionList, unit, true)
|
addFortifyActions(actionList, unit, true)
|
||||||
|
addAutomateAction(unit, actionList, false)
|
||||||
|
|
||||||
addSwapAction(unit, actionList)
|
addSwapAction(unit, actionList)
|
||||||
addDisbandAction(actionList, unit)
|
addDisbandAction(actionList, unit)
|
||||||
@ -437,15 +438,19 @@ object UnitActions {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addAutomateBuildingImprovementsAction(unit: MapUnit, actionList: ArrayList<UnitAction>) {
|
private fun addAutomateAction(unit: MapUnit, actionList: ArrayList<UnitAction>, showingAdditionalActions:Boolean) {
|
||||||
if (!unit.cache.hasUniqueToBuildImprovements) return
|
|
||||||
|
// If either of these are true it goes in primary actions, else in additional actions
|
||||||
|
if ((unit.hasUnique(UniqueType.AutomationPrimaryAction) || unit.cache.hasUniqueToBuildImprovements) != showingAdditionalActions)
|
||||||
|
return
|
||||||
|
|
||||||
if (unit.isAutomated()) return
|
if (unit.isAutomated()) return
|
||||||
|
|
||||||
actionList += UnitAction(UnitActionType.Automate,
|
actionList += UnitAction(UnitActionType.Automate,
|
||||||
isCurrentAction = unit.isAutomated(),
|
isCurrentAction = unit.isAutomated(),
|
||||||
action = {
|
action = {
|
||||||
unit.action = UnitActionType.Automate.value
|
unit.action = UnitActionType.Automate.value
|
||||||
WorkerAutomation.automateWorkerAction(unit)
|
UnitAutomation.automateUnitMoves(unit)
|
||||||
}.takeIf { unit.currentMovement > 0 }
|
}.takeIf { unit.currentMovement > 0 }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1105,6 +1105,9 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl
|
|||||||
|
|
||||||
Applicable to: Unit
|
Applicable to: Unit
|
||||||
|
|
||||||
|
??? example "Automation is a primary action"
|
||||||
|
Applicable to: Unit
|
||||||
|
|
||||||
??? example "[relativeAmount]% Strength for enemy [combatantFilter] units in adjacent [tileFilter] tiles"
|
??? example "[relativeAmount]% Strength for enemy [combatantFilter] units in adjacent [tileFilter] tiles"
|
||||||
Example: "[+20]% Strength for enemy [City] units in adjacent [Farm] tiles"
|
Example: "[+20]% Strength for enemy [City] units in adjacent [Farm] tiles"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user