warscript 0.0.1-dev.ee2345e → 0.0.1-dev.ef189a5

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 (261) hide show
  1. package/attributes.d.ts +6 -1
  2. package/attributes.lua +17 -1
  3. package/binaryreader.d.ts +1 -0
  4. package/binaryreader.lua +3 -0
  5. package/config.d.ts +5 -0
  6. package/config.lua +10 -0
  7. package/core/types/effect.d.ts +14 -6
  8. package/core/types/effect.lua +131 -35
  9. package/core/types/frame.d.ts +8 -1
  10. package/core/types/frame.lua +117 -22
  11. package/core/types/group.d.ts +0 -1
  12. package/core/types/image.d.ts +0 -1
  13. package/core/types/missile.d.ts +2 -2
  14. package/core/types/missile.lua +8 -2
  15. package/core/types/player.d.ts +16 -0
  16. package/core/types/player.lua +60 -15
  17. package/core/types/playerCamera.d.ts +2 -0
  18. package/core/types/playerCamera.lua +123 -5
  19. package/core/types/sound.d.ts +17 -24
  20. package/core/types/sound.lua +99 -24
  21. package/core/types/tileCell.d.ts +11 -1
  22. package/core/types/tileCell.lua +97 -0
  23. package/core/types/timer.d.ts +9 -8
  24. package/core/types/timer.lua +45 -23
  25. package/core/types/unit.lua +8 -0
  26. package/core/util.d.ts +1 -1
  27. package/core/util.lua +18 -1
  28. package/decl/index.d.ts +1 -0
  29. package/decl/native.d.ts +846 -790
  30. package/engine/ability.d.ts +1 -1
  31. package/engine/behavior.d.ts +22 -11
  32. package/engine/behavior.lua +175 -73
  33. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  34. package/engine/behaviour/ability/always-enabled.lua +31 -0
  35. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  36. package/engine/behaviour/ability/apply-buff.lua +36 -4
  37. package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
  38. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  39. package/engine/behaviour/ability/damage.d.ts +39 -11
  40. package/engine/behaviour/ability/damage.lua +83 -37
  41. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  42. package/engine/behaviour/ability/emulate-impact.lua +43 -0
  43. package/engine/behaviour/ability/heal.d.ts +33 -6
  44. package/engine/behaviour/ability/heal.lua +89 -10
  45. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  46. package/engine/behaviour/ability/instant-impact.lua +4 -15
  47. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  48. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  49. package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
  50. package/engine/behaviour/ability/remove-buffs.lua +49 -0
  51. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  52. package/engine/behaviour/ability/restore-mana.lua +29 -0
  53. package/engine/behaviour/ability.d.ts +29 -5
  54. package/engine/behaviour/ability.lua +154 -27
  55. package/engine/behaviour/unit/stun-immunity.d.ts +11 -6
  56. package/engine/behaviour/unit/stun-immunity.lua +53 -28
  57. package/engine/behaviour/unit.d.ts +48 -4
  58. package/engine/behaviour/unit.lua +282 -2
  59. package/engine/buff.d.ts +114 -44
  60. package/engine/buff.lua +525 -224
  61. package/engine/game-map.d.ts +7 -0
  62. package/engine/game-map.lua +32 -0
  63. package/engine/internal/ability.d.ts +23 -14
  64. package/engine/internal/ability.lua +129 -85
  65. package/engine/internal/item/ability.lua +162 -4
  66. package/engine/internal/item+owner.lua +12 -6
  67. package/engine/internal/item.d.ts +20 -19
  68. package/engine/internal/item.lua +191 -74
  69. package/engine/internal/mechanics/ability-duration.lua +1 -1
  70. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  71. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  72. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  73. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  74. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  75. package/engine/internal/misc/frame-coordinates.lua +21 -0
  76. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  77. package/engine/internal/misc/get-terrain-z.lua +11 -0
  78. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  79. package/engine/internal/misc/player-local-handle.lua +5 -0
  80. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  81. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  82. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  83. package/engine/internal/object-data/evasion-probability.lua +16 -0
  84. package/engine/internal/unit/ability.d.ts +45 -1
  85. package/engine/internal/unit/ability.lua +128 -17
  86. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  87. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  88. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  89. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  90. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  91. package/engine/internal/unit/allowed-targets.lua +9 -1
  92. package/engine/internal/unit/bonus.d.ts +11 -8
  93. package/engine/internal/unit/bonus.lua +23 -1
  94. package/engine/internal/unit/fly-height.d.ts +7 -0
  95. package/engine/internal/unit/fly-height.lua +20 -0
  96. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  97. package/engine/internal/unit/ignore-events-items.lua +5 -0
  98. package/engine/internal/unit/item.d.ts +24 -0
  99. package/engine/internal/unit/item.lua +78 -0
  100. package/engine/internal/unit/main-selected.d.ts +13 -0
  101. package/engine/internal/unit/main-selected.lua +36 -0
  102. package/engine/internal/unit/order.d.ts +20 -0
  103. package/engine/internal/unit/order.lua +136 -0
  104. package/engine/internal/unit/scale.d.ts +7 -0
  105. package/engine/internal/unit/scale.lua +20 -0
  106. package/engine/internal/unit+ability.lua +12 -3
  107. package/engine/internal/unit+damage.d.ts +2 -11
  108. package/engine/internal/unit+damage.lua +10 -14
  109. package/engine/internal/unit+spellSteal.lua +1 -2
  110. package/engine/internal/unit+transport.lua +4 -10
  111. package/engine/internal/unit-missile-launch.lua +63 -13
  112. package/engine/internal/unit.d.ts +96 -28
  113. package/engine/internal/unit.lua +648 -241
  114. package/engine/internal/utility.lua +12 -0
  115. package/engine/lightning.d.ts +12 -5
  116. package/engine/lightning.lua +48 -14
  117. package/engine/local-client.d.ts +9 -2
  118. package/engine/local-client.lua +112 -0
  119. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  120. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  121. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  122. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  123. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -3
  124. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  125. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  126. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  127. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  128. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  129. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  130. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  131. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  132. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  133. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  134. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  135. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  136. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  137. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  138. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
  139. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  140. package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
  141. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  142. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  143. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  144. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  145. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  146. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  147. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  148. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  149. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  150. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  151. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  152. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  153. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  154. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  155. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  156. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  157. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  158. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  159. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  160. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  161. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  162. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  163. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  164. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  165. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  166. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  167. package/engine/object-data/entry/ability-type/web.lua +52 -0
  168. package/engine/object-data/entry/ability-type.d.ts +19 -18
  169. package/engine/object-data/entry/ability-type.lua +93 -36
  170. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  171. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  172. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  173. package/engine/object-data/entry/buff-type.d.ts +6 -13
  174. package/engine/object-data/entry/buff-type.lua +13 -29
  175. package/engine/object-data/entry/destructible-type.d.ts +6 -3
  176. package/engine/object-data/entry/destructible-type.lua +12 -0
  177. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  178. package/engine/object-data/entry/item-type.d.ts +15 -2
  179. package/engine/object-data/entry/item-type.lua +93 -2
  180. package/engine/object-data/entry/lightning-type.d.ts +1 -2
  181. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  182. package/engine/object-data/entry/sound-preset.lua +140 -0
  183. package/engine/object-data/entry/unit-type.d.ts +62 -7
  184. package/engine/object-data/entry/unit-type.lua +524 -75
  185. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  186. package/engine/object-data/entry/upgrade.d.ts +1 -2
  187. package/engine/object-data/entry/upgrade.lua +4 -4
  188. package/engine/object-data/entry.d.ts +18 -17
  189. package/engine/object-data/entry.lua +60 -32
  190. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  191. package/engine/object-field/ability.d.ts +28 -5
  192. package/engine/object-field/ability.lua +59 -5
  193. package/engine/object-field/unit.d.ts +69 -3
  194. package/engine/object-field/unit.lua +264 -7
  195. package/engine/object-field.d.ts +23 -7
  196. package/engine/object-field.lua +311 -124
  197. package/engine/random.d.ts +10 -0
  198. package/engine/random.lua +22 -0
  199. package/engine/standard/entries/buff-type.d.ts +3 -0
  200. package/engine/standard/entries/buff-type.lua +3 -0
  201. package/engine/standard/entries/sound-preset.d.ts +10 -0
  202. package/engine/standard/entries/sound-preset.lua +10 -0
  203. package/engine/standard/entries/unit-type.d.ts +39 -1
  204. package/engine/standard/entries/unit-type.lua +39 -1
  205. package/engine/standard/fields/ability.d.ts +5 -3
  206. package/engine/standard/fields/ability.lua +5 -3
  207. package/engine/standard/fields/unit.d.ts +6 -0
  208. package/engine/standard/fields/unit.lua +11 -0
  209. package/engine/synchronization.d.ts +11 -0
  210. package/engine/synchronization.lua +77 -0
  211. package/engine/text-tag.d.ts +36 -2
  212. package/engine/text-tag.lua +250 -10
  213. package/engine/unit.d.ts +6 -0
  214. package/engine/unit.lua +15 -2
  215. package/event.d.ts +2 -3
  216. package/event.lua +9 -5
  217. package/index.d.ts +1 -0
  218. package/index.lua +1 -0
  219. package/lualib_bundle.lua +146 -42
  220. package/math/vec2.d.ts +2 -9
  221. package/math.d.ts +0 -2
  222. package/net/socket.d.ts +7 -1
  223. package/net/socket.lua +45 -4
  224. package/network.d.ts +1 -0
  225. package/network.lua +3 -2
  226. package/objutil/ability.d.ts +0 -1
  227. package/objutil/buff.d.ts +0 -1
  228. package/objutil/buff.lua +3 -4
  229. package/objutil/object.d.ts +0 -1
  230. package/objutil/unit.d.ts +0 -1
  231. package/objutil/unit.lua +8 -0
  232. package/package.json +13 -14
  233. package/patch-lua.d.ts +0 -0
  234. package/patch-lua.lua +10 -0
  235. package/patch-lualib.lua +1 -1
  236. package/property.d.ts +55 -0
  237. package/property.lua +374 -0
  238. package/string.d.ts +30 -0
  239. package/string.lua +14 -0
  240. package/util/stream.d.ts +0 -1
  241. package/utility/arrays.d.ts +13 -5
  242. package/utility/arrays.lua +45 -3
  243. package/utility/bit-set.d.ts +0 -2
  244. package/utility/callback-array.d.ts +17 -0
  245. package/utility/callback-array.lua +61 -0
  246. package/utility/functions.d.ts +8 -0
  247. package/utility/functions.lua +13 -0
  248. package/utility/lazy.d.ts +2 -0
  249. package/utility/lazy.lua +14 -0
  250. package/utility/linked-set.d.ts +13 -3
  251. package/utility/linked-set.lua +27 -3
  252. package/utility/lua-maps.d.ts +16 -4
  253. package/utility/lua-maps.lua +53 -2
  254. package/utility/lua-sets.d.ts +3 -2
  255. package/utility/lua-sets.lua +7 -0
  256. package/utility/reflection.lua +11 -7
  257. package/utility/types.d.ts +4 -0
  258. package/core/mapbounds.d.ts +0 -8
  259. package/core/mapbounds.lua +0 -12
  260. package/core/types/order.d.ts +0 -25
  261. package/core/types/order.lua +0 -55
