mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-05-21 13:18:53 +00:00
classes: spell balancing all around
This commit is contained in:
parent
aa3a5c06b4
commit
cb5b80a2f7
2 changed files with 81 additions and 43 deletions
72
dist/habitrpg-shared.js
vendored
72
dist/habitrpg-shared.js
vendored
|
|
@ -10022,7 +10022,7 @@ var global=self;/**
|
|||
target: 'task',
|
||||
notes: 'With a crack, flames burst from your staff, scorching a task. You deal much higher damage to the task and gain additional experience.',
|
||||
cast: function(user, target) {
|
||||
target.value += user._statsComputed.int * .2;
|
||||
target.value += user._statsComputed.int * .02;
|
||||
return user.stats.exp += Math.abs(target.value);
|
||||
}
|
||||
},
|
||||
|
|
@ -10033,7 +10033,8 @@ var global=self;/**
|
|||
target: 'task',
|
||||
notes: 'A bolt of lightning pierces through a task. There is a high chance of a critical hit.',
|
||||
cast: function(user, target) {
|
||||
return target.value += user._statsComputed.int * .3 * crit(user, 'per');
|
||||
target.value += user._statsComputed.int * .02 * crit(user, 'per');
|
||||
return user.stats.exp += Math.abs(target.value);
|
||||
}
|
||||
},
|
||||
frost: {
|
||||
|
|
@ -10044,7 +10045,11 @@ var global=self;/**
|
|||
notes: "Ice forms on the party's tasks, slowing them down and opening them up to more attacks. Your party gains a buff to experience.",
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
return member.stats.buffs.int = user._statsComputed.int / 2;
|
||||
var _base;
|
||||
if ((_base = member.stats.buffs).int == null) {
|
||||
_base.int = 0;
|
||||
}
|
||||
return member.stats.buffs.int += user._statsComputed.int * .2;
|
||||
});
|
||||
}
|
||||
},
|
||||
|
|
@ -10056,7 +10061,11 @@ var global=self;/**
|
|||
notes: "Unearthly shadows form and wisp around your party, concealing their presence. Under the shroud, your party can sneak up on tasks, dealing more critical hits.",
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
return member.stats.buffs.str = user._statsComputed.str / 2;
|
||||
var _base;
|
||||
if ((_base = member.stats.buffs).str == null) {
|
||||
_base.str = 0;
|
||||
}
|
||||
return member.stats.buffs.str += user._statsComputed.int * .2;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -10069,7 +10078,7 @@ var global=self;/**
|
|||
target: 'task',
|
||||
notes: "You savagely hit a single task with all of your might, beating it into submission. The task's redness decreases.",
|
||||
cast: function(user, target) {
|
||||
return target.value += user._statsComputed.str * .3;
|
||||
return target.value += user._statsComputed.str * .03;
|
||||
}
|
||||
},
|
||||
defensiveStance: {
|
||||
|
|
@ -10079,7 +10088,11 @@ var global=self;/**
|
|||
target: 'self',
|
||||
notes: "You take a moment to relax your body and enter a defensive stance to ready yourself for the tasks' next onslaught. Reduces damage from dailies at the end of the day.",
|
||||
cast: function(user, target) {
|
||||
return user.stats.buffs.con = user._statsComputed.con / 2;
|
||||
var _base;
|
||||
if ((_base = user.stats.buffs).con == null) {
|
||||
_base.con = 0;
|
||||
}
|
||||
return user.stats.buffs.con += user._statsComputed.con * .3;
|
||||
}
|
||||
},
|
||||
valorousPresence: {
|
||||
|
|
@ -10090,7 +10103,11 @@ var global=self;/**
|
|||
notes: "Your presence emboldens the party. Their newfound courage gives them a boost of strength. Party members gain a buff to their STR.",
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
return member.stats.buffs.str = user._statsComputed.str / 2;
|
||||
var _base;
|
||||
if ((_base = member.stats.buffs).str == null) {
|
||||
_base.str = 0;
|
||||
}
|
||||
return member.stats.buffs.str += user._statsComputed.str * .2;
|
||||
});
|
||||
}
|
||||
},
|
||||
|
|
@ -10102,7 +10119,11 @@ var global=self;/**
|
|||
notes: "Your gaze strikes fear into the hearts of your party's enemies. The party gains a moderate boost to defense.",
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
return member.stats.buffs.con = user._statsComputed.con / 2;
|
||||
var _base;
|
||||
if ((_base = member.stats.buffs).con == null) {
|
||||
_base.con = 0;
|
||||
}
|
||||
return member.stats.buffs.con = user._statsComputed.con * .2;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -10115,7 +10136,7 @@ var global=self;/**
|
|||
target: 'task',
|
||||
notes: "Your nimble fingers run through the task's pockets and 'find' some treasures for yourself. You gain an increased gold bonus on the task and a higher chance of an item drop.",
|
||||
cast: function(user, target) {
|
||||
return user.stats.gp += ((target.value < 0 ? 0 : target.value) + 1) + user._statsComputed.per / 2;
|
||||
return user.stats.gp += ((target.value < 0 ? 0 : target.value) + 1) + user._statsComputed.per * .3;
|
||||
}
|
||||
},
|
||||
backStab: {
|
||||
|
|
@ -10125,11 +10146,12 @@ var global=self;/**
|
|||
target: 'task',
|
||||
notes: "Without a sound, you sweep behind a task and stab it in the back. You deal higher damage to the task, with a higher chance of a critical hit.",
|
||||
cast: function(user, target) {
|
||||
var _crit;
|
||||
var bonus, _crit;
|
||||
_crit = crit(user, 'per', .5);
|
||||
target.value += _crit / 2;
|
||||
user.stats.exp += _crit;
|
||||
return user.stats.gp += _crit;
|
||||
target.value += _crit * .03;
|
||||
bonus = ((target.value < 0 ? 0 : target.value) + 1) * _crit;
|
||||
user.stats.exp += bonus;
|
||||
return user.stats.gp += bonus;
|
||||
}
|
||||
},
|
||||
stealth: {
|
||||
|
|
@ -10140,7 +10162,11 @@ var global=self;/**
|
|||
notes: "You share your thievery tools with the party to aid them in 'acquiring' more gold. The party's gold bonus for tasks is buffed for a day.",
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
return member.stats.buffs.per = user._statsComputed.per / 2;
|
||||
var _base;
|
||||
if ((_base = member.stats.buffs).per == null) {
|
||||
_base.per = 0;
|
||||
}
|
||||
return member.stats.buffs.per += user._statsComputed.per * .2;
|
||||
});
|
||||
}
|
||||
},
|
||||
|
|
@ -10152,7 +10178,11 @@ var global=self;/**
|
|||
notes: "You hurry your step and dance circles around your party's enemies. You assist your party, helping them do extra damage to a number of tasks equal to half your strength.",
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
return member.stats.buffs.str = user._statsComputed.str / 2;
|
||||
var _base;
|
||||
if ((_base = member.stats.buffs).str == null) {
|
||||
_base.str = 0;
|
||||
}
|
||||
return member.stats.buffs.str = user._statsComputed.str * .2;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -10165,7 +10195,7 @@ var global=self;/**
|
|||
target: 'self',
|
||||
notes: 'Light covers your body, healing your wounds. You gain a boost to your health.',
|
||||
cast: function(user, target) {
|
||||
user.stats.hp += user._statsComputed.con + user._statsComputed.int;
|
||||
user.stats.hp += (user._statsComputed.con + user._statsComputed.int + 10) * .5;
|
||||
if (user.stats.hp > 50) {
|
||||
return user.stats.hp = 50;
|
||||
}
|
||||
|
|
@ -10182,7 +10212,7 @@ var global=self;/**
|
|||
if (target.type === 'reward') {
|
||||
return;
|
||||
}
|
||||
return target.value += user._statsComputed.int * .1;
|
||||
return target.value += user._statsComputed.int * .02;
|
||||
});
|
||||
}
|
||||
},
|
||||
|
|
@ -10194,7 +10224,11 @@ var global=self;/**
|
|||
notes: "A magical aura surrounds your party members, protecting them from damage. Your party members gain a buff to their defense.",
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
return member.stats.buffs.con = user._statsComputed.con / 2;
|
||||
var _base;
|
||||
if ((_base = member.stats.buffs).con == null) {
|
||||
_base.con = 0;
|
||||
}
|
||||
return member.stats.buffs.con = user._statsComputed.con * .4;
|
||||
});
|
||||
}
|
||||
},
|
||||
|
|
@ -10206,7 +10240,7 @@ var global=self;/**
|
|||
notes: "Soothing light envelops your party and heals them of their injuries. Your party members gain a boost to their health.",
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
member.stats.hp += user._statsComputed.con / 2 + user._statsComputed.int / 2;
|
||||
member.stats.hp += (user._statsComputed.con + user._statsComputed.int + 10) * .3;
|
||||
if (member.stats.hp > 50) {
|
||||
return member.stats.hp = 50;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -220,7 +220,7 @@ api.spells =
|
|||
target: 'task'
|
||||
notes: 'With a crack, flames burst from your staff, scorching a task. You deal much higher damage to the task and gain additional experience.'
|
||||
cast: (user, target) ->
|
||||
target.value += user._statsComputed.int*.2
|
||||
target.value += user._statsComputed.int * .02
|
||||
user.stats.exp += Math.abs(target.value)
|
||||
lightning:
|
||||
text: 'Lightning Strike'
|
||||
|
|
@ -229,7 +229,8 @@ api.spells =
|
|||
target: 'task'
|
||||
notes: 'A bolt of lightning pierces through a task. There is a high chance of a critical hit.'
|
||||
cast: (user, target) ->
|
||||
target.value += user._statsComputed.int*.3 * crit(user, 'per')
|
||||
target.value += user._statsComputed.int * .02 * crit(user, 'per')
|
||||
user.stats.exp += Math.abs(target.value)
|
||||
frost:
|
||||
text: 'Chilling Frost'
|
||||
mana: 35
|
||||
|
|
@ -239,7 +240,8 @@ api.spells =
|
|||
cast: (user, target) ->
|
||||
## lasts for 24 hours ##
|
||||
_.each target, (member) ->
|
||||
member.stats.buffs.int = user._statsComputed.int/2
|
||||
member.stats.buffs.int ?= 0
|
||||
member.stats.buffs.int += user._statsComputed.int * .2
|
||||
darkness:
|
||||
text: 'Shroud of Darkness'
|
||||
mana: 30
|
||||
|
|
@ -249,7 +251,8 @@ api.spells =
|
|||
cast: (user, target) ->
|
||||
## lasts for 24 hours ##
|
||||
_.each target, (member) ->
|
||||
member.stats.buffs.str = user._statsComputed.str/2
|
||||
member.stats.buffs.str ?= 0
|
||||
member.stats.buffs.str += user._statsComputed.int * .2
|
||||
|
||||
warrior:
|
||||
smash:
|
||||
|
|
@ -259,7 +262,7 @@ api.spells =
|
|||
target: 'task'
|
||||
notes: "You savagely hit a single task with all of your might, beating it into submission. The task's redness decreases."
|
||||
cast: (user, target) ->
|
||||
target.value += user._statsComputed.str*.3
|
||||
target.value += user._statsComputed.str * .03
|
||||
defensiveStance:
|
||||
text: 'Defensive Stance'
|
||||
mana: 25
|
||||
|
|
@ -267,8 +270,8 @@ api.spells =
|
|||
target: 'self'
|
||||
notes: "You take a moment to relax your body and enter a defensive stance to ready yourself for the tasks' next onslaught. Reduces damage from dailies at the end of the day."
|
||||
cast: (user, target) ->
|
||||
## Only affects health loss at cron from dailies ##
|
||||
user.stats.buffs.con = user._statsComputed.con/2
|
||||
user.stats.buffs.con ?= 0
|
||||
user.stats.buffs.con += user._statsComputed.con * .3
|
||||
valorousPresence:
|
||||
text: 'Valorous Presence'
|
||||
mana: 20
|
||||
|
|
@ -276,9 +279,9 @@ api.spells =
|
|||
target: 'party'
|
||||
notes: "Your presence emboldens the party. Their newfound courage gives them a boost of strength. Party members gain a buff to their STR."
|
||||
cast: (user, target) ->
|
||||
## lasts 24 hours ##
|
||||
_.each target, (member) ->
|
||||
member.stats.buffs.str = user._statsComputed.str/2
|
||||
member.stats.buffs.str ?= 0
|
||||
member.stats.buffs.str += user._statsComputed.str * .2
|
||||
intimidate:
|
||||
text: 'Intimidating Gaze'
|
||||
mana: 15
|
||||
|
|
@ -286,9 +289,9 @@ api.spells =
|
|||
target: 'party'
|
||||
notes: "Your gaze strikes fear into the hearts of your party's enemies. The party gains a moderate boost to defense."
|
||||
cast: (user, target) ->
|
||||
## lasts 24 hours ##
|
||||
_.each target, (member) ->
|
||||
member.stats.buffs.con = user._statsComputed.con/2
|
||||
member.stats.buffs.con ?= 0
|
||||
member.stats.buffs.con = user._statsComputed.con * .2
|
||||
|
||||
rogue:
|
||||
pickPocket:
|
||||
|
|
@ -298,7 +301,7 @@ api.spells =
|
|||
target: 'task'
|
||||
notes: "Your nimble fingers run through the task's pockets and 'find' some treasures for yourself. You gain an increased gold bonus on the task and a higher chance of an item drop."
|
||||
cast: (user, target) ->
|
||||
user.stats.gp += ((if target.value < 0 then 0 else target.value) + 1) + user._statsComputed.per/2
|
||||
user.stats.gp += ((if target.value < 0 then 0 else target.value) + 1) + user._statsComputed.per * .3
|
||||
backStab:
|
||||
text: 'Backstab'
|
||||
mana: 15
|
||||
|
|
@ -307,9 +310,10 @@ api.spells =
|
|||
notes: "Without a sound, you sweep behind a task and stab it in the back. You deal higher damage to the task, with a higher chance of a critical hit."
|
||||
cast: (user, target) ->
|
||||
_crit = crit(user, 'per', .5)
|
||||
target.value += _crit/2
|
||||
user.stats.exp += _crit
|
||||
user.stats.gp += _crit
|
||||
target.value += _crit * .03
|
||||
bonus = ((if target.value < 0 then 0 else target.value) + 1) * _crit
|
||||
user.stats.exp += bonus
|
||||
user.stats.gp += bonus
|
||||
stealth:
|
||||
text: 'Tools of the Trade'
|
||||
mana: 20
|
||||
|
|
@ -319,7 +323,8 @@ api.spells =
|
|||
cast: (user, target) ->
|
||||
## lasts 24 hours ##
|
||||
_.each target, (member) ->
|
||||
member.stats.buffs.per = user._statsComputed.per/2
|
||||
member.stats.buffs.per ?= 0
|
||||
member.stats.buffs.per += user._statsComputed.per * .2
|
||||
speedburst:
|
||||
text: 'Burst of Speed'
|
||||
mana: 25
|
||||
|
|
@ -327,11 +332,9 @@ api.spells =
|
|||
target: 'party'
|
||||
notes: "You hurry your step and dance circles around your party's enemies. You assist your party, helping them do extra damage to a number of tasks equal to half your strength."
|
||||
cast: (user, target) ->
|
||||
# each party member gets this bonus to a number tasks == user.stats.str/2
|
||||
# the effect lasts 24 hours, or when until the party member has used the effected number of tasks. whichever occurs sooner.
|
||||
# the 24 hour limit is to help prevent it stacking on a player who has been absent for a long time.
|
||||
_.each target, (member) ->
|
||||
member.stats.buffs.str = user._statsComputed.str/2
|
||||
member.stats.buffs.str ?= 0
|
||||
member.stats.buffs.str = user._statsComputed.str * .2
|
||||
|
||||
healer:
|
||||
heal:
|
||||
|
|
@ -341,7 +344,7 @@ api.spells =
|
|||
target: 'self'
|
||||
notes: 'Light covers your body, healing your wounds. You gain a boost to your health.'
|
||||
cast: (user, target) ->
|
||||
user.stats.hp += user._statsComputed.con + user._statsComputed.int
|
||||
user.stats.hp += (user._statsComputed.con + user._statsComputed.int + 10) *.5
|
||||
user.stats.hp = 50 if user.stats.hp > 50
|
||||
brightness:
|
||||
text: 'Searing Brightness'
|
||||
|
|
@ -352,7 +355,7 @@ api.spells =
|
|||
cast: (user, target) ->
|
||||
_.each user.tasks, (target) ->
|
||||
return if target.type is 'reward'
|
||||
target.value += user._statsComputed.int*.1
|
||||
target.value += user._statsComputed.int * .02
|
||||
protectAura:
|
||||
text: 'Protective Aura'
|
||||
mana: 30
|
||||
|
|
@ -362,7 +365,8 @@ api.spells =
|
|||
cast: (user, target) ->
|
||||
## lasts 24 hours ##
|
||||
_.each target, (member) ->
|
||||
member.stats.buffs.con = user._statsComputed.con/2
|
||||
member.stats.buffs.con ?= 0
|
||||
member.stats.buffs.con = user._statsComputed.con * .4
|
||||
heallAll:
|
||||
text: 'Blessing'
|
||||
mana: 25
|
||||
|
|
@ -371,7 +375,7 @@ api.spells =
|
|||
notes: "Soothing light envelops your party and heals them of their injuries. Your party members gain a boost to their health."
|
||||
cast: (user, target) ->
|
||||
_.each target, (member) ->
|
||||
member.stats.hp += (user._statsComputed.con/2 + user._statsComputed.int/2)
|
||||
member.stats.hp += (user._statsComputed.con + user._statsComputed.int + 10) * .3
|
||||
member.stats.hp = 50 if member.stats.hp > 50
|
||||
|
||||
# Intercept all spells to reduce user.stats.mp after casting the spell
|
||||
|
|
|
|||
Loading…
Reference in a new issue