warscript 0.0.1-dev.9e72e49 → 0.0.1-dev.9ee7706

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 (132) hide show
  1. package/config.d.ts +5 -0
  2. package/config.lua +10 -0
  3. package/core/types/effect.d.ts +13 -3
  4. package/core/types/effect.lua +116 -17
  5. package/core/types/frame.d.ts +4 -0
  6. package/core/types/frame.lua +71 -0
  7. package/core/types/sound.d.ts +17 -24
  8. package/core/types/sound.lua +94 -24
  9. package/core/util.d.ts +1 -1
  10. package/core/util.lua +18 -1
  11. package/engine/behavior.d.ts +2 -2
  12. package/engine/behavior.lua +6 -6
  13. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  14. package/engine/behaviour/ability/always-enabled.lua +31 -0
  15. package/engine/behaviour/ability/apply-buff.d.ts +5 -0
  16. package/engine/behaviour/ability/apply-buff.lua +32 -0
  17. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  18. package/engine/behaviour/ability/damage.d.ts +3 -0
  19. package/engine/behaviour/ability/damage.lua +2 -2
  20. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  21. package/engine/behaviour/ability/emulate-impact.lua +28 -0
  22. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  23. package/engine/behaviour/ability/instant-impact.lua +4 -19
  24. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  25. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  26. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  27. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  28. package/engine/behaviour/ability.d.ts +16 -3
  29. package/engine/behaviour/ability.lua +105 -34
  30. package/engine/behaviour/unit.d.ts +7 -0
  31. package/engine/behaviour/unit.lua +20 -0
  32. package/engine/buff.d.ts +62 -42
  33. package/engine/buff.lua +312 -234
  34. package/engine/internal/ability.d.ts +16 -13
  35. package/engine/internal/ability.lua +80 -76
  36. package/engine/internal/item/ability.lua +106 -0
  37. package/engine/internal/item+owner.lua +2 -2
  38. package/engine/internal/item.d.ts +2 -2
  39. package/engine/internal/item.lua +56 -25
  40. package/engine/internal/mechanics/ability-duration.lua +1 -1
  41. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  42. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  43. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  44. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  45. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  46. package/engine/internal/object-data/evasion-probability.lua +16 -0
  47. package/engine/internal/unit/ability.d.ts +10 -1
  48. package/engine/internal/unit/ability.lua +36 -14
  49. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  50. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  51. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  52. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  53. package/engine/internal/unit/bonus.d.ts +2 -0
  54. package/engine/internal/unit/bonus.lua +17 -0
  55. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  56. package/engine/internal/unit/ignore-events-items.lua +5 -0
  57. package/engine/internal/unit/item.d.ts +24 -0
  58. package/engine/internal/unit/item.lua +78 -0
  59. package/engine/internal/unit/main-selected.d.ts +13 -0
  60. package/engine/internal/unit/main-selected.lua +51 -0
  61. package/engine/internal/unit+ability.lua +2 -2
  62. package/engine/internal/unit-missile-launch.lua +24 -5
  63. package/engine/internal/unit.d.ts +30 -10
  64. package/engine/internal/unit.lua +169 -83
  65. package/engine/internal/utility.lua +12 -0
  66. package/engine/lightning.d.ts +12 -5
  67. package/engine/lightning.lua +48 -14
  68. package/engine/local-client.d.ts +7 -2
  69. package/engine/local-client.lua +82 -0
  70. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  71. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  72. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  73. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  74. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  75. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  76. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  77. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  78. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  79. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  80. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  81. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  82. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  83. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  84. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  85. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  86. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  87. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  88. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  89. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  90. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  91. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  92. package/engine/object-data/entry/ability-type/web.lua +52 -0
  93. package/engine/object-data/entry/ability-type.d.ts +8 -6
  94. package/engine/object-data/entry/ability-type.lua +62 -27
  95. package/engine/object-data/entry/buff-type/applicable.lua +13 -37
  96. package/engine/object-data/entry/buff-type.d.ts +1 -1
  97. package/engine/object-data/entry/buff-type.lua +2 -2
  98. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  99. package/engine/object-data/entry/item-type.d.ts +15 -1
  100. package/engine/object-data/entry/item-type.lua +93 -2
  101. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  102. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  103. package/engine/object-data/entry/sound-preset.lua +140 -0
  104. package/engine/object-data/entry/unit-type.d.ts +8 -1
  105. package/engine/object-data/entry/unit-type.lua +61 -8
  106. package/engine/object-data/entry/upgrade.d.ts +1 -1
  107. package/engine/object-data/entry/upgrade.lua +4 -4
  108. package/engine/object-data/entry.d.ts +16 -14
  109. package/engine/object-data/entry.lua +60 -32
  110. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  111. package/engine/object-field/ability.d.ts +9 -3
  112. package/engine/object-field/ability.lua +4 -1
  113. package/engine/object-field.d.ts +2 -2
  114. package/engine/object-field.lua +4 -0
  115. package/engine/standard/entries/sound-preset.d.ts +10 -0
  116. package/engine/standard/entries/sound-preset.lua +10 -0
  117. package/engine/standard/fields/ability.d.ts +2 -0
  118. package/engine/standard/fields/ability.lua +2 -0
  119. package/engine/unit.d.ts +3 -0
  120. package/engine/unit.lua +3 -0
  121. package/index.d.ts +1 -0
  122. package/index.lua +1 -0
  123. package/objutil/buff.lua +1 -1
  124. package/objutil/unit.lua +8 -0
  125. package/package.json +2 -2
  126. package/patch-lua.d.ts +0 -0
  127. package/patch-lua.lua +10 -0
  128. package/utility/arrays.d.ts +8 -1
  129. package/utility/arrays.lua +34 -3
  130. package/utility/lazy.d.ts +2 -0
  131. package/utility/lazy.lua +14 -0
  132. package/utility/reflection.lua +11 -7
