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
JavaScript
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);
}