warscript 0.0.1-dev.91da42b → 0.0.1-dev.9381e62

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 (301) hide show
  1. package/core/dummy.lua +4 -2
  2. package/core/types/effect.d.ts +11 -1
  3. package/core/types/effect.lua +43 -77
  4. package/core/types/frame.d.ts +1 -0
  5. package/core/types/frame.lua +112 -37
  6. package/core/types/handle.lua +9 -9
  7. package/core/types/item.d.ts +1 -0
  8. package/core/types/item.lua +1 -0
  9. package/core/types/player.d.ts +2 -1
  10. package/core/types/player.lua +18 -13
  11. package/core/types/playerColor.lua +4 -3
  12. package/core/types/sound.d.ts +1 -1
  13. package/core/types/sound.lua +14 -9
  14. package/core/types/unit.d.ts +5 -0
  15. package/core/types/unit.lua +5 -0
  16. package/core/util.d.ts +3 -1
  17. package/core/util.lua +109 -3
  18. package/decl/native.d.ts +705 -7
  19. package/engine/behaviour/ability/apply-unit-behavior.lua +5 -0
  20. package/engine/behaviour/ability/damage.d.ts +4 -0
  21. package/engine/behaviour/ability/damage.lua +19 -15
  22. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  23. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  24. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  25. package/engine/behaviour/ability.d.ts +11 -5
  26. package/engine/behaviour/ability.lua +54 -0
  27. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  28. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  29. package/engine/behaviour/unit.d.ts +1 -0
  30. package/engine/behaviour/unit.lua +14 -3
  31. package/engine/buff.d.ts +61 -25
  32. package/engine/buff.lua +330 -156
  33. package/engine/index.d.ts +2 -1
  34. package/engine/internal/ability.d.ts +4 -0
  35. package/engine/internal/ability.lua +56 -36
  36. package/engine/internal/item/fields.d.ts +12 -0
  37. package/engine/internal/item/fields.lua +33 -0
  38. package/engine/internal/item/owner-cache.d.ts +5 -0
  39. package/engine/internal/item/owner-cache.lua +4 -0
  40. package/engine/internal/item+owner.d.ts +2 -0
  41. package/engine/internal/item+owner.lua +27 -4
  42. package/engine/internal/item.d.ts +20 -5
  43. package/engine/internal/item.lua +146 -57
  44. package/engine/internal/mechanics/cast-ability.lua +6 -3
  45. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  46. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  47. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  48. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  49. package/engine/internal/object-data/health-bonus.lua +16 -0
  50. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  51. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  52. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  53. package/engine/internal/object-data/mana-bonus.lua +16 -0
  54. package/engine/internal/unit/ability.lua +15 -3
  55. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  56. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  57. package/engine/internal/unit/appearance.d.ts +15 -0
  58. package/engine/internal/unit/appearance.lua +85 -0
  59. package/engine/internal/unit/bonus.d.ts +12 -0
  60. package/engine/internal/unit/bonus.lua +92 -8
  61. package/engine/internal/unit/buff.d.ts +2 -2
  62. package/engine/internal/unit/buff.lua +34 -19
  63. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  64. package/engine/internal/unit/equipment-inventory.lua +233 -0
  65. package/engine/internal/unit/expiration-timer.lua +1 -1
  66. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  67. package/engine/internal/unit/extended-inventory.lua +99 -0
  68. package/engine/internal/unit/ignore-events-items.lua +10 -1
  69. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  70. package/engine/internal/unit/inventory.lua +87 -0
  71. package/engine/internal/unit/item-container.d.ts +25 -0
  72. package/engine/internal/unit/item-container.lua +11 -0
  73. package/engine/internal/unit/item-order-events.d.ts +17 -0
  74. package/engine/internal/unit/item-order-events.lua +67 -0
  75. package/engine/internal/unit/item-slot.d.ts +27 -0
  76. package/engine/internal/unit/item-slot.lua +92 -0
  77. package/engine/internal/unit/order.d.ts +3 -3
  78. package/engine/internal/unit/order.lua +10 -10
  79. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  80. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  81. package/engine/internal/unit/range-event.d.ts +12 -0
  82. package/engine/internal/unit/range-event.lua +90 -0
  83. package/engine/internal/unit+ability.d.ts +2 -1
  84. package/engine/internal/unit+ability.lua +63 -2
  85. package/engine/internal/unit+bonus.lua +3 -3
  86. package/engine/internal/unit+damage.d.ts +9 -0
  87. package/engine/internal/unit+damage.lua +33 -0
  88. package/engine/internal/unit+rally.lua +9 -31
  89. package/engine/internal/unit-missile-data.lua +58 -32
  90. package/engine/internal/unit-missile-launch.lua +13 -13
  91. package/engine/internal/unit.d.ts +2 -10
  92. package/engine/internal/unit.lua +92 -133
  93. package/engine/local-client.d.ts +26 -0
  94. package/engine/local-client.lua +294 -54
  95. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -0
  96. package/engine/object-data/auxiliary/attachment-preset.lua +7 -0
  97. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  98. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  99. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  100. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  101. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  102. package/engine/object-data/auxiliary/item-class.lua +2 -0
  103. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  104. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  105. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  106. package/engine/object-data/auxiliary/order-type.lua +2 -0
  107. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  108. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  109. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  110. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  111. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  112. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  113. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  114. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  115. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  116. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  117. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  118. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  119. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  120. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  121. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  122. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  123. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  124. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  125. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  126. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  127. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  128. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  129. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  130. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  131. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  132. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  133. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  134. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  135. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  136. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  137. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  138. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  139. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  140. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  141. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  142. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  143. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  144. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  145. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  146. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  147. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  148. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  149. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  150. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  151. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  152. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  153. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  154. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  155. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  156. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  157. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  158. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  159. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  160. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  161. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  162. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  163. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  164. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  165. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  166. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  167. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  168. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  169. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  170. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  171. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  172. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  173. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  174. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  175. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  176. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  177. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  178. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  179. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  180. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  181. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  182. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  183. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  184. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  185. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  186. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  187. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  188. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  189. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  190. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  191. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  192. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  193. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  194. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  195. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  196. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  197. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  198. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  199. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  200. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  201. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  202. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  203. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  204. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  205. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  206. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  207. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  208. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  209. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  210. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  211. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  212. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  213. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  214. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  215. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  216. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  217. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  218. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  219. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  220. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  221. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  222. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  223. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  224. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  225. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  226. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  227. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  228. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  229. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  230. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  231. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  232. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  233. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  234. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  235. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  236. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  237. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  238. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  239. package/engine/object-data/entry/ability-type.d.ts +25 -6
  240. package/engine/object-data/entry/ability-type.lua +244 -8
  241. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  242. package/engine/object-data/entry/buff-type.d.ts +6 -2
  243. package/engine/object-data/entry/buff-type.lua +26 -0
  244. package/engine/object-data/entry/destructible-type.d.ts +6 -2
  245. package/engine/object-data/entry/destructible-type.lua +26 -0
  246. package/engine/object-data/entry/item-type.d.ts +18 -3
  247. package/engine/object-data/entry/item-type.lua +84 -0
  248. package/engine/object-data/entry/lightning-type.d.ts +6 -8
  249. package/engine/object-data/entry/lightning-type.lua +1 -1
  250. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  251. package/engine/object-data/entry/unit-type.d.ts +47 -2
  252. package/engine/object-data/entry/unit-type.lua +383 -49
  253. package/engine/object-data/entry/upgrade.d.ts +2 -2
  254. package/engine/object-data/entry.d.ts +6 -1
  255. package/engine/object-data/entry.lua +8 -0
  256. package/engine/object-field/ability.lua +2 -2
  257. package/engine/object-field/item.d.ts +22 -0
  258. package/engine/object-field/item.lua +118 -0
  259. package/engine/object-field.d.ts +1 -1
  260. package/engine/object-field.lua +9 -7
  261. package/engine/random.d.ts +1 -0
  262. package/engine/random.lua +8 -0
  263. package/engine/standard/entries/ability-type.d.ts +3102 -7
  264. package/engine/standard/entries/ability-type.lua +0 -6
  265. package/engine/standard/entries/buff-type.d.ts +45 -0
  266. package/engine/standard/entries/buff-type.lua +43 -0
  267. package/engine/standard/entries/item-type.d.ts +1299 -0
  268. package/engine/standard/entries/item-type.lua +2 -0
  269. package/engine/standard/entries/lightning-type.d.ts +42 -15
  270. package/engine/standard/entries/lightning-type.lua +0 -14
  271. package/engine/standard/entries/unit-type.d.ts +5 -0
  272. package/engine/standard/entries/unit-type.lua +5 -0
  273. package/engine/standard/fields/item.d.ts +4 -0
  274. package/engine/standard/fields/item.lua +6 -0
  275. package/engine/unit.d.ts +6 -1
  276. package/engine/unit.lua +6 -1
  277. package/event.d.ts +1 -1
  278. package/lualib_bundle.lua +1 -1
  279. package/math.d.ts +2 -0
  280. package/math.lua +14 -0
  281. package/network.lua +25 -1
  282. package/objutil/buff.lua +10 -8
  283. package/objutil/object.lua +1 -1
  284. package/operation.d.ts +8 -1
  285. package/operation.lua +38 -18
  286. package/package.json +3 -23
  287. package/patch-lua.lua +15 -0
  288. package/utility/linked-map.d.ts +35 -0
  289. package/utility/linked-map.lua +107 -0
  290. package/utility/linked-set.d.ts +3 -1
  291. package/utility/linked-set.lua +27 -0
  292. package/utility/random.d.ts +102 -0
  293. package/utility/random.lua +273 -0
  294. package/utility/records.lua +20 -1
  295. package/utility/unordered-map.d.ts +27 -0
  296. package/utility/unordered-map.lua +99 -0
  297. package/engine/internal/unit/item.lua +0 -78
  298. /package/engine/internal/{object-data/armor-increase.d.ts → misc/unit-ability-level-natives.d.ts} +0 -0
  299. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  300. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  301. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -1,9 +1,13 @@
