exploring/fighting is functional
[sketchy-heroes.git] / src / services / generate-monster.ts
diff --git a/src/services/generate-monster.ts b/src/services/generate-monster.ts
new file mode 100644 (file)
index 0000000..448ca4f
--- /dev/null
@@ -0,0 +1,46 @@
+import {Monster, Player} from "@prisma/client";
+import {random } from 'lodash';
+import {maxHp} from "../formulas";
+
+function notNeg(num: number, alt: number): number {
+  if(num < 1) {
+    return alt;
+  }
+  return num;
+}
+
+
+export function generateMonster(player: Player, monster: Monster) {
+  const data = {
+    name: monster.name,
+    monsterId: monster.id,
+    level: random(notNeg(player.level - 2, 1), player.level + 2),
+    currency: 0,
+    pow: 0,
+    zest: 0,
+    woosh: 0,
+    luck: 0,
+    aha: 0,
+    wow: 0,
+    hp: 0,
+    exp: 0
+  };
+
+  if(player.level < 2) {
+    data.level = player.level;
+  }
+
+  data.currency = data.level * random(1,4);
+  data.pow = random(notNeg(player.pow - 5, 1), player.pow + 2);
+  data.zest = random(notNeg(player.zest - 5, 1), player.zest + 2);
+  data.woosh = random(notNeg(player.woosh - 5, 1), player.woosh + 2);
+  data.luck = random(notNeg(player.luck - 5, 1), player.luck + 2);
+  data.aha = random(notNeg(player.aha - 5, 2), player.aha + 2);
+  data.wow = random(notNeg(player.wow - 5, 1), player.wow + 2);
+
+
+  data.hp = maxHp(data.level, data.zest);
+  data.exp = random(data.level, player.level * 3);
+
+  return data;
+}