mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-14 01: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",
|
||||
"unitType": "Civilian",
|
||||
"movement": 2,
|
||||
"uniques": ["Can build [Land] improvements on tiles"],
|
||||
"uniques": ["Can build [Land] improvements on tiles", "Automation is a primary action"],
|
||||
"cost": 70
|
||||
},
|
||||
{
|
||||
@ -157,7 +157,8 @@
|
||||
"movement": 4,
|
||||
"cost": 30,
|
||||
"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",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"name": "Worker",
|
||||
"unitType": "Civilian",
|
||||
"movement": 2,
|
||||
"uniques": ["Can build [Land] improvements on tiles"],
|
||||
"uniques": ["Can build [Land] improvements on tiles", "Automation is a primary action"],
|
||||
"cost": 70
|
||||
},
|
||||
{
|
||||
@ -143,7 +143,8 @@
|
||||
"movement": 4,
|
||||
"cost": 30,
|
||||
"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",
|
||||
|
@ -4,7 +4,6 @@ import com.badlogic.gdx.math.Vector2
|
||||
import com.unciv.Constants
|
||||
import com.unciv.logic.IsPartOfGameInfoSerialization
|
||||
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.MapUnitCombatant
|
||||
import com.unciv.logic.city.City
|
||||
@ -478,7 +477,7 @@ class MapUnit : IsPartOfGameInfoSerialization {
|
||||
return
|
||||
}
|
||||
|
||||
if (isAutomated()) WorkerAutomation.automateWorkerAction(this)
|
||||
if (isAutomated()) UnitAutomation.automateUnitMoves(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),
|
||||
CanTransform("Can transform to [unit]", UniqueTarget.Unit),
|
||||
|
||||
AutomationPrimaryAction("Automation is a primary action", UniqueTarget.Unit, flags = UniqueFlag.setOfHiddenToUsers),
|
||||
|
||||
// Strength bonuses
|
||||
Strength("[relativeAmount]% Strength", 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.UncivGame
|
||||
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.NotificationCategory
|
||||
import com.unciv.logic.civilization.NotificationIcon
|
||||
@ -55,7 +54,8 @@ object UnitActions {
|
||||
UnitActionsReligion.addEnhanceReligionAction(unit, actionList)
|
||||
actionList += getImprovementConstructionActions(unit, tile)
|
||||
UnitActionsReligion.addActionsWithLimitedUses(unit, actionList, tile)
|
||||
addAutomateBuildingImprovementsAction(unit, actionList)
|
||||
|
||||
addAutomateAction(unit, actionList, true)
|
||||
addTriggerUniqueActions(unit, actionList)
|
||||
addAddInCapitalAction(unit, actionList, tile)
|
||||
|
||||
@ -88,6 +88,7 @@ object UnitActions {
|
||||
|
||||
addSleepActions(actionList, unit, true)
|
||||
addFortifyActions(actionList, unit, true)
|
||||
addAutomateAction(unit, actionList, false)
|
||||
|
||||
addSwapAction(unit, actionList)
|
||||
addDisbandAction(actionList, unit)
|
||||
@ -437,15 +438,19 @@ object UnitActions {
|
||||
}
|
||||
}
|
||||
|
||||
private fun addAutomateBuildingImprovementsAction(unit: MapUnit, actionList: ArrayList<UnitAction>) {
|
||||
if (!unit.cache.hasUniqueToBuildImprovements) return
|
||||
private fun addAutomateAction(unit: MapUnit, actionList: ArrayList<UnitAction>, showingAdditionalActions:Boolean) {
|
||||
|
||||
// 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
|
||||
|
||||
actionList += UnitAction(UnitActionType.Automate,
|
||||
isCurrentAction = unit.isAutomated(),
|
||||
action = {
|
||||
unit.action = UnitActionType.Automate.value
|
||||
WorkerAutomation.automateWorkerAction(unit)
|
||||
UnitAutomation.automateUnitMoves(unit)
|
||||
}.takeIf { unit.currentMovement > 0 }
|
||||
)
|
||||
}
|
||||
|
@ -1105,6 +1105,9 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl
|
||||
|
||||
Applicable to: Unit
|
||||
|
||||
??? example "Automation is a primary action"
|
||||
Applicable to: Unit
|
||||
|
||||
??? example "[relativeAmount]% Strength for enemy [combatantFilter] units in adjacent [tileFilter] tiles"
|
||||
Example: "[+20]% Strength for enemy [City] units in adjacent [Farm] tiles"
|
||||
|
||||
|
Reference in New Issue
Block a user