Run Re-Do
This commit is contained in:
@@ -74,6 +74,22 @@ namespace ProjectM.Simulation
|
||||
/// mining isn't a silent cold deadlock. Ore-only so the 'build a Fabricator to arm turrets' lesson survives.</summary>
|
||||
public const int StartingOre = 50;
|
||||
|
||||
// ---- Expedition run economy (RoomFieldSystem / RunDirectorSystem) ----
|
||||
|
||||
/// <summary>Run-wide resource-node allotment: RunDirectorSystem stages it into RunRuntime.NodeBudgetRemaining
|
||||
/// at the launch edge; RoomFieldSystem floors each room's scatter to what remains and spends it down. THE
|
||||
/// scarcity knob — ~1.5 nodes/room over an 8-room run (dense Reward rooms drain it fastest; late rooms can
|
||||
/// run dry, which is the intended tension).</summary>
|
||||
public const int ExpeditionNodeBudget = 12;
|
||||
|
||||
/// <summary>Boss-room health multiplier over the base enemy prefab (RoomEnemyDirectorSystem spawns ONE
|
||||
/// boss per Boss room; v1 = a beefed Charger — a real boss kit is a later rung).</summary>
|
||||
public const float BossHealthMultiplier = 8f;
|
||||
|
||||
/// <summary>Boss-room visual scale multiplier (LocalTransform.Scale is a replicated [GhostField] — set once
|
||||
/// at spawn on the baked value, legible at a glance).</summary>
|
||||
public const float BossScaleMultiplier = 1.6f;
|
||||
|
||||
// ---- Inventory (per-player bag; InventoryMath / ResourceHarvestSystem / InventoryDepositSystem) ----
|
||||
|
||||
/// <summary>Max stacks a player can carry; InventoryMath rejects deposits past this and the harvest remainder spills to the global ledger.</summary>
|
||||
@@ -87,7 +103,26 @@ namespace ProjectM.Simulation
|
||||
// inline mods share that one id and are stripped target-agnostically via
|
||||
// TimedModifierUtil.RemoveBySourceId on unequip/swap. Full StatModifier SourceId map (keep DISJOINT):
|
||||
// 0u = pickups + debug-injection; 0x00A0E711 = ability-damage upgrade; 0x00DEB061 = debug stat command;
|
||||
// 0x00E91000.. = equipment (4 slots); 0x00C1A550.. = class traits (Slice 2, permanent).
|
||||
// 0x00B00000..0x00B10000 = run-scoped BOONS (stripped on return); 0x00C1A550.. = class traits (permanent);
|
||||
// 0x00E7A000..0x00E7A100 = permanent META upgrades (Step 12a); 0x00E91000.. = equipment (4 slots).
|
||||
|
||||
/// <summary>Base of the run-scoped BOON SourceId band: each applied pick draws BoonSourceIdBase +
|
||||
/// (BoonPickCounter++ % BoonSourceIdSpan), so boons stack as distinct rows and ONE range-strip on the
|
||||
/// Returning edge clears the whole run's boons (the two-channel model — boons never persist).</summary>
|
||||
public const uint BoonSourceIdBase = 0x00B00000u;
|
||||
|
||||
/// <summary>Width of the boon band [Base, Base+Span) — far above any realistic per-run pick count.</summary>
|
||||
public const uint BoonSourceIdSpan = 0x10000u;
|
||||
|
||||
/// <summary>Base of the PERMANENT meta-upgrade SourceId band: a purchased tier's live StatModifier is
|
||||
/// keyed MetaSourceIdBase + UpgradeId (absolute-value UPSERT — one row per owned upgrade, set to
|
||||
/// ValuePerTier*tier). Persisted via MetaTierState (SaveData v6) and re-applied born-correct at spawn.
|
||||
/// DISJOINT from every other band; NEVER stripped (the permanent channel of the two-channel model).</summary>
|
||||
public const uint MetaSourceIdBase = 0x00E7A000u;
|
||||
|
||||
/// <summary>Width of the meta band [Base, Base+Span) — bounds UpgradeId to a byte-sized catalog.</summary>
|
||||
public const uint MetaSourceIdSpan = 0x100u;
|
||||
|
||||
|
||||
/// <summary>Base for per-slot equipment SourceIds; slot i tags its mods with <c>EquipSourceIdBase + i</c>.</summary>
|
||||
public const uint EquipSourceIdBase = 0x00E91000u;
|
||||
|
||||
Reference in New Issue
Block a user