warscript 0.0.1-dev.989e1a3 → 0.0.1-dev.9a5718b

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 (276) hide show
  1. package/core/types/effect.d.ts +11 -1
  2. package/core/types/effect.lua +43 -77
  3. package/core/types/frame.d.ts +1 -0
  4. package/core/types/frame.lua +112 -37
  5. package/core/types/handle.lua +9 -9
  6. package/core/types/item.d.ts +1 -0
  7. package/core/types/item.lua +1 -0
  8. package/core/types/player.d.ts +2 -1
  9. package/core/types/player.lua +18 -13
  10. package/core/types/playerColor.lua +4 -3
  11. package/core/types/sound.d.ts +1 -1
  12. package/core/types/sound.lua +14 -9
  13. package/core/types/unit.d.ts +5 -0
  14. package/core/types/unit.lua +5 -0
  15. package/core/util.d.ts +3 -1
  16. package/core/util.lua +109 -3
  17. package/decl/native.d.ts +705 -7
  18. package/engine/behaviour/ability/damage.d.ts +4 -0
  19. package/engine/behaviour/ability/damage.lua +19 -15
  20. package/engine/behaviour/ability/emulate-impact.lua +5 -4
  21. package/engine/behaviour/ability/on-command-impact.d.ts +1 -0
  22. package/engine/behaviour/ability/on-command-impact.lua +1 -0
  23. package/engine/behaviour/ability.d.ts +10 -5
  24. package/engine/behaviour/ability.lua +40 -0
  25. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  26. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  27. package/engine/behaviour/unit.d.ts +1 -0
  28. package/engine/behaviour/unit.lua +14 -3
  29. package/engine/buff.d.ts +61 -25
  30. package/engine/buff.lua +330 -156
  31. package/engine/index.d.ts +2 -1
  32. package/engine/internal/ability.d.ts +4 -0
  33. package/engine/internal/ability.lua +52 -33
  34. package/engine/internal/item/fields.d.ts +12 -0
  35. package/engine/internal/item/fields.lua +33 -0
  36. package/engine/internal/item/owner-cache.d.ts +5 -0
  37. package/engine/internal/item/owner-cache.lua +4 -0
  38. package/engine/internal/item+owner.d.ts +2 -0
  39. package/engine/internal/item+owner.lua +27 -4
  40. package/engine/internal/item.d.ts +20 -5
  41. package/engine/internal/item.lua +146 -57
  42. package/engine/internal/mechanics/cast-ability.lua +6 -3
  43. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  44. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  45. package/engine/internal/object-data/health-bonus.lua +16 -0
  46. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  47. package/engine/internal/object-data/mana-bonus.lua +16 -0
  48. package/engine/internal/unit/ability.lua +15 -3
  49. package/engine/internal/unit/add-item-to-slot-init.lua +3 -14
  50. package/engine/internal/unit/add-item-to-slot.lua +53 -12
  51. package/engine/internal/unit/appearance.d.ts +15 -0
  52. package/engine/internal/unit/appearance.lua +85 -0
  53. package/engine/internal/unit/attributes.d.ts +17 -0
  54. package/engine/internal/unit/attributes.lua +46 -0
  55. package/engine/internal/unit/bonus.d.ts +4 -0
  56. package/engine/internal/unit/bonus.lua +23 -3
  57. package/engine/internal/unit/buff.d.ts +2 -2
  58. package/engine/internal/unit/buff.lua +34 -19
  59. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  60. package/engine/internal/unit/equipment-inventory.lua +233 -0
  61. package/engine/internal/unit/expiration-timer.lua +1 -1
  62. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  63. package/engine/internal/unit/extended-inventory.lua +99 -0
  64. package/engine/internal/unit/fly-height.lua +3 -3
  65. package/engine/internal/unit/ignore-events-items.lua +10 -1
  66. package/engine/internal/unit/interrupts.d.ts +12 -0
  67. package/engine/internal/unit/interrupts.lua +28 -0
  68. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +7 -3
  69. package/engine/internal/unit/inventory.lua +87 -0
  70. package/engine/internal/unit/item-container.d.ts +25 -0
  71. package/engine/internal/unit/item-container.lua +11 -0
  72. package/engine/internal/unit/item-order-events.d.ts +17 -0
  73. package/engine/internal/unit/item-order-events.lua +67 -0
  74. package/engine/internal/unit/item-slot.d.ts +27 -0
  75. package/engine/internal/unit/item-slot.lua +92 -0
  76. package/engine/internal/unit/order.d.ts +3 -3
  77. package/engine/internal/unit/order.lua +10 -10
  78. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  79. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  80. package/engine/internal/unit/range-event.d.ts +12 -0
  81. package/engine/internal/unit/range-event.lua +90 -0
  82. package/engine/internal/unit/scale.lua +3 -3
  83. package/engine/internal/unit+ability.lua +2 -2
  84. package/engine/internal/unit+bonus.lua +3 -3
  85. package/engine/internal/unit+damage.d.ts +9 -0
  86. package/engine/internal/unit+damage.lua +33 -0
  87. package/engine/internal/unit+rally.lua +9 -31
  88. package/engine/internal/unit-missile-data.lua +58 -32
  89. package/engine/internal/unit-missile-launch.lua +25 -18
  90. package/engine/internal/unit.d.ts +3 -18
  91. package/engine/internal/unit.lua +97 -195
  92. package/engine/local-client.d.ts +26 -0
  93. package/engine/local-client.lua +294 -54
  94. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  95. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  96. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  97. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  98. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  99. package/engine/object-data/auxiliary/item-class.lua +2 -0
  100. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  101. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  102. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  103. package/engine/object-data/auxiliary/order-type.lua +2 -0
  104. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  105. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  106. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  107. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  108. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  109. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  110. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  111. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  112. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  113. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  114. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  115. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  116. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  117. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  118. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  119. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  120. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  121. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  122. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  123. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  124. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  125. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  126. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  127. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  128. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  129. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  130. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  131. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  132. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  133. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  134. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  135. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  136. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  137. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  138. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  139. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  140. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  141. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  142. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  143. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  144. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  145. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  146. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  147. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  148. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  149. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  150. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  151. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  152. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  153. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  154. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  155. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  156. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  157. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  158. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  159. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  160. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  161. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  162. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  163. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  164. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  165. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  166. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  167. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  168. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  169. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  170. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  171. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  172. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  173. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  174. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  175. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  176. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  177. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  178. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  179. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  180. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  181. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  182. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  183. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  184. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  185. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  186. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  187. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  188. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  189. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  190. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  191. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  192. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  193. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  194. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  195. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  196. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  197. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  198. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  199. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  200. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  201. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  202. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  203. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  204. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  205. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  206. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  207. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  208. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  209. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  210. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  211. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  212. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  213. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  214. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  215. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  216. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  217. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  218. package/engine/object-data/entry/ability-type.d.ts +12 -3
  219. package/engine/object-data/entry/ability-type.lua +137 -4
  220. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  221. package/engine/object-data/entry/buff-type.d.ts +6 -2
  222. package/engine/object-data/entry/buff-type.lua +26 -0
  223. package/engine/object-data/entry/destructible-type.d.ts +6 -2
  224. package/engine/object-data/entry/destructible-type.lua +26 -0
  225. package/engine/object-data/entry/item-type.d.ts +18 -3
  226. package/engine/object-data/entry/item-type.lua +84 -0
  227. package/engine/object-data/entry/lightning-type.d.ts +2 -2
  228. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  229. package/engine/object-data/entry/unit-type.d.ts +47 -2
  230. package/engine/object-data/entry/unit-type.lua +383 -49
  231. package/engine/object-data/entry/upgrade.d.ts +2 -2
  232. package/engine/object-data/entry.d.ts +4 -1
  233. package/engine/object-field/ability.lua +2 -2
  234. package/engine/object-field/item.d.ts +22 -0
  235. package/engine/object-field/item.lua +118 -0
  236. package/engine/object-field.d.ts +3 -1
  237. package/engine/object-field.lua +42 -18
  238. package/engine/random.d.ts +1 -0
  239. package/engine/random.lua +8 -0
  240. package/engine/standard/entries/ability-type.d.ts +3102 -7
  241. package/engine/standard/entries/ability-type.lua +0 -6
  242. package/engine/standard/entries/item-type.d.ts +1299 -0
  243. package/engine/standard/entries/item-type.lua +2 -0
  244. package/engine/standard/entries/unit-type.d.ts +5 -0
  245. package/engine/standard/entries/unit-type.lua +5 -0
  246. package/engine/standard/fields/item.d.ts +4 -0
  247. package/engine/standard/fields/item.lua +6 -0
  248. package/engine/standard/fields/unit.d.ts +11 -6
  249. package/engine/standard/fields/unit.lua +12 -5
  250. package/engine/unit.d.ts +8 -1
  251. package/engine/unit.lua +8 -1
  252. package/event.d.ts +1 -1
  253. package/lualib_bundle.lua +1 -1
  254. package/math.d.ts +2 -0
  255. package/math.lua +14 -0
  256. package/network.lua +25 -1
  257. package/objutil/buff.lua +10 -8
  258. package/objutil/object.lua +1 -1
  259. package/operation.d.ts +8 -1
  260. package/operation.lua +38 -18
  261. package/package.json +3 -23
  262. package/patch-lua.lua +15 -0
  263. package/utility/linked-map.d.ts +35 -0
  264. package/utility/linked-map.lua +107 -0
  265. package/utility/linked-set.d.ts +3 -1
  266. package/utility/linked-set.lua +27 -0
  267. package/utility/random.d.ts +102 -0
  268. package/utility/random.lua +273 -0
  269. package/utility/records.lua +20 -1
  270. package/utility/unordered-map.d.ts +27 -0
  271. package/utility/unordered-map.lua +99 -0
  272. package/engine/internal/unit/item.lua +0 -78
  273. /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
  274. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  275. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  276. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -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
