Browse Source

fixes #1328

tags/v0.4.2^2
Big Bad Waffle 4 years ago
parent
commit
6a2f6c54b5
4 changed files with 205 additions and 210 deletions
  1. +3
    -7
      helpers/sims/dpt/index.js
  2. +179
    -180
      helpers/sims/dpt/sim.js
  3. +22
    -22
      src/server/config/spellsConfig.js
  4. +1
    -1
      src/server/world/mobBuilder.js

+ 3
- 7
helpers/sims/dpt/index.js View File

@@ -1,8 +1,4 @@
var extend = require('extend');
var requirejs = require('requirejs');
global.extend = require('../../../src/server/misc/clone');

global.extend = extend;

requirejs(['sim'], function (sim) {
sim.init();
});
const sim = require('./sim');
sim();

+ 179
- 180
helpers/sims/dpt/sim.js View File

@@ -1,182 +1,181 @@
define([
'../../src/server/config/spellsConfig',
'../../src/server/combat/combat'
], function (
config,
combat
) {
var spells = config.spells;

var max = false;
var maxTarget = false;

spells['harvest life'] = {
statType: ['str', 'int'],
statMult: 0.76,
auto: true,
cdMax: 6,
manaCost: 0,
range: 1,
random: {
damage: [1.5, 5.7],
healPercent: [5, 15]
}
};

var bloodBarrierMult = 1.25;
spells['skeleton melee'] = {
statType: ['str', 'int'],
statMult: 0.27 * bloodBarrierMult,
auto: true,
cdMax: 5,
manaCost: 0,
range: 1,
random: {
damage: [1, 3.8]
}
};

var level = 20;

var hp = [
32.70,
65.40,
98.10,
130.80,
163.50,
196.20,
228.90,
261.60,
294.30,
327.00,
359.70,
392.40,
425.10,
457.80,
490.50,
523.20,
555.90,
588.60,
621.30,
654.00
];

var hpMax = [
160.48,
324.53,
489.90,
660.79,
841.44,
1036.21,
1249.50,
1485.85,
1749.87,
2046.32,
2380.05,
2756.08,
3179.54,
3655.72,
4190.09,
4788.27,
5456.08,
6199.50,
7024.73,
7938.17
];

return {
init: function () {
var res = [];

for (var s in spells) {
var c = spells[s];
var d = c.random.damage || c.random.healing;
if (!d)
continue;

var damage = d[0];
if (max)
damage = d[1];

var config = {
statType: c.statType,
statMult: c.statMult,
element: c.element,
cd: c.cdMax,
damage: damage,
noCrit: true,
noMitigate: !!c.random.healing,

source: {
stats: {
values: {
level: level,
elementArcanePercent: 0,
elementFrostPercent: 0,
elementPoisonPercent: 0,
elementHolyPercent: 0,
elementFirePercent: 0
}
},
},
target: {
stats: {
values: {
armor: maxTarget ? (level * 50) : (level * 20),
elementAllResist: maxTarget ? 100 : 0,
elementArcaneResist: 0,
elementFrostResist: 0,
elementPoisonResist: 0,
elementHolyResist: 0,
elementFireResist: 0
}
}
const spellsConfig = require('../../../src/server/config/spellsConfig');
const combat = require('../../../src/server/combat/combat');

let spells = spellsConfig.spells;

let max = true;
let maxTarget = false;

spells['harvest life'] = {
statType: ['str', 'int'],
statMult: 1,
cdMax: 10,
castTimeMax: 3,
manaCost: 5,
isAttack: true,
range: 1,
random: {
damage: [4, 14],
healPercent: [10, 30]
}
};

/*let bloodBarrierMult = 1.25;
spells['skeleton melee'] = {
statType: ['str', 'int'],
statMult: 1 * bloodBarrierMult,
auto: true,
cdMax: 5,
manaCost: 0,
range: 1,
random: {
damage: [1, 3.8]
}
};*/

let level = 20;

let hp = [
32.70,
65.40,
98.10,
130.80,
163.50,
196.20,
228.90,
261.60,
294.30,
327.00,
359.70,
392.40,
425.10,
457.80,
490.50,
523.20,
555.90,
588.60,
621.30,
654.00
];

let hpMax = [
160.48,
324.53,
489.90,
660.79,
841.44,
1036.21,
1249.50,
1485.85,
1749.87,
2046.32,
2380.05,
2756.08,
3179.54,
3655.72,
4190.09,
4788.27,
5456.08,
6199.50,
7024.73,
7938.17
];

module.exports = function () {
let res = [];

for (let s in spells) {
let c = spells[s];
c.statType = c.statType || 'int';
let d = c.random.damage || c.random.healing;
if (!d)
continue;

let damage = d[0];
if (max)
damage = d[1];

var config = {
statType: c.statType,
statMult: c.statMult,
element: c.element,
cd: c.cdMax,
damage: damage,
noCrit: true,
noMitigate: true,

source: {
stats: {
values: {
level: level,
elementArcanePercent: 0,
elementFrostPercent: 0,
elementPoisonPercent: 0,
elementHolyPercent: 0,
elementFirePercent: 0
}
};

var stat = c.statType;
if (!stat.push)
stat = [stat];

var minStat = level;
var maxStat = level * 5;

var mult = (stat.length == 1) ? 1 : 1;

stat.forEach(s => config.source.stats.values[s] = (max ? maxStat : minStat) * mult);

var amount = combat.getDamage(config).amount;
var duration = c.random.i_duration;
if (duration)
amount *= max ? duration[1] : duration[0];

amount /= c.cdMax;

var critChance = max ? 0.5 : 0.05;
var critMult = max ? 3 : 1.5;

amount = (amount * (1 - critChance)) + (amount * critChance * critMult);

res.push({
name: s,
dpt: (~~(amount * 10) / 10),
cd: c.cdMax,
mana: c.manaCost || '',
tpk: ~~((maxTarget ? hpMax : hp)[level - 1] / amount),
amount: amount
});
}
},
target: {
stats: {
values: {
armor: maxTarget ? (level * 50) : (level * 20),
elementAllResist: maxTarget ? 100 : 0,
elementArcaneResist: 0,
elementFrostResist: 0,
elementPoisonResist: 0,
elementHolyResist: 0,
elementFireResist: 0
}
}
}

res = res.sort((a, b) => (b.dpt - a.dpt));

console.log();
console.log('ability dpt');
console.log();
res.forEach(function (r) {
var gap = new Array(20 - r.name.length);
console.log(r.name + ': ' + gap.join(' ') + r.dpt + ' ' + r.tpk + ' ticks ' + (~~((r.tpk / 2.85) * 10) / 10) + ' seconds');
});
console.log();
}
};
});
};

let stat = c.statType;
if (!stat.push)
stat = [stat];

const minStat = level;
const maxStat = level * 10;

stat.forEach(ss => {
config.source.stats.values[ss] = (max ? maxStat : minStat);
});

let amount = combat.getDamage(config).amount;

let critChance = max ? 0.5 : 0.05;
let critMult = max ? 3 : 1.5;

let castTimeMax = c.castTimeMax;
amount = (((amount / 100) * (100 - critChance)) + (((amount / 100) * critChance) * (critMult / 100)));
let duration = c.random.i_duration;
if (duration)
amount *= max ? duration[1] : duration[0];
const div = (c.cdMax + castTimeMax) || 1;
amount /= div;

res.push({
name: s,
dpt: ~~(~~(amount * 10) / 10),
cd: c.cdMax,
mana: c.manaCost || '',
tpk: ~~((maxTarget ? hpMax : hp)[level - 1] / amount),
amount: amount
});
}

res = res.sort((a, b) => (b.dpt - a.dpt));

console.log();
console.log('ability dpt');
console.log();
res.forEach(function (r) {
let gap = new Array(20 - r.name.length);
console.log(r.name + ': ' + gap.join(' ') + r.dpt + ' ' + r.tpk + ' ticks ' + (~~((r.tpk / 2.85) * 10) / 10) + ' seconds');
});
console.log();
};

+ 22
- 22
src/server/config/spellsConfig.js View File

@@ -17,7 +17,7 @@ let spells = {
manaCost: 0,
range: 9,
random: {
damage: [2, 7.6]
damage: [2, 7.2]
}
},

@@ -25,12 +25,12 @@ let spells = {
statType: 'int',
statMult: 1,
element: 'arcane',
cdMax: 6,
castTimeMax: 7,
manaCost: 4,
cdMax: 7,
castTimeMax: 6,
manaCost: 5,
range: 9,
random: {
damage: [4, 15]
damage: [4, 32]
}
},
'ice spear': {
@@ -42,7 +42,7 @@ let spells = {
manaCost: 4,
range: 9,
random: {
damage: [2, 8],
damage: [2, 15],
i_freezeDuration: [6, 10]
}
},
@@ -54,7 +54,7 @@ let spells = {
castTimeMax: 2,
manaCost: 5,
random: {
damage: [2, 5],
damage: [2, 10],
i_radius: [1, 2.2],
i_pushback: [2, 5]
}
@@ -63,8 +63,8 @@ let spells = {
statType: 'int',
statMult: 1,
element: 'holy',
cdMax: 4,
castTimeMax: 6,
cdMax: 6,
castTimeMax: 3,
range: 9,
manaCost: 7,
random: {
@@ -77,7 +77,7 @@ let spells = {
statMult: 1,
element: 'holy',
cdMax: 5,
castTimeMax: 5,
castTimeMax: 4,
manaCost: 8,
range: 9,
radius: 3,
@@ -108,7 +108,7 @@ let spells = {
range: 10,
manaCost: 3,
random: {
damage: [2, 8],
damage: [2, 11],
i_stunDuration: [6, 10]
}
},
@@ -117,10 +117,10 @@ let spells = {
statMult: 1,
cdMax: 20,
castTimeMax: 0,
manaCost: 12,
manaCost: 10,
random: {
i_duration: [10, 20],
i_chance: [20, 50]
i_chance: [30, 60]
}
},
whirlwind: {
@@ -133,18 +133,18 @@ let spells = {
noDrop: true,
random: {
i_range: [1, 2.5],
damage: [4, 15]
damage: [4, 18]
}
},
smokebomb: {
statType: 'dex',
statMult: 1,
element: 'poison',
cdMax: 5,
cdMax: 7,
castTimeMax: 0,
manaCost: 6,
random: {
damage: [0.25, 1.45],
damage: [0.25, 1.2],
i_radius: [1, 3],
i_duration: [7, 13]
}
@@ -152,26 +152,26 @@ let spells = {
ambush: {
statType: 'dex',
statMult: 1,
cdMax: 16,
castTimeMax: 7,
cdMax: 15,
castTimeMax: 3,
range: 10,
manaCost: 7,
noDrop: true,
random: {
damage: [8, 28],
i_stunDuration: [4, 6]
damage: [8, 35],
i_stunDuration: [4, 7]
}
},
'crystal spikes': {
statType: ['dex', 'int'],
statMult: 1,
manaCost: 22,
manaCost: 14,
needLos: true,
cdMax: 20,
castTimeMax: 0,
range: 9,
random: {
damage: [3, 14],
damage: [3, 16],
i_delay: [1, 4]
},
negativeStats: [


+ 1
- 1
src/server/world/mobBuilder.js View File

@@ -106,7 +106,7 @@ module.exports = {
mob.equipment.unequipAll();
mob.inventory.clear();

let hp = level * 32.7;
let hp = level * 40;
statValues.hpMax = hp;

statValues.level = level;


Loading…
Cancel
Save