Browse Source

more

1460-move-crafting-to-mod
Shaun 4 years ago
parent
commit
e5cf1c0213
9 changed files with 84 additions and 323 deletions
  1. +1
    -76
      src/server/components/stats.js
  2. +75
    -0
      src/server/components/stats/baseStats.js
  3. +2
    -68
      src/server/config/maps/fjolarok/dialogues.js
  4. +0
    -57
      src/server/config/maps/fjolarok/zone.js
  5. +0
    -61
      src/server/items/config/currencies.js
  6. +3
    -21
      src/server/items/generator.js
  7. +0
    -22
      src/server/items/generators/currency.js
  8. +0
    -13
      src/server/items/generators/recipeBook.js
  9. +3
    -5
      src/server/server.js

+ 1
- 76
src/server/components/stats.js View File

@@ -2,82 +2,7 @@ let animations = require('../config/animations');
let spirits = require('../config/spirits');
let scheduler = require('../misc/scheduler');

let baseStats = {
mana: 20,
manaMax: 20,

manaReservePercent: 0,

hp: 5,
hpMax: 5,
xpTotal: 0,
xp: 0,
xpMax: 0,
level: 1,
str: 0,
int: 0,
dex: 0,
magicFind: 0,
itemQuantity: 0,
regenHp: 0,
regenMana: 5,

addCritChance: 0,
addCritMultiplier: 0,
addAttackCritChance: 0,
addAttackCritMultiplier: 0,
addSpellCritChance: 0,
addSpellCritMultiplier: 0,

critChance: 5,
critMultiplier: 150,
attackCritChance: 0,
attackCritMultiplier: 0,
spellCritChance: 0,
spellCritMultiplier: 0,

armor: 0,
vit: 0,

blockAttackChance: 0,
blockSpellChance: 0,
dodgeAttackChance: 0,
dodgeSpellChance: 0,

attackSpeed: 0,
castSpeed: 0,

elementArcanePercent: 0,
elementFrostPercent: 0,
elementFirePercent: 0,
elementHolyPercent: 0,
elementPoisonPercent: 0,
physicalPercent: 0,

elementPercent: 0,
spellPercent: 0,

elementArcaneResist: 0,
elementFrostResist: 0,
elementFireResist: 0,
elementHolyResist: 0,
elementPoisonResist: 0,

elementAllResist: 0,

sprintChance: 0,

xpIncrease: 0,

lifeOnHit: 0,

//Fishing stats
catchChance: 0,
catchSpeed: 0,
fishRarity: 0,
fishWeight: 0,
fishItems: 0
};
const baseStats = require('./stats/baseStats');

