@mythxengine/engine
Advanced tools
| /** | ||
| * Tests for three-tier outcome resolution | ||
| */ | ||
| export {}; | ||
| //# sourceMappingURL=outcome.test.d.ts.map |
| {"version":3,"file":"outcome.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/outcome.test.ts"],"names":[],"mappings":"AAAA;;GAEG"} |
| /** | ||
| * Tests for three-tier outcome resolution | ||
| */ | ||
| import { describe, it, expect } from "vitest"; | ||
| import { determineOutcome, isSuccess, isFailure, isPartial, isCritical, toLegacySuccess, fromLegacySuccess, getGMMoves, } from "../resolution/outcome.js"; | ||
| import { BASE_OUTCOME_THRESHOLDS, BASE_CRITICALS } from "@mythxengine/types"; | ||
| describe("determineOutcome", () => { | ||
| describe("basic outcomes", () => { | ||
| it("returns critical_success for margin >= 10", () => { | ||
| const result = determineOutcome({ | ||
| margin: 10, | ||
| natural: 15, | ||
| thresholds: BASE_OUTCOME_THRESHOLDS, | ||
| criticals: BASE_CRITICALS, | ||
| }); | ||
| expect(result).toBe("critical_success"); | ||
| }); | ||
| it("returns critical_success for nat 20", () => { | ||
| const result = determineOutcome({ | ||
| margin: 0, | ||
| natural: 20, | ||
| thresholds: BASE_OUTCOME_THRESHOLDS, | ||
| criticals: BASE_CRITICALS, | ||
| }); | ||
| expect(result).toBe("critical_success"); | ||
| }); | ||
| it("returns success for margin >= 0", () => { | ||
| const result = determineOutcome({ | ||
| margin: 0, | ||
| natural: 12, | ||
| thresholds: BASE_OUTCOME_THRESHOLDS, | ||
| criticals: BASE_CRITICALS, | ||
| }); | ||
| expect(result).toBe("success"); | ||
| }); | ||
| it("returns success for margin = 5", () => { | ||
| const result = determineOutcome({ | ||
| margin: 5, | ||
| natural: 15, | ||
| thresholds: BASE_OUTCOME_THRESHOLDS, | ||
| criticals: BASE_CRITICALS, | ||
| }); | ||
| expect(result).toBe("success"); | ||
| }); | ||
| it("returns partial for margin -1 to -4", () => { | ||
| expect(determineOutcome({ | ||
| margin: -1, | ||
| natural: 10, | ||
| thresholds: BASE_OUTCOME_THRESHOLDS, | ||
| criticals: BASE_CRITICALS, | ||
| })).toBe("partial"); | ||
| expect(determineOutcome({ | ||
| margin: -4, | ||
| natural: 8, | ||
| thresholds: BASE_OUTCOME_THRESHOLDS, | ||
| criticals: BASE_CRITICALS, | ||
| })).toBe("partial"); | ||
| }); | ||
| it("returns failure for margin < -4", () => { | ||
| const result = determineOutcome({ | ||
| margin: -5, | ||
| natural: 7, | ||
| thresholds: BASE_OUTCOME_THRESHOLDS, | ||
| criticals: BASE_CRITICALS, | ||
| }); | ||
| expect(result).toBe("failure"); | ||
| }); | ||
| it("returns critical_failure for nat 1", () => { | ||
| const result = determineOutcome({ | ||
| margin: 5, // Would be success, but nat 1 overrides | ||
| natural: 1, | ||
| thresholds: BASE_OUTCOME_THRESHOLDS, | ||
| criticals: BASE_CRITICALS, | ||
| }); | ||
| expect(result).toBe("critical_failure"); | ||
| }); | ||
| }); | ||
| describe("custom thresholds", () => { | ||
| it("respects custom critical success threshold", () => { | ||
| const result = determineOutcome({ | ||
| margin: 6, | ||
| natural: 15, | ||
| thresholds: { ...BASE_OUTCOME_THRESHOLDS, criticalSuccess: 5 }, | ||
| criticals: BASE_CRITICALS, | ||
| }); | ||
| expect(result).toBe("critical_success"); | ||
| }); | ||
| it("respects custom partial threshold", () => { | ||
| // With partial at -2, margin -3 would be failure | ||
| const result = determineOutcome({ | ||
| margin: -3, | ||
| natural: 8, | ||
| thresholds: { ...BASE_OUTCOME_THRESHOLDS, partial: -2 }, | ||
| criticals: BASE_CRITICALS, | ||
| }); | ||
| expect(result).toBe("failure"); | ||
| }); | ||
| }); | ||
| }); | ||
| describe("outcome helper functions", () => { | ||
| it("isSuccess returns true for success and critical_success", () => { | ||
| expect(isSuccess("critical_success")).toBe(true); | ||
| expect(isSuccess("success")).toBe(true); | ||
| expect(isSuccess("partial")).toBe(false); | ||
| expect(isSuccess("failure")).toBe(false); | ||
| expect(isSuccess("critical_failure")).toBe(false); | ||
| }); | ||
| it("isFailure returns true for failure and critical_failure", () => { | ||
| expect(isFailure("critical_failure")).toBe(true); | ||
| expect(isFailure("failure")).toBe(true); | ||
| expect(isFailure("partial")).toBe(false); | ||
| expect(isFailure("success")).toBe(false); | ||
| expect(isFailure("critical_success")).toBe(false); | ||
| }); | ||
| it("isPartial returns true only for partial", () => { | ||
| expect(isPartial("partial")).toBe(true); | ||
| expect(isPartial("success")).toBe(false); | ||
| expect(isPartial("failure")).toBe(false); | ||
| }); | ||
| it("isCritical returns true for critical outcomes", () => { | ||
| expect(isCritical("critical_success")).toBe(true); | ||
| expect(isCritical("critical_failure")).toBe(true); | ||
| expect(isCritical("success")).toBe(false); | ||
| expect(isCritical("partial")).toBe(false); | ||
| expect(isCritical("failure")).toBe(false); | ||
| }); | ||
| }); | ||
| describe("toLegacySuccess", () => { | ||
| it("returns true for success outcomes including partial", () => { | ||
| expect(toLegacySuccess("critical_success")).toBe(true); | ||
| expect(toLegacySuccess("success")).toBe(true); | ||
| expect(toLegacySuccess("partial")).toBe(true); | ||
| expect(toLegacySuccess("failure")).toBe(false); | ||
| expect(toLegacySuccess("critical_failure")).toBe(false); | ||
| }); | ||
| }); | ||
| describe("fromLegacySuccess", () => { | ||
| it("converts true with high margin to critical_success", () => { | ||
| const result = fromLegacySuccess(true, 12, 18); | ||
| expect(result).toBe("critical_success"); | ||
| }); | ||
| it("converts true with normal margin to success", () => { | ||
| const result = fromLegacySuccess(true, 3, 15); | ||
| expect(result).toBe("success"); | ||
| }); | ||
| it("converts false with partial margin to partial", () => { | ||
| const result = fromLegacySuccess(false, -2, 10); | ||
| expect(result).toBe("partial"); | ||
| }); | ||
| it("converts false with low margin to failure", () => { | ||
| const result = fromLegacySuccess(false, -8, 5); | ||
| expect(result).toBe("failure"); | ||
| }); | ||
| it("converts nat 1 to critical_failure", () => { | ||
| const result = fromLegacySuccess(false, -5, 1); | ||
| expect(result).toBe("critical_failure"); | ||
| }); | ||
| it("converts nat 20 to critical_success", () => { | ||
| const result = fromLegacySuccess(true, 5, 20); | ||
| expect(result).toBe("critical_success"); | ||
| }); | ||
| }); | ||
| describe("getGMMoves", () => { | ||
| it("returns empty array for success", () => { | ||
| const moves = getGMMoves("success", "risky"); | ||
| expect(moves).toEqual([]); | ||
| }); | ||
| it("returns empty array for critical_success", () => { | ||
| const moves = getGMMoves("critical_success", "desperate"); | ||
| expect(moves).toEqual([]); | ||
| }); | ||
| it("returns moves for partial with risky position", () => { | ||
| const moves = getGMMoves("partial", "risky"); | ||
| expect(moves.length).toBeGreaterThan(0); | ||
| expect(moves).toContain("offer_hard_bargain"); | ||
| }); | ||
| it("returns harder moves for failure with desperate position", () => { | ||
| const moves = getGMMoves("failure", "desperate"); | ||
| expect(moves.length).toBeGreaterThan(0); | ||
| expect(moves).toContain("inflict_harm"); | ||
| }); | ||
| it("returns soft moves for failure with controlled position", () => { | ||
| const moves = getGMMoves("failure", "controlled"); | ||
| expect(moves).toContain("reveal_unwelcome_truth"); | ||
| expect(moves).not.toContain("inflict_harm"); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=outcome.test.js.map |
| {"version":3,"file":"outcome.test.js","sourceRoot":"","sources":["../../src/__tests__/outcome.test.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * Tests for stress mechanics: push, resist, recover | ||
| */ | ||
| export {}; | ||
| //# sourceMappingURL=stress.test.d.ts.map |
| {"version":3,"file":"stress.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/stress.test.ts"],"names":[],"mappings":"AAAA;;GAEG"} |
| /** | ||
| * Tests for stress mechanics: push, resist, recover | ||
| */ | ||
| import { describe, it, expect } from "vitest"; | ||
| import { pushRoll, resistConsequence, recoverStress, flashback, isTraumaRisk, } from "../resolution/stress.js"; | ||
| import { createRNG } from "../rng/index.js"; | ||
| // Test character factory | ||
| function createTestCharacter(overrides = {}) { | ||
| return { | ||
| id: "test-char", | ||
| name: "Test Character", | ||
| abilities: { STR: 2, AGI: 1, WIT: 0, CON: 1 }, | ||
| hp: { current: 20, max: 20 }, | ||
| stress: { current: 0, max: 9 }, | ||
| trauma: [], | ||
| skills: [], | ||
| specialAbilities: [], | ||
| conditions: [], | ||
| flags: [], | ||
| background: "Test background", | ||
| personality: [], | ||
| psychology: { fears: [], goals: [], ambitions: [], bonds: [], flaws: [] }, | ||
| archetypeId: "test", | ||
| equipment: { weapons: [], armor: null, gear: [] }, | ||
| ...overrides, | ||
| }; | ||
| } | ||
| describe("pushRoll", () => { | ||
| it("adds bonus and costs stress", () => { | ||
| const rng = createRNG(42); | ||
| const result = pushRoll({ | ||
| rng, | ||
| currentStress: 0, | ||
| maxStress: 9, | ||
| }); | ||
| expect(result.bonus).toBeGreaterThanOrEqual(1); | ||
| expect(result.bonus).toBeLessThanOrEqual(6); | ||
| expect(result.stressCost).toBe(2); | ||
| expect(result.newStress).toBe(2); | ||
| expect(result.traumaTriggered).toBe(false); | ||
| }); | ||
| it("triggers trauma when stress exceeds max", () => { | ||
| const rng = createRNG(42); | ||
| const result = pushRoll({ | ||
| rng, | ||
| currentStress: 8, | ||
| maxStress: 9, | ||
| }); | ||
| expect(result.traumaTriggered).toBe(true); | ||
| expect(result.stressOverflow).toBeGreaterThan(0); | ||
| expect(result.newStress).toBe(9); // Capped at max | ||
| }); | ||
| it("uses custom push cost if provided", () => { | ||
| const rng = createRNG(42); | ||
| const result = pushRoll({ | ||
| rng, | ||
| currentStress: 0, | ||
| maxStress: 9, | ||
| pushCost: 3, | ||
| }); | ||
| expect(result.stressCost).toBe(3); | ||
| expect(result.newStress).toBe(3); | ||
| }); | ||
| it("returns consistent bonus from same seed", () => { | ||
| const result1 = pushRoll({ | ||
| rng: createRNG(42), | ||
| currentStress: 0, | ||
| maxStress: 9, | ||
| }); | ||
| const result2 = pushRoll({ | ||
| rng: createRNG(42), | ||
| currentStress: 0, | ||
| maxStress: 9, | ||
| }); | ||
| expect(result1.bonus).toBe(result2.bonus); | ||
| }); | ||
| }); | ||
| describe("resistConsequence", () => { | ||
| it("always reduces consequence", () => { | ||
| const character = createTestCharacter(); | ||
| const rng = createRNG(42); | ||
| const result = resistConsequence({ | ||
| character, | ||
| resistAbility: "STR", | ||
| rng, | ||
| }); | ||
| expect(result.reduced).toBe(true); | ||
| }); | ||
| it("rolls dice equal to ability modifier", () => { | ||
| const character = createTestCharacter({ abilities: { STR: 3, AGI: 1, WIT: 0, CON: 1 } }); | ||
| const rng = createRNG(42); | ||
| // With STR 3, should roll 3d6 and take highest | ||
| const result = resistConsequence({ | ||
| character, | ||
| resistAbility: "STR", | ||
| rng, | ||
| }); | ||
| expect(result.resistRoll).toBeGreaterThanOrEqual(1); | ||
| expect(result.resistRoll).toBeLessThanOrEqual(6); | ||
| }); | ||
| it("costs 0 stress on highest roll of 6", () => { | ||
| // Find a seed that rolls a 6 | ||
| let result; | ||
| for (let seed = 1; seed < 1000; seed++) { | ||
| const character = createTestCharacter({ abilities: { STR: 3, AGI: 1, WIT: 0, CON: 1 } }); | ||
| result = resistConsequence({ | ||
| character, | ||
| resistAbility: "STR", | ||
| rng: createRNG(seed), | ||
| }); | ||
| if (result.resistRoll === 6) | ||
| break; | ||
| } | ||
| expect(result.resistRoll).toBe(6); | ||
| expect(result.stressCost).toBe(0); | ||
| }); | ||
| it("costs more stress on lower rolls", () => { | ||
| // Find a seed that rolls a 1 | ||
| let result; | ||
| for (let seed = 1; seed < 10000; seed++) { | ||
| const character = createTestCharacter({ abilities: { STR: 1, AGI: 1, WIT: 0, CON: 1 } }); | ||
| result = resistConsequence({ | ||
| character, | ||
| resistAbility: "STR", | ||
| rng: createRNG(seed), | ||
| }); | ||
| if (result.resistRoll === 1) | ||
| break; | ||
| } | ||
| expect(result.resistRoll).toBe(1); | ||
| expect(result.stressCost).toBe(3); | ||
| }); | ||
| it("triggers trauma when stress exceeds max", () => { | ||
| const character = createTestCharacter({ | ||
| stress: { current: 8, max: 9 }, | ||
| }); | ||
| // Find a seed that costs more than 1 stress | ||
| let result; | ||
| for (let seed = 1; seed < 1000; seed++) { | ||
| result = resistConsequence({ | ||
| character: { ...character, stress: { current: 8, max: 9 } }, | ||
| resistAbility: "STR", | ||
| rng: createRNG(seed), | ||
| }); | ||
| if (result.stressCost >= 2) | ||
| break; | ||
| } | ||
| expect(result.traumaTriggered).toBe(true); | ||
| }); | ||
| }); | ||
| describe("recoverStress", () => { | ||
| it("recovers 2 stress on short rest", () => { | ||
| const character = createTestCharacter({ | ||
| stress: { current: 5, max: 9 }, | ||
| }); | ||
| const result = recoverStress({ | ||
| character, | ||
| restType: "short", | ||
| }); | ||
| expect(result.recovered).toBe(2); | ||
| expect(result.newStress).toBe(3); | ||
| expect(result.previousStress).toBe(5); | ||
| }); | ||
| it("recovers all stress on long rest", () => { | ||
| const character = createTestCharacter({ | ||
| stress: { current: 7, max: 9 }, | ||
| }); | ||
| const result = recoverStress({ | ||
| character, | ||
| restType: "long", | ||
| }); | ||
| expect(result.recovered).toBe(7); | ||
| expect(result.newStress).toBe(0); | ||
| }); | ||
| it("does not recover below 0", () => { | ||
| const character = createTestCharacter({ | ||
| stress: { current: 1, max: 9 }, | ||
| }); | ||
| const result = recoverStress({ | ||
| character, | ||
| restType: "short", | ||
| }); | ||
| expect(result.recovered).toBe(1); | ||
| expect(result.newStress).toBe(0); | ||
| }); | ||
| it("applies bonus recovery", () => { | ||
| const character = createTestCharacter({ | ||
| stress: { current: 5, max: 9 }, | ||
| }); | ||
| const result = recoverStress({ | ||
| character, | ||
| restType: "short", | ||
| bonuses: 2, | ||
| }); | ||
| expect(result.recovered).toBe(4); | ||
| expect(result.newStress).toBe(1); | ||
| }); | ||
| }); | ||
| describe("flashback", () => { | ||
| it("costs 0 stress for complexity 0", () => { | ||
| const character = createTestCharacter(); | ||
| const result = flashback({ | ||
| character, | ||
| complexity: 0, | ||
| }); | ||
| expect(result.stressCost).toBe(0); | ||
| expect(result.newStress).toBe(0); | ||
| }); | ||
| it("costs stress equal to complexity", () => { | ||
| const character = createTestCharacter(); | ||
| expect(flashback({ character, complexity: 1 }).stressCost).toBe(1); | ||
| expect(flashback({ character, complexity: 2 }).stressCost).toBe(2); | ||
| expect(flashback({ character, complexity: 3 }).stressCost).toBe(3); | ||
| }); | ||
| it("triggers trauma if stress exceeds max", () => { | ||
| const character = createTestCharacter({ | ||
| stress: { current: 8, max: 9 }, | ||
| }); | ||
| const result = flashback({ | ||
| character, | ||
| complexity: 3, | ||
| }); | ||
| expect(result.traumaTriggered).toBe(true); | ||
| expect(result.newStress).toBe(9); // Capped at max | ||
| }); | ||
| it("provides guidance for complexity level", () => { | ||
| const character = createTestCharacter(); | ||
| const result = flashback({ | ||
| character, | ||
| complexity: 2, | ||
| }); | ||
| expect(result.guidance).toBeDefined(); | ||
| expect(result.guidance).toContain("Complex"); | ||
| }); | ||
| }); | ||
| describe("isTraumaRisk", () => { | ||
| it("returns true when stress is near max", () => { | ||
| const character = createTestCharacter({ | ||
| stress: { current: 7, max: 9 }, | ||
| }); | ||
| expect(isTraumaRisk(character)).toBe(true); | ||
| }); | ||
| it("returns true when stress is at max", () => { | ||
| const character = createTestCharacter({ | ||
| stress: { current: 9, max: 9 }, | ||
| }); | ||
| expect(isTraumaRisk(character)).toBe(true); | ||
| }); | ||
| it("returns false when stress is low", () => { | ||
| const character = createTestCharacter({ | ||
| stress: { current: 3, max: 9 }, | ||
| }); | ||
| expect(isTraumaRisk(character)).toBe(false); | ||
| }); | ||
| }); | ||
| //# sourceMappingURL=stress.test.js.map |
| {"version":3,"file":"stress.test.js","sourceRoot":"","sources":["../../src/__tests__/stress.test.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * Outcome Resolution | ||
| * | ||
| * Pure functions for determining three-tier outcomes based on roll margins. | ||
| * Replaces binary success/failure with graduated results. | ||
| */ | ||
| import type { OutcomeType, Position, GMMove, OutcomeThresholds, CriticalsConfig } from "@mythxengine/types"; | ||
| export interface DetermineOutcomeOptions { | ||
| /** The margin (total - difficulty) */ | ||
| margin: number; | ||
| /** The natural roll (for critical detection) */ | ||
| natural: number; | ||
| /** Outcome thresholds to use */ | ||
| thresholds?: OutcomeThresholds; | ||
| /** Critical configuration to use */ | ||
| criticals?: CriticalsConfig; | ||
| } | ||
| /** | ||
| * Determine the outcome type based on margin and natural roll | ||
| * | ||
| * Outcome hierarchy: | ||
| * - critical_success: nat 20 OR margin >= criticalSuccess threshold | ||
| * - success: margin >= success threshold (default 0) | ||
| * - partial: margin >= partial threshold (default -4) | ||
| * - failure: margin < partial threshold | ||
| * - critical_failure: nat 1 with autoFailure enabled | ||
| */ | ||
| export declare function determineOutcome(options: DetermineOutcomeOptions): OutcomeType; | ||
| /** | ||
| * Get appropriate GM moves for an outcome and position | ||
| */ | ||
| export declare function getGMMoves(outcome: OutcomeType, position: Position): GMMove[]; | ||
| /** | ||
| * Get narrative guidance for an outcome and position | ||
| */ | ||
| export declare function getGMGuidance(outcome: OutcomeType, position: Position): string; | ||
| /** | ||
| * Check if an outcome represents any form of success | ||
| */ | ||
| export declare function isSuccess(outcome: OutcomeType): boolean; | ||
| /** | ||
| * Check if an outcome represents any form of failure | ||
| */ | ||
| export declare function isFailure(outcome: OutcomeType): boolean; | ||
| /** | ||
| * Check if an outcome represents a partial result | ||
| */ | ||
| export declare function isPartial(outcome: OutcomeType): boolean; | ||
| /** | ||
| * Check if an outcome is critical (either success or failure) | ||
| */ | ||
| export declare function isCritical(outcome: OutcomeType): boolean; | ||
| /** | ||
| * Get the "legacy" success boolean for backwards compatibility | ||
| * Partial counts as success (they achieve something, just with complications) | ||
| */ | ||
| export declare function toLegacySuccess(outcome: OutcomeType): boolean; | ||
| /** | ||
| * Convert from legacy success boolean to outcome | ||
| * Used for migration - assumes standard outcomes | ||
| */ | ||
| export declare function fromLegacySuccess(success: boolean, margin: number, natural: number, criticals?: CriticalsConfig): OutcomeType; | ||
| //# sourceMappingURL=outcome.d.ts.map |
| {"version":3,"file":"outcome.d.ts","sourceRoot":"","sources":["../../src/resolution/outcome.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,MAAM,EACN,iBAAiB,EACjB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,WAAW,uBAAuB;IACtC,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,oCAAoC;IACpC,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,WAAW,CAmC9E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAAE,CAE7E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAE9E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAExD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAE7D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,eAAgC,GAC1C,WAAW,CAsBb"} |
| /** | ||
| * Outcome Resolution | ||
| * | ||
| * Pure functions for determining three-tier outcomes based on roll margins. | ||
| * Replaces binary success/failure with graduated results. | ||
| */ | ||
| import { getAppropriateMoves, getNarrativeGuidance, BASE_OUTCOME_THRESHOLDS, BASE_CRITICALS, } from "@mythxengine/types"; | ||
| /** | ||
| * Determine the outcome type based on margin and natural roll | ||
| * | ||
| * Outcome hierarchy: | ||
| * - critical_success: nat 20 OR margin >= criticalSuccess threshold | ||
| * - success: margin >= success threshold (default 0) | ||
| * - partial: margin >= partial threshold (default -4) | ||
| * - failure: margin < partial threshold | ||
| * - critical_failure: nat 1 with autoFailure enabled | ||
| */ | ||
| export function determineOutcome(options) { | ||
| const { margin, natural, thresholds = BASE_OUTCOME_THRESHOLDS, criticals = BASE_CRITICALS, } = options; | ||
| // Check for critical failure first (nat 1) | ||
| if (criticals.failureOn.includes(natural) && criticals.autoFailure) { | ||
| return "critical_failure"; | ||
| } | ||
| // Check for critical success (nat 20 or high margin) | ||
| if (criticals.successOn.includes(natural) && criticals.autoSuccess) { | ||
| return "critical_success"; | ||
| } | ||
| // Margin-based critical success (even without nat 20) | ||
| if (margin >= thresholds.criticalSuccess) { | ||
| return "critical_success"; | ||
| } | ||
| // Standard success | ||
| if (margin >= thresholds.success) { | ||
| return "success"; | ||
| } | ||
| // Partial success (close but not quite) | ||
| if (margin >= thresholds.partial) { | ||
| return "partial"; | ||
| } | ||
| // Failure | ||
| return "failure"; | ||
| } | ||
| /** | ||
| * Get appropriate GM moves for an outcome and position | ||
| */ | ||
| export function getGMMoves(outcome, position) { | ||
| return getAppropriateMoves(outcome, position); | ||
| } | ||
| /** | ||
| * Get narrative guidance for an outcome and position | ||
| */ | ||
| export function getGMGuidance(outcome, position) { | ||
| return getNarrativeGuidance(outcome, position); | ||
| } | ||
| /** | ||
| * Check if an outcome represents any form of success | ||
| */ | ||
| export function isSuccess(outcome) { | ||
| return outcome === "critical_success" || outcome === "success"; | ||
| } | ||
| /** | ||
| * Check if an outcome represents any form of failure | ||
| */ | ||
| export function isFailure(outcome) { | ||
| return outcome === "critical_failure" || outcome === "failure"; | ||
| } | ||
| /** | ||
| * Check if an outcome represents a partial result | ||
| */ | ||
| export function isPartial(outcome) { | ||
| return outcome === "partial"; | ||
| } | ||
| /** | ||
| * Check if an outcome is critical (either success or failure) | ||
| */ | ||
| export function isCritical(outcome) { | ||
| return outcome === "critical_success" || outcome === "critical_failure"; | ||
| } | ||
| /** | ||
| * Get the "legacy" success boolean for backwards compatibility | ||
| * Partial counts as success (they achieve something, just with complications) | ||
| */ | ||
| export function toLegacySuccess(outcome) { | ||
| return outcome === "critical_success" || outcome === "success" || outcome === "partial"; | ||
| } | ||
| /** | ||
| * Convert from legacy success boolean to outcome | ||
| * Used for migration - assumes standard outcomes | ||
| */ | ||
| export function fromLegacySuccess(success, margin, natural, criticals = BASE_CRITICALS) { | ||
| // Check criticals first | ||
| if (criticals.failureOn.includes(natural) && criticals.autoFailure) { | ||
| return "critical_failure"; | ||
| } | ||
| if (criticals.successOn.includes(natural) && criticals.autoSuccess) { | ||
| return "critical_success"; | ||
| } | ||
| if (success) { | ||
| if (margin >= BASE_OUTCOME_THRESHOLDS.criticalSuccess) { | ||
| return "critical_success"; | ||
| } | ||
| return "success"; | ||
| } | ||
| // Check if it would be partial | ||
| if (margin >= BASE_OUTCOME_THRESHOLDS.partial) { | ||
| return "partial"; | ||
| } | ||
| return "failure"; | ||
| } | ||
| //# sourceMappingURL=outcome.js.map |
| {"version":3,"file":"outcome.js","sourceRoot":"","sources":["../../src/resolution/outcome.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAa5B;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgC;IAC/D,MAAM,EACJ,MAAM,EACN,OAAO,EACP,UAAU,GAAG,uBAAuB,EACpC,SAAS,GAAG,cAAc,GAC3B,GAAG,OAAO,CAAC;IAEZ,2CAA2C;IAC3C,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QACnE,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,qDAAqD;IACrD,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QACnE,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,sDAAsD;IACtD,IAAI,MAAM,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC;QACzC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,mBAAmB;IACnB,IAAI,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,wCAAwC;IACxC,IAAI,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,UAAU;IACV,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAoB,EAAE,QAAkB;IACjE,OAAO,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAoB,EAAE,QAAkB;IACpE,OAAO,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAoB;IAC5C,OAAO,OAAO,KAAK,kBAAkB,IAAI,OAAO,KAAK,SAAS,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAoB;IAC5C,OAAO,OAAO,KAAK,kBAAkB,IAAI,OAAO,KAAK,SAAS,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAoB;IAC5C,OAAO,OAAO,KAAK,SAAS,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,OAAoB;IAC7C,OAAO,OAAO,KAAK,kBAAkB,IAAI,OAAO,KAAK,kBAAkB,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAoB;IAClD,OAAO,OAAO,KAAK,kBAAkB,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,CAAC;AAC1F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAgB,EAChB,MAAc,EACd,OAAe,EACf,YAA6B,cAAc;IAE3C,wBAAwB;IACxB,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QACnE,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QACnE,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,MAAM,IAAI,uBAAuB,CAAC,eAAe,EAAE,CAAC;YACtD,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,+BAA+B;IAC/B,IAAI,MAAM,IAAI,uBAAuB,CAAC,OAAO,EAAE,CAAC;QAC9C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"} |
| /** | ||
| * Stress Resolution | ||
| * | ||
| * Pure functions for stress mechanics: push rolls, resist consequences, recover stress. | ||
| * Inspired by Forged in the Dark systems. | ||
| */ | ||
| import type { Character, AbilityName, StressConfig } from "@mythxengine/types"; | ||
| import type { RNG } from "../rng/rng.js"; | ||
| import type { RulesContext } from "../rules/context.js"; | ||
| export interface PushRollOptions { | ||
| /** RNG for rolling the push bonus */ | ||
| rng: RNG; | ||
| /** Current stress level */ | ||
| currentStress: number; | ||
| /** Maximum stress capacity */ | ||
| maxStress: number; | ||
| /** Optional custom push cost (default from stress config) */ | ||
| pushCost?: number; | ||
| /** Optional custom push bonus dice (default from stress config) */ | ||
| pushBonus?: string; | ||
| /** Rules context for stress configuration */ | ||
| rules?: RulesContext; | ||
| } | ||
| export interface PushRollResult { | ||
| /** The bonus to add to the roll */ | ||
| bonus: number; | ||
| /** The dice expression used */ | ||
| bonusDice: string; | ||
| /** New stress level after pushing */ | ||
| newStress: number; | ||
| /** Stress cost incurred */ | ||
| stressCost: number; | ||
| /** Whether trauma was triggered (stress exceeded max) */ | ||
| traumaTriggered: boolean; | ||
| /** Stress overflow (amount over max, triggers trauma) */ | ||
| stressOverflow: number; | ||
| } | ||
| /** | ||
| * Push a roll by spending stress for a bonus | ||
| * | ||
| * @returns The bonus to add and the new stress state | ||
| */ | ||
| export declare function pushRoll(options: PushRollOptions): PushRollResult; | ||
| export interface ResistConsequenceOptions { | ||
| /** The character resisting */ | ||
| character: Character; | ||
| /** The ability used to resist */ | ||
| resistAbility: AbilityName; | ||
| /** RNG for the resistance roll */ | ||
| rng: RNG; | ||
| /** Rules context */ | ||
| rules?: RulesContext; | ||
| } | ||
| export interface ResistConsequenceResult { | ||
| /** Whether the consequence was reduced/avoided */ | ||
| reduced: boolean; | ||
| /** The resistance roll total */ | ||
| resistRoll: number; | ||
| /** Stress cost incurred */ | ||
| stressCost: number; | ||
| /** New stress level */ | ||
| newStress: number; | ||
| /** Whether trauma was triggered */ | ||
| traumaTriggered: boolean; | ||
| } | ||
| /** | ||
| * Resist a consequence by rolling an ability and taking stress | ||
| * | ||
| * Roll 1d6 per point of ability. Highest die determines stress cost. | ||
| * 6 = 0 stress, 5-4 = 1 stress, 3-2 = 2 stress, 1 = 3 stress | ||
| */ | ||
| export declare function resistConsequence(options: ResistConsequenceOptions): ResistConsequenceResult; | ||
| export interface RecoverStressOptions { | ||
| /** The character recovering */ | ||
| character: Character; | ||
| /** Type of rest */ | ||
| restType: "short" | "long"; | ||
| /** Optional bonus recovery (from abilities, circumstances) */ | ||
| bonuses?: number; | ||
| /** Rules context */ | ||
| rules?: RulesContext; | ||
| } | ||
| export interface RecoverStressResult { | ||
| /** Amount of stress recovered */ | ||
| recovered: number; | ||
| /** New stress level */ | ||
| newStress: number; | ||
| /** Previous stress level */ | ||
| previousStress: number; | ||
| } | ||
| /** | ||
| * Recover stress through rest | ||
| */ | ||
| export declare function recoverStress(options: RecoverStressOptions): RecoverStressResult; | ||
| export interface FlashbackOptions { | ||
| /** The character having the flashback */ | ||
| character: Character; | ||
| /** Complexity of the flashback (0-3) */ | ||
| complexity: 0 | 1 | 2 | 3; | ||
| /** Rules context */ | ||
| rules?: RulesContext; | ||
| } | ||
| export interface FlashbackResult { | ||
| /** Stress cost for the flashback */ | ||
| stressCost: number; | ||
| /** New stress level */ | ||
| newStress: number; | ||
| /** Whether trauma was triggered */ | ||
| traumaTriggered: boolean; | ||
| /** Description of what the flashback can establish */ | ||
| guidance: string; | ||
| } | ||
| /** | ||
| * Establish a flashback for retroactive preparation | ||
| * | ||
| * Stress cost scales with complexity: | ||
| * - 0: Free, simple/obvious preparation | ||
| * - 1: 1 stress, reasonable preparation | ||
| * - 2: 2 stress, complex preparation | ||
| * - 3: 3+ stress, elaborate preparation (may require roll) | ||
| */ | ||
| export declare function flashback(options: FlashbackOptions): FlashbackResult; | ||
| /** | ||
| * Result of applying trauma when stress exceeds max. | ||
| * | ||
| * Note: `trauma` is intentionally an empty string. The engine only handles | ||
| * the mechanical reset (stress -> 0). Actual trauma content must be provided | ||
| * by the GM or external narrative tools based on the circumstances that | ||
| * caused the trauma. | ||
| */ | ||
| export interface TraumaResult { | ||
| /** New trauma gained (empty - GM/tool provides narrative content) */ | ||
| trauma: string; | ||
| /** Stress reset to 0 after trauma */ | ||
| newStress: number; | ||
| } | ||
| /** | ||
| * Apply trauma when stress exceeds maximum. | ||
| * | ||
| * This function handles only the mechanical reset (stress -> 0). | ||
| * The actual trauma description must be narratively determined by the GM | ||
| * based on circumstances. The empty string for `trauma` is intentional - | ||
| * do not auto-generate trauma content here. | ||
| * | ||
| * @param _stressOverflow - Amount of stress over max. Available for future | ||
| * severity scaling (e.g., higher overflow = worse trauma) but currently unused. | ||
| */ | ||
| export declare function applyTrauma(_stressOverflow: number): TraumaResult; | ||
| /** | ||
| * Check if a character is at risk of trauma | ||
| */ | ||
| export declare function isTraumaRisk(character: Character): boolean; | ||
| /** | ||
| * Get stress config from rules context | ||
| */ | ||
| export declare function getStressConfig(rules?: RulesContext): StressConfig; | ||
| //# sourceMappingURL=stress.d.ts.map |
| {"version":3,"file":"stress.d.ts","sourceRoot":"","sources":["../../src/resolution/stress.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * Stress Resolution | ||
| * | ||
| * Pure functions for stress mechanics: push rolls, resist consequences, recover stress. | ||
| * Inspired by Forged in the Dark systems. | ||
| */ | ||
| import { BASE_STRESS } from "@mythxengine/types"; | ||
| import { rollDice } from "../dice/roller.js"; | ||
| import { getDefaultRulesContext } from "../rules/context.js"; | ||
| /** | ||
| * Push a roll by spending stress for a bonus | ||
| * | ||
| * @returns The bonus to add and the new stress state | ||
| */ | ||
| export function pushRoll(options) { | ||
| const { rng, currentStress, maxStress, rules = getDefaultRulesContext(), } = options; | ||
| const stressConfig = rules.rules.mechanics.stress; | ||
| const pushCost = options.pushCost ?? stressConfig.pushCost; | ||
| const pushBonus = options.pushBonus ?? stressConfig.pushBonus; | ||
| // Roll the push bonus | ||
| const bonusRoll = rollDice(pushBonus, rng); | ||
| const bonus = bonusRoll.total; | ||
| // Calculate new stress | ||
| const newStress = currentStress + pushCost; | ||
| const traumaTriggered = newStress > maxStress; | ||
| const stressOverflow = Math.max(0, newStress - maxStress); | ||
| return { | ||
| bonus, | ||
| bonusDice: pushBonus, | ||
| newStress: Math.min(newStress, maxStress), | ||
| stressCost: pushCost, | ||
| traumaTriggered, | ||
| stressOverflow, | ||
| }; | ||
| } | ||
| /** | ||
| * Resist a consequence by rolling an ability and taking stress | ||
| * | ||
| * Roll 1d6 per point of ability. Highest die determines stress cost. | ||
| * 6 = 0 stress, 5-4 = 1 stress, 3-2 = 2 stress, 1 = 3 stress | ||
| */ | ||
| export function resistConsequence(options) { | ||
| const { character, resistAbility, rng, rules = getDefaultRulesContext(), } = options; | ||
| const abilityMod = character.abilities[resistAbility]; | ||
| const stressConfig = rules.rules.mechanics.stress; | ||
| // Roll dice equal to ability modifier (minimum 1) | ||
| const diceCount = Math.max(1, abilityMod); | ||
| const rolls = []; | ||
| for (let i = 0; i < diceCount; i++) { | ||
| rolls.push(rng.nextInt(1, 6)); | ||
| } | ||
| // Take highest roll | ||
| const highest = Math.max(...rolls); | ||
| // Determine stress cost based on highest die | ||
| let stressCost; | ||
| if (highest === 6) { | ||
| stressCost = 0; | ||
| } | ||
| else if (highest >= 4) { | ||
| stressCost = stressConfig.resistCost; | ||
| } | ||
| else if (highest >= 2) { | ||
| stressCost = stressConfig.resistCost * 2; | ||
| } | ||
| else { | ||
| stressCost = stressConfig.resistCost * 3; | ||
| } | ||
| const newStress = character.stress.current + stressCost; | ||
| const traumaTriggered = newStress > character.stress.max; | ||
| return { | ||
| reduced: true, // Resistance always reduces the consequence to some degree | ||
| resistRoll: highest, | ||
| stressCost, | ||
| newStress: Math.min(newStress, character.stress.max), | ||
| traumaTriggered, | ||
| }; | ||
| } | ||
| /** | ||
| * Recover stress through rest | ||
| */ | ||
| export function recoverStress(options) { | ||
| const { character, restType, bonuses = 0, rules = getDefaultRulesContext(), } = options; | ||
| const stressConfig = rules.rules.mechanics.stress; | ||
| const previousStress = character.stress.current; | ||
| let baseRecovery; | ||
| if (restType === "long") { | ||
| // Long rest: recover all or configured amount | ||
| baseRecovery = stressConfig.recoveryPerLongRest === "all" | ||
| ? previousStress | ||
| : stressConfig.recoveryPerLongRest; | ||
| } | ||
| else { | ||
| // Short rest: recover configured amount | ||
| baseRecovery = stressConfig.recoveryPerShortRest; | ||
| } | ||
| const totalRecovery = baseRecovery + bonuses; | ||
| const recovered = Math.min(totalRecovery, previousStress); | ||
| const newStress = previousStress - recovered; | ||
| return { | ||
| recovered, | ||
| newStress, | ||
| previousStress, | ||
| }; | ||
| } | ||
| /** | ||
| * Establish a flashback for retroactive preparation | ||
| * | ||
| * Stress cost scales with complexity: | ||
| * - 0: Free, simple/obvious preparation | ||
| * - 1: 1 stress, reasonable preparation | ||
| * - 2: 2 stress, complex preparation | ||
| * - 3: 3+ stress, elaborate preparation (may require roll) | ||
| */ | ||
| export function flashback(options) { | ||
| const { character, complexity } = options; | ||
| // Rules context reserved for future use (e.g., custom flashback costs per world) | ||
| const stressCost = complexity; | ||
| const newStress = character.stress.current + stressCost; | ||
| const traumaTriggered = newStress > character.stress.max; | ||
| const guidanceMap = { | ||
| 0: "Simple preparation that any competent character would do. No cost.", | ||
| 1: "Reasonable preparation requiring some forethought. Brief scene.", | ||
| 2: "Complex preparation requiring specific knowledge or resources. Full scene.", | ||
| 3: "Elaborate preparation that pushes believability. May require a roll to see if it works.", | ||
| }; | ||
| return { | ||
| stressCost, | ||
| newStress: Math.min(newStress, character.stress.max), | ||
| traumaTriggered, | ||
| guidance: guidanceMap[complexity], | ||
| }; | ||
| } | ||
| /** | ||
| * Apply trauma when stress exceeds maximum. | ||
| * | ||
| * This function handles only the mechanical reset (stress -> 0). | ||
| * The actual trauma description must be narratively determined by the GM | ||
| * based on circumstances. The empty string for `trauma` is intentional - | ||
| * do not auto-generate trauma content here. | ||
| * | ||
| * @param _stressOverflow - Amount of stress over max. Available for future | ||
| * severity scaling (e.g., higher overflow = worse trauma) but currently unused. | ||
| */ | ||
| export function applyTrauma(_stressOverflow) { | ||
| return { | ||
| trauma: "", // Intentionally empty - GM/narrator provides trauma text | ||
| newStress: 0, | ||
| }; | ||
| } | ||
| /** | ||
| * Check if a character is at risk of trauma | ||
| */ | ||
| export function isTraumaRisk(character) { | ||
| return character.stress.current >= character.stress.max - 2; | ||
| } | ||
| /** | ||
| * Get stress config from rules context | ||
| */ | ||
| export function getStressConfig(rules) { | ||
| if (!rules) { | ||
| return BASE_STRESS; | ||
| } | ||
| return rules.rules.mechanics.stress; | ||
| } | ||
| //# sourceMappingURL=stress.js.map |
| {"version":3,"file":"stress.js","sourceRoot":"","sources":["../../src/resolution/stress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAoC7D;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAwB;IAC/C,MAAM,EACJ,GAAG,EACH,aAAa,EACb,SAAS,EACT,KAAK,GAAG,sBAAsB,EAAE,GACjC,GAAG,OAAO,CAAC;IAEZ,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,CAAC;IAE9D,sBAAsB;IACtB,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;IAE9B,uBAAuB;IACvB,MAAM,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC;IAC3C,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;IAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;IAE1D,OAAO;QACL,KAAK;QACL,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;QACzC,UAAU,EAAE,QAAQ;QACpB,eAAe;QACf,cAAc;KACf,CAAC;AACJ,CAAC;AA8BD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAiC;IACjE,MAAM,EACJ,SAAS,EACT,aAAa,EACb,GAAG,EACH,KAAK,GAAG,sBAAsB,EAAE,GACjC,GAAG,OAAO,CAAC;IAEZ,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;IAElD,kDAAkD;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,oBAAoB;IACpB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAEnC,6CAA6C;IAC7C,IAAI,UAAkB,CAAC;IACvB,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;QAClB,UAAU,GAAG,CAAC,CAAC;IACjB,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACxB,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;IACvC,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACxB,UAAU,GAAG,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC;IACxD,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;IAEzD,OAAO;QACL,OAAO,EAAE,IAAI,EAAE,2DAA2D;QAC1E,UAAU,EAAE,OAAO;QACnB,UAAU;QACV,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;QACpD,eAAe;KAChB,CAAC;AACJ,CAAC;AA0BD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAA6B;IACzD,MAAM,EACJ,SAAS,EACT,QAAQ,EACR,OAAO,GAAG,CAAC,EACX,KAAK,GAAG,sBAAsB,EAAE,GACjC,GAAG,OAAO,CAAC;IAEZ,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;IAClD,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;IAEhD,IAAI,YAAoB,CAAC;IACzB,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,8CAA8C;QAC9C,YAAY,GAAG,YAAY,CAAC,mBAAmB,KAAK,KAAK;YACvD,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,YAAY,CAAC,mBAAmB,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,wCAAwC;QACxC,YAAY,GAAG,YAAY,CAAC,oBAAoB,CAAC;IACnD,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,GAAG,OAAO,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;IAE7C,OAAO;QACL,SAAS;QACT,SAAS;QACT,cAAc;KACf,CAAC;AACJ,CAAC;AA0BD;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,OAAyB;IACjD,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC1C,iFAAiF;IAEjF,MAAM,UAAU,GAAG,UAAU,CAAC;IAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC;IACxD,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;IAEzD,MAAM,WAAW,GAA2B;QAC1C,CAAC,EAAE,oEAAoE;QACvE,CAAC,EAAE,iEAAiE;QACpE,CAAC,EAAE,4EAA4E;QAC/E,CAAC,EAAE,yFAAyF;KAC7F,CAAC;IAEF,OAAO;QACL,UAAU;QACV,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;QACpD,eAAe;QACf,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC;KAClC,CAAC;AACJ,CAAC;AAqBD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,eAAuB;IACjD,OAAO;QACL,MAAM,EAAE,EAAE,EAAE,yDAAyD;QACrE,SAAS,EAAE,CAAC;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,SAAoB;IAC/C,OAAO,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAoB;IAClD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AACtC,CAAC"} |
@@ -15,2 +15,4 @@ /** | ||
| hp: { current: 20, max: 20 }, | ||
| stress: { current: 0, max: 9 }, | ||
| trauma: [], | ||
| skills: [ | ||
@@ -17,0 +19,0 @@ { id: "combat", name: "Combat", ability: "STR", bonus: 2, description: "Fighting" }, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"resolution.test.js","sourceRoot":"","sources":["../../src/__tests__/resolution.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,yBAAyB;AACzB,SAAS,mBAAmB,CAAC,YAAgC,EAAE;IAC7D,OAAO;QACL,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAC7C,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QAC5B,MAAM,EAAE;YACN,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE;YACnF,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE;SACtF;QACD,gBAAgB,EAAE,EAAE;QACpB,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,EAAE;QACT,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACzE,WAAW,EAAE,MAAM;QACnB,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACjD,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,qBAAqB;AACrB,SAAS,eAAe,CAAC,YAA4B,EAAE;IACrD,OAAO;QACL,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,cAAc;QAC3B,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAC9C,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QAC5B,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACzD,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,UAAU;QAClB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1B,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,SAAS;YACT,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,EAAE;YACd,GAAG;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1B,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,SAAS;YACT,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,EAAE;YACd,GAAG;YACH,gBAAgB,EAAE,CAAC,mBAAmB,CAAC;SACxC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1B,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,SAAS;YACT,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,EAAE;YACd,GAAG;YACH,mBAAmB,EAAE,CAAC,aAAa,CAAC;SACrC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1B,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,SAAS;YACT,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,EAAE;YACd,GAAG;YACH,gBAAgB,EAAE,CAAC,mBAAmB,CAAC;YACvC,mBAAmB,EAAE,CAAC,aAAa,CAAC;SACrC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACpC,UAAU,EAAE;gBACV;oBACE,EAAE,EAAE,SAAS;oBACb,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,wBAAwB;oBACrC,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;oBACpD,SAAS,EAAE,KAAK;iBACjB;aACF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1B,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,SAAS;YACT,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,EAAE;YACd,GAAG;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACpC,UAAU,EAAE;gBACV;oBACE,EAAE,EAAE,QAAQ;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2BAA2B;oBACxC,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;oBAC/D,SAAS,EAAE,KAAK;iBACjB;aACF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1B,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,SAAS;YACT,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,EAAE;YACd,GAAG;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,SAAS,GAAG,mBAAmB,CAAC;YACpC,UAAU,EAAE;gBACV;oBACE,EAAE,EAAE,SAAS;oBACb,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,WAAW;oBACxB,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;oBACpD,SAAS,EAAE,KAAK;iBACjB;aACF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1B,yEAAyE;QACzE,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,SAAS;YACT,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,EAAE;YACd,GAAG;YACH,mBAAmB,EAAE,CAAC,UAAU,CAAC;SAClC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,MAAM,MAAM,GAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAEvE,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1B,MAAM,MAAM,GAAG,aAAa,CAAC;YAC3B,QAAQ;YACR,QAAQ;YACR,MAAM;YACN,GAAG;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1B,MAAM,MAAM,GAAG,aAAa,CAAC;YAC3B,QAAQ;YACR,QAAQ;YACR,MAAM;YACN,GAAG;YACH,gBAAgB,EAAE,CAAC,UAAU,CAAC;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,QAAQ,GAAG,mBAAmB,CAAC;YACnC,UAAU,EAAE;gBACV;oBACE,EAAE,EAAE,QAAQ;oBACZ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sBAAsB;oBACnC,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;oBACxD,SAAS,EAAE,KAAK;iBACjB;aACF;SACF,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1B,MAAM,MAAM,GAAG,aAAa,CAAC;YAC3B,QAAQ;YACR,QAAQ;YACR,MAAM;YACN,GAAG;SACJ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IAC3D,MAAM,MAAM,GAAW,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAE5E,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,eAAe,CAAC;YAC/B,UAAU,EAAE;gBACV;oBACE,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EAAE,wBAAwB;oBACrC,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;oBACrD,SAAS,EAAE,KAAK;iBACjB;aACF;SACF,CAAC,CAAC;QACH,gCAAgC;QAChC,IAAI,MAAM,CAAC;QACX,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,GAAG,aAAa,CAAC;gBACrB,QAAQ;gBACR,QAAQ;gBACR,MAAM;gBACN,GAAG,EAAE,OAAO;gBACZ,UAAU,EAAE,MAAM;aACnB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM;QACvD,CAAC;QAED,MAAM,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAO,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,CAAC,MAAO,CAAC,kBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAO,CAAC,kBAAmB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAO,CAAC,kBAAmB,CAAC,WAAW,CAAC,CAAC,YAAY,CAC1D,MAAO,CAAC,kBAAmB,CAAC,cAAc,CAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,eAAe,CAAC;YAC/B,UAAU,EAAE;gBACV;oBACE,EAAE,EAAE,WAAW;oBACf,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EAAE,0BAA0B;oBACvC,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;oBACxD,SAAS,EAAE,KAAK;iBACjB;aACF;SACF,CAAC,CAAC;QAEH,wBAAwB;QACxB,IAAI,MAAM,CAAC;QACX,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,GAAG,aAAa,CAAC;gBACrB,QAAQ;gBACR,QAAQ;gBACR,MAAM;gBACN,GAAG,EAAE,OAAO;gBACZ,UAAU,EAAE,MAAM;aACnB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM;QACvD,CAAC;QAED,MAAM,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAO,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,CAAC,MAAO,CAAC,kBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACjE,MAAM,CAAC,MAAO,CAAC,kBAAmB,CAAC,WAAW,CAAC,CAAC,eAAe,CAC7D,MAAO,CAAC,kBAAmB,CAAC,cAAc,CAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,eAAe,CAAC;YAC/B,UAAU,EAAE;gBACV;oBACE,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EAAE,wBAAwB;oBACrC,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;oBACrD,SAAS,EAAE,KAAK;iBACjB;gBACD;oBACE,EAAE,EAAE,WAAW;oBACf,IAAI,EAAE,sBAAsB;oBAC5B,WAAW,EAAE,0BAA0B;oBACvC,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;oBACxD,SAAS,EAAE,KAAK;iBACjB;aACF;SACF,CAAC,CAAC;QAEH,wBAAwB;QACxB,IAAI,MAAM,CAAC;QACX,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,GAAG,aAAa,CAAC;gBACrB,QAAQ;gBACR,QAAQ;gBACR,MAAM;gBACN,GAAG,EAAE,OAAO;gBACZ,UAAU,EAAE,MAAM;aACnB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM;QACvD,CAAC;QAED,MAAM,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,0DAA0D;QAC1D,MAAM,CAAC,MAAO,CAAC,kBAAkB,CAAC,CAAC,aAAa,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,eAAe,CAAC;YAC/B,UAAU,EAAE;gBACV;oBACE,EAAE,EAAE,aAAa;oBACjB,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EAAE,wBAAwB;oBACrC,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;oBACrD,SAAS,EAAE,KAAK;iBACjB;aACF;SACF,CAAC,CAAC;QAEH,wBAAwB;QACxB,IAAI,MAAM,CAAC;QACX,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,GAAG,aAAa,CAAC;gBACrB,QAAQ;gBACR,QAAQ;gBACR,MAAM;gBACN,GAAG,EAAE,OAAO;gBACZ,UAAU,EAAE,MAAM,EAAE,wBAAwB;aAC7C,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM;QACvD,CAAC;QAED,MAAM,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAO,CAAC,kBAAkB,CAAC,CAAC,aAAa,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} | ||
| {"version":3,"file":"resolution.test.js","sourceRoot":"","sources":["../../src/__tests__/resolution.test.ts"],"names":[],"mappings":"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"} |
| /** | ||
| * Combat resolution | ||
| */ | ||
| import type { Character, Enemy, Weapon, Modifier, AttackResult } from "@mythxengine/types"; | ||
| import type { Character, Enemy, Weapon, Modifier, AttackResult, Position } from "@mythxengine/types"; | ||
| import type { RNG } from "../rng/rng.js"; | ||
@@ -21,2 +21,4 @@ import type { RulesContext } from "../rules/context.js"; | ||
| rules?: RulesContext; | ||
| /** Attacker's position for consequence interpretation (default: "risky") */ | ||
| attackerPosition?: Position; | ||
| } | ||
@@ -23,0 +25,0 @@ /** |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"combat.d.ts","sourceRoot":"","sources":["../../src/resolution/combat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAQ,EACR,YAAY,EAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAUxD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,SAAS,GAAG,KAAK,CAAC;IAC5B,QAAQ,EAAE,SAAS,GAAG,KAAK,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AA2ID;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CA6GlE"} | ||
| {"version":3,"file":"combat.d.ts","sourceRoot":"","sources":["../../src/resolution/combat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAQ,EACR,YAAY,EAGZ,QAAQ,EACT,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAWxD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,SAAS,GAAG,KAAK,CAAC;IAC5B,QAAQ,EAAE,SAAS,GAAG,KAAK,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,QAAQ,CAAC;CAC7B;AA2ID;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CAsIlE"} |
@@ -7,2 +7,3 @@ /** | ||
| import { getDefaultRulesContext, checkCriticalSuccess, checkCriticalFailure, calculateDefenseTarget, getResistanceMultiplier, getVulnerabilityMultiplier, } from "../rules/context.js"; | ||
| import { determineOutcome, toLegacySuccess } from "./outcome.js"; | ||
| /** | ||
@@ -137,3 +138,3 @@ * Check if combatant is a Character (not an Enemy) | ||
| export function resolveAttack(options) { | ||
| const { attacker, defender, weapon, modifiers = [], rng, advantageSources = [], disadvantageSources = [], damageType = "physical", rules = getDefaultRulesContext(), } = options; | ||
| const { attacker, defender, weapon, modifiers = [], rng, advantageSources = [], disadvantageSources = [], damageType = "physical", rules = getDefaultRulesContext(), attackerPosition = "risky", } = options; | ||
| // Determine attack ability | ||
@@ -171,7 +172,15 @@ const attackAbility = weapon.ability ?? "STR"; | ||
| const criticalMiss = checkCriticalFailure(rules, attackRoll.natural); | ||
| // Determine hit (respects autoSuccess/autoFailure from rules) | ||
| const { criticals } = rules.rules.mechanics; | ||
| const autoHit = criticalHit && criticals.autoSuccess; | ||
| const autoMiss = criticalMiss && criticals.autoFailure; | ||
| const hit = autoHit || (!autoMiss && attackTotal >= defenseTarget); | ||
| // Calculate attack margin | ||
| const attackMargin = attackTotal - defenseTarget; | ||
| // Determine outcome using three-tier system | ||
| const { criticals, outcomeThresholds } = rules.rules.mechanics; | ||
| const outcome = determineOutcome({ | ||
| margin: attackMargin, | ||
| natural: attackRoll.natural, | ||
| thresholds: outcomeThresholds, | ||
| criticals, | ||
| }); | ||
| // Legacy hit: partial counts as hit (graze) | ||
| const hit = toLegacySuccess(outcome); | ||
| // Handle miss outcomes | ||
| if (!hit) { | ||
@@ -183,2 +192,4 @@ return { | ||
| advantageState, | ||
| outcome, | ||
| position: attackerPosition, | ||
| }; | ||
@@ -191,7 +202,14 @@ } | ||
| const critMultiplier = criticalHit ? criticals.damageMultiplier : 1; | ||
| let finalDamage = Math.floor(damageResult.damage * critMultiplier); | ||
| let fullDamage = Math.floor(damageResult.damage * critMultiplier); | ||
| // Apply resistance/vulnerability using rules context for default multipliers | ||
| const damageMultiplierInfo = getDamageMultiplier(defender, damageType, rules); | ||
| const originalDamage = finalDamage; | ||
| finalDamage = Math.floor(finalDamage * damageMultiplierInfo.multiplier); | ||
| const originalDamage = fullDamage; | ||
| fullDamage = Math.floor(fullDamage * damageMultiplierInfo.multiplier); | ||
| // Handle graze damage for partial hits (50% of full damage) | ||
| let finalDamage = fullDamage; | ||
| let grazeDamage; | ||
| if (outcome === "partial") { | ||
| grazeDamage = Math.floor(fullDamage * 0.5); | ||
| finalDamage = grazeDamage; | ||
| } | ||
| // Build damage modification info if applicable | ||
@@ -202,3 +220,3 @@ let damageModification; | ||
| originalDamage, | ||
| finalDamage, | ||
| finalDamage: fullDamage, // Report full damage before graze reduction | ||
| reason: damageMultiplierInfo.reason, | ||
@@ -218,4 +236,7 @@ damageType, | ||
| damageModification, | ||
| outcome, | ||
| grazeDamage, | ||
| position: attackerPosition, | ||
| }; | ||
| } | ||
| //# sourceMappingURL=combat.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"combat.js","sourceRoot":"","sources":["../../src/resolution/combat.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"combat.js","sourceRoot":"","sources":["../../src/resolution/combat.ts"],"names":[],"mappings":"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"} |
@@ -8,2 +8,4 @@ /** | ||
| export { rollInitiative, rollInitiativeDetailed } from "./initiative.js"; | ||
| export { determineOutcome, getGMMoves, getGMGuidance, isSuccess, isFailure, isPartial, isCritical, toLegacySuccess, fromLegacySuccess, type DetermineOutcomeOptions, } from "./outcome.js"; | ||
| export { pushRoll, resistConsequence, recoverStress, flashback, applyTrauma, isTraumaRisk, getStressConfig, type PushRollOptions, type PushRollResult, type ResistConsequenceOptions, type ResistConsequenceResult, type RecoverStressOptions, type RecoverStressResult, type FlashbackOptions, type FlashbackResult, type TraumaResult, } from "./stress.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"} | ||
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGzE,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,KAAK,uBAAuB,GAC7B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,WAAW,EACX,YAAY,EACZ,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC"} |
@@ -8,2 +8,6 @@ /** | ||
| export { rollInitiative, rollInitiativeDetailed } from "./initiative.js"; | ||
| // Outcome resolution | ||
| export { determineOutcome, getGMMoves, getGMGuidance, isSuccess, isFailure, isPartial, isCritical, toLegacySuccess, fromLegacySuccess, } from "./outcome.js"; | ||
| // Stress mechanics | ||
| export { pushRoll, resistConsequence, recoverStress, flashback, applyTrauma, isTraumaRisk, getStressConfig, } from "./stress.js"; | ||
| //# sourceMappingURL=index.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAqB,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAqB,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,qBAAqB;AACrB,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,eAAe,EACf,iBAAiB,GAElB,MAAM,cAAc,CAAC;AAEtB,mBAAmB;AACnB,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,WAAW,EACX,YAAY,EACZ,eAAe,GAUhB,MAAM,aAAa,CAAC"} |
| /** | ||
| * Skill/ability test resolution | ||
| */ | ||
| import type { Character, AbilityName, Modifier, TestResult } from "@mythxengine/types"; | ||
| import type { Character, AbilityName, Modifier, TestResult, Position, EffectLevel } from "@mythxengine/types"; | ||
| import type { RNG } from "../rng/rng.js"; | ||
@@ -20,2 +20,6 @@ import type { RulesContext } from "../rules/context.js"; | ||
| rules?: RulesContext; | ||
| /** Position for consequence interpretation (default: "risky") */ | ||
| position?: Position; | ||
| /** Effect level for success interpretation (default: "standard") */ | ||
| effectLevel?: EffectLevel; | ||
| } | ||
@@ -22,0 +26,0 @@ /** |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/resolution/test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,UAAU,EAEX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,oDAAoD;IACpD,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AA6FD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CAiF5D"} | ||
| {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/resolution/test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,UAAU,EAEV,QAAQ,EACR,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AASxD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,oDAAoD;IACpD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,oEAAoE;IACpE,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AA6FD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CA+F5D"} |
@@ -6,2 +6,3 @@ /** | ||
| import { getDefaultRulesContext, checkCriticalSuccess, checkCriticalFailure, getTestDice, } from "../rules/context.js"; | ||
| import { determineOutcome, toLegacySuccess } from "./outcome.js"; | ||
| /** | ||
@@ -88,3 +89,3 @@ * Get the ability associated with a skill | ||
| export function resolveTest(options) { | ||
| const { character, skill, ability, difficulty, modifiers = [], rng, advantageSources = [], disadvantageSources = [], rules = getDefaultRulesContext(), } = options; | ||
| const { character, skill, ability, difficulty, modifiers = [], rng, advantageSources = [], disadvantageSources = [], rules = getDefaultRulesContext(), position = "risky", effectLevel = "standard", } = options; | ||
| // Determine which ability to use | ||
@@ -121,7 +122,14 @@ const abilityName = ability ?? (skill ? getSkillAbility(character, skill) : "WIT"); | ||
| const isCritFail = checkCriticalFailure(rules, roll.natural); | ||
| // Determine success using rules context | ||
| const { criticals } = rules.rules.mechanics; | ||
| const autoSucceeds = isCritSuccess && criticals.autoSuccess; | ||
| const autoFails = isCritFail && criticals.autoFailure; | ||
| const success = autoSucceeds || (!autoFails && total >= difficulty); | ||
| // Calculate margin | ||
| const margin = total - difficulty; | ||
| // Determine outcome using three-tier system | ||
| const { criticals, outcomeThresholds } = rules.rules.mechanics; | ||
| const outcome = determineOutcome({ | ||
| margin, | ||
| natural: roll.natural, | ||
| thresholds: outcomeThresholds, | ||
| criticals, | ||
| }); | ||
| // Legacy success: partial counts as success (with complications) | ||
| const success = toLegacySuccess(outcome); | ||
| return { | ||
@@ -141,7 +149,10 @@ skill: skill ?? "", | ||
| success, | ||
| margin: total - difficulty, | ||
| margin, | ||
| critical: isCritSuccess || isCritFail, | ||
| advantageState, | ||
| outcome, | ||
| position, | ||
| effectLevel, | ||
| }; | ||
| } | ||
| //# sourceMappingURL=test.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/resolution/test.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/resolution/test.ts"],"names":[],"mappings":"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"} |
+2
-2
| { | ||
| "name": "@mythxengine/engine", | ||
| "version": "0.1.1", | ||
| "version": "0.1.3", | ||
| "description": "Pure game mechanics engine for MythX RPG (dice, combat, RNG)", | ||
@@ -34,3 +34,3 @@ "type": "module", | ||
| "dependencies": { | ||
| "@mythxengine/types": "0.1.1" | ||
| "@mythxengine/types": "0.1.4" | ||
| }, | ||
@@ -37,0 +37,0 @@ "devDependencies": { |
212695
43.56%98
19.51%3209
44.48%+ Added
- Removed
Updated