package/core/util.d.ts CHANGED
@@ -54,7 +54,7 @@ declare global {
54
54
  function fourCC(id: string): number;
55
55
  }
56
56
  declare namespace inner {
57
- const orderId: (id: "blink" | "stop" | "load" | "sleep" | "absorb" | "acidbomb" | "acolyteharvest" | "ambush" | "ancestralspirit" | "ancestralspirittarget" | "animatedead" | "antimagicshell" | "attack" | "attackground" | "attackonce" | "attributemodskill" | "auraunholy" | "auravampiric" | "autodispel" | "autodispeloff" | "autodispelon" | "autoentangle" | "autoentangleinstant" | "autoharvestgold" | "autoharvestlumber" | "avatar" | "avengerform" | "awaken" | "banish" | "barkskin" | "barkskinoff" | "barkskinon" | "battleroar" | "battlestations" | "bearform" | "berserk" | "blackarrow" | "blackarrowoff" | "blackarrowon" | "blight" | "blizzard" | "bloodlust" | "bloodlustoff" | "bloodluston" | "board" | "breathoffire" | "breathoffrost" | "build" | "burrow" | "cannibalize" | "carrionscarabs" | "carrionscarabsinstant" | "carrionscarabsoff" | "carrionscarabson" | "carrionswarm" | "chainlightning" | "channel" | "charm" | "chemicalrage" | "cloudoffog" | "clusterrockets" | "coldarrows" | "coldarrowstarg" | "controlmagic" | "corporealform" | "corrosivebreath" | "coupleinstant" | "coupletarget" | "creepanimatedead" | "creepdevour" | "creepheal" | "creephealoff" | "creephealon" | "creepthunderbolt" | "creepthunderclap" | "cripple" | "curse" | "curseoff" | "curseon" | "cyclone" | "darkconversion" | "darkportal" | "darkritual" | "darksummoning" | "deathanddecay" | "deathcoil" | "deathpact" | "decouple" | "defend" | "detectaoe" | "detonate" | "devour" | "devourmagic" | "disassociate" | "disenchant" | "dismount" | "dispel" | "divineshield" | "doom" | "drain" | "dreadlordinferno" | "dropitem" | "drunkenhaze" | "earthquake" | "eattree" | "elementalfury" | "ensnare" | "ensnareoff" | "ensnareon" | "entangle" | "entangleinstant" | "entanglingroots" | "etherealform" | "evileye" | "faeriefire" | "faeriefireoff" | "faeriefireon" | "fanofknives" | "farsight" | "fingerofdeath" | "firebolt" | "flamestrike" | "flamingarrows" | "flamingarrowstarg" | "flamingattack" | "flamingattacktarg" | "flare" | "forceboard" | "forceofnature" | "forkedlightning" | "freezingbreath" | "frenzy" | "frenzyoff" | "frenzyon" | "frostarmor" | "frostarmoroff" | "frostarmoron" | "frostnova" | "getitem" | "gold2lumber" | "grabtree" | "harvest" | "heal" | "healingspray" | "healingward" | "healingwave" | "healoff" | "healon" | "hex" | "holdposition" | "holybolt" | "howlofterror" | "humanbuild" | "immolation" | "impale" | "incineratearrow" | "incineratearrowoff" | "incineratearrowon" | "inferno" | "innerfire" | "innerfireoff" | "innerfireon" | "instant" | "invisibility" | "lavamonster" | "lightningshield" | "loadarcher" | "loadcorpse" | "loadcorpseinstant" | "locustswarm" | "lumber2gold" | "magicdefense" | "magicleash" | "magicundefense" | "manaburn" | "manaflareoff" | "manaflareon" | "manashieldoff" | "manashieldon" | "massteleport" | "mechanicalcritter" | "metamorphosis" | "militia" | "militiaconvert" | "militiaoff" | "militiaunconvert" | "mindrot" | "mirrorimage" | "monsoon" | "mount" | "mounthippogryph" | "move" | "moveAI" | "nagabuild" | "neutraldetectaoe" | "neutralinteract" | "neutralspell" | "nightelfbuild" | "orcbuild" | "parasite" | "parasiteoff" | "parasiteon" | "patrol" | "patrolAI" | "phaseshift" | "phaseshiftinstant" | "phaseshiftoff" | "phaseshifton" | "phoenixfire" | "phoenixmorph" | "poisonarrows" | "poisonarrowstarg" | "polymorph" | "possession" | "preservation" | "purge" | "rainofchaos" | "rainoffire" | "raisedead" | "raisedeadoff" | "raisedeadon" | "ravenform" | "recharge" | "rechargeoff" | "rechargeon" | "rejuvination" | "renew" | "renewoff" | "renewon" | "repair" | "repairoff" | "repairon" | "replenish" | "replenishlife" | "replenishlifeoff" | "replenishlifeon" | "replenishmana" | "replenishmanaoff" | "replenishmanaon" | "replenishoff" | "replenishon" | "request_hero" | "requestsacrifice" | "restoration" | "restorationoff" | "restorationon" | "resumebuild" | "resumeharvesting" | "resurrection" | "returnresources" | "revenge" | "revive" | "roar" | "robogoblin" | "root" | "sacrifice" | "sanctuary" | "scout" | "selfdestruct" | "selfdestructoff" | "selfdestructon" | "sentinel" | "follow" | "smart" | "setrally" | "shadowsight" | "shadowstrike" | "shockwave" | "silence" | "slow" | "slowoff" | "slowon" | "soulburn" | "soulpreservation" | "spellshield" | "spellshieldaoe" | "spellsteal" | "spellstealoff" | "spellstealon" | "spies" | "spiritlink" | "spiritofvengeance" | "spirittroll" | "spiritwolf" | "stampede" | "standdown" | "starfall" | "stasistrap" | "steal" | "stomp" | "stoneform" | "stunned" | "submerge" | "summonfactory" | "summongrizzly" | "summonphoenix" | "summonquillbeast" | "summonwareagle" | "tankdroppilot" | "tankloadpilot" | "tankpilot" | "taunt" | "thunderbolt" | "thunderclap" | "tornado" | "townbelloff" | "townbellon" | "tranquility" | "transmute" | "unavatar" | "unavengerform" | "unbearform" | "unburrow" | "uncoldarrows" | "uncorporealform" | "undeadbuild" | "undefend" | "undivineshield" | "unetherealform" | "unflamingarrows" | "unflamingattack" | "unholyfrenzy" | "unimmolation" | "unload" | "unloadall" | "unloadallcorpses" | "unloadallinstant" | "unpoisonarrows" | "unravenform" | "unrobogoblin" | "unroot" | "unstableconcoction" | "unstoneform" | "unsubmerge" | "unsummon" | "unwindwalk" | "vengeance" | "vengeanceinstant" | "vengeanceoff" | "vengeanceon" | "volcano" | "voodoo" | "ward" | "waterelemental" | "wateryminion" | "web" | "weboff" | "webon" | "whirlwind" | "windwalk" | "wispharvest") => number;
57
+ const orderId: (id: "blink" | "stop" | "load" | "sleep" | "absorb" | "acidbomb" | "acolyteharvest" | "ambush" | "ancestralspirit" | "ancestralspirittarget" | "animatedead" | "antimagicshell" | "attack" | "attackground" | "attackonce" | "attributemodskill" | "auraunholy" | "auravampiric" | "autodispel" | "autodispeloff" | "autodispelon" | "autoentangle" | "autoentangleinstant" | "autoharvestgold" | "autoharvestlumber" | "avatar" | "avengerform" | "awaken" | "banish" | "barkskin" | "barkskinoff" | "barkskinon" | "battleroar" | "battlestations" | "bearform" | "berserk" | "blackarrow" | "blackarrowoff" | "blackarrowon" | "blight" | "blizzard" | "bloodlust" | "bloodlustoff" | "bloodluston" | "board" | "breathoffire" | "breathoffrost" | "build" | "burrow" | "cannibalize" | "carrionscarabs" | "carrionscarabsinstant" | "carrionscarabsoff" | "carrionscarabson" | "carrionswarm" | "chainlightning" | "channel" | "charm" | "chemicalrage" | "cloudoffog" | "clusterrockets" | "coldarrows" | "coldarrowstarg" | "controlmagic" | "corporealform" | "corrosivebreath" | "coupleinstant" | "coupletarget" | "creepanimatedead" | "creepdevour" | "creepheal" | "creephealoff" | "creephealon" | "creepthunderbolt" | "creepthunderclap" | "cripple" | "curse" | "curseoff" | "curseon" | "cyclone" | "darkconversion" | "darkportal" | "darkritual" | "darksummoning" | "deathanddecay" | "deathcoil" | "deathpact" | "decouple" | "defend" | "detectaoe" | "detonate" | "devour" | "devourmagic" | "disassociate" | "disenchant" | "dismount" | "dispel" | "divineshield" | "doom" | "drain" | "dreadlordinferno" | "dropitem" | "moveslot0" | "moveslot1" | "moveslot2" | "moveslot3" | "moveslot4" | "moveslot5" | "useslot0" | "useslot1" | "useslot2" | "useslot3" | "useslot4" | "useslot5" | "drunkenhaze" | "earthquake" | "eattree" | "elementalfury" | "ensnare" | "ensnareoff" | "ensnareon" | "entangle" | "entangleinstant" | "entanglingroots" | "etherealform" | "evileye" | "faeriefire" | "faeriefireoff" | "faeriefireon" | "fanofknives" | "farsight" | "fingerofdeath" | "firebolt" | "flamestrike" | "flamingarrows" | "flamingarrowstarg" | "flamingattack" | "flamingattacktarg" | "flare" | "forceboard" | "forceofnature" | "forkedlightning" | "freezingbreath" | "frenzy" | "frenzyoff" | "frenzyon" | "frostarmor" | "frostarmoroff" | "frostarmoron" | "frostnova" | "getitem" | "gold2lumber" | "grabtree" | "harvest" | "heal" | "healingspray" | "healingward" | "healingwave" | "healoff" | "healon" | "hex" | "holdposition" | "holybolt" | "howlofterror" | "humanbuild" | "immolation" | "impale" | "incineratearrow" | "incineratearrowoff" | "incineratearrowon" | "inferno" | "innerfire" | "innerfireoff" | "innerfireon" | "instant" | "invisibility" | "lavamonster" | "lightningshield" | "loadarcher" | "loadcorpse" | "loadcorpseinstant" | "locustswarm" | "lumber2gold" | "magicdefense" | "magicleash" | "magicundefense" | "manaburn" | "manaflareoff" | "manaflareon" | "manashieldoff" | "manashieldon" | "massteleport" | "mechanicalcritter" | "metamorphosis" | "militia" | "militiaconvert" | "militiaoff" | "militiaunconvert" | "mindrot" | "mirrorimage" | "monsoon" | "mount" | "mounthippogryph" | "move" | "moveAI" | "nagabuild" | "neutraldetectaoe" | "neutralinteract" | "neutralspell" | "nightelfbuild" | "orcbuild" | "parasite" | "parasiteoff" | "parasiteon" | "patrol" | "patrolAI" | "phaseshift" | "phaseshiftinstant" | "phaseshiftoff" | "phaseshifton" | "phoenixfire" | "phoenixmorph" | "poisonarrows" | "poisonarrowstarg" | "polymorph" | "possession" | "preservation" | "purge" | "rainofchaos" | "rainoffire" | "raisedead" | "raisedeadoff" | "raisedeadon" | "ravenform" | "recharge" | "rechargeoff" | "rechargeon" | "rejuvination" | "renew" | "renewoff" | "renewon" | "repair" | "repairoff" | "repairon" | "replenish" | "replenishlife" | "replenishlifeoff" | "replenishlifeon" | "replenishmana" | "replenishmanaoff" | "replenishmanaon" | "replenishoff" | "replenishon" | "request_hero" | "requestsacrifice" | "restoration" | "restorationoff" | "restorationon" | "resumebuild" | "resumeharvesting" | "resurrection" | "returnresources" | "revenge" | "revive" | "roar" | "robogoblin" | "root" | "sacrifice" | "sanctuary" | "scout" | "selfdestruct" | "selfdestructoff" | "selfdestructon" | "sentinel" | "follow" | "smart" | "setrally" | "shadowsight" | "shadowstrike" | "shockwave" | "silence" | "slow" | "slowoff" | "slowon" | "soulburn" | "soulpreservation" | "spellshield" | "spellshieldaoe" | "spellsteal" | "spellstealoff" | "spellstealon" | "spies" | "spiritlink" | "spiritofvengeance" | "spirittroll" | "spiritwolf" | "stampede" | "standdown" | "starfall" | "stasistrap" | "steal" | "stomp" | "stoneform" | "stunned" | "submerge" | "summonfactory" | "summongrizzly" | "summonphoenix" | "summonquillbeast" | "summonwareagle" | "tankdroppilot" | "tankloadpilot" | "tankpilot" | "taunt" | "thunderbolt" | "thunderclap" | "tornado" | "townbelloff" | "townbellon" | "tranquility" | "transmute" | "unavatar" | "unavengerform" | "unbearform" | "unburrow" | "uncoldarrows" | "uncorporealform" | "undeadbuild" | "undefend" | "undivineshield" | "unetherealform" | "unflamingarrows" | "unflamingattack" | "unholyfrenzy" | "unimmolation" | "unload" | "unloadall" | "unloadallcorpses" | "unloadallinstant" | "unpoisonarrows" | "unravenform" | "unrobogoblin" | "unroot" | "unstableconcoction" | "unstoneform" | "unsubmerge" | "unsummon" | "unwindwalk" | "vengeance" | "vengeanceinstant" | "vengeanceoff" | "vengeanceon" | "volcano" | "voodoo" | "ward" | "waterelemental" | "wateryminion" | "web" | "weboff" | "webon" | "whirlwind" | "windwalk" | "wispharvest") => number;
58
58
  }