@@ -46,6 +46,7 @@ export declare abstract class ObjectField<ObjectDataEntryType extends ObjectData
46
46
  private modifiersByInstance?;
47
47
  getValue(entry: ObjectDataEntryType | InstanceType, includeModifiers?: boolean): ValueType;
48
48
  setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType): boolean;
49
+ updateActualValue(instance: InstanceType): void;
49
50
  applyModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): void;
50
51
  removeModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): boolean;
51
52
  removeValue(entry: ObjectDataEntryType): boolean;
@@ -87,8 +88,9 @@ export declare abstract class ObjectLevelField<ObjectDataEntryType extends Objec
87
88
  protected abstract getNativeFieldValue(instance: InstanceType, level: number): ValueType;
88
89
  protected abstract setNativeFieldValue(instance: InstanceType, level: number, value: ValueType): boolean;
89
90
  protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
90
- 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[];
91
92
  setValue(entry: ObjectDataEntryType | InstanceType, ...[levelOrValue, value]: [value: ObjectDataEntryLevelFieldValueSupplier<InputValueType, ValueType>] | [level: number, value: InputValueType]): boolean;
93
+ updateActualValue(instance: InstanceType, level?: number): void;
92
94
  applyModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): void;
93
95
  removeModifier(instance: InstanceType, modifier: ObjectLevelFieldModifier<InstanceType, ValueType>): boolean;
