diff --git a/tests/run.lua b/tests/run.lua index a682cc7..7af4285 100644 --- a/tests/run.lua +++ b/tests/run.lua @@ -14920,6 +14920,179 @@ local order = { "weatherFieldSurvivesSerialization", "renderPanelReportsTheFloorSWeatherWhenPresent", "biomesForDepthCyclesThroughTheCatalogInOrder", "biomesDescribeNamesTheBiomeAndItsAmbientText", + "biomesCatalogEveryEntryNamesARealFactionAndHazardKind", + "biomesNativesAmongFiltersToTheFavoredFactionAndExcludesRangedSpecs", + "builderLevelsCarryTheBiomeMatchingTheirDepthRegardlessOfSeed", + "builderOccasionallyReinforcesAFloorWithADormantNativeMonster", + "builderOccasionallyBloomsAHazardMatchingTheFloorSBiome", + "biomeFieldSurvivesSerialization", + "stealthHandBuiltMonsterDefaultsToAlertWhenAwarenessIsUnset", + "builderPlacesWildDepthOneMonstersAsleepByDefault", + "stealthBossesStartFullyAlertRatherThanDormant", + "stealthSpawnedMinionsStartHuntingRatherThanDormant", + "stealthDormantMonsterWakesImmediatelyWhenThePlayerStandsNextToIt", + "stealthDormantMonsterBeyondItsWakeRadiusNeverStirs", + "stealthDormantMonsterWithinRangeEventuallyWakesOnASuccessfulRoll", + "stealthMeleeAttackOnADormantMonsterDealsATripledSneakBonus", + "stealthHuntingMonsterLosesTrackAndSwitchesToSearching", + "stealthSearchingMonsterReacquiresThePlayerAndReturnsToHunting", + "stealthSearchingMonsterGivesUpAndReturnsToDormant", + "stealthAwarenessFieldsSurviveASaveLoadRoundTrip", + "renderPanelFlagsSleepingFoesSeparatelyFromAwakeOnes", + "compendiumNoteSightingReturnsTrueOnlyOnTheFirstSighting", + "compendiumNoteKillAccumulatesAcrossMultipleKills", + "compendiumEntriesListsEveryWildSpeciesAndEveryBoss", + "gameRecordsASightingTheFirstTimeAMonsterBecomesVisible", + "gameRecordsAKillIntoItsCompendiumOnAwardKill", + "compendiumFieldsSurviveAGameSaveLoadRoundTrip", + "gameReusesThePassedMetaSCompendiumByReference", + "setsCreateBuildsTheCatalogedItemShape", + "setsAttackAndDefenseBonusEscalateAsMorePiecesAreEquipped", + "setsBonusDropsBackWhenAPieceIsUnequipped", + "setsDoNotCrossTalkBetweenDifferentSets", + "gameEquippingASetPieceAppliesItsBonusInActualCombat", + "gameEquippingTheSecondSetPieceLogsTheSetAwakening", + "setsRegenerationAppliesEachTurnAtTheFullIroncladSet", + "builderOccasionallyPlacesASetPieceFromDepthThree", + "setPiecesStayOffTheShallowestTwoFloors", + "setFieldsSurviveSerialization", + "gamePickupTracksSetPiecesFoundForMetaStats", + "metaRenownForScalesWithSetPiecesFound", + "metaRecordRunUnlocksSetCollectorOnceThreePiecesFound", + "renderPanelShowsTheActiveSetBonusWhenOneApplies", + "mimicsFloorItemBuildsADisguisedLootShape", + "mimicsRevealBuildsAHostileMonsterScaledByDepth", + "gamePickupHereRevealsAMimicAndAmbushesThePlayer", + "gameKillingARevealedMimicGrantsItsFixedEssenceReward", + "builderOccasionallyPlacesAMimicFromDepthTwo", + "mimicsNeverAppearOnTheEntranceFloor", + "mimicFieldSurvivesSerialization", + "cursesRollRespectsItsOneInEightChanceAcrossSeedsAndKnownSlots", + "cursesAfflictFoldsThePenaltyIntoTheItemAndKeepsItHidden", + "cursesAfflictNeverDropsPowerOrRangeBelowItsFloor", + "cursesIsCursedAndIsRevealedReadEmptyOrCleanGearSafely", + "cursesIsBoundInChecksASpecificEquippedSlot", + "cursesTryReleaseRevealsAndRefusesABoundSlotButPassesACleanOne", + "cursesCleanseUndoesThePenaltyAndClearsEveryField", + "cursesCleanseWornLiftsEveryCursedSlotAndCountsThem", + "cursesRevealFirstUnknownFindsEarliestSlotAndAdvances", + "cursesDrainAmountOnlyReadsACursedRing", + "cursesLabelHidesUntilRevealedThenPrefixes", + "gameEquippingOverABoundCursedWeaponFailsAndRevealsTheCurse", + "gameEquippingAFreshCurseHidesItUntilYouTryToTakeItOff", + "gameRemoveCurseScrollLiftsEveryCurseCurrentlyWorn", + "gameHungerTorchTickBleedsHpFromACursedRingEachTurn", + "shrinePrayFortuneBlessingAlsoLiftsAnyCurseCurrentlyWorn", + "renderPanelPrefixesCursedGearOnceRevealedButNotBefore", + "builderOccasionallyPlacesACursedPieceOfGear", + "builderNeverCursesAnItemThatAlreadyHasABeneficialAffix", + "cursedFieldsSurviveSerialization", + "momentumStacksReadsZeroForAFreshEntity", + "momentumOnMeleeHitBuildsAndCapsAtItsMaxStacks", + "momentumOnDamagedSnapsTheStackBackToZero", + "momentumAttackBonusScalesLinearlyWithStacks", + "entityEffectiveAttackFoldsInMomentumAlongsideStatusModifiers", + "gamePlayerAttackBuildsMomentumAndItReadsLiveInEffectiveAttack", + "gameMonsterMeleeSnapsMomentumBackToZero", + "gameEvadedMonsterAttackNeverBreaksMomentum", + "gameMimicAmbushAlsoBreaksMomentum", + "renderPanelShowsComboOnlyOnceItIsBuilt", + "momentumFieldSurvivesSerialization", + "conductivityIsWetReadsTheEntitysOwnWetField", + "conductivityTickSoaksOnWaterAndDecaysOneStepAtATimeOffIt", + "conductivityTickReSoaksImmediatelyOnSteppingBackOntoWater", + "conductivityApplyFireDampensDamageOnlyOnceSoaked", + "conductivityApplyLightningBonusesDamageOnlyOnceSoaked", + "conductivityNeverConjuresDamageOutOfAnImmuneResistance", + "conductivityResistsIgnitionOnlyWhileWet", + "statusApplyRefusesBurningOnlyWhileSoakedButOtherEffectsStillApply", + "statusRemoveStripsANamedStatusRegardlessOfItsRemainingDuration", + "statusCureHostileLiftsEveryDebuffButLeavesBuffsUntouched", + "hazardsAfflictDampensFireAndBlocksIgnitionForASoakedVictim", + "gameConductivityTicksAMonsterEachTurnBasedOnTheTileUnderfoot", + "gameConductivityTicksThePlayerEachAutoStepBasedOnTheTileUnderfoot", + "spellShockBoltDealsMoreDamageToASoakedTargetThanADryOne", + "renderPanelShowsWetOnlyWhileSoaked", + "builderCanRollATomeOfTheShockBoltSpell", + "entityWetFieldSurvivesSerialization", + "diggingCanDigAllowsOnlyWallsAndRubble", + "diggingSwingClearsAWallToRubbleOnAnOrdinarySwing", + "diggingSwingClearsRubbleToFloorOnASecondSwing", + "diggingSwingCaveInHurtsTheDiggerAndLeavesTheTileUntouched", + "diggingSwingOreStrikeClearsTheWallOutrightAndPaysEssenceToATrackingDigger", + "diggingSwingOreStrikeSkipsTheEssenceRewardForADiggerThatDoesNotTrackIt", + "diggingWearPickDepletesDurabilityAndBreaksAtZero", + "diggingWearPickIsANoOpWithoutAPickEquipped", + "diggingDirectionsTowardPrefersTheLongerAxisFirst", + "diggingDirectionsTowardOmitsAZeroDelta", + "itemsEquipPickSwapsAnyPriorPickBackIntoInventory", + "shopPicksHaveAPositiveCatalogPrice", + "gameDigFailsWithoutAPickEquipped", + "gameDigFailsWhenNothingAheadIsDiggable", + "gameDigClearsAWallAndWearsThePickDown", + "gameDigBreaksThePickOnItsLastUse", + "gameMonsterTunnelsThroughAWallToReachAndAttackThePlayer", + "pickFieldSurvivesSerialization", + "builderNeverPlacesAPickBeforeDepthTwo", + "builderOccasionallyPlacesAPickFromDepthTwo", + "sanityCurrentDefaultsToMaxForAFreshEntity", + "sanityTierOfClassifiesEachBandAtItsBoundaries", + "sanityAdjustClampsToTheZeroAndMaxBounds", + "sanityAttackAndDefensePenaltiesEscalateByTier", + "entityEffectiveAttackAndDefenseFoldInTheSanityPenalty", + "sanityDarknessDreadFiresOnlyOnADarkFloorWithASpentTorch", + "sanityCorpseDreadCountsOnlyCorpsesAdjacentToThePlayer", + "sanityCorpseDreadCapsAtItsFixedCeiling", + "sanityUndeadDreadCountsOnlyVisibleUndeadAndCapsAtItsCeiling", + "sanityCurseDreadFiresOnlyForARevealedCurse", + "sanityWeatherDreadFiresOnlyForInfestedWeather", + "sanityTotalDreadSumsEverySourceAtOnce", + "sanityTickAppliesDreadAndLogsOnlyOnATierCrossing", + "sanityTickAnnouncesReachingTerrifiedAndBroken", + "sanityTickRecoversAndAnnouncesClimbingBackOutOfBroken", + "sanityTickAnnouncesFullyRegainingComposure", + "sanityTickNeverClimbsPastTheMaxOrReportsAPhantomCrossing", + "sanityRollPanicNeverFiresAboveBroken", + "sanityRollPanicRollsAgainstItsFixedChanceOnceBroken", + "sanityRollScreamNeverFiresAboveTerrified", + "sanityRollScreamAlertsEveryDormantMonsterWithinItsRadius", + "sanityFieldSurvivesSerialization", + "gameEndPlayerTurnTicksSanityAndTheLogReportsATierCrossing", + "gameAutoStepSkipsThePlayerTurnWhenPanicFires", + "gameUseItemPotionOfClarityRestoresSanity", + "renderPanelShowsSanityOnlyOnceItDropsBelowComposed", + "renderPanelShowsTheDiseaseStageOnceThePlayerIsInfectedAndNothingBeforeInfection", + "builderOccasionallyRollsAPotionOfClarityAsLoot", + "builderOccasionallyRollsAPotionOfConfusionAsLoot", + "builderOccasionallyRollsAPotionOfBlindnessAsLoot", + "builderOccasionallyRollsAPotionOfLevitationAsLoot", + "eventsCatalogEntriesEachHaveDistinctStartAndEndFlavorText", + "eventsMonsterDamageMultiplierOnlyFiresDuringBloodmoon", + "eventsEssenceMultiplierOnlyFiresDuringRichVeins", + "eventsSightPenaltyOnlyFiresDuringHush", + "eventsStepNeverStartsOnTheFirstFloorRegardlessOfTheRoll", + "eventsStepEventuallyStartsFromDepthTwoAcrossAHandfulOfSeeds", + "eventsStepCountsDownAndExpiresWithItsEndLine", + "gameMonsterMeleeDamageScalesDuringBloodmoon", + "gameMonsterShootDamageScalesDuringBloodmoon", + "gameKillEssenceIsDoubledDuringRichVeins", + "gameEffectiveRadiusShrinksDuringHush", + "gameEndPlayerTurnEventuallyRollsAFreshEventFromDepthTwo", + "gameEndPlayerTurnAnnouncesAnEventEndingInTheLog", + "renderPanelShowsTheActiveEventAndItsRemainingTurns", + "eventFieldSurvivesSerialization", + "gravesRecordAppendsNewestFirstAndTrimsToMaxRecorded", + "gravesEligibleForOnlyIncludesGravesAtOrDeeperThanTheQueriedDepth", + "gravesFloorItemBuildsAnInertGraveMarkerShape", + "gravesRevealScalesHpAndAttackWithCarriedWealthAndCaps", + "gravesLootForReturnsHalfGoldAndAThirdEssenceRoundedDown", + "graveFieldsSurviveSerialization", + "gamePickupHereWakesAGraveShadeAndAmbushesThePlayer", + "gameKillingARevealedShadeGrantsItsFixedXpAndPaysOutGraveLoot", + "gravesShadeLeavesNoCorpseLikeAnyOtherUndead", + "gameGraveEntryCapturesDepthGoldEssenceAndClassAtTheMomentOfDeath", + "gameGraveEntryDefaultsToWandererForAClasslessRun", + "builderNeverPlacesAGraveWhenOptionsCarriesNone", } for _, name in ipairs(order) do