View Issue Details

IDProjectCategoryLast Update
0015608AI War 1 / ClassicBug - GameplayAug 12, 2014 11:20 am
Reportermalkiel Assigned To 
Status newResolutionno change required 
Product Version7.047 
Summary0015608: hacking response wild rolls for zombie/gravity guardians not working
Descriptionin my logs the other day I asked about this Keith, so I made it a point to load a very early save and do some game-endingly stupid hacking this morning just to test.
for anyone wondering, no, I wasn't able to recover from this log. XD

in the first roll, unless I am missing something big it _should_ be gravity guardians.

there is a later roll that should be zombie but is not.

Combat guardian rolls seem to be working fine.
TagsNo tags attached.
Internal Weight

Relationships

child of 0015602 consideringkeith.lamothe insane attack, thinking it's a hacking bug 

Activities

malkiel

Jul 31, 2014 10:40 am

reporter  

LogicLog_AIMechanic_CounterHacking.txt (55,056 bytes)   
7/31/2014 9:20:54 AM (7.047) 1:06:10	Counter-Saboteur Spawn on Ooryae (playerNumber:8)
spawnStrength = base value = 14
spawnStrength *= handicap = 14
spawnStrength *= Game.Instance.Options.GetDifficultyCausedSpecialDifficultyModifier = 14
multiplierForSabotageResponseSpawn = 1 = 1
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BaseHackingAntagonism = GetTotalHackingProgressSpent() = 125
since hacking spent > 100, applying alternate formula to part above that
alternateResult = linearityThreshold * 2 = 200
HackingProgressEarned = AIProgressionLevelTotal = 80
alternateResult -= Total_hacking_earned = 120
partOverLinearityThreshold = hackingSpent - linearityThreshold = 25
now approximating partOverLinearityThreshold ^ 1.1 without using floating point (since that's non-deterministic between platforms and thus forbidden due to MP sync)
the approximation for 0 is 0 and the approximation for 100 is 158
so exponentialFactor = the linear interpolation = 39
alternateResult += exponentialFactor = 159
minimumResult = linearityThreshold + ( ( hackingSpent - linearityThreshold ) / 10 ) = 102.5
BaseHackingAntagonism = Max(alternateResult,minimumResult) = 159
HackingProgressEarned = AIProgressionLevelTotal = 80
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
negativeHackingProgressMultiplier = Mat.One + ( (-HackingProgress) / 10 ) = 5.5
BaseHackingAntagonism = BaseHackingAntagonism * negativeHackingProgressMultiplier = 874.5
since totalAntagonism > 100, multiplierForSabotageResponseSpawn += ( totalAntagonism - 100 ) / 200 = 4.87
spawnStrength *= multiplierForSabotageResponseSpawn = 68.18
tackleOrBladeCheeseDetected = false
engineDamageCheeseDetected = false
maximumNumberOfWildRolls = 1 + (totalHackingAntagonism/50) = 17
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 136.36
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 204.53
wild-roll:InnocuousRoll, spawnStrength = 204.53
wild-roll:InnocuousRoll, spawnStrength = 204.53
wild-roll:PickNeighboringAIPlanet, spawnStrength = 204.53
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 272.71
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 340.89
wild-roll:ShortRangeWarpJump, spawnStrength = 340.89
wild-roll:AddStrength_PreRollStrengthTimesTwo, spawnStrength = 477.25
wild-roll:ShortRangeWarpJump, spawnStrength = 511.34
wild-roll:ShortRangeWarpJump, spawnStrength = 545.43
wild-roll:PickNeighboringAIPlanet, spawnStrength = 545.43
wild-roll:SwitchToGravityGuardianSpawn, spawnStrength = 579.51
wild-roll:AddStrength_PreRollStrengthTimesThree, spawnStrength = 784.05
wild-roll:InnocuousRoll, spawnStrength = 784.05
wild-roll:ShortRangeWarpJump, spawnStrength = 818.14
wild-roll:ShortRangeWarpJump, spawnStrength = 852.23
spawnedType:ZenithHydraIII quantity:3 (strength-each:6)
spawnedType:SpiderIII quantity:4 (strength-each:2)
spawnedType:BulletproofFighterIII quantity:6 (strength-each:2.18)
spawnedType:MicroFighterIII quantity:2 (strength-each:1.33)
spawnedType:ShieldBoosterIII quantity:4 (strength-each:10.11)
spawnedType:ZenithMirrorIII quantity:3 (strength-each:2)
spawnedType:VorticularCutlassIII quantity:4 (strength-each:1.09)
spawnedType:ZenithReprocessorIII quantity:1 (strength-each:24)
spawnedType:NeinzulRailpodIII quantity:1 (strength-each:1)
spawnedType:ElectricShuttleIII quantity:1 (strength-each:8)
spawnedType:SpireGravityDrainIII quantity:3 (strength-each:4)
spawnedType:SaboteurIII quantity:3 (strength-each:4.8)
spawnedType:SentinelFrigateIII quantity:4 (strength-each:10.11)
spawnedType:FighterIII quantity:2 (strength-each:2)
spawnedType:TackleDroneLauncherIII quantity:2 (strength-each:36)
spawnedType:RaiderIII quantity:1 (strength-each:1.6)
spawnedType:AcidSprayerIII quantity:2 (strength-each:2)
spawnedType:ArmorShipIII quantity:2 (strength-each:2.18)
spawnedType:Cruiser quantity:5 (strength-each:2)
spawnedType:VampireClawIII quantity:2 (strength-each:3.43)
spawnedType:RaptorIII quantity:4 (strength-each:4)
spawnedType:AntiArmorShipIII quantity:4 (strength-each:1.6)
spawnedType:LazerGatlingIII quantity:3 (strength-each:0.71)
spawnedType:DeflectorDroneIII quantity:4 (strength-each:0.98)
spawnedType:SpireTeleportingLeechIII quantity:2 (strength-each:4)
spawnedType:SpireArmorRotterIII quantity:1 (strength-each:4)
spawnedType:BomberIII quantity:2 (strength-each:2)
spawnedType:SpireGravityRipperIII quantity:2 (strength-each:4)
spawnedType:ZenithAutoBombIII quantity:4 (strength-each:2)
spawnedType:ZenithBeamFrigateIII quantity:3 (strength-each:4)
spawnedType:ZenithChameleonIII quantity:5 (strength-each:2)
spawnedType:SniperIII quantity:4 (strength-each:9.6)
spawnedType:ZenithBombardmentIII quantity:2 (strength-each:12)
spawnedType:SpireRailclusterIII quantity:4 (strength-each:38.4)
spawnedType:ZenithPolarizerIII quantity:2 (strength-each:2)
spawnedType:ParasiteIII quantity:2 (strength-each:4)
spawnedType:SpireMiniRamIII quantity:4 (strength-each:9.6)
spawnedType:TeleportRaiderIII quantity:2 (strength-each:1.2)
spawnedType:ImpulseReactionEmitterIII quantity:1 (strength-each:2)
spawnedType:SpireBladeSpawnerIII quantity:2 (strength-each:57.6)
spawnedType:SpacePlaneIII quantity:1 (strength-each:1.12)
spawnedType:ZenithParalyzerIII quantity:4 (strength-each:2)
spawnedType:ShieldBearerIII quantity:2 (strength-each:8)
spawnedType:ZenithViralShredderIII quantity:1 (strength-each:2)
spawnedType:SpireStealthBattleshipIII quantity:1 (strength-each:38.4)
spawnedType:MunitionsBoosterIII quantity:1 (strength-each:10.11)
spawnedType:GrenadeLauncherIII quantity:1 (strength-each:2)
spawnedType:EtherJetIII quantity:1 (strength-each:1.33)
spawnedType:ZenithSiegeEngineIII quantity:1 (strength-each:12)
spawnedType:InfiltratorIII quantity:1 (strength-each:1.2)
spawnedType:YounglingShrikeIII quantity:1 (strength-each:2)


7/31/2014 9:21:04 AM (7.047) 1:06:20	Counter-Saboteur Spawn on Ooryae (playerNumber:8)
spawnStrength = base value = 14
spawnStrength *= handicap = 14
spawnStrength *= Game.Instance.Options.GetDifficultyCausedSpecialDifficultyModifier = 14
multiplierForSabotageResponseSpawn = 1 = 1
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BaseHackingAntagonism = GetTotalHackingProgressSpent() = 125
since hacking spent > 100, applying alternate formula to part above that
alternateResult = linearityThreshold * 2 = 200
HackingProgressEarned = AIProgressionLevelTotal = 80
alternateResult -= Total_hacking_earned = 120
partOverLinearityThreshold = hackingSpent - linearityThreshold = 25
now approximating partOverLinearityThreshold ^ 1.1 without using floating point (since that's non-deterministic between platforms and thus forbidden due to MP sync)
the approximation for 0 is 0 and the approximation for 100 is 158
so exponentialFactor = the linear interpolation = 39
alternateResult += exponentialFactor = 159
minimumResult = linearityThreshold + ( ( hackingSpent - linearityThreshold ) / 10 ) = 102.5
BaseHackingAntagonism = Max(alternateResult,minimumResult) = 159
HackingProgressEarned = AIProgressionLevelTotal = 80
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
negativeHackingProgressMultiplier = Mat.One + ( (-HackingProgress) / 10 ) = 5.5
BaseHackingAntagonism = BaseHackingAntagonism * negativeHackingProgressMultiplier = 874.5
since totalAntagonism > 100, multiplierForSabotageResponseSpawn += ( totalAntagonism - 100 ) / 200 = 4.87
spawnStrength *= multiplierForSabotageResponseSpawn = 68.18
tackleOrBladeCheeseDetected = false
engineDamageCheeseDetected = false
maximumNumberOfWildRolls = 1 + (totalHackingAntagonism/50) = 17
wild-roll:InnocuousRoll, spawnStrength = 68.18
wild-roll:TriggerExo, spawnStrength = 68.18
wild-roll:SwitchToRaidStarshipSpawn, spawnStrength = 68.18
wild-roll:ShortRangeWarpJump, spawnStrength = 68.18
wild-roll:InnocuousRoll, spawnStrength = 68.18
wild-roll:ShortRangeWarpJump, spawnStrength = 102.27
wild-roll:InnocuousRoll, spawnStrength = 102.27
wild-roll:AddStrength_PreRollStrengthTimesThree, spawnStrength = 306.8
wild-roll:AddStrength_PreRollStrengthTimesTwo, spawnStrength = 443.16
wild-roll:ShortRangeWarpJump, spawnStrength = 477.25
wild-roll:InnocuousRoll, spawnStrength = 477.25
wild-roll:InnocuousRoll, spawnStrength = 477.25
wild-roll:SwitchToRaidStarshipSpawn, spawnStrength = 511.34
wild-roll:SwitchToCombatGuardianSpawn, spawnStrength = 545.43
wild-roll:ShortRangeWarpJump, spawnStrength = 579.51
wild-roll:AddStrength_PreRollStrengthTimesTwo, spawnStrength = 715.87
wild-roll:ShortRangeWarpJump, spawnStrength = 749.96
spawnedType:AIGuardianSpiderIII quantity:2 (strength-each:96)
spawnedType:AIGuardianSpireImplosionIII quantity:6 (strength-each:96)


7/31/2014 9:21:14 AM (7.047) 1:06:30	Counter-Saboteur Spawn on Ooryae (playerNumber:8)
spawnStrength = base value = 14
spawnStrength *= handicap = 14
spawnStrength *= Game.Instance.Options.GetDifficultyCausedSpecialDifficultyModifier = 14
multiplierForSabotageResponseSpawn = 1 = 1
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BaseHackingAntagonism = GetTotalHackingProgressSpent() = 125
since hacking spent > 100, applying alternate formula to part above that
alternateResult = linearityThreshold * 2 = 200
HackingProgressEarned = AIProgressionLevelTotal = 80
alternateResult -= Total_hacking_earned = 120
partOverLinearityThreshold = hackingSpent - linearityThreshold = 25
now approximating partOverLinearityThreshold ^ 1.1 without using floating point (since that's non-deterministic between platforms and thus forbidden due to MP sync)
the approximation for 0 is 0 and the approximation for 100 is 158
so exponentialFactor = the linear interpolation = 39
alternateResult += exponentialFactor = 159
minimumResult = linearityThreshold + ( ( hackingSpent - linearityThreshold ) / 10 ) = 102.5
BaseHackingAntagonism = Max(alternateResult,minimumResult) = 159
HackingProgressEarned = AIProgressionLevelTotal = 80
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
negativeHackingProgressMultiplier = Mat.One + ( (-HackingProgress) / 10 ) = 5.5
BaseHackingAntagonism = BaseHackingAntagonism * negativeHackingProgressMultiplier = 874.5
since totalAntagonism > 100, multiplierForSabotageResponseSpawn += ( totalAntagonism - 100 ) / 200 = 4.87
spawnStrength *= multiplierForSabotageResponseSpawn = 68.18
tackleOrBladeCheeseDetected = false
engineDamageCheeseDetected = false
maximumNumberOfWildRolls = 1 + (totalHackingAntagonism/50) = 17
wild-roll:AddStrength_PreRollStrengthTimesTwo, spawnStrength = 204.53
wild-roll:AddStrength_PreRollStrengthTimesThree, spawnStrength = 409.07
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 477.25
wild-roll:PickNeighboringAIPlanet, spawnStrength = 477.25
wild-roll:ShortRangeWarpJump, spawnStrength = 477.25
wild-roll:AddStrength_PreRollStrengthTimesTwo, spawnStrength = 613.6
wild-roll:PickNeighboringAIPlanet, spawnStrength = 613.6
wild-roll:ShortRangeWarpJump, spawnStrength = 647.69
wild-roll:AddStrength_PreRollStrengthTimesTwo, spawnStrength = 784.05
wild-roll:SwitchToRaidStarshipSpawn, spawnStrength = 784.05
wild-roll:ShortRangeWarpJump, spawnStrength = 818.14
wild-roll:InnocuousRoll, spawnStrength = 818.14
wild-roll:AddStrength_PreRollStrengthTimesTwo, spawnStrength = 954.5
wild-roll:AddStrength_PreRollStrengthTimesThree, spawnStrength = 1159.03
wild-roll:ShortRangeWarpJump, spawnStrength = 1193.12
wild-roll:QueueAnotherSpawnAfterThisOne, spawnStrength = 1193.12
wild-roll:InnocuousRoll, spawnStrength = 1193.12
spawnedType:AIRaidStarshipIII quantity:19 (strength-each:64)

1:06:30	Counter-Saboteur Spawn on Ooryae (playerNumber:8)
spawnStrength = base value = 14
spawnStrength *= handicap = 14
spawnStrength *= Game.Instance.Options.GetDifficultyCausedSpecialDifficultyModifier = 14
multiplierForSabotageResponseSpawn = 1 = 1
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BaseHackingAntagonism = GetTotalHackingProgressSpent() = 125
since hacking spent > 100, applying alternate formula to part above that
alternateResult = linearityThreshold * 2 = 200
HackingProgressEarned = AIProgressionLevelTotal = 80
alternateResult -= Total_hacking_earned = 120
partOverLinearityThreshold = hackingSpent - linearityThreshold = 25
now approximating partOverLinearityThreshold ^ 1.1 without using floating point (since that's non-deterministic between platforms and thus forbidden due to MP sync)
the approximation for 0 is 0 and the approximation for 100 is 158
so exponentialFactor = the linear interpolation = 39
alternateResult += exponentialFactor = 159
minimumResult = linearityThreshold + ( ( hackingSpent - linearityThreshold ) / 10 ) = 102.5
BaseHackingAntagonism = Max(alternateResult,minimumResult) = 159
HackingProgressEarned = AIProgressionLevelTotal = 80
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
negativeHackingProgressMultiplier = Mat.One + ( (-HackingProgress) / 10 ) = 5.5
BaseHackingAntagonism = BaseHackingAntagonism * negativeHackingProgressMultiplier = 874.5
since totalAntagonism > 100, multiplierForSabotageResponseSpawn += ( totalAntagonism - 100 ) / 200 = 4.87
spawnStrength *= multiplierForSabotageResponseSpawn = 68.18
tackleOrBladeCheeseDetected = false
engineDamageCheeseDetected = false
maximumNumberOfWildRolls = 1 + (totalHackingAntagonism/50) = 17
wild-roll:AddStrength_PreRollStrengthTimesTwo, spawnStrength = 204.53
wild-roll:InnocuousRoll, spawnStrength = 204.53
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 272.71
wild-roll:QueueAnotherSpawnAfterThisOne, spawnStrength = 306.8
wild-roll:ShortRangeWarpJump, spawnStrength = 306.8
wild-roll:InnocuousRoll, spawnStrength = 306.8
wild-roll:ShortRangeWarpJump, spawnStrength = 340.89
wild-roll:SwitchToZombieGuardianSpawn, spawnStrength = 374.98
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 443.16
wild-roll:SwitchToZombieGuardianSpawn, spawnStrength = 477.25
wild-roll:ShortRangeWarpJump, spawnStrength = 511.34
wild-roll:ShortRangeWarpJump, spawnStrength = 545.43
wild-roll:ShortRangeWarpJump, spawnStrength = 579.51
wild-roll:ShortRangeWarpJump, spawnStrength = 613.6
wild-roll:ShortRangeWarpJump, spawnStrength = 647.69
wild-roll:InnocuousRoll, spawnStrength = 647.69
wild-roll:InnocuousRoll, spawnStrength = 647.69
spawnedType:SpacePlaneIII quantity:1 (strength-each:1.12)
spawnedType:SpireGravityDrainIII quantity:1 (strength-each:4)
spawnedType:DeflectorDroneIII quantity:1 (strength-each:0.98)
spawnedType:ZenithHydraIII quantity:3 (strength-each:6)
spawnedType:MunitionsBoosterIII quantity:5 (strength-each:10.11)
spawnedType:SpireTractorPlatformIII quantity:2 (strength-each:38.4)
spawnedType:InfiltratorIII quantity:1 (strength-each:1.2)
spawnedType:BulletproofFighterIII quantity:2 (strength-each:2.18)
spawnedType:AntiArmorShipIII quantity:2 (strength-each:1.6)
spawnedType:SniperIII quantity:2 (strength-each:9.6)
spawnedType:SpireStealthBattleshipIII quantity:1 (strength-each:38.4)
spawnedType:ZenithBeamFrigateIII quantity:2 (strength-each:4)
spawnedType:ShieldBoosterIII quantity:1 (strength-each:10.11)
spawnedType:Cruiser quantity:1 (strength-each:2)
spawnedType:YounglingShrikeIII quantity:3 (strength-each:2)
spawnedType:AcidSprayerIII quantity:3 (strength-each:2)
spawnedType:ZenithAutoBombIII quantity:2 (strength-each:2)
spawnedType:RaptorIII quantity:1 (strength-each:4)
spawnedType:ParasiteIII quantity:2 (strength-each:4)
spawnedType:ZenithChameleonIII quantity:2 (strength-each:2)
spawnedType:ZenithElectricBomberIII quantity:3 (strength-each:10.11)
spawnedType:MicroFighterIII quantity:1 (strength-each:1.33)
spawnedType:SpireBladeSpawnerIII quantity:1 (strength-each:57.6)
spawnedType:ZenithSiegeEngineIII quantity:1 (strength-each:12)
spawnedType:NeinzulScapegoatIII quantity:1 (strength-each:1.33)
spawnedType:SpireMiniRamIII quantity:2 (strength-each:9.6)
spawnedType:EyeBotIII quantity:1 (strength-each:4)
spawnedType:VorticularCutlassIII quantity:2 (strength-each:1.09)
spawnedType:SpireRailclusterIII quantity:2 (strength-each:38.4)
spawnedType:SpireArmorRotterIII quantity:1 (strength-each:4)
spawnedType:BomberIII quantity:2 (strength-each:2)
spawnedType:EtherJetIII quantity:1 (strength-each:1.33)
spawnedType:SentinelFrigateIII quantity:1 (strength-each:10.11)
spawnedType:SaboteurIII quantity:1 (strength-each:4.8)
spawnedType:ZenithPolarizerIII quantity:1 (strength-each:2)
spawnedType:SpaceTankIII quantity:2 (strength-each:2)
spawnedType:TackleDroneLauncherIII quantity:1 (strength-each:36)
spawnedType:ImpulseReactionEmitterIII quantity:1 (strength-each:2)
spawnedType:LazerGatlingIII quantity:1 (strength-each:0.71)
spawnedType:ShieldBearerIII quantity:2 (strength-each:8)
spawnedType:SpireTeleportingLeechIII quantity:1 (strength-each:4)
spawnedType:AutocannonMinipodIII quantity:1 (strength-each:0.98)
spawnedType:ElectricShuttleIII quantity:1 (strength-each:8)
spawnedType:ZenithReprocessorIII quantity:3 (strength-each:24)
spawnedType:SpireGravityRipperIII quantity:1 (strength-each:4)


7/31/2014 9:21:33 AM (7.047) 1:06:40	Counter-Saboteur Spawn on Ooryae (playerNumber:8)
spawnStrength = base value = 14
spawnStrength *= handicap = 14
spawnStrength *= Game.Instance.Options.GetDifficultyCausedSpecialDifficultyModifier = 14
multiplierForSabotageResponseSpawn = 1 = 1
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BaseHackingAntagonism = GetTotalHackingProgressSpent() = 125
since hacking spent > 100, applying alternate formula to part above that
alternateResult = linearityThreshold * 2 = 200
HackingProgressEarned = AIProgressionLevelTotal = 80
alternateResult -= Total_hacking_earned = 120
partOverLinearityThreshold = hackingSpent - linearityThreshold = 25
now approximating partOverLinearityThreshold ^ 1.1 without using floating point (since that's non-deterministic between platforms and thus forbidden due to MP sync)
the approximation for 0 is 0 and the approximation for 100 is 158
so exponentialFactor = the linear interpolation = 39
alternateResult += exponentialFactor = 159
minimumResult = linearityThreshold + ( ( hackingSpent - linearityThreshold ) / 10 ) = 102.5
BaseHackingAntagonism = Max(alternateResult,minimumResult) = 159
HackingProgressEarned = AIProgressionLevelTotal = 80
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
negativeHackingProgressMultiplier = Mat.One + ( (-HackingProgress) / 10 ) = 5.5
BaseHackingAntagonism = BaseHackingAntagonism * negativeHackingProgressMultiplier = 874.5
since totalAntagonism > 100, multiplierForSabotageResponseSpawn += ( totalAntagonism - 100 ) / 200 = 4.87
spawnStrength *= multiplierForSabotageResponseSpawn = 68.18
tackleOrBladeCheeseDetected = false
engineDamageCheeseDetected = false
maximumNumberOfWildRolls = 1 + (totalHackingAntagonism/50) = 17
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 136.36
wild-roll:ShortRangeWarpJump, spawnStrength = 136.36
wild-roll:InnocuousRoll, spawnStrength = 136.36
wild-roll:ShortRangeWarpJump, spawnStrength = 170.45
wild-roll:SwitchToZombieGuardianSpawn, spawnStrength = 204.53
wild-roll:InnocuousRoll, spawnStrength = 204.53
wild-roll:AddStrength_PreRollStrengthTimesThree, spawnStrength = 409.07
wild-roll:AddStrength_PreRollStrengthTimesThree, spawnStrength = 613.6
wild-roll:ShortRangeWarpJump, spawnStrength = 647.69
wild-roll:InnocuousRoll, spawnStrength = 647.69
wild-roll:SwitchToGravityGuardianSpawn, spawnStrength = 681.78
wild-roll:InnocuousRoll, spawnStrength = 681.78
wild-roll:SwitchToZombieGuardianSpawn, spawnStrength = 715.87
wild-roll:AddStrength_PreRollStrengthTimesTwo, spawnStrength = 852.23
wild-roll:AddStrength_PreRollStrengthTimesTwo, spawnStrength = 988.58
wild-roll:AddStrength_PreRollStrengthTimesThree, spawnStrength = 1193.12
wild-roll:ShortRangeWarpJump, spawnStrength = 1227.21
spawnedType:ZenithSiegeEngineIII quantity:4 (strength-each:12)
spawnedType:SpireGravityRipperIII quantity:4 (strength-each:4)
spawnedType:MunitionsBoosterIII quantity:2 (strength-each:10.11)
spawnedType:ElectricShuttleIII quantity:3 (strength-each:8)
spawnedType:AcidSprayerIII quantity:3 (strength-each:2)
spawnedType:ShieldBearerIII quantity:3 (strength-each:8)
spawnedType:TeleportRaiderIII quantity:5 (strength-each:1.2)
spawnedType:GrenadeLauncherIII quantity:4 (strength-each:2)
spawnedType:ZenithBombardmentIII quantity:2 (strength-each:12)
spawnedType:ZenithChameleonIII quantity:2 (strength-each:2)
spawnedType:ShieldBoosterIII quantity:7 (strength-each:10.11)
spawnedType:SaboteurIII quantity:1 (strength-each:4.8)
spawnedType:MicroFighterIII quantity:1 (strength-each:1.33)
spawnedType:EtherJetIII quantity:2 (strength-each:1.33)
spawnedType:MLRSIII quantity:2 (strength-each:2.53)
spawnedType:SpireTeleportingLeechIII quantity:3 (strength-each:4)
spawnedType:SpireGravityDrainIII quantity:4 (strength-each:4)
spawnedType:ArmorShipIII quantity:7 (strength-each:2.18)
spawnedType:SpireRailclusterIII quantity:3 (strength-each:38.4)
spawnedType:ParasiteIII quantity:2 (strength-each:4)
spawnedType:RaptorIII quantity:4 (strength-each:4)
spawnedType:NeinzulScapegoatIII quantity:6 (strength-each:1.33)
spawnedType:VorticularCutlassIII quantity:6 (strength-each:1.09)
spawnedType:ZenithHydraIII quantity:10 (strength-each:6)
spawnedType:ZenithBeamFrigateIII quantity:4 (strength-each:4)
spawnedType:InfiltratorIII quantity:6 (strength-each:1.2)
spawnedType:SpireStealthBattleshipIII quantity:4 (strength-each:38.4)
spawnedType:SentinelFrigateIII quantity:6 (strength-each:10.11)
spawnedType:ZenithPolarizerIII quantity:5 (strength-each:2)
spawnedType:YounglingShrikeIII quantity:3 (strength-each:2)
spawnedType:AutocannonMinipodIII quantity:1 (strength-each:0.98)
spawnedType:ZenithParalyzerIII quantity:4 (strength-each:2)
spawnedType:SniperIII quantity:1 (strength-each:9.6)
spawnedType:RaiderIII quantity:1 (strength-each:1.6)
spawnedType:SpaceTankIII quantity:7 (strength-each:2)
spawnedType:DeflectorDroneIII quantity:3 (strength-each:0.98)
spawnedType:AntiArmorShipIII quantity:3 (strength-each:1.6)
spawnedType:NeinzulRailpodIII quantity:4 (strength-each:1)
spawnedType:SpireArmorRotterIII quantity:4 (strength-each:4)
spawnedType:TackleDroneLauncherIII quantity:3 (strength-each:36)
spawnedType:LazerGatlingIII quantity:1 (strength-each:0.71)
spawnedType:BomberIII quantity:1 (strength-each:2)
spawnedType:FighterIII quantity:3 (strength-each:2)
spawnedType:SpireMiniRamIII quantity:3 (strength-each:9.6)
spawnedType:ZenithMedicFrigateIII quantity:1 (strength-each:24)
spawnedType:SpireTractorPlatformIII quantity:1 (strength-each:38.4)
spawnedType:TeleportBattleStationIII quantity:1 (strength-each:8)
spawnedType:Cruiser quantity:4 (strength-each:2)
spawnedType:ZenithReprocessorIII quantity:2 (strength-each:24)
spawnedType:SpiderIII quantity:3 (strength-each:2)
spawnedType:SpireBladeSpawnerIII quantity:2 (strength-each:57.6)
spawnedType:ZenithElectricBomberIII quantity:1 (strength-each:10.11)
spawnedType:ImpulseReactionEmitterIII quantity:1 (strength-each:2)
spawnedType:EyeBotIII quantity:2 (strength-each:4)
spawnedType:ZenithAutoBombIII quantity:1 (strength-each:2)
spawnedType:SpacePlaneIII quantity:2 (strength-each:1.12)
spawnedType:ZenithMirrorIII quantity:2 (strength-each:2)
spawnedType:VampireClawIII quantity:1 (strength-each:3.43)


7/31/2014 9:21:49 AM (7.047) 1:06:50	Counter-Saboteur Spawn on Ooryae (playerNumber:8)
spawnStrength = base value = 14
spawnStrength *= handicap = 14
spawnStrength *= Game.Instance.Options.GetDifficultyCausedSpecialDifficultyModifier = 14
multiplierForSabotageResponseSpawn = 1 = 1
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BaseHackingAntagonism = GetTotalHackingProgressSpent() = 125
since hacking spent > 100, applying alternate formula to part above that
alternateResult = linearityThreshold * 2 = 200
HackingProgressEarned = AIProgressionLevelTotal = 80
alternateResult -= Total_hacking_earned = 120
partOverLinearityThreshold = hackingSpent - linearityThreshold = 25
now approximating partOverLinearityThreshold ^ 1.1 without using floating point (since that's non-deterministic between platforms and thus forbidden due to MP sync)
the approximation for 0 is 0 and the approximation for 100 is 158
so exponentialFactor = the linear interpolation = 39
alternateResult += exponentialFactor = 159
minimumResult = linearityThreshold + ( ( hackingSpent - linearityThreshold ) / 10 ) = 102.5
BaseHackingAntagonism = Max(alternateResult,minimumResult) = 159
HackingProgressEarned = AIProgressionLevelTotal = 80
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
negativeHackingProgressMultiplier = Mat.One + ( (-HackingProgress) / 10 ) = 5.5
BaseHackingAntagonism = BaseHackingAntagonism * negativeHackingProgressMultiplier = 874.5
since totalAntagonism > 100, multiplierForSabotageResponseSpawn += ( totalAntagonism - 100 ) / 200 = 4.87
spawnStrength *= multiplierForSabotageResponseSpawn = 68.18
tackleOrBladeCheeseDetected = false
engineDamageCheeseDetected = false
maximumNumberOfWildRolls = 1 + (totalHackingAntagonism/50) = 17
wild-roll:TriggerExo, spawnStrength = 68.18
wild-roll:InnocuousRoll, spawnStrength = 68.18
wild-roll:AddStrength_PreRollStrengthTimesTwo, spawnStrength = 204.53
wild-roll:SwitchToGravityGuardianSpawn, spawnStrength = 238.62
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 306.8
wild-roll:ShortRangeWarpJump, spawnStrength = 306.8
wild-roll:InnocuousRoll, spawnStrength = 306.8
wild-roll:PickNeighboringAIPlanet, spawnStrength = 306.8
wild-roll:SwitchToZombieGuardianSpawn, spawnStrength = 340.89
wild-roll:PickNeighboringAIPlanet, spawnStrength = 340.89
wild-roll:ShortRangeWarpJump, spawnStrength = 374.98
wild-roll:InnocuousRoll, spawnStrength = 374.98
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 443.16
wild-roll:InnocuousRoll, spawnStrength = 443.16
wild-roll:InnocuousRoll, spawnStrength = 443.16
wild-roll:ShortRangeWarpJump, spawnStrength = 477.25
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 545.43
spawnedType:ZenithElectricBomberIII quantity:2 (strength-each:10.11)
spawnedType:ZenithMedicFrigateIII quantity:1 (strength-each:24)
spawnedType:RaiderIII quantity:2 (strength-each:1.6)
spawnedType:ImpulseReactionEmitterIII quantity:1 (strength-each:2)
spawnedType:SpaceTankIII quantity:3 (strength-each:2)
spawnedType:ParasiteIII quantity:2 (strength-each:4)
spawnedType:SpireTractorPlatformIII quantity:4 (strength-each:38.4)
spawnedType:LazerGatlingIII quantity:2 (strength-each:0.71)
spawnedType:DeflectorDroneIII quantity:1 (strength-each:0.98)
spawnedType:SniperIII quantity:1 (strength-each:9.6)
spawnedType:ZenithSiegeEngineIII quantity:2 (strength-each:12)
spawnedType:ZenithHydraIII quantity:2 (strength-each:6)
spawnedType:SpireBladeSpawnerIII quantity:1 (strength-each:57.6)
spawnedType:SpacePlaneIII quantity:1 (strength-each:1.12)
spawnedType:SpireMiniRamIII quantity:1 (strength-each:9.6)
spawnedType:EyeBotIII quantity:2 (strength-each:4)
spawnedType:ShieldBearerIII quantity:1 (strength-each:8)
spawnedType:ShieldBoosterIII quantity:2 (strength-each:10.11)
spawnedType:TackleDroneLauncherIII quantity:2 (strength-each:36)
spawnedType:MunitionsBoosterIII quantity:2 (strength-each:10.11)
spawnedType:ArmorShipIII quantity:2 (strength-each:2.18)
spawnedType:ZenithParalyzerIII quantity:2 (strength-each:2)
spawnedType:AutocannonMinipodIII quantity:1 (strength-each:0.98)
spawnedType:SpireTeleportingLeechIII quantity:1 (strength-each:4)
spawnedType:ZenithReprocessorIII quantity:1 (strength-each:24)
spawnedType:ZenithMirrorIII quantity:1 (strength-each:2)
spawnedType:SpiderIII quantity:1 (strength-each:2)
spawnedType:SpireGravityDrainIII quantity:2 (strength-each:4)
spawnedType:GrenadeLauncherIII quantity:1 (strength-each:2)
spawnedType:NeinzulScapegoatIII quantity:1 (strength-each:1.33)
spawnedType:BomberIII quantity:1 (strength-each:2)
spawnedType:ZenithChameleonIII quantity:2 (strength-each:2)
spawnedType:SpireStealthBattleshipIII quantity:1 (strength-each:38.4)


7/31/2014 9:23:58 AM (7.047) 1:07:00	Counter-Saboteur Spawn on Ooryae (playerNumber:8)
spawnStrength = base value = 14
spawnStrength *= handicap = 14
spawnStrength *= Game.Instance.Options.GetDifficultyCausedSpecialDifficultyModifier = 14
multiplierForSabotageResponseSpawn = 1 = 1
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BaseHackingAntagonism = GetTotalHackingProgressSpent() = 125
since hacking spent > 100, applying alternate formula to part above that
alternateResult = linearityThreshold * 2 = 200
HackingProgressEarned = AIProgressionLevelTotal = 80
alternateResult -= Total_hacking_earned = 120
partOverLinearityThreshold = hackingSpent - linearityThreshold = 25
now approximating partOverLinearityThreshold ^ 1.1 without using floating point (since that's non-deterministic between platforms and thus forbidden due to MP sync)
the approximation for 0 is 0 and the approximation for 100 is 158
so exponentialFactor = the linear interpolation = 39
alternateResult += exponentialFactor = 159
minimumResult = linearityThreshold + ( ( hackingSpent - linearityThreshold ) / 10 ) = 102.5
BaseHackingAntagonism = Max(alternateResult,minimumResult) = 159
HackingProgressEarned = AIProgressionLevelTotal = 80
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 5 * 1.5^n, where n is the number of previous hacks) = 0
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
negativeHackingProgressMultiplier = Mat.One + ( (-HackingProgress) / 10 ) = 5.5
BaseHackingAntagonism = BaseHackingAntagonism * negativeHackingProgressMultiplier = 874.5
since totalAntagonism > 100, multiplierForSabotageResponseSpawn += ( totalAntagonism - 100 ) / 200 = 4.87
spawnStrength *= multiplierForSabotageResponseSpawn = 68.18
tackleOrBladeCheeseDetected = false
engineDamageCheeseDetected = false
maximumNumberOfWildRolls = 1 + (totalHackingAntagonism/50) = 17
wild-roll:SwitchBackToNormalSpawn, spawnStrength = 68.18
wild-roll:SwitchToRaidStarshipSpawn, spawnStrength = 102.27
wild-roll:InnocuousRoll, spawnStrength = 102.27
wild-roll:AddStrength_PreRollStrengthTimesThree, spawnStrength = 306.8
wild-roll:SwitchToGravityGuardianSpawn, spawnStrength = 340.89
wild-roll:ShortRangeWarpJump, spawnStrength = 340.89
wild-roll:InnocuousRoll, spawnStrength = 340.89
wild-roll:ShortRangeWarpJump, spawnStrength = 374.98
wild-roll:SwitchToZombieGuardianSpawn, spawnStrength = 409.07
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 477.25
wild-roll:TriggerWaveOnPlanet, spawnStrength = 477.25
wild-roll:SwitchToCombatGuardianSpawn, spawnStrength = 511.34
wild-roll:AddStrength_PreRollStrengthTimesThree, spawnStrength = 715.87
wild-roll:AddStrength_PreRollStrengthTimesOne, spawnStrength = 784.05
wild-roll:InnocuousRoll, spawnStrength = 784.05
wild-roll:InnocuousRoll, spawnStrength = 784.05
wild-roll:SwitchToGravityGuardianSpawn, spawnStrength = 818.14
spawnedType:AIGuardianSpiderIII quantity:5 (strength-each:96)
spawnedType:AIGuardianSpireImplosionIII quantity:4 (strength-each:96)


7/31/2014 9:24:46 AM (7.047) 1:07:04	Counter-Saboteur Spawn on Ooryae (playerNumber:8)
spawnStrength = base value = 14
spawnStrength *= handicap = 14
spawnStrength *= Game.Instance.Options.GetDifficultyCausedSpecialDifficultyModifier = 14
multiplierForSabotageResponseSpawn = 1 = 1
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 7.5 * 1.5^n, where n is the number of previous hacks) = 5
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BaseHackingAntagonism = GetTotalHackingProgressSpent() = 130
since hacking spent > 100, applying alternate formula to part above that
alternateResult = linearityThreshold * 2 = 200
HackingProgressEarned = AIProgressionLevelTotal = 80
alternateResult -= Total_hacking_earned = 120
partOverLinearityThreshold = hackingSpent - linearityThreshold = 30
now approximating partOverLinearityThreshold ^ 1.1 without using floating point (since that's non-deterministic between platforms and thus forbidden due to MP sync)
the approximation for 0 is 0 and the approximation for 100 is 158
so exponentialFactor = the linear interpolation = 47
alternateResult += exponentialFactor = 167
minimumResult = linearityThreshold + ( ( hackingSpent - linearityThreshold ) / 10 ) = 103
BaseHackingAntagonism = Max(alternateResult,minimumResult) = 167
HackingProgressEarned = AIProgressionLevelTotal = 80
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 7.5 * 1.5^n, where n is the number of previous hacks) = 5
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
since this is a post-response and HaP is actually negative, show some mercy in case they just simul-hacked their way into the negative thousands: BaseHackingAntagonism += hackingProgress = 117
since totalAntagonism > 100, multiplierForSabotageResponseSpawn += ( totalAntagonism - 100 ) / 200 = 1.08
spawnStrength *= multiplierForSabotageResponseSpawn = 15.19
spawnedType:SpireRailclusterIII quantity:1 (strength-each:38.4)


7/31/2014 9:24:51 AM (7.047) 1:07:05	Counter-Saboteur Spawn on Ooryae (playerNumber:8)
spawnStrength = base value = 14
spawnStrength *= handicap = 14
spawnStrength *= Game.Instance.Options.GetDifficultyCausedSpecialDifficultyModifier = 14
multiplierForSabotageResponseSpawn = 1 = 1
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 7.5 * 1.5^n, where n is the number of previous hacks) = 5
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BaseHackingAntagonism = GetTotalHackingProgressSpent() = 130
since hacking spent > 100, applying alternate formula to part above that
alternateResult = linearityThreshold * 2 = 200
HackingProgressEarned = AIProgressionLevelTotal = 80
alternateResult -= Total_hacking_earned = 120
partOverLinearityThreshold = hackingSpent - linearityThreshold = 30
now approximating partOverLinearityThreshold ^ 1.1 without using floating point (since that's non-deterministic between platforms and thus forbidden due to MP sync)
the approximation for 0 is 0 and the approximation for 100 is 158
so exponentialFactor = the linear interpolation = 47
alternateResult += exponentialFactor = 167
minimumResult = linearityThreshold + ( ( hackingSpent - linearityThreshold ) / 10 ) = 103
BaseHackingAntagonism = Max(alternateResult,minimumResult) = 167
HackingProgressEarned = AIProgressionLevelTotal = 80
ShipDesignHackingCost = (for each hack, 35 * 1.5^n, where n is the number of previous hacks) = 0
KnowledgeHackingCost = (for each 3000 knowledge hacked, 29.3 * 1.5^n, where n is the amount of knowledge hacked previously divided by 3000 and rounded down) = 0
SuperterminalHackingCost = (for each 20 AIP hacked, 3000 * 1.5^n, where n is the AIP hacked previously divided by 20 and rounded down) = 0
FabricatorHackingCost = (for each hack, 30 * 1.5^n, where n is the number of previous hacks) = 0
AdvancedConstructorHackingCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
DesignCorruptionCost = (for each hack, 20 * 1.5^n, where n is the number of previous hacks) = 0
DesignDownloadingCost = (for each hack, 112.5 * 1.5^n, where n is the number of previous hacks) = 125
UnitSabotagingCost = (for each hack, 7.5 * 1.5^n, where n is the number of previous hacks) = 5
SensorHackCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
BeaconHackCost = (for each hack, 100 * 1.5^n, where n is the number of previous hacks) = 0
ExileSurveyCost = (for each hack, 10 * 1.5^n, where n is the number of previous hacks) = 0
since this is a post-response and HaP is actually negative, show some mercy in case they just simul-hacked their way into the negative thousands: BaseHackingAntagonism += hackingProgress = 117
since totalAntagonism > 100, multiplierForSabotageResponseSpawn += ( totalAntagonism - 100 ) / 200 = 1.08
spawnStrength *= multiplierForSabotageResponseSpawn = 15.19
spawnedType:SpireTeleportingLeechIII quantity:1 (strength-each:4)
spawnedType:VampireClawIII quantity:1 (strength-each:3.43)
spawnedType:AntiArmorShipIII quantity:1 (strength-each:1.6)
spawnedType:ZenithViralShredderIII quantity:1 (strength-each:2)
spawnedType:TackleDroneLauncherIII quantity:1 (strength-each:36)


malkiel

Aug 12, 2014 11:20 am

reporter   ~0038961

I have determined that there is nothing wrong with those rolls.

The AI simply had not unlocked those guardian types for that game. in my -218M hacking test, one of the logs rolled gravity guardian and generated it fine, while another rolled sniper and failed.

Issue History

Date Modified Username Field Change
Jul 31, 2014 10:40 am malkiel New Issue
Jul 31, 2014 10:40 am malkiel File Added: LogicLog_AIMechanic_CounterHacking.txt
Jul 31, 2014 10:40 am malkiel Relationship added child of 0015602
Aug 12, 2014 11:20 am malkiel Note Added: 0038961
Aug 12, 2014 11:20 am malkiel Resolution open => no change required