@ai-rpg-engine/starter-weird-west 2.1.1 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -4
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +9 -30
- package/dist/setup.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
-
</p>
|
|
4
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
5
|
# @ai-rpg-engine/starter-weird-west
|
|
6
6
|
|
|
7
|
+
> **Composition Example** — This starter demonstrates how to wire the engine for weird western. It is an example to learn from, not a template to copy. See the [Composition Guide](../../docs/handbook/57-composition-guide.md) to build your own game.
|
|
8
|
+
|
|
7
9
|
**Dust Devil's Bargain** — A frontier town hides a cult summoning something from the red mesa.
|
|
8
10
|
|
|
9
11
|
Part of the [AI RPG Engine](https://github.com/mcp-tool-shop-org/ai-rpg-engine) starter pack catalog.
|
|
@@ -51,6 +53,10 @@ engine.start();
|
|
|
51
53
|
| Resolve | 0–20 | Mental fortitude, regens 1/tick |
|
|
52
54
|
| Dust | 0–100 | **Inverse pressure** — accumulates, 100 = death |
|
|
53
55
|
|
|
56
|
+
## What to Borrow
|
|
57
|
+
|
|
58
|
+
`buildCombatStack` usage and dual resource profile (dust + resolve). Study how two resources with opposite polarity create tension — dust accumulates toward a death threshold while resolve is spent for powerful actions, forcing players to balance aggression against survival.
|
|
59
|
+
|
|
54
60
|
## License
|
|
55
61
|
|
|
56
62
|
MIT
|
package/dist/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA0F7C,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAqJhD"}
|
package/dist/setup.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Game setup — wire content into engine
|
|
2
2
|
import { Engine } from '@ai-rpg-engine/core';
|
|
3
|
-
import { traversalCore, statusCore,
|
|
3
|
+
import { traversalCore, statusCore, createInventoryCore, createDialogueCore, createCognitionCore, createPerceptionFilter, createProgressionCore, createEnvironmentCore, createFactionCognition, createRumorPropagation, createSimulationInspector, createDistrictCore, createBeliefProvenance, createObserverPresentation, giveItem, createDefeatFallout, createBossPhaseListener, createAbilityCore, createAbilityEffects, createAbilityReview, registerStatusDefinitions, buildCombatStack, COMBAT_STATES, } from '@ai-rpg-engine/modules';
|
|
4
4
|
import { manifest, player, bartender, sheriff, revenant, crawler, banditRider, mesaCrawlerBoss, zones, districts, bartenderDialogue, sageBundleEffect, gunslingerTree, weirdWestAbilities, weirdWestStatusDefinitions, } from './content.js';
|
|
5
5
|
import { weirdWestMinimalRuleset } from './ruleset.js';
|
|
6
6
|
// Spirits perceive the living as echoes of the future
|
|
@@ -19,26 +19,6 @@ const spiritPerception = {
|
|
|
19
19
|
},
|
|
20
20
|
}),
|
|
21
21
|
};
|
|
22
|
-
// Weird West combat formulas — grit for damage + guard, draw-speed for hit/dodge
|
|
23
|
-
const weirdWestFormulas = {
|
|
24
|
-
statMapping: { attack: 'grit', precision: 'draw-speed', resolve: 'grit' },
|
|
25
|
-
hitChance: (attacker, target) => {
|
|
26
|
-
const atkSpeed = attacker.stats['draw-speed'] ?? 5;
|
|
27
|
-
const tgtSpeed = target.stats['draw-speed'] ?? 5;
|
|
28
|
-
return Math.min(95, Math.max(5, 50 + atkSpeed * 5 - tgtSpeed * 3));
|
|
29
|
-
},
|
|
30
|
-
damage: (attacker) => Math.max(1, attacker.stats.grit ?? 3),
|
|
31
|
-
guardReduction: (defender) => {
|
|
32
|
-
const grit = defender.stats.grit ?? 3;
|
|
33
|
-
const bonus = Math.max(0, (grit - 3) * 0.03);
|
|
34
|
-
return Math.min(0.75, 0.5 + bonus);
|
|
35
|
-
},
|
|
36
|
-
disengageChance: (actor) => {
|
|
37
|
-
const speed = actor.stats['draw-speed'] ?? 5;
|
|
38
|
-
const grit = actor.stats.grit ?? 3;
|
|
39
|
-
return Math.min(90, Math.max(15, 40 + speed * 5 + grit * 2));
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
22
|
// Weird West combat resource profile — corruption and iron will
|
|
43
23
|
const weirdWestCombatProfile = {
|
|
44
24
|
packId: 'weird-west',
|
|
@@ -67,8 +47,13 @@ const weirdWestCombatProfile = {
|
|
|
67
47
|
};
|
|
68
48
|
export function createGame(seed) {
|
|
69
49
|
registerStatusDefinitions(weirdWestStatusDefinitions);
|
|
70
|
-
|
|
71
|
-
const
|
|
50
|
+
// Combat stack: grit for damage, draw-speed for hit/dodge, lore for resolve
|
|
51
|
+
const combat = buildCombatStack({
|
|
52
|
+
statMapping: { attack: 'grit', precision: 'draw-speed', resolve: 'lore' },
|
|
53
|
+
playerId: 'drifter',
|
|
54
|
+
resourceProfile: weirdWestCombatProfile,
|
|
55
|
+
biasTags: ['undead', 'spirit', 'beast'],
|
|
56
|
+
});
|
|
72
57
|
const engine = new Engine({
|
|
73
58
|
manifest,
|
|
74
59
|
seed: seed ?? 42,
|
|
@@ -76,9 +61,7 @@ export function createGame(seed) {
|
|
|
76
61
|
modules: [
|
|
77
62
|
traversalCore,
|
|
78
63
|
statusCore,
|
|
79
|
-
|
|
80
|
-
review.module,
|
|
81
|
-
createCombatCore(review.explain(wrappedFormulas)),
|
|
64
|
+
...combat.modules,
|
|
82
65
|
createInventoryCore([sageBundleEffect]),
|
|
83
66
|
createDialogueCore([bartenderDialogue]),
|
|
84
67
|
createCognitionCore({ decay: { baseRate: 0.02, pruneThreshold: 0.05, instabilityFactor: 0.5 } }),
|
|
@@ -141,10 +124,6 @@ export function createGame(seed) {
|
|
|
141
124
|
],
|
|
142
125
|
playerId: 'drifter',
|
|
143
126
|
}),
|
|
144
|
-
createCombatTactics({ hooks: buildTacticalHooks(weirdWestCombatProfile) }),
|
|
145
|
-
createCombatResources(weirdWestCombatProfile),
|
|
146
|
-
createCombatIntent({ packBiases: BUILTIN_PACK_BIASES.filter(b => ['undead', 'spirit', 'beast'].includes(b.tag)), resourceProfile: weirdWestCombatProfile }),
|
|
147
|
-
createCombatRecovery(),
|
|
148
127
|
createBossPhaseListener(mesaCrawlerBoss),
|
|
149
128
|
createAbilityCore({ abilities: weirdWestAbilities, statMapping: { power: 'grit', precision: 'draw-speed', focus: 'lore' } }),
|
|
150
129
|
createAbilityEffects(),
|
package/dist/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,aAAa,EACb,UAAU,EACV,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|