94
96
  trySetValue(entry: ObjectDataEntryType | InstanceType, levelOrValue: number | unknown, value?: unknown): boolean;
@@ -139,7 +139,7 @@ function ObjectField.prototype.setValue(self, entry, value)
139
139
  return true
140
140
  end
141
141
  originalValueByInstance[entry] = value
142
- value = self:calculateActualValue(entry)
142
+ value = (self:calculateActualValue(entry))
143
143
  end
144
144
  end
145
145
  local previousValue = self:setActualValue(entry, value)
@@ -163,6 +163,12 @@ function ObjectField.prototype.setValue(self, entry, value)
163
163
  end
164
164
  return true
165
165
  end
166
+ function ObjectField.prototype.updateActualValue(self, instance)
167
+ local actualValue, hasModifiers = self:calculateActualValue(instance)
168
+ if hasModifiers then
169
+ self:setActualValue(instance, actualValue)
170
+ end
171
+ end
166
172
  function ObjectField.prototype.applyModifier(self, instance, modifier)
167
173
  local modifiersByInstance = self.modifiersByInstance
168
174
  if modifiersByInstance == nil then
@@ -182,10 +188,7 @@ function ObjectField.prototype.applyModifier(self, instance, modifier)
182
188
  ____originalValueByInstance_instance_3 = self:getActualValue(instance)
