torchlight-data
Version:
torchlight data repository
100 lines (90 loc) • 4.29 kB
JavaScript
Torchlight.t2.skills.embermage.frost.ElementalBoon = function ElementalBoon() {
this.name = "elementalboon";
this.displayName = "Elemental Boon";
this.description = "You imbue yourseld with a bolstering aura which increases your element damages and resistances. Boon's benefits are also applied to any allies within 12 meters.";
this.tree = "frost";
this.skillLevelRequiredTier = 3;
this.manaCost = [0, 18, 19, 20, 21, 22, 24, 26, 28];
var cooldown = 30;
this.cooldown = [cooldown];
var duration = 15;
var manaRecoveryDuration = 10;
this.duration = [duration];
this.tierBonuses = [
"Gains resistance to slowing and immobilization effects",
"Gains mana recharge",
"Faster cast and less mana"
];
this.attributes = [
new Torchlight.t2.skills.Attribute(this, "Cooldown", cooldown),
new Torchlight.t2.skills.Attribute(this, "Duration", duration),
new Torchlight.t2.skills.Attribute(this, "Mana Recovery Duration", manaRecoveryDuration, 10),
new Torchlight.t2.skills.Attribute(this, "Damage Reduction", calculateDamageReduction),
new Torchlight.t2.skills.Attribute(this, "Damage Add %", calculateDamageAddPercent),
new Torchlight.t2.skills.Attribute(this, "Slow Resistance", calculateSlowResistance, 5),
new Torchlight.t2.skills.Attribute(this, "Immobilization Resistance", calculateSlowResistance, 5),
new Torchlight.t2.skills.Attribute(this, "Mana Recovery", calculateManaRecovery, 10)
];
/**
* @param {number} skillLevel
* @param {number} playerLevel
* @returns {Torchlight.t2.effects[]}
*/
this.getEffects = function getEffects(skillLevel, playerLevel) {
var damageReduction = calculateDamageReduction(skillLevel);
var damageAdd = calculateDamageAddPercent(skillLevel);
var effects = [
new Torchlight.t2.effects.DamagePercent(damageReduction, "Poison", duration),
new Torchlight.t2.effects.DamagePercent(damageReduction, "Electric", duration),
new Torchlight.t2.effects.DamagePercent(damageReduction, "Ice", duration),
new Torchlight.t2.effects.DamagePercent(damageReduction, "Fire", duration),
new Torchlight.t2.effects.DamagePercent(damageAdd, "Poison", duration),
new Torchlight.t2.effects.DamagePercent(damageAdd, "Electric", duration),
new Torchlight.t2.effects.DamagePercent(damageAdd, "Ice", duration),
new Torchlight.t2.effects.DamagePercent(damageAdd, "Fire", duration)
];
if (effects >= 5) {
var slowResistance = calculateSlowResistance(skillLevel, playerLevel);
effects.push(new Torchlight.t2.effects.Resistance(slowResistance, "Slow",duration));
effects.push(new Torchlight.t2.effects.Resistance(slowResistance, "Immobilization", duration));
}
if (effects >= 10) {
var manaRecovery = calculateManaRecovery(skillLevel, playerLevel);
effects.push(new Torchlight.t2.effects.buffs.Recover(manaRecovery, Torchlight.t2.effects.Effect.recover.Mana, manaRecoveryDuration);
}
return effects;
};
/**
* @param {number} skillLevel
* @returns {number}
*/
function calculateDamageReduction(skillLevel) {
return -1 * (8 * (2 * skillLevel));
}
/**
* @param {number} skillLevel
* @returns {number}
*/
function calculateDamageAddPercent(skillLevel) {
return -1 * calculateDamageReduction(skillLevel);
}
/**
* @fixme
* @param {number} skillLevel
* @param {number} playerLevel
* @returns {number}
*/
function calculateSlowResistance(skillLevel, playerLevel) {
return 42;
}
/**
* @fixme
* @param {number} skillLevel
* @param {number} playerLevel
* @returns {number}
*/
function calculateManaRecovery(skillLevel, playerLevel) {
return 42;
}
};
Torchlight.t2.skills.embermage.frost.ElementalBoon.prototype = Object.create(Torchlight.t2.skills.Skill.prototype);