mirror of
https://github.com/smogon/sprites.git
synced 2026-03-21 17:35:13 -05:00
583 lines
11 KiB
JavaScript
583 lines
11 KiB
JavaScript
|
|
import path from 'path';
|
|
import * as spritedata from '@smogon/sprite-data';
|
|
import root from '@smogon/sprite-root';
|
|
|
|
function toPSID(name) {
|
|
return name.toLowerCase().replace(/[^a-z0-9]+/g, '');
|
|
}
|
|
|
|
// Derived from pokemon-showdown/data/items.ts
|
|
const ITEMS = {
|
|
"absorbbulb": 2,
|
|
"adamantorb": 4,
|
|
"aguavberry": 5,
|
|
"airballoon": 6,
|
|
"apicotberry": 10,
|
|
"armorfossil": 12,
|
|
"aspearberry": 13,
|
|
//"burntberry": 13,
|
|
"babiriberry": 17,
|
|
"belueberry": 21,
|
|
"berryjuice": 22,
|
|
"bignugget": 27,
|
|
"bigroot": 29,
|
|
"bindingband": 31,
|
|
"blackbelt": 32,
|
|
"blacksludge": 34,
|
|
"blackglasses": 35,
|
|
"blueorb": 41,
|
|
"blukberry": 44,
|
|
"brightpowder": 51,
|
|
"buggem": 53,
|
|
"burndrive": 54,
|
|
"cellbattery": 60,
|
|
"charcoal": 61,
|
|
"chartiberry": 62,
|
|
"cheriberry": 63,
|
|
//"przcureberry": 63,
|
|
"cherishball": 64,
|
|
"chestoberry": 65,
|
|
//"mintberry": 65,
|
|
"chilanberry": 66,
|
|
"chilldrive": 67,
|
|
"choiceband": 68,
|
|
"choicescarf": 69,
|
|
"choicespecs": 70,
|
|
"chopleberry": 71,
|
|
"clawfossil": 72,
|
|
"cobaberry": 76,
|
|
"colburberry": 78,
|
|
"cornnberry": 81,
|
|
"coverfossil": 85,
|
|
"custapberry": 86,
|
|
"damprock": 88,
|
|
"darkgem": 89,
|
|
"dawnstone": 92,
|
|
"deepseascale": 93,
|
|
"deepseatooth": 94,
|
|
"destinyknot": 95,
|
|
"diveball": 101,
|
|
"domefossil": 102,
|
|
"dousedrive": 103,
|
|
"dracoplate": 105,
|
|
"dragonfang": 106,
|
|
"dragongem": 107,
|
|
"dragonscale": 108,
|
|
"dreadplate": 110,
|
|
"dreamball": 111,
|
|
"dubiousdisc": 113,
|
|
"durinberry": 114,
|
|
"duskball": 115,
|
|
"duskstone": 116,
|
|
"earthplate": 117,
|
|
"ejectbutton": 118,
|
|
"electirizer": 119,
|
|
"electricgem": 120,
|
|
"enigmaberry": 124,
|
|
"eviolite": 130,
|
|
"expertbelt": 132,
|
|
"fastball": 137,
|
|
"fightinggem": 139,
|
|
"figyberry": 140,
|
|
"firegem": 141,
|
|
"firestone": 142,
|
|
"fistplate": 143,
|
|
"flameorb": 145,
|
|
"flameplate": 146,
|
|
"floatstone": 147,
|
|
"flyinggem": 149,
|
|
"focusband": 150,
|
|
"focussash": 151,
|
|
"friendball": 153,
|
|
"fullincense": 155,
|
|
"ganlonberry": 158,
|
|
"ghostgem": 161,
|
|
"grassgem": 172,
|
|
"greatball": 174,
|
|
"grepaberry": 178,
|
|
"gripclaw": 179,
|
|
"griseousorb": 180,
|
|
"groundgem": 182,
|
|
"habanberry": 185,
|
|
"hardstone": 187,
|
|
"healball": 188,
|
|
"heatrock": 193,
|
|
"heavyball": 194,
|
|
"helixfossil": 195,
|
|
"hondewberry": 213,
|
|
"iapapaberry": 217,
|
|
"icegem": 218,
|
|
"icicleplate": 220,
|
|
"icyrock": 221,
|
|
"insectplate": 223,
|
|
"ironball": 224,
|
|
"ironplate": 225,
|
|
"jabocaberry": 230,
|
|
"kasibberry": 233,
|
|
"kebiaberry": 234,
|
|
"kelpsyberry": 235,
|
|
"kingsrock": 236,
|
|
"laggingtail": 237,
|
|
"lansatberry": 238,
|
|
"laxincense": 240,
|
|
"leafstone": 241,
|
|
"leftovers": 242,
|
|
"leppaberry": 244,
|
|
//"mysteryberry": 244,
|
|
"levelball": 246,
|
|
"liechiberry": 248,
|
|
"lifeorb": 249,
|
|
"lightball": 251,
|
|
"lightclay": 252,
|
|
"loveball": 258,
|
|
"luckypunch": 261,
|
|
"lumberry": 262,
|
|
//"miracleberry": 262,
|
|
"lureball": 264,
|
|
"lustrousorb": 265,
|
|
"luxuryball": 266,
|
|
"machobrace": 269,
|
|
"magmarizer": 272,
|
|
"magnet": 273,
|
|
"magoberry": 274,
|
|
"magostberry": 275,
|
|
"masterball": 276,
|
|
"meadowplate": 282,
|
|
"mentalherb": 285,
|
|
"metalcoat": 286,
|
|
"metalpowder": 287,
|
|
"metronome": 289,
|
|
"micleberry": 290,
|
|
"mindplate": 291,
|
|
"miracleseed": 292,
|
|
"moonball": 294,
|
|
"moonstone": 295,
|
|
"muscleband": 297,
|
|
"mysticwater": 300,
|
|
"nanabberry": 302,
|
|
"nestball": 303,
|
|
"netball": 304,
|
|
"nevermeltice": 305,
|
|
"nomelberry": 306,
|
|
"normalgem": 307,
|
|
"strangeball": 308,
|
|
"occaberry": 311,
|
|
"oddincense": 312,
|
|
"oldamber": 314,
|
|
"oranberry": 319,
|
|
//"berry": 319,
|
|
"ovalstone": 321,
|
|
"pamtreberry": 323,
|
|
"parkball": 325,
|
|
"passhoberry": 329,
|
|
"payapaberry": 330,
|
|
"pechaberry": 333,
|
|
//"psncureberry": 333,
|
|
"persimberry": 334,
|
|
//"bitterberry": 334,
|
|
"petayaberry": 335,
|
|
"pinapberry": 337,
|
|
"plumefossil": 339,
|
|
"poisonbarb": 343,
|
|
"poisongem": 344,
|
|
"pokeball": 345,
|
|
"pomegberry": 351,
|
|
"poweranklet": 354,
|
|
"powerband": 355,
|
|
"powerbelt": 356,
|
|
"powerbracer": 357,
|
|
"powerherb": 358,
|
|
"powerlens": 359,
|
|
"powerweight": 360,
|
|
"premierball": 363,
|
|
"prismscale": 365,
|
|
"protector": 367,
|
|
"psychicgem": 369,
|
|
"qualotberry": 371,
|
|
"quickball": 372,
|
|
"quickclaw": 373,
|
|
"quickpowder": 374,
|
|
"rabutaberry": 375,
|
|
"rarebone": 379,
|
|
"rawstberry": 381,
|
|
//"iceberry": 381,
|
|
"razorclaw": 382,
|
|
"razorfang": 383,
|
|
"razzberry": 384,
|
|
"reapercloth": 385,
|
|
"redcard": 387,
|
|
"berserkgene": 388,
|
|
"redorb": 390,
|
|
"repeatball": 401,
|
|
"mail": 403,
|
|
"rindoberry": 409,
|
|
"ringtarget": 410,
|
|
"rockgem": 415,
|
|
"rockincense": 416,
|
|
"rockyhelmet": 417,
|
|
"rootfossil": 418,
|
|
"roseincense": 419,
|
|
"rowapberry": 420,
|
|
"safariball": 425,
|
|
"salacberry": 426,
|
|
"scopelens": 429,
|
|
"seaincense": 430,
|
|
"sharpbeak": 436,
|
|
"shedshell": 437,
|
|
"shellbell": 438,
|
|
"shinystone": 439,
|
|
"shockdrive": 442,
|
|
"shucaberry": 443,
|
|
"silkscarf": 444,
|
|
//"pinkbow": 444,
|
|
//"polkadotbow": 444,
|
|
"silverpowder": 447,
|
|
"sitrusberry": 448,
|
|
//"goldberry": 448,
|
|
"skullfossil": 449,
|
|
"skyplate": 450,
|
|
"smoothrock": 453,
|
|
"softsand": 456,
|
|
"souldew": 459,
|
|
"spelltag": 461,
|
|
"spelonberry": 462,
|
|
"splashplate": 463,
|
|
"spookyplate": 464,
|
|
"sportball": 465,
|
|
"starfberry": 472,
|
|
"steelgem": 473,
|
|
"leek": 475,
|
|
//"stick": 475,
|
|
"stickybarb": 476,
|
|
"stoneplate": 477,
|
|
"sunstone": 480,
|
|
"tamatoberry": 486,
|
|
"tangaberry": 487,
|
|
"thickclub": 491,
|
|
"thunderstone": 492,
|
|
"timerball": 494,
|
|
"toxicorb": 515,
|
|
"toxicplate": 516,
|
|
"twistedspoon": 520,
|
|
"ultraball": 521,
|
|
"upgrade": 523,
|
|
"wacanberry": 526,
|
|
"watergem": 528,
|
|
"waterstone": 529,
|
|
"watmelberry": 530,
|
|
"waveincense": 531,
|
|
"wepearberry": 533,
|
|
"whiteherb": 535,
|
|
"widelens": 537,
|
|
"wikiberry": 538,
|
|
"wiseglasses": 539,
|
|
"yacheberry": 567,
|
|
"zapplate": 572,
|
|
"zoomlens": 574,
|
|
"abomasite": 575,
|
|
"absolite": 576,
|
|
"aerodactylite": 577,
|
|
"crucibellite": 577,
|
|
"aggronite": 578,
|
|
"alakazite": 579,
|
|
"ampharosite": 580,
|
|
"assaultvest": 581,
|
|
"banettite": 582,
|
|
"blastoisinite": 583,
|
|
"blazikenite": 584,
|
|
"charizarditex": 585,
|
|
"charizarditey": 586,
|
|
"gardevoirite": 587,
|
|
"gengarite": 588,
|
|
// FIXME garchompite & gyaradosite should not be same spritenum
|
|
"garchompite": 589,
|
|
"gyaradosite": 589,
|
|
"heracronite": 590,
|
|
"houndoominite": 591,
|
|
"kangaskhanite": 592,
|
|
"keeberry": 593,
|
|
"lucarionite": 594,
|
|
"luminousmoss": 595,
|
|
"manectite": 596,
|
|
"marangaberry": 597,
|
|
"mawilite": 598,
|
|
"medichamite": 599,
|
|
"mewtwonitex": 600,
|
|
"mewtwonitey": 601,
|
|
"pinsirite": 602,
|
|
"roseliberry": 603,
|
|
"safetygoggles": 604,
|
|
"scizorite": 605,
|
|
"snowball": 606,
|
|
"tyranitarite": 607,
|
|
"venusaurite": 608,
|
|
"weaknesspolicy": 609,
|
|
"pixieplate": 610,
|
|
"fairygem": 611,
|
|
"swampertite": 612,
|
|
"sceptilite": 613,
|
|
"sablenite": 614,
|
|
"altarianite": 615,
|
|
"galladite": 616,
|
|
"audinite": 617,
|
|
"metagrossite": 618,
|
|
"sharpedonite": 619,
|
|
"slowbronite": 620,
|
|
"steelixite": 621,
|
|
"pidgeotite": 622,
|
|
"glalitite": 623,
|
|
"diancite": 624,
|
|
"cameruptite": 625,
|
|
"lopunnite": 626,
|
|
"salamencite": 627,
|
|
"beedrillite": 628,
|
|
"latiasite": 629,
|
|
"latiosite": 630,
|
|
"normaliumz": 631,
|
|
"firiumz": 632,
|
|
"wateriumz": 633,
|
|
"electriumz": 634,
|
|
"grassiumz": 635,
|
|
"iciumz": 636,
|
|
"fightiniumz": 637,
|
|
"poisoniumz": 638,
|
|
"groundiumz": 639,
|
|
"flyiniumz": 640,
|
|
"psychiumz": 641,
|
|
"buginiumz": 642,
|
|
"rockiumz": 643,
|
|
"ghostiumz": 644,
|
|
"dragoniumz": 645,
|
|
"darkiniumz": 646,
|
|
"steeliumz": 647,
|
|
"fairiumz": 648,
|
|
"pikaniumz": 649,
|
|
"decidiumz": 650,
|
|
"inciniumz": 651,
|
|
"primariumz": 652,
|
|
"tapuniumz": 653,
|
|
"marshadiumz": 654,
|
|
"aloraichiumz": 655,
|
|
"snorliumz": 656,
|
|
"eeviumz": 657,
|
|
"mewniumz": 658,
|
|
"pikashuniumz": 659,
|
|
"adrenalineorb": 660,
|
|
"beastball": 661,
|
|
"terrainextender": 662,
|
|
"protectivepads": 663,
|
|
"electricseed": 664,
|
|
"psychicseed": 665,
|
|
"mistyseed": 666,
|
|
"grassyseed": 667,
|
|
"fightingmemory": 668,
|
|
"flyingmemory": 669,
|
|
"poisonmemory": 670,
|
|
"groundmemory": 671,
|
|
"rockmemory": 672,
|
|
"bugmemory": 673,
|
|
"ghostmemory": 674,
|
|
"steelmemory": 675,
|
|
"firememory": 676,
|
|
"watermemory": 677,
|
|
"grassmemory": 678,
|
|
"electricmemory": 679,
|
|
"psychicmemory": 680,
|
|
"icememory": 681,
|
|
"dragonmemory": 682,
|
|
"darkmemory": 683,
|
|
"fairymemory": 684,
|
|
"solganiumz": 685,
|
|
"lunaliumz": 686,
|
|
"ultranecroziumz": 687,
|
|
"mimikiumz": 688,
|
|
"lycaniumz": 689,
|
|
"kommoniumz": 690,
|
|
"sachet": 691,
|
|
"whippeddream": 692,
|
|
"icestone": 693,
|
|
"jawfossil": 694,
|
|
"sailfossil": 695,
|
|
"bottlecap": 696,
|
|
"goldbottlecap": 697,
|
|
"rustedsword": 698,
|
|
"rustedshield": 699,
|
|
"fossilizedbird": 700,
|
|
"fossilizedfish": 701,
|
|
"fossilizeddrake": 702,
|
|
"fossilizeddino": 703,
|
|
"strawberrysweet": 704,
|
|
"lovesweet": 705,
|
|
"berrysweet": 706,
|
|
"cloversweet": 707,
|
|
"flowersweet": 708,
|
|
"starsweet": 709,
|
|
"ribbonsweet": 710,
|
|
"sweetapple": 711,
|
|
"tartapple": 712,
|
|
"throatspray": 713,
|
|
"ejectpack": 714,
|
|
"heavydutyboots": 715,
|
|
"blunderpolicy": 716,
|
|
"roomservice": 717,
|
|
"utilityumbrella": 718,
|
|
"crackedpot": 719,
|
|
"chippedpot": 720,
|
|
"tr00": 721,
|
|
"tr01": 721,
|
|
"tr13": 721,
|
|
"tr14": 721,
|
|
"tr19": 721,
|
|
"tr20": 721,
|
|
"tr26": 721,
|
|
"tr27": 721,
|
|
"tr29": 721,
|
|
"tr30": 721,
|
|
"tr35": 721,
|
|
"tr42": 721,
|
|
"tr85": 721,
|
|
"tr07": 722,
|
|
"tr21": 722,
|
|
"tr39": 722,
|
|
"tr48": 722,
|
|
"tr53": 722,
|
|
"tr56": 722,
|
|
"tr64": 722,
|
|
"tr99": 722,
|
|
"tr66": 723,
|
|
"tr89": 723,
|
|
"tr22": 724,
|
|
"tr54": 724,
|
|
"tr57": 724,
|
|
"tr73": 724,
|
|
"tr78": 724,
|
|
"tr91": 724,
|
|
"tr10": 725,
|
|
"tr23": 725,
|
|
"tr67": 725,
|
|
"tr87": 725,
|
|
"tr94": 725,
|
|
"tr63": 726,
|
|
"tr75": 726,
|
|
"tr76": 726,
|
|
"tr18": 727,
|
|
"tr28": 727,
|
|
"tr60": 727,
|
|
"tr61": 727,
|
|
"tr96": 727,
|
|
"tr33": 728,
|
|
"tr31": 729,
|
|
"tr46": 729,
|
|
"tr52": 729,
|
|
"tr70": 729,
|
|
"tr74": 729,
|
|
"tr79": 729,
|
|
"tr02": 730,
|
|
"tr15": 730,
|
|
"tr36": 730,
|
|
"tr41": 730,
|
|
"tr43": 730,
|
|
"tr55": 730,
|
|
"tr88": 730,
|
|
"tr03": 731,
|
|
"tr04": 731,
|
|
"tr16": 731,
|
|
"tr45": 731,
|
|
"tr84": 731,
|
|
"tr98": 731,
|
|
"tr50": 732,
|
|
"tr59": 732,
|
|
"tr65": 732,
|
|
"tr71": 732,
|
|
"tr72": 732,
|
|
"tr77": 732,
|
|
"tr08": 733,
|
|
"tr09": 733,
|
|
"tr80": 733,
|
|
"tr86": 733,
|
|
"tr11": 734,
|
|
"tr12": 734,
|
|
"tr17": 734,
|
|
"tr25": 734,
|
|
"tr34": 734,
|
|
"tr38": 734,
|
|
"tr40": 734,
|
|
"tr44": 734,
|
|
"tr49": 734,
|
|
"tr69": 734,
|
|
"tr82": 734,
|
|
"tr83": 734,
|
|
"tr97": 734,
|
|
"tr05": 735,
|
|
"tr06": 735,
|
|
"tr24": 736,
|
|
"tr47": 736,
|
|
"tr51": 736,
|
|
"tr62": 736,
|
|
"tr32": 737,
|
|
"tr37": 737,
|
|
"tr58": 737,
|
|
"tr68": 737,
|
|
"tr81": 737,
|
|
"tr93": 737,
|
|
"tr95": 737,
|
|
"tr90": 738,
|
|
"tr92": 738,
|
|
"galaricacuff": 739,
|
|
"galaricawreath": 740,
|
|
"adamantcrystal": 741,
|
|
"lustrousglobe": 742,
|
|
"griseouscore": 743,
|
|
"maliciousarmor": 744,
|
|
"boosterenergy": 745,
|
|
"abilityshield": 746,
|
|
"clearamulet": 747,
|
|
"mirrorherb": 748,
|
|
"punchingglove": 749,
|
|
"covertcloak": 750,
|
|
"loadeddice": 751,
|
|
"vilevial": 752,
|
|
"auspiciousarmor": 753,
|
|
"fairyfeather": 754,
|
|
"syrupyapple": 755,
|
|
"unremarkableteacup": 756,
|
|
"masterpieceteacup": 757,
|
|
"cornerstonemask": 758,
|
|
"wellspringmask": 759,
|
|
"hearthflamemask": 760,
|
|
"metalalloy": 761,
|
|
};
|
|
|
|
const found = new Map;
|
|
|
|
for (const {type, sid, names} of spritedata.entries()) {
|
|
if (type !== 'item') continue;
|
|
for (let name of names) {
|
|
const id = toPSID(name);
|
|
const filename = spritedata.formatFilename({id: sid});
|
|
found.set(id, path.join(root, "src/minisprites/items", filename + ".png"));
|
|
}
|
|
}
|
|
|
|
const entries = [];
|
|
|
|
for (const [id, num] of Object.entries(ITEMS)) {
|
|
const filename = found.get(id);
|
|
if (!filename)
|
|
throw new Error(`can't find: ${id}`);
|
|
entries[num] = filename;
|
|
}
|
|
|
|
for (let i = 0; i < entries.length; i++) {
|
|
if (entries[i] === undefined)
|
|
entries[i] = null;
|
|
}
|
|
|
|
export default {
|
|
width: 24,
|
|
height: 24,
|
|
tile: 16,
|
|
entries
|
|
};
|