183
189
  end
184
190
  ____originalValueByInstance_4[____instance_5] = ____originalValueByInstance_instance_3
185
- self:setActualValue(
186
- instance,
187
- self:calculateActualValue(instance)
188
- )
191
+ self:setActualValue(instance, (self:calculateActualValue(instance)))
189
192
  end
190
193
  end
191
194
  function ObjectField.prototype.removeModifier(self, instance, modifier)
@@ -193,10 +196,7 @@ function ObjectField.prototype.removeModifier(self, instance, modifier)
193
196
  if modifiersByInstance ~= nil then
194
197
  local modifiers = modifiersByInstance[instance]
195
198
  if modifiers ~= nil and modifiers:remove(modifier) then
196
- self:setActualValue(
197
- instance,
198
- self:calculateActualValue(instance)
199
- )
199
+ self:setActualValue(instance, (self:calculateActualValue(instance)))
200
200
  return true
201
201
  end
202
202
  end
@@ -283,10 +283,11 @@ function ObjectField.prototype.calculateActualValue(self, instance)
283
283
  for modifier in pairs(modifiers) do
284
284
  value = modifier(instance, value, originalValue)
285
285
  end
286
+ return value, true
286
287
  end
287
- return value
288
+ return value, false
288
289
  end
289
- return self.defaultValue
290
+ return self.defaultValue, false
290
291
  end
291
292
  function ObjectField.prototype.invokeValueChangeEvent(self, ...)
292
293
  self:invokeValueChangeEventRecursive(
@@ -402,12 +403,12 @@ ____exports.ObjectLevelField = __TS__Class()
402
403
  local ObjectLevelField = ____exports.ObjectLevelField
403
404
  ObjectLevelField.name = "ObjectLevelField"
404
405
  __TS__ClassExtends(ObjectLevelField, ObjectFieldBase)
405
- function ObjectLevelField.prototype.getValue(self, entry, level)
406
+ function ObjectLevelField.prototype.getValue(self, entry, level, includeModifiers)
406
407
  if level == nil then
407
408
  local result = {}
408
409
  local levelCount = self:getLevelCount(entry)
409
410
  for i = 0, levelCount - 1 do
410
- result[i + 1] = self:getValue(entry, i)
411
+ result[i + 1] = self:getValue(entry, i, includeModifiers)
411
412
  end
412
413
  return result
413
414
  end
@@ -425,11 +426,13 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
425
426
  end
426
427
  return self.defaultValue
427
428
  end
428
- local ____opt_22 = self.originalValueByLevelByInstance
429
- local ____opt_20 = ____opt_22 and ____opt_22[entry]
430
- local originalValue = ____opt_20 and ____opt_20[level]
431
- if originalValue ~= nil then
432
- 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
433
436
  end
434
437
  return self:getActualValue(entry, level)
435
438
  end
@@ -512,6 +515,27 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
512
515
  end
513
516
  return true
514
517
  end
518
+ function ObjectLevelField.prototype.updateActualValue(self, instance, level)
519
+ local modifiersByInstance = self.modifiersByInstance
520
+ if modifiersByInstance == nil then
521
+ return
522
+ end
523
+ local modifiers = modifiersByInstance[instance]
524
+ if modifiers == nil or modifiers.size == 0 then
525
+ return
526
+ end
527
+ if level == nil then
528
+ for i = 0, self:getLevelCount(instance) - 1 do
529
+ self:updateActualValue(instance, i)
530
+ end
531
+ return
532
+ end
533
+ self:setActualValue(
534
+ instance,
535
+ level,
536
+ self:calculateActualValue(instance, level)
537
+ )
538
+ end
515
539
  function ObjectLevelField.prototype.applyModifier(self, instance, modifier)
516
540
  local modifiersByInstance = self.modifiersByInstance
517
541
  if modifiersByInstance == nil then
@@ -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