@@ -1,4 +1,3 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { Upgrade, UpgradeId } from "../upgrade";
4
3
  export declare class BlankUpgrade extends Upgrade {
@@ -1,10 +1,9 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { TupleOf } from "../../../utility/types";
4
3
  import { TechTreeDependency, TechTreeDependencyInput } from "../auxiliary/tech-tree-dependency";
5
4
  import { ObjectDataEntry, ObjectDataEntryId, ObjectDataEntryLevelFieldValueSupplier } from "../entry";
6
5
  import { AbilityTypeId } from "./ability-type";
7
- export type UpgradeId = ObjectDataEntryId & {
6
+ export type UpgradeId = ObjectDataEntryId & number & {
8
7
  readonly __upgradeId: unique symbol;
9
8
  };
10
9
  export declare const enum UpgradeEffectType {
@@ -32,7 +32,7 @@ function Upgrade.prototype.getEffect(self, i)
32
32
  type = effectType,
33
33
  bonusBase = self:getNumberField("gba" .. tostring(i)),
34
34
  bonusIncrement = self:getNumberField("gmo" .. tostring(i)),
35
- abilityTypeId = self:getObjectDataEntryIdField("gco" .. tostring(i))
35
+ abilityTypeId = self:getObjectDataEntryNumericIdField("gco" .. tostring(i))
36
36
  }
37
37
  end
38
38
  return nil
@@ -51,7 +51,7 @@ function Upgrade.prototype.setEffect(self, i, effect)
51
51
  effect and effect.bonusIncrement or 0
52
52
  )
53
53
  if (effect and effect.abilityTypeId) ~= nil then
54
- self:setObjectDataEntryIdField(
54
+ self:setObjectDataEntryNumericIdField(
55
55
  "gco" .. tostring(i),
56
56
  effect and effect.abilityTypeId
57
57
  )
@@ -145,7 +145,7 @@ __TS__SetDescriptor(
145
145
  "techTreeDependencies",
146
146
  {
147
147
  get = function(self)
148
- local techTreeDependencyIds = self:getObjectDataEntryIdsLevelField("greq")
148
+ local techTreeDependencyIds = self:getObjectDataEntryNumericIdsLevelField("greq")
149
149
  local techTreeDependencyInternalLevels = self:getNumbersLevelField("grqc")
150
150
  return mapIndexed(
151
151
  techTreeDependencyIds,
@@ -177,7 +177,7 @@ __TS__SetDescriptor(
177
177
  function(level) return level + 1 end
178
178
  )
179
179
  end
180
- self:setObjectDataEntryIdsLevelField("greq", techTreeDependencyIds)
180
+ self:setObjectDataEntryNumericIdsLevelField("greq", techTreeDependencyIds)
181
181
  self:setNumbersLevelField("grqc", techTreeDependencyInternalLevels)
182
182
  end
183
183
  },
@@ -1,8 +1,7 @@
1
- /// <reference types="warpack-types/warpack" />
2
1
  /** @noSelfInFile */
3
2
  import { AttachmentPreset, AttachmentPresetInput } from "./auxiliary/attachment-preset";
4
3
  import { MutableKeys } from "../../utility/types";
5
- export type ObjectDataEntryId = number & {
4
+ export type ObjectDataEntryId = (number | string) & {
6
5
  readonly __objectDataEntryId: unique symbol;
7
6
  };
8
7
  export type ObjectDataEntryIdType<T extends ObjectDataEntry> = T extends ObjectDataEntry<infer Id> ? Id : never;
@@ -10,8 +9,8 @@ export type ObjectDataEntryConstructor<T extends ObjectDataEntry> = OmitConstruc
10
9
  export type ObjectDataEntryAbstractConstructor<T extends ObjectDataEntry> = OmitConstructor<typeof ObjectDataEntry> & (abstract new (object: WarObject) => T);
11
10
  export type ObjectDataEntryProperties<T extends ObjectDataEntry> = Partial<T[MutableKeys<T>]>;
12
11
  export type ObjectDataEntryLevelFieldValueSupplier<ValueType extends string | number | boolean | undefined | Record<string, any>, InputValueType = ValueType> = ValueType | readonly ValueType[] | ((level: number, currentValue: InputValueType) => ValueType);
13
- export declare const extractObjectDataEntryLevelFieldValue: <ValueType extends string | number | boolean | Record<string, any> | undefined, InputValueType = ValueType>(supplier: ObjectDataEntryLevelFieldValueSupplier<ValueType, InputValueType>, level: number, currentValue: InputValueType) => ValueType;
14
- export declare const extractObjectDataEntryLevelArrayFieldValue: <T extends string | number | boolean | Record<string, any> | undefined, S extends T[]>(supplier: ObjectDataEntryLevelFieldValueSupplier<S, S>, level: number, currentValue: S) => S;
12
+ export declare const extractObjectDataEntryLevelFieldValue: <ValueType extends string | number | boolean | undefined | Record<string, any>, InputValueType = ValueType>(supplier: ObjectDataEntryLevelFieldValueSupplier<ValueType, InputValueType>, level: number, currentValue: InputValueType) => ValueType;
13
+ export declare const extractObjectDataEntryLevelArrayFieldValue: <T extends string | number | boolean | undefined | Record<string, any>, S extends T[]>(supplier: ObjectDataEntryLevelFieldValueSupplier<S>, level: number, currentValue: S) => S;
15
14
  export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = ObjectDataEntryId> {
16
15
  protected readonly object: WarObject;
17
16
  static readonly BASE_ID: ObjectDataEntryId;
@@ -19,14 +18,16 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
19
18
  private readonly levelFieldParametersByField;
20
19
  private readonly maxAffectedLevelByField;
21
20
  private _isInternal;
21
+ private get type();
22
22
  get isInternal(): boolean;
23
- protected static generateId(): number;
23
+ static get idType(): "number" | "string";
24
+ protected static generateId(): number | string;
24
25
  protected static getObjectData(map: WarMap): WarObjects;
25
- static getAllIdsByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[]): ObjectDataEntryIdType<T>[];
26
- static create<T extends ObjectDataEntry>(this: ObjectDataEntryConstructor<T>, ...args: [id?: number, properties?: ObjectDataEntryProperties<T>] | [properties: ObjectDataEntryProperties<T>]): T;
27
- static getAllByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[]): T[];
26
+ static getAllIdsByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[] | string | string[]): ObjectDataEntryIdType<T>[];
27
+ static create<T extends ObjectDataEntry>(this: ObjectDataEntryConstructor<T>, ...args: [id?: number | string, properties?: ObjectDataEntryProperties<T>] | [properties: ObjectDataEntryProperties<T>]): T;
28
+ static getAllByBaseIds<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, baseIds: number | number[] | string | string[]): T[];
28
29
  static getAll<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>): T[];
29
- static of<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, id: number): T | undefined;
30
+ static of<T extends ObjectDataEntry>(this: ObjectDataEntryAbstractConstructor<T>, id: number | string): T | undefined;
30
31
  constructor(object: WarObject);