module.exports = {
type: 'stats',


+ 75
- 0
src/server/components/stats/baseStats.js View File

@@ -0,0 +1,75 @@
const events = require('../../misc/events');

const baseStats = {
mana: 20,
manaMax: 20,

manaReservePercent: 0,

hp: 5,
hpMax: 5,
xpTotal: 0,
xp: 0,
xpMax: 0,
level: 1,
str: 0,
int: 0,
dex: 0,
magicFind: 0,
itemQuantity: 0,
regenHp: 0,
regenMana: 5,

addCritChance: 0,
addCritMultiplier: 0,
addAttackCritChance: 0,
addAttackCritMultiplier: 0,
addSpellCritChance: 0,
addSpellCritMultiplier: 0,

critChance: 5,
critMultiplier: 150,
attackCritChance: 0,
attackCritMultiplier: 0,
spellCritChance: 0,
spellCritMultiplier: 0,

armor: 0,
vit: 0,

blockAttackChance: 0,
blockSpellChance: 0,
dodgeAttackChance: 0,
dodgeSpellChance: 0,

attackSpeed: 0,
castSpeed: 0,

elementArcanePercent: 0,
elementFrostPercent: 0,
elementFirePercent: 0,
elementHolyPercent: 0,
elementPoisonPercent: 0,
physicalPercent: 0,

elementPercent: 0,
spellPercent: 0,

elementArcaneResist: 0,
elementFrostResist: 0,
elementFireResist: 0,
elementHolyResist: 0,
elementPoisonResist: 0,

elementAllResist: 0,

sprintChance: 0,

xpIncrease: 0,

lifeOnHit: 0
};

events.emit('onBeforeGetBaseStats', baseStats);

module.exports = baseStats;

+ 2
- 68
src/server/config/maps/fjolarok/dialogues.js View File

@@ -3,7 +3,7 @@ module.exports = {
1: {
msg: [{
msg: 'What? Oh...what are you doing here?',
options: [1.1, 1.2, 1.3, 1.4, 1.5]
options: [1.1, 1.2]
}],
options: {
1.1: {
@@ -13,18 +13,6 @@ module.exports = {
1.2: {
msg: 'My ship got wrecked, just south of here. I\'m stranded on this island.',
goto: 3
},
1.3: {
msg: 'Have you scavenged anything worth selling lately?',
goto: 'tradeBuy'
},
1.4: {
msg: 'I have some items you might be interested in.',
goto: 'tradeSell'
},
1.5: {
msg: 'I changed my mind, I want to buy something back.',
goto: 'tradeBuyback'
}
}
},
@@ -84,51 +72,18 @@ module.exports = {
goto: 1
}
}
},
tradeBuy: {
cpn: 'trade',
method: 'startBuy',
args: [{
targetName: 'hermit'
}]
},
tradeSell: {
cpn: 'trade',
method: 'startSell',
args: [{
targetName: 'hermit'
}]
},
tradeBuyback: {
cpn: 'trade',
method: 'startBuyback',
args: [{
targetName: 'hermit'
}]
}
},
estrid: {
1: {
msg: [{
msg: 'Is there anything I can help you with today?',
options: [1.1, 1.3, 1.4, 1.5]
options: [1.1]
}],
options: {
1.1: {
msg: 'How long have you been working here?',
goto: 2
},
1.3: {
msg: 'I\'d like to browse your wares.',
goto: 'tradeBuy'
},
1.4: {
msg: 'I have some items to sell',
goto: 'tradeSell'
},
1.5: {
msg: 'I want to buy something back',
goto: 'tradeBuyback'
}
}
},
@@ -153,27 +108,6 @@ module.exports = {
goto: 1
}
}
},
tradeBuy: {
cpn: 'trade',
method: 'startBuy',
args: [{
targetName: 'estrid'
}]
},
tradeSell: {
cpn: 'trade',
method: 'startSell',
args: [{
targetName: 'estrid'
}]
},
tradeBuyback: {
cpn: 'trade',
method: 'startBuyback',
args: [{
targetName: 'estrid'
}]
}
},
vikar: {


+ 0
- 57
src/server/config/maps/fjolarok/zone.js View File

@@ -556,39 +556,6 @@ module.exports = {
attackable: false,
rare: {
count: 0
},
properties: {
cpnTrade: {
items: {
min: 3,
max: 5
},
forceItems: [{
name: 'Flimsy Fishing Rod',
type: 'Fishing Rod',
slot: 'tool',
quality: 0,
worth: 5,
sprite: [11, 0],
infinite: true,
noSalvage: true
}, {
name: 'Skewering Stick',
material: true,
sprite: [11, 7],
worth: 2,
quality: 0,
infinite: true
}],
level: {
min: 1,
max: 5
},
markup: {
buy: 0.25,
sell: 2.5
}
}
}
},
guard: {
@@ -608,30 +575,6 @@ module.exports = {

rare: {
count: 0
},

properties: {
cpnTrade: {
items: {
min: 0,
max: 0,
extra: [{
name: 'Empty Vial',
material: true,
sprite: [0, 9],
worth: 10,
infinite: true
}]
},
faction: {
id: 'fjolgard',
tier: 5
},
markup: {
buy: 0.25,
sell: 2.5
}
}
}
},
vikar: {


+ 0
- 61
src/server/items/config/currencies.js View File

@@ -1,61 +0,0 @@
module.exports = {
currencies: {
'Unstable Idol': {
quantity: 1,
quality: 1,
description: 'Rerolls the stats on an item',
material: true,
sprite: [1, 8],
action: 'reroll'
},
'Ascendant Idol': {
quantity: 1,
quality: 2,
description: 'Increases the level of an item',
material: true,
sprite: [3, 8],
action: 'relevel'
},
'Dragon-Glass Idol': {
quantity: 1,
quality: 3,
description: 'Rerolls an item\'s slot',
material: true,
sprite: [6, 8],
action: 'reslot'
},
'Bone Idol': {
quantity: 1,
quality: 3,
description: 'Rerolls a weapon\'s damage',
material: true,
sprite: [7, 8],
action: 'reforge'
},
'Smoldering Idol': {
quantity: 1,
quality: 4,
description: 'Removes all augments from an item',
material: true,
sprite: [8, 8],
action: 'scour'
}
},

chance: {
'Unstable Idol': 37,
'Ascendant Idol': 15,
'Dragon-Glass Idol': 5,
'Bone Idol': 6,
'Smoldering Idol': 1
},

getCurrencyFromAction: function (action) {
let currencies = this.currencies;
let pick = Object.keys(currencies).find(o => (currencies[o].action === action));

return extend({
name: pick
}, currencies[pick]);
}
};

+ 3
- 21
src/server/items/generator.js View File

@@ -7,18 +7,12 @@ let g4 = require('./generators/types');
let g5 = require('./generators/stats');
let g6 = require('./generators/names');
let g7 = require('./generators/worth');
let g8 = require('./generators/quantity');
let g9 = require('./generators/spellbook');
let g10 = require('./generators/currency');
let g11 = require('./generators/effects');
let g12 = require('./generators/attrRequire');
let g13 = require('./generators/recipeBook');

let generators = [g1, g2, g3, g4, g5, g6, g11, g12, g7];
let materialGenerators = [g6, g8];
let spellGenerators = [g1, g2, g9, g7];
let currencyGenerators = [g10, g8];
let recipeGenerators = [g6, g13];

module.exports = {
spellChance: 0.035,
@@ -65,7 +59,7 @@ module.exports = {
if (blueprint.noCurrency)
currencyChance = 0;

if (!blueprint.slot && !blueprint.noSpell && !blueprint.material) {
if (!blueprint.slot && !blueprint.noSpell) {
isSpell = blueprint.spell;
isCurrency = blueprint.currency;
if ((!isCurrency) && (!isSpell) && ((!hadBlueprint) || ((!blueprint.type) && (!blueprint.slot) && (!blueprint.stats)))) {
@@ -80,22 +74,10 @@ module.exports = {

if (isSpell)
spellGenerators.forEach(g => g.generate(item, blueprint));
else if (isCurrency)
currencyGenerators.forEach(g => g.generate(item, blueprint));
else if (blueprint.material) {
item.material = true;
item.sprite = blueprint.sprite || null;
item.noDrop = blueprint.noDrop || null;
item.noSalvage = blueprint.noSalvage || null;
item.noDestroy = blueprint.noDestroy || null;
item.quality = blueprint.quality || 0;
materialGenerators.forEach(g => g.generate(item, blueprint));
} else if (blueprint.type === 'mtx') {
else if (blueprint.type === 'mtx') {
item = extend({}, blueprint);
delete item.chance;
} else if (blueprint.type === 'recipe')
recipeGenerators.forEach(g => g.generate(item, blueprint));
else {
} else {
generators.forEach(g => g.generate(item, blueprint));
if (blueprint.spellName)
g9.generate(item, blueprint);


+ 0
- 22
src/server/items/generators/currency.js View File

@@ -1,22 +0,0 @@
let configCurrencies = require('../config/currencies');

let chances = [];
for (let c in configCurrencies.chance) {
let rolls = configCurrencies.chance[c];
for (let i = 0; i < rolls; i++)
chances.push(c);
}

module.exports = {
generate: function (item, blueprint) {
let pick = null;

if (!blueprint.name)
pick = chances[~~(Math.random() * chances.length)];
else
pick = Object.keys(configCurrencies.currencies).find(c => (c.toLowerCase().indexOf(blueprint.name.toLowerCase()) > -1));

item.name = pick;
extend(item, configCurrencies.currencies[pick]);
}
};

+ 0
- 13
src/server/items/generators/recipeBook.js View File

@@ -1,13 +0,0 @@
module.exports = {
generate: function (item, { profession, teaches, sprite = [0, 5] }) {
item.sprite = sprite;
item.spritesheet = '../../../images/consumables.png';
item.type = 'recipe';
item.noSalvage = true;

item.recipe = {
profession,
teaches
};
}
};

+ 3
- 5
src/server/server.js View File

@@ -97,15 +97,13 @@ module.exports = {

file = file.replace('/' + root + '/', '');

const validModPatterns = ['.png', '/ui/', '/clientComponents/', '/audio/'];

const validRequest = (
root !== 'server' ||
(
file.includes('mods/') &&
(
file.includes('.png') ||
file.includes('/ui/') ||
file.includes('/clientComponents/')
)
validModPatterns.some(v => file.includes(v))
)
);



Loading…
Cancel
Save