test: strengthen tests for run

This commit is contained in:
dualfroz committed 2026-09-14 02:50:10 +02:00
1 parent e6fc26f253
commit a22754c83a
1 file changed
+173
+173
View File
@@ -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