warscript 0.0.1-dev.c74bdbb → 0.0.1-dev.c762beb

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 (167) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/core/types/frame.lua +24 -21
  4. package/core/types/player.d.ts +16 -0
  5. package/core/types/player.lua +60 -15
  6. package/core/types/playerCamera.d.ts +2 -0
  7. package/core/types/playerCamera.lua +123 -5
  8. package/core/types/sound.lua +1 -1
  9. package/core/types/tileCell.d.ts +11 -1
  10. package/core/types/tileCell.lua +97 -0
  11. package/core/types/timer.d.ts +3 -1
  12. package/core/types/timer.lua +27 -2
  13. package/decl/native.d.ts +846 -790
  14. package/destroyable.d.ts +1 -0
  15. package/destroyable.lua +9 -0
  16. package/engine/behavior.d.ts +14 -1
  17. package/engine/behavior.lua +230 -70
  18. package/engine/behaviour/ability/apply-buff.lua +5 -5
  19. package/engine/behaviour/ability/damage.d.ts +9 -3
  20. package/engine/behaviour/ability/damage.lua +31 -37
  21. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  22. package/engine/behaviour/ability/emulate-impact.lua +11 -3
  23. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  24. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  25. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  26. package/engine/behaviour/ability/restore-mana.lua +6 -6
  27. package/engine/behaviour/ability.d.ts +11 -6
  28. package/engine/behaviour/ability.lua +38 -17
  29. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  30. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  31. package/engine/behaviour/unit.d.ts +39 -3
  32. package/engine/behaviour/unit.lua +269 -6
  33. package/engine/buff.d.ts +67 -22
  34. package/engine/buff.lua +371 -182
  35. package/engine/internal/ability.d.ts +7 -1
  36. package/engine/internal/ability.lua +49 -9
  37. package/engine/internal/item/ability.lua +63 -11
  38. package/engine/internal/item+owner.lua +12 -6
  39. package/engine/internal/item.d.ts +18 -17
  40. package/engine/internal/item.lua +135 -49
  41. package/engine/internal/mechanics/cast-ability.lua +6 -3
  42. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  43. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  44. package/engine/internal/misc/frame-coordinates.lua +21 -0
  45. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  46. package/engine/internal/misc/get-terrain-z.lua +11 -0
  47. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  48. package/engine/internal/misc/player-local-handle.lua +5 -0
  49. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  50. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  51. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  52. package/engine/internal/object-data/health-bonus.lua +16 -0
  53. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  54. package/engine/internal/object-data/mana-bonus.lua +16 -0
  55. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  56. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  57. package/engine/internal/unit/ability.d.ts +35 -0
  58. package/engine/internal/unit/ability.lua +98 -9
  59. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  60. package/engine/internal/unit/allowed-targets.lua +9 -1
  61. package/engine/internal/unit/attributes.d.ts +17 -0
  62. package/engine/internal/unit/attributes.lua +46 -0
  63. package/engine/internal/unit/bonus.d.ts +6 -0
  64. package/engine/internal/unit/bonus.lua +33 -3
  65. package/engine/internal/unit/fly-height.d.ts +7 -0
  66. package/engine/internal/unit/fly-height.lua +20 -0
  67. package/engine/internal/unit/interrupts.d.ts +12 -0
  68. package/engine/internal/unit/interrupts.lua +28 -0
  69. package/engine/internal/unit/item.lua +1 -1
  70. package/engine/internal/unit/main-selected.lua +12 -27
  71. package/engine/internal/unit/order.d.ts +20 -0
  72. package/engine/internal/unit/order.lua +136 -0
  73. package/engine/internal/unit/range-event.d.ts +12 -0
  74. package/engine/internal/unit/range-event.lua +90 -0
  75. package/engine/internal/unit/scale.d.ts +7 -0
  76. package/engine/internal/unit/scale.lua +20 -0
  77. package/engine/internal/unit+ability.lua +10 -1
  78. package/engine/internal/unit+bonus.lua +3 -3
  79. package/engine/internal/unit+damage.d.ts +2 -11
  80. package/engine/internal/unit+damage.lua +10 -14
  81. package/engine/internal/unit+spellSteal.lua +1 -2
  82. package/engine/internal/unit-missile-launch.lua +52 -14
  83. package/engine/internal/unit.d.ts +40 -27
  84. package/engine/internal/unit.lua +382 -264
  85. package/engine/local-client.d.ts +2 -0
  86. package/engine/local-client.lua +30 -0
  87. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  88. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  89. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  90. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  91. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  92. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  93. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  94. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  95. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  96. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  97. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  98. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  99. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  100. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  101. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  102. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  103. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  104. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  105. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  106. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  107. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  108. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  109. package/engine/object-data/entry/ability-type.d.ts +2 -0
  110. package/engine/object-data/entry/ability-type.lua +89 -8
  111. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  112. package/engine/object-data/entry/buff-type.d.ts +5 -11
  113. package/engine/object-data/entry/buff-type.lua +11 -27
  114. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  115. package/engine/object-data/entry/destructible-type.lua +155 -0
  116. package/engine/object-data/entry/unit-type.d.ts +17 -4
  117. package/engine/object-data/entry/unit-type.lua +197 -85
  118. package/engine/object-field/ability.d.ts +4 -4
  119. package/engine/object-field/ability.lua +9 -8
  120. package/engine/object-field/unit.d.ts +72 -3
  121. package/engine/object-field/unit.lua +268 -7
  122. package/engine/object-field.d.ts +26 -7
  123. package/engine/object-field.lua +360 -119
  124. package/engine/random.d.ts +10 -0
  125. package/engine/random.lua +21 -0
  126. package/engine/standard/entries/buff-type.d.ts +3 -0
  127. package/engine/standard/entries/buff-type.lua +3 -0
  128. package/engine/standard/fields/ability.d.ts +2 -2
  129. package/engine/standard/fields/ability.lua +2 -2
  130. package/engine/standard/fields/unit.d.ts +12 -0
  131. package/engine/standard/fields/unit.lua +20 -0
  132. package/engine/synchronization.d.ts +11 -0
  133. package/engine/synchronization.lua +77 -0
  134. package/engine/text-tag.d.ts +36 -2
  135. package/engine/text-tag.lua +250 -10
  136. package/engine/unit.d.ts +6 -0
  137. package/engine/unit.lua +6 -0
  138. package/lualib_bundle.lua +118 -47
  139. package/net/socket.lua +1 -1
  140. package/objutil/buff.lua +11 -10
  141. package/objutil/object.lua +1 -1
  142. package/operation.lua +23 -17
  143. package/package.json +5 -5
  144. package/patch-lua.lua +15 -0
  145. package/patch-lualib.lua +1 -1
  146. package/utility/arrays.d.ts +2 -0
  147. package/utility/arrays.lua +11 -0
  148. package/utility/callback-array.d.ts +17 -0
  149. package/utility/callback-array.lua +61 -0
  150. package/utility/functions.d.ts +8 -0
  151. package/utility/functions.lua +13 -0
  152. package/utility/linked-map.d.ts +34 -0
  153. package/utility/linked-map.lua +101 -0
  154. package/utility/linked-set.d.ts +4 -1
  155. package/utility/linked-set.lua +43 -1
  156. package/utility/lua-maps.d.ts +15 -2
  157. package/utility/lua-maps.lua +53 -2
  158. package/utility/lua-sets.d.ts +2 -0
  159. package/utility/lua-sets.lua +7 -0
  160. package/utility/records.lua +20 -1
  161. package/utility/types.d.ts +3 -0
  162. package/core/types/order.d.ts +0 -25
  163. package/core/types/order.lua +0 -55
  164. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  165. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  166. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  167. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -3,6 +3,7 @@ import { Unit } from "../core/types/unit";
