Sfoglia il codice sorgente

started making skins class agnostic

tags/v0.1.10^2
big bad waffle 6 anni fa
parent
commit
5270a955f9
9 ha cambiato i file con 130 aggiunte e 101 eliminazioni
  1. +3
    -3
      src/client/ui/templates/createCharacter/createCharacter.js
  2. +2
    -2
      src/server/components/auth.js
  3. +1
    -0
      src/server/config/classes.js
  4. +53
    -0
      src/server/config/roleSkins.js
  5. +18
    -6
      src/server/config/roles.js
  6. +49
    -85
      src/server/config/skins.js
  7. +2
    -3
      src/server/mods/class-necromancer/index.js
  8. +1
    -1
      src/server/mods/event-halloween/index.js
  9. +1
    -1
      src/server/mods/event-xmas/maps/tutorial/events/xmas.js

+ 3
- 3
src/client/ui/templates/createCharacter/createCharacter.js Vedi File

@@ -142,7 +142,7 @@ define([

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

@@ -160,7 +160,7 @@ define([
changeCostume: function (e) {
var el = $(e.target);

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

@@ -173,7 +173,7 @@ define([
},

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;


+ 2
- 2
src/server/components/auth.js Vedi File

@@ -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);


+ 1
- 0
src/server/config/classes.js Vedi File

@@ -4,6 +4,7 @@ define([
events
) {
var classes = {
list: ['warrior', 'wizard', 'thief'],
portraits: {
warrior: {
x: 0,


+ 53
- 0
src/server/config/roleSkins.js Vedi File

@@ -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 Vedi File

@@ -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 Vedi File

@@ -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: 'wizard',
default: true
sprite: [4, 0]
},
'cleric 2': {
'1.5': {
name: 'Cleric 2',
sprite: [5, 0],
class: 'wizard',
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: 'wizard'
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: 'wizard'
sprite: [4, 0]
},

//Templar Skin Pack
'2.1': {
'11.0': {
name: 'Crusader 1',
spritesheet: 'images/skins/0010.png',
sprite: [0, 0],
class: ['wizard', 'warrior']
sprite: [0, 0]
},
'2.2': {
'11.1': {
name: 'Crusader 2',
spritesheet: 'images/skins/0010.png',
sprite: [1, 0],
class: ['wizard', 'warrior']
sprite: [1, 0]
},
'2.3': {
'11.2': {
name: 'Crusader 3',
spritesheet: 'images/skins/0010.png',
sprite: [2, 0],
class: ['wizard', 'warrior']
sprite: [2, 0]
},
'2.4': {
'11.3': {
name: 'Crusader 4',
spritesheet: 'images/skins/0010.png',
sprite: [3, 0],
class: ['wizard', 'warrior']
sprite: [3, 0]
},
'2.5': {
'11.4': {
name: 'Grand Crusader',
spritesheet: 'images/skins/0010.png',
sprite: [4, 0],
class: ['wizard', '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';
}
};


+ 2
- 3
src/server/mods/class-necromancer/index.js Vedi File

@@ -115,12 +115,11 @@ define([
},

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



+ 1
- 1
src/server/mods/event-halloween/index.js Vedi File

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

onBeforeGetSkins: function (skins) {
skins['pumpkin-head necromancer'] = {
skins['3.0'] = {
name: 'Pumpkin-Head Necromancer',
sprite: [0, 0],
class: 'wizard',


+ 1
- 1
src/server/mods/event-xmas/maps/tutorial/events/xmas.js Vedi File

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


Caricamento…
Annulla
Salva