ambslot-monster-kill
Advanced tools
Comparing version 1.1.1 to 1.1.2
81
index.ts
@@ -1,3 +0,82 @@ | ||
import MonsterKill from './src' | ||
import {probability, genProbabilities} from './libs' | ||
class MonsterKill { | ||
RTP: number | ||
monsterData: any | ||
constructor(monsterData) { | ||
this.RTP = 0.96 | ||
this.monsterData = monsterData.reduce((p: any, c: any, i: number, a: any[]) => { | ||
p[c.type] = { | ||
_id: c._id, | ||
type: c.type, | ||
multiplier: c.multiplier, | ||
} | ||
return p | ||
}, {}) | ||
} | ||
shot(monsters: any[], value: number = 1) { | ||
for (let index = 0; index < monsters.length; index++) { | ||
let _monster = this.monsterData[monsters[index].type] | ||
if (!this.monsterData[monsters[index].type]) return { element: 'error', message: 'Undefined monster data' } | ||
monsters[index].multiplier = {} | ||
let monsterProbs = [] | ||
if (_monster.multiplier.onDeath) { | ||
monsters[index].multiplier.onDeath = _monster.multiplier.onDeath[0] + ~~(Math.random() * (_monster.multiplier.onDeath[1] - _monster.multiplier.onDeath[0])) | ||
monsterProbs = [ | ||
...monsterProbs, | ||
{ | ||
p: Number(((100 / monsters[index].multiplier.onDeath) * (this.RTP / 100) * value / monsters.length).toFixed(4)), | ||
obj: { | ||
element: 'death', | ||
multiplier: monsters[index].multiplier.onDeath | ||
} | ||
} | ||
] | ||
} | ||
if (_monster.multiplier.onDamage) { | ||
monsters[index].multiplier.onDamage = _monster.multiplier.onDamage[0] + ~~(Math.random() * (_monster.multiplier.onDamage[1] - _monster.multiplier.onDamage[0])) | ||
monsterProbs = [ | ||
...monsterProbs, | ||
{ | ||
p: Number(((100 / monsters[index].multiplier.onDamage) * (this.RTP / 100) * value / monsters.length).toFixed(4)), | ||
obj: { | ||
element: 'drop', | ||
multiplier: monsters[index].multiplier.onDamage | ||
} | ||
} | ||
] | ||
} | ||
console.log(monsterProbs) | ||
let probs= genProbabilities(monsterProbs) | ||
let mon = new probability(probs) | ||
mon.set() | ||
const result = mon.calc() | ||
monsters[index].result = result | ||
} | ||
console.log(monsters) | ||
return monsters | ||
} | ||
skill(monsters: any[], value: number = 0) { | ||
const randomIndex: number[] = Array.apply(null, {length: monsters.length}).map(Number.call, Number).sort(() => Math.random() - 0.5) | ||
for (const index of randomIndex) { | ||
let _monster = this.monsterData[monsters[index].type] | ||
if (!this.monsterData[monsters[index].type]) return { element: 'error', message: 'Undefined monster data' } | ||
monsters[index].multiplier = {} | ||
if (_monster.multiplier.onDeath) { | ||
monsters[index].multiplier.onDeath = _monster.multiplier.onDeath[0] + ~~(Math.random() * (_monster.multiplier.onDeath[1] - _monster.multiplier.onDeath[0])) | ||
} | ||
if (monsters[index].multiplier.onDeath < value) { | ||
monsters[index].result = { element: 'death', multiplier: monsters[index].multiplier.onDeath } | ||
value -= monsters[index].multiplier.onDeath | ||
} else { | ||
monsters[index].result = { element: 'missing', multiplier: 0 } | ||
} | ||
} | ||
return monsters | ||
} | ||
} | ||
export default MonsterKill |
{ | ||
"name": "ambslot-monster-kill", | ||
"version": "1.1.1", | ||
"version": "1.1.2", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
4990
4
116