1
1
  /** @noSelfInFile */
2
2
  import { AttachmentPreset, AttachmentPresetInput } from "./auxiliary/attachment-preset";
3
3
  import { MutableKeys } from "../../utility/types";
4
- export type ObjectDataEntryId = (number | string) & {
4
+ import { StandardAbilityTypeId } from "../standard/entries/ability-type";
5
+ import { StandardItemTypeId } from "../standard/entries/item-type";
6
+ import { StandardLightningTypeId } from "../standard/entries/lightning-type";
7
+ export type CustomObjectDataEntryId = (number | string) & {
5
8
  readonly __objectDataEntryId: unique symbol;
6
9
  };
10
+ export type ObjectDataEntryId = CustomObjectDataEntryId | StandardAbilityTypeId | StandardItemTypeId | StandardLightningTypeId;
7
11
  export type ObjectDataEntryIdType<T extends ObjectDataEntry> = T extends ObjectDataEntry<infer Id> ? Id : never;
8
12
  export type ObjectDataEntryConstructor<T extends ObjectDataEntry> = OmitConstructor<typeof ObjectDataEntry> & (new (object: WarObject) => T);
9
13
  export type ObjectDataEntryAbstractConstructor<T extends ObjectDataEntry> = OmitConstructor<typeof ObjectDataEntry> & (abstract new (object: WarObject) => T);
@@ -38,6 +42,7 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
38
42
  setFieldValue<This extends this, Args extends any[]>(this: This, field: {
39
43
  setValue(entry: This, ...args: Args): boolean;
40
44
  }, ...args: Args): void;
45
+ copyFrom(id: Id): void;
41
46
  protected getBooleanField(field: string): boolean;
42
47
  protected setBooleanField(field: string, value: boolean): void;
43
48
  protected getNumberField(field: string): number;
@@ -181,6 +181,14 @@ end
181
181
  function ObjectDataEntry.prototype.setFieldValue(self, field, ...)
182
182
  check(field:setValue(self, ...))
183
183
  end
184
+ function ObjectDataEntry.prototype.copyFrom(self, id)
185
+ local that = self.type:of(id)
186
+ if that == nil then
187
+ return
188
+ end
189
+ for ____, field in ipairs(self.object.all) do
190
+ end
191
+ end
184
192
  function ObjectDataEntry.prototype.getBooleanField(self, field)
185
193
  return dataToBoolean(self.object:getField(field))
186
194
  end
@@ -519,9 +519,9 @@ __TS__SetDescriptor(
519
519
  )
520
520
  ____exports.resolveCurrentAbilityDependentValue = function(ability, value)
521
521
  if __TS__InstanceOf(value, ____exports.AbilityField) then
522
- return value:getValue(ability)
522
+ return value:getValue(ability, true)
523
523
  elseif __TS__InstanceOf(value, ____exports.AbilityLevelField) then
524
- return value:getValue(ability, ability.level)
524
+ return value:getValue(ability, ability.level, true)
525
525
  elseif type(value) == "function" then
526
526
  return value(ability)
527
527
  else
@@ -0,0 +1,22 @@
1
+ /** @noSelfInFile */
2
+ import { ObjectField } from "../object-field";
3
+ import { Item } from "../internal/item";
4
+ import { ItemType, ItemTypeId } from "../object-data/entry/item-type";
5
+ export declare abstract class ItemField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = any> extends ObjectField<ItemType, Item, ValueType, NativeFieldType> {
6
+ protected get instanceClass(): typeof Item;
7
+ protected getObjectDataEntryId(instance: Item): ItemTypeId;
8
+ }
9
+ export declare class ItemBooleanField extends ItemField<boolean, jitembooleanfield> {
10
+ protected get defaultValue(): boolean;
11
+ protected getNativeFieldById(id: number): jitembooleanfield;
12
+ protected hasNativeFieldValue(): boolean;
13
+ protected getNativeFieldValue(instance: Item): boolean;
14
+ protected setNativeFieldValue(instance: Item, value: boolean): boolean;
15
+ }
16
+ export declare class ItemIntegerField extends ItemField<number, jitemintegerfield> {
17
+ protected get defaultValue(): number;
18
+ protected getNativeFieldById(id: number): jitemintegerfield;
19
+ protected hasNativeFieldValue(): boolean;
20
+ protected getNativeFieldValue(instance: Item): number;
21
+ protected setNativeFieldValue(instance: Item, value: number): boolean;
22
+ }
@@ -0,0 +1,118 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local ____exports = {}
6
+ local ____object_2Dfield = require("engine.object-field")
7
+ local ObjectField = ____object_2Dfield.ObjectField
8
+ local ____item = require("engine.internal.item")
9
+ local Item = ____item.Item
10
+ local ____lua_2Dsets = require("utility.lua-sets")
11
+ local luaSetOf = ____lua_2Dsets.luaSetOf
12
+ local convertItemBooleanField = ConvertItemBooleanField
13
+ local convertItemIntegerField = ConvertItemIntegerField
14
+ local getItemBooleanField = BlzGetItemBooleanField
15
+ local getItemIntegerField = BlzGetItemIntegerField
16
+ local isItemPawnable = IsItemPawnable
17
+ local isItemPowerup = IsItemPowerup
18
+ local setItemBooleanField = BlzSetItemBooleanField
19
+ local setItemDropOnDeath = SetItemDropOnDeath
20
+ local setItemDroppable = SetItemDroppable
21
+ local setItemPawnable = SetItemPawnable
22
+ local setItemIntegerField = BlzSetItemIntegerField
23
+ ____exports.ItemField = __TS__Class()
24
+ local ItemField = ____exports.ItemField
25
+ ItemField.name = "ItemField"
26
+ __TS__ClassExtends(ItemField, ObjectField)
27
+ function ItemField.prototype.getObjectDataEntryId(self, instance)
28
+ return instance.typeId
29
+ end
30
+ __TS__SetDescriptor(
31
+ ItemField.prototype,
32
+ "instanceClass",
33
+ {get = function(self)
34
+ return Item
35
+ end},
36
+ true
37
+ )
38
+ local nativeItemBooleanFieldIds = luaSetOf(
39
+ fourCC("ipaw"),
40
+ fourCC("iusa")
41
+ )
42
+ ____exports.ItemBooleanField = __TS__Class()
43
+ local ItemBooleanField = ____exports.ItemBooleanField
44
+ ItemBooleanField.name = "ItemBooleanField"
45
+ __TS__ClassExtends(ItemBooleanField, ____exports.ItemField)
46
+ function ItemBooleanField.prototype.getNativeFieldById(self, id)
47
+ return convertItemBooleanField(id)
48
+ end
49
+ function ItemBooleanField.prototype.hasNativeFieldValue(self)
50
+ return nativeItemBooleanFieldIds[self.id] ~= nil
51
+ end
52
+ function ItemBooleanField.prototype.getNativeFieldValue(self, instance)
53
+ return getItemBooleanField(instance.handle, self.nativeField)
54
+ end
55
+ function ItemBooleanField.prototype.setNativeFieldValue(self, instance, value)
56
+ if self.id == fourCC("iusa") then
57
+ local handle = instance.handle
58
+ local powerUp = isItemPowerup(handle)
59
+ local perishes = getItemBooleanField(handle, ITEM_BF_PERISHABLE)
60
+ local dropsOnDeath = getItemBooleanField(handle, ITEM_BF_DROPPED_WHEN_CARRIER_DIES)
61
+ local canBeDropped = getItemBooleanField(handle, ITEM_BF_CAN_BE_DROPPED)
62
+ local canBeSold = isItemPawnable(handle)
63
+ local result = setItemBooleanField(handle, ITEM_BF_ACTIVELY_USED, value)
64
+ setItemPawnable(handle, canBeSold)
65
+ setItemDroppable(handle, canBeDropped)
66
+ setItemDropOnDeath(handle, dropsOnDeath)
67
+ setItemBooleanField(handle, ITEM_BF_PERISHABLE, perishes)
68
+ setItemBooleanField(handle, ITEM_BF_USE_AUTOMATICALLY_WHEN_ACQUIRED, powerUp)
69
+ return result
70
+ end
71
+ return setItemBooleanField(instance.handle, self.nativeField, value)
72
+ end
73
+ __TS__SetDescriptor(
74
+ ItemBooleanField.prototype,
75
+ "defaultValue",
76
+ {get = function(self)
77
+ return false
78
+ end},
79
+ true
80
+ )
81
+ local nativeItemIntegerFieldIds = luaSetOf(
82
+ fourCC("ilev"),
83
+ fourCC("iuse"),
84
+ fourCC("icid"),
85
+ fourCC("ihtp"),
86
+ fourCC("ihpc"),
87
+ fourCC("ipri"),
88
+ fourCC("iarm"),
89
+ fourCC("iclr"),
90
+ fourCC("iclg"),
91
+ fourCC("iclb"),
92
+ fourCC("ical")
93
+ )
94
+ ____exports.ItemIntegerField = __TS__Class()
95
+ local ItemIntegerField = ____exports.ItemIntegerField
96
+ ItemIntegerField.name = "ItemIntegerField"
97
+ __TS__ClassExtends(ItemIntegerField, ____exports.ItemField)
98
+ function ItemIntegerField.prototype.getNativeFieldById(self, id)
99
+ return convertItemIntegerField(id)
100
+ end
101
+ function ItemIntegerField.prototype.hasNativeFieldValue(self)
102
+ return nativeItemIntegerFieldIds[self.id] ~= nil
103
+ end
104
+ function ItemIntegerField.prototype.getNativeFieldValue(self, instance)
105
+ return getItemIntegerField(instance.handle, self.nativeField)
106
+ end
107
+ function ItemIntegerField.prototype.setNativeFieldValue(self, instance, value)
108
+ return setItemIntegerField(instance.handle, self.nativeField, value)
109
+ end
110
+ __TS__SetDescriptor(
111
+ ItemIntegerField.prototype,
112
+ "defaultValue",
113
+ {get = function(self)
114
+ return 0
115
+ end},
116
+ true
117
+ )
118
+ return ____exports
@@ -88,7 +88,7 @@ export declare abstract class ObjectLevelField<ObjectDataEntryType extends Objec
88
88
  protected abstract getNativeFieldValue(instance: InstanceType, level: number): ValueType;
89
89
  protected abstract setNativeFieldValue(instance: InstanceType, level: number, value: ValueType): boolean;
90
90
  protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
91
- getValue<LevelType extends [number] | []>(entry: ObjectDataEntryType | InstanceType, ...[level]: LevelType): LevelType extends [number] ? ValueType : ValueType[];
91
+ getValue<LevelType extends [number, boolean?] | [boolean?]>(entry: ObjectDataEntryType | InstanceType, ...[level, includeModifiers]: LevelType): LevelType extends [number, boolean?] ? ValueType : ValueType[];
92
92
  setValue(entry: ObjectDataEntryType | InstanceType, ...[levelOrValue, value]: [value: ObjectDataEntryLevelFieldValueSupplier<InputValueType, ValueType>] | [level: number, value: InputValueType]): boolean;
93
93
  updateActualValue(instance: InstanceType, level?: number): void;
94
94
  applyModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): void;