31
32
  get id(): Id;
32
33
  get baseId(): Id;
@@ -43,8 +44,8 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
43
44
  protected setNumberField(field: string, value: number): void;
44
45
  protected getStringField(field: string): string;
45
46
  protected setStringField(field: string, value: string): void;
46
- protected getObjectDataEntryIdField<Id extends ObjectDataEntryId>(field: string): Id;
47
- protected setObjectDataEntryIdField<Id extends ObjectDataEntryId>(field: string, value: Id): void;
47
+ protected getObjectDataEntryNumericIdField<Id extends ObjectDataEntryId & number>(field: string): Id;
48
+ protected setObjectDataEntryNumericIdField<Id extends ObjectDataEntryId & number>(field: string, value: Id): void;
48
49
  protected getAttachmentPresetField(modelPathField: string, nodeFQNField: string): AttachmentPreset | undefined;
49
50
  protected setAttachmentPresetField(modelPathField: string, nodeFQNField: string, attachmentPreset: AttachmentPresetInput | undefined): void;
50
51
  protected getBooleansField(field: string): boolean[];
@@ -53,8 +54,8 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
53
54
  protected setNumbersField(field: string, values: number[]): void;
54
55
  protected getStringsField(field: string): string[];
55
56
  protected setStringsField(field: string, values: string[]): void;
