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.

CharacterRecord
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.

LevelUpSettings
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.

OfferSnapshot
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.

RunRequest
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.

RunSystems
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.

SetBonus
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.

ShopSettings
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.

UnlockDef
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.

ItemKind
OfferChannel

Bit mask of acquisition channels: shop, level-up and reward.

OfferFailure

Candidate rejection category returned by the shared acquisition validator.

OfferKind
OfferPath

Candidate-selection path recorded for diagnostics, including tier fallback and guarantees.

RunMode
RunPhase
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.

UnlockCondition
UnlockTarget
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.