@@ -403,12 +403,12 @@ ____exports.ObjectLevelField = __TS__Class()
403
403
  local ObjectLevelField = ____exports.ObjectLevelField
404
404
  ObjectLevelField.name = "ObjectLevelField"
405
405
  __TS__ClassExtends(ObjectLevelField, ObjectFieldBase)
406
- function ObjectLevelField.prototype.getValue(self, entry, level)
406
+ function ObjectLevelField.prototype.getValue(self, entry, level, includeModifiers)
407
407
  if level == nil then
408
408
  local result = {}
409
409
  local levelCount = self:getLevelCount(entry)
410
410
  for i = 0, levelCount - 1 do
411
- result[i + 1] = self:getValue(entry, i)
411
+ result[i + 1] = self:getValue(entry, i, includeModifiers)
412
412
  end
413
413
  return result
414
414
  end
@@ -426,11 +426,13 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
426
426
  end
427
427
  return self.defaultValue
428
428
  end
429
- local ____opt_22 = self.originalValueByLevelByInstance
430
- local ____opt_20 = ____opt_22 and ____opt_22[entry]
431
- local originalValue = ____opt_20 and ____opt_20[level]
432
- if originalValue ~= nil then
433
- return originalValue
429
+ if not includeModifiers then
430
+ local ____opt_22 = self.originalValueByLevelByInstance
431
+ local ____opt_20 = ____opt_22 and ____opt_22[entry]
432
+ local originalValue = ____opt_20 and ____opt_20[level]
433
+ if originalValue ~= nil then
434
+ return originalValue
435
+ end
434
436
  end
435
437
  return self:getActualValue(entry, level)
436
438
  end
@@ -18,3 +18,4 @@ export declare const random: {
18
18
  <T>(element: T, ...elements: T[]): T;
19
19
  <T>(...elements: T[]): T | undefined;
20
20
  };
21
+ export declare const shuffle: (array: unknown[]) => void;
package/engine/random.lua CHANGED
@@ -28,4 +28,12 @@ ____exports.random = function(...)
28
28
  ...
29
29
  ))
30
30
  end
31
+ ____exports.shuffle = function(array)
32
+ for i = #array - 1, 1 do
33
+ local j = getRandomInt(0, i)
34
+ local value = array[i + 1]
35
+ array[i + 1] = array[j + 1]
36
+ array[j + 1] = value
37
+ end
38
+ end
31
39
  return ____exports