test: cover run
This commit is contained in:
1 parent
6f581d988e
commit
8d0fb81ba9
1 file changed
+173
-4
+173
-4
@@ -14574,10 +14574,179 @@ end
|
|||||||
local order = {
|
local order = {
|
||||||
"rngDeterminism", "mapDeterminism", "tilesRegistry", "fovKnownScene", "losSightLine",
|
"rngDeterminism", "mapDeterminism", "tilesRegistry", "fovKnownScene", "losSightLine",
|
||||||
"astarPathing", "combatResolution", "itemsAndEquipment", "affixes", "statusEffects",
|
"astarPathing", "combatResolution", "itemsAndEquipment", "affixes", "statusEffects",
|
||||||
"scheduler", "generators", "connectivityRepair", "dungeonPersistence", "monsterAiChase", "monsterAiRanged",
|
"scheduler", "generators",
|
||||||
"monsterAiFlee", "monsterAiDeterministic", "doorsAndKeys", "traps", "lightAndDark",
|
"mazeGeneratorIsDeterministicDiffersAcrossSeedsAndLeavesEveryFloorCellReachable",
|
||||||
"identification", "effects", "messageLog", "weaponAffixOnHit", "saveLoadRoundTrip",
|
"mazeGeneratorIsRegisteredButExcludedFromTheDepthCycle",
|
||||||
"deterministicPlaythrough", "autoplayDescends",
|
"mazeGeneratorProducesOneWideCorridorsRatherThanOpenRooms",
|
||||||
|
"mazeGeneratorBraidingOpensSomeDeadEndsWithoutTouchingConnectivity",
|
||||||
|
"prefabVaultSizeMatchesItsWidestRowAndItsRowCount",
|
||||||
|
"prefabVaultFitsAcceptsAnAnchorWithAWallGapToEveryBorderAndRejectsOneWithout",
|
||||||
|
"prefabVaultStampWritesEveryGlyphAndCollectsTreasureMonsterAndLootMarkersInMapOrder",
|
||||||
|
"prefabVaultStampIsDeterministicForAFixedAnchor",
|
||||||
|
"builderCanBeExplicitlySteeredToAMazeFloorAndStillYieldsAPlayableLevel",
|
||||||
|
"connectivityRepair", "dungeonPersistence", "monsterAiChase", "monsterAiRanged",
|
||||||
|
"monsterAiFlee", "monsterAiDeterministic",
|
||||||
|
"aiActConfusedMonsterSometimesStumblesInsteadOfChasing",
|
||||||
|
"aiActWithoutConfusionAlwaysRunsTheNormalBehaviour",
|
||||||
|
"aiActBlindedArcherNeitherShootsNorChasesEvenWithAClearShot",
|
||||||
|
"gameAdjacentAllyFindsACompanionStandingRightNextToAMonster",
|
||||||
|
"gameAdjacentAllyIgnoresAHostileMonsterAndOnlyCountsCardinalAdjacency",
|
||||||
|
"gameAdjacentAllyBreaksTiesByTheLowerEntityIdAndIgnoresADeadAlly",
|
||||||
|
"aiChaseAttacksAnAllyBlockingTheOnlyCorridorToThePlayerInsteadOfIdlingForever",
|
||||||
|
"aiChasePrefersAnAdjacentPlayerOverAnAdjacentAllyWhenBothAreInMeleeRange",
|
||||||
|
"aiPackAttacksAnAllyBlockingTheOnlyCorridorToThePlayerInsteadOfIdlingForever",
|
||||||
|
"aiTunnelAttacksAnAllyBlockingItsOnlyGapInsteadOfIdling",
|
||||||
|
"aiRangedAttacksABlockingAllyWhenItHasNoLineOfSightToThePlayerAtAll",
|
||||||
|
"gameMoveMonsterAttacksAnAllyItBumpsIntoInsteadOfDoingNothing",
|
||||||
|
"aiActConfusedMonsterCanStumbleIntoAttackingABlockingAllyInsteadOfIdling",
|
||||||
|
"doorsAndKeys", "traps",
|
||||||
|
"gameSpringTrapConfuseEffectAppliesToAnyVictimNotJustThePlayer",
|
||||||
|
"gameSpringTrapBlindEffectAppliesToAnyVictimNotJustThePlayer",
|
||||||
|
"gameSpringTrapStunEffectAppliesToAnyVictimNotJustThePlayer",
|
||||||
|
"gameMovePlayerConfusionEitherFollowsTheChosenDirectionOrStumblesElsewhere",
|
||||||
|
"gameMovePlayerConfusionStumbleIntoAWallStillSpendsTheTurn",
|
||||||
|
"gameMovePlayerWithoutConfusionNeverStumbles",
|
||||||
|
"gameAllyActsConfusedReturnsFalseImmediatelyWithoutTheStatus",
|
||||||
|
"lightAndDark",
|
||||||
|
"identification", "identifyGivesEveryPotionTypeItsOwnDistinctUnidentifiedLook", "effects",
|
||||||
|
"effectsMessagesAddressThePlayerInSecondPersonNotThirdPersonSingular",
|
||||||
|
"effectsClarityMessageAddressesThePlayerPossessively",
|
||||||
|
"effectsCureMessagesAddressThePlayerPossessivelyForAllFourOutcomes", "hazards",
|
||||||
|
"shrinePrayGrantsWarBlessingWhenFavorHolds", "shrinePrayGrantsVitalityBlessing",
|
||||||
|
"shrinePrayGrantsWisdomBlessing", "shrinePrayGrantsFortuneBlessingAndCleansesAilments",
|
||||||
|
"shrinePrayCanCurseInsteadOfBless", "shrinePrayFailsWithoutEnoughGold",
|
||||||
|
"shrineCostAndCurseOddsRiseWithUse", "shrineFieldsSurviveSerialization",
|
||||||
|
"builderOccasionallyPlacesAShrineFromDepthFour", "shrinesStayOffTheShallowFloors",
|
||||||
|
"autopilotPraysAtAnUnspentShrineWhenAffordable", "autopilotSkipsAnAlreadyUsedShrine",
|
||||||
|
"shrineRendersItsGlyphWhenVisible",
|
||||||
|
"messageLog", "weaponAffixOnHit",
|
||||||
|
"progressionLeveling", "progressionMonsterKillGrantsXp",
|
||||||
|
"spellCastMissileKillsAndGrantsXp", "spellCastFailsWithoutSpendingState",
|
||||||
|
"spellLearnFromTome", "spellHealAndShield", "spellBlinkMovesWithinRadius",
|
||||||
|
"manaRegeneratesEachTurn",
|
||||||
|
"throwWeaponHitsAndLands", "throwWeaponKillGrantsXp", "throwPotionAppliesHostileEffect",
|
||||||
|
"throwConfusePotionAppliesTheStatusToTheTargetNotTheThrower",
|
||||||
|
"throwBlindPotionAppliesTheStatusToTheTargetNotTheThrower",
|
||||||
|
"throwLevitatePotionAppliesTheStatusToTheTargetNotTheThrower",
|
||||||
|
"throwOutOfRangeFails",
|
||||||
|
"rangedShotHitsAtRangeAndConsumesAmmo", "rangedShotKillGrantsXp", "rangedFailsWithoutAmmo",
|
||||||
|
"rangedFailsOutOfRange", "ammoStacksOnPickup",
|
||||||
|
"trollRegenerateUnlessBurning", "ratHasNoRegen", "wretchDeathBurstsPoisonSpores",
|
||||||
|
"dragonBreathIgnitesPlayer",
|
||||||
|
"necromancerSummonsZombie", "summonRespectsPopulationCap",
|
||||||
|
"curseAtRangeHurtsAndWeakens", "curseDamageIsMitigatedByThePlayersDefenseLikeAnyOtherAttack",
|
||||||
|
"curseBreaksThePlayersMeleeMomentumStack", "curseWearsThePlayersEquippedArmor",
|
||||||
|
"curseWithheldWhenAdjacent", "abilityCooldownBlocksImmediateReuse",
|
||||||
|
"shriekAtRangeBlindsThePlayer", "shriekWithheldWhenAdjacent", "shriekIsUnavailableOutOfRange",
|
||||||
|
"shriekBlindnessReducesTheVictimsEffectiveSightRadius",
|
||||||
|
"healerMendsNeediestAlly", "healerSkipsWhenAlliesAreHealthy",
|
||||||
|
"healerNeverMendsThePlayersOwnCompanionHirelingOrThrall",
|
||||||
|
"rallyBuffsAdjacentAllies", "rallySkipsWhenNoUnbuffedAlliesAdjacent",
|
||||||
|
"rallyNeverBuffsThePlayersOwnCompanionHirelingOrThrall",
|
||||||
|
"footpadStealsThenFlees", "footpadWithNothingToStealStillFlees",
|
||||||
|
"slimeSplitsOnSurvivedHit", "splitCapsAtTwoGenerations",
|
||||||
|
"takeMonsterTurnPrefersAbilityOverMovement", "takeMonsterTurnFallsBackToAiWhenOnCooldown",
|
||||||
|
"abilityFieldsSurviveSerialization",
|
||||||
|
"statusEffectKillGrantsXpAndLogsDeath",
|
||||||
|
"hazardKillDuringMonsterTurnGrantsXp", "hazardStepRunsOncePerPlayerRound",
|
||||||
|
"saveLoadRoundTrip", "deterministicPlaythrough", "autoplayDescends",
|
||||||
|
"amuletSpawnsOnFinalFloorOnly", "descendIsBlockedAtTheFinalFloor",
|
||||||
|
"ascendWithoutAmuletDoesNotWin", "ascendWithAmuletWinsTheGame", "wonGameHaltsTheAutopilot",
|
||||||
|
"autopilotFetchesTheAmuletAndWins",
|
||||||
|
"shopPriceCatalogScalesWithPower", "shopStockRollsAffordableWares",
|
||||||
|
"goldPickupAddsToWalletNotInventory",
|
||||||
|
"affordableWareIsBoughtAutomaticallyOnPickup", "unaffordableWareStaysOnTheGround",
|
||||||
|
"deadKeeperMakesWaresFreeToLoot", "stealingFromShopTurnsTheKeeperHostile",
|
||||||
|
"hostileShopkeeperChasesLikeAnyMonster", "passiveShopkeeperIgnoresTheAdjacentPlayer",
|
||||||
|
"sellItemGrantsHalfPriceAndRemovesIt", "builderOccasionallySeedsAShopWithMatchingWares",
|
||||||
|
"shopAndLooseGoldStayOffTheShallowFloors",
|
||||||
|
"classApplyGrantsFighterStatBonuses", "classApplyGrantsRogueGoldAndAttack",
|
||||||
|
"classApplyGrantsMageManaAndAttack", "classApplyGrantsRangerBowAndAmmo", "invalidClassIsIgnored",
|
||||||
|
"skillLearnRespectsClassLevelAndPoints", "skillCooldownBlocksImmediateReuseAndTicksDown",
|
||||||
|
"fighterCleaveHitsPrimaryAndAdjacentMonsters",
|
||||||
|
"fighterCleaveSplashRespectsAFireImmuneTargetLikeThePrimaryHitAlreadyDoes",
|
||||||
|
"fighterSecondWindRestoresPortionOfMaxHp",
|
||||||
|
"fighterBerserkBoostsAttackAtLowHp", "rogueBackstabDoublesDamageOnFullHpTarget",
|
||||||
|
"rogueEvasionCanFullyNegateMeleeHit", "poisonBladeAppliesPoisonOnNextMeleeHitOnly",
|
||||||
|
"pendingPoisonBladeReadinessSurvivesAGameSaveLoadRoundTrip",
|
||||||
|
"mageOverloadBoostsMissileDamage", "mageMeditateRestoresManaWithinCap",
|
||||||
|
"mageManaShieldRaisesDefenseWhileManaHeld", "rangerMultishotHitsTwoTargetsForOneArrow",
|
||||||
|
"rangerMultishotRespectsPhysicalResistanceOnBothSplitArrows",
|
||||||
|
"rangerCamouflageShrinksDetectionOnDarkFloors", "rangerTrueshotAddsFlatRangedDamage",
|
||||||
|
"effectiveRadiusBlindStatusOverridesLightAndWeatherToAMinimumOfOne",
|
||||||
|
"canSeePlayerBlindedMonsterOnlyDetectsThePlayerAtMeleeRange",
|
||||||
|
"autopilotLearnsSkillsAutomaticallyAsPointsAllow", "skillFieldsSurviveSerialization",
|
||||||
|
"craftingForgeSpendsEssenceForATierOneGem", "craftingMergeGemsCombinesMatchingPairsIntoTheNextTier",
|
||||||
|
"craftingSocketAddsPowerAndSwapsRiderOnResocket", "craftingTemperRaisesPowerAtRisingCostUpToACap",
|
||||||
|
"craftingTemperRefusesWithoutEnoughEssence", "craftingEnchantGrantsAChosenAffixOnce",
|
||||||
|
"craftingDisenchantStripsAffixAndRefundsEssence", "craftingSocketedGemRidersStackWithARolledAffixOnHit",
|
||||||
|
"craftingShockRiderActuallyStunsTheVictimOnItsNextTurnNotJustOnPaper",
|
||||||
|
"gameCraftingWrappersDriveTheFullPipeline", "monsterKillsGrantEssenceScaledToTheirXpReward",
|
||||||
|
"craftingFieldsSurviveSerialization",
|
||||||
|
"alchemyBrewResolvesAKnownPairToItsFixedPotion", "alchemyBrewIsOrderIndependent",
|
||||||
|
"alchemyBrewCurdlesOnAnOpposedPairing", "alchemyLookupRejectsAnUnknownHerb",
|
||||||
|
"gameBrewAtCombinesTwoHerbsIntoAPotionAtACauldron", "gameBrewAtFailsWithoutACauldronUnderfoot",
|
||||||
|
"gameBrewAtRequiresTwoHerbItems", "gameBrewAtCurdlesIntoGasInsteadOfAPotion",
|
||||||
|
"buildersScatterHerbsFromTheFirstFloor", "cauldronsStayOffTheEntranceFloor",
|
||||||
|
"buildersOccasionallyPlaceACauldronFromDepthTwo", "cauldronFieldsSurviveSerialization",
|
||||||
|
"cauldronRendersItsGlyphWhenVisible",
|
||||||
|
"nodesHarvestingAnOreVeinPaysEssenceAndSpendsACharge",
|
||||||
|
"nodesHarvestingAnOreVeinDoublesItsYieldDuringRichVeins",
|
||||||
|
"nodesHarvestingAGemSeamYieldsARawTierOneGemOfItsElement",
|
||||||
|
"nodesGoingFallowRefusesFurtherHarvestsUntilItReopens",
|
||||||
|
"nodesStepCountsDownAndReopensAFallowNode", "nodesFieldsSurviveSerialization",
|
||||||
|
"nodeRendersItsGlyphWhenVisible",
|
||||||
|
"gameHarvestNodeAtAnOreVeinAddsEssenceAndSpendsACharge",
|
||||||
|
"gameHarvestNodeFailsWithoutANodeUnderfoot", "gameHarvestNodeOnAFallowVeinFails",
|
||||||
|
"autopilotHarvestsAnOreVeinWhenIdleAndStandingOnIt", "autopilotSkipsAFallowNode",
|
||||||
|
"buildersNeverPlaceANodeOnTheEntranceFloor", "buildersAlwaysPlaceAtLeastOneNodeFromDepthTwoOn",
|
||||||
|
"corpsesSpawnsForAWildMonsterButNotForUndeadMimicOrBoss",
|
||||||
|
"corpsesNutritionScalesWithTheFelledSpeciesMaxHpClampedToAFixedBand",
|
||||||
|
"corpsesStepCountsDownAndRotsAwayEntirely",
|
||||||
|
"corpsesGoesRottenPastItsThresholdButStaysButcherableUntilThen",
|
||||||
|
"corpsesButcheringFreshMeatAddsFoodToInventoryAndConsumesTheCorpse",
|
||||||
|
"corpsesButcheringRottenMeatPoisonsThePlayerInsteadAndStillConsumesTheCorpse",
|
||||||
|
"corpseFieldsSurviveSerialization", "corpseRendersItsGlyphWhenVisible",
|
||||||
|
"gameAwardKillLeavesACorpseForAWildMonsterButNotForUndeadOrMimic",
|
||||||
|
"gameButcherCorpseAtFreshMeatFeedsThePlayerAndClearsTheCorpse",
|
||||||
|
"gameButcherCorpseFailsWithoutACorpseUnderfoot",
|
||||||
|
"autopilotButchersAFreshCorpseWhenIdleAndStandingOnIt",
|
||||||
|
"autopilotLeavesARottenCorpseAloneRatherThanRiskingPoison",
|
||||||
|
"hungerCurrentDefaultsToCapForAFreshEntity",
|
||||||
|
"hungerTierOfClassifiesEachBandAtItsBoundaries",
|
||||||
|
"hungerAttackAndDefensePenaltiesEscalateByTier",
|
||||||
|
"entityEffectiveAttackAndDefenseFoldInTheHungerPenalty",
|
||||||
|
"hungerSuppressesRegenOnlyAtWeakOrWorse",
|
||||||
|
"hungerTickDrainsByOneAndLogsOnlyOnATierCrossing",
|
||||||
|
"hungerTickBitesForOneHpEveryRoundWhileStarving",
|
||||||
|
"hungerEatCapsAtTheCeilingAndWastesAnOverfullMealIntoBloat",
|
||||||
|
"hungerEatBelowTheCeilingBanksNutritionWithNoWaste",
|
||||||
|
"hungerEatClampsAMealThatWouldOverflowPastTheCapWithoutBloating",
|
||||||
|
"gameHungerTorchTickSuppressesRingRegenOnceThePlayerIsWeak",
|
||||||
|
"gameUseItemEatingFoodRestoresSatiationAndLogsTheMeal",
|
||||||
|
"gameUseItemEatingFoodWhileAlreadyFullAppliesSlowAndLogsBloat",
|
||||||
|
"reanimationRaiseCreatesAThrallAdjacentToThePlayerAndSpendsTheCorpseAndSanity",
|
||||||
|
"reanimationRaiseRefusesARottenCorpseWithoutSpendingAnything",
|
||||||
|
"reanimationRaiseRefusesWithoutEnoughSanityAndLeavesTheCorpseAlone",
|
||||||
|
"reanimationRaiseScalesThrallStatsDownFromTheOriginSpecies",
|
||||||
|
"reanimationRaiseFallsBackToAPlainSkeletonForAnUnrecognisedSpecies",
|
||||||
|
"reanimationRaiseRetiresAnEarlierThrallWhenRaisingAnother",
|
||||||
|
"reanimationActAttacksAnAdjacentHostileMonsterAndCanKillIt",
|
||||||
|
"reanimationActAdvancesOnAVisibleMonsterItCannotYetReach",
|
||||||
|
"reanimationActIgnoresAMonsterBeyondItsSightRadius",
|
||||||
|
"reanimationActBlindedThrallOnlyDetectsAnAdjacentHostileNotOneWithinItsSightRadius",
|
||||||
|
"reanimationActAttackingAnAdjacentMonsterEmitsNoiseThatCanStirADormantBystander",
|
||||||
|
"reanimationActFollowsThePlayerWhenNoMonsterIsVisible",
|
||||||
|
"reanimationActConfusedThrallSometimesStumblesInsteadOfFightingAnAdjacentHostile",
|
||||||
|
"reanimationActCollapsesOnceItsBorrowedAnimationRunsOut",
|
||||||
|
"takeMonsterTurnRoutesAThrallThroughReanimationAct",
|
||||||
|
"gameRaiseCorpseSucceedsAndLogsTheCallAnswered",
|
||||||
|
"gameRaiseCorpseFailsWithoutACorpseUnderfoot",
|
||||||
|
"scavengingHerbForMapsEachWildFactionToItsOwnFixedHerb",
|
||||||
|
"scavengingHerbForReturnsNilForACorpseWithNoBestiaryEntry",
|
||||||
|
"gameScavengeCorpseCarvesTheMatchingHerbAndClearsTheCorpse",
|
||||||
|
"gameScavengeCorpseFailsWithoutACorpseUnderfoot",
|
||||||
|
"gameScavengeCorpseFailsOnARottenCorpse",
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, name in ipairs(order) do
|
for _, name in ipairs(order) do
|
||||||
|
|||||||
Reference in new issue
Block a user