56
- protected getObjectDataEntryIdsField<Id extends ObjectDataEntryId>(field: string): Id[];
57
- protected setObjectDataEntryIdsField<Id extends ObjectDataEntryId>(field: string, values: Id[]): void;
57
+ protected getObjectDataEntryNumericIdsField<Id extends ObjectDataEntryId & number>(field: string): Id[];
58
+ protected setObjectDataEntryNumericIdsField<Id extends ObjectDataEntryId & number>(field: string, values: Id[]): void;
58
59
  protected getAttachmentPresetListField(modelPathListField: string, nodeFQNFields: string[]): AttachmentPreset[];
59
60
  protected setAttachmentPresetListField(modelPathListField: string, nodeFQNFields: string[], lengthField: string, attachmentPresets: AttachmentPresetInput[]): void;
60
61
  protected setFlagLevelFieldValue(fieldId: string, flag: 1 | 2 | 4 | 8 | 16, supplier: ObjectDataEntryLevelFieldValueSupplier<boolean>): void;
@@ -65,16 +66,16 @@ export declare abstract class ObjectDataEntry<Id extends ObjectDataEntryId = Obj
65
66
  protected setNumberLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<number>): void;
66
67
  protected getStringLevelField(field: string): string[];
67
68
  protected setStringLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<string>): void;
68
- protected getObjectDataEntryIdLevelField<Id extends ObjectDataEntryId>(field: string): Id[];
69
- protected setObjectDataEntryIdLevelField<Id extends ObjectDataEntryId>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<Id>): void;
69
+ protected getObjectDataEntryNumericIdLevelField<Id extends ObjectDataEntryId & number>(field: string): Id[];
70
+ protected setObjectDataEntryNumericIdLevelField<Id extends ObjectDataEntryId & number>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<Id>): void;
70
71
  protected getBooleansLevelField(field: string): boolean[][];
71
72
  protected setBooleansLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<boolean[]>): void;
72
73
  protected getNumbersLevelField(field: string): number[][];
73
74
  protected setNumbersLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<number[]>): void;
74
75
  protected getStringsLevelField(field: string): string[][];
75
76
  protected setStringsLevelField(field: string, values: ObjectDataEntryLevelFieldValueSupplier<string[]>): void;
76
- protected getObjectDataEntryIdsLevelField<T extends ObjectDataEntryId>(field: string): T[][];
77
- protected setObjectDataEntryIdsLevelField<T extends ObjectDataEntryId>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<T[]>): void;
77
+ protected getObjectDataEntryNumericIdsLevelField<T extends ObjectDataEntryId & number>(field: string): T[][];
78
+ protected setObjectDataEntryNumericIdsLevelField<T extends ObjectDataEntryId & number>(field: string, values: ObjectDataEntryLevelFieldValueSupplier<T[]>): void;
78
79
  private getLevelField;
79
80
  private setLevelField;
80
81
  }
@@ -7,10 +7,11 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
7
7
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
8
8
  local __TS__ArrayMap = ____lualib.__TS__ArrayMap
9
9
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
10
+ local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
10
11
  local __TS__StringSplit = ____lualib.__TS__StringSplit
11
12
  local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
12
13
  local ____exports = {}
13
- local booleanToData, dataToBoolean, numberToData, dataToNumber, stringToData, dataToString, objectDataEntryIdToData, dataToObjectDataEntryId, booleansToData, dataToBooleans, numbersToData, dataToNumbers, stringsToData, dataToStrings, objectDataEntryIdsToData, dataToObjectDataEntryIds, isDataNotBlank
14
+ local booleanToData, dataToBoolean, numberToData, dataToNumber, stringToData, dataToString, objectDataEntryNumericIdToData, dataToObjectDataEntryNumericId, objectDataEntryIdToData, dataToObjectDataEntryId, booleansToData, dataToBooleans, numbersToData, dataToNumbers, stringsToData, dataToStrings, objectDataEntryNumericIdsToData, dataToObjectDataEntryNumericIds, isDataNotBlank
14
15
  local ____attachment_2Dpreset = require("engine.object-data.auxiliary.attachment-preset")
15
16
  local extractAttachmentPresetInputModelPath = ____attachment_2Dpreset.extractAttachmentPresetInputModelPath
16
17
  local extractAttachmentPresetInputNodeFQN = ____attachment_2Dpreset.extractAttachmentPresetInputNodeFQN
@@ -124,7 +125,7 @@ function ObjectDataEntry.getAllByBaseIds(self, baseIds)
124
125
  local constructor = self
125
126
  for id, object in pairs(constructor:getObjectData(currentMap).all) do
126
127
  if dataBaseIds[object.parentId or id] ~= nil then
127
- local objectDataEntry = self:of(dataToObjectDataEntryId(id))
128
+ local objectDataEntry = self:of(dataToObjectDataEntryId(id, self.idType))
128
129
  if objectDataEntry ~= nil and not objectDataEntry.isInternal then
