View Issue Details
ID | Project | Category | Date Submitted | Last Update | |
---|---|---|---|---|---|
0015608 | AI War 1 / Classic | Bug - Gameplay | Jul 31, 2014 10:40 am | Aug 12, 2014 11:20 am | |
Reporter | malkiel | Assigned To | |||
Status | new | Resolution | no change required | ||
Product Version | 7.047 | ||||
Summary | 0015608: hacking response wild rolls for zombie/gravity guardians not working | ||||
Description | in 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. | ||||
Tags | No tags attached. | ||||
Internal Weight | |||||
child of | 0015602 | considering | keith.lamothe | insane attack, thinking it's a hacking bug |
|
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) |
|
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. |
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 |