3
3
  import { Async } from "../core/types/async";
4
4
  import { Event, TriggerEvent } from "../event";
5
5
  import { GraphicsMode } from "./index";
6
+ import { Color } from "../core/types/color";
6
7
  export declare class LocalClient {
7
8
  private constructor();
8
9
  static readonly locale: string;
@@ -11,6 +12,7 @@ export declare class LocalClient {
11
12
  static get isHD(): boolean;
12
13
  static get graphicsMode(): GraphicsMode;
13
14
  static get isActive(): boolean;
15
+ static pingMinimap(x: number, y: number, duration: number, ...parameters: [] | [red: number, green: number, blue: number, flashy?: boolean] | [color: Color, flashy?: boolean]): void;
14
16
  static get mouseFocusUnit(): Async<Unit> | undefined;
15
17
  static get mainSelectedUnit(): Async<Unit> | undefined;
16
18
  static get mainSelectedUnitChangeEvent(): Event<[
@@ -1,6 +1,7 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local __TS__ArrayMap = ____lualib.__TS__ArrayMap
3
3
  local __TS__Class = ____lualib.__TS__Class
4
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
4
5
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
5
6
  local __TS__New = ____lualib.__TS__New
6
7
  local ____exports = {}
@@ -15,6 +16,8 @@ local ____player = require("core.types.player")
15
16
  local Player = ____player.Player
16
17
  local ____timer = require("core.types.timer")
17
18
  local Timer = ____timer.Timer
19
+ local ____color = require("core.types.color")
20
+ local Color = ____color.Color
18
21
  local loadTOCFile = BlzLoadTOCFile
19
22
  local getLocalClientWidth = BlzGetLocalClientWidth
20
23
  local getLocalClientHeight = BlzGetLocalClientHeight
@@ -25,6 +28,8 @@ local getMouseFocusUnit = BlzGetMouseFocusUnit
25
28
  local getUnitRealField = BlzGetUnitRealField
26
29
  local getUnitTypeId = GetUnitTypeId
27
30
  local getLocale = BlzGetLocale
31
+ local pingMinimap = PingMinimap
32
+ local pingMinimapEx = PingMinimapEx
28
33
  local tableSort = table.sort
29
34
  local tocPath = "_warscript\\IsHD.toc"
30
35
  compiletime(function()
@@ -62,6 +67,31 @@ local LocalClient = ____exports.LocalClient
62
67
  LocalClient.name = "LocalClient"
63
68
  function LocalClient.prototype.____constructor(self)
64
69
  end
70
+ function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrFlashy, blue, flashy)
71
+ if redOrColor == nil then
72
+ pingMinimap(x, y, duration)
73
+ elseif __TS__InstanceOf(redOrColor, Color) then
74
+ pingMinimapEx(
75
+ x,
76
+ y,
77
+ duration,
78
+ redOrColor.r,
79
+ redOrColor.g,
80
+ redOrColor.b,
81
+ greenOrFlashy or false
82
+ )
83
+ else
84
+ pingMinimapEx(
85
+ x,
86
+ y,
87
+ duration,
88
+ redOrColor,
89
+ greenOrFlashy,
90
+ blue,
91
+ flashy or false
92
+ )
93
+ end
94
+ end
65
95
  LocalClient.locale = getLocale()
66
96
  __TS__ObjectDefineProperty(
67
97
  LocalClient,
@@ -0,0 +1,11 @@
1
+ /** @noSelfInFile */
2
+ export declare const enum ArmorType {
3
+ LIGHT = 0,
4
+ MEDIUM = 1,
5
+ HEAVY = 2,
6
+ FORTIFIED = 3,
7
+ NORMAL = 4,
8
+ HERO = 5,
9
+ DIVINE = 6,
10
+ UNARMORED = 7
11
+ }
@@ -0,0 +1,46 @@
1
+ local ____exports = {}
2
+ local ____records = require("utility.records")
3
+ local invertRecord = ____records.invertRecord
4
+ local stringByArmorType = {
5
+ [0] = "small",
6
+ [1] = "medium",
7
+ [2] = "large",
8
+ [3] = "fort",
9
+ [4] = "normal",
10
+ [5] = "hero",
11
+ [6] = "divine",
12
+ [7] = "none"
13
+ }
14
+ local armorTypeByString = invertRecord(stringByArmorType)
15
+ local nativeByArmorType = {
16
+ [0] = DEFENSE_TYPE_LIGHT,
17
+ [1] = DEFENSE_TYPE_MEDIUM,
18
+ [2] = DEFENSE_TYPE_LARGE,
19
+ [3] = DEFENSE_TYPE_FORT,
20
+ [4] = DEFENSE_TYPE_NORMAL,
21
+ [5] = DEFENSE_TYPE_HERO,
22
+ [6] = DEFENSE_TYPE_DIVINE,
23
+ [7] = DEFENSE_TYPE_NONE
24
+ }
25
+ local armorTypeByNative = invertRecord(nativeByArmorType)
26
+ ---
27
+ -- @internal For use by internal systems only.
28
+ ____exports.armorTypeToString = function(armorType)
29
+ return stringByArmorType[armorType]
30
+ end
31
+ ---
32
+ -- @internal For use by internal systems only.
33
+ ____exports.stringToArmorType = function(____string)
34
+ return armorTypeByString[____string] or 7
35
+ end
36
+ ---
37
+ -- @internal For use by internal systems only.
38
+ ____exports.armorTypeToNative = function(armorType)
39
+ return nativeByArmorType[armorType]
40
+ end
41
+ ---
42
+ -- @internal For use by internal systems only.
43
+ ____exports.nativeToArmorType = function(armorType)
44
+ return armorTypeByNative[armorType]
45
+ end
46
+ return ____exports
@@ -1,11 +1,10 @@
1
1
  /** @noSelfInFile */
2
2
  export declare const enum AttackType {
3
- NONE = "unknown",
4
- NORMAL = "normal",
5
- PIERCE = "pierce",
6
- SIEGE = "siege",
7
- SPELL = "spells",
8
- CHAOS = "chaos",
9
- MAGIC = "magic",
10
- HERO = "hero"
3
+ SPELL = 0,
4
+ NORMAL = 1,
5
+ PIERCE = 2,
6
+ SIEGE = 3,
7
+ MAGIC = 4,
8
+ CHAOS = 5,
9
+ HERO = 6
11
10
  }
@@ -1,2 +1,44 @@
1
1
  local ____exports = {}
2
+ local ____records = require("utility.records")
3
+ local invertRecord = ____records.invertRecord
4
+ local stringByAttackType = {
5
+ [1] = "normal",
6
+ [2] = "pierce",
7
+ [3] = "siege",
8
+ [0] = "spells",
9
+ [5] = "chaos",
10
+ [4] = "magic",
11
+ [6] = "hero"
12
+ }
13
+ local attackTypeByString = invertRecord(stringByAttackType)
14
+ local nativeByAttackType = {
15
+ [1] = ATTACK_TYPE_MELEE,
16
+ [2] = ATTACK_TYPE_PIERCE,
17
+ [3] = ATTACK_TYPE_SIEGE,
18
+ [0] = ATTACK_TYPE_NORMAL,
19
+ [5] = ATTACK_TYPE_CHAOS,
20
+ [4] = ATTACK_TYPE_MAGIC,
21
+ [6] = ATTACK_TYPE_HERO
22
+ }
23
+ local attackTypeByNative = invertRecord(nativeByAttackType)
24
+ ---
25
+ -- @internal For use by internal systems only.
26
+ ____exports.attackTypeToString = function(attackType)
27
+ return attackType ~= nil and stringByAttackType[attackType] or "unknown"
28
+ end
29
+ ---
30
+ -- @internal For use by internal systems only.
31
+ ____exports.stringToAttackType = function(____string)
32
+ return attackTypeByString[____string]
33
+ end
34
+ ---
35
+ -- @internal For use by internal systems only.
36
+ ____exports.attackTypeToNative = function(attackType)
37
+ return nativeByAttackType[attackType]
38
+ end
39
+ ---
40
+ -- @internal For use by internal systems only.
41
+ ____exports.nativeToAttackType = function(attackType)
42
+ return attackTypeByNative[attackType]
43
+ end
2
44
  return ____exports
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ export declare const enum HealthRegenerationType {
3
+ NONE = 0,
4
+ ALWAYS = 1,
5
+ BLIGHT = 2,
6
+ DAY = 3,
7
+ NIGHT = 4
8
+ }
@@ -0,0 +1,2 @@
1
+ local ____exports = {}
2
+ return ____exports
@@ -1,10 +1,10 @@
1
1
  /** @noSelfInFile */
2
2
  export declare const enum MovementType {
3
- NONE = "",
4
- FLOAT = "float",
5
- FLY = "fly",
6
- FOOT = "foot",
7
- HORSE = "horse",
8
- HOVER = "hover",
9
- AMPHIBIOUS = "amph"
3
+ NONE = 0,
4
+ FOOT = 1,
5
+ FLY = 2,
6
+ HORSE = 4,
7
+ HOVER = 8,
8
+ FLOAT = 16,
9
+ AMPHIBIOUS = 32
10
10
  }
@@ -1,2 +1,24 @@
1
1
  local ____exports = {}
2
+ local ____records = require("utility.records")
3
+ local invertRecord = ____records.invertRecord
4
+ local stringByMovementType = {
5
+ [0] = "",
6
+ [16] = "float",
7
+ [2] = "fly",
8
+ [1] = "foot",
9
+ [4] = "horse",
10
+ [8] = "hover",
11
+ [32] = "amph"
12
+ }
13
+ local movementTypeByString = invertRecord(stringByMovementType)
14
+ ---
15
+ -- @internal For use by internal systems only.
16
+ ____exports.movementTypeToString = function(movementType)
17
+ return stringByMovementType[movementType]
18
+ end
19
+ ---
20
+ -- @internal For use by internal systems only.
21
+ ____exports.stringToMovementType = function(____string)
22
+ return movementTypeByString[____string] or 0
23
+ end
2
24
  return ____exports
@@ -0,0 +1,6 @@
1
+ /** @noSelfInFile */
2
+ export declare enum UnitAttribute {
3
+ STRENGTH = 1,
4
+ INTELLIGENCE = 2,
5
+ AGILITY = 3
6
+ }
@@ -0,0 +1,9 @@
1
+ local ____exports = {}
2
+ ____exports.UnitAttribute = ____exports.UnitAttribute or ({})
3
+ ____exports.UnitAttribute.STRENGTH = 1
4
+ ____exports.UnitAttribute[____exports.UnitAttribute.STRENGTH] = "STRENGTH"
5
+ ____exports.UnitAttribute.INTELLIGENCE = 2
6
+ ____exports.UnitAttribute[____exports.UnitAttribute.INTELLIGENCE] = "INTELLIGENCE"
7
+ ____exports.UnitAttribute.AGILITY = 3
8
+ ____exports.UnitAttribute[____exports.UnitAttribute.AGILITY] = "AGILITY"
9
+ return ____exports
@@ -1,8 +1,8 @@
1
1
  /** @noSelfInFile */
2
2
  import { AbilityType, AbilityTypeId } from "../ability-type";
3
3
  import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
- export declare class ArmorIncreaseAbilityType extends AbilityType {
4
+ export declare class ArmorBonusAbilityType extends AbilityType {
5
5
  static readonly BASE_ID: AbilityTypeId;
6
- get armorIncrease(): number[];
7
- set armorIncrease(armorIncrease: ObjectDataEntryLevelFieldValueSupplier<number>);
6
+ get armorBonus(): number[];
7
+ set armorBonus(armorBonus: ObjectDataEntryLevelFieldValueSupplier<number>);
8
8
  }
@@ -5,20 +5,20 @@ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
5
  local ____exports = {}
6
6
  local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
7
  local AbilityType = ____ability_2Dtype.AbilityType
8
- ____exports.ArmorIncreaseAbilityType = __TS__Class()
9
- local ArmorIncreaseAbilityType = ____exports.ArmorIncreaseAbilityType
10
- ArmorIncreaseAbilityType.name = "ArmorIncreaseAbilityType"
11
- __TS__ClassExtends(ArmorIncreaseAbilityType, AbilityType)
12
- ArmorIncreaseAbilityType.BASE_ID = fourCC("AId1")
8
+ ____exports.ArmorBonusAbilityType = __TS__Class()
9
+ local ArmorBonusAbilityType = ____exports.ArmorBonusAbilityType
10
+ ArmorBonusAbilityType.name = "ArmorBonusAbilityType"
11
+ __TS__ClassExtends(ArmorBonusAbilityType, AbilityType)
12
+ ArmorBonusAbilityType.BASE_ID = fourCC("AId1")
13
13
  __TS__SetDescriptor(
14
- ArmorIncreaseAbilityType.prototype,
15
- "armorIncrease",
14
+ ArmorBonusAbilityType.prototype,
15
+ "armorBonus",
16
16
  {
17
17
  get = function(self)
18
18
  return self:getNumberLevelField("Idef")
19
19
  end,
20
- set = function(self, armorIncrease)
21
- self:setNumberLevelField("Idef", armorIncrease)
20
+ set = function(self, armorBonus)
21
+ self:setNumberLevelField("Idef", armorBonus)
22
22
  end
23
23
  },
24
24
  true
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class HealthBonusAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get healthBonus(): number[];
7
+ set healthBonus(healthBonus: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ }
@@ -0,0 +1,26 @@
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 ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.HealthBonusAbilityType = __TS__Class()
9
+ local HealthBonusAbilityType = ____exports.HealthBonusAbilityType
10
+ HealthBonusAbilityType.name = "HealthBonusAbilityType"
11
+ __TS__ClassExtends(HealthBonusAbilityType, AbilityType)
12
+ HealthBonusAbilityType.BASE_ID = fourCC("AIlf")
13
+ __TS__SetDescriptor(
14
+ HealthBonusAbilityType.prototype,
15
+ "healthBonus",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Ilif")
19
+ end,
20
+ set = function(self, healthBonus)
21
+ self:setNumberLevelField("Ilif", healthBonus)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ return ____exports
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class ManaBonusAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get manaBonus(): number[];
7
+ set manaBonus(manaBonus: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ }
@@ -0,0 +1,26 @@
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 ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.ManaBonusAbilityType = __TS__Class()
9
+ local ManaBonusAbilityType = ____exports.ManaBonusAbilityType
10
+ ManaBonusAbilityType.name = "ManaBonusAbilityType"
11
+ __TS__ClassExtends(ManaBonusAbilityType, AbilityType)
12
+ ManaBonusAbilityType.BASE_ID = fourCC("AImb")
13
+ __TS__SetDescriptor(
14
+ ManaBonusAbilityType.prototype,
15
+ "manaBonus",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Iman")
19
+ end,
20
+ set = function(self, manaBonus)
21
+ self:setNumberLevelField("Iman", manaBonus)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ return ____exports
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class ManaRegenerationAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get manaRegenerationRateIncreaseFactor(): number[];
7
+ set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ }
@@ -0,0 +1,26 @@
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 ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.ManaRegenerationAbilityType = __TS__Class()
9
+ local ManaRegenerationAbilityType = ____exports.ManaRegenerationAbilityType
10
+ ManaRegenerationAbilityType.name = "ManaRegenerationAbilityType"
11
+ __TS__ClassExtends(ManaRegenerationAbilityType, AbilityType)
12
+ ManaRegenerationAbilityType.BASE_ID = fourCC("AIrn")
13
+ __TS__SetDescriptor(
14
+ ManaRegenerationAbilityType.prototype,
15
+ "manaRegenerationRateIncreaseFactor",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Imrp")
19
+ end,
20
+ set = function(self, manaRegenerationRateIncreaseFactor)
21
+ self:setNumberLevelField("Imrp", manaRegenerationRateIncreaseFactor)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ return ____exports
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class PermanentInvisibilityAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get shouldAutoAcquireAttackTargets(): boolean[];
7
+ set shouldAutoAcquireAttackTargets(shouldAutoAcquireAttackTargets: ObjectDataEntryLevelFieldValueSupplier<boolean>);
8
+ }
@@ -0,0 +1,26 @@
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 ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.PermanentInvisibilityAbilityType = __TS__Class()
9
+ local PermanentInvisibilityAbilityType = ____exports.PermanentInvisibilityAbilityType
10
+ PermanentInvisibilityAbilityType.name = "PermanentInvisibilityAbilityType"
11
+ __TS__ClassExtends(PermanentInvisibilityAbilityType, AbilityType)
12
+ PermanentInvisibilityAbilityType.BASE_ID = fourCC("Apiv")
13
+ __TS__SetDescriptor(
14
+ PermanentInvisibilityAbilityType.prototype,
15
+ "shouldAutoAcquireAttackTargets",
16
+ {
17
+ get = function(self)
18
+ return self:getBooleanLevelField("Gho1")
19
+ end,
20
+ set = function(self, shouldAutoAcquireAttackTargets)
21
+ self:setBooleanLevelField("Gho1", shouldAutoAcquireAttackTargets)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ return ____exports
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityType, AbilityTypeId } from "../ability-type";
3
+ import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
4
+ export declare class ReincarnationAbilityType extends AbilityType {
5
+ static readonly BASE_ID: AbilityTypeId;
6
+ get reincarnationDelay(): number[];
7
+ set reincarnationDelay(reincarnationDelay: ObjectDataEntryLevelFieldValueSupplier<number>);
8
+ }
@@ -0,0 +1,26 @@
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 ____ability_2Dtype = require("engine.object-data.entry.ability-type")
7
+ local AbilityType = ____ability_2Dtype.AbilityType
8
+ ____exports.ReincarnationAbilityType = __TS__Class()
9
+ local ReincarnationAbilityType = ____exports.ReincarnationAbilityType
10
+ ReincarnationAbilityType.name = "ReincarnationAbilityType"
11
+ __TS__ClassExtends(ReincarnationAbilityType, AbilityType)
12
+ ReincarnationAbilityType.BASE_ID = fourCC("AOre")
13
+ __TS__SetDescriptor(
14
+ ReincarnationAbilityType.prototype,
15
+ "reincarnationDelay",
16
+ {
17
+ get = function(self)
18
+ return self:getNumberLevelField("Ore1")
19
+ end,
20
+ set = function(self, reincarnationDelay)
21
+ self:setNumberLevelField("Ore1", reincarnationDelay)
22
+ end
23
+ },
24
+ true
25
+ )
26
+ return ____exports
@@ -67,6 +67,8 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
67
67
  set specialAttachmentPreset(specialAttachmentPreset: AttachmentPresetInput | undefined);
68
68
  get targetCastingEffectPresets(): EffectPresetWithParameters[];
69
69
  set targetCastingEffectPresets(targetCastingEffectPresets: AttachmentPresetInput[]);
70
+ get targetChannelingEffectPresets(): EffectPresetWithParameters[];
71
+ set targetChannelingEffectPresets(targetChannelingEffectPresets: EffectPresetWithParametersInput[]);
70
72
  get targetEffectPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
71
73
  set targetEffectPresets(targetEffectPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
72
74
  get targetEffectPresetsSD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
@@ -38,11 +38,14 @@ local ____sound = require("core.types.sound")
38
38
  local isSoundLabelCustom = ____sound.isSoundLabelCustom
39
39
  local Sound3D = ____sound.Sound3D
40
40
  local SoundSettings = ____sound.SoundSettings
41
+ local ____lua_2Dsets = require("utility.lua-sets")
42
+ local luaSetOf = ____lua_2Dsets.luaSetOf
41
43
  local castAnimationFQNByAbilityTypeId = {}
42
44
  local isButtonVisibleFalseAbilityTypes = {}
43
45
  local casterCastingEffectPresetsByAbilityTypeId = {}
44
46
  local casterChannelingEffectPresetsByAbilityTypeId = {}
45
47
  local targetCastingEffectPresetsByAbilityTypeId = {}
48
+ local targetChannelingEffectPresetsByAbilityTypeId = {}
46
49
  local targetEffectSoundPresetByAbilityTypeId = {}
47
50
  ____exports.AbilityType = __TS__Class()
48
51
  local AbilityType = ____exports.AbilityType
@@ -376,6 +379,19 @@ __TS__SetDescriptor(
376
379
  },
377
380
  true
378
381
  )
382
+ __TS__SetDescriptor(
383
+ AbilityType.prototype,
384
+ "targetChannelingEffectPresets",
385
+ {
386
+ get = function(self)
387
+ return targetChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
388
+ end,
389
+ set = function(self, targetChannelingEffectPresets)
390
+ targetChannelingEffectPresetsByAbilityTypeId[self.id] = map(targetChannelingEffectPresets, toEffectPreset)
391
+ end
392
+ },
393
+ true
394
+ )
379
395
  __TS__SetDescriptor(
380
396
  AbilityType.prototype,
381
397
  "targetEffectPresets",
@@ -979,9 +995,7 @@ for abilityTypeId, animationFQN in pairs(postcompile(function() return castAnima
979
995
  4,
980
996
  function(caster, ability)
981
997
  if ability:getField(ABILITY_RLF_CASTING_TIME) ~= 0 then
982
- Timer:run(function()
983
- caster:playAnimation(animationFQN)
984
- end)
998
+ Timer:run(caster, "playAnimation", animationFQN)
985
999
  end
986
1000
  end
987
1001
  )
@@ -1006,9 +1020,10 @@ for abilityTypeId, soundPresetId in pairs(postcompile(function() return targetEf
1006
1020
  )
1007
1021
  end
1008
1022
  end
1023
+ local unsupportedEffectSoundAbilityTypeIds = luaSetOf(fourCC("AAns"))
1009
1024
  Unit.abilityChannelingStartEvent:addListener(function(caster, ability)
1010
1025
  local soundPresetId = ability:getField(ABILITY_SF_EFFECT_SOUND)
1011
- if isSoundLabelCustom(soundPresetId) then
1026
+ if isSoundLabelCustom(soundPresetId) or soundPresetId ~= "" and unsupportedEffectSoundAbilityTypeIds[ability.parentTypeId] ~= nil then
1012
1027
  Sound3D:playFromLabel(soundPresetId, SoundSettings.Ability, caster)
1013
1028
  end
1014
1029
  end)
@@ -1098,18 +1113,84 @@ local function handleAbilityChannelingStartEvent(caster, ability)
1098
1113
  end
1099
1114
  casterChannelingEffectsByCaster[caster] = effects
1100
1115
  end
1116
+ local targetChannelingEffectModelPathsByAbilityTypeId = postcompile(function()
1117
+ return mapValues(
1118
+ targetChannelingEffectPresetsByAbilityTypeId,
1119
+ function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, extractAttachmentPresetInputModelPath) end
1120
+ )
1121
+ end)
1122
+ local targetChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
1123
+ return mapValues(
1124
+ targetChannelingEffectPresetsByAbilityTypeId,
1125
+ function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
1126
+ )
1127
+ end)
1128
+ local targetChannelingEffectParametersByAbilityTypeId = postcompile(function()
1129
+ return mapValues(
1130
+ targetChannelingEffectPresetsByAbilityTypeId,
1131
+ function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, "parameters") end
1132
+ )
1133
+ end)
1134
+ local targetChannelingEffectsByCaster = {}
1135
+ local function handleAbilityWidgetTargetChannelingStartEvent(caster, ability, target)
1136
+ local effectModelPaths = targetChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1137
+ local attachmentPoints = targetChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1138
+ local parameters = targetChannelingEffectParametersByAbilityTypeId[ability.typeId]
1139
+ local effects = {}
1140
+ if effectModelPaths ~= nil then
1141
+ for i = 1, #effectModelPaths do
1142
+ local effectModelPath = effectModelPaths[i]
1143
+ local attachmentPoint = attachmentPoints and attachmentPoints[i]
1144
+ if attachmentPoint == nil or attachmentPoint == "" then
1145
+ attachmentPoint = "origin"
1146
+ end
1147
+ effects[i] = Effect:create(effectModelPath, target, attachmentPoint, parameters and parameters[i])
1148
+ end
1149
+ end
1150
+ targetChannelingEffectsByCaster[caster] = effects
1151
+ end
1152
+ local function handleAbilityPointTargetChannelingStartEvent(caster, ability, x, y)
1153
+ local effectModelPaths = targetChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
1154
+ local attachmentPoints = targetChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
1155
+ local parameters = targetChannelingEffectParametersByAbilityTypeId[ability.typeId]
1156
+ local effects = {}
1157
+ if effectModelPaths ~= nil then
1158
+ for i = 1, #effectModelPaths do
1159
+ local effectModelPath = effectModelPaths[i]
1160
+ local attachmentPoint = attachmentPoints and attachmentPoints[i]
1161
+ if attachmentPoint == nil or attachmentPoint == "" then
1162
+ attachmentPoint = "origin"
1163
+ end
1164
+ effects[i] = Effect:create(effectModelPath, x, y, parameters and parameters[i])
1165
+ end
1166
+ end
1167
+ targetChannelingEffectsByCaster[caster] = effects
1168
+ end
1101
1169
  local function handleAbilityStopChannelingEvent(caster)
1102
- local effects = casterChannelingEffectsByCaster[caster]
1103
- if effects ~= nil then
1104
- for i = 1, #effects do
1105
- effects[i]:destroy()
1170
+ local casterEffects = casterChannelingEffectsByCaster[caster]
1171
+ if casterEffects ~= nil then
1172
+ for i = 1, #casterEffects do
1173
+ casterEffects[i]:destroy()
1106
1174
  end
1107
1175
  casterChannelingEffectsByCaster[caster] = nil
1108
1176
  end
1177
+ local targetEffects = targetChannelingEffectsByCaster[caster]
1178
+ if targetEffects ~= nil then
1179
+ for i = 1, #targetEffects do
1180
+ targetEffects[i]:destroy()
1181
+ end
1182
+ targetChannelingEffectsByCaster[caster] = nil
1183
+ end
1109
1184
  end
1110
1185
  for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
1111
1186
  Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
1112
1187
  Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1113
1188
  Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1114
1189
  end
1190
+ for abilityTypeId in pairs(targetChannelingEffectModelPathsByAbilityTypeId) do
1191
+ Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityWidgetTargetChannelingStartEvent)
1192
+ Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityPointTargetChannelingStartEvent)
1193
+ Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1194
+ Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
1195
+ end
1115
1196
  return ____exports