Namespace SurvivorsMaker.Core

Classes

AppliedEffect

Record of one apply, holding what Undo(AppliedEffect, EffectStore) needs. The previous value of a Set lives here, not on the effect, so the same effect can be applied more than once and still undo cleanly.

ConversionOutcome

The input spent and output produced by one explicit conversion evaluation.

DamageFormula

Damage of one hit: (base + Σ stat × coefficient) × (1 + percent stat / 100), rounded, at least MinimumDamage. Every part is a setting so games can change the formula.

Effect

One effect: a target id, an amount and how they are stored. Items, characters, level-up choices and buffs are lists of effects.

EffectDiagnostic

Read-only explanation of an invalid or inactive effect evaluation.

EffectEngine

Built-in apply/undo rules for each EffectMethod.

EffectEvaluationSettings

Effect Evaluation tuning; defaults are defined by the field initializers and can be overridden per game.

EffectHandlers

Custom effect handlers by id.

EffectLeaseState

Save data, separate from the shared definition. Saved conversion markers prevent replay.

EffectStore

Raw effect totals for one player, before stat base values and limits.

StarterStats

Ids of the starter stat set. Games are free to rename, drop or add stats; nothing in Core depends on these ids except the default of PercentStat.

StatBuild

One player's stats: a catalog of base values plus every applied effect. Read final values with Get(string); they include the base value and the stat's limits.

StatCatalog

The list of stats a game uses. Effects that target an id outside the catalog are reported by StatBuild instead of silently creating a new stat.

StatDefinition

One stat a game defines: its id, starting value and optional limits.

StatEfficiencyBinding

Maps one target stat to the stat that scales its acquisition efficiency.

StatExplanation

An on-demand snapshot. Mutating it does not change the build or its cached evaluation.

StatValue

Snapshot of the permanent, temporary, limited and final values for one stat.

StatWallet

Per-combat net ledger. Income statistics and pending net settlement are intentionally separate.

SurvivorsMakerInfo

Package information.

WeaponMath

Weapon numbers that do not depend on the game loop.

Structs

StatContributionDetail

A detached value record. Amount is the effective delta, not the configured operand.

StatScaling

A stat that adds to a weapon's damage: stat value × coefficient.

Interfaces

IEffectHandler

Rules for a custom effect, e.g. "+1 armor for every 5 max health". Register it in EffectHandlers under the id effects put in Handler.

IStatDebitSource

Optional atomic debit capability. False must leave the source unchanged.

IStatSource

Snapshot sources must keep values stable until Revision changes. No side effects on read.

IStatSourceDependencies

Declare derived external sources (e.g. missing health depends on maximum health).

Enums

EffectLifetime

Boundary at which an applied effect expires: ownership, wave or run.

EffectMethod

How an effect writes into an EffectStore.

EffectRounding

How a transformed effect input is reduced to discrete output bundles.

StatContributionLayer

The evaluation stage of an explanation entry, independent of its input read layer.

StatLimitMode

Whether a stat bound is fixed, captured on application or follows a live input.

StatReadLayer

Which evaluation layer supplies a linked or limited effect input.