lol-constants 1.2.3 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,6 +6,8 @@ import './generate-item-keys';
6
6
  import './generate-item-names';
7
7
  import './generate-rune-ids';
8
8
  import './generate-rune-names';
9
+ import './generate-rune-picking-relationships';
10
+ import './generate-rune-sets-by-rune-names';
9
11
  import './generate-rune-sets';
10
12
  import './generate-spell-ids-by-name';
11
13
  import './generate-spell-ids';
@@ -8,6 +8,8 @@ require("./generate-item-keys");
8
8
  require("./generate-item-names");
9
9
  require("./generate-rune-ids");
10
10
  require("./generate-rune-names");
11
+ require("./generate-rune-picking-relationships");
12
+ require("./generate-rune-sets-by-rune-names");
11
13
  require("./generate-rune-sets");
12
14
  require("./generate-spell-ids-by-name");
13
15
  require("./generate-spell-ids");
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const runesReforged_json_1 = __importDefault(require("../runesReforged.json"));
7
+ const writeToTmpFile_1 = require("./Helpers/writeToTmpFile");
8
+ (async () => {
9
+ const constant = 'RunePickingRelationships';
10
+ const relationships = {};
11
+ // Determine all of the runes (2-3) that each rune in the game
12
+ // has a horizontal-set "relationship" with.
13
+ // It means that they are dependent on that rune
14
+ // for picking purposes.
15
+ // Only one rune can be picked per h-set.
16
+ for (const category of runesReforged_json_1.default) {
17
+ for (const { runes, } of category.slots) {
18
+ for (const { id: baseRuneId, } of runes) {
19
+ // Assign each of the neighboring runes to this rune's r-ship array.
20
+ for (const { id, } of runes) {
21
+ // Let us simply assume that there is no such thing as a relationship
22
+ // with oneself, therefore skip.
23
+ if (baseRuneId == id)
24
+ continue;
25
+ if (!relationships[baseRuneId])
26
+ relationships[baseRuneId] = [];
27
+ relationships[baseRuneId].push(String(id));
28
+ }
29
+ }
30
+ }
31
+ }
32
+ // Create workshop arrays for each horizontal-set of stat runes.
33
+ const offense = ['5005', '5007', '5008'];
34
+ const flex = ['5002f', '5003f', '5008f'];
35
+ const defense = ['5001', '5002', '5003'];
36
+ for (let hSet of [
37
+ offense,
38
+ flex,
39
+ defense,
40
+ ]) {
41
+ for (let baseStatRuneId of hSet) {
42
+ for (let statRuneId of hSet) {
43
+ // Skip self
44
+ if (baseStatRuneId == statRuneId)
45
+ continue;
46
+ if (!relationships[baseStatRuneId])
47
+ relationships[baseStatRuneId] = [];
48
+ relationships[baseStatRuneId].push(statRuneId);
49
+ }
50
+ }
51
+ }
52
+ await (0, writeToTmpFile_1.writeToTmpFile)(constant, {
53
+ constName: constant,
54
+ comment: `All of the runes and their relationships to other runes in terms of picking. Only one rune can be picked in a rune horizontal-set, each main rune that has a relationship to another rune unselects the other rune if the main rune is picked.`,
55
+ json: relationships,
56
+ });
57
+ })();
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const runesReforged_json_1 = __importDefault(require("../runesReforged.json"));
7
+ const StatRunes_1 = require("../StatRunes");
8
+ const writeToTmpFile_1 = require("./Helpers/writeToTmpFile");
9
+ (async () => {
10
+ const constant = 'RuneSetsByRuneNames';
11
+ const runeSets = {
12
+ PrimaryTrees: {},
13
+ SecondaryTrees: {},
14
+ Keystones: {},
15
+ StatRunes: {},
16
+ };
17
+ const keystoneHSetIdx = 0;
18
+ let totalRuneAmt = 0;
19
+ for (const runeTree of runesReforged_json_1.default) {
20
+ const runeTreeName = runeTree.name;
21
+ const horizontalSets = runeTree.slots;
22
+ let currentHSetIdx = 0;
23
+ for (const { runes, } of horizontalSets) {
24
+ for (let { id, name: runeName, } of runes) {
25
+ totalRuneAmt += 1;
26
+ // Add to PrimaryTrees
27
+ if (!(runeTreeName in runeSets.PrimaryTrees))
28
+ runeSets.PrimaryTrees[runeTreeName] = {};
29
+ runeSets.PrimaryTrees[runeTreeName][runeName] = String(id);
30
+ // Add to SecondaryTrees
31
+ if (!(runeTreeName in runeSets.SecondaryTrees))
32
+ runeSets.SecondaryTrees[runeTreeName] = {};
33
+ // But only if it isn't a keystone rune
34
+ if (currentHSetIdx != keystoneHSetIdx) {
35
+ runeSets.SecondaryTrees[runeTreeName][runeName] = String(id);
36
+ }
37
+ // Add to Keystones
38
+ // But only if it is a keystone rune
39
+ if (currentHSetIdx == keystoneHSetIdx) {
40
+ runeSets.Keystones[runeName] = String(id);
41
+ }
42
+ }
43
+ ++currentHSetIdx;
44
+ }
45
+ }
46
+ let statRuneId;
47
+ for (statRuneId in StatRunes_1.StatRunes) {
48
+ totalRuneAmt += 1;
49
+ // Add to StatRunes
50
+ runeSets.StatRunes[StatRunes_1.StatRunes[statRuneId]] = statRuneId;
51
+ }
52
+ // Write to file
53
+ await (0, writeToTmpFile_1.writeToTmpFile)(constant, {
54
+ constName: 'PrimaryTrees',
55
+ json: runeSets.PrimaryTrees,
56
+ }, {
57
+ constName: 'SecondaryTrees',
58
+ json: runeSets.SecondaryTrees,
59
+ }, {
60
+ constName: 'Keystones',
61
+ json: runeSets.Keystones,
62
+ }, {
63
+ constName: 'StatRunes',
64
+ json: runeSets.StatRunes,
65
+ }, {
66
+ constName: 'All',
67
+ json: {
68
+ 1: '...PrimaryTrees.Precision',
69
+ 2: '...PrimaryTrees.Domination',
70
+ 3: '...PrimaryTrees.Sorcery',
71
+ 4: '...PrimaryTrees.Resolve',
72
+ 5: '...PrimaryTrees.Inspiration',
73
+ 6: '...StatRunes',
74
+ },
75
+ keysToSpread: [1, 2, 3, 4, 5, 6],
76
+ }, {
77
+ constName: constant,
78
+ comment: `Contains all Rune IDs that are known to man in the game of League of Legends. Sorted by various useful categories. There are a total of ${totalRuneAmt} runes in the game.`,
79
+ json: {
80
+ 'PrimaryTrees': 'PrimaryTrees',
81
+ 'SecondaryTrees': 'SecondaryTrees',
82
+ 'Keystones': 'Keystones',
83
+ 'StatRunes': 'StatRunes',
84
+ 'All': 'All',
85
+ },
86
+ keysToSpread: [
87
+ 'PrimaryTrees',
88
+ 'SecondaryTrees',
89
+ 'Keystones',
90
+ 'StatRunes',
91
+ 'All',
92
+ ],
93
+ });
94
+ })();
@@ -13,6 +13,9 @@ const writeToTmpFile_1 = require("./Helpers/writeToTmpFile");
13
13
  SecondaryTrees: {},
14
14
  Keystones: {},
15
15
  StatRunes: {},
16
+ // No HSets for now
17
+ // RunesByHSet: {},
18
+ // StatRunesByHSet: [],
16
19
  };
17
20
  const keystoneHSetIdx = 0;
18
21
  let totalRuneAmt = 0;
@@ -39,15 +42,29 @@ const writeToTmpFile_1 = require("./Helpers/writeToTmpFile");
39
42
  if (currentHSetIdx == keystoneHSetIdx) {
40
43
  runeSets.Keystones[id] = runeName;
41
44
  }
45
+ // No HSets for now
46
+ // Add to RunesByHSet
47
+ // if (!(runeTreeName in runeSets.RunesByHSet)) runeSets.RunesByHSet[runeTreeName] = []
48
+ // if (!runeSets.RunesByHSet[runeTreeName]![currentHSetIdx]) runeSets.RunesByHSet[runeTreeName]![currentHSetIdx] = {}
49
+ // runeSets.RunesByHSet[runeTreeName]![currentHSetIdx]![id] = runeName
42
50
  }
43
51
  ++currentHSetIdx;
44
52
  }
45
53
  }
54
+ // No HSets for now
55
+ // let currentRuneIdx = 0
56
+ // let currentHSetIdx = 0
46
57
  let statRuneId;
47
58
  for (statRuneId in StatRunes_1.StatRunes) {
48
59
  totalRuneAmt += 1;
49
60
  // Add to StatRunes
50
61
  runeSets.StatRunes[statRuneId] = StatRunes_1.StatRunes[statRuneId];
62
+ // No HSets for now
63
+ // // Add to StatRunesByHSet
64
+ // if (!runeSets.StatRunesByHSet[currentHSetIdx]) runeSets.StatRunesByHSet[currentHSetIdx] = {}
65
+ // runeSets.StatRunesByHSet[currentHSetIdx]![statRuneId] = StatRunes[ statRuneId ]
66
+ // ++currentRuneIdx
67
+ // if (currentRuneIdx % 3 == 0) ++currentHSetIdx
51
68
  }
52
69
  // Write to file
