warscript 0.0.1-dev.9cbb1ff → 0.0.1-dev.9e6f20e
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.
- package/attributes.d.ts +6 -0
- package/attributes.lua +17 -1
- package/core/types/frame.d.ts +1 -0
- package/core/types/frame.lua +136 -58
- package/core/types/handle.lua +6 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +17 -1
- package/core/types/player.lua +70 -24
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.lua +1 -1
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +31 -37
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +16 -7
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +11 -6
- package/engine/behaviour/ability.lua +38 -17
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +39 -3
- package/engine/behaviour/unit.lua +269 -6
- package/engine/buff.d.ts +67 -22
- package/engine/buff.lua +371 -182
- package/engine/internal/ability.d.ts +7 -1
- package/engine/internal/ability.lua +64 -24
- package/engine/internal/item/ability.lua +63 -11
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +16 -16
- package/engine/internal/item.lua +152 -69
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +113 -12
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +6 -0
- package/engine/internal/unit/bonus.lua +33 -3
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +32 -17
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
- package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +34 -27
- package/engine/internal/unit.lua +365 -273
- package/engine/local-client.d.ts +7 -0
- package/engine/local-client.lua +86 -1
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type.d.ts +2 -0
- package/engine/object-data/entry/ability-type.lua +89 -8
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- package/engine/object-data/entry/destructible-type.d.ts +27 -1
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/unit-type.d.ts +17 -4
- package/engine/object-data/entry/unit-type.lua +189 -83
- package/engine/object-field/ability.d.ts +4 -4
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +18 -7
- package/engine/object-field.lua +294 -135
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +6 -0
- package/engine/unit.lua +6 -0
- package/event.d.ts +1 -1
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/network.lua +25 -1
- package/objutil/buff.lua +11 -10
- package/objutil/object.lua +1 -1
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +2 -0
- package/utility/arrays.lua +11 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +46 -1
- package/utility/lua-maps.d.ts +12 -2
- package/utility/lua-maps.lua +37 -2
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +4 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
|
@@ -21,6 +21,16 @@ local ____preconditions = require("utility.preconditions")
|
|
|
21
21
|
local checkNotNull = ____preconditions.checkNotNull
|
|
22
22
|
local ____lazy = require("utility.lazy")
|
|
23
23
|
local lazyRecord = ____lazy.lazyRecord
|
|
24
|
+
local ____timer = require("core.types.timer")
|
|
25
|
+
local consumeZeroTimerCallback = ____timer.consumeZeroTimerCallback
|
|
26
|
+
local Timer = ____timer.Timer
|
|
27
|
+
local ____lua_2Dsets = require("utility.lua-sets")
|
|
28
|
+
local luaSetOf = ____lua_2Dsets.luaSetOf
|
|
29
|
+
local ____attributes = require("attributes")
|
|
30
|
+
local attribute = ____attributes.attribute
|
|
31
|
+
local ____pseudo_2Dpassive_2Dabilities = require("engine.internal.unit.pseudo-passive-abilities")
|
|
32
|
+
local pseudoPassiveAbilityOrderTypeStringId = ____pseudo_2Dpassive_2Dabilities.pseudoPassiveAbilityOrderTypeStringId
|
|
33
|
+
local pseudoPassiveAbilityTypeIds = ____pseudo_2Dpassive_2Dabilities.pseudoPassiveAbilityTypeIds
|
|
24
34
|
local eventInvoke = Event.invoke
|
|
25
35
|
local condition = Condition
|
|
26
36
|
local createTrigger = CreateTrigger
|
|
@@ -83,7 +93,7 @@ local function createCommonEvent(underlyingEvent)
|
|
|
83
93
|
underlyingEvent,
|
|
84
94
|
3,
|
|
85
95
|
function(caster, ability)
|
|
86
|
-
return
|
|
96
|
+
return not (pseudoPassiveAbilityTypeIds[ability.typeId] ~= nil), caster, ability
|
|
87
97
|
end
|
|
88
98
|
)
|
|
89
99
|
end
|
|
@@ -163,7 +173,7 @@ local function createNoTargetEvent(underlyingEvent)
|
|
|
163
173
|
underlyingEvent,
|
|
164
174
|
1,
|
|
165
175
|
function(caster, ability, targetUnit, targetItem, targetDestructible, x, y)
|
|
166
|
-
if x == 0 and y == 0 and targetUnit == nil and targetItem == nil and targetDestructible == nil then
|
|
176
|
+
if x == 0 and y == 0 and targetUnit == nil and targetItem == nil and targetDestructible == nil and not (pseudoPassiveAbilityTypeIds[ability.typeId] ~= nil) then
|
|
167
177
|
return true, caster, ability
|
|
168
178
|
else
|
|
169
179
|
return false
|
|
@@ -345,21 +355,17 @@ rawset(
|
|
|
345
355
|
extractAbilityTypeId
|
|
346
356
|
)
|
|
347
357
|
)
|
|
358
|
+
local internalAbilityChannelingFinishEvent = __TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_FINISH, collectUnitAbilityEventParameters)
|
|
348
359
|
rawset(
|
|
349
360
|
Unit,
|
|
350
361
|
"abilityChannelingFinishEvent",
|
|
351
|
-
createDispatchingEvent(
|
|
352
|
-
__TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_FINISH, collectUnitAbilityEventParameters),
|
|
353
|
-
extractAbilityTypeId
|
|
354
|
-
)
|
|
362
|
+
createDispatchingEvent(internalAbilityChannelingFinishEvent, extractAbilityTypeId)
|
|
355
363
|
)
|
|
364
|
+
local internalAbilityStopEvent = __TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_ENDCAST, collectUnitAbilityEventParameters)
|
|
356
365
|
rawset(
|
|
357
366
|
Unit,
|
|
358
367
|
"abilityStopEvent",
|
|
359
|
-
createDispatchingEvent(
|
|
360
|
-
__TS__New(UnitTriggerEvent, EVENT_PLAYER_UNIT_SPELL_ENDCAST, collectUnitAbilityEventParameters),
|
|
361
|
-
extractAbilityTypeId
|
|
362
|
-
)
|
|
368
|
+
createDispatchingEvent(internalAbilityStopEvent, extractAbilityTypeId)
|
|
363
369
|
)
|
|
364
370
|
rawset(
|
|
365
371
|
Unit,
|
|
@@ -376,9 +382,13 @@ rawset(
|
|
|
376
382
|
condition(function()
|
|
377
383
|
local unit = Unit:of(getTriggerUnit())
|
|
378
384
|
if unit ~= nil then
|
|
379
|
-
local ability = unit:
|
|
385
|
+
local ability = unit:getAbility(abilityTypeId)
|
|
380
386
|
if ability ~= nil then
|
|
381
|
-
|
|
387
|
+
if pseudoPassiveAbilityTypeIds[ability.typeId] ~= nil then
|
|
388
|
+
ability:interruptCast()
|
|
389
|
+
else
|
|
390
|
+
eventInvoke(event, unit, ability, orderTypeStringId)
|
|
391
|
+
end
|
|
382
392
|
end
|
|
383
393
|
end
|
|
384
394
|
end)
|
|
@@ -388,4 +398,95 @@ rawset(
|
|
|
388
398
|
end)
|
|
389
399
|
end)
|
|
390
400
|
)
|
|
401
|
+
local internalAbilityImpactEvent = __TS__New(Event)
|
|
402
|
+
local impactCallbackIdAttribute = attribute()
|
|
403
|
+
local function invokeImpactEvent(unit, ability, ...)
|
|
404
|
+
ability[impactCallbackIdAttribute] = nil
|
|
405
|
+
eventInvoke(internalAbilityImpactEvent, unit, ability, ...)
|
|
406
|
+
end
|
|
407
|
+
internalAbilityChannelingStartEvent:addListener(
|
|
408
|
+
999999,
|
|
409
|
+
function(unit, ability, ...)
|
|
410
|
+
ability[impactCallbackIdAttribute] = Timer:run(invokeImpactEvent, unit, ability, ...)
|
|
411
|
+
end
|
|
412
|
+
)
|
|
413
|
+
local function consumeImpactCallback(_, ability)
|
|
414
|
+
local impactCallbackId = ability[impactCallbackIdAttribute]
|
|
415
|
+
if impactCallbackId ~= nil then
|
|
416
|
+
consumeZeroTimerCallback(impactCallbackId)
|
|
417
|
+
end
|
|
418
|
+
end
|
|
419
|
+
internalAbilityChannelingFinishEvent:addListener(999999, consumeImpactCallback)
|
|
420
|
+
internalAbilityStopEvent:addListener(999999, consumeImpactCallback)
|
|
421
|
+
rawset(
|
|
422
|
+
Unit,
|
|
423
|
+
"abilityImpactEvent",
|
|
424
|
+
createDispatchingEvent(
|
|
425
|
+
createCommonEvent(internalAbilityImpactEvent),
|
|
426
|
+
extractAbilityTypeId
|
|
427
|
+
)
|
|
428
|
+
)
|
|
429
|
+
rawset(
|
|
430
|
+
Unit,
|
|
431
|
+
"abilityWidgetTargetImpactEvent",
|
|
432
|
+
createDispatchingEvent(
|
|
433
|
+
createWidgetTargetEvent(internalAbilityImpactEvent),
|
|
434
|
+
extractAbilityTypeId
|
|
435
|
+
)
|
|
436
|
+
)
|
|
437
|
+
rawset(
|
|
438
|
+
Unit,
|
|
439
|
+
"abilityUnitTargetImpactEvent",
|
|
440
|
+
createDispatchingEvent(
|
|
441
|
+
createUnitTargetEvent(internalAbilityImpactEvent),
|
|
442
|
+
extractAbilityTypeId
|
|
443
|
+
)
|
|
444
|
+
)
|
|
445
|
+
rawset(
|
|
446
|
+
Unit,
|
|
447
|
+
"abilityItemTargetImpactEvent",
|
|
448
|
+
createDispatchingEvent(
|
|
449
|
+
createItemTargetEvent(internalAbilityImpactEvent),
|
|
450
|
+
extractAbilityTypeId
|
|
451
|
+
)
|
|
452
|
+
)
|
|
453
|
+
rawset(
|
|
454
|
+
Unit,
|
|
455
|
+
"abilityDestructibleTargetImpactEvent",
|
|
456
|
+
createDispatchingEvent(
|
|
457
|
+
createDestructibleTargetEvent(internalAbilityImpactEvent),
|
|
458
|
+
extractAbilityTypeId
|
|
459
|
+
)
|
|
460
|
+
)
|
|
461
|
+
rawset(
|
|
462
|
+
Unit,
|
|
463
|
+
"abilityPointTargetImpactEvent",
|
|
464
|
+
createDispatchingEvent(
|
|
465
|
+
createPointTargetEvent(internalAbilityImpactEvent),
|
|
466
|
+
extractAbilityTypeId
|
|
467
|
+
)
|
|
468
|
+
)
|
|
469
|
+
rawset(
|
|
470
|
+
Unit,
|
|
471
|
+
"abilityNoTargetImpactEvent",
|
|
472
|
+
createDispatchingEvent(
|
|
473
|
+
createNoTargetEvent(internalAbilityImpactEvent),
|
|
474
|
+
extractAbilityTypeId
|
|
475
|
+
)
|
|
476
|
+
)
|
|
477
|
+
local spellEffectOnlyAbilityTypeIds = luaSetOf(fourCC("AAns"))
|
|
478
|
+
internalAbilityChannelingStartEvent:addListener(
|
|
479
|
+
-999999,
|
|
480
|
+
function(unit, ability)
|
|
481
|
+
if spellEffectOnlyAbilityTypeIds[ability.parentTypeId] ~= nil then
|
|
482
|
+
eventInvoke(internalAbilityChannelingFinishEvent, unit, ability)
|
|
483
|
+
eventInvoke(internalAbilityStopEvent, unit, ability)
|
|
484
|
+
end
|
|
485
|
+
end
|
|
486
|
+
)
|
|
487
|
+
local function doNothing()
|
|
488
|
+
end
|
|
489
|
+
for pseudoPassiveAbilityTypeId in pairs(pseudoPassiveAbilityTypeIds) do
|
|
490
|
+
Unit.abilityCommandEvent[pseudoPassiveAbilityTypeId][pseudoPassiveAbilityOrderTypeStringId]:addListener(999999, doNothing)
|
|
491
|
+
end
|
|
391
492
|
return ____exports
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { CombatClassifications } from "../../object-data/auxiliary/combat-classification";
|
|
3
3
|
declare module "../unit" {
|
|
4
4
|
interface Unit {
|
|
5
|
-
isAllowedTarget(this: Unit, source: Unit, allowedTargetCombatClassifications
|
|
5
|
+
isAllowedTarget(this: Unit, source: Unit, allowedTargetCombatClassifications?: CombatClassifications): boolean;
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
declare module "../unit" {
|
|
@@ -5,7 +5,15 @@ local initializeFilterTargetState = ____combat_2Dclassification.initializeFilter
|
|
|
5
5
|
local ____unit = require("engine.internal.unit")
|
|
6
6
|
local Unit = ____unit.Unit
|
|
7
7
|
Unit.prototype.isAllowedTarget = function(self, source, allowedTargetCombatClassifications)
|
|
8
|
-
|
|
8
|
+
if allowedTargetCombatClassifications ~= nil then
|
|
9
|
+
initializeFilterTargetState(source, allowedTargetCombatClassifications)
|
|
10
|
+
return filterTarget(self)
|
|
11
|
+
end
|
|
12
|
+
initializeFilterTargetState(source, source.firstWeapon.allowedTargetCombatClassifications)
|
|
13
|
+
if filterTarget(self) then
|
|
14
|
+
return true
|
|
15
|
+
end
|
|
16
|
+
initializeFilterTargetState(source, source.secondWeapon.allowedTargetCombatClassifications)
|
|
9
17
|
return filterTarget(self)
|
|
10
18
|
end
|
|
11
19
|
Unit.getAllowedTargetsInRange = function(source, allowedTargetCombatClassifications, x, y, range)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
declare module "../unit" {
|
|
3
|
+
interface Unit {
|
|
4
|
+
strengthBase: number;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
declare module "../unit" {
|
|
8
|
+
interface Unit {
|
|
9
|
+
agilityBase: number;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
declare module "../unit" {
|
|
13
|
+
interface Unit {
|
|
14
|
+
intelligenceBase: number;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
local ____unit = require("engine.internal.unit")
|
|
5
|
+
local Unit = ____unit.Unit
|
|
6
|
+
local ____unit = require("engine.standard.fields.unit")
|
|
7
|
+
local AGILITY_UNIT_FIELD = ____unit.AGILITY_UNIT_FIELD
|
|
8
|
+
local INTELLIGENCE_UNIT_FIELD = ____unit.INTELLIGENCE_UNIT_FIELD
|
|
9
|
+
local STRENGTH_UNIT_FIELD = ____unit.STRENGTH_UNIT_FIELD
|
|
10
|
+
__TS__ObjectDefineProperty(
|
|
11
|
+
Unit.prototype,
|
|
12
|
+
"strengthBase",
|
|
13
|
+
{
|
|
14
|
+
get = function(self)
|
|
15
|
+
return STRENGTH_UNIT_FIELD:getValue(self)
|
|
16
|
+
end,
|
|
17
|
+
set = function(self, value)
|
|
18
|
+
STRENGTH_UNIT_FIELD:setValue(self, value)
|
|
19
|
+
end
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
__TS__ObjectDefineProperty(
|
|
23
|
+
Unit.prototype,
|
|
24
|
+
"agilityBase",
|
|
25
|
+
{
|
|
26
|
+
get = function(self)
|
|
27
|
+
return AGILITY_UNIT_FIELD:getValue(self)
|
|
28
|
+
end,
|
|
29
|
+
set = function(self, value)
|
|
30
|
+
AGILITY_UNIT_FIELD:setValue(self, value)
|
|
31
|
+
end
|
|
32
|
+
}
|
|
33
|
+
)
|
|
34
|
+
__TS__ObjectDefineProperty(
|
|
35
|
+
Unit.prototype,
|
|
36
|
+
"intelligenceBase",
|
|
37
|
+
{
|
|
38
|
+
get = function(self)
|
|
39
|
+
return INTELLIGENCE_UNIT_FIELD:getValue(self)
|
|
40
|
+
end,
|
|
41
|
+
set = function(self, value)
|
|
42
|
+
INTELLIGENCE_UNIT_FIELD:setValue(self, value)
|
|
43
|
+
end
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
return ____exports
|
|
@@ -5,6 +5,8 @@ export type UnitBonusId<Brand extends string = any> = number & {
|
|
|
5
5
|
readonly __unitBonusId: unique symbol;
|
|
6
6
|
readonly __unitBonusIdBrand: Brand;
|
|
7
7
|
};
|
|
8
|
+
export type UnitMaxHealthBonusId = UnitBonusId<"maxHealth">;
|
|
9
|
+
export type UnitMaxManaBonusId = UnitBonusId<"maxMana">;
|
|
8
10
|
export type UnitArmorBonusId = UnitBonusId<"armor">;
|
|
9
11
|
export type UnitAttackSpeedFactorBonusId = UnitBonusId<"attackSpeedFactor">;
|
|
10
12
|
export type UnitMovementSpeedFactorBonusId = UnitBonusId<"movementSpeedFactor">;
|
|
@@ -12,6 +14,7 @@ export type UnitAutoAttackDamageBonusId = UnitBonusId<"autoAttackDamage">;
|
|
|
12
14
|
export type UnitDamageFactorBonusId = UnitBonusId<"damageFactor">;
|
|
13
15
|
export type UnitReceivedDamageFactorBonusId = UnitBonusId<"receivedDamageFactor">;
|
|
14
16
|
export type UnitEvasionProbabilityBonusId = UnitBonusId<"evasionProbability">;
|
|
17
|
+
export type UnitManaRegenerationRateFactorBonusId = UnitBonusId<"manaRegenerationRateFactor">;
|
|
15
18
|
export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
|
|
16
19
|
abilityTypeId: AbilityTypeId;
|
|
17
20
|
field: jabilityintegerlevelfield;
|
|
@@ -29,6 +32,8 @@ export type UnitBonusType<Id extends UnitBonusId = UnitBonusId> = ({
|
|
|
29
32
|
readonly __unitBonusTypeId?: Id;
|
|
30
33
|
};
|
|
31
34
|
export declare namespace UnitBonusType {
|
|
35
|
+
const HEALTH: UnitBonusType<UnitMaxHealthBonusId>;
|
|
36
|
+
const MANA: UnitBonusType<UnitMaxManaBonusId>;
|
|
32
37
|
const ARMOR: UnitBonusType<UnitArmorBonusId>;
|
|
33
38
|
const ATTACK_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
|
|
34
39
|
const MOVEMENT_SPEED_FACTOR: UnitBonusType<UnitAttackSpeedFactorBonusId>;
|
|
@@ -36,6 +41,7 @@ export declare namespace UnitBonusType {
|
|
|
36
41
|
const DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
37
42
|
const RECEIVED_DAMAGE_FACTOR: UnitBonusType<UnitReceivedDamageFactorBonusId>;
|
|
38
43
|
const EVASION_PROBABILITY: UnitBonusType<UnitEvasionProbabilityBonusId>;
|
|
44
|
+
const MANA_REGENERATION_RATE_FACTOR: UnitBonusType<UnitManaRegenerationRateFactorBonusId>;
|
|
39
45
|
}
|
|
40
46
|
export declare const addUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, value: number) => Id;
|
|
41
47
|
export declare const removeUnitBonus: <Id extends UnitBonusId>(unit: Unit, bonusType: UnitBonusType<Id>, id: Id) => boolean;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
local ____exports = {}
|
|
2
2
|
local ____unit = require("engine.internal.unit")
|
|
3
3
|
local Unit = ____unit.Unit
|
|
4
|
-
local
|
|
5
|
-
local ARMOR_BONUS_DUMMY_ABILITY_FIELD =
|
|
6
|
-
local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID =
|
|
4
|
+
local ____armor_2Dbonus = require("engine.internal.object-data.armor-bonus")
|
|
5
|
+
local ARMOR_BONUS_DUMMY_ABILITY_FIELD = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_FIELD
|
|
6
|
+
local ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID = ____armor_2Dbonus.ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID
|
|
7
7
|
local ____utility = require("engine.internal.utility")
|
|
8
8
|
local addInternalAbility = ____utility.addInternalAbility
|
|
9
9
|
local ____arrays = require("utility.arrays")
|
|
@@ -24,6 +24,15 @@ local MOVEMENT_SPEED_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____movement_2Dspee
|
|
|
24
24
|
local ____evasion_2Dprobability = require("engine.internal.object-data.evasion-probability")
|
|
25
25
|
local EVASION_PROBABILITY_ABILITY_FIELD = ____evasion_2Dprobability.EVASION_PROBABILITY_ABILITY_FIELD
|
|
26
26
|
local EVASION_PROBABILITY_DUMMY_ABILITY_TYPE_ID = ____evasion_2Dprobability.EVASION_PROBABILITY_DUMMY_ABILITY_TYPE_ID
|
|
27
|
+
local ____health_2Dbonus = require("engine.internal.object-data.health-bonus")
|
|
28
|
+
local HEALTH_BONUS_DUMMY_ABILITY_FIELD = ____health_2Dbonus.HEALTH_BONUS_DUMMY_ABILITY_FIELD
|
|
29
|
+
local HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID = ____health_2Dbonus.HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID
|
|
30
|
+
local ____mana_2Dbonus = require("engine.internal.object-data.mana-bonus")
|
|
31
|
+
local MANA_BONUS_DUMMY_ABILITY_FIELD = ____mana_2Dbonus.MANA_BONUS_DUMMY_ABILITY_FIELD
|
|
32
|
+
local MANA_BONUS_DUMMY_ABILITY_TYPE_ID = ____mana_2Dbonus.MANA_BONUS_DUMMY_ABILITY_TYPE_ID
|
|
33
|
+
local ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor = require("engine.internal.object-data.mana-regeneration-rate-increase-factor")
|
|
34
|
+
local MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD = ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor.MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD
|
|
35
|
+
local MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID = ____mana_2Dregeneration_2Drate_2Dincrease_2Dfactor.MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID
|
|
27
36
|
local damageFactorByUnit = {}
|
|
28
37
|
local receivedDamageFactorByUnit = {}
|
|
29
38
|
local function atLeastOnceProbability(array)
|
|
@@ -36,6 +45,20 @@ end
|
|
|
36
45
|
____exports.UnitBonusType = {}
|
|
37
46
|
local UnitBonusType = ____exports.UnitBonusType
|
|
38
47
|
do
|
|
48
|
+
UnitBonusType.HEALTH = {
|
|
49
|
+
abilityTypeId = HEALTH_BONUS_DUMMY_ABILITY_TYPE_ID,
|
|
50
|
+
field = HEALTH_BONUS_DUMMY_ABILITY_FIELD,
|
|
51
|
+
integer = true,
|
|
52
|
+
reduce = sum,
|
|
53
|
+
initialValue = 0
|
|
54
|
+
}
|
|
55
|
+
UnitBonusType.MANA = {
|
|
56
|
+
abilityTypeId = MANA_BONUS_DUMMY_ABILITY_TYPE_ID,
|
|
57
|
+
field = MANA_BONUS_DUMMY_ABILITY_FIELD,
|
|
58
|
+
integer = true,
|
|
59
|
+
reduce = sum,
|
|
60
|
+
initialValue = 0
|
|
61
|
+
}
|
|
39
62
|
UnitBonusType.ARMOR = {
|
|
40
63
|
abilityTypeId = ARMOR_BONUS_DUMMY_ABILITY_TYPE_ID,
|
|
41
64
|
field = ARMOR_BONUS_DUMMY_ABILITY_FIELD,
|
|
@@ -73,6 +96,13 @@ do
|
|
|
73
96
|
reduce = atLeastOnceProbability,
|
|
74
97
|
initialValue = 0
|
|
75
98
|
}
|
|
99
|
+
UnitBonusType.MANA_REGENERATION_RATE_FACTOR = {
|
|
100
|
+
abilityTypeId = MANA_REGENERATION_RATE_INCREASE_FACTOR_DUMMY_ABILITY_TYPE_ID,
|
|
101
|
+
field = MANA_REGENERATION_RATE_INCREASE_FACTOR_ABILITY_FIELD,
|
|
102
|
+
integer = false,
|
|
103
|
+
reduce = sum,
|
|
104
|
+
initialValue = 0
|
|
105
|
+
}
|
|
76
106
|
end
|
|
77
107
|
local bonusesByUnitByBonusType = {}
|
|
78
108
|
local nextId = 1
|
|
@@ -32,7 +32,7 @@ declare module "../unit" {
|
|
|
32
32
|
* @param includeAuras Whether to remove aura buffs. Default `true`.
|
|
33
33
|
* @param autoDispel Unknown. Default `false`.
|
|
34
34
|
*/
|
|
35
|
-
removeBuffs(polarity?: BuffPolarity, resistanceType?: BuffResistanceType, includeExpirationTimers?: boolean, includeAuras?: boolean, autoDispel?: boolean):
|
|
36
|
-
removeBuffs(buffTypeIds: number[]):
|
|
35
|
+
removeBuffs(polarity?: BuffPolarity, resistanceType?: BuffResistanceType, includeExpirationTimers?: boolean, includeAuras?: boolean, autoDispel?: boolean): number;
|
|
36
|
+
removeBuffs(buffTypeIds: number[]): number;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
local ____lualib = require("lualib_bundle")
|
|
2
|
-
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
3
|
-
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
4
|
-
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
5
1
|
local ____exports = {}
|
|
6
2
|
local ____buff = require("engine.buff")
|
|
7
3
|
local checkBuff = ____buff.checkBuff
|
|
@@ -46,36 +42,55 @@ Unit.prototype.countBuffs = function(self, polarity, resistanceType, includeExpi
|
|
|
46
42
|
)
|
|
47
43
|
end
|
|
48
44
|
Unit.prototype.removeBuffs = function(self, polarityOrBuffTypeIds, resistanceType, includeExpirationTimers, includeAuras, autoDispel)
|
|
45
|
+
local handle = self.handle
|
|
46
|
+
local cnt
|
|
49
47
|
if type(polarityOrBuffTypeIds) == "table" then
|
|
50
|
-
|
|
48
|
+
cnt = 0
|
|
51
49
|
for i = 1, #polarityOrBuffTypeIds do
|
|
52
|
-
unitRemoveAbility(handle, polarityOrBuffTypeIds[i])
|
|
50
|
+
cnt = cnt + (unitRemoveAbility(handle, polarityOrBuffTypeIds[i]) and 1 or 0)
|
|
53
51
|
end
|
|
54
52
|
else
|
|
55
|
-
local
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
(resistanceType or 0) & 1 ~= 0,
|
|
60
|
-
(resistanceType or 0) & 2 ~= 0
|
|
61
|
-
)
|
|
53
|
+
local positive = (polarityOrBuffTypeIds or 3) & 1 ~= 0
|
|
54
|
+
local negative = (polarityOrBuffTypeIds or 3) & 2 ~= 0
|
|
55
|
+
local magic = (resistanceType or 0) & 1 ~= 0
|
|
56
|
+
local physical = (resistanceType or 0) & 2 ~= 0
|
|
62
57
|
local ____includeExpirationTimers_0 = includeExpirationTimers
|
|
63
58
|
if ____includeExpirationTimers_0 == nil then
|
|
64
59
|
____includeExpirationTimers_0 = true
|
|
65
60
|
end
|
|
66
|
-
|
|
61
|
+
includeExpirationTimers = ____includeExpirationTimers_0
|
|
67
62
|
local ____includeAuras_1 = includeAuras
|
|
68
63
|
if ____includeAuras_1 == nil then
|
|
69
64
|
____includeAuras_1 = true
|
|
70
65
|
end
|
|
71
|
-
|
|
66
|
+
includeAuras = ____includeAuras_1
|
|
72
67
|
local ____autoDispel_2 = autoDispel
|
|
73
68
|
if ____autoDispel_2 == nil then
|
|
74
69
|
____autoDispel_2 = false
|
|
75
70
|
end
|
|
76
|
-
|
|
77
|
-
|
|
71
|
+
autoDispel = ____autoDispel_2
|
|
72
|
+
cnt = unitCountBuffsEx(
|
|
73
|
+
handle,
|
|
74
|
+
positive,
|
|
75
|
+
negative,
|
|
76
|
+
magic,
|
|
77
|
+
physical,
|
|
78
|
+
includeExpirationTimers,
|
|
79
|
+
includeAuras,
|
|
80
|
+
autoDispel
|
|
81
|
+
)
|
|
82
|
+
unitRemoveBuffsEx(
|
|
83
|
+
handle,
|
|
84
|
+
positive,
|
|
85
|
+
negative,
|
|
86
|
+
magic,
|
|
87
|
+
physical,
|
|
88
|
+
includeExpirationTimers,
|
|
89
|
+
includeAuras,
|
|
90
|
+
autoDispel
|
|
91
|
+
)
|
|
78
92
|
end
|
|
79
93
|
checkBuffs(self)
|
|
94
|
+
return cnt
|
|
80
95
|
end
|
|
81
96
|
return ____exports
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
local ____unit = require("engine.internal.unit")
|
|
5
|
+
local Unit = ____unit.Unit
|
|
6
|
+
local ____unit = require("engine.standard.fields.unit")
|
|
7
|
+
local FLY_HEIGHT_UNIT_FIELD = ____unit.FLY_HEIGHT_UNIT_FIELD
|
|
8
|
+
__TS__ObjectDefineProperty(
|
|
9
|
+
Unit.prototype,
|
|
10
|
+
"flyHeight",
|
|
11
|
+
{
|
|
12
|
+
get = function(self)
|
|
13
|
+
return FLY_HEIGHT_UNIT_FIELD:getValue(self)
|
|
14
|
+
end,
|
|
15
|
+
set = function(self, value)
|
|
16
|
+
FLY_HEIGHT_UNIT_FIELD:setValue(self, value)
|
|
17
|
+
end
|
|
18
|
+
}
|
|
19
|
+
)
|
|
20
|
+
return ____exports
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
local ____unit = require("engine.internal.unit")
|
|
3
|
+
local Unit = ____unit.Unit
|
|
4
|
+
local ____unit_2Dmissile_2Dlaunch = require("engine.internal.unit-missile-launch")
|
|
5
|
+
local resetAutoAttackTimer = ____unit_2Dmissile_2Dlaunch.resetAutoAttackTimer
|
|
6
|
+
local unitDisableAbility = BlzUnitDisableAbility
|
|
7
|
+
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
8
|
+
Unit.prototype.interruptAttack = function(self)
|
|
9
|
+
unitInterruptAttack(self.handle)
|
|
10
|
+
resetAutoAttackTimer(self)
|
|
11
|
+
end
|
|
12
|
+
Unit.prototype.interruptMovement = function(self)
|
|
13
|
+
local handle = self.handle
|
|
14
|
+
unitDisableAbility(
|
|
15
|
+
handle,
|
|
16
|
+
fourCC("Amov"),
|
|
17
|
+
true,
|
|
18
|
+
false
|
|
19
|
+
)
|
|
20
|
+
unitDisableAbility(
|
|
21
|
+
handle,
|
|
22
|
+
fourCC("Amov"),
|
|
23
|
+
false,
|
|
24
|
+
false
|
|
25
|
+
)
|
|
26
|
+
resetAutoAttackTimer(self)
|
|
27
|
+
end
|
|
28
|
+
return ____exports
|
|
@@ -1,46 +1,31 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__New = ____lualib.__TS__New
|
|
3
3
|
local ____exports = {}
|
|
4
|
-
local ____player = require("core.types.player")
|
|
5
|
-
local Player = ____player.Player
|
|
6
|
-
local ____math = require("math")
|
|
7
|
-
local MAXIMUM_INTEGER = ____math.MAXIMUM_INTEGER
|
|
8
|
-
local MINIMUM_INTEGER = ____math.MINIMUM_INTEGER
|
|
9
4
|
local ____local_2Dclient = require("engine.local-client")
|
|
10
5
|
local LocalClient = ____local_2Dclient.LocalClient
|
|
11
6
|
local ____unit = require("engine.internal.unit")
|
|
12
7
|
local Unit = ____unit.Unit
|
|
13
8
|
local ____event = require("event")
|
|
14
9
|
local Event = ____event.Event
|
|
10
|
+
local ____synchronization = require("engine.synchronization")
|
|
11
|
+
local ObjectBus = ____synchronization.ObjectBus
|
|
15
12
|
local mainSelectedUnitChangeEvent = __TS__New(Event)
|
|
16
13
|
rawset(Unit, "mainSelectedUnitChangeEvent", mainSelectedUnitChangeEvent)
|
|
17
14
|
local mainSelectedUnitByPlayer = {}
|
|
18
|
-
local
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"",
|
|
23
|
-
0
|
|
15
|
+
local unitBus = __TS__New(
|
|
16
|
+
ObjectBus,
|
|
17
|
+
function(unit) return unit.syncId end,
|
|
18
|
+
function(syncId) return Unit:getBySyncId(syncId) end
|
|
24
19
|
)
|
|
25
|
-
BlzFrameSetMinMaxValue(syncSlider, MINIMUM_INTEGER, MAXIMUM_INTEGER)
|
|
26
20
|
LocalClient.mainSelectedUnitChangeEvent:addListener(function()
|
|
27
|
-
|
|
28
|
-
local syncId = ____opt_0 and ____opt_0.syncId
|
|
29
|
-
BlzFrameSetValue(syncSlider, syncId or 0)
|
|
21
|
+
unitBus:send(LocalClient.mainSelectedUnit)
|
|
30
22
|
end)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
function()
|
|
36
|
-
local player = Player:of(GetTriggerPlayer())
|
|
37
|
-
local mainSelectedUnit = Unit:getBySyncId(BlzGetTriggerFrameValue())
|
|
38
|
-
if mainSelectedUnit ~= mainSelectedUnitByPlayer[player] then
|
|
39
|
-
mainSelectedUnitByPlayer[player] = mainSelectedUnit
|
|
40
|
-
Event.invoke(mainSelectedUnitChangeEvent, player)
|
|
41
|
-
end
|
|
23
|
+
unitBus.event:addListener(function(player, unit)
|
|
24
|
+
if unit ~= mainSelectedUnitByPlayer[player] then
|
|
25
|
+
mainSelectedUnitByPlayer[player] = unit
|
|
26
|
+
Event.invoke(mainSelectedUnitChangeEvent, player)
|
|
42
27
|
end
|
|
43
|
-
)
|
|
28
|
+
end)
|
|
44
29
|
rawset(
|
|
45
30
|
Unit,
|
|
46
31
|
"getMainSelectedOf",
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { Widget } from "../../../core/types/widget";
|
|
3
|
+
export declare const enum OrderType {
|
|
4
|
+
IMMEDIATE = 0,
|
|
5
|
+
POINT = 1,
|
|
6
|
+
TARGET = 2
|
|
7
|
+
}
|
|
8
|
+
declare module "../unit" {
|
|
9
|
+
interface Unit {
|
|
10
|
+
readonly currentOrderType: OrderType;
|
|
11
|
+
readonly currentOrderId: number;
|
|
12
|
+
readonly currentOrderStartTime: number;
|
|
13
|
+
readonly currentOrderStartX: number;
|
|
14
|
+
readonly currentOrderStartY: number;
|
|
15
|
+
readonly currentOrderTargetX: number;
|
|
16
|
+
readonly currentOrderTargetY: number;
|
|
17
|
+
readonly currentOrderTarget?: Widget;
|
|
18
|
+
issueOrder(...order: [orderType: OrderType.IMMEDIATE, orderId: number] | [orderType: OrderType.POINT, orderId: number, x: number, y: number] | [orderType: OrderType.TARGET, orderId: number, target: Widget]): boolean;
|
|
19
|
+
}
|
|
20
|
+
}
|