129
130
  result[#result + 1] = objectDataEntry
130
131
  end
@@ -139,7 +140,7 @@ function ObjectDataEntry.getAll(self)
139
140
  local constructor = self
140
141
  local result = {}
141
142
  for id in pairs(constructor:getObjectData(currentMap).all) do
142
- local objectDataEntry = self:of(dataToObjectDataEntryId(id))
143
+ local objectDataEntry = self:of(dataToObjectDataEntryId(id, self.idType))
143
144
  if objectDataEntry ~= nil and not objectDataEntry.isInternal then
144
145
  result[#result + 1] = objectDataEntry
145
146
  end
@@ -156,9 +157,9 @@ function ObjectDataEntry.of(self, id)
156
157
  if object == nil then
157
158
  return nil
158
159
  end
159
- local objectDataEntry = objectDataEntryByObjectDataEntryId[dataToObjectDataEntryId(object.id)]
160
+ local objectDataEntry = objectDataEntryByObjectDataEntryId[dataToObjectDataEntryId(object.id, self.idType)]
160
161
  if objectDataEntry == nil then
161
- if not constructor.IS_SYNTHETIC and (self.BASE_ID == 0 or dataToObjectDataEntryId(object.parentId) == self.BASE_ID) then
162
+ if not constructor.IS_SYNTHETIC and (self.BASE_ID == 0 or dataToObjectDataEntryId(object.parentId, self.idType) == self.BASE_ID) then
162
163
  local AbstractObjectDataEntryView = __TS__Class()
163
164
  AbstractObjectDataEntryView.name = "AbstractObjectDataEntryView"
164
165
  __TS__ClassExtends(AbstractObjectDataEntryView, constructor)
@@ -231,13 +232,13 @@ function ObjectDataEntry.prototype.setStringField(self, field, value)
231
232
  stringToData(value)
232
233
  )
233
234
  end
234
- function ObjectDataEntry.prototype.getObjectDataEntryIdField(self, field)
235
- return dataToObjectDataEntryId(self.object:getField(field))
235
+ function ObjectDataEntry.prototype.getObjectDataEntryNumericIdField(self, field)
236
+ return dataToObjectDataEntryNumericId(self.object:getField(field))
236
237
  end
237
- function ObjectDataEntry.prototype.setObjectDataEntryIdField(self, field, value)
238
+ function ObjectDataEntry.prototype.setObjectDataEntryNumericIdField(self, field, value)
238
239
  self.object:setField(
239
240
  field,
240
- objectDataEntryIdToData(value)
241
+ objectDataEntryNumericIdToData(value)
241
242
  )
242
243
  end
243
244
  function ObjectDataEntry.prototype.getAttachmentPresetField(self, modelPathField, nodeFQNField)
@@ -285,13 +286,13 @@ function ObjectDataEntry.prototype.setStringsField(self, field, values)
285
286
  stringsToData(values)
286
287
  )
287
288
  end
288
- function ObjectDataEntry.prototype.getObjectDataEntryIdsField(self, field)
289
- return dataToObjectDataEntryIds(self.object:getField(field))
289
+ function ObjectDataEntry.prototype.getObjectDataEntryNumericIdsField(self, field)
290
+ return dataToObjectDataEntryNumericIds(self.object:getField(field))
290
291
  end
291
- function ObjectDataEntry.prototype.setObjectDataEntryIdsField(self, field, values)
292
+ function ObjectDataEntry.prototype.setObjectDataEntryNumericIdsField(self, field, values)
292
293
  self.object:setField(
293
294
  field,
294
- objectDataEntryIdsToData(values)
295
+ objectDataEntryNumericIdsToData(values)
295
296
  )
296
297
  end
297
298
  function ObjectDataEntry.prototype.getAttachmentPresetListField(self, modelPathListField, nodeFQNFields)
@@ -369,16 +370,16 @@ function ObjectDataEntry.prototype.setStringLevelField(self, field, values)
369
370
  stringToData
370
371
  )
371
372
  end
372
- function ObjectDataEntry.prototype.getObjectDataEntryIdLevelField(self, field)
373
- return self:getLevelField(field, dataToObjectDataEntryId)
373
+ function ObjectDataEntry.prototype.getObjectDataEntryNumericIdLevelField(self, field)
374
+ return self:getLevelField(field, dataToObjectDataEntryNumericId)
374
375
  end
375
- function ObjectDataEntry.prototype.setObjectDataEntryIdLevelField(self, field, values)
376
+ function ObjectDataEntry.prototype.setObjectDataEntryNumericIdLevelField(self, field, values)
376
377
  self:setLevelField(
377
378
  field,
378
379
  values,
379
380
  ____exports.extractObjectDataEntryLevelFieldValue,
380
- dataToObjectDataEntryId,
381
- objectDataEntryIdToData
381
+ dataToObjectDataEntryNumericId,
382
+ objectDataEntryNumericIdToData
382
383
  )
383
384
  end
384
385
  function ObjectDataEntry.prototype.getBooleansLevelField(self, field)
@@ -417,23 +418,26 @@ function ObjectDataEntry.prototype.setStringsLevelField(self, field, values)
417
418
  stringsToData
418
419
  )
419
420
  end
420
- function ObjectDataEntry.prototype.getObjectDataEntryIdsLevelField(self, field)
421
- return self:getLevelField(field, dataToObjectDataEntryIds)
421
+ function ObjectDataEntry.prototype.getObjectDataEntryNumericIdsLevelField(self, field)
422
+ return self:getLevelField(field, dataToObjectDataEntryNumericIds)
422
423
  end
423
- function ObjectDataEntry.prototype.setObjectDataEntryIdsLevelField(self, field, values)
424
+ function ObjectDataEntry.prototype.setObjectDataEntryNumericIdsLevelField(self, field, values)
424
425
  self:setLevelField(
425
426
  field,
426
427
  values,
427
428
  ____exports.extractObjectDataEntryLevelArrayFieldValue,
428
- dataToObjectDataEntryIds,
429
- objectDataEntryIdsToData
429
+ dataToObjectDataEntryNumericIds,
430
+ objectDataEntryNumericIdsToData
430
431
  )
431
432
  end
432
433
  function ObjectDataEntry.prototype.getLevelField(self, field, dataToValue)
433
434
  local values = {}
434
435
  local object = self.object