53
70
  await (0, writeToTmpFile_1.writeToTmpFile)(constant, {
@@ -73,8 +90,18 @@ const writeToTmpFile_1 = require("./Helpers/writeToTmpFile");
73
90
  6: '...StatRunes',
74
91
  },
75
92
  keysToSpread: [1, 2, 3, 4, 5, 6],
76
- }, {
77
- constName: 'RuneSets',
93
+ },
94
+ // No HSets for now
95
+ // {
96
+ // constName: 'RunesByHSet',
97
+ // json: runeSets.RunesByHSet,
98
+ // },
99
+ // {
100
+ // constName: 'StatRunesByHSet',
101
+ // json: runeSets.StatRunesByHSet,
102
+ // },
103
+ {
104
+ constName: constant,
78
105
  comment: `Contains all Rune IDs that are known to man in the game of League of Legends. Sorted by various useful categories. There are a total of ${totalRuneAmt} runes in the game.`,
79
106
  json: {
80
107
  'PrimaryTrees': 'PrimaryTrees',
@@ -82,6 +109,9 @@ const writeToTmpFile_1 = require("./Helpers/writeToTmpFile");
82
109
  'Keystones': 'Keystones',
83
110
  'StatRunes': 'StatRunes',
84
111
  'All': 'All',
112
+ // No HSets for now
113
+ // 'RunesByHSet': 'RunesByHSet',
114
+ // 'StatRunesByHSet': 'StatRunesByHSet',
85
115
  },
86
116
  keysToSpread: [
87
117
  'PrimaryTrees',
@@ -89,6 +119,9 @@ const writeToTmpFile_1 = require("./Helpers/writeToTmpFile");
89
119
  'Keystones',
90
120
  'StatRunes',
91
121
  'All',
122
+ // No HSets for now
123
+ // 'RunesByHSet',
124
+ // 'StatRunesByHSet',
92
125
  ],
93
126
  });
94
127
  })();
