qpremake 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/README.md +184 -0
  2. package/lib/_localizationFiles/English.d.ts +2 -0
  3. package/lib/_localizationFiles/English.js +307 -0
  4. package/lib/_mods/parserModules/addSymbol.d.ts +7 -0
  5. package/lib/_mods/parserModules/addSymbol.js +18 -0
  6. package/lib/_mods/parserModules/expression.d.ts +7 -0
  7. package/lib/_mods/parserModules/expression.js +45 -0
  8. package/lib/_mods/parserModules/expression_parser.d.ts +143 -0
  9. package/lib/_mods/parserModules/expression_parser.js +728 -0
  10. package/lib/_mods/parserModules/img.d.ts +8 -0
  11. package/lib/_mods/parserModules/img.js +42 -0
  12. package/lib/_mods/parserModules/qpOriginal.d.ts +5 -0
  13. package/lib/_mods/parserModules/qpOriginal.js +27 -0
  14. package/lib/_mods/parserModules/sectionID.d.ts +13 -0
  15. package/lib/_mods/parserModules/sectionID.js +56 -0
  16. package/lib/_mods/parserModules/tags.d.ts +9 -0
  17. package/lib/_mods/parserModules/tags.js +29 -0
  18. package/lib/_mods/parserModules/uaddminus.d.ts +9 -0
  19. package/lib/_mods/parserModules/uaddminus.js +42 -0
  20. package/lib/_mods/parserModules/variantCheck.d.ts +10 -0
  21. package/lib/_mods/parserModules/variantCheck.js +53 -0
  22. package/lib/_queenSystem/handler/actionGenrator.d.ts +994 -0
  23. package/lib/_queenSystem/handler/actionGenrator.js +646 -0
  24. package/lib/_queenSystem/handler/actionInputGenerator.d.ts +95 -0
  25. package/lib/_queenSystem/handler/actionInputGenerator.js +373 -0
  26. package/lib/_queenSystem/handler/actionInputRequesterGenerator.d.ts +92 -0
  27. package/lib/_queenSystem/handler/actionInputRequesterGenerator.js +341 -0
  28. package/lib/_queenSystem/handler/cardHandler.d.ts +20 -0
  29. package/lib/_queenSystem/handler/cardHandler.js +61 -0
  30. package/lib/_queenSystem/handler/effectGenerator.d.ts +1 -0
  31. package/lib/_queenSystem/handler/effectGenerator.js +127 -0
  32. package/lib/_queenSystem/handler/localizationHandler.d.ts +28 -0
  33. package/lib/_queenSystem/handler/localizationHandler.js +166 -0
  34. package/lib/_queenSystem/handler/modHandler.d.ts +10 -0
  35. package/lib/_queenSystem/handler/modHandler.js +36 -0
  36. package/lib/_queenSystem/handler/oldDataProcessor.d.ts +9 -0
  37. package/lib/_queenSystem/handler/oldDataProcessor.js +129 -0
  38. package/lib/_queenSystem/handler/registryHandler.d.ts +36 -0
  39. package/lib/_queenSystem/handler/registryHandler.js +63 -0
  40. package/lib/_queenSystem/handler/zoneHandler.d.ts +102 -0
  41. package/lib/_queenSystem/handler/zoneHandler.js +606 -0
  42. package/lib/_queenSystem/loader/loader_card.d.ts +20 -0
  43. package/lib/_queenSystem/loader/loader_card.js +124 -0
  44. package/lib/_queenSystem/loader/loader_effect.d.ts +27 -0
  45. package/lib/_queenSystem/loader/loader_effect.js +163 -0
  46. package/lib/_queenSystem/loader/loader_handler.d.ts +11 -0
  47. package/lib/_queenSystem/loader/loader_handler.js +24 -0
  48. package/lib/_queenSystem/loader/loader_localization.d.ts +11 -0
  49. package/lib/_queenSystem/loader/loader_localization.js +73 -0
  50. package/lib/_queenSystem/loader/loader_mod.d.ts +10 -0
  51. package/lib/_queenSystem/loader/loader_mod.js +72 -0
  52. package/lib/_queenSystem/loader/loader_subtype.d.ts +9 -0
  53. package/lib/_queenSystem/loader/loader_subtype.js +39 -0
  54. package/lib/_queenSystem/loader/loader_type.d.ts +9 -0
  55. package/lib/_queenSystem/loader/loader_type.js +39 -0
  56. package/lib/_queenSystem/loader/loader_zone.d.ts +14 -0
  57. package/lib/_queenSystem/loader/loader_zone.js +35 -0
  58. package/lib/_queenSystem/queenSystem.d.ts +127 -0
  59. package/lib/_queenSystem/queenSystem.js +996 -0
  60. package/lib/_queenSystem/renderer/rendererInterface.d.ts +9 -0
  61. package/lib/_queenSystem/renderer/rendererInterface.js +2 -0
  62. package/lib/data/actionRegistry.d.ts +56 -0
  63. package/lib/data/actionRegistry.js +60 -0
  64. package/lib/data/cardRegistry.d.ts +1162 -0
  65. package/lib/data/cardRegistry.js +716 -0
  66. package/lib/data/deckRegistry.d.ts +19 -0
  67. package/lib/data/deckRegistry.js +41 -0
  68. package/lib/data/effectRegistry.d.ts +465 -0
  69. package/lib/data/effectRegistry.js +151 -0
  70. package/lib/data/effectTypeRegistry.d.ts +14 -0
  71. package/lib/data/effectTypeRegistry.js +14 -0
  72. package/lib/data/operatorRegistry.d.ts +92 -0
  73. package/lib/data/operatorRegistry.js +82 -0
  74. package/lib/data/rarityRegistry.d.ts +28 -0
  75. package/lib/data/rarityRegistry.js +63 -0
  76. package/lib/data/registryRegistry.d.ts +10 -0
  77. package/lib/data/registryRegistry.js +14 -0
  78. package/lib/data/subtypeRegistry.d.ts +15 -0
  79. package/lib/data/subtypeRegistry.js +15 -0
  80. package/lib/data/systemRegistry.d.ts +253 -0
  81. package/lib/data/systemRegistry.js +56 -0
  82. package/lib/data/zoneRegistry.d.ts +43 -0
  83. package/lib/data/zoneRegistry.js +157 -0
  84. package/lib/effectTextParser/index.d.ts +42 -0
  85. package/lib/effectTextParser/index.js +316 -0
  86. package/lib/global/index.d.ts +8 -0
  87. package/lib/global/index.js +12 -0
  88. package/lib/index.d.ts +6344 -0
  89. package/lib/index.js +213 -0
  90. package/lib/specificEffects/e_cond.d.ts +11 -0
  91. package/lib/specificEffects/e_cond.js +36 -0
  92. package/lib/specificEffects/e_fruit.d.ts +3 -0
  93. package/lib/specificEffects/e_fruit.js +187 -0
  94. package/lib/specificEffects/e_generic.d.ts +191 -0
  95. package/lib/specificEffects/e_generic.js +662 -0
  96. package/lib/specificEffects/e_generic_cardTargetting.d.ts +38 -0
  97. package/lib/specificEffects/e_generic_cardTargetting.js +82 -0
  98. package/lib/specificEffects/e_generic_noneTargetting.d.ts +10 -0
  99. package/lib/specificEffects/e_generic_noneTargetting.js +26 -0
  100. package/lib/specificEffects/e_status.d.ts +80 -0
  101. package/lib/specificEffects/e_status.js +151 -0
  102. package/lib/specificEffects/e_test.d.ts +3 -0
  103. package/lib/specificEffects/e_test.js +21 -0
  104. package/lib/types/abstract/gameComponents/API.d.ts +19 -0
  105. package/lib/types/abstract/gameComponents/API.js +2 -0
  106. package/lib/types/abstract/gameComponents/card.d.ts +108 -0
  107. package/lib/types/abstract/gameComponents/card.js +771 -0
  108. package/lib/types/abstract/gameComponents/effect.d.ts +82 -0
  109. package/lib/types/abstract/gameComponents/effect.js +331 -0
  110. package/lib/types/abstract/gameComponents/effectSubtype.d.ts +22 -0
  111. package/lib/types/abstract/gameComponents/effectSubtype.js +40 -0
  112. package/lib/types/abstract/gameComponents/effectType.d.ts +11 -0
  113. package/lib/types/abstract/gameComponents/effectType.js +8 -0
  114. package/lib/types/abstract/gameComponents/settings.d.ts +80 -0
  115. package/lib/types/abstract/gameComponents/settings.js +68 -0
  116. package/lib/types/abstract/gameComponents/zone.d.ts +113 -0
  117. package/lib/types/abstract/gameComponents/zone.js +614 -0
  118. package/lib/types/abstract/gameComponents/zone_gridBased.d.ts +18 -0
  119. package/lib/types/abstract/gameComponents/zone_gridBased.js +58 -0
  120. package/lib/types/abstract/gameComponents/zone_stackBased.d.ts +13 -0
  121. package/lib/types/abstract/gameComponents/zone_stackBased.js +55 -0
  122. package/lib/types/abstract/generics/node.d.ts +23 -0
  123. package/lib/types/abstract/generics/node.js +46 -0
  124. package/lib/types/abstract/generics/position.d.ts +23 -0
  125. package/lib/types/abstract/generics/position.js +91 -0
  126. package/lib/types/abstract/generics/tree.d.ts +25 -0
  127. package/lib/types/abstract/generics/tree.js +153 -0
  128. package/lib/types/abstract/generics/universalResponse.d.ts +4 -0
  129. package/lib/types/abstract/generics/universalResponse.js +2 -0
  130. package/lib/types/abstract/generics/wraper.d.ts +21 -0
  131. package/lib/types/abstract/generics/wraper.js +56 -0
  132. package/lib/types/abstract/parser/component.d.ts +88 -0
  133. package/lib/types/abstract/parser/component.js +132 -0
  134. package/lib/types/abstract/parser/index.d.ts +6 -0
  135. package/lib/types/abstract/parser/index.js +28 -0
  136. package/lib/types/abstract/parser/modPack.d.ts +21 -0
  137. package/lib/types/abstract/parser/modPack.js +48 -0
  138. package/lib/types/abstract/parser/moduleInputObject.d.ts +12 -0
  139. package/lib/types/abstract/parser/moduleInputObject.js +21 -0
  140. package/lib/types/abstract/parser/options.d.ts +31 -0
  141. package/lib/types/abstract/parser/options.js +45 -0
  142. package/lib/types/abstract/serializedGameComponents/Gamestate.d.ts +46 -0
  143. package/lib/types/abstract/serializedGameComponents/Gamestate.js +70 -0
  144. package/lib/types/abstract/serializedGameComponents/Localized.d.ts +69 -0
  145. package/lib/types/abstract/serializedGameComponents/Localized.js +84 -0
  146. package/lib/types/defaultZones/ability.d.ts +10 -0
  147. package/lib/types/defaultZones/ability.js +22 -0
  148. package/lib/types/defaultZones/deck.d.ts +25 -0
  149. package/lib/types/defaultZones/deck.js +90 -0
  150. package/lib/types/defaultZones/drop.d.ts +5 -0
  151. package/lib/types/defaultZones/drop.js +13 -0
  152. package/lib/types/defaultZones/field.d.ts +11 -0
  153. package/lib/types/defaultZones/field.js +35 -0
  154. package/lib/types/defaultZones/grave.d.ts +8 -0
  155. package/lib/types/defaultZones/grave.js +21 -0
  156. package/lib/types/defaultZones/hand.d.ts +5 -0
  157. package/lib/types/defaultZones/hand.js +14 -0
  158. package/lib/types/defaultZones/storage.d.ts +9 -0
  159. package/lib/types/defaultZones/storage.js +21 -0
  160. package/lib/types/defaultZones/system.d.ts +12 -0
  161. package/lib/types/defaultZones/system.js +35 -0
  162. package/lib/types/defaultZones/void.d.ts +4 -0
  163. package/lib/types/defaultZones/void.js +10 -0
  164. package/lib/types/effects/effectSubtypes/subtype_chained.d.ts +10 -0
  165. package/lib/types/effects/effectSubtypes/subtype_chained.js +17 -0
  166. package/lib/types/effects/effectSubtypes/subtype_delayed.d.ts +9 -0
  167. package/lib/types/effects/effectSubtypes/subtype_delayed.js +16 -0
  168. package/lib/types/effects/effectSubtypes/subtype_fieldLock.d.ts +9 -0
  169. package/lib/types/effects/effectSubtypes/subtype_fieldLock.js +21 -0
  170. package/lib/types/effects/effectSubtypes/subtype_graveLock.d.ts +9 -0
  171. package/lib/types/effects/effectSubtypes/subtype_graveLock.js +21 -0
  172. package/lib/types/effects/effectSubtypes/subtype_hand_or_fieldLock.d.ts +9 -0
  173. package/lib/types/effects/effectSubtypes/subtype_hand_or_fieldLock.js +21 -0
  174. package/lib/types/effects/effectSubtypes/subtype_hardUnique.d.ts +9 -0
  175. package/lib/types/effects/effectSubtypes/subtype_hardUnique.js +15 -0
  176. package/lib/types/effects/effectSubtypes/subtype_instant.d.ts +8 -0
  177. package/lib/types/effects/effectSubtypes/subtype_instant.js +20 -0
  178. package/lib/types/effects/effectSubtypes/subtype_once.d.ts +12 -0
  179. package/lib/types/effects/effectSubtypes/subtype_once.js +27 -0
  180. package/lib/types/effects/effectSubtypes/subtype_unique.d.ts +9 -0
  181. package/lib/types/effects/effectSubtypes/subtype_unique.js +16 -0
  182. package/lib/types/effects/effectTypes/initEffect.d.ts +7 -0
  183. package/lib/types/effects/effectTypes/initEffect.js +23 -0
  184. package/lib/types/effects/effectTypes/lockEffect.d.ts +9 -0
  185. package/lib/types/effects/effectTypes/lockEffect.js +25 -0
  186. package/lib/types/effects/effectTypes/manualEffect.d.ts +9 -0
  187. package/lib/types/effects/effectTypes/manualEffect.js +18 -0
  188. package/lib/types/effects/effectTypes/passiveEffect.d.ts +9 -0
  189. package/lib/types/effects/effectTypes/passiveEffect.js +23 -0
  190. package/lib/types/effects/effectTypes/triggerEffect.d.ts +9 -0
  191. package/lib/types/effects/effectTypes/triggerEffect.js +28 -0
  192. package/lib/types/errors/cannotLoad.d.ts +5 -0
  193. package/lib/types/errors/cannotLoad.js +13 -0
  194. package/lib/types/errors/cardNotExist.d.ts +5 -0
  195. package/lib/types/errors/cardNotExist.js +13 -0
  196. package/lib/types/errors/cardNotInApplicableZone.d.ts +5 -0
  197. package/lib/types/errors/cardNotInApplicableZone.js +13 -0
  198. package/lib/types/errors/effectCondNotMet.d.ts +5 -0
  199. package/lib/types/errors/effectCondNotMet.js +13 -0
  200. package/lib/types/errors/effectNotExist.d.ts +5 -0
  201. package/lib/types/errors/effectNotExist.js +13 -0
  202. package/lib/types/errors/error.d.ts +17 -0
  203. package/lib/types/errors/error.js +42 -0
  204. package/lib/types/errors/incorrectActionType.d.ts +5 -0
  205. package/lib/types/errors/incorrectActionType.js +13 -0
  206. package/lib/types/errors/index.d.ts +16 -0
  207. package/lib/types/errors/index.js +36 -0
  208. package/lib/types/errors/invalidOrderMap.d.ts +6 -0
  209. package/lib/types/errors/invalidOrderMap.js +14 -0
  210. package/lib/types/errors/invalidPosition.d.ts +6 -0
  211. package/lib/types/errors/invalidPosition.js +13 -0
  212. package/lib/types/errors/subTypeOverrideConflict.d.ts +7 -0
  213. package/lib/types/errors/subTypeOverrideConflict.js +15 -0
  214. package/lib/types/errors/unknownError.d.ts +5 -0
  215. package/lib/types/errors/unknownError.js +13 -0
  216. package/lib/types/errors/unregisteredAction.d.ts +6 -0
  217. package/lib/types/errors/unregisteredAction.js +13 -0
  218. package/lib/types/errors/wrongEffectIdx.d.ts +5 -0
  219. package/lib/types/errors/wrongEffectIdx.js +14 -0
  220. package/lib/types/errors/zoneAttrConflict.d.ts +5 -0
  221. package/lib/types/errors/zoneAttrConflict.js +15 -0
  222. package/lib/types/errors/zoneFull.d.ts +5 -0
  223. package/lib/types/errors/zoneFull.js +13 -0
  224. package/lib/types/errors/zoneNotExist.d.ts +5 -0
  225. package/lib/types/errors/zoneNotExist.js +13 -0
  226. package/lib/types/misc.d.ts +97 -0
  227. package/lib/types/misc.js +8 -0
  228. package/lib/types/mods/effectTextParserModule.d.ts +16 -0
  229. package/lib/types/mods/effectTextParserModule.js +81 -0
  230. package/lib/types/mods/gameModule.d.ts +5 -0
  231. package/lib/types/mods/gameModule.js +8 -0
  232. package/lib/utils/index.d.ts +78 -0
  233. package/lib/utils/index.js +562 -0
  234. package/package.json +45 -0