59
59
  declare global {
60
60
  function orderId(...args: Parameters<typeof inner.orderId>): ReturnType<typeof inner.orderId>;
package/core/util.lua CHANGED
@@ -1,3 +1,5 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__StringPadEnd = ____lualib.__TS__StringPadEnd
1
3
  local ____exports = {}
2
4
  local ns = {}
3
5
  do
@@ -14,7 +16,10 @@ do
14
16
  if type(id) == "number" then
15
17
  return id
16
18
  else
17
- local numid = string.unpack(">I4", id)
19
+ local numid = string.unpack(
20
+ ">I4",
21
+ __TS__StringPadEnd(id, 4, "\0")
22
+ )
18
23
  return numid
19
24
  end
20
25
  end
@@ -196,6 +201,18 @@ do
196
201
  drain = 852487,
197
202
  dreadlordinferno = 852224,
198
203
  dropitem = 852001,
204
+ moveslot0 = 852002,
205
+ moveslot1 = 852003,
206
+ moveslot2 = 852004,
207
+ moveslot3 = 852005,
208
+ moveslot4 = 852006,
209
+ moveslot5 = 852007,
210
+ useslot0 = 852008,
211
+ useslot1 = 852009,
212
+ useslot2 = 852010,
213
+ useslot3 = 852011,
214
+ useslot4 = 852012,
215
+ useslot5 = 852013,
199
216
  drunkenhaze = 852585,
200
217
  earthquake = 852121,
201
218
  eattree = 852146,
@@ -17,9 +17,9 @@ export declare abstract class Behavior<T extends AnyNotNil, PeriodicActionParame
17
17
  protected startPeriodicAction(interval: number, ...parameters: PeriodicActionParameters): void;
18
18
  protected stopPeriodicAction(): void;
19
19
  static count<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, limit?: number): number;
