test: strengthen tests for run
This commit is contained in:
1 parent
e6fc26f253
commit
a22754c83a
1 file changed
+173
+173
@@ -15093,6 +15093,179 @@ local order = {
|
|||||||
"gameGraveEntryCapturesDepthGoldEssenceAndClassAtTheMomentOfDeath",
|
"gameGraveEntryCapturesDepthGoldEssenceAndClassAtTheMomentOfDeath",
|
||||||
"gameGraveEntryDefaultsToWandererForAClasslessRun",
|
"gameGraveEntryDefaultsToWandererForAClasslessRun",
|
||||||
"builderNeverPlacesAGraveWhenOptionsCarriesNone",
|
"builderNeverPlacesAGraveWhenOptionsCarriesNone",
|
||||||
|
"buildersOnlyRollAGraveOntoAFloorAtOrShallowerThanWhereItWasDug",
|
||||||
|
"buildersOccasionallyPlaceAnEligibleGraveFromSuppliedOptions",
|
||||||
|
"buildersInsertAGraveWithoutDisturbingAnyOtherPlacement",
|
||||||
|
"metaGravesFieldDefaultsToEmptyAndSurvivesASaveLoadRoundTrip",
|
||||||
|
"proficiencyKeyForReadsFistsWhenUnarmedAndTheWeaponsNameOnceEquipped",
|
||||||
|
"proficiencyOnMeleeHitAccumulatesAndReturnsOnlyOnARankCrossing",
|
||||||
|
"proficiencyAttackBonusReadsTheHighestRankCrossedForTheCurrentKeyAlone",
|
||||||
|
"entityEffectiveAttackFoldsInProficiencyAlongsideMomentumAndSanity",
|
||||||
|
"gamePlayerAttackAccumulatesProficiencyAndLogsOnlyOnARankCrossing",
|
||||||
|
"renderPanelShowsMasteryOnlyOnceARankIsCrossed",
|
||||||
|
"proficiencyFieldSurvivesSerialization",
|
||||||
|
"proficiencyOnHitWithAndBonusForTrackAnExplicitKeyIndependentOfKeyFor",
|
||||||
|
"gameFireAtAccumulatesBowSpecificProficiencySeparateFromMelee",
|
||||||
|
"ascensionCatalogEntriesHaveUniqueKeysAndAtLeastOneEffectHook",
|
||||||
|
"ascensionIsUnlockedRequiresMeetingBothDepthAndWinRequirements",
|
||||||
|
"ascensionIsUnlockedWithNoMetaLocksEveryCatalogedMutator",
|
||||||
|
"ascensionResolveDropsUnknownAndStillLockedKeys",
|
||||||
|
"ascensionResolveDeduplicatesAndReordersToCatalogOrder",
|
||||||
|
"ascensionResolveWithNoRequestReturnsEmpty",
|
||||||
|
"ascensionIsActiveTrueOnlyForKeysInTheActiveList",
|
||||||
|
"ascensionDamageMultiplierMultipliesAcrossActiveMutators",
|
||||||
|
"ascensionEssenceMultiplierAppliesFamineAlone",
|
||||||
|
"ascensionSightPenaltySumsAcrossActiveMutators",
|
||||||
|
"ascensionRenownBonusPercentSumsRatherThanCompounds",
|
||||||
|
"ascensionApplyToPlayerHalvesMaxHpAndDoublesAttackForGlassCannon",
|
||||||
|
"ascensionApplyToPlayerHalvesDefenseForFrail",
|
||||||
|
"gameNewResolvesRequestedMutatorsAgainstMetaAndAppliesTheirDeltas",
|
||||||
|
"gameMonsterMeleeDamageStacksBloodboundWithBloodmoonMultiplicatively",
|
||||||
|
"gameKillEssenceStacksFamineWithRichVeinsMultiplicatively",
|
||||||
|
"gameEffectiveRadiusStacksNightblindWithHush",
|
||||||
|
"metaRenownForAddsTheAscensionBonusOnTopOfTheBaseScore",
|
||||||
|
"ascensionFieldSurvivesASaveLoadRoundTrip",
|
||||||
|
"renderPanelShowsActiveAscensionMutatorsByKey",
|
||||||
|
"durabilityFreshWeaponStartsAtMaxAndIsNotBroken",
|
||||||
|
"durabilityWearWeaponDecrementsAndBreaksAtZeroSubtractingItsPower",
|
||||||
|
"durabilityWearWeaponIsANoOpOnceAlreadyBroken",
|
||||||
|
"durabilityWearArmorBreaksAndSubtractsItsPowerFromDefense",
|
||||||
|
"durabilityWearBowBreaksWithoutTouchingAnyStatDirectly",
|
||||||
|
"durabilityEffectivePowerIsZeroForABrokenItemAndFullOtherwise",
|
||||||
|
"durabilityRepairFailsWithoutEnoughGoldOrOnAPristineItem",
|
||||||
|
"durabilityRepairRestoresFullDurabilityAndFoldsPowerBackInAfterABreak",
|
||||||
|
"durabilityRepairOnANotYetBrokenItemJustTopsUpDurabilityWithoutTouchingStats",
|
||||||
|
"equipWeaponAddsOnlyEffectivePowerForAnAlreadyBrokenWeapon",
|
||||||
|
"rangedFireDealsNoBowBonusOnceTheBowIsBroken",
|
||||||
|
"gamePlayerAttackWearsTheEquippedWeaponAndLogsWhenItBreaks",
|
||||||
|
"gameMonsterMeleeWearsThePlayersArmorAndLogsWhenItBreaks",
|
||||||
|
"gameFireAtWearsTheEquippedBowAndLogsWhenItBreaks",
|
||||||
|
"gameBrokenEquippedSlotFindsTheFirstBrokenPieceInPriorityOrder",
|
||||||
|
"gameRepairEquippedSpendsGoldAndLogsSuccess",
|
||||||
|
"gameRepairEquippedFailsAndLogsWhenGoldIsShort",
|
||||||
|
"autopilotRepairsBrokenGearAutomaticallyWhenAffordable",
|
||||||
|
"durabilityFieldsSurviveSerialization",
|
||||||
|
"renderPanelShowsWornGearOnlyOnceItHasTakenDamage",
|
||||||
|
"disarmSweepDetectsAHiddenTrapWithinOneStepEventuallyAcrossAHandfulOfSeeds",
|
||||||
|
"disarmSweepNeverDetectsATrapTwoStepsAway",
|
||||||
|
"disarmSweepNeverRedetectsAnAlreadyDetectedOrRevealedTrap",
|
||||||
|
"disarmOddsForClimbWithLevelButNeverReachTheDenominator",
|
||||||
|
"disarmAttemptOnSuccessRemovesTheTrapAndPaysSalvage",
|
||||||
|
"disarmAttemptOnFailureSpringsTheTrapOnThePlayer",
|
||||||
|
"gameDisarmTrapRefusesAnUndetectedOrAlreadySprungTrap",
|
||||||
|
"gameDisarmTrapSucceedsOrSpringsExactlyLikeDisarmAttempt",
|
||||||
|
"gameEndPlayerTurnEventuallyDetectsAnAdjacentTrapAcrossAHandfulOfSeeds",
|
||||||
|
"trapDetectedFieldSurvivesSerialization",
|
||||||
|
"secretsSweepDiscoversAnAdjacentHiddenDoorEventuallyAcrossAHandfulOfSeeds",
|
||||||
|
"secretsSweepNeverDiscoversADoorTwoStepsAway",
|
||||||
|
"secretsSweepNeverRediscoversAnAlreadyDiscoveredDoor",
|
||||||
|
"secretsSweepOpensTheWallIntoAPlainClosedDoorOnDiscovery",
|
||||||
|
"builderOccasionallyPlacesASecretDoorGuardingAGenuinelyUnreachableAlcove",
|
||||||
|
"builderNeverPlacesASecretDoorAboveDepthTwo",
|
||||||
|
"gameEndPlayerTurnEventuallyDiscoversAnAdjacentSecretDoorAcrossAHandfulOfSeeds",
|
||||||
|
"secretDoorFieldsSurviveSerialization",
|
||||||
|
"chestsNewLootAlwaysIncludesGoldAndExactlyOneGearPiece",
|
||||||
|
"chestsNewNeverRollsTrappedOnAnUnlockedChest",
|
||||||
|
"chestsIsLockedIsTrueForALockedUnopenedChestAndFalseOnceOpened",
|
||||||
|
"chestsOpenGrantsEveryLootItemAndEmptiesTheChest",
|
||||||
|
"chestsOpenRefusesAnAlreadyEmptiedChest",
|
||||||
|
"chestsOpenRefusesALockedChestAndLeavesItsLootUntouched",
|
||||||
|
"chestsUnlockWithKeySpendsExactlyOneKeyAndGrantsTheHoard",
|
||||||
|
"chestsUnlockWithKeyFailsWithoutAKeyAndLeavesTheChestLocked",
|
||||||
|
"chestsUnlockWithKeyRefusesAChestThatIsNotLocked",
|
||||||
|
"chestsPickFailsImmediatelyWithoutALockpickAndSpendsNothing",
|
||||||
|
"chestsPickOnSuccessOpensTheChestAndGrantsTheHoard",
|
||||||
|
"chestsPickAlwaysSpendsTheLockpickWhetherItWinsOrLoses",
|
||||||
|
"chestsPickOnFailureAgainstATrappedChestSpringsItAndLeavesTheLockStanding",
|
||||||
|
"chestsPickOnFailureAgainstAnUntrappedChestJustWastesThePick",
|
||||||
|
"chestsOddsForClimbsWithLevelButNeverReachesTheDenominator",
|
||||||
|
"gameOpenChestOpensAnUnlockedChestOnSightAndCountsIt",
|
||||||
|
"gameOpenChestUnlocksWithACarriedKeyBeforeEverTryingALockpick",
|
||||||
|
"gameOpenChestFallsBackToALockpickWhenNoKeyIsCarried",
|
||||||
|
"gameOpenChestRefusesWhenNothingIsHereOrItIsAlreadyEmpty",
|
||||||
|
"chestsFieldsSurviveSerialization",
|
||||||
|
"renderShowsAClosedChestGlyphAndAnOpenedOneOnceEmptied",
|
||||||
|
"autopilotOpensAnUnlockedChestOnSightButSkipsALockedOneWithNoKeyOrPick",
|
||||||
|
"mercenaryHireTakesOnAKnownRosterEntryAdjacentToThePlayer", "mercenaryHireRejectsAnUnknownRosterKey",
|
||||||
|
"mercenaryHireReplacesAnEarlierHireling", "mercenaryAttacksAdjacentHostileMonsterAndCanKillIt",
|
||||||
|
"mercenaryAdvancesOnAVisibleMonsterItCannotYetReach", "mercenaryIgnoresAMonsterBeyondItsSightRadius",
|
||||||
|
"mercenaryActBlindedHirelingOnlyDetectsAnAdjacentHostileNotOneWithinItsSightRadius",
|
||||||
|
"mercenaryActAttackingAnAdjacentMonsterEmitsNoiseThatCanStirADormantBystander",
|
||||||
|
"mercenaryFollowsThePlayerWhenNoMonsterIsVisible",
|
||||||
|
"mercenaryActConfusedHirelingSometimesStumblesInsteadOfFightingAnAdjacentHostile",
|
||||||
|
"fieldMedicMendsThePlayerWhenIdle",
|
||||||
|
"mercenaryStopsChasingAndFollowingOnceSulking", "mercenaryStillFightsAnAdjacentHostileEvenWhileSulking",
|
||||||
|
"mercenaryPayWagePaysWhenAffordableAndRestoresLoyalty", "mercenaryPayWageShortsAndDropsLoyaltyWhenGoldIsShort",
|
||||||
|
"mercenaryPayWageDesertsOnceLoyaltyBottomsOut", "mercenaryPayWageIsANoOpWithNoHirelingOnTheLevel",
|
||||||
|
"mercenaryDismissReleasesTheHirelingWithNoPenalty", "mercenaryDismissFailsWithNoOneUnderContract",
|
||||||
|
"useItemOnAContractHiresTheNamedMercenaryAndConsumesIt",
|
||||||
|
"useItemOnAContractWithAnUnknownRosterKeyFailsWithoutConsumingIt",
|
||||||
|
"takeMonsterTurnRoutesAHirelingThroughMercenariesAct", "aFallenHirelingIsLoggedAndSweptWithoutAwardingXp",
|
||||||
|
"gameEndPlayerTurnPaysTheHirelingWageOnceTheIntervalElapses", "mercenaryFieldsSurviveSerialization",
|
||||||
|
"shopPriceOfAContractMatchesItsRosterHireCost", "shopStockCanRollAContractWithAPositiveCatalogPrice",
|
||||||
|
"autopilotHiresACarriedContractWhenNoHirelingIsYetUnderContract",
|
||||||
|
"morgueScoreWeighsEveryStatByItsOwnFixedWeight", "morgueScoreAddsTheWinBonusOnlyWhenWon",
|
||||||
|
"morgueEquipmentListsOnlyOccupiedSlotsInFixedOrder", "morgueEquipmentPrefixesARevealedCurseButNotAHiddenOne",
|
||||||
|
"morgueKillTallySortsByCountThenByCatalogOrderOnTies", "morgueBuildMirrorsGameStatsPlayerAndCompendium",
|
||||||
|
"morgueFormatRendersOutcomeGearKillsAndScoreInOrder", "morgueFormatNamesTheWinOutcomeWhenWon",
|
||||||
|
"morgueFormatOmitsEquipmentAndKillsSectionsWhenEmpty",
|
||||||
|
"leaderboardRecordOnAnEmptyBoardLandsAtRankOne", "leaderboardRecordKeepsTheBoardSortedBestScoreFirst",
|
||||||
|
"leaderboardRecordDropsAnEntryThatDoesNotCrackTheCap", "leaderboardRecordBumpsTheWeakestEntryOffOnceFull",
|
||||||
|
"leaderboardTopReturnsAtMostCountEntriesInOrder", "leaderboardTopDefaultsToTheFullCapacityWhenNoCountIsGiven",
|
||||||
|
"leaderboardBestScoreReadsTheTopEntryOrZeroWhenEmpty",
|
||||||
|
"metaLeaderboardFieldDefaultsToEmptyAndSurvivesASaveLoadRoundTrip",
|
||||||
|
"replayRunIsDeterministicAndMatchesAFreshGamesOwnReport", "replayVerifyConfirmsAGenuineReportAndReturnsItsScore",
|
||||||
|
"replayVerifyFlagsATamperedReportAndStillReturnsTheRealScore",
|
||||||
|
"replayComparedFieldsCoversEveryFieldMorgueScoreActuallyReads",
|
||||||
|
"replayMatchesReportsTheFirstDivergingFieldInComparedFieldsOrder",
|
||||||
|
"challengesForDaySameDayAlwaysReturnsTheSamePresetAndSeed", "challengesForDayCyclesThroughTheCatalogInOrder",
|
||||||
|
"challengesSeedForStaysWithinTheDefaultSeedRange", "challengesCatalogPresetsReferenceOnlyRealClassesAndMutators",
|
||||||
|
"challengesDescribeNamesTheClassAndEveryRequiredMutator", "challengesDescribeOmitsTheMutatorJoinWhenNoneAreRequired",
|
||||||
|
"challengesSatisfiedByFailsOnAClassMismatch", "challengesSatisfiedBySucceedsWithTheRightClassAndNoMutatorsRequired",
|
||||||
|
"challengesSatisfiedByFailsWhenARequiredMutatorNeverActivated",
|
||||||
|
"challengesSatisfiedBySucceedsOnceItsRequiredMutatorIsActuallyActive",
|
||||||
|
"analyticsWinRateIsZeroWithNoRecordedRunsAndFractionalOtherwise",
|
||||||
|
"analyticsAverageScoreIsZeroOnAnEmptyBoardAndTheMeanOtherwise",
|
||||||
|
"analyticsFavoriteClassPicksTheMostFrequentTiesBrokenByFirstAppearance",
|
||||||
|
"analyticsPercentileRanksAScoreAgainstTheBoardItWouldJoin",
|
||||||
|
"titlesForRenownNeverReturnsNilForAnyNonNegativeRenown",
|
||||||
|
"titlesForRenownWalksTheLadderFromTheBottomUp", "titlesToNextCountsDownToTheNextThresholdAndNilsOutAtTheTop",
|
||||||
|
"morgueBuildOmitsTitleWithoutMetaAndIncludesItWithMeta",
|
||||||
|
"exportLeaderboardCsvOnAnEmptyBoardIsJustTheHeaderRow", "exportLeaderboardCsvEmitsOneRowPerEntryInRankOrder",
|
||||||
|
"exportLeaderboardCsvRendersBooleansAsLowercaseWords", "exportCompendiumCsvListsEverySpeciesSeenOrNot",
|
||||||
|
"streaksCurrentIsZeroAndNilOnAnEmptyHistory", "streaksCurrentCountsOnlyTheUnbrokenRunAtTheEnd",
|
||||||
|
"streaksRecordTrimsHistoryPastItsCap", "streaksRecordDropsTheOldestEntryNotTheNewestOnceOverCap",
|
||||||
|
"streaksBestWinStreakFindsTheLongestWinRunAnywhereNotJustTheActiveOne",
|
||||||
|
"streaksBestWinStreakIsZeroWithNoWinsAtAll", "metaRecordRunFeedsStreaksAndRunHistorySurvivesASaveLoadRoundTrip",
|
||||||
|
"metaRecordRunUnlocksComebackOnlyAfterALossThenAWin",
|
||||||
|
"metaRecordRunDoesNotUnlockComebackOnAFirstEverWinOrAWinAfterAWin",
|
||||||
|
"nemesisIsEligibleRequiresAHuntingHostileAndExcludesEverySpecialCase",
|
||||||
|
"nemesisPickHunterReturnsTheNearestEligibleHunterBreakingTiesByListOrder",
|
||||||
|
"nemesisBeginFromCapturesSpeciesAndHpFractionAtGrudgeOne",
|
||||||
|
"nemesisEscalateRaisesGrudgeAndHealsTowardFullBothCapped",
|
||||||
|
"nemesisSpawnScalesHpAndAttackWithGrudgeAndAppliesTheCarriedHpFraction",
|
||||||
|
"nemesisNameForEscalatesThroughEachEpithetAndClampsAtTheLast",
|
||||||
|
"nemesisXpBonusAndBountyGoldScaleWithGrudge",
|
||||||
|
"gameDescendCanRollANewNemesisFromAHuntingMonsterLeftOnTheDepartingFloor",
|
||||||
|
"gameDescendNeverRollsANewNemesisFromAMonsterThatIsNotActuallyHunting",
|
||||||
|
"gameNemesisFollowsAcrossMultipleDescentsEscalatingItsGrudgeEachTime",
|
||||||
|
"gameAscendCarriesAnActiveNemesisAlongButNeverRollsANewOne",
|
||||||
|
"gameDescendCarriesEveryLivingAllyOntoTheNextFloorInsteadOfAbandoningThem",
|
||||||
|
"gameAscendCarriesEveryLivingAllyBackOntoThePreviousFloorToo",
|
||||||
|
"gameAwardKillOnANemesisGrantsBonusXpAndBountyGoldAndClearsTheHunt",
|
||||||
|
"nemesisFieldsSurviveEntityAndGameSerialization",
|
||||||
|
"factionsAreRivalsChecksBothDirectionsAndExcludesSameFactionAndNil",
|
||||||
|
"infightingTargetPicksTheNearestVisibleRivalOverACloserNonRival",
|
||||||
|
"infightingTargetIgnoresARivalBeyondSightRange",
|
||||||
|
"infightingTargetIgnoresARivalBehindAWallEvenWithinSightRange",
|
||||||
|
"infightingTargetIgnoresNonRivalsWithoutDiscord",
|
||||||
|
"infightingTargetUnderDiscordPicksNearestCreatureOfAnyKindIncludingACompanion",
|
||||||
|
"infightingTargetReturnsNilOnceDiscordHasExpired",
|
||||||
|
"infightingStrikeOnAPlainMonsterSpawnsACorpseButAwardsThePlayerNothing",
|
||||||
|
"infightingStrikeThatKillsACompanionRoutesThroughTheNormalAllyDeathMessage",
|
||||||
|
"infightingStrikeEmitsNoiseThatCanStirADormantBystanderNotInvolvedInTheFight",
|
||||||
|
"infightingStrikeAppliesTheAttackersEliteLifestealAgainstAnyDefenderNotJustThePlayer",
|
||||||
|
"infightingStrikeAppliesTheAttackersEliteOnHitRiderAgainstAnyDefenderNotJustThePlayer",
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, name in ipairs(order) do
|
for _, name in ipairs(order) do
|
||||||
|
|||||||
Reference in new issue
Block a user