Bläddra i källkod

Merge branch '525-remove-cleric-necro' into 'v0.1.10'

Resolve "Remove necro and cleric classes"

See merge request Isleward/isleward!267
tags/v0.1.10^2
Big Bad Waffle 6 år sedan
förälder
incheckning
a0417b8b77
17 ändrade filer med 915 tillägg och 762 borttagningar
  1. +8
    -12
      src/client/ui/templates/createCharacter/createCharacter.js
  2. +7
    -1
      src/client/ui/templates/createCharacter/styles.less
  3. +2
    -2
      src/server/components/auth.js
  4. +15
    -1
      src/server/components/extensions/factionVendor.js
  5. +1
    -3
      src/server/config/animations.js
  6. +2
    -16
      src/server/config/classes.js
  7. +23
    -1
      src/server/config/maps/tutorial/dialogues.js
  8. +699
    -625
      src/server/config/maps/tutorial/zone.js
  9. +53
    -0
      src/server/config/roleSkins.js
  10. +18
    -6
      src/server/config/roles.js
  11. +49
    -85
      src/server/config/skins.js
  12. +1
    -1
      src/server/items/generator.js
  13. +3
    -0
      src/server/items/generators/worth.js
  14. +30
    -6
      src/server/mods/class-necromancer/index.js
  15. +2
    -2
      src/server/mods/event-halloween/index.js
  16. +1
    -1
      src/server/mods/event-xmas/maps/tutorial/events/xmas.js
  17. +1
    -0
      src/server/world/worker.js

+ 8
- 12
src/client/ui/templates/createCharacter/createCharacter.js Visa fil

