@@ -9,7 +9,7 @@ | |||
"js": "node --harmony" | |||
}, | |||
"events": { | |||
"restart": "osascript -e 'display notification \"App restarted due to:\n'$FILENAME'\" with title \"nodemon\"'" | |||
}, | |||
"watch": [ | |||
"*.*", | |||
@@ -8,17 +8,18 @@ define([ | |||
var spells = config.spells; | |||
var max = true; | |||
var maxTarget = true; | |||
spells['harvest life'] = { | |||
statType: ['str', 'int'], | |||
statMult: 1.6, | |||
statMult: 1.34, | |||
element: 'physical', | |||
auto: true, | |||
cdMax: 6, | |||
manaCost: 0, | |||
range: 1, | |||
random: { | |||
damage: [2.2, 4.1], | |||
damage: [1.5, 5.7], | |||
healPercent: [5, 15] | |||
} | |||
}; | |||
@@ -26,14 +27,14 @@ define([ | |||
var bloodBarrierMult = 1.25; | |||
spells['skeleton melee'] = { | |||
statType: ['str', 'int'], | |||
statMult: 0.81 * bloodBarrierMult, | |||
statMult: 0.46 * bloodBarrierMult, | |||
element: 'physical', | |||
auto: true, | |||
cdMax: 5, | |||
manaCost: 0, | |||
range: 1, | |||
random: { | |||
damage: [1, 1] | |||
damage: [1, 3.8] | |||
} | |||
}; | |||
@@ -62,13 +63,36 @@ define([ | |||
606 | |||
]; | |||
var hpMax = [ | |||
91.25, | |||
96.50, | |||
110.75, | |||
138.50, | |||
184.25, | |||
252.50, | |||
347.75, | |||
474.50, | |||
637.25, | |||
840.50, | |||
1088.75, | |||
1386.50, | |||
1738.25, | |||
2148.50, | |||
2621.75, | |||
3162.50, | |||
3775.25, | |||
4464.50, | |||
5234.75, | |||
6090.50 | |||
]; | |||
return { | |||
init: function () { | |||
var res = []; | |||
for (var s in spells) { | |||
var c = spells[s]; | |||
var d = c.random.damage; | |||
var d = c.random.damage || c.random.healing; | |||
if (!d) | |||
continue; | |||
@@ -82,6 +106,8 @@ define([ | |||
element: c.element, | |||
cd: c.cdMax, | |||
damage: damage, | |||
noCrit: true, | |||
noMitigate: !!c.random.healing, | |||
source: { | |||
stats: { | |||
@@ -93,17 +119,15 @@ define([ | |||
elementPoisonPercent: 0, | |||
elementPhysicalPercent: 0, | |||
elementHolyPercent: 0, | |||
elementFirePercent: 0, | |||
critChance: max ? 50 : 5, | |||
critMultiplier: max ? 300 : 150 | |||
elementFirePercent: 0 | |||
} | |||
}, | |||
}, | |||
target: { | |||
stats: { | |||
values: { | |||
armor: level * 50, | |||
elementAllResist: 0, | |||
armor: maxTarget ? (level * 50) : (level * 20), | |||
elementAllResist: maxTarget ? 100 : 0, | |||
elementArcaneResist: 0, | |||
elementFrostResist: 0, | |||
elementPoisonResist: 0, | |||
@@ -129,17 +153,22 @@ define([ | |||
var amount = combat.getDamage(config).amount; | |||
var duration = c.random.i_duration; | |||
if (duration) { | |||
amount *= (duration[0] + ~~((duration[1] - duration[0]) / 2)); | |||
amount *= max ? duration[1] : duration[0]; | |||
} | |||
amount /= c.cdMax | |||
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: ~~(hp[level - 1] / amount), | |||
tpk: ~~((maxTarget ? hpMax : hp)[level - 1] / amount), | |||
amount: amount | |||
}); | |||
} | |||
@@ -41,7 +41,7 @@ define([ | |||
amount = ( | |||
amount * | |||
max(0.5 + max((1 - ((tgtValues.armor || 0) / (srcValues.level * 50))) / 2, -0.5), 0.5) * | |||
max(0.5 + max((1 - (resist / 100)) / 2, -0.5), 0.5) | |||
max(0.5 + max((1 - (resist / 100)) / 2, -0.5), 0.5) | |||
); | |||
} | |||
@@ -525,7 +525,7 @@ define([ | |||
var item = generator.generate({ | |||
type: classes.weapons[this.obj.class], | |||
quality: 0, | |||
spellQuality: 'mid' | |||
spellQuality: 'basic' | |||
}); | |||
item.eq = true; | |||
item.noSalvage = true; | |||
@@ -6,43 +6,43 @@ define([ | |||
var spells = { | |||
'magic missile': { | |||
statType: 'int', | |||
statMult: 1.35, | |||
statMult: 0.59, | |||
element: 'arcane', | |||
auto: true, | |||
cdMax: 7, | |||
manaCost: 0, | |||
range: 9, | |||
random: { | |||
damage: [2, 4] | |||
damage: [2, 7.6] | |||
} | |||
}, | |||
'ice spear': { | |||
statType: 'int', | |||
statMult: 0.724, | |||
statMult: 0.42, | |||
element: 'frost', | |||
cdMax: 12, | |||
manaCost: 5, | |||
range: 9, | |||
random: { | |||
damage: [4, 8], | |||
damage: [4, 15.2], | |||
i_freezeDuration: [6, 10] | |||
} | |||
}, | |||
'fireblast': { | |||
statType: 'int', | |||
statMult: 0.3, | |||
statMult: 0.25, | |||
element: 'fire', | |||
cdMax: 6, | |||
manaCost: 7, | |||
random: { | |||
damage: [6.7, 13.3], | |||
damage: [6, 22.9], | |||
i_radius: [1, 2.2], | |||
i_pushback: [1, 4] | |||
} | |||
}, | |||
'smite': { | |||
statType: 'int', | |||
statMult: 4.06, | |||
statMult: 0.84, | |||
element: 'holy', | |||
auto: true, | |||
needLos: true, | |||
@@ -50,19 +50,19 @@ define([ | |||
manaCost: 0, | |||
range: 9, | |||
random: { | |||
damage: [1.4, 2.6] | |||
damage: [4, 15.2] | |||
} | |||
}, | |||
'healing circle': { | |||
statType: 'int', | |||
statMult: 0.454, | |||
statMult: 0.055, | |||
element: 'holy', | |||
cdMax: 10, | |||
manaCost: 10, | |||
range: 9, | |||
radius: 3, | |||
random: { | |||
healing: [0.7, 1.3], | |||
healing: [3.5, 4], | |||
i_duration: [7, 13] | |||
} | |||
}, | |||
@@ -78,26 +78,26 @@ define([ | |||
},*/ | |||
'slash': { | |||
statType: 'str', | |||
statMult: 1.87, | |||
statMult: 0.745, | |||
element: 'physical', | |||
threatMult: 4, | |||
auto: true, | |||
cdMax: 5, | |||
useWeaponRange: true, | |||
random: { | |||
damage: [2, 4] | |||
damage: [3, 11.4] | |||
} | |||
}, | |||
'charge': { | |||
statType: 'str', | |||
statMult: 0.76, | |||
statMult: 0.48, | |||
element: 'physical', | |||
threatMult: 3, | |||
cdMax: 15, | |||
range: 10, | |||
manaCost: 5, | |||
random: { | |||
damage: [4, 8], | |||
damage: [3.5, 13.3], | |||
i_stunDuration: [6, 10] | |||
} | |||
}, | |||
@@ -113,23 +113,23 @@ define([ | |||
},*/ | |||
'double slash': { | |||
statType: 'dex', | |||
statMult: 1.44, | |||
statMult: 0.84, | |||
element: 'physical', | |||
cdMax: 3, | |||
useWeaponRange: true, | |||
auto: true, | |||
random: { | |||
damage: [1, 3] | |||
damage: [1, 3.8] | |||
} | |||
}, | |||
'smokebomb': { | |||
statType: 'dex', | |||
statMult: 0.484, | |||
statMult: 0.335, | |||
element: 'poison', | |||
cdMax: 3, | |||
manaCost: 6, | |||
random: { | |||
damage: [0.3, 0.7], | |||
damage: [0.25, 0.73], | |||
i_radius: [1, 3], | |||
i_duration: [7, 13] | |||
} | |||
@@ -143,14 +143,14 @@ define([ | |||
},*/ | |||
'crystal spikes': { | |||
statType: ['dex', 'int'], | |||
statMult: 4, | |||
statMult: 3.18, | |||
element: 'physical', | |||
manaCost: 6, | |||
needLos: true, | |||
cdMax: 20, | |||
range: 9, | |||
random: { | |||
damage: [9.3, 18.6], | |||
damage: [7, 26.5], | |||
i_delay: [1, 4] | |||
}, | |||
negativeStats: [ | |||
@@ -55,7 +55,7 @@ define([ | |||
for (var r in randomProperties) { | |||
var negativeStat = (negativeStats.indexOf(r) > -1); | |||
var range = randomProperties[r]; | |||
var roll = random.norm(0, 1); | |||
var roll = random.expNorm(0, 1); | |||
if (spellQuality == 'basic') | |||
roll = 0; | |||
else if (spellQuality == 'mid') | |||
@@ -133,14 +133,14 @@ define([ | |||
beforeGetSpellsConfig: function (spells) { | |||
spells['harvest life'] = { | |||
statType: ['str', 'int'], | |||
statMult: 0.88, | |||
statMult: 1.34, | |||
element: 'physical', | |||
auto: true, | |||
cdMax: 6, | |||
manaCost: 0, | |||
range: 1, | |||
random: { | |||
damage: [2.2, 4.1], | |||
damage: [1.5, 5.7], | |||
healPercent: [5, 15] | |||
} | |||
}; | |||
@@ -153,8 +153,8 @@ define([ | |||
manaCost: 5, | |||
range: 9, | |||
random: { | |||
damagePercent: [80, 120], | |||
hpPercent: [65, 85] | |||
damage: [100, 380], | |||
hpPercent: [40, 60] | |||
} | |||
}; | |||
@@ -169,8 +169,8 @@ define([ | |||
var hpMult = 1 * mob.mob.hpMult; | |||
if (level < 10) { | |||
hpMult *= [0.0077, 0.01, 0.035, 0.08, 0.16, 0.28, 0.43, 0.62, 0.8][level - 1]; | |||
dmgMult *= [0.1, 0.2, 0.4, 0.7, 1, 1, 1, 1, 1][level - 1]; | |||
//hpMult *= [0.0077, 0.01, 0.035, 0.08, 0.16, 0.28, 0.43, 0.62, 0.8][level - 1]; | |||
//dmgMult *= [0.1, 0.2, 0.4, 0.7, 1, 1, 1, 1, 1][level - 1]; | |||
} | |||
if (mob.isRare) { | |||