UNPKG

lol-constants

Version:

League of Legends constants, functions, and types. Provides a plathera of functions to easily convert between ID, Name, and Key for champions, items, summoner spells, and runes.

132 lines (131 loc) 4.9 kB
import { ItemSrTypes } from '../enums/ItemSrTypes'; import { bootsItemIds, failsafeItem, itemNames, Items, } from '../objects/generated/Items'; import { MapsArr } from '../objects/Maps'; /** * Get an item by its **id** or **name**. * * Item categorization is focused on Summoner's Rift. Item's `srType` field denotes: * - `0`: Starter items (Summoner's Rift) * - `1`: Basic items (Summoner's Rift) * - `2`: Epic items (Summoner's Rift) * - `3`: Legendary items (Summoner's Rift) * - `11`: Trinkets (Summoner's Rift) * - `12`: Boots (Summoner's Rift) * - `13`: Consumables (Summoner's Rift) * - `-1`: Misc. & Uncategorized (Summoner's Rift & other maps) * * --- * Second argument `mapId` only applies to getting an item by its **name**: * * Since there can be duplicate item names intended for different maps, * `mapId` denotes which map should be prioritized. * Function may still return an item for a provided `itemName` * even if it does not match the provided `mapId`. * * Defaults to `11` (Summoner's Rift). * * Use `lol.item.isAvailable` to determine whether item is available on a certain map. */ export function getItem(id_name, mapId = 11) { var _a, _b; if (typeof id_name == 'number') return (_a = Items[id_name]) !== null && _a !== void 0 ? _a : failsafeItem; return (_b = Items[getItemIdByName(id_name, mapId)]) !== null && _b !== void 0 ? _b : failsafeItem; } /** @see `getItem` */ function getItemIdByName(itemName, mapId = 11) { const itemIdOrMaps = itemNames[itemName]; if (typeof itemIdOrMaps == 'number') { const itemId = itemIdOrMaps; return itemId; } else { const maps = itemIdOrMaps; const itemId = maps[mapId]; if (itemId != null) { return itemId; } else { // Take another map, at least. In order: Summoner's Rift, Howling Abyss, Arena etc. let itemId; if (itemId = maps[11]) return itemId; if (itemId = maps[12]) return itemId; if (itemId = maps[30]) return itemId; for (const { id } of MapsArr) { if (itemId = maps[id]) return itemId; } return 2003; // If all else fails, return a health potion (though generated files by design should not reach this) } } } export function isStarterItem(item_id_name) { if (item_id_name == 0) return false; if (typeof item_id_name == 'object') return item_id_name.srType == ItemSrTypes.STARTER; return getItem(item_id_name).srType == ItemSrTypes.STARTER; } export function isBasicItem(item_id_name) { if (item_id_name == 0) return false; if (typeof item_id_name == 'object') return item_id_name.srType == ItemSrTypes.BASIC; return getItem(item_id_name).srType == ItemSrTypes.BASIC; } export function isEpicItem(item_id_name) { if (item_id_name == 0) return false; if (typeof item_id_name == 'object') return item_id_name.srType == ItemSrTypes.EPIC; return getItem(item_id_name).srType == ItemSrTypes.EPIC; } export function isLegendaryItem(item_id_name) { if (item_id_name == 0) return false; if (typeof item_id_name == 'object') return item_id_name.srType == ItemSrTypes.LEGENDARY; return getItem(item_id_name).srType == ItemSrTypes.LEGENDARY; } export function isTrinketItem(item_id_name) { if (item_id_name == 0) return false; if (typeof item_id_name == 'object') return item_id_name.srType == ItemSrTypes.TRINKET; return getItem(item_id_name).srType == ItemSrTypes.TRINKET; } export function isBootsItem(item_id_name) { if (item_id_name == 0) return false; if (typeof item_id_name == 'object') return item_id_name.id in bootsItemIds; if (typeof item_id_name == 'number') return item_id_name in bootsItemIds; return getItemIdByName(item_id_name) in bootsItemIds; } export function isConsumableItem(item_id_name) { if (item_id_name == 0) return false; if (typeof item_id_name == 'object') return item_id_name.srType == ItemSrTypes.CONSUMABLE; return getItem(item_id_name).srType == ItemSrTypes.CONSUMABLE; } /** Check whether item is available on a certain map. */ export function isItemAvailableOnMap(itemId, mapId) { const mapsObjOrItemId = itemNames[Items[itemId].name]; if (typeof mapsObjOrItemId == 'number') return false; // Means item is disabled on all maps return mapId in mapsObjOrItemId; } export function isItemId(id) { return typeof id == 'number' && id in Items; } export function isItemName(name) { return typeof name == 'string' && name in itemNames; } export function isItem(id_name) { return typeof id_name == 'number' ? isItemId(id_name) : isItemName(id_name); }