@@ -59,8 +59,8 @@ define([

this.costume = -1;

this.class = Object.keys(result)[0] || '';
this.find('.txtClass').html(this.class);
this.class = 'wizard';
this.find('.txtClass').html('Wizard');

this.changeCostume({
target: this.find('.txtCostume')
@@ -142,38 +142,34 @@ define([

changeClass: function (e) {
var el = $(e.target);
var classes = Object.keys(this.classSprites);
var nextIndex = (classes.indexOf(el.html()) + 1) % classes.length;
var classes = ['wizard', 'warrior', 'thief'];
var nextIndex = (classes.indexOf(this.class) + 1) % classes.length;
this.costume = -1;

var newClass = classes[nextIndex];

el.html(newClass);
el.html(newClass[0].toUpperCase() + newClass.substr(1));

this.class = newClass;

this.changeCostume({
target: this.find('.txtCostume')
});
},

changeCostume: function (e) {
var el = $(e.target);

var spriteList = this.classSprites[this.class];
var spriteList = this.classSprites;
if (!spriteList)
return;

this.costume = (this.costume + 1) % spriteList.length;
this.skinId = spriteList[this.costume].id;

el.html((this.costume + 1) + '/' + spriteList.length);
el.html(spriteList[this.costume].name);

this.setSprite();
},

setSprite: function () {
var classSprite = this.classSprites[this.class][this.costume];
var classSprite = this.classSprites[this.costume];
var costume = classSprite.sprite.split(',');
var spirteX = -costume[0] * 8;
var spriteY = -costume[1] * 8;


+ 7
- 1
src/client/ui/templates/createCharacter/styles.less Visa fil

@@ -46,9 +46,15 @@
}
}

.txtClass {
&:before {
content: 'Class: ';
}
}

.txtCostume {
&:before {
content: 'costume ';
content: 'Skin: ';
}
}
}


+ 2
- 2
src/server/components/auth.js Visa fil

@@ -273,8 +273,8 @@ define([
var list = [...this.skins, ...roles.getSkins(this.username)];
var skinList = skins.getSkinList(list);

if (!skinList[character.class].some(s => (s.id == character.skinId))) {
character.skinId = character.class + ' 1';
if (!skinList.some(s => (s.id == character.skinId))) {
character.skinId = '1.0';

character.cell = skins.getCell(character.skinId);
character.sheetName = skins.getSpritesheet(character.skinId);


+ 15
- 1
src/server/components/extensions/factionVendor.js Visa fil

@@ -159,10 +159,24 @@ define([
var skinBlueprint = skins.getBlueprint(item.id);
item.name = skinBlueprint.name;
item.sprite = skinBlueprint.sprite;
} else if (item.generate) {
var generated = generator.generate(item);
if (item.worth)
generated.worth = item.worth;
if (item.infinite)
generated.infinite = true;
item = generated;
}

list.items.push(item);
var id = 0;
list.items.forEach(function (checkItem) {
if (checkItem.id >= id)
id = checkItem.id + 1;
});

item.id = id;

list.items.push(item);
}
},



+ 1
- 3
src/server/config/animations.js Visa fil

@@ -40,9 +40,7 @@ define([
frames: 5,
frameDelay: 3
}
}
},
cleric: {
},
'4': {
hitStaff: {
sheet: 'animChar',


+ 2
- 16
src/server/config/classes.js Visa fil

@@ -4,15 +4,12 @@ define([
events
) {
var classes = {
list: ['warrior', 'wizard', 'thief'],
portraits: {
warrior: {
x: 0,
y: 0
},
cleric: {
x: 1,
y: 0
},
wizard: {
x: 2,
y: 0
@@ -24,7 +21,6 @@ define([
},
spells: {
wizard: ['magic missile', 'ice spear'],
cleric: ['smite', 'consecrate'],
warrior: ['slash', 'charge'],
thief: ['flurry', 'smokebomb']
},
@@ -38,15 +34,6 @@ define([
int: 1
}
},
cleric: {
values: {
hpMax: 60
},
vitScale: 10,
gainStats: {
int: 1
}
},
warrior: {
values: {
hpMax: 80
@@ -68,9 +55,8 @@ define([
},
weapons: {
wizard: 'Gnarled Staff',
cleric: 'Wand',
thief: 'Dagger',
warrior: 'Axe'
warrior: 'Sword'
},

getSpritesheet: function (className) {


+ 23
- 1
src/server/config/maps/tutorial/dialogues.js Visa fil

@@ -193,7 +193,7 @@ module.exports = {
'1': {
msg: [{
msg: `Is there anything I can help you with today?`,
options: [1.1]
options: [1.1, 1.2, 1.3]
}],
options: {
'1.1': {
@@ -203,6 +203,14 @@ module.exports = {
return !!fullSet;
},
goto: 'tradeCards'
},
'1.2': {
msg: `I would like to buy some runes`,
goto: 'tradeBuy'
},
'1.3': {
msg: `I have some items I would like to sell`,
goto: 'tradeSell'
}
}
},
@@ -232,6 +240,20 @@ module.exports = {

return `Thank you.`;
}
},
tradeBuy: {
cpn: 'trade',
method: 'startBuy',
args: [{
targetName: 'vikar'
}]
},
tradeSell: {
cpn: 'trade',
method: 'startSell',
args: [{
targetName: 'vikar'
}]
}
},
priest: {


+ 699
- 625
src/server/config/maps/tutorial/zone.js
Filskillnaden har hållits tillbaka eftersom den är för stor
Visa fil


+ 53
- 0
src/server/config/roleSkins.js Visa fil

@@ -0,0 +1,53 @@
define([

], function (

) {
var empty = [];
var regular = ['1.0', '1.2', '1.6'];

var mtx = [
['10.0', '10.1', '10.2', '10.3', '10.4'],
['11.0', '11.1', '11.2', '11.3', '11.4']
];
var pA = [];
var pB = [];
var pC = [];
var pD = [];

mtx.forEach(function (m) {
m.forEach(function (s, i) {
var has = [pD];
if (i <= 2)
has.push(pC);
if (i <= 1)
has.push(pB);
if (i == 0)
has.push(pA);

has.forEach(function (h) {
h.push(s);
});
});
});

return [
//Regular Player
empty.concat(...regular), [],
[],
[],
[],
//Moderator
empty.concat(...regular),
//Patron Level 1
empty.concat(...regular, ...pA),
//Patron Level 2
empty.concat(...regular, ...pB),
//Patron Level 3
empty.concat(...regular, ...pC),
//Patron Level 4
empty.concat(...regular, ...pD),
//Admin
['*']
];
});

+ 18
- 6
src/server/config/roles.js Visa fil

@@ -1,7 +1,7 @@
define([
'./roleSkins'
], function (
roleSkins
) {
return {
accounts: {
@@ -15,9 +15,7 @@ define([
sprite: [12, 0],
keyId: 'world'
}],
skins: [
'1.1', '1.2', '1.3', '1.4', '1.5', 'bearded wizard', '2.1', '2.2', '2.3', '2.4', '2.5'
]
skins: []
}
},

@@ -77,7 +75,21 @@ define([
},

getSkins: function (account) {
return this.accounts[account] ? this.accounts[account].skins : [];
var skins = [];
var account = this.accounts[account] || {
skins: []
};
(account.skins || []).forEach(function (s) {
skins.push(s);
});

var roleSkinList = roleSkins[account.level || 0];
roleSkinList.forEach(function (s) {
skins.push(s);
});

skins = skins.filter((s, i) => (skins.indexOf(s) == i));
return skins;
},

sendMessage: function (player, msg) {


+ 49
- 85
src/server/config/skins.js Visa fil

@@ -4,123 +4,96 @@ define([
events
) {
var config = {
'wizard 1': {
'1.0': {
name: 'Wizard 1',
sprite: [2, 0],
class: 'wizard',
default: true
sprite: [2, 0]
},
'wizard 2': {
'1.1': {
name: 'Wizard 2',
sprite: [3, 0],
class: 'wizard',
default: true
sprite: [3, 0]
},
'warrior 1': {
'1.2': {
name: 'Warrior 1',
sprite: [1, 1],
class: 'warrior',
default: true
sprite: [1, 1]
},
'warrior 2': {
'1.3': {
name: 'Warrior 2',
sprite: [2, 1],
class: 'warrior',
default: true
sprite: [2, 1]
},
'cleric 1': {
'1.4': {
name: 'Cleric 1',
sprite: [4, 0],
class: 'cleric',
default: true
sprite: [4, 0]
},
'cleric 2': {
'1.5': {
name: 'Cleric 2',
sprite: [5, 0],
class: 'cleric',
default: true
sprite: [5, 0]
},
'thief 1': {
'1.6': {
name: 'Thief 1',
sprite: [6, 0],
class: 'thief',
default: true
sprite: [6, 0]
},
'thief 2': {
'1.7': {
name: 'Thief 2',
sprite: [7, 0],
class: 'thief',
default: true
sprite: [7, 0]
},

'gaekatla druid': {
'2.0': {
name: 'Skin: Gaekatlan Druid',
sprite: [0, 4],
class: 'cleric'
sprite: [0, 4]
},

//Elite Skin Pack
'1.1': {
'10.0': {
name: 'Sorcerer',
spritesheet: 'images/skins/0001.png',
sprite: [0, 0],
class: 'wizard'
sprite: [0, 0]
},
'1.2': {
'10.1': {
name: 'Diviner',
spritesheet: 'images/skins/0001.png',
sprite: [1, 0],
class: 'cleric'
sprite: [1, 0]
},
'1.3': {
'10.2': {
name: 'Cutthroat',
spritesheet: 'images/skins/0001.png',
sprite: [2, 0],
class: 'thief'
sprite: [2, 0]
},
'1.4': {
'10.3': {
name: 'Man of War',
spritesheet: 'images/skins/0001.png',
sprite: [3, 0],
class: 'warrior'
sprite: [3, 0]
},
'1.5': {
'10.4': {
name: 'Occultist',
spritesheet: 'images/skins/0001.png',
sprite: [4, 0],
class: 'necromancer'
sprite: [4, 0]
},

//Templar Skin Pack
'2.1': {
'11.0': {
name: 'Crusader 1',
spritesheet: 'images/skins/0010.png',
sprite: [0, 0],
class: ['cleric', 'warrior']
sprite: [0, 0]
},
'2.2': {
'11.1': {
name: 'Crusader 2',
spritesheet: 'images/skins/0010.png',
sprite: [1, 0],
class: ['cleric', 'warrior']
sprite: [1, 0]
},
'2.3': {
'11.2': {
name: 'Crusader 3',
spritesheet: 'images/skins/0010.png',
sprite: [2, 0],
class: ['cleric', 'warrior']
sprite: [2, 0]
},
'2.4': {
'11.3': {
name: 'Crusader 4',
spritesheet: 'images/skins/0010.png',
sprite: [3, 0],
class: ['cleric', 'warrior']
sprite: [3, 0]
},
'2.5': {
'11.4': {
name: 'Grand Crusader',
spritesheet: 'images/skins/0010.png',
sprite: [4, 0],
class: ['cleric', 'warrior']
sprite: [4, 0]
}
};

@@ -136,7 +109,7 @@ define([
getSkinList: function (skins) {
var list = Object.keys(config)
.filter(function (s) {
return ((config[s].default) || (skins.some(f => (f == s))));
return ((config[s].default) || (skins.some(f => ((f == s) || (f == '*')))));
})
.map(function (s) {
var res = extend(true, {}, config[s]);
@@ -144,35 +117,26 @@ define([
return res;
});

var result = {};
var result = [];
list.forEach(function (skin) {
var classList = skin.class;
if (!classList.push)
classList = [classList];

classList.forEach(function (className) {
if (!result[className])
result[className] = [];

result[className].push({
name: skin.name,
id: skin.id,
sprite: skin.sprite[0] + ',' + skin.sprite[1],
spritesheet: skin.spritesheet
});
}, this);
});
result.push({
name: skin.name,
id: skin.id,
sprite: skin.sprite[0] + ',' + skin.sprite[1],
spritesheet: skin.spritesheet
});
}, this);

return result;
},

getCell: function (skinId) {
var skin = config[skinId];
var skin = config[skinId] || config['1.0'];
return (skin.sprite[1] * 8) + skin.sprite[0];
},

getSpritesheet: function (skinId) {
var skin = config[skinId];
var skin = config[skinId] || config['1.0'];
return skin.spritesheet || 'characters';
}
};


+ 1
- 1
src/server/items/generator.js Visa fil

@@ -15,7 +15,7 @@ define([
) {
var generators = [g1, g2, g3, g4, g5, g6, g11, g7];
var materialGenerators = [g6, g8];
var spellGenerators = [g1, g9];
var spellGenerators = [g1, g9, g7];
var currencyGenerators = [g10];

var generator = {


+ 3
- 0
src/server/items/generators/worth.js Visa fil

@@ -6,6 +6,9 @@ define([
return {
generate: function (item, blueprint) {
item.worth = ~~(Math.pow(item.level, 1.5) + (Math.pow((item.quality + 1), 2) * 10));

if (item.spell)
item.worth *= 5;
}
};
});

+ 30
- 6
src/server/mods/class-necromancer/index.js Visa fil

@@ -21,6 +21,31 @@ define([
this.events.on('onBeforeGetSpellTemplate', this.beforeGetSpellTemplate.bind(this));
this.events.on('onBeforeGetResourceList', this.beforeGetResourceList.bind(this));
this.events.on('onBeforeGetAnimations', this.beforeGetAnimations.bind(this));
this.events.on('onAfterGetZone', this.onAfterGetZone.bind(this));
},

onAfterGetZone: function (zone, config) {
if (zone != 'tutorial')
return;

var newRunes = [{
generate: true,
spell: true,
spellQuality: 'basic',
infinite: true,
spellName: 'harvest life',
worth: 3
}, {
generate: true,
spell: true,
spellQuality: 'basic',
infinite: true,
spellName: 'summon skeleton',
worth: 3
}];

var vikarTrade = config.mobs.vikar.properties.cpnTrade;
Array.prototype.push.apply(vikarTrade.items.extra, newRunes);
},

beforeGetAnimations: function (animations) {
@@ -85,7 +110,7 @@ define([
},

beforeGetClasses: function (classes) {
classes.spells.necromancer = ['harvest life', 'summon skeleton'];
/*classes.spells.necromancer = ['harvest life', 'summon skeleton'];
classes.stats.necromancer = {
values: {
hpMax: 65
@@ -102,7 +127,7 @@ define([
spritesheet: `${this.folderName}/images/avatar.png`,
x: 0,
y: 0
};
};*/
},

beforeGetSpellTemplate: function (spell) {
@@ -115,12 +140,11 @@ define([
},

beforeGetSkins: function (skins) {
skins['necromancer 1'] = {
skins['1.8'] = {
name: 'Necromancer 1',
sprite: [0, 0],
class: 'necromancer',
spritesheet: `${this.folderName}/images/inGameSprite.png`,
default: true
class: 'wizard',
spritesheet: `${this.folderName}/images/inGameSprite.png`
};
},



+ 2
- 2
src/server/mods/event-halloween/index.js Visa fil

@@ -103,10 +103,10 @@ define([
},

onBeforeGetSkins: function (skins) {
skins['pumpkin-head necromancer'] = {
skins['3.0'] = {
name: 'Pumpkin-Head Necromancer',
sprite: [0, 0],
class: 'necromancer',
class: 'wizard',
spritesheet: `${this.folderName}/images/skins.png`
};
},


+ 1
- 1
src/server/mods/event-xmas/maps/tutorial/events/xmas.js Visa fil

@@ -183,7 +183,7 @@ define([
},
forceItems: [{
type: 'skin',
id: 'bearded wizard',
id: '3.1',
infinite: true,
worth: {
currency: `Unique Snowflake`,


+ 1
- 0
src/server/world/worker.js Visa fil

@@ -58,6 +58,7 @@ requirejs([
return;

console.log('Error Logged: ' + e.toString());
console.log(e.stack);

io.set({
ent: new Date(),


Laddar…
Avbryt
Spara