Namespace SurvivorsMaker.Run
Classes
- AcquisitionPolicy
Null on a definition uses legacy eligibility. An explicit policy grants no channels by default.
- AcquisitionValidator
Pure preflight shared by generation and execution. Definition identity stays reference based.
- BuildSynergyReport
Detached maker-tool output. Counts do not change availability or run state.
- CharacterDef
Starting loadout, base effects and acquisition restrictions for a playable character.
- CharacterPoolConstraints
Optional character-specific kind, tag, group and family ownership limits.
- CounterTransferRule
Counter key and transfer policy applied during item-instance replacement.
- InstanceCounter
Named integer state owned by a single acquired item instance.
- InstanceTransferSettings
Instance Transfer tuning; defaults are defined by the field initializers and can be overridden per game.
- InventoryAnalysis
On-demand Build Lab inspection; no work is added to run or simulation ticks.
- InventoryRules
Rebuilds inventory effects from definition references in stable apply order.
- ItemDef
Shared item/upgrade definition; acquired copy state belongs to RunState rather than this object.
- LegacySaveImport
Separated profile and run envelopes produced by importing the legacy combined save.
- LevelUpChoice
One level-up choice: an upgrade item, or (field mode) a weapon.
- LevelUpRules
Creates level-up windows through the common pool; Flow owns transitions and weapon grants.
- LuckTierRollPolicy
Default tier policy that combines progression tier odds with the configured luck transform.
- MemoryOptionsStore
Session-only options storage that copies values on load and save.
- MemoryProfileStore
Detached copies model the serialization boundary without a file system.
- MemoryRunStore
Session-only saved-run storage that copies snapshots on load and save.
- OfferBanRule
Explicit wave interval for bans that differ between regular and later progression.
- OfferGuaranteeRule
Candidate requirements and reservation count for a prioritized, progress-limited guarantee.
- OfferPool
Stable content order, finite fallback, and the legacy category/tier/selection random contract.
- OfferPoolRequest
Context and filters for one candidate-generation window; its run owns the random stream.
- OfferPoolResult
Ordered slot selections and diagnostics from one real or preview pool generation.
- OfferPoolSettings
Offer Pool tuning; defaults are defined by the field initializers and can be overridden per game.
- OfferPoolState
Saveable run-scoped bans, guarantee uses and reroll context.
- OfferWeights
Calculates relative candidate weights from category, tags and character preferences.
- OptionsState
User audio, display, accessibility and language preferences stored separately from progress.
- OwnedItemSnapshot
Serializable owned-item instance identity, age and transferable counters.
- OwnedItemState
Identity, acquisition wave, lifetime and counters belonging to one owned item copy.
- ProfileState
Everything kept between runs.
- ProgressionRules
Records completed runs and applies persistent unlock conditions to the content catalog.
- RunContent
Everything a game offers. List order is part of the deterministic contract.
- RunController
Explicit run actions with phase validation before any state changes or random draws.
- RunControllerPoolExtensions
Controller facade without changing the Flow-owned controller type.
- RunInfo
Run phase information.
- RunSaves
Snapshots only between waves; restoring never rolls choices or grants starting items.
- RunSettings
Run tuning; defaults are defined by the field initializers and can be overridden per game.
- RunSnapshot
A run between waves (LevelUp or Shop phase, or Wave before the wave started).
- RunStatSource
Read-only inventory queries plus an atomic currency debit. Definition identity follows Run contracts. Currency reads the committed run balance unless Wallet is supplied (combat must supply its net ledger).
- RunState
Everything that persists between waves. Systems in Run/ read and write it.
- RunTriggerRules
Only successful controller transactions publish facts. Restore never calls this dispatcher.
- SaveEnvelope
Versioned save payload with domain, ownership and integrity metadata.
- SaveMigrationRegistry
Pure data conversions. No serializer, file access, random source or gameplay callbacks.
- SaveReadResult
Validated or migrated save envelope together with a diagnostic read status.
- SetDef
A weapon set; only the highest reached bonus applies.
- ShopOffer
One shop slot.
- ShopRules
Shop generation through the shared pool and atomic acquisition transactions.
- TagLimit
Maximum owned candidate count matching one case-sensitive tag.
- TagWeight
Case-sensitive tag and relative offer weight; multiplier one leaves the weight unchanged.
- TierTable
Tier odds by progress (wave in arena mode, level in field mode).
- TriggerCounterSnapshot
Serializable trigger counter and latch state carried between waves or saves.
- WeaponItemDef
A weapon as owned and sold: its combat definition plus shop data.
- WeaponKindLimit
Owned-weapon limit for one pool category.
Structs
- AcquisitionPlan
Validated inventory destination or merge replacement selected before acquisition mutates state.
- ActiveSetInfo
Reached weapon-set threshold and ownership count for a build explanation.
- BuildTagCount
One count per owned copy/tag; repeated tags on one definition count once.
- GuaranteeUse
Run-scoped record of a guarantee reservation already consumed.
- LinkedEffectInfo
Read-only link, conversion or dependent-limit recipe in a build explanation.
- OfferCandidate
Discriminated item/upgrade or weapon reference used by pools and acquisition validation.
- OfferDiagnostic
Reason a candidate or pool rule could not contribute an offer.
- OfferSelection
A selected candidate with the pool rule that reserved its slot, if any.
- OptionalCount
An enabled count limit that distinguishes a literal zero cap from an unspecified cap.
- RunTriggerFact
Value copy of run-event context passed to a custom run trigger handler.
- TierWeight
Weight of one tier above the lowest: max(0, min(Max, (progress − Start) × PerStep)). The lowest tier gets BaseTotal − Σ higher weights (at least 0).
Interfaces
- IAcquisitionValidator
Shared, read-only eligibility and capacity checks for offers, purchases and upgrade choices.
- IInventoryRules
Progression: derived stats and starting loadout.
- ILevelUpRules
Progression: level-up choices.
- IOfferPool
Generates channel-specific candidates using the same eligibility rules as acquisition.
- IOptionsStore
Persistence boundary for user preferences; implementations own their storage and error handling.
- IPlaytestCommands
Development cheats for the in-game Playtest panel. Implemented by Run/Flow on top of RunController. Calls are rejected with WrongPhase or NotAllowed instead of throwing. A run that used any of them is marked UsedCheats so records and unlocks can ignore it.
- IProfileStore
Where profiles live. Presentation ships a JSON file store; tests use memory.
- IProgressionRules
Progress: unlock evaluation and applying unlocks to content.
- IRunSaves
Progress: snapshots of a run between waves.
- IRunStore
Persistence boundary for an optional saved run, independent of profile and options storage.
- IRunTriggerHandler
Extension point for deterministic run-stage trigger actions using the run-owned random stream.
- ISaveMigration
One explicit source-to-target schema migration; must preserve the supplied source envelope.
- IShopRules
Shop offers, purchases, and weapon management.
- ITierRollPolicy
Extension point for deterministic tier draws using the supplied random stream and scratch list.
Enums
- CounterTransfer
Policy for carrying per-instance counters when items merge or are replaced.
- GuaranteeLifetime
Scope in which a guarantee is consumed: every roll, once per wave or once per run.
- OfferChannel
Bit mask of acquisition channels: shop, level-up and reward.
- OfferFailure
Candidate rejection category returned by the shared acquisition validator.
- OfferPath
Candidate-selection path recorded for diagnostics, including tier fallback and guarantees.
- RunResult
Outcome of a player action. Anything but Ok leaves the run unchanged.
- SaveDomain
Independent persistence domain for profile, options or one saved run.
- SaveReadStatus
Result category of reading, validating or migrating a save envelope.
- TagWeightMode
How multiple matching tag weights combine into one relative candidate weight.
- TierOddsMode
Whether the tier table is interpreted as relative weights or cumulative thresholds.
- WeaponPoolKind
Weapon category used by acquisition and slot limits; Automatic derives the category from combat kind.
- WindowMode
Requested presentation window mode, independent of simulation state.