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",
|
||||
"gameGraveEntryDefaultsToWandererForAClasslessRun",
|
||||
"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
|
||||
|
||||
Reference in new issue
Block a user