UNPKG

tf2-item-format

Version:
300 lines 9.96 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Schema = void 0; const tf2_static_schema_1 = require("tf2-static-schema"); const isNumber_1 = __importDefault(require("../util/isNumber")); const DEFINDEXES = { // Local naming 'Strangifier Chemistry Set': 20000, 'Specialized Killstreak Kit Fabricator': 20002, 'Professional Killstreak Kit Fabricator': 20003, 'Chemistry Set': 20005, 'Mann Co. Supply Crate Key': 5021, Lugermorph: 160, /** * Old keys, list might be incomplete. */ 'Festive Winter Crate Key': 5049, 'Refreshing Summer Cooler Key': 5067, 'Naughty Winter Crate Key': 5072, 'Nice Winter Crate Key': 5073, 'Scorched Key': 5079, 'Fall Key': 5081, 'Eerie Key': 5628, 'Naughty Winter Crate Key 2012': 5631, 'Nice Winter Crate Key 2012': 5632, 'Spooky Key': 5713, 'Naughty Winter Crate Key 2013': 5716, 'Nice Winter Crate Key 2013': 5717, 'Limited Late Summer Crate Key': 5762, 'Naughty Winter Crate Key 2014': 5791, 'Nice Winter Crate Key 2014': 5792, // "'Decorated War Hero' War Paint Civilian Grade Keyless Case": 18000, // "'Decorated War Hero' War Paint Freelance Grade Keyless Case": 18001, // "'Decorated War Hero' War Paint Mercenary Grade Keyless Case": 18002, // "'Contract Campaigner' War Paint\nCivilian Grade Keyless Case": 18003, // "'Contract Campaigner' War Paint\nFreelance Grade Keyless Case": 18004, // "'Contract Campaigner' War Paint\nMercenary Grade Keyless Case": 18005, }; const NAMES = { 160: 'Lugermorph', 5021: 'Mann Co. Supply Crate Key', 5049: 'Festive Winter Crate Key', 5067: 'Refreshing Summer Cooler Key', 5072: 'Naughty Winter Crate Key', 5073: 'Nice Winter Crate Key', 5079: 'Scorched Key', 5081: 'Fall Key', 5628: 'Eerie Key', 5631: 'Naughty Winter Crate Key 2012', 5632: 'Nice Winter Crate Key 2012', 5713: 'Spooky Key', 5716: 'Naughty Winter Crate Key 2013', 5717: 'Nice Winter Crate Key 2013', 5762: 'Limited Late Summer Crate Key', 5791: 'Naughty Winter Crate Key 2014', 5792: 'Nice Winter Crate Key 2014', 20000: 'Strangifier Chemistry Set', 20005: 'Chemistry Set', // 18000: "'Decorated War Hero' War Paint\nCivilian Grade Keyless Case", // 18001: "'Decorated War Hero' War Paint\nFreelance Grade Keyless Case", // 18002: "'Decorated War Hero' War Paint\nMercenary Grade Keyless Case", // 18003: "'Contract Campaigner' War Paint\nCivilian Grade Keyless Case", // 18004: "'Contract Campaigner' War Paint\nFreelance Grade Keyless Case", // 18005: "'Contract Campaigner' War Paint\nMercenary Grade Keyless Case", }; /* TODO: Set boundaries between these. "20000":"Chemistry Set", "20001":"Chemistry Set", "20005":"Chemistry Set", "20006":"Chemistry Set", "20007":"Chemistry Set", "20008":"Chemistry Set", "20009":"Chemistry Set" */ class Schema { constructor() { } getVersion() { return 1; // Never changes during runtime } getTextures() { if (!this.textures) this.loadTextures(); return this.textures; } getEffects() { if (!this.effects) this.loadEffects(); return this.effects; } getItems() { if (!this.items) this.loadDefindexes(); return this.items; } loadEffects() { this.effects = (0, tf2_static_schema_1.requireStatic)('effects'); } loadWears() { this.wears = (0, tf2_static_schema_1.requireStatic)('wears'); } loadKillstreaks() { this.killstreaks = (0, tf2_static_schema_1.requireStatic)('killstreaks'); } loadTextures() { this.textures = (0, tf2_static_schema_1.requireStatic)('paint-kits'); } loadItemNames() { this.itemNames = (0, tf2_static_schema_1.requireStatic)('item-names'); } loadDefindexes() { this.items = (0, tf2_static_schema_1.requireStatic)('items'); } loadQualities() { this.qualities = (0, tf2_static_schema_1.requireStatic)('qualities'); } loadItemsGame() { this.itemsGame = (0, tf2_static_schema_1.requireStatic)('items-game'); } getEffect(search) { if (!this.effects) this.loadEffects(); return this.effects[search]; } getWear(search) { if (!this.wears) this.loadWears(); return this.wears[search]; } getKillstreak(search) { if (!this.killstreaks) this.loadKillstreaks(); return this.killstreaks[search]; } getTexture(search) { if (!this.textures) this.loadTextures(); return this.textures[search]; } /** * @todo https://github.com/Nicklason/tf2-automatic/blob/master/src/lib/items.ts * @param {string} search * @return {number} */ getDefindex(search) { if (!this.items) this.loadDefindexes(); if (typeof search === 'number') return search; // Exceptions if (DEFINDEXES[search]) return DEFINDEXES[search]; let upgradeableDfx = null; for (let i = 0; i < this.items.length; i++) { const item = this.items[i]; const name = selectName(item); if (name === search) { if (!hasUpgradeable(item) || isUpgradeable(item.name)) { return item.defindex; } upgradeableDfx = item.defindex; } } return upgradeableDfx; } getName(search) { if (!this.itemNames) this.loadItemNames(); if (!(0, isNumber_1.default)(search)) return search; const name = NAMES[search]; if (name) return name; return this.itemNames[search]; } getQuality(search) { if (!this.qualities) this.loadQualities(); return this.qualities[search]; } getEffectName(effect) { if (!(0, isNumber_1.default)(effect)) return effect; return this.getEffect(effect); } getWearName(wear) { if (!(0, isNumber_1.default)(wear)) return wear; return this.getWear(wear); } getKillstreakName(killstreak) { if (!(0, isNumber_1.default)(killstreak)) return killstreak; return this.getKillstreak(killstreak); } getTextureName(texture) { if (!(0, isNumber_1.default)(texture)) return texture; return this.getTexture(texture); } getQualityName(quality) { if (!(0, isNumber_1.default)(quality)) return quality; return this.getQuality(quality); } getEffectEnum(effect) { if ((0, isNumber_1.default)(effect)) return effect; return this.getEffect(effect); } getWearEnum(wear) { if ((0, isNumber_1.default)(wear)) return wear; return this.getWear(wear); } getKillstreakEnum(killstreak) { if ((0, isNumber_1.default)(killstreak)) return killstreak; return this.getKillstreak(killstreak); } getTextureEnum(texture) { if ((0, isNumber_1.default)(texture)) return texture; return parseInt(this.getTexture(texture)); } getQualityEnum(quality) { if ((0, isNumber_1.default)(quality)) return quality; return this.getQuality(quality); } isUniqueHat(defindexOrName) { if ((0, isNumber_1.default)(defindexOrName)) { defindexOrName = this.getName(defindexOrName); } const item = this.getSchemaItemFromName(defindexOrName); return !!(item === null || item === void 0 ? void 0 : item.proper_name); } getCrateNumber(defindexOrName) { if (!this.itemsGame) this.loadItemsGame(); if (!(0, isNumber_1.default)(defindexOrName)) { const defindex = this.getDefindex(defindexOrName); if (!defindex) return 0; defindexOrName = defindex; } const item = this.itemsGame.items[defindexOrName + '']; if (!item) return 0; const crateSeries = parseInt((item.static_attrs && item.static_attrs['set supply crate series'])); return isNaN(crateSeries) ? 0 : crateSeries; } getSchemaItemFromName(search) { if (!this.items) this.loadDefindexes(); let byDefindex = 0; if (DEFINDEXES[search]) { byDefindex = DEFINDEXES[search]; } let correctItem = null; for (let i = 0; i < this.items.length; i++) { const item = this.items[i]; const name = selectName(item); if (byDefindex ? byDefindex === item.defindex : name === search) { if (!hasUpgradeable(item) || isUpgradeable(item.name)) { return item; } correctItem = item; } } return correctItem; } } exports.Schema = Schema; /** * @todo get from schema * @param {object} item * @return {string} */ function selectName(item) { if (item.item_name === 'Kit') return item.item_type_name; // Due to BackpackTF naming colisions. if (item.defindex === 20003) return 'Professional Killstreak Fabricator'; if (item.defindex === 20002) return 'Specialized Killstreak Fabricator'; return item.item_name; } function isUpgradeable(name) { return name.startsWith('Upgradeable '); } function hasUpgradeable(item) { return item.name.includes(item.item_class.toUpperCase()); } exports.default = new Schema(); //# sourceMappingURL=schema.js.map