warscript 0.0.1-dev.f5421e8 → 0.0.1-dev.f9166a3
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 +5 -0
- package/attributes.lua +8 -1
- package/core/types/order.d.ts +1 -0
- package/core/types/order.lua +11 -1
- package/core/types/sound.lua +5 -0
- package/decl/native.d.ts +840 -786
- package/engine/behaviour/ability/damage.d.ts +6 -3
- package/engine/behaviour/ability/damage.lua +24 -36
- package/engine/behaviour/ability/emulate-impact.lua +16 -2
- package/engine/behaviour/ability.lua +1 -1
- package/engine/behaviour/unit.d.ts +15 -0
- package/engine/behaviour/unit.lua +114 -4
- package/engine/internal/ability.d.ts +4 -0
- package/engine/internal/ability.lua +17 -0
- package/engine/internal/item/ability.lua +12 -10
- package/engine/internal/item.d.ts +5 -2
- package/engine/internal/item.lua +75 -3
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/unit/ability.d.ts +5 -0
- package/engine/internal/unit/ability.lua +14 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- 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 +1 -1
- package/engine/internal/unit.d.ts +20 -3
- package/engine/internal/unit.lua +163 -37
- 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/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -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/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type.lua +7 -0
- package/engine/object-data/entry/buff-type/applicable.lua +5 -0
- package/engine/object-data/entry/buff-type.d.ts +5 -11
- package/engine/object-data/entry/buff-type.lua +11 -27
- package/engine/object-data/entry/unit-type.d.ts +2 -2
- package/engine/object-data/entry/unit-type.lua +94 -84
- package/engine/object-field/ability.d.ts +1 -1
- package/engine/object-field/unit.d.ts +46 -3
- package/engine/object-field/unit.lua +173 -7
- package/engine/object-field.d.ts +12 -3
- package/engine/object-field.lua +164 -78
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/objutil/buff.lua +1 -2
- package/package.json +2 -2
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +3 -0
- package/utility/functions.d.ts +1 -0
- package/utility/functions.lua +1 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +3 -0
- package/utility/lua-maps.d.ts +3 -0
- package/utility/lua-maps.lua +16 -0
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +3 -0
package/engine/internal/unit.lua
CHANGED
|
@@ -53,13 +53,17 @@ local ____math = require("math")
|
|
|
53
53
|
local min = ____math.min
|
|
54
54
|
local ____ignore_2Devents_2Ditems = require("engine.internal.unit.ignore-events-items")
|
|
55
55
|
local ignoreEventsItems = ____ignore_2Devents_2Ditems.ignoreEventsItems
|
|
56
|
+
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
57
|
+
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
58
|
+
local nativeToAttackType = ____attack_2Dtype.nativeToAttackType
|
|
59
|
+
local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
|
|
60
|
+
local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
|
|
61
|
+
local ____attributes = require("attributes")
|
|
62
|
+
local isAttribute = ____attributes.isAttribute
|
|
56
63
|
local match = string.match
|
|
57
64
|
local ____tostring = _G.tostring
|
|
58
65
|
local setUnitAnimation = SetUnitAnimation
|
|
59
|
-
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
60
66
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
61
|
-
local resetUnitAnimation = ResetUnitAnimation
|
|
62
|
-
local queueUnitAnimation = QueueUnitAnimation
|
|
63
67
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
64
68
|
local getUnitRealField = BlzGetUnitRealField
|
|
65
69
|
local getHeroStr = GetHeroStr
|
|
@@ -81,7 +85,6 @@ local getHandleId = GetHandleId
|
|
|
81
85
|
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
82
86
|
local createUnit = CreateUnit
|
|
83
87
|
local killUnit = KillUnit
|
|
84
|
-
local setUnitExploded = SetUnitExploded
|
|
85
88
|
local removeUnit = RemoveUnit
|
|
86
89
|
local getUnitTypeId = GetUnitTypeId
|
|
87
90
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -97,8 +100,6 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
97
100
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
98
101
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
99
102
|
local isUnitInRange = IsUnitInRange
|
|
100
|
-
local setResourceAmount = SetResourceAmount
|
|
101
|
-
local getResourceAmount = GetResourceAmount
|
|
102
103
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
103
104
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
104
105
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
@@ -129,8 +130,6 @@ local isUnitType = IsUnitType
|
|
|
129
130
|
local isUnitAlly = IsUnitAlly
|
|
130
131
|
local isUnitEnemy = IsUnitEnemy
|
|
131
132
|
local getOwningPlayer = GetOwningPlayer
|
|
132
|
-
local setUnitColor = SetUnitColor
|
|
133
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
134
133
|
____exports.UnitClassification = {}
|
|
135
134
|
local UnitClassification = ____exports.UnitClassification
|
|
136
135
|
do
|
|
@@ -140,6 +139,7 @@ do
|
|
|
140
139
|
UnitClassification.GROUND = UNIT_TYPE_GROUND
|
|
141
140
|
UnitClassification.SUMMONED = UNIT_TYPE_SUMMONED
|
|
142
141
|
UnitClassification.MECHANICAL = UNIT_TYPE_MECHANICAL
|
|
142
|
+
UnitClassification.WORKER = UNIT_TYPE_PEON
|
|
143
143
|
UnitClassification.ANCIENT = UNIT_TYPE_ANCIENT
|
|
144
144
|
UnitClassification.SUICIDAL = UNIT_TYPE_SAPPER
|
|
145
145
|
UnitClassification.TAUREN = UNIT_TYPE_TAUREN
|
|
@@ -347,6 +347,9 @@ local function dispatchAbility(event)
|
|
|
347
347
|
}
|
|
348
348
|
)
|
|
349
349
|
end
|
|
350
|
+
local function damagingEventPreventRetaliation(self)
|
|
351
|
+
self[0] = true
|
|
352
|
+
end
|
|
350
353
|
local function damageEventPreventDeath(self, callback, ...)
|
|
351
354
|
if self[0] ~= nil then
|
|
352
355
|
return
|
|
@@ -358,7 +361,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
358
361
|
rawset(self, 1 + i, (select(i, ...)))
|
|
359
362
|
end
|
|
360
363
|
end
|
|
361
|
-
local damageSetters = {
|
|
364
|
+
local damageSetters = {
|
|
365
|
+
amount = BlzSetEventDamage,
|
|
366
|
+
attackType = function(attackType)
|
|
367
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
368
|
+
end,
|
|
369
|
+
damageType = BlzSetEventDamageType,
|
|
370
|
+
weaponType = BlzSetEventWeaponType
|
|
371
|
+
}
|
|
362
372
|
local jlimitopByOperator = {
|
|
363
373
|
[0] = LESS_THAN_OR_EQUAL,
|
|
364
374
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -436,6 +446,19 @@ __TS__SetDescriptor(
|
|
|
436
446
|
},
|
|
437
447
|
true
|
|
438
448
|
)
|
|
449
|
+
__TS__SetDescriptor(
|
|
450
|
+
UnitWeapon.prototype,
|
|
451
|
+
"allowedTargetCombatClassifications",
|
|
452
|
+
{
|
|
453
|
+
get = function(self)
|
|
454
|
+
return BlzGetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index)
|
|
455
|
+
end,
|
|
456
|
+
set = function(self, allowedTargetCombatClassifications)
|
|
457
|
+
BlzSetUnitWeaponIntegerField(self.unit.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, self.index, allowedTargetCombatClassifications)
|
|
458
|
+
end
|
|
459
|
+
},
|
|
460
|
+
true
|
|
461
|
+
)
|
|
439
462
|
__TS__SetDescriptor(
|
|
440
463
|
UnitWeapon.prototype,
|
|
441
464
|
"damageBase",
|
|
@@ -640,7 +663,8 @@ local function delayHealthChecksCallback(unit)
|
|
|
640
663
|
end
|
|
641
664
|
end
|
|
642
665
|
local nextSyncId = 1
|
|
643
|
-
local unitBySyncId = setmetatable({}, {__mode = "
|
|
666
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
667
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
644
668
|
____exports.Unit = __TS__Class()
|
|
645
669
|
local Unit = ____exports.Unit
|
|
646
670
|
Unit.name = "Unit"
|
|
@@ -793,16 +817,25 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
793
817
|
if type(animation) == "number" then
|
|
794
818
|
setUnitAnimationByIndex(self.handle, animation)
|
|
795
819
|
elseif rarity then
|
|
796
|
-
|
|
820
|
+
SetUnitAnimationWithRarity(self.handle, animation, rarity)
|
|
797
821
|
else
|
|
798
822
|
setUnitAnimation(self.handle, animation)
|
|
799
823
|
end
|
|
800
824
|
end
|
|
801
825
|
function Unit.prototype.resetAnimation(self)
|
|
802
|
-
|
|
826
|
+
ResetUnitAnimation(self.handle)
|
|
803
827
|
end
|
|
804
828
|
function Unit.prototype.queueAnimation(self, animation)
|
|
805
|
-
|
|
829
|
+
QueueUnitAnimation(self.handle, animation)
|
|
830
|
+
end
|
|
831
|
+
function Unit.prototype.chooseWeapon(self, target)
|
|
832
|
+
if target:isAllowedTarget(self, self.firstWeapon.allowedTargetCombatClassifications) then
|
|
833
|
+
return self.firstWeapon
|
|
834
|
+
end
|
|
835
|
+
if target:isAllowedTarget(target, self.secondWeapon.allowedTargetCombatClassifications) then
|
|
836
|
+
return self.secondWeapon
|
|
837
|
+
end
|
|
838
|
+
return nil
|
|
806
839
|
end
|
|
807
840
|
function Unit.prototype.delayHealthChecks(self)
|
|
808
841
|
self[103] = (self[103] or 0) + 1
|
|
@@ -815,7 +848,7 @@ function Unit.prototype.isSelected(self, player)
|
|
|
815
848
|
return IsUnitSelected(self.handle, player.handle)
|
|
816
849
|
end
|
|
817
850
|
function Unit.prototype.explode(self)
|
|
818
|
-
|
|
851
|
+
SetUnitExploded(self.handle, true)
|
|
819
852
|
killUnit(self.handle)
|
|
820
853
|
end
|
|
821
854
|
function Unit.prototype.kill(self)
|
|
@@ -1292,6 +1325,19 @@ __TS__SetDescriptor(
|
|
|
1292
1325
|
},
|
|
1293
1326
|
true
|
|
1294
1327
|
)
|
|
1328
|
+
__TS__SetDescriptor(
|
|
1329
|
+
Unit.prototype,
|
|
1330
|
+
"primaryAttribute",
|
|
1331
|
+
{
|
|
1332
|
+
get = function(self)
|
|
1333
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1334
|
+
end,
|
|
1335
|
+
set = function(self, primaryAttribute)
|
|
1336
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1337
|
+
end
|
|
1338
|
+
},
|
|
1339
|
+
true
|
|
1340
|
+
)
|
|
1295
1341
|
__TS__SetDescriptor(
|
|
1296
1342
|
Unit.prototype,
|
|
1297
1343
|
"strengthBase",
|
|
@@ -1416,7 +1462,7 @@ __TS__SetDescriptor(
|
|
|
1416
1462
|
return not self[106]
|
|
1417
1463
|
end,
|
|
1418
1464
|
set = function(self, isTeamGlowVisible)
|
|
1419
|
-
|
|
1465
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1420
1466
|
local ____temp_6
|
|
1421
1467
|
if not isTeamGlowVisible then
|
|
1422
1468
|
____temp_6 = true
|
|
@@ -1432,9 +1478,9 @@ __TS__SetDescriptor(
|
|
|
1432
1478
|
Unit.prototype,
|
|
1433
1479
|
"color",
|
|
1434
1480
|
{set = function(self, color)
|
|
1435
|
-
|
|
1481
|
+
SetUnitColor(self.handle, color.handle)
|
|
1436
1482
|
if self[106] then
|
|
1437
|
-
|
|
1483
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1438
1484
|
end
|
|
1439
1485
|
end},
|
|
1440
1486
|
true
|
|
@@ -1702,10 +1748,10 @@ __TS__SetDescriptor(
|
|
|
1702
1748
|
"gold",
|
|
1703
1749
|
{
|
|
1704
1750
|
get = function(self)
|
|
1705
|
-
return
|
|
1751
|
+
return GetResourceAmount(self.handle)
|
|
1706
1752
|
end,
|
|
1707
1753
|
set = function(self, gold)
|
|
1708
|
-
|
|
1754
|
+
SetResourceAmount(self.handle, gold)
|
|
1709
1755
|
end
|
|
1710
1756
|
},
|
|
1711
1757
|
true
|
|
@@ -1833,6 +1879,19 @@ __TS__SetDescriptor(
|
|
|
1833
1879
|
end},
|
|
1834
1880
|
true
|
|
1835
1881
|
)
|
|
1882
|
+
__TS__SetDescriptor(
|
|
1883
|
+
Unit.prototype,
|
|
1884
|
+
"movementType",
|
|
1885
|
+
{
|
|
1886
|
+
get = function(self)
|
|
1887
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1888
|
+
end,
|
|
1889
|
+
set = function(self, movementType)
|
|
1890
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1891
|
+
end
|
|
1892
|
+
},
|
|
1893
|
+
true
|
|
1894
|
+
)
|
|
1836
1895
|
__TS__SetDescriptor(
|
|
1837
1896
|
Unit.prototype,
|
|
1838
1897
|
"pathing",
|
|
@@ -2014,6 +2073,14 @@ __TS__SetDescriptor(
|
|
|
2014
2073
|
end},
|
|
2015
2074
|
true
|
|
2016
2075
|
)
|
|
2076
|
+
__TS__SetDescriptor(
|
|
2077
|
+
Unit.prototype,
|
|
2078
|
+
"targetAcquiredEvent",
|
|
2079
|
+
{get = function(self)
|
|
2080
|
+
return self:getEvent(EVENT_UNIT_ACQUIRED_TARGET)
|
|
2081
|
+
end},
|
|
2082
|
+
true
|
|
2083
|
+
)
|
|
2017
2084
|
__TS__SetDescriptor(
|
|
2018
2085
|
Unit.prototype,
|
|
2019
2086
|
"onSelect",
|
|
@@ -2375,13 +2442,19 @@ Unit.onDamaging = (function()
|
|
|
2375
2442
|
if source and source.typeId == dummyUnitId then
|
|
2376
2443
|
source = nil
|
|
2377
2444
|
end
|
|
2378
|
-
local target = BlzGetEventDamageTarget()
|
|
2445
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2446
|
+
local metadata = damageMetadataByTarget[target]
|
|
2447
|
+
damageMetadataByTarget[target] = nil
|
|
2379
2448
|
local data = {
|
|
2380
2449
|
amount = GetEventDamage(),
|
|
2381
|
-
attackType = BlzGetEventAttackType(),
|
|
2450
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2382
2451
|
damageType = BlzGetEventDamageType(),
|
|
2383
2452
|
weaponType = BlzGetEventWeaponType(),
|
|
2384
|
-
|
|
2453
|
+
metadata = metadata,
|
|
2454
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2455
|
+
originalAmount = GetEventDamage(),
|
|
2456
|
+
originalMetadata = metadata,
|
|
2457
|
+
preventRetaliation = damagingEventPreventRetaliation
|
|
2385
2458
|
}
|
|
2386
2459
|
if data.isAttack and source then
|
|
2387
2460
|
local weapon = BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 1) and (BlzGetUnitWeaponBooleanField(source.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, 0) and -1 or 1) or 0
|
|
@@ -2395,18 +2468,36 @@ Unit.onDamaging = (function()
|
|
|
2395
2468
|
invoke(
|
|
2396
2469
|
event,
|
|
2397
2470
|
source,
|
|
2398
|
-
|
|
2471
|
+
target,
|
|
2399
2472
|
setmetatable(
|
|
2400
2473
|
{},
|
|
2401
2474
|
{
|
|
2402
2475
|
__index = data,
|
|
2403
2476
|
__newindex = function(self, key, value)
|
|
2404
|
-
damageSetters[key]
|
|
2477
|
+
local damageSetter = damageSetters[key]
|
|
2478
|
+
if damageSetter ~= nil then
|
|
2479
|
+
damageSetter(value)
|
|
2480
|
+
end
|
|
2405
2481
|
data[key] = value
|
|
2406
2482
|
end
|
|
2407
2483
|
}
|
|
2408
2484
|
)
|
|
2409
2485
|
)
|
|
2486
|
+
if data[0] and source then
|
|
2487
|
+
local sourceOwner = source.owner.handle
|
|
2488
|
+
data[1] = sourceOwner
|
|
2489
|
+
local targetOwner = target.owner.handle
|
|
2490
|
+
data[2] = targetOwner
|
|
2491
|
+
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2492
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2493
|
+
data[3] = true
|
|
2494
|
+
end
|
|
2495
|
+
if not GetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE) then
|
|
2496
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, true)
|
|
2497
|
+
data[4] = true
|
|
2498
|
+
end
|
|
2499
|
+
end
|
|
2500
|
+
damagingEventByTarget[target] = data
|
|
2410
2501
|
return
|
|
2411
2502
|
end
|
|
2412
2503
|
BlzSetEventDamage(0)
|
|
@@ -2414,7 +2505,7 @@ Unit.onDamaging = (function()
|
|
|
2414
2505
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2415
2506
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2416
2507
|
local sourceOwner = source.owner.handle
|
|
2417
|
-
local targetOwner =
|
|
2508
|
+
local targetOwner = target.owner.handle
|
|
2418
2509
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2419
2510
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2420
2511
|
Timer:run(function()
|
|
@@ -2430,23 +2521,19 @@ Unit.onDamaging = (function()
|
|
|
2430
2521
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2431
2522
|
local condition = ____value[1]
|
|
2432
2523
|
local action = ____value[2]
|
|
2433
|
-
if condition(
|
|
2434
|
-
source,
|
|
2435
|
-
____exports.Unit:of(target),
|
|
2436
|
-
data
|
|
2437
|
-
) then
|
|
2524
|
+
if condition(source, target, data) then
|
|
2438
2525
|
action(
|
|
2439
2526
|
source,
|
|
2440
|
-
|
|
2527
|
+
target,
|
|
2441
2528
|
setmetatable(
|
|
2442
2529
|
{fire = function()
|
|
2443
2530
|
UnitDamageTarget(
|
|
2444
2531
|
source.handle,
|
|
2445
|
-
target,
|
|
2532
|
+
target.handle,
|
|
2446
2533
|
data.amount,
|
|
2447
2534
|
true,
|
|
2448
2535
|
true,
|
|
2449
|
-
data.attackType,
|
|
2536
|
+
attackTypeToNative(data.attackType),
|
|
2450
2537
|
data.damageType,
|
|
2451
2538
|
data.weaponType
|
|
2452
2539
|
)
|
|
@@ -2473,26 +2560,50 @@ Unit.onDamage = __TS__New(
|
|
|
2473
2560
|
if source and source.typeId == dummyUnitId then
|
|
2474
2561
|
source = nil
|
|
2475
2562
|
end
|
|
2563
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2564
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2565
|
+
damagingEventByTarget[target] = nil
|
|
2476
2566
|
local data = {
|
|
2477
2567
|
amount = GetEventDamage(),
|
|
2478
|
-
attackType = BlzGetEventAttackType(),
|
|
2568
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2479
2569
|
damageType = BlzGetEventDamageType(),
|
|
2480
2570
|
weaponType = BlzGetEventWeaponType(),
|
|
2571
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2481
2572
|
isAttack = BlzGetEventIsAttack(),
|
|
2482
|
-
originalAmount = GetEventDamage(),
|
|
2573
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2574
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2483
2575
|
preventDeath = damageEventPreventDeath
|
|
2484
2576
|
}
|
|
2577
|
+
if damagingEvent then
|
|
2578
|
+
for key, value in pairs(damagingEvent) do
|
|
2579
|
+
if isAttribute(key) then
|
|
2580
|
+
data[key] = value
|
|
2581
|
+
end
|
|
2582
|
+
end
|
|
2583
|
+
local sourceOwner = damagingEvent[1]
|
|
2584
|
+
if sourceOwner then
|
|
2585
|
+
local targetOwner = damagingEvent[2]
|
|
2586
|
+
if damagingEvent[3] then
|
|
2587
|
+
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, false)
|
|
2588
|
+
end
|
|
2589
|
+
if damagingEvent[4] then
|
|
2590
|
+
SetPlayerAlliance(targetOwner, sourceOwner, ALLIANCE_PASSIVE, false)
|
|
2591
|
+
end
|
|
2592
|
+
end
|
|
2593
|
+
end
|
|
2485
2594
|
local evData = setmetatable(
|
|
2486
2595
|
{},
|
|
2487
2596
|
{
|
|
2488
2597
|
__index = data,
|
|
2489
2598
|
__newindex = function(self, key, value)
|
|
2490
|
-
damageSetters[key]
|
|
2599
|
+
local damageSetter = damageSetters[key]
|
|
2600
|
+
if damageSetter ~= nil then
|
|
2601
|
+
damageSetter(value)
|
|
2602
|
+
end
|
|
2491
2603
|
data[key] = value
|
|
2492
2604
|
end
|
|
2493
2605
|
}
|
|
2494
2606
|
)
|
|
2495
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2496
2607
|
invoke(event, source, target, evData)
|
|
2497
2608
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2498
2609
|
local bonusHealth = math.ceil(evData.amount)
|
|
@@ -2571,6 +2682,21 @@ Unit.itemStackedEvent = __TS__New(
|
|
|
2571
2682
|
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2572
2683
|
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2573
2684
|
)
|
|
2685
|
+
__TS__ObjectDefineProperty(
|
|
2686
|
+
Unit,
|
|
2687
|
+
"itemChargesChangedEvent",
|
|
2688
|
+
{get = function(self)
|
|
2689
|
+
local event = __TS__New(Event)
|
|
2690
|
+
Item.chargesChangedEvent:addListener(function(item)
|
|
2691
|
+
local unit = item.owner
|
|
2692
|
+
if unit ~= nil then
|
|
2693
|
+
invoke(event, unit, item)
|
|
2694
|
+
end
|
|
2695
|
+
end)
|
|
2696
|
+
rawset(self, "itemChargesChangedEvent", event)
|
|
2697
|
+
return event
|
|
2698
|
+
end}
|
|
2699
|
+
)
|
|
2574
2700
|
__TS__ObjectDefineProperty(
|
|
2575
2701
|
Unit,
|
|
2576
2702
|
"itemUseOrderEvent",
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
export declare const enum AttackType {
|
|
3
|
-
|
|
4
|
-
NORMAL =
|
|
5
|
-
PIERCE =
|
|
6
|
-
SIEGE =
|
|
7
|
-
|
|
8
|
-
CHAOS =
|
|
9
|
-
|
|
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
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
export declare const enum MovementType {
|
|
3
|
-
NONE =
|
|
4
|
-
|
|
5
|
-
FLY =
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
AMPHIBIOUS =
|
|
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,9 @@
|
|
|
1
|
+
local ____exports = {}
|
|
2
|
+
____exports.UnitAttribute = 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
|
|
@@ -7,4 +7,6 @@ export declare class BerserkAbilityType extends AbilityType {
|
|
|
7
7
|
set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
8
8
|
get attackSpeedIncreaseFactor(): number[];
|
|
9
9
|
set attackSpeedIncreaseFactor(attackSpeedIncreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
10
|
+
get receivedDamageIncreaseFactor(): number[];
|
|
11
|
+
set receivedDamageIncreaseFactor(receivedDamageIncreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
10
12
|
}
|
|
@@ -36,4 +36,17 @@ __TS__SetDescriptor(
|
|
|
36
36
|
},
|
|
37
37
|
true
|
|
38
38
|
)
|
|
39
|
+
__TS__SetDescriptor(
|
|
40
|
+
BerserkAbilityType.prototype,
|
|
41
|
+
"receivedDamageIncreaseFactor",
|
|
42
|
+
{
|
|
43
|
+
get = function(self)
|
|
44
|
+
return self:getNumberLevelField("bsk3")
|
|
45
|
+
end,
|
|
46
|
+
set = function(self, receivedDamageIncreaseFactor)
|
|
47
|
+
self:setNumberLevelField("bsk3", receivedDamageIncreaseFactor)
|
|
48
|
+
end
|
|
49
|
+
},
|
|
50
|
+
true
|
|
51
|
+
)
|
|
39
52
|
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
|
|
@@ -9,4 +9,14 @@ export declare class SlowPoisonAbilityType extends AbilityType {
|
|
|
9
9
|
set movementSpeedDecreaseFactor(movementSpeedDecreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
10
10
|
get attackSpeedDecreaseFactor(): number[];
|
|
11
11
|
set attackSpeedDecreaseFactor(attackSpeedDecreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
12
|
+
get isDamageStacking(): boolean[];
|
|
13
|
+
set isDamageStacking(isDamageStacking: ObjectDataEntryLevelFieldValueSupplier<boolean>);
|
|
14
|
+
get isMovementSpeedFactorStacking(): boolean[];
|
|
15
|
+
set isMovementSpeedFactorStacking(isMovementSpeedFactorStacking: ObjectDataEntryLevelFieldValueSupplier<boolean>);
|
|
16
|
+
get isAttackSpeedFactorStacking(): boolean[];
|
|
17
|
+
set isAttackSpeedFactorStacking(isAttackSpeedFactorStacking: ObjectDataEntryLevelFieldValueSupplier<boolean>);
|
|
18
|
+
get isAbleToKill(): boolean[];
|
|
19
|
+
set isAbleToKill(isAbleToKill: ObjectDataEntryLevelFieldValueSupplier<boolean>);
|
|
20
|
+
private setOption;
|
|
21
|
+
private getOption;
|
|
12
22
|
}
|
|
@@ -9,6 +9,12 @@ ____exports.SlowPoisonAbilityType = __TS__Class()
|
|
|
9
9
|
local SlowPoisonAbilityType = ____exports.SlowPoisonAbilityType
|
|
10
10
|
SlowPoisonAbilityType.name = "SlowPoisonAbilityType"
|
|
11
11
|
__TS__ClassExtends(SlowPoisonAbilityType, AbilityType)
|
|
12
|
+
function SlowPoisonAbilityType.prototype.setOption(self, option, supplier)
|
|
13
|
+
self:setFlagLevelFieldValue("Spo4", option, supplier)
|
|
14
|
+
end
|
|
15
|
+
function SlowPoisonAbilityType.prototype.getOption(self, option)
|
|
16
|
+
return self:getFlagLevelFieldValue("Spo4", option)
|
|
17
|
+
end
|
|
12
18
|
SlowPoisonAbilityType.BASE_ID = fourCC("Aspo")
|
|
13
19
|
__TS__SetDescriptor(
|
|
14
20
|
SlowPoisonAbilityType.prototype,
|
|
@@ -49,4 +55,56 @@ __TS__SetDescriptor(
|
|
|
49
55
|
},
|
|
50
56
|
true
|
|
51
57
|
)
|
|
58
|
+
__TS__SetDescriptor(
|
|
59
|
+
SlowPoisonAbilityType.prototype,
|
|
60
|
+
"isDamageStacking",
|
|
61
|
+
{
|
|
62
|
+
get = function(self)
|
|
63
|
+
return self:getOption(1)
|
|
64
|
+
end,
|
|
65
|
+
set = function(self, isDamageStacking)
|
|
66
|
+
self:setOption(1, isDamageStacking)
|
|
67
|
+
end
|
|
68
|
+
},
|
|
69
|
+
true
|
|
70
|
+
)
|
|
71
|
+
__TS__SetDescriptor(
|
|
72
|
+
SlowPoisonAbilityType.prototype,
|
|
73
|
+
"isMovementSpeedFactorStacking",
|
|
74
|
+
{
|
|
75
|
+
get = function(self)
|
|
76
|
+
return self:getOption(2)
|
|
77
|
+
end,
|
|
78
|
+
set = function(self, isMovementSpeedFactorStacking)
|
|
79
|
+
self:setOption(2, isMovementSpeedFactorStacking)
|
|
80
|
+
end
|
|
81
|
+
},
|
|
82
|
+
true
|
|
83
|
+
)
|
|
84
|
+
__TS__SetDescriptor(
|
|
85
|
+
SlowPoisonAbilityType.prototype,
|
|
86
|
+
"isAttackSpeedFactorStacking",
|
|
87
|
+
{
|
|
88
|
+
get = function(self)
|
|
89
|
+
return self:getOption(4)
|
|
90
|
+
end,
|
|
91
|
+
set = function(self, isAttackSpeedFactorStacking)
|
|
92
|
+
self:setOption(4, isAttackSpeedFactorStacking)
|
|
93
|
+
end
|
|
94
|
+
},
|
|
95
|
+
true
|
|
96
|
+
)
|
|
97
|
+
__TS__SetDescriptor(
|
|
98
|
+
SlowPoisonAbilityType.prototype,
|
|
99
|
+
"isAbleToKill",
|
|
100
|
+
{
|
|
101
|
+
get = function(self)
|
|
102
|
+
return self:getOption(8)
|
|
103
|
+
end,
|
|
104
|
+
set = function(self, isAbleToKill)
|
|
105
|
+
self:setOption(8, isAbleToKill)
|
|
106
|
+
end
|
|
107
|
+
},
|
|
108
|
+
true
|
|
109
|
+
)
|
|
52
110
|
return ____exports
|