@@ -17,7 +17,7 @@ export declare const DDPaths: {
17
17
  /**
18
18
  * Append with `/FlashFrost.png` (`/{abilityKey}.png`).
19
19
  */
20
- readonly SPELL_ICON_BASE: `${string}/img/spell`;
20
+ readonly ABILITY_ICON_BASE: `${string}/img/spell`;
21
21
  /**
22
22
  * Append with `/685.png` (`/{iconId}.png`).
23
23
  */
@@ -26,4 +26,12 @@ export declare const DDPaths: {
26
26
  * Append with `/1001.png` (`/{itemId}.png`).
27
27
  */
28
28
  readonly ITEM_ICON_BASE: `${string}/img/item`;
29
+ /**
30
+ * @see https://raw.communitydragon.org/latest/plugins/rcp-be-lol-game-data/global/default/v1/perk-images/statmods/
31
+ */
32
+ readonly STAT_RUNE_ICON_BASE: `${string}/plugins/rcp-be-lol-game-data/global/default/v1/perk-images/statmods`;
33
+ /**
34
+ * @see https://raw.communitydragon.org/latest/plugins/rcp-be-lol-game-data/global/default/v1/perk-images/styles/
35
+ */
36
+ readonly TREE_RUNE_ICON_BASE: `${string}/plugins/rcp-be-lol-game-data/global/default/v1/perk-images/styles`;
29
37
  };
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DDPaths = void 0;
4
4
  const version = '12.12.1';
5
5
  const base = `https://ddragon.leagueoflegends.com/cdn/${version}`;
6
+ const cdragonVersion = '12.12';
7
+ const cdragonBase = `https://raw.communitydragon.org/${cdragonVersion}`;
6
8
  /**
7
9
  * DataDragon CDN Paths.
8
10
  */
@@ -22,7 +24,7 @@ exports.DDPaths = {
22
24
  /**
23
25
  * Append with `/FlashFrost.png` (`/{abilityKey}.png`).
24
26
  */
25
- SPELL_ICON_BASE: `${base}/img/spell`,
27
+ ABILITY_ICON_BASE: `${base}/img/spell`,
26
28
  /**
27
29
  * Append with `/685.png` (`/{iconId}.png`).
28
30
  */
@@ -31,4 +33,12 @@ exports.DDPaths = {
31
33
  * Append with `/1001.png` (`/{itemId}.png`).
32
34
  */
33
35
  ITEM_ICON_BASE: `${base}/img/item`,
36
+ /**
37
+ * @see https://raw.communitydragon.org/latest/plugins/rcp-be-lol-game-data/global/default/v1/perk-images/statmods/
38
+ */
39
+ STAT_RUNE_ICON_BASE: `${cdragonBase}/plugins/rcp-be-lol-game-data/global/default/v1/perk-images/statmods`,
40
+ /**
41
+ * @see https://raw.communitydragon.org/latest/plugins/rcp-be-lol-game-data/global/default/v1/perk-images/styles/
42
+ */
43
+ TREE_RUNE_ICON_BASE: `${cdragonBase}/plugins/rcp-be-lol-game-data/global/default/v1/perk-images/styles`,
34
44
  };
@@ -0,0 +1,12 @@
1
+ import { RuneName, RuneTreeName } from '../../types';
2
+ /**
3
+ * The file names themselves of runes,
4
+ * according to https://raw.communitydragon.org.
5
+ * The file names are excluding the extension (`.png`).
6
+ *
7
+ * @see https://raw.communitydragon.org/latest/plugins/rcp-be-lol-game-data/global/default/v1/perk-images/statmods/
8
+ * @see https://raw.communitydragon.org/latest/plugins/rcp-be-lol-game-data/global/default/v1/perk-images/styles/
9
+ */
10
+ export declare const RuneIconFileNames: {
11
+ [k in (RuneName | RuneTreeName)]: string;
12
+ };
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RuneIconFileNames = void 0;
4
+ /**
5
+ * The file names themselves of runes,
6
+ * according to https://raw.communitydragon.org.
7
+ * The file names are excluding the extension (`.png`).
8
+ *
9
+ * @see https://raw.communitydragon.org/latest/plugins/rcp-be-lol-game-data/global/default/v1/perk-images/statmods/
10
+ * @see https://raw.communitydragon.org/latest/plugins/rcp-be-lol-game-data/global/default/v1/perk-images/styles/
11
+ */
12
+ exports.RuneIconFileNames = {
13
+ // ## Rune Trees
14
+ 'Precision': '7201_precision',
15
+ 'Domination': '7200_domination',
16
+ 'Sorcery': '7202_sorcery',
17
+ 'Resolve': '7204_resolve',
18
+ 'Inspiration': '7203_whimsy',
19
+ // ## Tree Runes
20
+ // ### Precision
21
+ 'Conqueror': 'conqueror',
22
+ 'Coup de Grace': 'coupdegrace',
23
+ 'Cut Down': 'cutdown',
24
+ 'Fleet Footwork': 'fleetfootwork',
25
+ 'Legend: Alacrity': 'legendalacrity',
26
+ 'Legend: Bloodline': 'legendbloodline',
27
+ 'Legend: Tenacity': 'legendtenacity',
28
+ 'Lethal Tempo': 'lethaltempotemp',
29
+ 'Presence of Mind': 'presenceofmind',
30
+ 'Press the Attack': 'presstheattack',
31
+ 'Overheal': 'overheal',
32
+ 'Triumph': 'triumph',
33
+ // ### Domination
34
+ 'Cheap Shot': 'cheapshot',
35
+ 'Dark Harvest': 'darkharvest',
36
+ 'Electrocute': 'electrocute',
37
+ 'Eyeball Collection': 'eyeballcollection',
38
+ 'Ghost Poro': 'ghostporo',
39
+ 'Hail of Blades': 'hailofblades',
40
+ 'Ingenious Hunter': 'ingenioushunter',
41
+ 'Predator': 'predator',
42
+ 'Relentless Hunter': 'relentlesshunter',
43
+ 'Sudden Impact': 'suddenimpact',
44
+ 'Taste of Blood': 'greenterror_tasteofblood',
45
+ 'Treasure Hunter': 'treasurehunter',
46
+ 'Ultimate Hunter': 'ultimatehunter',
47
+ 'Zombie Ward': 'zombieward',
48
+ // ### Sorcery
49
+ 'Absolute Focus': 'absolutefocus',
50
+ 'Arcane Comet': 'arcanecomet',
51
+ 'Celerity': 'celeritytemp',
52
+ 'Gathering Storm': 'gatheringstorm',
53
+ 'Last Stand': 'laststand',
54
+ 'Manaflow Band': 'manaflowband',
55
+ 'Nimbus Cloak': '6361',
56
+ 'Nullifying Orb': 'pokeshield',
57
+ 'Phase Rush': 'phaserush',
58
+ 'Scorch': 'scorch',
59
+ 'Summon Aery': 'summonaery',
60
+ 'Transcendence': 'transcendence',
61
+ 'Unflinching': 'unflinching',
62
+ 'Waterwalking': 'waterwalking',
63
+ // ### Resolve
64
+ 'Approach Velocity': 'approachvelocity',
65
+ 'Bone Plating': 'boneplating',
66
+ 'Conditioning': 'conditioning',
67
+ 'Demolish': 'demolish',
68
+ 'Font of Life': 'fontoflife',
69
+ 'Grasp of the Undying': 'graspoftheundying',
70
+ 'Guardian': 'guardian',
71
+ 'Shield Bash': 'mirrorshell',
72
+ 'Overgrowth': 'overgrowth',
73
+ 'Revitalize': 'revitalize',
74
+ 'Second Wind': 'secondwind',
75
+ 'Aftershock': 'veteranaftershock',
76
+ // ### Inspiration
77
+ 'Magical Footwear': 'magicalfootwear',
78
+ 'Minion Dematerializer': 'miniondematerializer',
79
+ 'Perfect Timing': 'perfecttiming',
80
+ 'Time Warp Tonic': 'timewarptonic',
81
+ 'Unsealed Spellbook': 'unsealedspellbook',
82
+ 'Biscuit Delivery': 'biscuitdelivery',
83
+ 'Cosmic Insight': 'cosmicinsight',
84
+ 'First Strike': 'firststrike',
85
+ 'Future\'s Market': 'futuresmarket',
86
+ 'Glacial Augment': 'glacialaugment',
87
+ 'Hextech Flashtraption': 'hextechflashtraption',
88
+ // ## Stat Runes
89
+ // ###
90
+ 'Offense (AF)': 'statmodsadaptiveforceicon',
91
+ 'Offense (AS)': 'statmodsattackspeedicon',
92
+ 'Offense (AH)': 'statmodscdrscalingicon',
93
+ // ###
94
+ 'Flex (AF)': 'statmodsadaptiveforceicon',
95
+ 'Flex (AR)': 'statmodsarmoricon',
96
+ 'Flex (MR)': 'statmodsmagicresicon.magicresist_fix',
97
+ // ###
98
+ 'Defense (HP)': 'statmodshealthscalingicon',
99
+ 'Defense (AR)': 'statmodsarmoricon',
100
+ 'Defense (MR)': 'statmodsmagicresicon.magicresist_fix',
101
+ };
@@ -0,0 +1,77 @@
1
+ /**
2
+ * All of the runes and their relationships to other runes in terms of picking. Only one rune can be picked in a rune horizontal-set, each main rune that has a relationship to another rune unselects the other rune if the main rune is picked.
3
+ */
4
+ export declare const RunePickingRelationships: {
5
+ readonly "5001": readonly ["5002", "5003"];
6
+ readonly "5002": readonly ["5001", "5003"];
7
+ readonly "5003": readonly ["5001", "5002"];
8
+ readonly "5005": readonly ["5007", "5008"];
9
+ readonly "5007": readonly ["5005", "5008"];
10
+ readonly "5008": readonly ["5005", "5007"];
11
+ readonly "8005": readonly ["8008", "8021", "8010"];
12
+ readonly "8008": readonly ["8005", "8021", "8010"];
13
+ readonly "8009": readonly ["9101", "9111"];
14
+ readonly "8010": readonly ["8005", "8008", "8021"];
15
+ readonly "8014": readonly ["8017", "8299"];
16
+ readonly "8017": readonly ["8014", "8299"];
17
+ readonly "8021": readonly ["8005", "8008", "8010"];
18
+ readonly "8105": readonly ["8135", "8134", "8106"];
19
+ readonly "8106": readonly ["8135", "8134", "8105"];
20
+ readonly "8112": readonly ["8124", "8128", "9923"];
21
+ readonly "8120": readonly ["8136", "8138"];
22
+ readonly "8124": readonly ["8112", "8128", "9923"];
23
+ readonly "8126": readonly ["8139", "8143"];
24
+ readonly "8128": readonly ["8112", "8124", "9923"];
25
+ readonly "8134": readonly ["8135", "8105", "8106"];
26
+ readonly "8135": readonly ["8134", "8105", "8106"];
27
+ readonly "8136": readonly ["8120", "8138"];
28
+ readonly "8138": readonly ["8136", "8120"];
29
+ readonly "8139": readonly ["8126", "8143"];
30
+ readonly "8143": readonly ["8126", "8139"];
31
+ readonly "8210": readonly ["8234", "8233"];
32
+ readonly "8214": readonly ["8229", "8230"];
33
+ readonly "8224": readonly ["8226", "8275"];
34
+ readonly "8226": readonly ["8224", "8275"];
35
+ readonly "8229": readonly ["8214", "8230"];
36
+ readonly "8230": readonly ["8214", "8229"];
37
+ readonly "8232": readonly ["8237", "8236"];
38
+ readonly "8233": readonly ["8210", "8234"];
39
+ readonly "8234": readonly ["8210", "8233"];
40
+ readonly "8236": readonly ["8237", "8232"];
41
+ readonly "8237": readonly ["8232", "8236"];
42
+ readonly "8242": readonly ["8451", "8453"];
43
+ readonly "8275": readonly ["8224", "8226"];
44
+ readonly "8299": readonly ["8014", "8017"];
45
+ readonly "8304": readonly ["8306", "8313"];
46
+ readonly "8306": readonly ["8304", "8313"];
47
+ readonly "8313": readonly ["8306", "8304"];
48
+ readonly "8316": readonly ["8321", "8345"];
49
+ readonly "8321": readonly ["8316", "8345"];
50
+ readonly "8345": readonly ["8321", "8316"];
51
+ readonly "8347": readonly ["8410", "8352"];
52
+ readonly "8351": readonly ["8360", "8369"];
53
+ readonly "8352": readonly ["8347", "8410"];
54
+ readonly "8360": readonly ["8351", "8369"];
55
+ readonly "8369": readonly ["8351", "8360"];
56
+ readonly "8401": readonly ["8446", "8463"];
57
+ readonly "8410": readonly ["8347", "8352"];
58
+ readonly "8429": readonly ["8444", "8473"];
59
+ readonly "8437": readonly ["8439", "8465"];
60
+ readonly "8439": readonly ["8437", "8465"];
61
+ readonly "8444": readonly ["8429", "8473"];
62
+ readonly "8446": readonly ["8463", "8401"];
63
+ readonly "8451": readonly ["8453", "8242"];
64
+ readonly "8453": readonly ["8451", "8242"];
65
+ readonly "8463": readonly ["8446", "8401"];
66
+ readonly "8465": readonly ["8437", "8439"];
67
+ readonly "8473": readonly ["8429", "8444"];
68
+ readonly "9101": readonly ["9111", "8009"];
69
+ readonly "9103": readonly ["9104", "9105"];
70
+ readonly "9104": readonly ["9105", "9103"];
71
+ readonly "9105": readonly ["9104", "9103"];
72
+ readonly "9111": readonly ["9101", "8009"];
73
+ readonly "9923": readonly ["8112", "8124", "8128"];
74
+ readonly "5002f": readonly ["5003f", "5008f"];
75
+ readonly "5003f": readonly ["5002f", "5008f"];
76
+ readonly "5008f": readonly ["5002f", "5003f"];
77
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RunePickingRelationships = void 0;
4
+ /**
5
+ * All of the runes and their relationships to other runes in terms of picking. Only one rune can be picked in a rune horizontal-set, each main rune that has a relationship to another rune unselects the other rune if the main rune is picked.
6
+ */
7
+ exports.RunePickingRelationships = { "5001": ["5002", "5003"], "5002": ["5001", "5003"], "5003": ["5001", "5002"], "5005": ["5007", "5008"], "5007": ["5005", "5008"], "5008": ["5005", "5007"], "8005": ["8008", "8021", "8010"], "8008": ["8005", "8021", "8010"], "8009": ["9101", "9111"], "8010": ["8005", "8008", "8021"], "8014": ["8017", "8299"], "8017": ["8014", "8299"], "8021": ["8005", "8008", "8010"], "8105": ["8135", "8134", "8106"], "8106": ["8135", "8134", "8105"], "8112": ["8124", "8128", "9923"], "8120": ["8136", "8138"], "8124": ["8112", "8128", "9923"], "8126": ["8139", "8143"], "8128": ["8112", "8124", "9923"], "8134": ["8135", "8105", "8106"], "8135": ["8134", "8105", "8106"], "8136": ["8120", "8138"], "8138": ["8136", "8120"], "8139": ["8126", "8143"], "8143": ["8126", "8139"], "8210": ["8234", "8233"], "8214": ["8229", "8230"], "8224": ["8226", "8275"], "8226": ["8224", "8275"], "8229": ["8214", "8230"], "8230": ["8214", "8229"], "8232": ["8237", "8236"], "8233": ["8210", "8234"], "8234": ["8210", "8233"], "8236": ["8237", "8232"], "8237": ["8232", "8236"], "8242": ["8451", "8453"], "8275": ["8224", "8226"], "8299": ["8014", "8017"], "8304": ["8306", "8313"], "8306": ["8304", "8313"], "8313": ["8306", "8304"], "8316": ["8321", "8345"], "8321": ["8316", "8345"], "8345": ["8321", "8316"], "8347": ["8410", "8352"], "8351": ["8360", "8369"], "8352": ["8347", "8410"], "8360": ["8351", "8369"], "8369": ["8351", "8360"], "8401": ["8446", "8463"], "8410": ["8347", "8352"], "8429": ["8444", "8473"], "8437": ["8439", "8465"], "8439": ["8437", "8465"], "8444": ["8429", "8473"], "8446": ["8463", "8401"], "8451": ["8453", "8242"], "8453": ["8451", "8242"], "8463": ["8446", "8401"], "8465": ["8437", "8439"], "8473": ["8429", "8444"], "9101": ["9111", "8009"], "9103": ["9104", "9105"], "9104": ["9105", "9103"], "9105": ["9104", "9103"], "9111": ["9101", "8009"], "9923": ["8112", "8124", "8128"], "5002f": ["5003f", "5008f"], "5003f": ["5002f", "5008f"], "5008f": ["5002f", "5003f"] };
@@ -0,0 +1,479 @@
1
+ export declare const PrimaryTrees: {
2
+ readonly Domination: {
3
+ readonly Electrocute: "8112";
4
+ readonly Predator: "8124";
5
+ readonly "Dark Harvest": "8128";
6
+ readonly "Hail of Blades": "9923";
7
+ readonly "Cheap Shot": "8126";
8
+ readonly "Taste of Blood": "8139";
9
+ readonly "Sudden Impact": "8143";
10
+ readonly "Zombie Ward": "8136";
11
+ readonly "Ghost Poro": "8120";
12
+ readonly "Eyeball Collection": "8138";
13
+ readonly "Treasure Hunter": "8135";
14
+ readonly "Ingenious Hunter": "8134";
15
+ readonly "Relentless Hunter": "8105";
16
+ readonly "Ultimate Hunter": "8106";
17
+ };
18
+ readonly Inspiration: {
19
+ readonly "Glacial Augment": "8351";
20
+ readonly "Unsealed Spellbook": "8360";
21
+ readonly "First Strike": "8369";
22
+ readonly "Hextech Flashtraption": "8306";
23
+ readonly "Magical Footwear": "8304";
24
+ readonly "Perfect Timing": "8313";
25
+ readonly "Future's Market": "8321";
26
+ readonly "Minion Dematerializer": "8316";
27
+ readonly "Biscuit Delivery": "8345";
28
+ readonly "Cosmic Insight": "8347";
29
+ readonly "Approach Velocity": "8410";
30
+ readonly "Time Warp Tonic": "8352";
31
+ };
32
+ readonly Precision: {
33
+ readonly "Press the Attack": "8005";
34
+ readonly "Lethal Tempo": "8008";
35
+ readonly "Fleet Footwork": "8021";
36
+ readonly Conqueror: "8010";
37
+ readonly Overheal: "9101";
38
+ readonly Triumph: "9111";
39
+ readonly "Presence of Mind": "8009";
40
+ readonly "Legend: Alacrity": "9104";
41
+ readonly "Legend: Tenacity": "9105";
42
+ readonly "Legend: Bloodline": "9103";
43
+ readonly "Coup de Grace": "8014";
44
+ readonly "Cut Down": "8017";
45
+ readonly "Last Stand": "8299";
46
+ };
47
+ readonly Resolve: {
48
+ readonly "Grasp of the Undying": "8437";
49
+ readonly Aftershock: "8439";
50
+ readonly Guardian: "8465";
51
+ readonly Demolish: "8446";
52
+ readonly "Font of Life": "8463";
53
+ readonly "Shield Bash": "8401";
54
+ readonly Conditioning: "8429";
55
+ readonly "Second Wind": "8444";
56
+ readonly "Bone Plating": "8473";
57
+ readonly Overgrowth: "8451";
58
+ readonly Revitalize: "8453";
59
+ readonly Unflinching: "8242";
60
+ };
61
+ readonly Sorcery: {
62
+ readonly "Summon Aery": "8214";
63
+ readonly "Arcane Comet": "8229";
64
+ readonly "Phase Rush": "8230";
65
+ readonly "Nullifying Orb": "8224";
66
+ readonly "Manaflow Band": "8226";
67
+ readonly "Nimbus Cloak": "8275";
68
+ readonly Transcendence: "8210";
69
+ readonly Celerity: "8234";
70
+ readonly "Absolute Focus": "8233";
71
+ readonly Scorch: "8237";
72
+ readonly Waterwalking: "8232";
73
+ readonly "Gathering Storm": "8236";
74
+ };
75
+ };
76
+ export declare const SecondaryTrees: {
77
+ readonly Domination: {
78
+ readonly "Cheap Shot": "8126";
79
+ readonly "Taste of Blood": "8139";
80
+ readonly "Sudden Impact": "8143";
81
+ readonly "Zombie Ward": "8136";
82
+ readonly "Ghost Poro": "8120";
83
+ readonly "Eyeball Collection": "8138";
84
+ readonly "Treasure Hunter": "8135";
85
+ readonly "Ingenious Hunter": "8134";
86
+ readonly "Relentless Hunter": "8105";
87
+ readonly "Ultimate Hunter": "8106";
88
+ };
89
+ readonly Inspiration: {
90
+ readonly "Hextech Flashtraption": "8306";
91
+ readonly "Magical Footwear": "8304";
92
+ readonly "Perfect Timing": "8313";
93
+ readonly "Future's Market": "8321";
94
+ readonly "Minion Dematerializer": "8316";
95
+ readonly "Biscuit Delivery": "8345";
96
+ readonly "Cosmic Insight": "8347";
97
+ readonly "Approach Velocity": "8410";
98
+ readonly "Time Warp Tonic": "8352";
99
+ };
100
+ readonly Precision: {
101
+ readonly Overheal: "9101";
102
+ readonly Triumph: "9111";
103
+ readonly "Presence of Mind": "8009";
104
+ readonly "Legend: Alacrity": "9104";
105
+ readonly "Legend: Tenacity": "9105";
106
+ readonly "Legend: Bloodline": "9103";
107
+ readonly "Coup de Grace": "8014";
108
+ readonly "Cut Down": "8017";
109
+ readonly "Last Stand": "8299";
110
+ };
111
+ readonly Resolve: {
112
+ readonly Demolish: "8446";
113
+ readonly "Font of Life": "8463";
114
+ readonly "Shield Bash": "8401";
115
+ readonly Conditioning: "8429";
116
+ readonly "Second Wind": "8444";
117
+ readonly "Bone Plating": "8473";
118
+ readonly Overgrowth: "8451";
119
+ readonly Revitalize: "8453";
120
+ readonly Unflinching: "8242";
121
+ };
122
+ readonly Sorcery: {
123
+ readonly "Nullifying Orb": "8224";
124
+ readonly "Manaflow Band": "8226";
125
+ readonly "Nimbus Cloak": "8275";
126
+ readonly Transcendence: "8210";
127
+ readonly Celerity: "8234";
128
+ readonly "Absolute Focus": "8233";
129
+ readonly Scorch: "8237";
130
+ readonly Waterwalking: "8232";
131
+ readonly "Gathering Storm": "8236";
132
+ };
133
+ };
134
+ export declare const Keystones: {
135
+ readonly Electrocute: "8112";
136
+ readonly Predator: "8124";
137
+ readonly "Dark Harvest": "8128";
138
+ readonly "Hail of Blades": "9923";
139
+ readonly "Glacial Augment": "8351";
140
+ readonly "Unsealed Spellbook": "8360";
141
+ readonly "First Strike": "8369";
142
+ readonly "Press the Attack": "8005";
143
+ readonly "Lethal Tempo": "8008";
144
+ readonly "Fleet Footwork": "8021";
145
+ readonly Conqueror: "8010";
146
+ readonly "Grasp of the Undying": "8437";
147
+ readonly Aftershock: "8439";
148
+ readonly Guardian: "8465";
149
+ readonly "Summon Aery": "8214";
150
+ readonly "Arcane Comet": "8229";
151
+ readonly "Phase Rush": "8230";
152
+ };
153
+ export declare const StatRunes: {
154
+ readonly "Defense (HP)": "5001";
155
+ readonly "Defense (AR)": "5002";
156
+ readonly "Defense (MR)": "5003";
157
+ readonly "Offense (AS)": "5005";
158
+ readonly "Offense (AH)": "5007";
159
+ readonly "Offense (AF)": "5008";
160
+ readonly "Flex (AR)": "5002f";
161
+ readonly "Flex (MR)": "5003f";
162
+ readonly "Flex (AF)": "5008f";
163
+ };
164
+ export declare const All: {
165
+ readonly "Defense (HP)": "5001";
166
+ readonly "Defense (AR)": "5002";
167
+ readonly "Defense (MR)": "5003";
168
+ readonly "Offense (AS)": "5005";
169
+ readonly "Offense (AH)": "5007";
170
+ readonly "Offense (AF)": "5008";
171
+ readonly "Flex (AR)": "5002f";
172
+ readonly "Flex (MR)": "5003f";
173
+ readonly "Flex (AF)": "5008f";
174
+ readonly "Glacial Augment": "8351";
175
+ readonly "Unsealed Spellbook": "8360";
176
+ readonly "First Strike": "8369";
177
+ readonly "Hextech Flashtraption": "8306";
178
+ readonly "Magical Footwear": "8304";
179
+ readonly "Perfect Timing": "8313";
180
+ readonly "Future's Market": "8321";
181
+ readonly "Minion Dematerializer": "8316";
182
+ readonly "Biscuit Delivery": "8345";
183
+ readonly "Cosmic Insight": "8347";
184
+ readonly "Approach Velocity": "8410";
185
+ readonly "Time Warp Tonic": "8352";
186
+ readonly "Grasp of the Undying": "8437";
187
+ readonly Aftershock: "8439";
188
+ readonly Guardian: "8465";
189
+ readonly Demolish: "8446";
190
+ readonly "Font of Life": "8463";
191
+ readonly "Shield Bash": "8401";
192
+ readonly Conditioning: "8429";
193
+ readonly "Second Wind": "8444";
194
+ readonly "Bone Plating": "8473";
195
+ readonly Overgrowth: "8451";
196
+ readonly Revitalize: "8453";
197
+ readonly Unflinching: "8242";
198
+ readonly "Summon Aery": "8214";
199
+ readonly "Arcane Comet": "8229";
200
+ readonly "Phase Rush": "8230";
201
+ readonly "Nullifying Orb": "8224";
202
+ readonly "Manaflow Band": "8226";
203
+ readonly "Nimbus Cloak": "8275";
204
+ readonly Transcendence: "8210";
205
+ readonly Celerity: "8234";
206
+ readonly "Absolute Focus": "8233";
207
+ readonly Scorch: "8237";
208
+ readonly Waterwalking: "8232";
209
+ readonly "Gathering Storm": "8236";
210
+ readonly Electrocute: "8112";
211
+ readonly Predator: "8124";
212
+ readonly "Dark Harvest": "8128";
213
+ readonly "Hail of Blades": "9923";
214
+ readonly "Cheap Shot": "8126";
215
+ readonly "Taste of Blood": "8139";
216
+ readonly "Sudden Impact": "8143";
217
+ readonly "Zombie Ward": "8136";
218
+ readonly "Ghost Poro": "8120";
219
+ readonly "Eyeball Collection": "8138";
220
+ readonly "Treasure Hunter": "8135";
221
+ readonly "Ingenious Hunter": "8134";
222
+ readonly "Relentless Hunter": "8105";
223
+ readonly "Ultimate Hunter": "8106";
224
+ readonly "Press the Attack": "8005";
225
+ readonly "Lethal Tempo": "8008";
226
+ readonly "Fleet Footwork": "8021";
227
+ readonly Conqueror: "8010";
228
+ readonly Overheal: "9101";
229
+ readonly Triumph: "9111";
230
+ readonly "Presence of Mind": "8009";
231
+ readonly "Legend: Alacrity": "9104";
232
+ readonly "Legend: Tenacity": "9105";
233
+ readonly "Legend: Bloodline": "9103";
234
+ readonly "Coup de Grace": "8014";
235
+ readonly "Cut Down": "8017";
236
+ readonly "Last Stand": "8299";
237
+ };
238
+ /**
239
+ * Contains all Rune IDs that are known to man in the game of League of Legends. Sorted by various useful categories. There are a total of 72 runes in the game.
240
+ */
241
+ export declare const RuneSetsByRuneNames: {
242
+ readonly PrimaryTrees: {
243
+ readonly Domination: {
244
+ readonly Electrocute: "8112";
245
+ readonly Predator: "8124";
246
+ readonly "Dark Harvest": "8128";
247
+ readonly "Hail of Blades": "9923";
248
+ readonly "Cheap Shot": "8126";
249
+ readonly "Taste of Blood": "8139";
250
+ readonly "Sudden Impact": "8143";
251
+ readonly "Zombie Ward": "8136";
252
+ readonly "Ghost Poro": "8120";
253
+ readonly "Eyeball Collection": "8138";
254
+ readonly "Treasure Hunter": "8135";
255
+ readonly "Ingenious Hunter": "8134";
256
+ readonly "Relentless Hunter": "8105";
257
+ readonly "Ultimate Hunter": "8106";
258
+ };
259
+ readonly Inspiration: {
260
+ readonly "Glacial Augment": "8351";
261
+ readonly "Unsealed Spellbook": "8360";
262
+ readonly "First Strike": "8369";
263
+ readonly "Hextech Flashtraption": "8306";
264
+ readonly "Magical Footwear": "8304";
265
+ readonly "Perfect Timing": "8313";
266
+ readonly "Future's Market": "8321";
267
+ readonly "Minion Dematerializer": "8316";
268
+ readonly "Biscuit Delivery": "8345";
269
+ readonly "Cosmic Insight": "8347";
270
+ readonly "Approach Velocity": "8410";
271
+ readonly "Time Warp Tonic": "8352";
272
+ };
273
+ readonly Precision: {
274
+ readonly "Press the Attack": "8005";
275
+ readonly "Lethal Tempo": "8008";
276
+ readonly "Fleet Footwork": "8021";
277
+ readonly Conqueror: "8010";
278
+ readonly Overheal: "9101";
279
+ readonly Triumph: "9111";
280
+ readonly "Presence of Mind": "8009";
281
+ readonly "Legend: Alacrity": "9104";
282
+ readonly "Legend: Tenacity": "9105";
283
+ readonly "Legend: Bloodline": "9103";
284
+ readonly "Coup de Grace": "8014";
285
+ readonly "Cut Down": "8017";
286
+ readonly "Last Stand": "8299";
287
+ };
288
+ readonly Resolve: {
289
+ readonly "Grasp of the Undying": "8437";
290
+ readonly Aftershock: "8439";
291
+ readonly Guardian: "8465";
292
+ readonly Demolish: "8446";
293
+ readonly "Font of Life": "8463";
294
+ readonly "Shield Bash": "8401";
295
+ readonly Conditioning: "8429";
296
+ readonly "Second Wind": "8444";
297
+ readonly "Bone Plating": "8473";
298
+ readonly Overgrowth: "8451";
299
+ readonly Revitalize: "8453";
300
+ readonly Unflinching: "8242";
301
+ };
302
+ readonly Sorcery: {
303
+ readonly "Summon Aery": "8214";
304
+ readonly "Arcane Comet": "8229";
305
+ readonly "Phase Rush": "8230";
306
+ readonly "Nullifying Orb": "8224";
307
+ readonly "Manaflow Band": "8226";
308
+ readonly "Nimbus Cloak": "8275";
309
+ readonly Transcendence: "8210";
310
+ readonly Celerity: "8234";
311
+ readonly "Absolute Focus": "8233";
312
+ readonly Scorch: "8237";
313
+ readonly Waterwalking: "8232";
314
+ readonly "Gathering Storm": "8236";
315
+ };
316
+ };
317
+ readonly SecondaryTrees: {
318
+ readonly Domination: {
319
+ readonly "Cheap Shot": "8126";
320
+ readonly "Taste of Blood": "8139";
321
+ readonly "Sudden Impact": "8143";
322
+ readonly "Zombie Ward": "8136";
323
+ readonly "Ghost Poro": "8120";
324
+ readonly "Eyeball Collection": "8138";
325
+ readonly "Treasure Hunter": "8135";
326
+ readonly "Ingenious Hunter": "8134";
327
+ readonly "Relentless Hunter": "8105";
328
+ readonly "Ultimate Hunter": "8106";
329
+ };
330
+ readonly Inspiration: {
331
+ readonly "Hextech Flashtraption": "8306";
332
+ readonly "Magical Footwear": "8304";
333
+ readonly "Perfect Timing": "8313";
334
+ readonly "Future's Market": "8321";
335
+ readonly "Minion Dematerializer": "8316";
336
+ readonly "Biscuit Delivery": "8345";
337
+ readonly "Cosmic Insight": "8347";
338
+ readonly "Approach Velocity": "8410";
339
+ readonly "Time Warp Tonic": "8352";
340
+ };
341
+ readonly Precision: {
342
+ readonly Overheal: "9101";
343
+ readonly Triumph: "9111";
344
+ readonly "Presence of Mind": "8009";
345
+ readonly "Legend: Alacrity": "9104";
346
+ readonly "Legend: Tenacity": "9105";
347
+ readonly "Legend: Bloodline": "9103";
348
+ readonly "Coup de Grace": "8014";
349
+ readonly "Cut Down": "8017";
350
+ readonly "Last Stand": "8299";
351
+ };
352
+ readonly Resolve: {
353
+ readonly Demolish: "8446";
354
+ readonly "Font of Life": "8463";
355
+ readonly "Shield Bash": "8401";
356
+ readonly Conditioning: "8429";
357
+ readonly "Second Wind": "8444";
358
+ readonly "Bone Plating": "8473";
359
+ readonly Overgrowth: "8451";
360
+ readonly Revitalize: "8453";
361
+ readonly Unflinching: "8242";
362
+ };
363
+ readonly Sorcery: {
364
+ readonly "Nullifying Orb": "8224";
365
+ readonly "Manaflow Band": "8226";
366
+ readonly "Nimbus Cloak": "8275";
367
+ readonly Transcendence: "8210";
368
+ readonly Celerity: "8234";
369
+ readonly "Absolute Focus": "8233";
370
+ readonly Scorch: "8237";
371
+ readonly Waterwalking: "8232";
372
+ readonly "Gathering Storm": "8236";
373
+ };
374
+ };
375
+ readonly Keystones: {
376
+ readonly Electrocute: "8112";
377
+ readonly Predator: "8124";
378
+ readonly "Dark Harvest": "8128";
379
+ readonly "Hail of Blades": "9923";
380
+ readonly "Glacial Augment": "8351";
381
+ readonly "Unsealed Spellbook": "8360";
382
+ readonly "First Strike": "8369";
383
+ readonly "Press the Attack": "8005";
384
+ readonly "Lethal Tempo": "8008";
385
+ readonly "Fleet Footwork": "8021";
386
+ readonly Conqueror: "8010";
387
+ readonly "Grasp of the Undying": "8437";
388
+ readonly Aftershock: "8439";
389
+ readonly Guardian: "8465";
390
+ readonly "Summon Aery": "8214";
391
+ readonly "Arcane Comet": "8229";
392
+ readonly "Phase Rush": "8230";
393
+ };
394
+ readonly StatRunes: {
395
+ readonly "Defense (HP)": "5001";
396
+ readonly "Defense (AR)": "5002";
397
+ readonly "Defense (MR)": "5003";
398
+ readonly "Offense (AS)": "5005";
399
+ readonly "Offense (AH)": "5007";
400
+ readonly "Offense (AF)": "5008";
401
+ readonly "Flex (AR)": "5002f";
402
+ readonly "Flex (MR)": "5003f";
403
+ readonly "Flex (AF)": "5008f";
404
+ };
405
+ readonly All: {
406
+ readonly "Defense (HP)": "5001";
407
+ readonly "Defense (AR)": "5002";
408
+ readonly "Defense (MR)": "5003";
409
+ readonly "Offense (AS)": "5005";
410
+ readonly "Offense (AH)": "5007";
411
+ readonly "Offense (AF)": "5008";
412
+ readonly "Flex (AR)": "5002f";
413
+ readonly "Flex (MR)": "5003f";
414
+ readonly "Flex (AF)": "5008f";
415
+ readonly "Glacial Augment": "8351";
416
+ readonly "Unsealed Spellbook": "8360";
417
+ readonly "First Strike": "8369";
418
+ readonly "Hextech Flashtraption": "8306";
419
+ readonly "Magical Footwear": "8304";
420
+ readonly "Perfect Timing": "8313";
421
+ readonly "Future's Market": "8321";
422
+ readonly "Minion Dematerializer": "8316";
423
+ readonly "Biscuit Delivery": "8345";
424
+ readonly "Cosmic Insight": "8347";
425
+ readonly "Approach Velocity": "8410";
426
+ readonly "Time Warp Tonic": "8352";
427
+ readonly "Grasp of the Undying": "8437";
428
+ readonly Aftershock: "8439";
429
+ readonly Guardian: "8465";
430
+ readonly Demolish: "8446";
431
+ readonly "Font of Life": "8463";
432
+ readonly "Shield Bash": "8401";
433
+ readonly Conditioning: "8429";
434
+ readonly "Second Wind": "8444";
435
+ readonly "Bone Plating": "8473";
436
+ readonly Overgrowth: "8451";
437
+ readonly Revitalize: "8453";
438
+ readonly Unflinching: "8242";
439
+ readonly "Summon Aery": "8214";
440
+ readonly "Arcane Comet": "8229";
441
+ readonly "Phase Rush": "8230";
442
+ readonly "Nullifying Orb": "8224";
443
+ readonly "Manaflow Band": "8226";
444
+ readonly "Nimbus Cloak": "8275";
445
+ readonly Transcendence: "8210";
446
+ readonly Celerity: "8234";
447
+ readonly "Absolute Focus": "8233";
448
+ readonly Scorch: "8237";
449
+ readonly Waterwalking: "8232";
450
+ readonly "Gathering Storm": "8236";
451
+ readonly Electrocute: "8112";
452
+ readonly Predator: "8124";
453
+ readonly "Dark Harvest": "8128";
454
+ readonly "Hail of Blades": "9923";
455
+ readonly "Cheap Shot": "8126";
456
+ readonly "Taste of Blood": "8139";
457
+ readonly "Sudden Impact": "8143";
458
+ readonly "Zombie Ward": "8136";
459
+ readonly "Ghost Poro": "8120";
460
+ readonly "Eyeball Collection": "8138";
461
+ readonly "Treasure Hunter": "8135";
462
+ readonly "Ingenious Hunter": "8134";
463
+ readonly "Relentless Hunter": "8105";
464
+ readonly "Ultimate Hunter": "8106";
465
+ readonly "Press the Attack": "8005";
466
+ readonly "Lethal Tempo": "8008";
467
+ readonly "Fleet Footwork": "8021";
468
+ readonly Conqueror: "8010";
469
+ readonly Overheal: "9101";
470
+ readonly Triumph: "9111";
471
+ readonly "Presence of Mind": "8009";
472
+ readonly "Legend: Alacrity": "9104";
473
+ readonly "Legend: Tenacity": "9105";
474
+ readonly "Legend: Bloodline": "9103";
475
+ readonly "Coup de Grace": "8014";
476
+ readonly "Cut Down": "8017";
477
+ readonly "Last Stand": "8299";
478
+ };
479
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RuneSetsByRuneNames = exports.All = exports.StatRunes = exports.Keystones = exports.SecondaryTrees = exports.PrimaryTrees = void 0;
4
+ exports.PrimaryTrees = { "Domination": { "Electrocute": "8112", "Predator": "8124", "Dark Harvest": "8128", "Hail of Blades": "9923", "Cheap Shot": "8126", "Taste of Blood": "8139", "Sudden Impact": "8143", "Zombie Ward": "8136", "Ghost Poro": "8120", "Eyeball Collection": "8138", "Treasure Hunter": "8135", "Ingenious Hunter": "8134", "Relentless Hunter": "8105", "Ultimate Hunter": "8106" }, "Inspiration": { "Glacial Augment": "8351", "Unsealed Spellbook": "8360", "First Strike": "8369", "Hextech Flashtraption": "8306", "Magical Footwear": "8304", "Perfect Timing": "8313", "Future's Market": "8321", "Minion Dematerializer": "8316", "Biscuit Delivery": "8345", "Cosmic Insight": "8347", "Approach Velocity": "8410", "Time Warp Tonic": "8352" }, "Precision": { "Press the Attack": "8005", "Lethal Tempo": "8008", "Fleet Footwork": "8021", "Conqueror": "8010", "Overheal": "9101", "Triumph": "9111", "Presence of Mind": "8009", "Legend: Alacrity": "9104", "Legend: Tenacity": "9105", "Legend: Bloodline": "9103", "Coup de Grace": "8014", "Cut Down": "8017", "Last Stand": "8299" }, "Resolve": { "Grasp of the Undying": "8437", "Aftershock": "8439", "Guardian": "8465", "Demolish": "8446", "Font of Life": "8463", "Shield Bash": "8401", "Conditioning": "8429", "Second Wind": "8444", "Bone Plating": "8473", "Overgrowth": "8451", "Revitalize": "8453", "Unflinching": "8242" }, "Sorcery": { "Summon Aery": "8214", "Arcane Comet": "8229", "Phase Rush": "8230", "Nullifying Orb": "8224", "Manaflow Band": "8226", "Nimbus Cloak": "8275", "Transcendence": "8210", "Celerity": "8234", "Absolute Focus": "8233", "Scorch": "8237", "Waterwalking": "8232", "Gathering Storm": "8236" } };
5
+ exports.SecondaryTrees = { "Domination": { "Cheap Shot": "8126", "Taste of Blood": "8139", "Sudden Impact": "8143", "Zombie Ward": "8136", "Ghost Poro": "8120", "Eyeball Collection": "8138", "Treasure Hunter": "8135", "Ingenious Hunter": "8134", "Relentless Hunter": "8105", "Ultimate Hunter": "8106" }, "Inspiration": { "Hextech Flashtraption": "8306", "Magical Footwear": "8304", "Perfect Timing": "8313", "Future's Market": "8321", "Minion Dematerializer": "8316", "Biscuit Delivery": "8345", "Cosmic Insight": "8347", "Approach Velocity": "8410", "Time Warp Tonic": "8352" }, "Precision": { "Overheal": "9101", "Triumph": "9111", "Presence of Mind": "8009", "Legend: Alacrity": "9104", "Legend: Tenacity": "9105", "Legend: Bloodline": "9103", "Coup de Grace": "8014", "Cut Down": "8017", "Last Stand": "8299" }, "Resolve": { "Demolish": "8446", "Font of Life": "8463", "Shield Bash": "8401", "Conditioning": "8429", "Second Wind": "8444", "Bone Plating": "8473", "Overgrowth": "8451", "Revitalize": "8453", "Unflinching": "8242" }, "Sorcery": { "Nullifying Orb": "8224", "Manaflow Band": "8226", "Nimbus Cloak": "8275", "Transcendence": "8210", "Celerity": "8234", "Absolute Focus": "8233", "Scorch": "8237", "Waterwalking": "8232", "Gathering Storm": "8236" } };
6
+ exports.Keystones = { "Electrocute": "8112", "Predator": "8124", "Dark Harvest": "8128", "Hail of Blades": "9923", "Glacial Augment": "8351", "Unsealed Spellbook": "8360", "First Strike": "8369", "Press the Attack": "8005", "Lethal Tempo": "8008", "Fleet Footwork": "8021", "Conqueror": "8010", "Grasp of the Undying": "8437", "Aftershock": "8439", "Guardian": "8465", "Summon Aery": "8214", "Arcane Comet": "8229", "Phase Rush": "8230" };
7
+ exports.StatRunes = { "Defense (HP)": "5001", "Defense (AR)": "5002", "Defense (MR)": "5003", "Offense (AS)": "5005", "Offense (AH)": "5007", "Offense (AF)": "5008", "Flex (AR)": "5002f", "Flex (MR)": "5003f", "Flex (AF)": "5008f" };
8
+ exports.All = { ...exports.PrimaryTrees.Precision, ...exports.PrimaryTrees.Domination, ...exports.PrimaryTrees.Sorcery, ...exports.PrimaryTrees.Resolve, ...exports.PrimaryTrees.Inspiration, ...exports.StatRunes };
9
+ /**
10
+ * Contains all Rune IDs that are known to man in the game of League of Legends. Sorted by various useful categories. There are a total of 72 runes in the game.
11
+ */
12
+ exports.RuneSetsByRuneNames = { PrimaryTrees: exports.PrimaryTrees, SecondaryTrees: exports.SecondaryTrees, Keystones: exports.Keystones, StatRunes: exports.StatRunes, All: exports.All };
@@ -0,0 +1,6 @@
1
+ import { RuneName, RuneTreeName } from '../../types';
2
+ /**
3
+ * Bsaed on rune name,
4
+ * returns a CDN URL for the icon of that rune.
5
+ */
6
+ export declare function getRuneCDNURL(name: RuneName | RuneTreeName): string;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRuneCDNURL = void 0;
4
+ const DDPaths_1 = require("../../Constants/DDPaths");
5
+ const RuneIconFileNames_1 = require("../../Constants/Runes/RuneIconFileNames");
6
+ const getRuneCategoryByRuneName_1 = require("./getRuneCategoryByRuneName");
7
+ const isRuneTreeName_1 = require("./isRuneTreeName");
8
+ const isStatRuneName_1 = require("./isStatRuneName");
9
+ /**
10
+ * Bsaed on rune name,
11
+ * returns a CDN URL for the icon of that rune.
12
+ */
13
+ function getRuneCDNURL(name) {
14
+ // Choose the appropriate base path
15
+ const base = (0, isStatRuneName_1.isStatRuneName)(name)
16
+ ? DDPaths_1.DDPaths.STAT_RUNE_ICON_BASE
17
+ : DDPaths_1.DDPaths.TREE_RUNE_ICON_BASE;
18
+ // Already sufficient enough response for a rune tree name
19
+ if ((0, isRuneTreeName_1.isRuneTreeName)(name))
20
+ return `${base}/${RuneIconFileNames_1.RuneIconFileNames[name]}.png`;
21
+ // And stat runes
22
+ if ((0, isStatRuneName_1.isStatRuneName)(name))
23
+ return `${base}/${RuneIconFileNames_1.RuneIconFileNames[name]}.png`;
24
+ // Finish for tree rune names
25
+ let category = (0, getRuneCategoryByRuneName_1.getRuneCategoryByRuneName)(name);
26
+ // Remove spaces, colons, apostrophes and make lowercase
27
+ let runeTreeFolder = category.replaceAll(' ', '').toLowerCase();
28
+ let runeFolder = name.replaceAll(/[ :']/g, '').toLowerCase();
29
+ // Some runes, for whatever reason, are displaced and badly organized.
30
+ // Therefore we are going to add special cases to these runes.
31
+ switch (name) {
32
+ case 'Triumph':
33
+ case 'Overheal':
34
+ runeFolder = '';
35
+ break;
36
+ case 'Last Stand':
37
+ runeTreeFolder = 'sorcery';
38
+ break;
39
+ case 'Aftershock':
40
+ runeFolder = 'veteranaftershock';
41
+ break;
42
+ case 'Shield Bash':
43
+ runeFolder = 'mirrorshell';
44
+ break;
45
+ case 'Unflinching':
46
+ runeTreeFolder = 'sorcery';
47
+ break;
48
+ case 'Approach Velocity':
49
+ runeTreeFolder = 'resolve';
50
+ }
51
+ return `${base}/${runeTreeFolder}/${runeFolder}/${RuneIconFileNames_1.RuneIconFileNames[name]}.png`;
52
+ }
53
+ exports.getRuneCDNURL = getRuneCDNURL;
@@ -0,0 +1,5 @@
1
+ import { RuneName, RuneTreeName, StatRunesCategory } from '../../types';
2
+ /**
3
+ * Returns the name of the Rune Tree that the Rune belongs to.
4
+ */
5
+ export declare function getRuneCategoryByRuneName(name: RuneName): RuneTreeName | StatRunesCategory;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRuneCategoryByRuneName = void 0;
4
+ const RuneSetsByRuneNames_1 = require("../../Constants/Runes/RuneSetsByRuneNames");
5
+ const StatRuneNames_1 = require("../../Constants/Runes/StatRuneNames");
6
+ /**
7
+ * Returns the name of the Rune Tree that the Rune belongs to.
8
+ */
9
+ function getRuneCategoryByRuneName(name) {
10
+ // Start with StatRunes because it is the tiniest of all
11
+ if (name in StatRuneNames_1.StatRuneNames)
12
+ return 'StatRunes';
13
+ // Continue on with the rest of the runes
14
+ if (name in RuneSetsByRuneNames_1.PrimaryTrees.Precision)
15
+ return 'Precision';
16
+ if (name in RuneSetsByRuneNames_1.PrimaryTrees.Domination)
17
+ return 'Domination';
18
+ if (name in RuneSetsByRuneNames_1.PrimaryTrees.Sorcery)
19
+ return 'Sorcery';
20
+ if (name in RuneSetsByRuneNames_1.PrimaryTrees.Resolve)
21
+ return 'Resolve';
22
+ if (name in RuneSetsByRuneNames_1.PrimaryTrees.Inspiration)
23
+ return 'Inspiration';
24
+ // Note: It should be impossible to reach code this far
25
+ // so long as constants are not missing any values,
26
+ // and `name` is truly of type `RuneName`.
27
+ return 'Precision';
28
+ }
29
+ exports.getRuneCategoryByRuneName = getRuneCategoryByRuneName;
package/dist/index.d.ts CHANGED
@@ -5,9 +5,11 @@ export { ChampionKeys } from './Constants/Champions/ChampionKeys';
5
5
  export { ChampionNames } from './Constants/Champions/ChampionNames';
6
6
  export { ItemKeys } from './Constants/Items/ItemKeys';
7
7
  export { ItemNames } from './Constants/Items/ItemNames';
8
+ export { RuneIconFileNames } from './Constants/Runes/RuneIconFileNames';
8
9
  export { RuneIds } from './Constants/Runes/RuneIds';
9
10
  export { RuneNames } from './Constants/Runes/RuneNames';
10
11
  export { RuneSets } from './Constants/Runes/RuneSets';
12
+ export { RuneSetsByRuneNames } from './Constants/Runes/RuneSetsByRuneNames';
11
13
  export { RuneTreeIds } from './Constants/Runes/RuneTreeIds';
12
14
  export { RuneTreeNames } from './Constants/Runes/RuneTreeNames';
13
15
  export { StatRuneIds } from './Constants/Runes/StatRuneIds';
@@ -30,6 +32,8 @@ export { getItemKeyByName } from './Helpers/Items/getItemKeyByName';
30
32
  export { getItemNameByKey } from './Helpers/Items/getItemNameByKey';
31
33
  export { isItemKey } from './Helpers/Items/isItemKey';
32
34
  export { isItemName } from './Helpers/Items/isItemName';
35
+ export { getRuneCategoryByRuneName } from './Helpers/Runes/getRuneCategoryByRuneName';
36
+ export { getRuneCDNURL } from './Helpers/Runes/getRuneCDNURL';
33
37
  export { getRuneIdByName } from './Helpers/Runes/getRuneIdByName';
34
38
  export { getRuneNameById } from './Helpers/Runes/getRuneNameById';
35
39
  export { getStatRuneIdByName } from './Helpers/Runes/getStatRuneIdByName';
package/dist/index.js CHANGED
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.isStatRuneName = exports.isStatRuneId = exports.isSorceryTreeRuneId = exports.isRuneTreeName = exports.isRuneTreeId = exports.isRuneName = exports.isRuneId = exports.isResolveTreeRuneId = exports.isPrecisionTreeRuneId = exports.isKeystoneRuneId = exports.isInspirationTreeRuneId = exports.isDominationTreeRuneId = exports.getTreeRuneNameById = exports.getTreeRuneIdByName = exports.getStatRuneNameById = exports.getStatRuneIdByName = exports.getRuneNameById = exports.getRuneIdByName = exports.isItemName = exports.isItemKey = exports.getItemNameByKey = exports.getItemKeyByName = exports.isChampionName = exports.isChampionKey = exports.isChampionId = exports.getChampionNameById = exports.getChampionKeyByName = exports.getChampionKeyById = exports.getChampionIdByName = exports.getChampionIdByKey = exports.SpellNames = exports.SpellKeys = exports.SpellIdsByName = exports.SpellIds = exports.TreeRuneNames = exports.TreeRuneIds = exports.StatRuneNames = exports.StatRuneIds = exports.RuneTreeNames = exports.RuneTreeIds = exports.RuneSets = exports.RuneNames = exports.RuneIds = exports.ItemNames = exports.ItemKeys = exports.ChampionNames = exports.ChampionKeys = exports.ChampionIdsByName = exports.ChampionIds = exports.DDPaths = void 0;
18
- exports.isSpellName = exports.isSpellKey = exports.isSpellId = exports.getSpellNameByKey = exports.getSpellNameById = exports.getSpellKeyByName = exports.getSpellKeyById = exports.getSpellIdByName = exports.getSpellIdByKey = exports.isTreeRuneName = exports.isTreeRuneId = void 0;
17
+ exports.isRuneTreeId = exports.isRuneName = exports.isRuneId = exports.isResolveTreeRuneId = exports.isPrecisionTreeRuneId = exports.isKeystoneRuneId = exports.isInspirationTreeRuneId = exports.isDominationTreeRuneId = exports.getTreeRuneNameById = exports.getTreeRuneIdByName = exports.getStatRuneNameById = exports.getStatRuneIdByName = exports.getRuneNameById = exports.getRuneIdByName = exports.getRuneCDNURL = exports.getRuneCategoryByRuneName = exports.isItemName = exports.isItemKey = exports.getItemNameByKey = exports.getItemKeyByName = exports.isChampionName = exports.isChampionKey = exports.isChampionId = exports.getChampionNameById = exports.getChampionKeyByName = exports.getChampionKeyById = exports.getChampionIdByName = exports.getChampionIdByKey = exports.SpellNames = exports.SpellKeys = exports.SpellIdsByName = exports.SpellIds = exports.TreeRuneNames = exports.TreeRuneIds = exports.StatRuneNames = exports.StatRuneIds = exports.RuneTreeNames = exports.RuneTreeIds = exports.RuneSetsByRuneNames = exports.RuneSets = exports.RuneNames = exports.RuneIds = exports.RuneIconFileNames = exports.ItemNames = exports.ItemKeys = exports.ChampionNames = exports.ChampionKeys = exports.ChampionIdsByName = exports.ChampionIds = exports.DDPaths = void 0;
18
+ exports.isSpellName = exports.isSpellKey = exports.isSpellId = exports.getSpellNameByKey = exports.getSpellNameById = exports.getSpellKeyByName = exports.getSpellKeyById = exports.getSpellIdByName = exports.getSpellIdByKey = exports.isTreeRuneName = exports.isTreeRuneId = exports.isStatRuneName = exports.isStatRuneId = exports.isSorceryTreeRuneId = exports.isRuneTreeName = void 0;
19
19
  // # Constants
20
20
  var DDPaths_1 = require("./Constants/DDPaths");
21
21
  Object.defineProperty(exports, "DDPaths", { enumerable: true, get: function () { return DDPaths_1.DDPaths; } });
@@ -34,12 +34,16 @@ Object.defineProperty(exports, "ItemKeys", { enumerable: true, get: function ()
34
34
  var ItemNames_1 = require("./Constants/Items/ItemNames");
35
35
  Object.defineProperty(exports, "ItemNames", { enumerable: true, get: function () { return ItemNames_1.ItemNames; } });
36
36
  // ## Runes
37
+ var RuneIconFileNames_1 = require("./Constants/Runes/RuneIconFileNames");
38
+ Object.defineProperty(exports, "RuneIconFileNames", { enumerable: true, get: function () { return RuneIconFileNames_1.RuneIconFileNames; } });
37
39
  var RuneIds_1 = require("./Constants/Runes/RuneIds");
38
40
  Object.defineProperty(exports, "RuneIds", { enumerable: true, get: function () { return RuneIds_1.RuneIds; } });
39
41
  var RuneNames_1 = require("./Constants/Runes/RuneNames");
40
42
  Object.defineProperty(exports, "RuneNames", { enumerable: true, get: function () { return RuneNames_1.RuneNames; } });
41
43
  var RuneSets_1 = require("./Constants/Runes/RuneSets");
42
44
  Object.defineProperty(exports, "RuneSets", { enumerable: true, get: function () { return RuneSets_1.RuneSets; } });
45
+ var RuneSetsByRuneNames_1 = require("./Constants/Runes/RuneSetsByRuneNames");
46
+ Object.defineProperty(exports, "RuneSetsByRuneNames", { enumerable: true, get: function () { return RuneSetsByRuneNames_1.RuneSetsByRuneNames; } });
43
47
  var RuneTreeIds_1 = require("./Constants/Runes/RuneTreeIds");
44
48
  Object.defineProperty(exports, "RuneTreeIds", { enumerable: true, get: function () { return RuneTreeIds_1.RuneTreeIds; } });
45
49
  var RuneTreeNames_1 = require("./Constants/Runes/RuneTreeNames");
@@ -89,6 +93,10 @@ Object.defineProperty(exports, "isItemKey", { enumerable: true, get: function ()
89
93
  var isItemName_1 = require("./Helpers/Items/isItemName");
90
94
  Object.defineProperty(exports, "isItemName", { enumerable: true, get: function () { return isItemName_1.isItemName; } });
91
95
  // ## Runes
96
+ var getRuneCategoryByRuneName_1 = require("./Helpers/Runes/getRuneCategoryByRuneName");
97
+ Object.defineProperty(exports, "getRuneCategoryByRuneName", { enumerable: true, get: function () { return getRuneCategoryByRuneName_1.getRuneCategoryByRuneName; } });
98
+ var getRuneCDNURL_1 = require("./Helpers/Runes/getRuneCDNURL");
99
+ Object.defineProperty(exports, "getRuneCDNURL", { enumerable: true, get: function () { return getRuneCDNURL_1.getRuneCDNURL; } });
92
100
  var getRuneIdByName_1 = require("./Helpers/Runes/getRuneIdByName");
93
101
  Object.defineProperty(exports, "getRuneIdByName", { enumerable: true, get: function () { return getRuneIdByName_1.getRuneIdByName; } });
94
102
  var getRuneNameById_1 = require("./Helpers/Runes/getRuneNameById");
@@ -20,6 +20,7 @@ import { RuneTreeTypes } from '../Constants/Runes/RuneTreeTypes';
20
20
  import { Levels } from '../Constants/Levels';
21
21
  import { Skills } from '../Constants/Skills';
22
22
  import { RuneTreeIds } from '../Constants/Runes/RuneTreeIds';
23
+ import { RuneSetsByRuneNames } from '../Constants/Runes/RuneSetsByRuneNames';
23
24
  export declare type ChampionId = typeof ChampionIds[keyof typeof ChampionIds];
24
25
  export declare type ChampionKey = typeof ChampionKeys[keyof typeof ChampionKeys];
25
26
  export declare type ChampionName = typeof ChampionNames[keyof typeof ChampionNames];
@@ -91,6 +92,7 @@ export declare type StatRuneName = typeof StatRuneNames[keyof typeof StatRuneNam
91
92
  * - `InspirationTreeRuneId`,
92
93
  */
93
94
  export declare type KeystoneRuneId = keyof typeof RuneSets.Keystones;
95
+ export declare type KeystoneRuneName = keyof typeof RuneSetsByRuneNames.Keystones;
94
96
  /**
95
97
  * There are 3 main Rune ID types:
96
98
  * - `RuneId` (all),
@@ -106,6 +108,7 @@ export declare type KeystoneRuneId = keyof typeof RuneSets.Keystones;
106
108
  * - `InspirationTreeRuneId`,
107
109
  */
108
110
  export declare type PrecisionTreeRuneId = keyof typeof RuneSets.PrimaryTrees.Precision;
111
+ export declare type PrecisionTreeRuneName = keyof typeof RuneSetsByRuneNames.PrimaryTrees.Precision;
109
112
  /**
110
113
  * There are 3 main Rune ID types:
111
114
  * - `RuneId` (all),
@@ -121,6 +124,7 @@ export declare type PrecisionTreeRuneId = keyof typeof RuneSets.PrimaryTrees.Pre
121
124
  * - `InspirationTreeRuneId`,
122
125
  */
123
126
  export declare type DominationTreeRuneId = keyof typeof RuneSets.PrimaryTrees.Domination;
127
+ export declare type DominationTreeRuneName = keyof typeof RuneSetsByRuneNames.PrimaryTrees.Domination;
124
128
  /**
125
129
  * There are 3 main Rune ID types:
126
130
  * - `RuneId` (all),
@@ -136,6 +140,7 @@ export declare type DominationTreeRuneId = keyof typeof RuneSets.PrimaryTrees.Do
136
140
  * - `InspirationTreeRuneId`,
137
141
  */
138
142
  export declare type SorceryTreeRuneId = keyof typeof RuneSets.PrimaryTrees.Sorcery;
143
+ export declare type SorceryTreeRuneName = keyof typeof RuneSetsByRuneNames.PrimaryTrees.Sorcery;
139
144
  /**
140
145
  * There are 3 main Rune ID types:
141
146
  * - `RuneId` (all),
@@ -151,6 +156,7 @@ export declare type SorceryTreeRuneId = keyof typeof RuneSets.PrimaryTrees.Sorce
151
156
  * - `InspirationTreeRuneId`,
152
157
  */
153
158
  export declare type ResolveTreeRuneId = keyof typeof RuneSets.PrimaryTrees.Resolve;
159
+ export declare type ResolveTreeRuneName = keyof typeof RuneSetsByRuneNames.PrimaryTrees.Resolve;
154
160
  /**
155
161
  * There are 3 main Rune ID types:
156
162
  * - `RuneId` (all),
@@ -166,9 +172,11 @@ export declare type ResolveTreeRuneId = keyof typeof RuneSets.PrimaryTrees.Resol
166
172
  * - `InspirationTreeRuneId`,
167
173
  */
168
174
  export declare type InspirationTreeRuneId = keyof typeof RuneSets.PrimaryTrees.Inspiration;
175
+ export declare type InspirationTreeRuneName = keyof typeof RuneSetsByRuneNames.PrimaryTrees.Inspiration;
169
176
  export declare type RuneTreeId = typeof RuneTreeIds[keyof typeof RuneTreeIds];
170
177
  export declare type RuneTreeName = typeof RuneTreeNames[keyof typeof RuneTreeNames];
171
178
  export declare type RuneTreeType = keyof typeof RuneTreeTypes;
179
+ export declare type StatRunesCategory = 'StatRunes';
172
180
  export declare type Position = keyof typeof Positions;
173
181
  export declare type Lane = keyof typeof Lanes;
174
182
  export declare type Level = keyof typeof Levels;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lol-constants",
3
- "version": "1.2.3",
3
+ "version": "1.4.0",
4
4
  "description": "League of Legends constants and data resources, such as champion, item, runes reforged, summoner spells.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -12,10 +12,12 @@
12
12
  "scripts": {
13
13
  "clean-build": "rmdir /s /q dist && tsc",
14
14
  "clean-build-assets": "rmdir /s /q assets && cd srcAssets && tsc",
15
- "generate": "node assets/scripts/generate-all"
15
+ "generate": "node assets/scripts/generate-all",
16
+ "dev": "vite"
16
17
  },
17
18
  "devDependencies": {
18
- "@types/node": "^17.0.42"
19
+ "@types/node": "^17.0.42",
20
+ "vite": "^2.9.13"
19
21
  },
20
22
  "repository": {
21
23
  "type": "git",