20
- static getFirst<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], Count extends [number] | []>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, ...[count]: Count): Count extends [number] ? T[] : T | undefined;
20
+ static getFirst<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], CountOrPredicate extends [number] | [] | [(behavior: T, ...args: PredicateArgs) => boolean, ...PredicateArgs], PredicateArgs extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, ...[countOrPredicate]: CountOrPredicate): CountOrPredicate extends [number] ? T[] : T | undefined;
21
21
  static getLast<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never): T | undefined;
22
- static getAll<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never): T[];
22
+ static getAll<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], PredicateArgs extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, predicate?: (this: void, behavior: T, ...args: PredicateArgs) => boolean, ...predicateArgs: PredicateArgs): T[];
23
23
  static forFirst<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], ConsumerParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, count: number, consumer: (this: void, behavior: T, ...parameters: ConsumerParameters) => any, ...parameters: ConsumerParameters): number;
24
24
  static forFirst<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], K extends KeysOfType<T, (this: T, ...args: any) => any>>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, count: number, key: K, ...parameters: T[K] extends (this: T, ...args: any) => any ? Parameters<T[K]> : never): number;
25
25
  static forAll<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], ConsumerParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, consumer: (this: void, behavior: T, ...parameters: ConsumerParameters) => unknown, ...parameters: ConsumerParameters): number;
