step 10.18: wip (not ticked)

This commit is contained in:
bepis
2026-10-23 08:43:24 +11:00
parent 477b90fb59
commit c78a9c8d49
3 changed files with 35 additions and 29 deletions
+8 -7
View File
@@ -12,6 +12,7 @@ const { setup, teardown, cleanup } = require('../helpers');
/**
* Simulate one hunt: hero vs a randomly-weighted monster from a zone.
* Uses the same weighted-pick logic as huntService.
* Monster stats match 008_balance.sql migration.
*/
function pickAndFight(zoneKey, classKey, rng) {
const cls = getClass(classKey);
@@ -25,12 +26,12 @@ function pickAndFight(zoneKey, classKey, rng) {
str: base.str, agi: base.agi, int: base.int, vit: base.vit,
};
// Monster data from the DB (meadows monsters)
// Monster data from DB (meadows monsters, post-008_balance.sql)
const monsters = {
meadows: [
{ name: 'Giant Rat', level: 1, hp: 55, attack: 15, defense: 5, speed: 10, weight: 30 },
{ name: 'Meadow Wolf', level: 2, hp: 85, attack: 22, defense: 9, speed: 14, weight: 20 },
{ name: 'Goblin Scrapper', level: 3, hp: 130, attack: 28, defense: 12, speed: 10, weight: 15 },
{ name: 'Giant Rat', level: 1, hp: 120, attack: 11, defense: 40, speed: 12, weight: 30 },
{ name: 'Meadow Wolf', level: 2, hp: 150, attack: 12, defense: 40, speed: 16, weight: 20 },
{ name: 'Goblin Scrapper', level: 3, hp: 180, attack: 15, defense: 40, speed: 11, weight: 15 },
],
};
@@ -107,9 +108,9 @@ describe('balance: Crags level-1 win rate', () => {
const monsters = {
crags: [
{ name: 'Ember Imp', level: 10, hp: 200, attack: 44, defense: 22, speed: 18, weight: 25 },
{ name: 'Stone Golem', level: 12, hp: 420, attack: 50, defense: 52, speed: 5, weight: 10 },
{ name: 'Ashfang Drake', level: 14, hp: 480, attack: 62, defense: 38, speed: 16, weight: 5 },
{ name: 'Ember Imp', level: 10, hp: 300, attack: 45, defense: 40, speed: 20, weight: 25 },
{ name: 'Stone Golem', level: 12, hp: 600, attack: 48, defense: 40, speed: 5, weight: 10 },
{ name: 'Ashfang Drake', level: 14, hp: 850, attack: 55, defense: 40, speed: 18, weight: 5 },
],
};