Update enemy level formula for endless mode
parent
d54a4be7b4
commit
6c9b27a232
|
@ -63,16 +63,28 @@ export default class Battle {
|
||||||
|
|
||||||
private getLevelForWave(): integer {
|
private getLevelForWave(): integer {
|
||||||
let baseLevel = 1 + this.waveIndex / 2 + Math.pow(this.waveIndex / 25, 2);
|
let baseLevel = 1 + this.waveIndex / 2 + Math.pow(this.waveIndex / 25, 2);
|
||||||
|
let bossMultiplier = this.waveIndex <= 250 ? 1.2 : Math.pow(1.2, this.waveIndex / 250);
|
||||||
|
|
||||||
if (!(this.waveIndex % 10)) {
|
if (!(this.waveIndex % 10)) {
|
||||||
if (this.waveIndex === 200)
|
const ret = Math.floor(baseLevel * bossMultiplier);
|
||||||
return 200;
|
if (this.waveIndex === 200 || !(this.waveIndex % 250))
|
||||||
return Math.floor(baseLevel * 1.2);
|
return Math.ceil(ret / 25) * 25;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
const deviation = 10 / this.waveIndex;
|
const deviation = 10 / this.waveIndex;
|
||||||
|
|
||||||
return Math.max(Math.round(baseLevel + Math.abs(Utils.randGauss(deviation))), 1);
|
const randLevel = Math.max(Math.round(baseLevel + Math.abs(Utils.randSeedGauss(deviation))), 1);
|
||||||
|
|
||||||
|
if (this.waveIndex <= 250)
|
||||||
|
return randLevel;
|
||||||
|
|
||||||
|
const waveRatio = Math.min(this.waveIndex - 250 / 250, 1);
|
||||||
|
|
||||||
|
const easeInFunc = Phaser.Tweens.Builders.GetEaseFunction('Sine.easeIn');
|
||||||
|
const easeOutFunc = Phaser.Tweens.Builders.GetEaseFunction('Sine.easeOut');
|
||||||
|
|
||||||
|
return Math.ceil(easeInFunc(waveRatio) * Math.floor(baseLevel * bossMultiplier) + easeOutFunc(1 - waveRatio) * randLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
getBattlerCount(): integer {
|
getBattlerCount(): integer {
|
||||||
|
|
|
@ -40,6 +40,13 @@ export function randGauss(value: number): number {
|
||||||
return rand / value;
|
return rand / value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function randSeedGauss(value: number): number {
|
||||||
|
let rand = 0;
|
||||||
|
for(var i = value; i > 0; i--)
|
||||||
|
rand += Phaser.Math.RND.realInRange(0, 1);
|
||||||
|
return rand / value;
|
||||||
|
}
|
||||||
|
|
||||||
export function padInt(value: integer, length: integer, padWith?: string): string {
|
export function padInt(value: integer, length: integer, padWith?: string): string {
|
||||||
if (!padWith)
|
if (!padWith)
|
||||||
padWith = '0';
|
padWith = '0';
|
||||||
|
|
Loading…
Reference in New Issue