diff --git a/package.json b/package.json index 03daa4fea4..195e31bbc9 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,7 @@ }, "scripts": { "lint": "eslint --config=.eslintrc.js --cache --cache-file=eslint-cache/base js/ data/ && eslint --config=build-tools/.eslintrc.js --cache --cache-file=eslint-cache/build build-tools/update build-tools/build-indexes && tslint --project .", - "test": "npm run lint && tsc && node build && mocha test/*.test.js", - "full-test": "npm run lint && tsc && node build indexes && mocha test/*.js", + "test": "npm run lint && tsc && node build && mocha test/*.js", "fix": "eslint --config=.eslintrc.js --fix js/ && eslint --config=build-tools/.eslintrc.js --fix build-tools/update build-tools/build-indexes", "build": "node build", "build-full": "node build full" diff --git a/sprites/gallery-test.html b/sprites/gallery-test.html new file mode 100644 index 0000000000..35c7011320 --- /dev/null +++ b/sprites/gallery-test.html @@ -0,0 +1,316 @@ + + + + + + + Sprites + + + + +
+ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sprites/scene-test.html b/sprites/scene-test.html new file mode 100644 index 0000000000..b4fee121e8 --- /dev/null +++ b/sprites/scene-test.html @@ -0,0 +1,790 @@ + + + + + + + Sprites + + + + +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/battle-dex.ts b/src/battle-dex.ts index 408cc555db..c23500f671 100644 --- a/src/battle-dex.ts +++ b/src/battle-dex.ts @@ -559,10 +559,16 @@ const Dex = new class implements ModdedDex { document.getElementsByTagName('body')[0].appendChild(el); } getSpriteData(pokemon: Pokemon | Species | string, siden: number, options: { - gen?: number, shiny?: boolean, gender?: GenderName, afd?: boolean, noScale?: boolean, mod?: string, + gen?: number, + shiny?: boolean, + gender?: GenderName, + afd?: boolean, + noScale?: boolean, + mod?: string, + dynamax?: boolean, } = {gen: 6}) { const mechanicsGen = options.gen || 6; - let isDynamax = false; + let isDynamax = !!options.dynamax; if (pokemon instanceof Pokemon) { if (pokemon.volatiles.transform) { options.shiny = pokemon.volatiles.transform[2]; diff --git a/test/dex.full-test.js b/test/dex.full-test.js deleted file mode 100644 index fe62095861..0000000000 --- a/test/dex.full-test.js +++ /dev/null @@ -1,117 +0,0 @@ -const assert = require('assert').strict; - -window = global; - -window.BattleTeambuilderTable = require('../data/teambuilder-tables.js').BattleTeambuilderTable; -window.BattleAbilities = require('../data/abilities.js').BattleAbilities; -window.BattleItems = require('../data/items.js').BattleItems; -window.BattleMovedex = require('../data/moves.js').BattleMovedex; -window.BattlePokdex = require('../data/pokedex.js').BattlePokdex; -window.BattleTypeChart = require('../data/typechart.js').BattleTypeChart; - -require('../js/battle-dex-data.js'); -require('../js/battle-dex.js'); -require('../js/battle-scene-stub.js'); -global.BattleText = require('../data/text.js').BattleText; -require('../js/battle-text-parser.js'); -require('../js/battle.js'); - -const withPrefs = (prefs, fn) => { - const saved = Dex.prefs; - Dex.prefs = s => prefs[s]; - fn(); - Dex.prefs = saved; -}; - -const spriteData = override => { - const url = Dex.resourcePrefix + 'sprites/' + (override.url || ''); - delete override.url; - return Object.assign({ - gen: 6, - w: 96, - h: 96, - y: 0, - url, - cryurl: '', - shiny: undefined, - }, override); -}; - -describe('Dex', () => { - it('getAbility', () => { - assert.equal(Dex.getAbility('Sturdy').shortDesc, 'If this Pokemon is at full HP, it survives one hit with at least 1 HP. Immune to OHKO.'); - assert.equal(Dex.forGen(3).getAbility('s turdy').shortDesc, 'OHKO moves fail when used against this Pokemon.'); - }); - it('getItem', () => { - assert(Dex.getItem('Aerodactylite').megaEvolves, 'Aerodactyl'); - }); - it('getMove', () => { - assert(Dex.getMove('Draco Meteor').basePower, 130); - assert(Dex.forGen(4).getMove('DracoMeteor').basePower, 140); - assert(Dex.getMove('Crunch').category, 'Physical'); - assert(Dex.forGen(2).getMove('CRUNCH').category, 'Special'); - }); - it('getTemplate', () => { - assert.equal(Dex.getTemplate('Alakazam').baseStats.spd, 95); - assert.equal(Dex.forGen(3).getTemplate('Alakazam').baseStats.spd, 85); - }); - it('getType', () => { - assert(Dex.getType('Fairy').exists); - assert(!Dex.forGen(1).getType('steel').exists); - assert.equal(Dex.forGen(1).getType('Psychic').damageTaken['Ghost'], 3); - assert.equal(Dex.getType('Psychic').damageTaken['Ghost'], 1); - assert.equal(Dex.getType('Fire').damageTaken['Water'], 1); - assert.equal(Dex.getType('Water').damageTaken['Fire'], 2); - assert.equal(Dex.getType('Ground').damageTaken['Electric'], 3); - }); - it('getSpriteData', () => { - // TODO Transform - // TODO Dynamax - it('default prefs', () => { - // withPrefs({}) or no withPrefs accomplishes the same, but this is explict - withPrefs({nopastgens: false, bwgfx: false, noanim: false, nogif: false}, () => { - assert.deepEqual(Dex.getSpriteData('pikachu', 0), spriteData({url: 'gen5-back/pikachu.png', pixelated: false, isBackSprite: true})); - assert.deepEqual(Dex.getSpriteData('pikachu', 1, {gen: 4, shiny: true}), spriteData({url: 'gen4/pikachu-shiny.png', pixelated: true, isBackSprite: false})); - }); - }) - // TODO oodles more - }); - it('getTeambuilderSprite', () => { - assert.equal(Dex.getTeambuilderSprite({species: 'foobar'}), 'background-image:url(https://play.pokemonshowdown.com/sprites/gen5/0.png);background-position:10px 5px;background-repeat:no-repeat'); - assert.equal(Dex.getTeambuilderSprite({species: 'pikachu'}), 'background-image:url(https://play.pokemonshowdown.com/sprites/dex/pikachu.png);background-position:-2px -3px;background-repeat:no-repeat'); - assert.equal(Dex.getTeambuilderSprite({species: 'pikachu'}, 1), 'background-image:url(https://play.pokemonshowdown.com/sprites/gen1/pikachu.png);background-position:10px 5px;background-repeat:no-repeat'); - assert.equal(Dex.getTeambuilderSprite({species: 'gyarados', shiny: true}, 3), 'background-image:url(https://play.pokemonshowdown.com/sprites/gen3-shiny/gyarados.png);background-position:10px 5px;background-repeat:no-repeat'); - }); - it('getTeambuilderSpriteData', () => { - // Basic - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'foobar'}), {spriteDir: 'sprites/gen5', spriteid: '0', x: 10, y: 5}); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'pikachu'}), {spriteDir: 'sprites/dex', spriteid: 'pikachu', x: -2, y: -3}); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'pikachu'}, 1), { spriteDir: 'sprites/gen1', spriteid: 'pikachu', x: 10, y: 5 }); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'gyarados', shiny: true}, 3), {spriteDir: 'sprites/gen3', spriteid: 'gyarados', shiny: true, x: 10, y: 5}); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'eiscue', spriteid: 'pikachu'}), {spriteDir: 'sprites/gen5', spriteid: 'pikachu', x: 10, y: 5}); - - // XY Dex - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'eiscue'}), {spriteDir: 'sprites/gen5', spriteid: 'eiscue', x: 10, y: 5}); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'melmetal'}, 7), {spriteDir: 'sprites/dex', spriteid: 'melmetal', x: -6, y: -7}); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'Araquanid-Totem'}), {spriteDir: 'sprites/dex', spriteid: 'araquanid', x: -6, y: -7}); - - // Special XY Offsets - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'Arceus-Grass'}, 7), {spriteDir: 'sprites/dex', spriteid: 'arceus-grass', x: -2, y: 7}); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'Arceus-Electric'}, 4), {spriteDir: 'sprites/gen4', spriteid: 'arceus-electric', x: 10, y: 5}); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'Garchomp'}), {spriteDir: 'sprites/dex', spriteid: 'garchomp', x: -2, y: 2}); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'Garchomp'}, 5), {spriteDir: 'sprites/gen5', spriteid: 'garchomp', x: 10, y: 5}); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'Garchomp-Mega'}), {spriteDir: 'sprites/dex', spriteid: 'garchomp-mega', x: -2, y: 0}); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'Garchomp-Mega'}, 5), {spriteDir: 'sprites/gen5', spriteid: 'garchomp-mega', x: 10, y: 5}); - - // Rollup - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'Garchomp'}, 1), {spriteDir: 'sprites/gen4', spriteid: 'garchomp', x: 10, y: 5}); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'Froakie'}, 2), {spriteDir: 'sprites/gen5', spriteid: 'froakie', x: 10, y: 5}); - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'Tyranitar'}, 1), {spriteDir: 'sprites/gen2', spriteid: 'tyranitar', x: 10, y: 5}); - - // No Past Gens - withPrefs({nopastgens: true}, () => { - assert.deepEqual(Dex.getTeambuilderSpriteData({species: 'pikachu'}, 1), {spriteDir: 'sprites/dex', spriteid: 'pikachu', x: -2, y: -3}); - }); - }); -}); -