@@ -83,11 +83,11 @@ function Behavior.count(self, object, limit)
83
83
  end
84
84
  return behaviorsCount
85
85
  end
86
- function Behavior.getFirst(self, object, count)
86
+ function Behavior.getFirst(self, object, countOrPredicate, ...)
87
87
  local behavior = firstBehaviorByObject[object]
88
- if count == nil then
88
+ if type(countOrPredicate) ~= "number" then
89
89
  while behavior ~= nil do
90
- if __TS__InstanceOf(behavior, self) then
90
+ if __TS__InstanceOf(behavior, self) and (countOrPredicate == nil or countOrPredicate(behavior, ...)) then
91
91
  return behavior
92
92
  end
93
93
  behavior = behavior[1]
@@ -96,7 +96,7 @@ function Behavior.getFirst(self, object, count)
96
96
  end
97
97
  local behaviors = {}
98
98
  local behaviorsCount = 0
99
- while behavior ~= nil and behaviorsCount < count do
99
+ while behavior ~= nil and behaviorsCount < countOrPredicate do
100
100
  if __TS__InstanceOf(behavior, self) then
101
101
  behaviorsCount = behaviorsCount + 1
102
102
  behaviors[behaviorsCount] = behavior
@@ -115,12 +115,12 @@ function Behavior.getLast(self, object)
115
115
  end
116
116
  return nil
117
117
  end
118
- function Behavior.getAll(self, object)
118
+ function Behavior.getAll(self, object, predicate, ...)
119
119
  local behaviors = {}
120
120
  local behaviorsCount = 0
121
121
  local behavior = firstBehaviorByObject[object]
122
122
  while behavior ~= nil do
123
- if __TS__InstanceOf(behavior, self) then
123
+ if __TS__InstanceOf(behavior, self) and (predicate == nil or predicate(behavior, ...)) then
124
124
  behaviorsCount = behaviorsCount + 1
125
125
  behaviors[behaviorsCount] = behavior
126
126
  end
@@ -0,0 +1,7 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityBehavior } from "../ability";
3
+ import { Destructor } from "../../../destroyable";
4
+ export declare class AlwaysEnabledAbilityBehavior extends AbilityBehavior {
5
+ protected onCreate(): void;
6
+ protected onDestroy(): Destructor;
7
+ }
@@ -0,0 +1,31 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local __TS__InstanceOf = ____lualib.__TS__InstanceOf
5
+ local ____exports = {}
6
+ local ____ability = require("engine.behaviour.ability")
7
+ local AbilityBehavior = ____ability.AbilityBehavior
8
+ local ____ability = require("engine.internal.ability")
9
+ local UnitAbility = ____ability.UnitAbility
10
+ local ____ability_2Ddisable_2Dcounter = require("engine.internal.misc.ability-disable-counter")
11
+ local increaseAbilityDisableCounter = ____ability_2Ddisable_2Dcounter.increaseAbilityDisableCounter
12
+ ____exports.AlwaysEnabledAbilityBehavior = __TS__Class()
13
+ local AlwaysEnabledAbilityBehavior = ____exports.AlwaysEnabledAbilityBehavior
14
+ AlwaysEnabledAbilityBehavior.name = "AlwaysEnabledAbilityBehavior"
15
+ __TS__ClassExtends(AlwaysEnabledAbilityBehavior, AbilityBehavior)
16
+ function AlwaysEnabledAbilityBehavior.prototype.onCreate(self)
17
+ local ability = self.ability
18
+ if not __TS__InstanceOf(ability, UnitAbility) then
19
+ return
20
+ end
21
+ increaseAbilityDisableCounter(ability.owner.handle, ability.typeId, -10)
22
+ end
23
+ function AlwaysEnabledAbilityBehavior.prototype.onDestroy(self)
24
+ local ability = self.ability
25
+ if not __TS__InstanceOf(ability, UnitAbility) then
26
+ return AbilityBehavior.prototype.onDestroy(self)
27
+ end
28
+ increaseAbilityDisableCounter(ability.owner.handle, ability.typeId, 10)
29
+ return AbilityBehavior.prototype.onDestroy(self)
30
+ end
31
+ return ____exports
@@ -33,4 +33,9 @@ export declare class ApplyBuffTargetAreaAbilityBehavior<T extends BuffConstructo
33
33
  onPointTargetImpact(caster: Unit, x: number, y: number): void;
34
34
  onWidgetTargetImpact(caster: Unit, target: Widget): void;
35
35
  }
36
+ export declare class ApplyBuffChannelingTargetAbilityBehavior<T extends BuffConstructor = typeof Buff> extends ApplyBuffAbilityBehavior<T> {
37
+ private buff?;
38
+ onUnitTargetChannelingStart(caster: Unit, target: Unit): void;
39
+ onStop(): void;
40
+ }
36
41
  export {};
