X-Git-Url: https://git.xangelo.ca/?p=sketchy-heroes.git;a=blobdiff_plain;f=src%2Fservices%2Fgenerate-monster.ts;fp=src%2Fservices%2Fgenerate-monster.ts;h=448ca4ff550ac49a86a54f0f257c977c3bedee96;hp=0000000000000000000000000000000000000000;hb=7aa7248bc4f3f59a002beb98fa889a9da3c25866;hpb=9cec2c639563092ed050716db1e7e4657f937bf5 diff --git a/src/services/generate-monster.ts b/src/services/generate-monster.ts new file mode 100644 index 0000000..448ca4f --- /dev/null +++ b/src/services/generate-monster.ts @@ -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; +}