Resolve "Remove necro and cleric classes" See merge request Isleward/isleward!267tags/v0.1.10^2
@@ -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; | |||
@@ -46,9 +46,15 @@ | |||
} | |||
} | |||
.txtClass { | |||
&:before { | |||
content: 'Class: '; | |||
} | |||
} | |||
.txtCostume { | |||
&:before { | |||
content: 'costume '; | |||
content: 'Skin: '; | |||
} | |||
} | |||
} | |||
@@ -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); | |||
@@ -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); | |||
} | |||
}, | |||
@@ -40,9 +40,7 @@ define([ | |||
frames: 5, | |||
frameDelay: 3 | |||
} | |||
} | |||
}, | |||
cleric: { | |||
}, | |||
'4': { | |||
hitStaff: { | |||
sheet: 'animChar', | |||
@@ -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) { | |||
@@ -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: { | |||
@@ -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 | |||
['*'] | |||
]; | |||
}); |
@@ -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) { | |||
@@ -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'; | |||
} | |||
}; | |||
@@ -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 = { | |||
@@ -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; | |||
} | |||
}; | |||
}); |
@@ -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` | |||
}; | |||
}, | |||
@@ -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` | |||
}; | |||
}, | |||
@@ -183,7 +183,7 @@ define([ | |||
}, | |||
forceItems: [{ | |||
type: 'skin', | |||
id: 'bearded wizard', | |||
id: '3.1', | |||
infinite: true, | |||
worth: { | |||
currency: `Unique Snowflake`, | |||
@@ -58,6 +58,7 @@ requirejs([ | |||
return; | |||
console.log('Error Logged: ' + e.toString()); | |||
console.log(e.stack); | |||
io.set({ | |||
ent: new Date(), | |||