@@ -123,4 +123,36 @@ function ApplyBuffTargetAreaAbilityBehavior.prototype.onWidgetTargetImpact(self,
123
123
  self.applyBuff(unit)
124
124
  end
125
125
  end
126
+ local behaviorByBuff = {}
127
+ ____exports.ApplyBuffChannelingTargetAbilityBehavior = __TS__Class()
128
+ local ApplyBuffChannelingTargetAbilityBehavior = ____exports.ApplyBuffChannelingTargetAbilityBehavior
129
+ ApplyBuffChannelingTargetAbilityBehavior.name = "ApplyBuffChannelingTargetAbilityBehavior"
130
+ __TS__ClassExtends(ApplyBuffChannelingTargetAbilityBehavior, ____exports.ApplyBuffAbilityBehavior)
131
+ function ApplyBuffChannelingTargetAbilityBehavior.prototype.onUnitTargetChannelingStart(self, caster, target)
132
+ local previousBuff = self.buff
133
+ if previousBuff ~= nil then
134
+ behaviorByBuff[previousBuff] = nil
135
+ previousBuff:destroy()
136
+ end
137
+ local buff = self.applyBuff(target)
138
+ if buff ~= nil then
139
+ behaviorByBuff[buff] = self
140
+ end
141
+ self.buff = buff
142
+ end
143
+ function ApplyBuffChannelingTargetAbilityBehavior.prototype.onStop(self)
144
+ local buff = self.buff
145
+ if buff ~= nil then
146
+ behaviorByBuff[buff] = nil
147
+ buff:destroy()
148
+ self.buff = nil
149
+ end
150
+ end
151
+ Buff.destroyEvent:addListener(function(buff)
152
+ local behavior = behaviorByBuff[buff]
153
+ if behavior ~= nil then
154
+ behaviorByBuff[buff] = nil
155
+ behavior.ability:interruptCast()
156
+ end
157
+ end)
126
158
  return ____exports
@@ -41,6 +41,7 @@ function ApplyUnitBehaviorAbilityBehavior.prototype.onUnitGainAbility(self, unit
41
41
  ____opt_0:destroy()
42
42
  end
43
43
  self.unitBehavior = __TS__New(self.unitBehaviorConstructor, unit)
44
+ self.unitBehavior.sourceAbilityBehavior = self
44
45
  self:update()
45
46
  end
46
47
  function ApplyUnitBehaviorAbilityBehavior.prototype.onUnitLoseAbility(self)
@@ -5,6 +5,7 @@ import { Unit } from "../../internal/unit";
5
5
  import { AbilityDependentValue } from "../../object-field/ability";
6
6
  import { Widget } from "../../../core/types/widget";
7
7
  import { AttackType, DamageType, WeaponType } from "../../internal/unit+damage";
8
+ import { CombatClassifications } from "../../object-data/auxiliary/combat-classification";
8
9
  export type DamageAbilityBehaviorParameters = {
9
10
  damagePerStrength?: AbilityDependentValue<number>;
10
11
  damagePerAgility?: AbilityDependentValue<number>;
@@ -15,6 +16,8 @@ export type DamageAbilityBehaviorParameters = {
15
16
  };
16
17
  export type DamageAreaAbilityBehaviorParameters = DamageAbilityBehaviorParameters & {
17
18
  maximumDamage?: AbilityDependentValue<number>;
19
+ areaOfEffect?: AbilityDependentValue<number>;
20
+ allowedTargetCombatClassifications?: AbilityDependentValue<CombatClassifications>;
18
21
  };
19
22
  declare abstract class DamageAbilityBehavior<T extends DamageAbilityBehaviorParameters = DamageAbilityBehaviorParameters> extends AbilityBehavior {
20
23
  protected readonly damage: AbilityDependentValue<number>;
@@ -82,10 +82,10 @@ function DamageAreaAbilityBehavior.prototype.damageArea(self, caster, x, y)
82
82
  local parameters = self.parameters
83
83
  local targets = Unit.getAllowedTargetsInCollisionRange(
84
84
  caster,
85
- self:resolveCurrentAbilityDependentValue(ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
85
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.allowedTargetCombatClassifications or ALLOWED_TARGETS_ABILITY_COMBAT_CLASSIFICATIONS_LEVEL_FIELD),
86
86
  x,
87
87
  y,
88
- self:resolveCurrentAbilityDependentValue(AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD)
88
+ self:resolveCurrentAbilityDependentValue(parameters and parameters.areaOfEffect or AREA_OF_EFFECT_ABILITY_FLOAT_LEVEL_FIELD)
89
89
  )
90
90
  local damage = self:calculateDamage(caster)
91
91
  local maximumDamage = self:resolveCurrentAbilityDependentValue(parameters and parameters.maximumDamage or 0)
@@ -0,0 +1,6 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityBehavior } from "../ability";
3
+ import { Unit } from "../../internal/unit";
4
+ export declare abstract class EmulateImpactAbilityBehavior extends AbilityBehavior {
5
+ protected emulateImpact(caster: Unit): void;
6
+ }
@@ -0,0 +1,28 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local ____exports = {}
5
+ local ____ability = require("engine.behaviour.ability")
6
+ local AbilityBehavior = ____ability.AbilityBehavior
7
+ local ____ability = require("engine.standard.fields.ability")
8
+ local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
9
+ local MANA_COST_ABILITY_INTEGER_LEVEL_FIELD = ____ability.MANA_COST_ABILITY_INTEGER_LEVEL_FIELD
10
+ local ____math = require("math")
11
+ local max = ____math.max
12
+ local MINIMUM_POSITIVE_NORMALIZED_FLOAT = ____math.MINIMUM_POSITIVE_NORMALIZED_FLOAT
13
+ ____exports.EmulateImpactAbilityBehavior = __TS__Class()
14
+ local EmulateImpactAbilityBehavior = ____exports.EmulateImpactAbilityBehavior
15
+ EmulateImpactAbilityBehavior.name = "EmulateImpactAbilityBehavior"
16
+ __TS__ClassExtends(EmulateImpactAbilityBehavior, AbilityBehavior)
17
+ function EmulateImpactAbilityBehavior.prototype.emulateImpact(self, caster)
18
+ local manaCost = self:resolveCurrentAbilityDependentValue(MANA_COST_ABILITY_INTEGER_LEVEL_FIELD)
19
+ local cooldown = self:resolveCurrentAbilityDependentValue(COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD)
20
+ if self.ability.cooldownRemaining ~= 0 or caster.mana < manaCost then
21
+ return
22
+ end
23
+ caster.mana = caster.mana - manaCost
24
+ self.ability.cooldownRemaining = max(cooldown, MINIMUM_POSITIVE_NORMALIZED_FLOAT)
25
+ self:flashCasterEffect(caster)
26
+ AbilityBehavior:forAll(self.ability, "onImpact", caster)
27
+ end
28
+ return ____exports
@@ -1,6 +1,6 @@
1
1
  /** @noSelfInFile */
2
- import { AbilityBehavior } from "../ability";
3
2
  import { Unit } from "../../internal/unit";
4
- export declare class InstantImpactAbilityBehavior extends AbilityBehavior {
3
+ import { EmulateImpactAbilityBehavior } from "./emulate-impact";
4
+ export declare class InstantImpactAbilityBehavior extends EmulateImpactAbilityBehavior {
5
5
  onCastingStart(caster: Unit): void;
6
6
  }
@@ -2,28 +2,13 @@ local ____lualib = require("lualib_bundle")
2
2
  local __TS__Class = ____lualib.__TS__Class
3
3
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
4
  local ____exports = {}
5
- local ____ability = require("engine.behaviour.ability")
6
- local AbilityBehavior = ____ability.AbilityBehavior
7
- local ____ability = require("engine.standard.fields.ability")
8
- local COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD = ____ability.COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD
9
- local MANA_COST_ABILITY_INTEGER_LEVEL_FIELD = ____ability.MANA_COST_ABILITY_INTEGER_LEVEL_FIELD
5
+ local ____emulate_2Dimpact = require("engine.behaviour.ability.emulate-impact")
6
+ local EmulateImpactAbilityBehavior = ____emulate_2Dimpact.EmulateImpactAbilityBehavior
10
7
  ____exports.InstantImpactAbilityBehavior = __TS__Class()
11
8
  local InstantImpactAbilityBehavior = ____exports.InstantImpactAbilityBehavior
12
9
  InstantImpactAbilityBehavior.name = "InstantImpactAbilityBehavior"
13
- __TS__ClassExtends(InstantImpactAbilityBehavior, AbilityBehavior)
10
+ __TS__ClassExtends(InstantImpactAbilityBehavior, EmulateImpactAbilityBehavior)
14
11
  function InstantImpactAbilityBehavior.prototype.onCastingStart(self, caster)
15
- local abilityTypeId = self.ability.typeId
16
- local manaCost = self:resolveCurrentAbilityDependentValue(MANA_COST_ABILITY_INTEGER_LEVEL_FIELD)
17
- local cooldown = self:resolveCurrentAbilityDependentValue(COOLDOWN_ABILITY_FLOAT_LEVEL_FIELD)
18
- if caster:getAbilityRemainingCooldown(abilityTypeId) ~= 0 or caster.mana < manaCost then
19
- return
20
- end
21
- caster.mana = caster.mana - manaCost
22
- if cooldown == 0 then
23
- caster:interruptCast(self.ability.typeId)
24
- else
25
- caster:startAbilityCooldown(self.ability.typeId, cooldown)
26
- end
27
- AbilityBehavior:forAll(self.ability, "onImpact", caster)
12
+ self:emulateImpact(caster)
28
13
  end
29
14
  return ____exports
@@ -0,0 +1,8 @@
1
+ /** @noSelfInFile */
2
+ import { Unit } from "../../internal/unit";
3
+ import { EmulateImpactAbilityBehavior } from "./emulate-impact";
4
+ import { Ability } from "../../internal/ability";
5
+ export declare class OnCommandImpactAbilityBehavior extends EmulateImpactAbilityBehavior {
6
+ constructor(ability: Ability);
7
+ onCommand(caster: Unit): void;
8
+ }
@@ -0,0 +1,25 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local ____exports = {}
5
+ local ____unit = require("engine.internal.unit")
6
+ local Unit = ____unit.Unit
7
+ local ____emulate_2Dimpact = require("engine.behaviour.ability.emulate-impact")
8
+ local EmulateImpactAbilityBehavior = ____emulate_2Dimpact.EmulateImpactAbilityBehavior
9
+ ____exports.OnCommandImpactAbilityBehavior = __TS__Class()
10
+ local OnCommandImpactAbilityBehavior = ____exports.OnCommandImpactAbilityBehavior
11
+ OnCommandImpactAbilityBehavior.name = "OnCommandImpactAbilityBehavior"
12
+ __TS__ClassExtends(OnCommandImpactAbilityBehavior, EmulateImpactAbilityBehavior)
13
+ function OnCommandImpactAbilityBehavior.prototype.____constructor(self, ability)
14
+ EmulateImpactAbilityBehavior.prototype.____constructor(self, ability)
15
+ self:registerCommandEvent()
16
+ end
17
+ function OnCommandImpactAbilityBehavior.prototype.onCommand(self, caster)
18
+ self:emulateImpact(caster)
19
+ end
20
+ Unit.itemUseOrderEvent:addListener(function(unit, item)
21
+ for ____, ability in ipairs(item.abilities) do
22
+ ____exports.OnCommandImpactAbilityBehavior:forAll(ability, "onCommand", unit)
23
+ end
24
+ end)
25
+ return ____exports
@@ -0,0 +1,16 @@
1
+ /** @noSelfInFile */
2
+ import { AbilityBehavior } from "../ability";
3
+ import { Unit } from "../../internal/unit";
4
+ import { Ability } from "../../internal/ability";
5
+ import { AbilityDependentValue } from "../../object-field/ability";
6
+ import { BuffPolarity } from "../../object-data/auxiliary/buff-polarity";
7
+ import { BuffResistanceType } from "../../object-data/auxiliary/buff-resistance-type";
8
+ export declare class RemoveBuffsSelfAbilityBehavior extends AbilityBehavior {
9
+ private readonly polarity?;
10
+ private readonly resistanceType?;
11
+ private readonly includeExpirationTimers?;
12
+ private readonly includeAuras?;
13
+ private readonly autoDispel?;
14
+ constructor(ability: Ability, polarity?: AbilityDependentValue<BuffPolarity> | undefined, resistanceType?: AbilityDependentValue<BuffResistanceType> | undefined, includeExpirationTimers?: AbilityDependentValue<boolean> | undefined, includeAuras?: AbilityDependentValue<boolean> | undefined, autoDispel?: AbilityDependentValue<boolean> | undefined);
15
+ onImpact(caster: Unit): void;
16
+ }
@@ -0,0 +1,28 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
4
+ local ____exports = {}
5
+ local ____ability = require("engine.behaviour.ability")
6
+ local AbilityBehavior = ____ability.AbilityBehavior
7
+ ____exports.RemoveBuffsSelfAbilityBehavior = __TS__Class()
8
+ local RemoveBuffsSelfAbilityBehavior = ____exports.RemoveBuffsSelfAbilityBehavior
9
+ RemoveBuffsSelfAbilityBehavior.name = "RemoveBuffsSelfAbilityBehavior"
10
+ __TS__ClassExtends(RemoveBuffsSelfAbilityBehavior, AbilityBehavior)
11
+ function RemoveBuffsSelfAbilityBehavior.prototype.____constructor(self, ability, polarity, resistanceType, includeExpirationTimers, includeAuras, autoDispel)
12
+ AbilityBehavior.prototype.____constructor(self, ability)
13
+ self.polarity = polarity
14
+ self.resistanceType = resistanceType
15
+ self.includeExpirationTimers = includeExpirationTimers
16
+ self.includeAuras = includeAuras
17
+ self.autoDispel = autoDispel
18
+ end
19
+ function RemoveBuffsSelfAbilityBehavior.prototype.onImpact(self, caster)
20
+ caster:removeBuffs(
21
+ self:resolveCurrentAbilityDependentValue(self.polarity),
22
+ self:resolveCurrentAbilityDependentValue(self.resistanceType),
23
+ self:resolveCurrentAbilityDependentValue(self.includeExpirationTimers),
24
+ self:resolveCurrentAbilityDependentValue(self.includeAuras),
25
+ self:resolveCurrentAbilityDependentValue(self.autoDispel)
26
+ )
27
+ end
28
+ return ____exports
@@ -7,24 +7,37 @@ import { Widget } from "../../core/types/widget";
7
7
  import { Item } from "../internal/item";
8
8
  import { Destructable } from "../../core/types/destructable";
9
9
  import { EffectParameters } from "../../core/types/effect";
10
- import { AbilityDependentValue } from "../object-field/ability";
10
+ import { AbilityDependentValue, ReadonlySubscribableAbilityDependentValue, SubscribableAbilityDependentValue } from "../object-field/ability";
11
+ import { Destructor } from "../../destroyable";
11
12
  export type AbilityBehaviorConstructor<Args extends any[]> = new (ability: Ability, ...args: Args) => AbilityBehavior;
13
+ export type AbilityBehaviorParameters = {
14
+ isExclusiveOnImpactHandler?: boolean;
15
+ };
12
16
  export declare abstract class AbilityBehavior<Parameters extends {
13
17
  periodicActionParameters?: any[];
14
18
  missileParameters?: any[];
15
19
  } = {}> extends Behavior<Ability, NonNullable<Parameters["periodicActionParameters"]>> {
16
- constructor(ability: Ability);
20
+ constructor(ability: Ability, parameters?: AbilityBehaviorParameters);
21
+ protected onDestroy(): Destructor;
22
+ protected subscribe<T extends boolean | number | string>(value: SubscribableAbilityDependentValue<T>): void;
23
+ protected registerCommandEvent(orderTypeStringId?: string): void;
17
24
  get ability(): Ability;
25
+ get unit(): Unit | undefined;
18
26
  protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value: AbilityDependentValue<T>): T;
27
+ protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value?: AbilityDependentValue<T>): T | undefined;
28
+ protected flashCasterEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
29
+ protected flashTargetEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
19
30
  protected flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
20
31
  protected flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
21
32
  protected flashSpecialEffect(...args: [...pointOrWidget: [x: number, y: number] | [widget: Widget], duration?: number]): void;
22
33
  private static MissileLaunchConfig;
23
34
  private get missileLaunchConfig();
24
- protected launchMissile(source: Unit, target: Unit, ...parameters: NonNullable<Parameters["missileParameters"]>): void;
35
+ protected onCreate(): void;
36
+ onValueChange(_value: ReadonlySubscribableAbilityDependentValue<string | number | boolean>): void;
25
37
  onMissileArrival(...parameters: NonNullable<Parameters["missileParameters"]>): void;
26
38
  onUnitGainAbility(_unit: Unit): void;
27
39
  onUnitLoseAbility(_unit: Unit): void;
40
+ onCommand(caster: Unit, orderTypeStringId: string): void;
28
41
  onCastingStart(caster: Unit): void;
29
42
  onCastingFinish(caster: Unit): void;
30
43
  onChannelingStart(caster: Unit): void;