Modding/AI
< Modding
Work in Progress
This page is currently WORK IN PROGRESS. Some things may be missing.
Feel free to contribute and don't worry about perfection - other editors can make corrections if necessary. Just get creating!
There are 10 main types of AI in Cosmoteer. (This page will contain things from both .rules and the source code, and will specify which)
Each are separate .rules files.
ai_buildbattleUpdateInterval = [.25, .75] // A random range.
IsAvailableInCreativeMode = false
IsCreativeModeDefault = false
IsAvailableInMultiplayer = false
IsMultiplayerDefault = false
StrategyModules
[
{
// Makes the AI go to the capture point.
Type = AreaPatrol
DefaultPatrolRadius = 50
AvoidableDoodadTags = [sun, station]
AvoidableDoodadBuffer = 100
}
{
Type = AggroEnemies
TargetSwitchThresholdFactor = 2
TargetDistanceFactorExponent = 0.5
TargetFirepowerCacheTime = 10
AcquireAggroWithinRadar = true
ReleaseAggroWithinRadar = true
}
]
TacticsModules
[
{
Type = DefaultAttackRadiusAndRotation
AttackRotationSwitchThresholdFactor = 1.25
AttackRotationsToCheck = 8
UseSavedAboveHealth = 50%
}
{
Type = RandomAttackAngle
AttackAngleChangeInterval = [5, 10]
AttackAngleChangeDelta = [-30d, 30d]
CoordinateFlanking = true
}
]
TargetingModules
[
{
Type = ValueTargeter
TargetChecksPerUpdate = 10
TargetSwitchThresholdFactor = 2
TargetValueFactorPerPenetrationDist = .75
}
]
ai_defense_platformUpdateInterval = 1
StrategyModules
[
{
Type = HoldPosition
HoldRotation = false
}
{
Type = AggroEnemies
TargetSwitchThresholdFactor = 2
TargetDistanceFactorExponent = 0.5
TargetFirepowerCacheTime = 10
AcquireAggroWithinRadar = false
ReleaseAggroWithinRadar = false
RotateOnly = true
}
]
TacticsModules
[
{
Type = DefaultAttackRadiusAndRotation
AttackRotationSwitchThresholdFactor = 1.25
AttackRotationsToCheck = 8
RotateOnly = true
UseSavedAboveHealth = 50%
}
]
TargetingModules
[
{
Type = ValueTargeter
TargetChecksPerUpdate = 10
TargetSwitchThresholdFactor = 2
TargetValueFactorPerPenetrationDist = .75
}
]
ai_easyNameKey = "AI/Easy"
UpdateInterval = [.75, 1.25] // A random range.
IsAvailableInCreativeMode = true
IsAvailableInMultiplayer = true
StrategyModules
[
{
Type = AreaPatrol
DefaultPatrolRadius = 500
AvoidableDoodadTags = [sun, station]
AvoidableDoodadBuffer = 100
}
{
Type = FollowFleetLeader
}
{
Type = AggroEnemies
TargetSwitchThresholdFactor = 2
TargetDistanceFactorExponent = 0.5
TargetFirepowerCacheTime = 10
AcquireAggroWithinRadar = false
ReleaseAggroWithinRadar = false
}
]
TacticsModules
[
{
Type = DefaultAttackRadiusAndRotation
AttackRotationSwitchThresholdFactor = 1.5
AttackRotationsToCheck = 4
UseSavedAboveHealth = 50%
}
]
ai_normalNameKey = "AI/Normal"
UpdateInterval = [.25, .75] // A random range.
IsAvailableInCreativeMode = true
IsCreativeModeDefault = true
IsAvailableInMultiplayer = true
IsMultiplayerDefault = true
StrategyModules
[
{
Type = AreaPatrol
DefaultPatrolRadius = 500
AvoidableDoodadTags = [sun, station]
AvoidableDoodadBuffer = 100
}
{
Type = FollowFleetLeader
}
{
Type = AggroEnemies
TargetSwitchThresholdFactor = 2
TargetDistanceFactorExponent = 0.5
TargetFirepowerCacheTime = 10
AcquireAggroWithinRadar = true
ReleaseAggroWithinRadar = true
}
]
TacticsModules
[
{
Type = DefaultAttackRadiusAndRotation
AttackRotationSwitchThresholdFactor = 1.25
AttackRotationsToCheck = 8
UseSavedAboveHealth = 50%
}
{
Type = RandomAttackAngle
AttackAngleChangeInterval = [5, 10]
AttackAngleChangeDelta = [-30d, 30d]
CoordinateFlanking = true
}
]
TargetingModules
[
{
Type = ValueTargeter
TargetChecksPerUpdate = 10
TargetSwitchThresholdFactor = 2
TargetValueFactorPerPenetrationDist = .75
}
]
ai_military_stationUpdateInterval = 10
StrategyModules
[
{
Type = HoldPosition
HoldRotation = false
}
{
Type = SelfRepair
RepairChecksPerTick = 10
RepairDamaged = true
RebuildDestroyed = true
AllowPartialRepair = true
AllowPartialRebuild = false
}
{
Type = AggroEnemies
TargetSwitchThresholdFactor = 2
TargetDistanceFactorExponent = 0.5
TargetFirepowerCacheTime = 10
AcquireAggroWithinRadar = false
ReleaseAggroWithinRadar = false
RotateOnly = true
}
]
TargetingModules
[
{
Type = ValueTargeter
TargetChecksPerUpdate = 10
TargetSwitchThresholdFactor = 2
TargetValueFactorPerPenetrationDist = .75
}
]
CommsModules
[
{
Type = Trade
AllowHumanTrade = true
AllowNpcTrade = true
HelpWithConstruction = true
AllowO2Refill = true
}
{
Type = TechProvider
}
]
ai_policeUpdateInterval = [.25, .75] // A random range.
StrategyModules
[
{
Type = DeleteSelf
}
{
Type = WantedSearch
AvoidableDoodadTags = [sun]
AvoidableDoodadBuffer = 100
}
{
Type = AggroEnemies
TargetSwitchThresholdFactor = 2
TargetDistanceFactorExponent = 0.5
TargetFirepowerCacheTime = 10
AcquireAggroWithinRadar = true
ReleaseAggroWithinRadar = true
}
]
TacticsModules
[
{
Type = DefaultAttackRadiusAndRotation
AttackRotationSwitchThresholdFactor = 1.25
AttackRotationsToCheck = 8
UseSavedAboveHealth = 50%
}
{
Type = RandomAttackAngle
AttackAngleChangeInterval = [5, 10]
AttackAngleChangeDelta = [-30d, 30d]
CoordinateFlanking = true
}
]
TargetingModules
[
{
Type = ValueTargeter
TargetChecksPerUpdate = 10
TargetSwitchThresholdFactor = 2
TargetValueFactorPerPenetrationDist = .75
}
]
StasisModules
[
{
Type = DeleteSelf
}
{
Type = WantedSearch
DefaultStasisSpeed = 100
AvoidableDoodadTags = [sun]
AvoidableDoodadBuffer = 100
}
]
ai_space_stationUpdateInterval = 10
StrategyModules
[
{
Type = HoldPosition
HoldRotation = false
}
{
Type = SelfRepair
RepairChecksPerTick = 10
RepairDamaged = true
RebuildDestroyed = true
AllowPartialRepair = true
AllowPartialRebuild = false
}
{
Type = AggroEnemies
TargetSwitchThresholdFactor = 2
TargetDistanceFactorExponent = 0.5
TargetFirepowerCacheTime = 10
AcquireAggroWithinRadar = false
ReleaseAggroWithinRadar = false
RotateOnly = true
}
]
CommsModules
[
{
Type = Trade
AllowHumanTrade = true
AllowNpcTrade = true
HelpWithConstruction = true
AllowO2Refill = true
}
{
Type = CrewProvider
CrewForHireFraction = 20%
CrewHireCostPerCrewRatio = &<./Data/modes/career/career.rules>/CrewHireCostPerCrewRatioStations
CrewHireCostRoundToMultiple = &<./Data/modes/career/career.rules>/CrewHireCostRoundToMultiple
}
{
Type = MissionProvider
}
{
Type = TechProvider
}
]
StasisModules
[
{
Type = MissionProvider
}
]
ai_station_guardUpdateInterval = [.25, .75] // A random range.
StrategyModules
[
{
Type = AreaPatrol
DefaultPatrolRadius = 500
AvoidableDoodadTags = [sun]
AvoidableDoodadBuffer = 100
}
{
Type = AggroEnemies
TargetSwitchThresholdFactor = 2
TargetDistanceFactorExponent = 0.5
TargetFirepowerCacheTime = 10
AcquireAggroWithinRadar = false
ReleaseAggroWithinRadar = true
}
]
TacticsModules
[
{
Type = DefaultAttackRadiusAndRotation
AttackRotationSwitchThresholdFactor = 1.25
AttackRotationsToCheck = 8
UseSavedAboveHealth = 50%
}
{
Type = RandomAttackAngle
AttackAngleChangeInterval = [5, 10]
AttackAngleChangeDelta = [-30d, 30d]
CoordinateFlanking = true
}
]
TargetingModules
[
{
Type = ValueTargeter
TargetChecksPerUpdate = 10
TargetSwitchThresholdFactor = 2
TargetValueFactorPerPenetrationDist = .75
}
]
ai_trade_shipUpdateInterval = [.75, 1.25] // A random range.
StrategyModules
[
{
Type = TradeShip
}
{
Type = HaltForComms
HaltForTrade = true
}
{
Type = SelfRepair
RepairChecksPerTick = 1
RepairDamaged = true
RebuildDestroyed = true
AllowPartialRepair = true
AllowPartialRebuild = false
}
{
Type = FleeFromEnemies
FleeDistance = 1000
RecallCrew = true
FtlAfter = [10, 20]
}
]
CommsModules
[
{
Type = Trade
AllowHumanTrade = true
AllowNpcTrade = true
}
{
Type = CrewProvider
CrewForHireFraction = 20%
CrewHireCostPerCrewRatio = &<./Data/modes/career/career.rules>/CrewHireCostPerCrewRatioTradeShips
CrewHireCostRoundToMultiple = &<./Data/modes/career/career.rules>/CrewHireCostRoundToMultiple
}
]
ai_wandererUpdateInterval = [.25, .75] // A random range.
StrategyModules
[
{
Type = AreaPatrol
DefaultPatrolRadius = 30000
AvoidableDoodadTags = [sun, station]
AvoidableDoodadBuffer = 100
}
{
Type = FollowFleetLeader
}
{
Type = AggroEnemies
TargetSwitchThresholdFactor = 2
TargetDistanceFactorExponent = 0.5
TargetFirepowerCacheTime = 10
AcquireAggroWithinRadar = false
ReleaseAggroWithinRadar = true
}
]
TacticsModules
[
{
Type = DefaultAttackRadiusAndRotation
AttackRotationSwitchThresholdFactor = 1.25
AttackRotationsToCheck = 8
UseSavedAboveHealth = 50%
}
{
Type = RandomAttackAngle
AttackAngleChangeInterval = [5, 10]
AttackAngleChangeDelta = [-30d, 30d]
CoordinateFlanking = true
}
]
TargetingModules
[
{
Type = ValueTargeter
TargetChecksPerUpdate = 10
TargetSwitchThresholdFactor = 2
TargetValueFactorPerPenetrationDist = .75
}
]
StasisModules
[
{
Type = AreaPatrol
DefaultPatrolRadius = 30000
DefaultStasisSpeed = 100
AvoidableDoodadTags = [sun, station]
AvoidableDoodadBuffer = 100
}
{
Type = FollowFleetLeader
DefaultStasisSpeed = 100
AvoidableDoodadTags = [sun, station]
AvoidableDoodadBuffer = 100
}
]