mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
Add babel task and move to src directory
This commit is contained in:
@@ -1,22 +0,0 @@
|
||||
let cardTypes = {
|
||||
greeting: {
|
||||
key: 'greeting',
|
||||
messageOptions: 4,
|
||||
yearRound: true
|
||||
},
|
||||
nye: {
|
||||
key: 'nye',
|
||||
messageOptions: 5
|
||||
},
|
||||
thankyou: {
|
||||
key: 'thankyou',
|
||||
messageOptions: 4,
|
||||
yearRound: true
|
||||
},
|
||||
valentine: {
|
||||
key: 'valentine',
|
||||
messageOptions: 4
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = cardTypes;
|
||||
@@ -1,26 +0,0 @@
|
||||
let each = require('lodash').each;
|
||||
let t = require('../helpers/translator');
|
||||
|
||||
const DROP_EGGS = [
|
||||
'Wolf',
|
||||
'TigerCub',
|
||||
'PandaCub',
|
||||
'LionCub',
|
||||
'Fox',
|
||||
'FlyingPig',
|
||||
'Dragon',
|
||||
'Cactus',
|
||||
'BearCub',
|
||||
];
|
||||
|
||||
let eggs = { };
|
||||
|
||||
each(DROP_EGGS, (pet) => {
|
||||
eggs[pet] = {
|
||||
text: t(`dropEgg${pet}Text`),
|
||||
mountText: t(`dropEgg${pet}MountText`),
|
||||
adjective: t(`dropEgg${pet}Adjective`),
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = eggs;
|
||||
@@ -1,23 +0,0 @@
|
||||
// value & other defaults set below
|
||||
let each = require('lodash').each;
|
||||
let defaults = require('lodash').defaults;
|
||||
let t = require('../helpers/translator');
|
||||
|
||||
let dropEggs = require('./drops');
|
||||
|
||||
each(dropEggs, (egg, key) => {
|
||||
return defaults(egg, {
|
||||
canBuy: true,
|
||||
value: 3,
|
||||
key: key,
|
||||
notes: t('eggNotes', {
|
||||
eggText: egg.text,
|
||||
eggAdjective: egg.adjective
|
||||
}),
|
||||
mountText: egg.text
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = {
|
||||
dropEggs: dropEggs
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
// IMPORTANT: The end date should be one to two days AFTER the actual end of
|
||||
// the event, to allow people in different timezones to still buy the
|
||||
// event gear up until at least the actual end of the event.
|
||||
|
||||
let events = {
|
||||
winter: {start:'2013-12-31',end:'2014-02-01'},
|
||||
birthday: {start:'2013-01-30',end:'2014-02-01'},
|
||||
spring: {start:'2014-03-21',end:'2014-05-01'},
|
||||
summer: {start:'2014-06-20',end:'2014-08-01'},
|
||||
gaymerx: {start:'2014-07-02',end:'2014-08-01'},
|
||||
fall: {start:'2014-09-21',end:'2014-11-01'},
|
||||
winter2015: {start:'2014-12-21',end:'2015-02-02'},
|
||||
spring2015: {start:'2015-03-20',end:'2015-05-02'},
|
||||
summer2015: {start:'2015-06-20',end:'2015-08-02'}
|
||||
}
|
||||
|
||||
module.exports = events;
|
||||
@@ -1,24 +0,0 @@
|
||||
let t = require('./helpers/translator');
|
||||
|
||||
const NUMBER_OF_QUESTIONS = 12;
|
||||
|
||||
let faq = {};
|
||||
|
||||
faq.questions = [];
|
||||
|
||||
for (var i = 0; i < NUMBER_OF_QUESTIONS; i++) {
|
||||
let question = {
|
||||
question: t('faqQuestion' + i),
|
||||
ios: t('iosFaqAnswer' + i),
|
||||
web: t('webFaqAnswer' + i)
|
||||
};
|
||||
|
||||
faq.questions.push(question);
|
||||
}
|
||||
|
||||
faq.stillNeedHelp = {
|
||||
ios: t('iosFaqStillNeedHelp'),
|
||||
web: t('webFaqStillNeedHelp')
|
||||
};
|
||||
|
||||
module.exports = faq;
|
||||
@@ -1,21 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require('coffee-script');
|
||||
var i18n = require('../../i18n.coffee');
|
||||
|
||||
var t = function(string, vars) {
|
||||
var func = function(lang) {
|
||||
if (vars == null) {
|
||||
vars = {
|
||||
a: 'a'
|
||||
};
|
||||
}
|
||||
return i18n.t(string, vars, lang);
|
||||
};
|
||||
|
||||
func.i18nLangFunc = true; // Trick to recognize this type of function
|
||||
|
||||
return func;
|
||||
};
|
||||
|
||||
module.exports = t;
|
||||
@@ -2,7 +2,11 @@ api = module.exports
|
||||
|
||||
_ = require 'lodash'
|
||||
moment = require 'moment'
|
||||
t = require './helpers/translator'
|
||||
|
||||
DIST_LOCATION = '../../dist/scripts/content'
|
||||
|
||||
t = require "#{DIST_LOCATION}/helpers/translator"
|
||||
|
||||
|
||||
require('babel/register')
|
||||
|
||||
@@ -16,9 +20,9 @@ require('babel/register')
|
||||
classes = ['warrior', 'rogue', 'healer', 'wizard']
|
||||
gearTypes = [ 'weapon', 'armor', 'head', 'shield', 'body', 'back', 'headAccessory', 'eyewear']
|
||||
|
||||
events = require('./events')
|
||||
events = require("#{DIST_LOCATION}/events")
|
||||
|
||||
api.mystery = require('./mystery-sets')
|
||||
api.mystery = require("#{DIST_LOCATION}/mystery-sets")
|
||||
|
||||
api.itemList =
|
||||
'weapon': {localeKey: 'weapon', isEquipment: true}
|
||||
@@ -547,9 +551,9 @@ api.classes = classes
|
||||
|
||||
api.gearTypes = gearTypes
|
||||
|
||||
api.spells = require('./spells/index')
|
||||
api.spells = require("#{DIST_LOCATION}/spells/index")
|
||||
|
||||
api.cardTypes = require('./card-types')
|
||||
api.cardTypes = require("#{DIST_LOCATION}/card-types")
|
||||
|
||||
# Intercept all spells to reduce user.stats.mp after casting the spell
|
||||
_.each api.spells, (spellClass) ->
|
||||
@@ -569,7 +573,7 @@ api.special = api.spells.special
|
||||
---------------------------------------------------------------
|
||||
###
|
||||
|
||||
eggs = require('./eggs/index')
|
||||
eggs = require("#{DIST_LOCATION}/eggs/index")
|
||||
|
||||
api.dropEggs = eggs.dropEggs
|
||||
|
||||
@@ -628,7 +632,7 @@ api.specialMounts =
|
||||
'Orca-Base': 'orca'
|
||||
'Gryphon-RoyalPurple': 'royalPurpleGryphon'
|
||||
|
||||
api.timeTravelStable = require('./time-traveler-stable')
|
||||
api.timeTravelStable = require("#{DIST_LOCATION}/time-traveler-stable")
|
||||
|
||||
api.hatchingPotions =
|
||||
Base: value: 2, text: t('hatchingPotionBase')
|
||||
@@ -1794,4 +1798,4 @@ api.userDefaults =
|
||||
{name: t('defaultTag3')}
|
||||
]
|
||||
|
||||
api.faq = require './faq'
|
||||
api.faq = require "#{DIST_LOCATION}/faq"
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
let each = require('lodash').each;
|
||||
|
||||
let mysterySets = {
|
||||
201402: {
|
||||
start: '2014-02-22',
|
||||
end: '2014-02-28',
|
||||
text: 'Winged Messenger Set'
|
||||
},
|
||||
201403: {
|
||||
start: '2014-03-24',
|
||||
end: '2014-04-02',
|
||||
text: 'Forest Walker Set'
|
||||
},
|
||||
201404: {
|
||||
start: '2014-04-24',
|
||||
end: '2014-05-02',
|
||||
text: 'Twilight Butterfly Set'
|
||||
},
|
||||
201405: {
|
||||
start: '2014-05-21',
|
||||
end: '2014-06-02',
|
||||
text: 'Flame Wielder Set'
|
||||
},
|
||||
201406: {
|
||||
start: '2014-06-23',
|
||||
end: '2014-07-02',
|
||||
text: 'Octomage Set'
|
||||
},
|
||||
201407: {
|
||||
start: '2014-07-23',
|
||||
end: '2014-08-02',
|
||||
text: 'Undersea Explorer Set'
|
||||
},
|
||||
201408: {
|
||||
start: '2014-08-23',
|
||||
end: '2014-09-02',
|
||||
text: 'Sun Sorcerer Set'
|
||||
},
|
||||
201409: {
|
||||
start: '2014-09-24',
|
||||
end: '2014-10-02',
|
||||
text: 'Autumn Strider Set'
|
||||
},
|
||||
201410: {
|
||||
start: '2014-10-24',
|
||||
end: '2014-11-02',
|
||||
text: 'Winged Goblin Set'
|
||||
},
|
||||
201411: {
|
||||
start: '2014-11-24',
|
||||
end: '2014-12-02',
|
||||
text: 'Feast and Fun Set'
|
||||
},
|
||||
201412: {
|
||||
start: '2014-12-25',
|
||||
end: '2015-01-02',
|
||||
text: 'Penguin Set'
|
||||
},
|
||||
201501: {
|
||||
start: '2015-01-26',
|
||||
end: '2015-02-02',
|
||||
text: 'Starry Knight Set'
|
||||
},
|
||||
201502: {
|
||||
start: '2015-02-24',
|
||||
end: '2015-03-02',
|
||||
text: 'Winged Enchanter Set'
|
||||
},
|
||||
201503: {
|
||||
start: '2015-03-25',
|
||||
end: '2015-04-02',
|
||||
text: 'Aquamarine Set'
|
||||
},
|
||||
201504: {
|
||||
start: '2015-04-24',
|
||||
end: '2015-05-02',
|
||||
text: 'Busy Bee Set'
|
||||
},
|
||||
201505: {
|
||||
start: '2015-05-25',
|
||||
end: '2015-06-02',
|
||||
text: 'Green Knight Set'
|
||||
},
|
||||
201506: {
|
||||
start: '2015-06-25',
|
||||
end: '2015-07-02',
|
||||
text: 'Neon Snorkeler Set'
|
||||
},
|
||||
201507: {
|
||||
start: '2015-07-24',
|
||||
end: '2015-08-02',
|
||||
text: 'Rad Surfer Set'
|
||||
},
|
||||
201508: {
|
||||
start: '2015-08-23',
|
||||
end: '2015-09-02',
|
||||
text: 'Cheetah Costume Set'
|
||||
},
|
||||
301404: {
|
||||
start: '3014-03-24',
|
||||
end: '3014-04-02',
|
||||
text: 'Steampunk Standard Set'
|
||||
},
|
||||
301405: {
|
||||
start: '3014-04-24',
|
||||
end: '3014-05-02',
|
||||
text: 'Steampunk Accessories Set'
|
||||
},
|
||||
wondercon: { // @TODO: extract this out of mystery items
|
||||
start: '2014-03-24',
|
||||
end: '2014-04-01'
|
||||
}
|
||||
};
|
||||
|
||||
each(mysterySets, (objectSet, name) => {
|
||||
objectSet.key = name;
|
||||
});
|
||||
|
||||
module.exports = mysterySets;
|
||||
@@ -1,570 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
var t = require('../helpers/translator.js');
|
||||
|
||||
/*
|
||||
---------------------------------------------------------------
|
||||
Spells
|
||||
---------------------------------------------------------------
|
||||
Text, notes, and mana are obvious. The rest:
|
||||
|
||||
* {target}: one of [task, self, party, user]. This is very important, because if the cast() function is expecting one
|
||||
thing and receives another, it will cause errors. `self` is used for self buffs, multi-task debuffs, AOEs (eg, meteor-shower),
|
||||
etc. Basically, use self for anything that's not [task, party, user] and is an instant-cast
|
||||
|
||||
* {cast}: the function that's run to perform the ability's action. This is pretty slick - because this is exported to the
|
||||
web, this function can be performed on the client and on the server. `user` param is self (needed for determining your
|
||||
own stats for effectiveness of cast), and `target` param is one of [task, party, user]. In the case of `self` spells,
|
||||
you act on `user` instead of `target`. You can trust these are the correct objects, as long as the `target` attr of the
|
||||
spell is correct. Take a look at habitrpg/src/models/user.js and habitrpg/src/models/task.js for what attributes are
|
||||
available on each model. Note `task.value` is its "redness". If party is passed in, it's an array of users,
|
||||
so you'll want to iterate over them like: `_.each(target,function(member){...})`
|
||||
|
||||
Note, user.stats.mp is docked after automatically (it's appended to functions automatically down below in an _.each)
|
||||
*/
|
||||
|
||||
function diminishingReturns(bonus, max, halfway) {
|
||||
if (halfway == null) {
|
||||
halfway = max / 2;
|
||||
}
|
||||
return max * (bonus / (bonus + halfway));
|
||||
};
|
||||
|
||||
function calculateBonus(value, stat, crit, stat_scale) {
|
||||
if (crit == null) {
|
||||
crit = 1;
|
||||
}
|
||||
if (stat_scale == null) {
|
||||
stat_scale = 0.5;
|
||||
}
|
||||
return (value < 0 ? 1 : value + 1) + (stat * stat_scale * crit);
|
||||
};
|
||||
|
||||
var spells = {
|
||||
wizard: {
|
||||
fireball: {
|
||||
text: t('spellWizardFireballText'),
|
||||
mana: 10,
|
||||
lvl: 11,
|
||||
target: 'task',
|
||||
notes: t('spellWizardFireballNotes'),
|
||||
cast: function(user, target) {
|
||||
var base, bonus, req;
|
||||
bonus = user._statsComputed.int * user.fns.crit('per');
|
||||
bonus *= Math.ceil((target.value < 0 ? 1 : target.value + 1) * .075);
|
||||
user.stats.exp += diminishingReturns(bonus, 75);
|
||||
if ((base = user.party.quest.progress).up == null) {
|
||||
base.up = 0;
|
||||
}
|
||||
user.party.quest.progress.up += Math.ceil(user._statsComputed.int * .1);
|
||||
req = {
|
||||
language: user.preferences.language
|
||||
};
|
||||
return user.fns.updateStats(user.stats, req);
|
||||
}
|
||||
},
|
||||
mpheal: {
|
||||
text: t('spellWizardMPHealText'),
|
||||
mana: 30,
|
||||
lvl: 12,
|
||||
target: 'party',
|
||||
notes: t('spellWizardMPHealNotes'),
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
var bonus;
|
||||
bonus = user._statsComputed.int;
|
||||
if (user._id !== member._id) {
|
||||
return member.stats.mp += Math.ceil(diminishingReturns(bonus, 25, 125));
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
earth: {
|
||||
text: t('spellWizardEarthText'),
|
||||
mana: 35,
|
||||
lvl: 13,
|
||||
target: 'party',
|
||||
notes: t('spellWizardEarthNotes'),
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
var base, bonus;
|
||||
bonus = user._statsComputed.int - user.stats.buffs.int;
|
||||
if ((base = member.stats.buffs).int == null) {
|
||||
base.int = 0;
|
||||
}
|
||||
return member.stats.buffs.int += Math.ceil(diminishingReturns(bonus, 30, 200));
|
||||
});
|
||||
}
|
||||
},
|
||||
frost: {
|
||||
text: t('spellWizardFrostText'),
|
||||
mana: 40,
|
||||
lvl: 14,
|
||||
target: 'self',
|
||||
notes: t('spellWizardFrostNotes'),
|
||||
cast: function(user, target) {
|
||||
return user.stats.buffs.streaks = true;
|
||||
}
|
||||
}
|
||||
},
|
||||
warrior: {
|
||||
smash: {
|
||||
text: t('spellWarriorSmashText'),
|
||||
mana: 10,
|
||||
lvl: 11,
|
||||
target: 'task',
|
||||
notes: t('spellWarriorSmashNotes'),
|
||||
cast: function(user, target) {
|
||||
var base, bonus;
|
||||
bonus = user._statsComputed.str * user.fns.crit('con');
|
||||
target.value += diminishingReturns(bonus, 2.5, 35);
|
||||
if ((base = user.party.quest.progress).up == null) {
|
||||
base.up = 0;
|
||||
}
|
||||
return user.party.quest.progress.up += diminishingReturns(bonus, 55, 70);
|
||||
}
|
||||
},
|
||||
defensiveStance: {
|
||||
text: t('spellWarriorDefensiveStanceText'),
|
||||
mana: 25,
|
||||
lvl: 12,
|
||||
target: 'self',
|
||||
notes: t('spellWarriorDefensiveStanceNotes'),
|
||||
cast: function(user, target) {
|
||||
var base, bonus;
|
||||
bonus = user._statsComputed.con - user.stats.buffs.con;
|
||||
if ((base = user.stats.buffs).con == null) {
|
||||
base.con = 0;
|
||||
}
|
||||
return user.stats.buffs.con += Math.ceil(diminishingReturns(bonus, 40, 200));
|
||||
}
|
||||
},
|
||||
valorousPresence: {
|
||||
text: t('spellWarriorValorousPresenceText'),
|
||||
mana: 20,
|
||||
lvl: 13,
|
||||
target: 'party',
|
||||
notes: t('spellWarriorValorousPresenceNotes'),
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
var base, bonus;
|
||||
bonus = user._statsComputed.str - user.stats.buffs.str;
|
||||
if ((base = member.stats.buffs).str == null) {
|
||||
base.str = 0;
|
||||
}
|
||||
return member.stats.buffs.str += Math.ceil(diminishingReturns(bonus, 20, 200));
|
||||
});
|
||||
}
|
||||
},
|
||||
intimidate: {
|
||||
text: t('spellWarriorIntimidateText'),
|
||||
mana: 15,
|
||||
lvl: 14,
|
||||
target: 'party',
|
||||
notes: t('spellWarriorIntimidateNotes'),
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
var base, bonus;
|
||||
bonus = user._statsComputed.con - user.stats.buffs.con;
|
||||
if ((base = member.stats.buffs).con == null) {
|
||||
base.con = 0;
|
||||
}
|
||||
return member.stats.buffs.con += Math.ceil(diminishingReturns(bonus, 24, 200));
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
rogue: {
|
||||
pickPocket: {
|
||||
text: t('spellRoguePickPocketText'),
|
||||
mana: 10,
|
||||
lvl: 11,
|
||||
target: 'task',
|
||||
notes: t('spellRoguePickPocketNotes'),
|
||||
cast: function(user, target) {
|
||||
var bonus;
|
||||
bonus = calculateBonus(target.value, user._statsComputed.per);
|
||||
return user.stats.gp += diminishingReturns(bonus, 25, 75);
|
||||
}
|
||||
},
|
||||
backStab: {
|
||||
text: t('spellRogueBackStabText'),
|
||||
mana: 15,
|
||||
lvl: 12,
|
||||
target: 'task',
|
||||
notes: t('spellRogueBackStabNotes'),
|
||||
cast: function(user, target) {
|
||||
var _crit, bonus, req;
|
||||
_crit = user.fns.crit('str', .3);
|
||||
bonus = calculateBonus(target.value, user._statsComputed.str, _crit);
|
||||
user.stats.exp += diminishingReturns(bonus, 75, 50);
|
||||
user.stats.gp += diminishingReturns(bonus, 18, 75);
|
||||
req = {
|
||||
language: user.preferences.language
|
||||
};
|
||||
return user.fns.updateStats(user.stats, req);
|
||||
}
|
||||
},
|
||||
toolsOfTrade: {
|
||||
text: t('spellRogueToolsOfTradeText'),
|
||||
mana: 25,
|
||||
lvl: 13,
|
||||
target: 'party',
|
||||
notes: t('spellRogueToolsOfTradeNotes'),
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
var base, bonus;
|
||||
bonus = user._statsComputed.per - user.stats.buffs.per;
|
||||
if ((base = member.stats.buffs).per == null) {
|
||||
base.per = 0;
|
||||
}
|
||||
return member.stats.buffs.per += Math.ceil(diminishingReturns(bonus, 100, 50));
|
||||
});
|
||||
}
|
||||
},
|
||||
stealth: {
|
||||
text: t('spellRogueStealthText'),
|
||||
mana: 45,
|
||||
lvl: 14,
|
||||
target: 'self',
|
||||
notes: t('spellRogueStealthNotes'),
|
||||
cast: function(user, target) {
|
||||
var base;
|
||||
if ((base = user.stats.buffs).stealth == null) {
|
||||
base.stealth = 0;
|
||||
}
|
||||
return user.stats.buffs.stealth += Math.ceil(diminishingReturns(user._statsComputed.per, user.dailys.length * 0.64, 55));
|
||||
}
|
||||
}
|
||||
},
|
||||
healer: {
|
||||
heal: {
|
||||
text: t('spellHealerHealText'),
|
||||
mana: 15,
|
||||
lvl: 11,
|
||||
target: 'self',
|
||||
notes: t('spellHealerHealNotes'),
|
||||
cast: function(user, target) {
|
||||
user.stats.hp += (user._statsComputed.con + user._statsComputed.int + 5) * .075;
|
||||
if (user.stats.hp > 50) {
|
||||
return user.stats.hp = 50;
|
||||
}
|
||||
}
|
||||
},
|
||||
brightness: {
|
||||
text: t('spellHealerBrightnessText'),
|
||||
mana: 15,
|
||||
lvl: 12,
|
||||
target: 'self',
|
||||
notes: t('spellHealerBrightnessNotes'),
|
||||
cast: function(user, target) {
|
||||
return _.each(user.tasks, function(target) {
|
||||
if (target.type === 'reward') {
|
||||
return;
|
||||
}
|
||||
return target.value += 4 * (user._statsComputed.int / (user._statsComputed.int + 40));
|
||||
});
|
||||
}
|
||||
},
|
||||
protectAura: {
|
||||
text: t('spellHealerProtectAuraText'),
|
||||
mana: 30,
|
||||
lvl: 13,
|
||||
target: 'party',
|
||||
notes: t('spellHealerProtectAuraNotes'),
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
var base, bonus;
|
||||
bonus = user._statsComputed.con - user.stats.buffs.con;
|
||||
if ((base = member.stats.buffs).con == null) {
|
||||
base.con = 0;
|
||||
}
|
||||
return member.stats.buffs.con += Math.ceil(diminishingReturns(bonus, 200, 200));
|
||||
});
|
||||
}
|
||||
},
|
||||
heallAll: {
|
||||
text: t('spellHealerHealAllText'),
|
||||
mana: 25,
|
||||
lvl: 14,
|
||||
target: 'party',
|
||||
notes: t('spellHealerHealAllNotes'),
|
||||
cast: function(user, target) {
|
||||
return _.each(target, function(member) {
|
||||
member.stats.hp += (user._statsComputed.con + user._statsComputed.int + 5) * .04;
|
||||
if (member.stats.hp > 50) {
|
||||
return member.stats.hp = 50;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
special: {
|
||||
snowball: {
|
||||
text: t('spellSpecialSnowballAuraText'),
|
||||
mana: 0,
|
||||
value: 15,
|
||||
target: 'user',
|
||||
notes: t('spellSpecialSnowballAuraNotes'),
|
||||
cast: function(user, target) {
|
||||
var base;
|
||||
target.stats.buffs.snowball = true;
|
||||
target.stats.buffs.spookDust = false;
|
||||
target.stats.buffs.shinySeed = false;
|
||||
target.stats.buffs.seafoam = false;
|
||||
if ((base = target.achievements).snowball == null) {
|
||||
base.snowball = 0;
|
||||
}
|
||||
target.achievements.snowball++;
|
||||
return user.items.special.snowball--;
|
||||
}
|
||||
},
|
||||
salt: {
|
||||
text: t('spellSpecialSaltText'),
|
||||
mana: 0,
|
||||
value: 5,
|
||||
immediateUse: true,
|
||||
target: 'self',
|
||||
notes: t('spellSpecialSaltNotes'),
|
||||
cast: function(user, target) {
|
||||
user.stats.buffs.snowball = false;
|
||||
return user.stats.gp -= 5;
|
||||
}
|
||||
},
|
||||
spookDust: {
|
||||
text: t('spellSpecialSpookDustText'),
|
||||
mana: 0,
|
||||
value: 15,
|
||||
target: 'user',
|
||||
notes: t('spellSpecialSpookDustNotes'),
|
||||
cast: function(user, target) {
|
||||
var base;
|
||||
target.stats.buffs.snowball = false;
|
||||
target.stats.buffs.spookDust = true;
|
||||
target.stats.buffs.shinySeed = false;
|
||||
target.stats.buffs.seafoam = false;
|
||||
if ((base = target.achievements).spookDust == null) {
|
||||
base.spookDust = 0;
|
||||
}
|
||||
target.achievements.spookDust++;
|
||||
return user.items.special.spookDust--;
|
||||
}
|
||||
},
|
||||
opaquePotion: {
|
||||
text: t('spellSpecialOpaquePotionText'),
|
||||
mana: 0,
|
||||
value: 5,
|
||||
immediateUse: true,
|
||||
target: 'self',
|
||||
notes: t('spellSpecialOpaquePotionNotes'),
|
||||
cast: function(user, target) {
|
||||
user.stats.buffs.spookDust = false;
|
||||
return user.stats.gp -= 5;
|
||||
}
|
||||
},
|
||||
shinySeed: {
|
||||
text: t('spellSpecialShinySeedText'),
|
||||
mana: 0,
|
||||
value: 15,
|
||||
target: 'user',
|
||||
notes: t('spellSpecialShinySeedNotes'),
|
||||
cast: function(user, target) {
|
||||
var base;
|
||||
target.stats.buffs.snowball = false;
|
||||
target.stats.buffs.spookDust = false;
|
||||
target.stats.buffs.shinySeed = true;
|
||||
target.stats.buffs.seafoam = false;
|
||||
if ((base = target.achievements).shinySeed == null) {
|
||||
base.shinySeed = 0;
|
||||
}
|
||||
target.achievements.shinySeed++;
|
||||
return user.items.special.shinySeed--;
|
||||
}
|
||||
},
|
||||
petalFreePotion: {
|
||||
text: t('spellSpecialPetalFreePotionText'),
|
||||
mana: 0,
|
||||
value: 5,
|
||||
immediateUse: true,
|
||||
target: 'self',
|
||||
notes: t('spellSpecialPetalFreePotionNotes'),
|
||||
cast: function(user, target) {
|
||||
user.stats.buffs.shinySeed = false;
|
||||
return user.stats.gp -= 5;
|
||||
}
|
||||
},
|
||||
seafoam: {
|
||||
text: t('spellSpecialSeafoamText'),
|
||||
mana: 0,
|
||||
value: 15,
|
||||
target: 'user',
|
||||
notes: t('spellSpecialSeafoamNotes'),
|
||||
cast: function(user, target) {
|
||||
var base;
|
||||
target.stats.buffs.snowball = false;
|
||||
target.stats.buffs.spookDust = false;
|
||||
target.stats.buffs.shinySeed = false;
|
||||
target.stats.buffs.seafoam = true;
|
||||
if ((base = target.achievements).seafoam == null) {
|
||||
base.seafoam = 0;
|
||||
}
|
||||
target.achievements.seafoam++;
|
||||
return user.items.special.seafoam--;
|
||||
}
|
||||
},
|
||||
sand: {
|
||||
text: t('spellSpecialSandText'),
|
||||
mana: 0,
|
||||
value: 5,
|
||||
immediateUse: true,
|
||||
target: 'self',
|
||||
notes: t('spellSpecialSandNotes'),
|
||||
cast: function(user, target) {
|
||||
user.stats.buffs.seafoam = false;
|
||||
return user.stats.gp -= 5;
|
||||
}
|
||||
},
|
||||
nye: {
|
||||
text: t('nyeCard'),
|
||||
mana: 0,
|
||||
value: 10,
|
||||
immediateUse: true,
|
||||
silent: true,
|
||||
target: 'user',
|
||||
notes: t('nyeCardNotes'),
|
||||
cast: function(user, target) {
|
||||
var base;
|
||||
if (user === target) {
|
||||
if ((base = user.achievements).nye == null) {
|
||||
base.nye = 0;
|
||||
}
|
||||
user.achievements.nye++;
|
||||
} else {
|
||||
_.each([user, target], function(t) {
|
||||
var base1;
|
||||
if ((base1 = t.achievements).nye == null) {
|
||||
base1.nye = 0;
|
||||
}
|
||||
return t.achievements.nye++;
|
||||
});
|
||||
}
|
||||
if (!target.items.special.nyeReceived) {
|
||||
target.items.special.nyeReceived = [];
|
||||
}
|
||||
target.items.special.nyeReceived.push(user.profile.name);
|
||||
target.flags.cardReceived = true;
|
||||
if (typeof target.markModified === "function") {
|
||||
target.markModified('items.special.nyeReceived');
|
||||
}
|
||||
return user.stats.gp -= 10;
|
||||
}
|
||||
},
|
||||
valentine: {
|
||||
text: t('valentineCard'),
|
||||
mana: 0,
|
||||
value: 10,
|
||||
immediateUse: true,
|
||||
silent: true,
|
||||
target: 'user',
|
||||
notes: t('valentineCardNotes'),
|
||||
cast: function(user, target) {
|
||||
var base;
|
||||
if (user === target) {
|
||||
if ((base = user.achievements).valentine == null) {
|
||||
base.valentine = 0;
|
||||
}
|
||||
user.achievements.valentine++;
|
||||
} else {
|
||||
_.each([user, target], function(t) {
|
||||
var base1;
|
||||
if ((base1 = t.achievements).valentine == null) {
|
||||
base1.valentine = 0;
|
||||
}
|
||||
return t.achievements.valentine++;
|
||||
});
|
||||
}
|
||||
if (!target.items.special.valentineReceived) {
|
||||
target.items.special.valentineReceived = [];
|
||||
}
|
||||
target.items.special.valentineReceived.push(user.profile.name);
|
||||
target.flags.cardReceived = true;
|
||||
if (typeof target.markModified === "function") {
|
||||
target.markModified('items.special.valentineReceived');
|
||||
}
|
||||
return user.stats.gp -= 10;
|
||||
}
|
||||
},
|
||||
greeting: {
|
||||
text: t('greetingCard'),
|
||||
mana: 0,
|
||||
value: 10,
|
||||
immediateUse: true,
|
||||
silent: true,
|
||||
target: 'user',
|
||||
notes: t('greetingCardNotes'),
|
||||
cast: function(user, target) {
|
||||
var base;
|
||||
if (user === target) {
|
||||
if ((base = user.achievements).greeting == null) {
|
||||
base.greeting = 0;
|
||||
}
|
||||
user.achievements.greeting++;
|
||||
} else {
|
||||
_.each([user, target], function(t) {
|
||||
var base1;
|
||||
if ((base1 = t.achievements).greeting == null) {
|
||||
base1.greeting = 0;
|
||||
}
|
||||
return t.achievements.greeting++;
|
||||
});
|
||||
}
|
||||
if (!target.items.special.greetingReceived) {
|
||||
target.items.special.greetingReceived = [];
|
||||
}
|
||||
target.items.special.greetingReceived.push(user.profile.name);
|
||||
target.flags.cardReceived = true;
|
||||
if (typeof target.markModified === "function") {
|
||||
target.markModified('items.special.greetingReceived');
|
||||
}
|
||||
return user.stats.gp -= 10;
|
||||
}
|
||||
},
|
||||
thankyou: {
|
||||
text: t('thankyouCard'),
|
||||
mana: 0,
|
||||
value: 10,
|
||||
immediateUse: true,
|
||||
silent: true,
|
||||
target: 'user',
|
||||
notes: t('thankyouCardNotes'),
|
||||
cast: function(user, target) {
|
||||
var base;
|
||||
if (user === target) {
|
||||
if ((base = user.achievements).thankyou == null) {
|
||||
base.thankyou = 0;
|
||||
}
|
||||
user.achievements.thankyou++;
|
||||
} else {
|
||||
_.each([user, target], function(t) {
|
||||
var base1;
|
||||
if ((base1 = t.achievements).thankyou == null) {
|
||||
base1.thankyou = 0;
|
||||
}
|
||||
return t.achievements.thankyou++;
|
||||
});
|
||||
}
|
||||
if (!target.items.special.thankyouReceived) {
|
||||
target.items.special.thankyouReceived = [];
|
||||
}
|
||||
target.items.special.thankyouReceived.push(user.profile.name);
|
||||
target.flags.cardReceived = true;
|
||||
if (typeof target.markModified === "function") {
|
||||
target.markModified('items.special.thankyouReceived');
|
||||
}
|
||||
return user.stats.gp -= 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = spells;
|
||||
@@ -1,14 +0,0 @@
|
||||
let t = require('./helpers/translator');
|
||||
|
||||
let stable = {
|
||||
pets: {
|
||||
'Mammoth-Base': t('mammoth'),
|
||||
'MantisShrimp-Base': t('mantisShrimp')
|
||||
},
|
||||
mounts: {
|
||||
'Mammoth-Base': t('mammoth'),
|
||||
'MantisShrimp-Base': t('mantisShrimp')
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = stable;
|
||||
Reference in New Issue
Block a user