435
436
  for level = 1, tonumber(object:getField("levels")) or 1 do
436
- values[level] = dataToValue(object:getField((field .. "+") .. tostring(level)))
437
+ values[level] = dataToValue(
438
+ object:getField((field .. "+") .. tostring(level)),
439
+ "number"
440
+ )
437
441
  end
438
442
  return values
439
443
  end
@@ -473,6 +477,14 @@ function ObjectDataEntry.prototype.setLevelField(self, field, supplier, extracto
473
477
  end
474
478
  ObjectDataEntry.BASE_ID = 0
475
479
  ObjectDataEntry.IS_SYNTHETIC = false
480
+ __TS__SetDescriptor(
481
+ ObjectDataEntry.prototype,
482
+ "type",
483
+ {get = function(self)
484
+ return self.constructor
485
+ end},
486
+ true
487
+ )
476
488
  __TS__SetDescriptor(
477
489
  ObjectDataEntry.prototype,
478
490
  "isInternal",
@@ -491,11 +503,18 @@ __TS__SetDescriptor(
491
503
  },
492
504
  true
493
505
  )
506
+ __TS__ObjectDefineProperty(
507
+ ObjectDataEntry,
508
+ "idType",
509
+ {get = function(self)
510
+ return type(self.BASE_ID) == "number" and "number" or "string"
511
+ end}
512
+ )
494
513
  __TS__SetDescriptor(
495
514
  ObjectDataEntry.prototype,
496
515
  "id",
497
516
  {get = function(self)
498
- return dataToObjectDataEntryId(self.object.id)
517
+ return dataToObjectDataEntryId(self.object.id, self.type.idType)
499
518
  end},
500
519
  true
501
520
  )
@@ -503,7 +522,7 @@ __TS__SetDescriptor(
503
522
  ObjectDataEntry.prototype,
504
523
  "baseId",
505
524
  {get = function(self)
506
- return dataToObjectDataEntryId(self.object.parentId or self.object.id)
525
+ return dataToObjectDataEntryId(self.object.parentId or self.object.id, self.type.idType)
507
526
  end},
508
527
  true
509
528
  )
@@ -533,10 +552,10 @@ end
533
552
  dataToString = function(data)
534
553
  return tostring(data or "")
535
554
  end
536
- objectDataEntryIdToData = function(value)
555
+ objectDataEntryNumericIdToData = function(value)
537
556
  return value == 0 and "" or string.pack(">I4", value)
538
557
  end
539
- dataToObjectDataEntryId = function(data)
558
+ dataToObjectDataEntryNumericId = function(data)
540
559
  local dataString = dataToString(data)
541
560
  if isDataNotBlank(nil, dataString) then
542
561
  return (string.unpack(">I4", dataString))
@@ -544,6 +563,15 @@ dataToObjectDataEntryId = function(data)
544
563
  return 0
545
564
  end
546
565
  end
566
+ objectDataEntryIdToData = function(value)
567
+ return type(value) == "number" and objectDataEntryNumericIdToData(value) or value
568
+ end
569
+ dataToObjectDataEntryId = function(data, ____type)
570
+ if ____type == "number" then
571
+ return dataToObjectDataEntryNumericId(data)
572
+ end
573
+ return dataToString(data)
574
+ end
547
575
  booleansToData = function(value)
548
576
  return table.concat(
549
577
  __TS__ArrayMap(
@@ -607,16 +635,16 @@ dataToStrings = function(data)
607
635
  function(____, data) return dataToString(data) end
608
636
  )
609
637
  end
610
- objectDataEntryIdsToData = function(value)
638
+ objectDataEntryNumericIdsToData = function(value)
611
639
  return table.concat(
612
640
  __TS__ArrayMap(
613
641
  value,
614
- function(____, objectDataEntryId) return objectDataEntryIdToData(objectDataEntryId) end
642
+ function(____, objectDataEntryId) return objectDataEntryNumericIdToData(objectDataEntryId) end
615
643
  ),
616
644
  ","
617
645
  )
618
646
  end
619
- dataToObjectDataEntryIds = function(data)
647
+ dataToObjectDataEntryNumericIds = function(data)
620
648
  return __TS__ArrayMap(
621
649
  __TS__ArrayFilter(
622
650
  __TS__StringSplit(
@@ -625,7 +653,7 @@ dataToObjectDataEntryIds = function(data)
625
653
  ),
626
654
  isDataNotBlank
627
655
  ),
628
- function(____, data) return dataToObjectDataEntryId(data) end
656
+ function(____, data) return dataToObjectDataEntryNumericId(data) end
629
657
  )
630
658
  end
631
659
  isDataNotBlank = function(self, data)
@@ -1,5 +1,6 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__New = ____lualib.__TS__New
3
4
  local ____exports = {}
4
5
  local ____preconditions = require("utility.preconditions")
5
6
  local checkNotNull = ____preconditions.checkNotNull
@@ -60,4 +61,10 @@ function ObjectDataEntryIdGenerator.prototype.next(self)
60
61
  self.id = id
61
62
  return id
62
63
  end
64
+ ---
65
+ -- @internal For use by internal systems only.
66
+ ____exports.abilityTypeIdGenerator = __TS__New(
67
+ ____exports.ObjectDataEntryIdGenerator,
68
+ fourCC("A000")
69
+ )
63
70
  return ____exports
@@ -6,10 +6,13 @@ import { ObjectDataEntryId } from "../object-data/entry";
6
6
  import { LightningTypeId } from "../object-data/entry/lightning-type";
7
7
  import { CombatClassifications } from "../object-data/auxiliary/combat-classification";
8
8
  import { UnitTypeId } from "../object-data/entry/unit-type";
9
+ import { BuffResistanceType } from "../object-data/auxiliary/buff-resistance-type";
10
+ import { BuffPolarity } from "../object-data/auxiliary/buff-polarity";
11
+ import { ReadonlyNonEmptyLinkedSet } from "../../utility/linked-set";
9
12
  export declare abstract class AbilityField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType extends jabilityfield = jabilityfield> extends ObjectField<AbilityType, Ability, ValueType, NativeFieldType> {
10
13
  protected get instanceClass(): typeof Ability;
11
14
  protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
12
- protected hasNativeFieldValue(instance: Ability): boolean;
15
+ protected hasNativeFieldValue(abilityTypeId: AbilityTypeId): boolean;
13
16
  static get valueChangeEvent(): ObjectFieldValueChangeEvent<ReadonlyObjectFieldType<AbilityField>>;
14
17
  }
15
18
  export declare class AbilityBooleanField extends AbilityField<boolean, jabilitybooleanfield> {
@@ -42,9 +45,10 @@ export declare class AbilityStringField extends AbilityField<string, jabilitystr
42
45
  protected setNativeFieldValue(instance: Ability, value: string): boolean;
43
46
  static get valueChangeEvent(): ObjectFieldValueChangeEvent<AbilityStringField>;
44
47
  }
45
- export declare abstract class AbilityArrayField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = unknown> extends ObjectArrayField<AbilityType, Ability, ValueType, NativeFieldType> {
48
+ export declare abstract class AbilityArrayField<ValueType extends number | string | boolean = number | string | boolean, NativeFieldType extends jabilityfield = jabilityfield> extends ObjectArrayField<AbilityType, Ability, ValueType, NativeFieldType> {
46
49
  protected get instanceClass(): typeof Ability;
47
50
  protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
51
+ protected hasNativeFieldValue(abilityTypeId: AbilityTypeId): boolean;
48
52
  }
49
53
  export declare class AbilityStringArrayField extends AbilityArrayField<string, jabilitystringlevelfield> {
50
54
  protected get defaultValue(): string;
@@ -64,7 +68,7 @@ export declare abstract class AbilityLevelField<ValueType extends number | strin
64
68
  protected get instanceClass(): typeof Ability;
65
69
  protected getLevelCount(entry: AbilityType | Ability): number;
66
70
  protected getObjectDataEntryId(instance: Ability): AbilityTypeId;
67
- protected hasNativeFieldValue(instance: Ability): boolean;
71
+ protected hasNativeFieldValue(abilityTypeId: AbilityTypeId): boolean;
68
72
  static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<ReadonlyObjectLevelFieldType<AbilityLevelField>>;
69
73
  }
70
74
  export declare class AbilityBooleanLevelField extends AbilityLevelField<boolean, boolean, jabilityintegerlevelfield> {
@@ -107,11 +111,30 @@ export declare class AbilityAbilityTypeIdLevelField extends AbilityObjectDataEnt
107
111
  }
108
112
  export declare class AbilityUnitTypeIdLevelField extends AbilityObjectDataEntryIdLevelField<UnitTypeId> {
109
113
  }
114
+ export declare abstract class AbilityEnumLevelField<T extends number> extends AbilityLevelField<T, T, jabilityintegerlevelfield> {
115
+ protected abstract values: ReadonlyNonEmptyLinkedSet<T>;
116
+ protected get defaultValue(): T;
117
+ protected getNativeFieldById(id: number): jabilityintegerlevelfield;
118
+ protected getNativeFieldValue(instance: Ability, level: number): T;
119
+ protected setNativeFieldValue(instance: Ability, level: number, value: T): boolean;
120
+ static get valueChangeEvent(): ObjectLevelFieldValueChangeEvent<AbilityEnumLevelField<number>>;
121
+ }
122
+ export declare class AbilityBuffPolarityLevelField extends AbilityEnumLevelField<BuffPolarity> {
123
+ protected values: ReadonlyNonEmptyLinkedSet<BuffPolarity>;
124
+ }
125
+ export declare class AbilityBuffResistanceTypeLevelField extends AbilityEnumLevelField<BuffResistanceType> {
126
+ protected values: ReadonlyNonEmptyLinkedSet<BuffResistanceType>;
127
+ }
110
128
  export declare class AbilityCombatClassificationsLevelField extends AbilityLevelField<CombatClassifications, CombatClassifications, jabilityintegerlevelfield> {
111
129
  protected get defaultValue(): CombatClassifications;
112
130
  protected getNativeFieldById(id: number): jabilityintegerlevelfield;
113
131
  protected getNativeFieldValue(instance: Ability, level: number): CombatClassifications;
114
132
  protected setNativeFieldValue(instance: Ability, level: number, value: CombatClassifications): boolean;
115
133
  }
116
- export type AbilityDependentValue<ValueType extends boolean | number | string> = ValueType | AbilityField<ValueType> | AbilityLevelField<ValueType> | ((ability: Ability) => ValueType);
117
- export declare const resolveCurrentAbilityDependentValue: <ValueType extends string | number | boolean>(ability: Ability, value: AbilityDependentValue<ValueType>) => ValueType;
134
+ export type ReadonlySubscribableAbilityDependentValue<ValueType extends boolean | number | string> = ValueType | ReadonlyObjectFieldType<AbilityField<ValueType>> | ReadonlyObjectLevelFieldType<AbilityLevelField<ValueType>>;
135
+ export type SubscribableAbilityDependentValue<ValueType extends boolean | number | string> = ValueType | AbilityField<ValueType> | AbilityLevelField<ValueType>;
136
+ export type AbilityDependentValue<ValueType extends boolean | number | string> = SubscribableAbilityDependentValue<ValueType> | ((ability: Ability) => ValueType);
137
+ export declare const resolveCurrentAbilityDependentValue: {
138
+ <ValueType extends boolean | number | string>(ability: Ability, value: AbilityDependentValue<ValueType>): ValueType;
139
+ <ValueType extends boolean | number | string>(ability: Ability, value?: AbilityDependentValue<ValueType>): ValueType | undefined;
140
+ };
@@ -7,12 +7,15 @@ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
7
7
  local ____exports = {}
8
8
  local ____ability = require("engine.internal.ability")
9
9
  local Ability = ____ability.Ability
10
+ local abilityTypeHasField = ____ability.abilityTypeHasField
10
11
  local ____object_2Dfield = require("engine.object-field")
11
12
  local ObjectArrayField = ____object_2Dfield.ObjectArrayField
12
13
  local ObjectField = ____object_2Dfield.ObjectField
13
14
  local ObjectLevelField = ____object_2Dfield.ObjectLevelField
14
15
  local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
15
16
  local AbilityType = ____ability_2Dtype.AbilityType
17
+ local ____linked_2Dset = require("utility.linked-set")
18
+ local nonEmptyLinkedSetOf = ____linked_2Dset.nonEmptyLinkedSetOf
16
19
  local convertAbilityBooleanField = _G.ConvertAbilityBooleanField
17
20
  local convertAbilityIntegerField = _G.ConvertAbilityIntegerField
18
21
  local convertAbilityRealField = _G.ConvertAbilityRealField
@@ -27,8 +30,8 @@ __TS__ClassExtends(AbilityField, ObjectField)
27
30
  function AbilityField.prototype.getObjectDataEntryId(self, instance)
28
31
  return instance.typeId
29
32
  end
30
- function AbilityField.prototype.hasNativeFieldValue(self, instance)
31
- return instance:hasField(self.nativeField)
33
+ function AbilityField.prototype.hasNativeFieldValue(self, abilityTypeId)
34
+ return abilityTypeHasField(abilityTypeId, self.nativeField)
32
35
  end
33
36
  __TS__SetDescriptor(
34
37
  AbilityField.prototype,
@@ -195,6 +198,9 @@ __TS__ClassExtends(AbilityArrayField, ObjectArrayField)
195
198
  function AbilityArrayField.prototype.getObjectDataEntryId(self, instance)
196
199
  return instance.typeId
197
200
  end
201
+ function AbilityArrayField.prototype.hasNativeFieldValue(self, abilityTypeId)
202
+ return abilityTypeHasField(abilityTypeId, self.nativeField)
203
+ end
198
204
  __TS__SetDescriptor(
199
205
  AbilityArrayField.prototype,
200
206
  "instanceClass",
@@ -259,13 +265,13 @@ local AbilityLevelField = ____exports.AbilityLevelField
259
265
  AbilityLevelField.name = "AbilityLevelField"
260
266
  __TS__ClassExtends(AbilityLevelField, ObjectLevelField)
261
267
  function AbilityLevelField.prototype.getLevelCount(self, entry)
262
- return __TS__InstanceOf(entry, Ability) and #entry.levels or entry.levelCount
268
+ return entry.levelCount
263
269
  end
264
270
  function AbilityLevelField.prototype.getObjectDataEntryId(self, instance)
265
271
  return instance.typeId
266
272
  end
267
- function AbilityLevelField.prototype.hasNativeFieldValue(self, instance)
268
- return instance:hasField(self.nativeField)
273
+ function AbilityLevelField.prototype.hasNativeFieldValue(self, abilityTypeId)
274
+ return abilityTypeHasField(abilityTypeId, self.nativeField)
269
275
  end
270
276
  __TS__SetDescriptor(
271
277
  AbilityLevelField.prototype,
@@ -431,6 +437,54 @@ ____exports.AbilityUnitTypeIdLevelField = __TS__Class()
431
437
  local AbilityUnitTypeIdLevelField = ____exports.AbilityUnitTypeIdLevelField
432
438
  AbilityUnitTypeIdLevelField.name = "AbilityUnitTypeIdLevelField"
433
439
  __TS__ClassExtends(AbilityUnitTypeIdLevelField, ____exports.AbilityObjectDataEntryIdLevelField)
440
+ ____exports.AbilityEnumLevelField = __TS__Class()
441
+ local AbilityEnumLevelField = ____exports.AbilityEnumLevelField
442
+ AbilityEnumLevelField.name = "AbilityEnumLevelField"
443
+ __TS__ClassExtends(AbilityEnumLevelField, ____exports.AbilityLevelField)
444
+ function AbilityEnumLevelField.prototype.getNativeFieldById(self, id)
445
+ return convertAbilityIntegerLevelField(id)
446
+ end
447
+ function AbilityEnumLevelField.prototype.getNativeFieldValue(self, instance, level)
448
+ local value = instance:getField(self.nativeField, level)
449
+ if self.values:contains(value) then
450
+ return value
451
+ end
452
+ return self.values:first()
453
+ end
454
+ function AbilityEnumLevelField.prototype.setNativeFieldValue(self, instance, level, value)
455
+ return instance:setField(self.nativeField, level, value)
456
+ end
457
+ __TS__SetDescriptor(
458
+ AbilityEnumLevelField.prototype,
459
+ "defaultValue",
460
+ {get = function(self)
461
+ return self.values:first()
462
+ end},
463
+ true
464
+ )
465
+ __TS__ObjectDefineProperty(
466
+ AbilityEnumLevelField,
467
+ "valueChangeEvent",
468
+ {get = function(self)
469
+ return self:getOrCreateValueChangeEvent()
470
+ end}
471
+ )
472
+ ____exports.AbilityBuffPolarityLevelField = __TS__Class()
473
+ local AbilityBuffPolarityLevelField = ____exports.AbilityBuffPolarityLevelField
474
+ AbilityBuffPolarityLevelField.name = "AbilityBuffPolarityLevelField"
475
+ __TS__ClassExtends(AbilityBuffPolarityLevelField, ____exports.AbilityEnumLevelField)
476
+ function AbilityBuffPolarityLevelField.prototype.____constructor(self, ...)
477
+ AbilityBuffPolarityLevelField.____super.prototype.____constructor(self, ...)
478
+ self.values = nonEmptyLinkedSetOf(0, 1, 2)
479
+ end
480
+ ____exports.AbilityBuffResistanceTypeLevelField = __TS__Class()
481
+ local AbilityBuffResistanceTypeLevelField = ____exports.AbilityBuffResistanceTypeLevelField
482
+ AbilityBuffResistanceTypeLevelField.name = "AbilityBuffResistanceTypeLevelField"
483
+ __TS__ClassExtends(AbilityBuffResistanceTypeLevelField, ____exports.AbilityEnumLevelField)
484
+ function AbilityBuffResistanceTypeLevelField.prototype.____constructor(self, ...)
485
+ AbilityBuffResistanceTypeLevelField.____super.prototype.____constructor(self, ...)
486
+ self.values = nonEmptyLinkedSetOf(1, 2, 3)
487
+ end
434
488
  local allowedTargetCombatClassificationsByLevelByAbilityTypeId = postcompile(function()
435
489
  local allowedTargetCombatClassificationsByLevelByAbilityTypeId = {}
436
490
  for ____, abilityType in ipairs(AbilityType:getAll()) do