@@ -0,0 +1,662 @@
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
+ exports.e_reset_all_once = exports.e_capacitor_2 = exports.e_capacitor_1 = exports.e_add_all_to_grave = exports.e_add_all_to_hand = exports.e_send_all_to_grave = exports.e_shuffle_into_deck = exports.e_deal_dmg_card = exports.e_remove_all_effects = exports.e_add_all_to_zone = exports.e_delay = exports.e_bounce = exports.e_lock = exports.e_draw_until = exports.e_draw = exports.e_fragile = exports.e_volatile = exports.e_revive = exports.e_add_counter_to_targets = exports.e_add_counter = exports.e_dmg_reduction = exports.e_reflect = exports.e_revenge = exports.e_deal_dmg_ahead = exports.e_add_stat_change_override = exports.e_add_stat_change_diff = exports.e_add_to_hand = exports.e_attack = exports.e_quick = void 0;
7
+ const effect_1 = __importDefault(require("../types/abstract/gameComponents/effect"));
8
+ const subtype_instant_1 = __importDefault(require("../types/effects/effectSubtypes/subtype_instant"));
9
+ const subtypeRegistry_1 = __importDefault(require("../data/subtypeRegistry"));
10
+ const systemRegistry_1 = require("../data/systemRegistry");
11
+ const actionRegistry_1 = __importDefault(require("../data/actionRegistry"));
12
+ const actionGenrator_1 = require("../_queenSystem/handler/actionGenrator");
13
+ const misc_1 = require("../types/misc");
14
+ const zoneRegistry_1 = require("../data/zoneRegistry");
15
+ const e_status_1 = require("./e_status");
16
+ const actionInputRequesterGenerator_1 = __importDefault(require("../_queenSystem/handler/actionInputRequesterGenerator"));
17
+ const error_1 = __importDefault(require("../types/errors/error"));
18
+ const e_generic_cardTargetting_1 = require("./e_generic_cardTargetting");
19
+ /**
20
+ * All typical effects should have 3 versions
21
+ * - target c or this
22
+ * - target inputs
23
+ * - target all of a higher order input (card -> zone, eff -> card)
24
+ *
25
+ */
26
+ class e_quick extends effect_1.default {
27
+ constructor() {
28
+ super(...arguments);
29
+ this.instant_subtype = new subtype_instant_1.default(subtypeRegistry_1.default[subtypeRegistry_1.default.e_st_instant]);
30
+ }
31
+ canRespondAndActivate_final(c, system, a) {
32
+ return system.turnAction !== undefined && system.turnAction.id === a.id;
33
+ }
34
+ activate_final(c, system, a) {
35
+ return [
36
+ actionGenrator_1.actionConstructorRegistry.a_modify_action("a_turn_end")(system, system.getRootAction())(this.cause(system, c))({
37
+ doIncreaseTurnCount: false
38
+ })
39
+ ];
40
+ }
41
+ }
42
+ exports.e_quick = e_quick;
43
+ class e_attack extends effect_1.default {
44
+ get dmg() { return this.attr.get("dmg"); }
45
+ set dmg(val) { this.attr.set("dmg", val); }
46
+ get dmgType() { var _a; return (_a = this.attr.get("dmgType")) !== null && _a !== void 0 ? _a : misc_1.damageType.physical; }
47
+ set dmgType(val) { this.attr.set("dmgType", val); }
48
+ getDisplayInput(c, system) {
49
+ var _a;
50
+ return [this.count, (_a = this.dmg) !== null && _a !== void 0 ? _a : -1, this.dmgType];
51
+ }
52
+ createInputObj(c, s, a) {
53
+ return actionInputRequesterGenerator_1.default.field(s, c).cards().many(this.count, this);
54
+ }
55
+ canRespondAndActivate_final(c, system, a) {
56
+ return this.count > 0;
57
+ }
58
+ activate_final(c, s, a, input) {
59
+ let t = this.count;
60
+ if (!t || isNaN(t) || !isFinite(t))
61
+ return [];
62
+ const cards = input.next();
63
+ const cause = this.cause(s, c);
64
+ let res = [];
65
+ while (t > 0) {
66
+ res.push(...cards.map(c => actionGenrator_1.actionConstructorRegistry.a_attack(s, c.data.card)(cause, {
67
+ dmg: (this.dmg === undefined) ? c.data.card.atk : this.dmg,
68
+ dmgType: this.dmgType
69
+ })));
70
+ t--;
71
+ }
72
+ return res;
73
+ }
74
+ }
75
+ exports.e_attack = e_attack;
76
+ class e_add_to_hand extends effect_1.default {
77
+ createInputObj(c, s, a) {
78
+ const x = actionInputRequesterGenerator_1.default.allZones(s, c).cards().many(this.count, this);
79
+ const y = actionInputRequesterGenerator_1.default.hand(s, c).once(this);
80
+ return x.merge(y);
81
+ }
82
+ canRespondAndActivate_final(c, system, a) {
83
+ return this.count > 0;
84
+ }
85
+ activate_final(c, s, a, input) {
86
+ const n = input.next();
87
+ const cards = n.splice(0, -1);
88
+ const z = n[0].data.zone;
89
+ return cards.map(c => actionGenrator_1.actionConstructorRegistry.a_pos_change(s, c.data.card)(z.top)(this.cause(s, c.data.card)));
90
+ }
91
+ getDisplayInput(c, system) {
92
+ var _a;
93
+ return [(_a = this.count) !== null && _a !== void 0 ? _a : 0];
94
+ }
95
+ }
96
+ exports.e_add_to_hand = e_add_to_hand;
97
+ class e_add_stat_change_diff extends effect_1.default {
98
+ get maxAtk() { return this.attr.get("maxAtk"); }
99
+ get maxHp() { return this.attr.get("maxHp"); }
100
+ get level() { return this.attr.get("level"); }
101
+ get statObj() {
102
+ const k = {};
103
+ if (this.maxAtk !== undefined)
104
+ k.maxAtk = this.maxAtk;
105
+ if (this.maxHp !== undefined)
106
+ k.maxHp = this.maxHp;
107
+ if (this.level !== undefined)
108
+ k.level = this.level;
109
+ return k;
110
+ }
111
+ createInputObj(c, s, a) {
112
+ return actionInputRequesterGenerator_1.default.field(s, c).cards().many(this.count, this);
113
+ }
114
+ canRespondAndActivate_final(c, system, a) {
115
+ return this.count > 0;
116
+ }
117
+ activate_final(c, s, a, input) {
118
+ const cards = input.next();
119
+ const cause = this.cause(s, c);
120
+ return cards.map(c => actionGenrator_1.actionConstructorRegistry.a_add_status_effect("e_generic_stat_change_diff", true)(s, c.data.card)(cause, this.statObj));
121
+ }
122
+ getDisplayInput(c, system) {
123
+ var _a, _b, _c;
124
+ return [(_a = this.maxAtk) !== null && _a !== void 0 ? _a : 0, (_b = this.maxHp) !== null && _b !== void 0 ? _b : 0, (_c = this.level) !== null && _c !== void 0 ? _c : 0];
125
+ }
126
+ }
127
+ exports.e_add_stat_change_diff = e_add_stat_change_diff;
128
+ class e_add_stat_change_override extends e_add_stat_change_diff {
129
+ activate_final(c, s, a, input) {
130
+ const cause = this.cause(s, c);
131
+ return input.next().map(c => actionGenrator_1.actionConstructorRegistry.a_add_status_effect("e_generic_stat_change_override", true)(s, c.data.card)(cause, this.statObj));
132
+ }
133
+ }
134
+ exports.e_add_stat_change_override = e_add_stat_change_override;
135
+ class e_deal_dmg_ahead extends e_attack {
136
+ activate_final(c, s, a) {
137
+ let t = this.count;
138
+ if (!t || isNaN(t) || !isFinite(t))
139
+ return [];
140
+ const cause = this.cause(s, c);
141
+ let res = [];
142
+ while (t > 0) {
143
+ res.push(actionGenrator_1.actionConstructorRegistry.a_deal_damage_ahead(s, c)(cause, {
144
+ dmg: (this.dmg === undefined) ? c.atk : this.dmg,
145
+ dmgType: this.dmgType
146
+ }));
147
+ t--;
148
+ }
149
+ return res;
150
+ }
151
+ }
152
+ exports.e_deal_dmg_ahead = e_deal_dmg_ahead;
153
+ class e_revenge extends e_attack {
154
+ canRespondAndActivate_final(c, system, a) {
155
+ if (a.typeID !== actionRegistry_1.default.a_deal_damage_card &&
156
+ a.typeID !== actionRegistry_1.default.a_deal_damage_internal &&
157
+ a.typeID !== actionRegistry_1.default.a_deal_damage_position)
158
+ return false;
159
+ if (a.targets[0].type === systemRegistry_1.identificationType.card &&
160
+ a.targets[0].card.id !== c.id)
161
+ return false;
162
+ if (a.targets[0].type === systemRegistry_1.identificationType.position &&
163
+ !a.targets[0].pos.is(c.pos))
164
+ return false;
165
+ return super.canRespondAndActivate_final(c, system, a);
166
+ }
167
+ }
168
+ exports.e_revenge = e_revenge;
169
+ class e_reflect extends e_revenge {
170
+ activate_final(c, system, a, i) {
171
+ const attr = a.flatAttr();
172
+ this.dmg = attr.dmg;
173
+ return super.activate_final(c, system, a, i);
174
+ }
175
+ }
176
+ exports.e_reflect = e_reflect;
177
+ class e_dmg_reduction extends effect_1.default {
178
+ get reductionAmmount() { var _a; return (_a = this.attr.get("reductionAmmount")) !== null && _a !== void 0 ? _a : 0; }
179
+ ;
180
+ set reductionAmmount(val) { this.attr.set("reductionAmmount", val); }
181
+ ;
182
+ get minDmg() { var _a; return (_a = this.attr.get("minDmg")) !== null && _a !== void 0 ? _a : 0; }
183
+ ;
184
+ set minDmg(val) { this.attr.set("minDmg", val); }
185
+ ;
186
+ get reductionDmgType() { return this.attr.get("reductionDmgType"); } //undefined is all damage
187
+ set reductionDmgType(val) {
188
+ if (val === undefined)
189
+ this.attr.delete("reductionDmgType");
190
+ else
191
+ this.attr.set("reductionDmgType", val);
192
+ }
193
+ canRespondAndActivate_final(c, system, a) {
194
+ //all dmg
195
+ if (a.typeID === actionRegistry_1.default.a_deal_damage_card ||
196
+ a.typeID === actionRegistry_1.default.a_deal_damage_internal ||
197
+ a.typeID === actionRegistry_1.default.a_deal_damage_position) {
198
+ if (this.reductionDmgType === undefined)
199
+ return true;
200
+ return a.flatAttr().dmgType === this.reductionDmgType;
201
+ }
202
+ return false;
203
+ }
204
+ activate_final(c, system, a) {
205
+ var _a;
206
+ const attr = a.flatAttr();
207
+ let oldDmg = (_a = attr.dmg) !== null && _a !== void 0 ? _a : 0;
208
+ let newDmg = oldDmg - this.reductionAmmount;
209
+ if (newDmg < this.minDmg)
210
+ newDmg = this.minDmg;
211
+ const cause = this.cause(system, c);
212
+ return [
213
+ actionGenrator_1.actionConstructorRegistry.a_modify_action("a_deal_damage_card")(system, a)(cause)({
214
+ dmg: newDmg
215
+ })
216
+ ];
217
+ }
218
+ }
219
+ exports.e_dmg_reduction = e_dmg_reduction;
220
+ class e_add_counter extends effect_1.default {
221
+ get times() { var _a; return (_a = this.attr.get("times")) !== null && _a !== void 0 ? _a : 0; }
222
+ set times(val) { this.attr.set("times", val); }
223
+ canRespondAndActivate_final(c, system, a) {
224
+ return this.times > 0;
225
+ }
226
+ activate_final(c, system, a) {
227
+ let t = this.times;
228
+ if (!t || isNaN(t) || !isFinite(t))
229
+ return [];
230
+ const cause = this.cause(system, c);
231
+ let res = [];
232
+ while (t > 0) {
233
+ res.push(actionGenrator_1.actionConstructorRegistry.a_add_status_effect("e_generic_counter", true)(system, c)(cause, {}));
234
+ t--;
235
+ }
236
+ return res;
237
+ }
238
+ }
239
+ exports.e_add_counter = e_add_counter;
240
+ class e_add_counter_to_targets extends effect_1.default {
241
+ get times() { var _a; return (_a = this.attr.get("times")) !== null && _a !== void 0 ? _a : 0; }
242
+ set times(val) { this.attr.set("times", val); }
243
+ createInputObj(c, s, a) {
244
+ return actionInputRequesterGenerator_1.default.allZones(s, c).cards().many(this.count, this);
245
+ }
246
+ canRespondAndActivate_final(c, system, a) {
247
+ return this.times > 0 && this.count > 0;
248
+ }
249
+ activate_final(c, s, a, input) {
250
+ let t = this.times;
251
+ if (!t || isNaN(t) || !isFinite(t))
252
+ return [];
253
+ const cause = this.cause(s, c);
254
+ let res = [];
255
+ while (t > 0) {
256
+ input.next().forEach(c => {
257
+ res.push(actionGenrator_1.actionConstructorRegistry.a_add_status_effect("e_generic_counter", true)(s, c.data.card)(cause, {}));
258
+ });
259
+ t--;
260
+ }
261
+ return res;
262
+ }
263
+ }
264
+ exports.e_add_counter_to_targets = e_add_counter_to_targets;
265
+ class e_revive extends effect_1.default {
266
+ //condition: card in grave, pos on field=
267
+ createInputObj(c, s, a) {
268
+ const z = s.getZoneOf(c);
269
+ const s1 = actionInputRequesterGenerator_1.default.grave(s, c).ofSamePlayer(z).cards().once(this);
270
+ const s2 = actionInputRequesterGenerator_1.default.field(s, c).ofSamePlayer(z).pos().isEmpty().once(this);
271
+ return s1.merge(s2);
272
+ }
273
+ activate_final(c, s, a, input) {
274
+ const tc = input.next()[0].data.card;
275
+ const tp = input.next()[1].data.pos;
276
+ const cause = actionGenrator_1.actionFormRegistry.effect(s, c, this);
277
+ return [
278
+ actionGenrator_1.actionConstructorRegistry.a_pos_change(s, tc)(tp)(cause)
279
+ ];
280
+ }
281
+ }
282
+ exports.e_revive = e_revive;
283
+ /**Remove this card when it leaves the field */
284
+ class e_volatile extends effect_1.default {
285
+ canRespondAndActivate_final(c, system, a) {
286
+ //activate cond : when this card is removed from field
287
+ if ((a.typeID === actionRegistry_1.default.a_pos_change ||
288
+ a.typeID === actionRegistry_1.default.a_pos_change_force) &&
289
+ a.targets[0].card.id === c.id) {
290
+ let zid1 = a.targets[1].pos.zoneID;
291
+ let zid2 = c.pos.zoneID;
292
+ if (zid1 === zid2)
293
+ return false;
294
+ let zFrom = system.getZoneWithID(zid2);
295
+ if (!zFrom)
296
+ return false;
297
+ return zFrom.is(zoneRegistry_1.zoneRegistry.z_field);
298
+ }
299
+ return false;
300
+ }
301
+ activate_final(c, s, a) {
302
+ const cause = this.cause(s, c);
303
+ return [
304
+ actionGenrator_1.actionConstructorRegistry.a_replace_action(s, actionGenrator_1.actionConstructorRegistry.a_void(s, c)(cause))(cause)
305
+ ];
306
+ }
307
+ }
308
+ exports.e_volatile = e_volatile;
309
+ /**Destroy self after attack */
310
+ class e_fragile extends e_generic_cardTargetting_1.e_destroy.toThisCard() {
311
+ canRespondAndActivate_final(c, system, a) {
312
+ //if this card attacks
313
+ return (a.is("a_attack") &&
314
+ a.targets[0].is(c));
315
+ }
316
+ }
317
+ exports.e_fragile = e_fragile;
318
+ class e_draw extends effect_1.default {
319
+ //deck, hand
320
+ get times() { var _a; return (_a = this.attr.get("times")) !== null && _a !== void 0 ? _a : 0; }
321
+ set times(val) { this.attr.set("times", val); }
322
+ get cooldown() { var _a; return (_a = this.attr.get("cooldown")) !== null && _a !== void 0 ? _a : NaN; }
323
+ set cooldown(val) { this.attr.set("cooldown", val); }
324
+ get doTurnDraw() { return this.attr.get("doTurnDraw") != 0; }
325
+ set doTurnDraw(val) { this.attr.set("doTurnDraw", Number(val)); }
326
+ getDisplayInput(c, system) {
327
+ return [this.times, this.cooldown, Number(this.doTurnDraw)];
328
+ }
329
+ canRespondAndActivate_final(c, system, a) {
330
+ return this.times > 0 && !isNaN(this.times) && isFinite(this.times);
331
+ }
332
+ createInputObj(c, s, a) {
333
+ const z = s.getZoneOf(c);
334
+ const g1 = actionInputRequesterGenerator_1.default.deck(s, c).ofSamePlayerType(z).once(this);
335
+ const g2 = actionInputRequesterGenerator_1.default.hand(s, c).ofSamePlayerType(z).once(this);
336
+ return g1.merge(g2);
337
+ }
338
+ activate_final(c, s, a, input) {
339
+ let t = this.times;
340
+ let res = [];
341
+ const i = input.next();
342
+ const hand = i[0].data.zone;
343
+ const deck = i[1].data.zone;
344
+ const cause = actionGenrator_1.actionFormRegistry.effect(s, c, this);
345
+ while (t > 0) {
346
+ res.push(deck.getAction_draw(s, hand, cause, this.doTurnDraw));
347
+ t--;
348
+ }
349
+ res.unshift(deck.getAction_shuffle(s, cause));
350
+ return res;
351
+ }
352
+ }
353
+ exports.e_draw = e_draw;
354
+ class e_draw_until extends e_draw {
355
+ canRespondAndActivate_final(c, system, a) {
356
+ return this.count > 0;
357
+ }
358
+ activate_final(c, s, a, input) {
359
+ const i = input.next();
360
+ const hand = i[0].data.zone;
361
+ let diff = this.count - hand.cardArr_filtered.length;
362
+ if (diff > 0) {
363
+ this.times = diff;
364
+ return super.activate_final(c, s, a, input);
365
+ }
366
+ return [];
367
+ }
368
+ }
369
+ exports.e_draw_until = e_draw_until;
370
+ //Lock actually has 2 forms :
371
+ // This implements the condition form
372
+ // There is another form as a forced negative effect, like decompiling X cards on your side of the field
373
+ // That...can just be added to the beginning of the Action arr tho
374
+ class e_lock extends effect_1.default {
375
+ constructor() {
376
+ //delegates the actual condition to a sensible function rather than the inverses
377
+ super(...arguments);
378
+ //return true to unlock
379
+ this.key_condition = () => true;
380
+ }
381
+ canRespondAndActivate_final(c, system, a) {
382
+ return !this.key_condition(c, system, a, this.attr);
383
+ }
384
+ activate_final(c, s, a, input) {
385
+ return [actionGenrator_1.actionConstructorRegistry.a_negate_action(this.cause(s, c))];
386
+ }
387
+ static keyCondition(f) {
388
+ return class ExtendedEff extends this {
389
+ constructor(...p) {
390
+ super(...p);
391
+ this.key_condition = f.bind(this);
392
+ }
393
+ };
394
+ }
395
+ }
396
+ exports.e_lock = e_lock;
397
+ class e_bounce extends effect_1.default {
398
+ //target cards, deck
399
+ get target_zone() { var _a; return (_a = this.attr.get("target_zone")) !== null && _a !== void 0 ? _a : zoneRegistry_1.zoneRegistry.z_field; }
400
+ createInputObj(c, s, a) {
401
+ const z = s.getZoneOf(c);
402
+ const s1 = actionInputRequesterGenerator_1.default.specificType(s, c, this.target_zone).ofSamePlayerType(z).cards().many(this.count, this);
403
+ const s2 = actionInputRequesterGenerator_1.default.deck(s, c).once(this);
404
+ return s1.merge(s2);
405
+ }
406
+ activate_final(c, s, a, input) {
407
+ const i = input.next();
408
+ const deck = i.pop().data.zone;
409
+ const cards = i;
410
+ const cause = this.cause(s, c);
411
+ const res = cards.map(c_i => {
412
+ return actionGenrator_1.actionConstructorRegistry.a_add_top(s, c_i.data.card)(deck)(cause);
413
+ });
414
+ res.push(deck.getAction_shuffle(s, cause));
415
+ return res;
416
+ }
417
+ }
418
+ exports.e_bounce = e_bounce;
419
+ class e_delay extends effect_1.default {
420
+ get delayCount() { var _a; return (_a = this.attr.get("delayCount")) !== null && _a !== void 0 ? _a : 0; }
421
+ canRespondAndActivate_final(c, system, a) {
422
+ return this.count > 0 && this.delayCount > 0;
423
+ }
424
+ createInputObj(c, s, a) {
425
+ return actionInputRequesterGenerator_1.default.field(s, c).cards().hasAutomate().many(this.count, this);
426
+ }
427
+ activate_final(c, s, a, input) {
428
+ const cards = input.next().map(c => c.data.card);
429
+ const res = [];
430
+ const cause = this.cause(s, c);
431
+ cards.forEach(c => {
432
+ const automateEff = c.statusEffects.filter(e => e instanceof e_status_1.e_automate_base);
433
+ automateEff.forEach(eff => {
434
+ res.push(actionGenrator_1.actionConstructorRegistry.a_delay(cause, {
435
+ delayAmmount: this.delayCount,
436
+ delayCID: c.id,
437
+ delayEID: eff.id
438
+ }));
439
+ });
440
+ });
441
+ return res;
442
+ }
443
+ }
444
+ exports.e_delay = e_delay;
445
+ /**Add all cards of a particular dataID from the same zone too hand */
446
+ class e_add_all_to_zone extends effect_1.default {
447
+ constructor() {
448
+ super(...arguments);
449
+ this.target_zone = zoneRegistry_1.zoneRegistry.z_system;
450
+ }
451
+ createInputObj(c, s, a) {
452
+ const x = actionInputRequesterGenerator_1.default.allZones(s, c).cards().once(this);
453
+ const y = actionInputRequesterGenerator_1.default.specificType(s, c, this.target_zone).once(this);
454
+ return x.merge(y);
455
+ }
456
+ activate_final(c, s, a, input) {
457
+ const n = input.next();
458
+ const candidate = n[0].data.card;
459
+ const z = n[1].data.zone;
460
+ const cause = this.cause(s, c);
461
+ const cards = z.cardArr_filtered.filter(c => c.dataID === candidate.dataID);
462
+ return cards.map(c => actionGenrator_1.actionConstructorRegistry.a_pos_change(s, c)(z.top)(cause));
463
+ }
464
+ static to(zType) {
465
+ return class extendedEff extends this {
466
+ constructor() {
467
+ super(...arguments);
468
+ this.target_zone = zType;
469
+ }
470
+ };
471
+ }
472
+ }
473
+ exports.e_add_all_to_zone = e_add_all_to_zone;
474
+ class e_remove_all_effects extends effect_1.default {
475
+ createInputObj(c, s, a) {
476
+ return actionInputRequesterGenerator_1.default.allZones(s, c).cards().many(this.count, this);
477
+ }
478
+ canRespondAndActivate_final(c, system, a) {
479
+ return this.count > 0;
480
+ }
481
+ activate_final(c, s, a, input) {
482
+ const cards = input.next();
483
+ const cause = this.cause(s, c);
484
+ return cards.map(c => actionGenrator_1.actionConstructorRegistry.a_remove_all_effects(s, c.data.card)(cause));
485
+ }
486
+ }
487
+ exports.e_remove_all_effects = e_remove_all_effects;
488
+ class e_deal_dmg_card extends effect_1.default {
489
+ get dmg() { var _a; return (_a = this.attr.get("dmg")) !== null && _a !== void 0 ? _a : 0; }
490
+ get dmgType() { var _a; return (_a = this.attr.get("dmgType")) !== null && _a !== void 0 ? _a : misc_1.damageType.physical; }
491
+ canRespondAndActivate_final(c, system, a) {
492
+ return this.count > 0;
493
+ }
494
+ createInputObj(c, s, a) {
495
+ return actionInputRequesterGenerator_1.default.field(s, c).cards().many(this.count, this);
496
+ }
497
+ activate_final(c, s, a, input) {
498
+ const cards = input.next();
499
+ const cause = this.cause(s, c);
500
+ return cards.map(c => actionGenrator_1.actionConstructorRegistry.a_deal_damage_card(s, c.data.card)(cause, {
501
+ dmg: this.dmg,
502
+ dmgType: this.dmgType
503
+ }));
504
+ }
505
+ }
506
+ exports.e_deal_dmg_card = e_deal_dmg_card;
507
+ class e_shuffle_into_deck extends effect_1.default {
508
+ get target_zone() { var _a; return (_a = this.attr.get("target_zone")) !== null && _a !== void 0 ? _a : zoneRegistry_1.zoneRegistry.z_field; }
509
+ canRespondAndActivate_final(c, system, a) {
510
+ return this.count > 0;
511
+ }
512
+ createInputObj(c, s, a) {
513
+ const z = s.getZoneOf(c);
514
+ const s1 = actionInputRequesterGenerator_1.default.specificType(s, c, this.target_zone).ofSamePlayerType(z).cards().many(this.count, this);
515
+ const s2 = actionInputRequesterGenerator_1.default.deck(s, c).once(this);
516
+ return s1.merge(s2);
517
+ }
518
+ activate_final(c, s, a, input) {
519
+ const data = input.next();
520
+ const deck = data.pop();
521
+ const cards = data;
522
+ const cause = this.cause(s, c);
523
+ const res = cards.map(c => actionGenrator_1.actionConstructorRegistry.a_pos_change(s, c.data.card)(deck.data.zone.top)(cause));
524
+ const k = deck.data.zone.getAction_shuffle(s, cause);
525
+ if (k instanceof error_1.default)
526
+ return [];
527
+ res.push(k);
528
+ return res;
529
+ }
530
+ }
531
+ exports.e_shuffle_into_deck = e_shuffle_into_deck;
532
+ class e_send_all_to_grave extends effect_1.default {
533
+ createInputObj(c, s, a) {
534
+ const x = actionInputRequesterGenerator_1.default.allZones(s, c).cards().once(this);
535
+ const y = actionInputRequesterGenerator_1.default.grave(s, c).once(this);
536
+ return x.merge(y);
537
+ }
538
+ }
539
+ exports.e_send_all_to_grave = e_send_all_to_grave;
540
+ exports.e_add_all_to_hand = e_add_all_to_zone.to(zoneRegistry_1.zoneRegistry.z_hand);
541
+ exports.e_add_all_to_grave = e_add_all_to_zone.to(zoneRegistry_1.zoneRegistry.z_grave);
542
+ class e_capacitor_1 extends effect_1.default {
543
+ canRespondAndActivate_final(c, s, a) {
544
+ return a.is("a_deal_damage_card") && !c.hasCounter;
545
+ }
546
+ activate_final(c, s, a, input) {
547
+ var _a;
548
+ //if any card would take damage, add counter (max 3) instead
549
+ if (!a.is("a_deal_damage_card"))
550
+ return [];
551
+ const wouldBeDmg = a.flatAttr().dmg;
552
+ const cause = this.cause(s, c);
553
+ const counter_count = Utils.clamp(wouldBeDmg, (_a = this.attr.get("maxCount")) !== null && _a !== void 0 ? _a : 0, 0);
554
+ const res = [
555
+ actionGenrator_1.actionConstructorRegistry.a_modify_action("a_deal_damage_card")(s, a)(cause)({
556
+ dmg: 0
557
+ })
558
+ ];
559
+ if (counter_count > 0) {
560
+ res.push(actionGenrator_1.actionConstructorRegistry.a_add_status_effect("e_generic_counter", true)(s, c)(cause, {
561
+ count: counter_count
562
+ }));
563
+ }
564
+ return res;
565
+ }
566
+ }
567
+ exports.e_capacitor_1 = e_capacitor_1;
568
+ class e_capacitor_2 extends effect_1.default {
569
+ canRespondAndActivate_final(c, system, a) {
570
+ return a.is("a_deal_damage_card") && c.hasCounter;
571
+ }
572
+ activate_final(c, s, a, input) {
573
+ if (!a.is("a_deal_damage_card"))
574
+ return [];
575
+ const counterCount = c.numCounters;
576
+ const originalDmg = a.flatAttr().dmg;
577
+ const cause = this.cause(s, c);
578
+ return [
579
+ actionGenrator_1.actionConstructorRegistry.a_modify_action("a_deal_damage_card")(s, a)(cause)({
580
+ dmg: originalDmg + counterCount
581
+ }),
582
+ actionGenrator_1.actionConstructorRegistry.a_clear_all_counters(s, c)(cause)
583
+ ];
584
+ }
585
+ }
586
+ exports.e_capacitor_2 = e_capacitor_2;
587
+ class e_reset_all_once extends effect_1.default {
588
+ canRespondAndActivate_final(c, system, a) {
589
+ return this.count > 0;
590
+ }
591
+ createInputObj(c, s, a) {
592
+ return actionInputRequesterGenerator_1.default.field(s, c).ofSamePlayer(s.getZoneOf(c)).cards().many(this.count);
593
+ }
594
+ activate_final(c, s, a, input) {
595
+ const cause = this.cause(s, c);
596
+ const target = input.next();
597
+ return target.map(c => actionGenrator_1.actionConstructorRegistry.a_reset_all_once(s, c.data.card)(cause));
598
+ }
599
+ }
600
+ exports.e_reset_all_once = e_reset_all_once;
601
+ exports.default = {
602
+ e_add_to_hand,
603
+ e_add_all_to_hand: exports.e_add_all_to_hand,
604
+ e_add_all_to_grave: exports.e_add_all_to_grave,
605
+ e_quick,
606
+ e_attack,
607
+ e_add_counter,
608
+ e_add_stat_change_diff,
609
+ e_add_stat_change_override,
610
+ e_dmg_reduction,
611
+ e_revenge,
612
+ e_reflect,
613
+ e_revive,
614
+ e_volatile,
615
+ e_fragile,
616
+ e_draw,
617
+ e_draw_until,
618
+ e_deal_dmg_card,
619
+ e_deal_dmg_ahead,
620
+ e_reset_all_once,
621
+ e_remove_all_effects,
622
+ e_delay,
623
+ e_delay_all: e_delay.toAllEnemies(),
624
+ e_bounce,
625
+ e_lock,
626
+ e_void_this: e_generic_cardTargetting_1.e_void.toThisCard(),
627
+ e_destroy_this: e_generic_cardTargetting_1.e_destroy.toThisCard(),
628
+ e_clear_all_status_this: e_generic_cardTargetting_1.e_clear_all_status.toThisCard(),
629
+ e_reactivate_this: e_generic_cardTargetting_1.e_reactivate.toThisCard(),
630
+ e_deactivate_this: e_generic_cardTargetting_1.e_deactivate.toThisCard(),
631
+ e_decompile_this: e_generic_cardTargetting_1.e_decompile.toThisCard(),
632
+ e_execute_this: e_generic_cardTargetting_1.e_execute.toThisCard(),
633
+ e_reset_all_once_this: e_reset_all_once.toThisCard(),
634
+ //specific sections
635
+ //afterburner is e_draw_until
636
+ //avarice is e_shuffle_into_deck + e_draw
637
+ e_avarice_1: e_shuffle_into_deck.implyCondition("c", function (c, oldc, s, a) {
638
+ const z = s.getZoneOf(c);
639
+ const z1 = s.getZoneOf(oldc);
640
+ return z.is(zoneRegistry_1.zoneRegistry.z_grave) && z.playerIndex === z1.playerIndex;
641
+ }),
642
+ //avraice_2 is e_draw
643
+ //battery is e_draw with isTurnDraw = true
644
+ //clawtrap is gravebound
645
+ e_clawtrap: e_deal_dmg_card.toAllEnemies(),
646
+ e_capacitor_1,
647
+ e_capacitor_2,
648
+ //** damage capacitor is just weird, implement later
649
+ //cinder is e_delay
650
+ //constant correction is e_add_stat_change_override
651
+ //** crystal ball is less weird but also must be custom coded
652
+ //double execute is just...e_execute switched to input mode
653
+ //ember is e_draw
654
+ //fireball is e_deal_damage_ahead
655
+ //flash is e_deal_damage_card, change the effect to its smallest turn countdown
656
+ //flashbang is e_destroy + e_delay (all enemies),
657
+ //e_force is .then to e_deal_damage_ahead
658
+ //inferno is e_deal_damage_card with changed input, changed condition
659
+ //magic ember is e_decompile signaling count to e_draw
660
+ //magic flare is e_decompile and e_deal_damage_card both listen to numbe rof 0|1 card on field for input
661
+ //rush mega is e_add_stat_change_diff
662
+ };