Advertisement
sparkychild

Smart Learnsets script

Oct 6th, 2020
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.10 KB | None | 0 0
  1. import {Learnsets} from '../../learnsets';
  2.  
  3. function mergeSets(set1: ModdedLearnsetData, set2: LearnsetData): ModdedLearnsetData {
  4. const keys1 = Object.keys(set1);
  5. const keys2 = Object.keys(set2);
  6.  
  7. let merged: AnyObject = {};
  8. const uniqueKeys1 = keys1.filter(k => !keys2.includes(k));
  9. const uniqueKeys2 = keys2.filter(k => !keys1.includes(k));
  10.  
  11. const allUniqueKeys = [...uniqueKeys1, ...uniqueKeys2];
  12. const commonKeys = [...keys1, ...keys2].filter(k => !allUniqueKeys.includes(k));
  13.  
  14. // deal with unique keys first
  15. for (const key of uniqueKeys1) {
  16. merged[key] = set1[key];
  17. }
  18. for (const key of uniqueKeys2) {
  19. merged[key] = set2[key];
  20. }
  21.  
  22. // merge the data of each common key
  23. // set 1 takes precedence
  24. for (const key of commonKeys) {
  25. merged[key] = set2[key];
  26.  
  27. for (const subkey in set1[key]) {
  28. if (set1[key][subkey] === 'false') {
  29. // notation for removing the data from the learnset
  30. delete merged[key][subkey];
  31. } else {
  32. merged[key][subkey] = set1[key][subkey];
  33. }
  34. }
  35. }
  36.  
  37. return merged;
  38. }
  39.  
  40. const ModdedLearnsets: {[k: string]: ModdedLearnsetData} = {
  41. octillery: {
  42. learnset: {
  43. octoshot: ['8T'],
  44. }
  45. },
  46. silvally: {
  47. learnset: {
  48. recover: ['8T'],
  49. },
  50. },
  51.  
  52. beartic: {
  53. learnset: {
  54. suckerpunch: ["8T"],
  55. iceshard: ["8T"],
  56. feint: ["8T"],
  57. crunch: ["8T"],
  58. flipturn: ["8T"],
  59. camoflauge: ["8T"],
  60. shadowsneak: ["8T"],
  61. feintattack: ['8T'],
  62. },
  63. encounters: [
  64. {generation: 6, level: 30},
  65. ],
  66. },
  67.  
  68. beheeyem: {
  69. learnset: {
  70. powergem: ['8T'],
  71. dazzlinggleam: ['8T'],
  72. },
  73. },
  74.  
  75. delibird: {
  76. learnset: {
  77. seasonalsmash: ["8T"],
  78. },
  79. },
  80. solrock: {
  81. learnset: {
  82. solarblade: ["8T"],
  83. dazzlinggleam: ["8T"],
  84. flamewheel: ["8T"],
  85. rapidspin: ["8T"],
  86. scorchingsands: ["8T"],
  87. },
  88. },
  89. };
  90.  
  91. let MergedLearnsets: {[k: string]: ModdedLearnsetData} = {};
  92.  
  93. for (const key in ModdedLearnsets) {
  94. const mod = ModdedLearnsets[key];
  95. const base = Learnsets[key];
  96. MergedLearnsets[key] = mergeSets(mod, (base || {}) as LearnsetData);
  97. }
  98.  
  99. exports.Learnsets = MergedLearnsets;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement