warscript 0.0.1-dev.db137e7 → 0.0.1-dev.dc37dce
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 +1 -0
- package/attributes.lua +9 -0
- package/binarywriter.lua +0 -12
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +57 -14
- package/core/types/sound.lua +1 -1
- package/core/types/tileCell.d.ts +2 -1
- package/core/types/tileCell.lua +5 -0
- package/core/types/timer.d.ts +3 -2
- package/core/types/timer.lua +8 -2
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +10 -2
- package/engine/behavior.lua +157 -76
- package/engine/behaviour/ability/apply-buff.lua +4 -4
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability.d.ts +11 -6
- package/engine/behaviour/ability.lua +31 -1
- package/engine/behaviour/unit/stun-immunity.d.ts +7 -5
- package/engine/behaviour/unit/stun-immunity.lua +6 -5
- package/engine/behaviour/unit.d.ts +9 -3
- package/engine/behaviour/unit.lua +106 -24
- package/engine/buff.d.ts +64 -18
- package/engine/buff.lua +354 -151
- package/engine/internal/item.d.ts +12 -12
- package/engine/internal/item.lua +41 -26
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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 +14 -14
- package/engine/internal/unit/ability.lua +72 -45
- 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/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/item.lua +1 -1
- package/engine/internal/unit/main-selected.lua +12 -27
- 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+bonus.lua +3 -3
- package/engine/internal/unit-missile-launch.lua +51 -20
- package/engine/internal/unit.d.ts +15 -19
- package/engine/internal/unit.lua +160 -183
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -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/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/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 +88 -5
- 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 +4 -0
- package/engine/object-data/entry/unit-type.lua +76 -32
- package/engine/object-field/unit.d.ts +20 -5
- package/engine/object-field/unit.lua +61 -0
- package/engine/object-field.d.ts +9 -1
- package/engine/object-field.lua +265 -122
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +8 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/unit.d.ts +11 -3
- package/engine/standard/fields/unit.lua +15 -2
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.lua +3 -2
- package/engine/unit.d.ts +5 -0
- package/engine/unit.lua +5 -0
- package/lualib_bundle.lua +118 -47
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +10 -8
- package/objutil/object.lua +1 -1
- package/operation.lua +23 -17
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/utility/callback-array.d.ts +5 -1
- package/utility/callback-array.lua +16 -1
- package/utility/linked-map.d.ts +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +3 -1
- package/utility/linked-set.lua +40 -1
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.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
package/engine/internal/unit.lua
CHANGED
|
@@ -62,6 +62,10 @@ local ____attributes = require("attributes")
|
|
|
62
62
|
local isAttribute = ____attributes.isAttribute
|
|
63
63
|
local ____ability = require("engine.internal.item.ability")
|
|
64
64
|
local doUnitAbilityAction = ____ability.doUnitAbilityAction
|
|
65
|
+
local ____synchronization = require("engine.synchronization")
|
|
66
|
+
local synchronizer = ____synchronization.synchronizer
|
|
67
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
68
|
+
local LinkedMap = ____linked_2Dmap.LinkedMap
|
|
65
69
|
local match = string.match
|
|
66
70
|
local ____tostring = _G.tostring
|
|
67
71
|
local setUnitAnimation = SetUnitAnimation
|
|
@@ -71,16 +75,12 @@ local getUnitRealField = BlzGetUnitRealField
|
|
|
71
75
|
local getHeroStr = GetHeroStr
|
|
72
76
|
local getHeroAgi = GetHeroAgi
|
|
73
77
|
local getHeroInt = GetHeroInt
|
|
74
|
-
local setHeroStr = SetHeroStr
|
|
75
|
-
local setHeroAgi = SetHeroAgi
|
|
76
|
-
local setHeroInt = SetHeroInt
|
|
77
78
|
local getUnitBooleanField = BlzGetUnitBooleanField
|
|
78
79
|
local getUnitStringField = BlzGetUnitStringField
|
|
79
80
|
local setUnitIntegerField = BlzSetUnitIntegerField
|
|
80
81
|
local setUnitRealField = BlzSetUnitRealField
|
|
81
82
|
local setUnitBooleanField = BlzSetUnitBooleanField
|
|
82
83
|
local setUnitStringField = BlzSetUnitStringField
|
|
83
|
-
local setUnitScale = SetUnitScale
|
|
84
84
|
local setUnitPosition = SetUnitPosition
|
|
85
85
|
local setUnitTimeScale = SetUnitTimeScale
|
|
86
86
|
local getHandleId = GetHandleId
|
|
@@ -108,7 +108,6 @@ local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
|
108
108
|
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
109
109
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
110
110
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
111
|
-
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
112
111
|
local isUnitInvisible = IsUnitInvisible
|
|
113
112
|
local isUnitVisible = IsUnitVisible
|
|
114
113
|
local getUnitX = GetUnitX
|
|
@@ -384,15 +383,27 @@ local modifiers = {
|
|
|
384
383
|
end,
|
|
385
384
|
armor = function(unit, value)
|
|
386
385
|
if UnitAddAbility(unit, armorBonusAbilityId) then
|
|
387
|
-
assert(
|
|
386
|
+
assert(
|
|
387
|
+
UnitMakeAbilityPermanent(unit, true, armorBonusAbilityId),
|
|
388
|
+
"armor bonus ability must be made permanent",
|
|
389
|
+
unit
|
|
390
|
+
)
|
|
388
391
|
end
|
|
389
|
-
local ability = assert(
|
|
390
|
-
|
|
391
|
-
ability,
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
392
|
+
local ability = assert(
|
|
393
|
+
BlzGetUnitAbility(unit, armorBonusAbilityId),
|
|
394
|
+
"armor bonus ability must be existing",
|
|
395
|
+
unit
|
|
396
|
+
)
|
|
397
|
+
assert(
|
|
398
|
+
BlzSetAbilityRealLevelField(
|
|
399
|
+
ability,
|
|
400
|
+
armorBonusField,
|
|
401
|
+
0,
|
|
402
|
+
BlzGetAbilityRealLevelField(ability, armorBonusField, 0) + value
|
|
403
|
+
),
|
|
404
|
+
"armor bonus ability field must be set",
|
|
405
|
+
unit
|
|
406
|
+
)
|
|
396
407
|
end
|
|
397
408
|
}
|
|
398
409
|
local getters = {
|
|
@@ -410,6 +421,19 @@ function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
|
410
421
|
self.unit = unit
|
|
411
422
|
self.index = index
|
|
412
423
|
end
|
|
424
|
+
__TS__SetDescriptor(
|
|
425
|
+
UnitWeapon.prototype,
|
|
426
|
+
"isEnabled",
|
|
427
|
+
{
|
|
428
|
+
get = function(self)
|
|
429
|
+
return BlzGetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index)
|
|
430
|
+
end,
|
|
431
|
+
set = function(self, isEnabled)
|
|
432
|
+
BlzSetUnitWeaponBooleanField(self.unit.handle, UNIT_WEAPON_BF_ATTACKS_ENABLED, self.index, isEnabled)
|
|
433
|
+
end
|
|
434
|
+
},
|
|
435
|
+
true
|
|
436
|
+
)
|
|
413
437
|
__TS__SetDescriptor(
|
|
414
438
|
UnitWeapon.prototype,
|
|
415
439
|
"cooldown",
|
|
@@ -633,26 +657,30 @@ local fieldSetters = {
|
|
|
633
657
|
}
|
|
634
658
|
local dummies = {}
|
|
635
659
|
for ____, player in ipairs(Player.all) do
|
|
636
|
-
local dummy = assert(
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
660
|
+
local dummy = assert(
|
|
661
|
+
createUnit(
|
|
662
|
+
player.handle,
|
|
663
|
+
dummyUnitId,
|
|
664
|
+
0,
|
|
665
|
+
0,
|
|
666
|
+
270
|
|
667
|
+
),
|
|
668
|
+
"dummy must be created",
|
|
669
|
+
player
|
|
670
|
+
)
|
|
643
671
|
ShowUnit(dummy, false)
|
|
644
672
|
dummies[player] = dummy
|
|
645
673
|
end
|
|
646
674
|
local function delayHealthChecksCallback(unit)
|
|
647
|
-
local counter = (unit[
|
|
675
|
+
local counter = (unit[104] or 0) - 1
|
|
648
676
|
if counter ~= 0 then
|
|
649
|
-
unit[
|
|
677
|
+
unit[104] = counter
|
|
650
678
|
return
|
|
651
679
|
end
|
|
652
|
-
unit[
|
|
653
|
-
local healthBonus = unit[
|
|
680
|
+
unit[104] = nil
|
|
681
|
+
local healthBonus = unit[105]
|
|
654
682
|
if healthBonus ~= nil then
|
|
655
|
-
unit[
|
|
683
|
+
unit[105] = nil
|
|
656
684
|
local handle = unit.handle
|
|
657
685
|
BlzSetUnitMaxHP(
|
|
658
686
|
handle,
|
|
@@ -682,41 +710,57 @@ function Unit.prototype.____constructor(self, handle)
|
|
|
682
710
|
nextSyncId = ____nextSyncId_1 + 1
|
|
683
711
|
self.syncId = ____nextSyncId_1
|
|
684
712
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
685
|
-
assert(
|
|
686
|
-
|
|
713
|
+
assert(
|
|
714
|
+
unitAddAbility(handle, leaveDetectAbilityId) and UnitMakeAbilityPermanent(handle, true, leaveDetectAbilityId),
|
|
715
|
+
"leave detection ability must be added",
|
|
716
|
+
self
|
|
717
|
+
)
|
|
718
|
+
assert(
|
|
719
|
+
unitAddAbility(handle, morphDetectAbilityId),
|
|
720
|
+
"morph detection ability must be added",
|
|
721
|
+
self
|
|
722
|
+
)
|
|
687
723
|
if unitAddAbility(
|
|
688
724
|
handle,
|
|
689
725
|
fourCC("Amrf")
|
|
690
726
|
) then
|
|
691
|
-
assert(
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
727
|
+
assert(
|
|
728
|
+
unitRemoveAbility(
|
|
729
|
+
handle,
|
|
730
|
+
fourCC("Amrf")
|
|
731
|
+
),
|
|
732
|
+
"fly ability must be removed after addition",
|
|
733
|
+
self
|
|
734
|
+
)
|
|
695
735
|
end
|
|
696
736
|
unitBySyncId[self.syncId] = self
|
|
697
737
|
local ____ = self.abilities
|
|
698
738
|
end
|
|
699
|
-
function Unit.prototype.getEvent(self,
|
|
700
|
-
self.events = self.events or (
|
|
701
|
-
local eventId = GetHandleId(
|
|
702
|
-
|
|
703
|
-
|
|
739
|
+
function Unit.prototype.getEvent(self, jevent, collector)
|
|
740
|
+
self.events = self.events or __TS__New(LinkedMap)
|
|
741
|
+
local eventId = GetHandleId(jevent)
|
|
742
|
+
local event = self.events:get(eventId)
|
|
743
|
+
if event == nil then
|
|
744
|
+
event = __TS__New(
|
|
704
745
|
TriggerEvent,
|
|
705
746
|
function(trigger)
|
|
706
|
-
TriggerRegisterUnitEvent(trigger, self.handle,
|
|
747
|
+
TriggerRegisterUnitEvent(trigger, self.handle, jevent)
|
|
707
748
|
end,
|
|
708
749
|
collector or (function() return {} end)
|
|
709
750
|
)
|
|
751
|
+
self.events:put(eventId, event)
|
|
710
752
|
end
|
|
711
|
-
return
|
|
753
|
+
return event
|
|
754
|
+
end
|
|
755
|
+
function Unit.prototype.saveData(self)
|
|
756
|
+
local handle = self.handle
|
|
757
|
+
self[108] = self[108] or getUnitX(handle)
|
|
758
|
+
self[109] = self[109] or getUnitY(handle)
|
|
759
|
+
self._owner = self._owner or Player:of(getOwningPlayer(handle))
|
|
712
760
|
end
|
|
713
761
|
function Unit.prototype.onDestroy(self)
|
|
714
762
|
local handle = self.handle
|
|
715
|
-
self
|
|
716
|
-
self[108] = getUnitY(handle)
|
|
717
|
-
if not self._owner then
|
|
718
|
-
self._owner = Player:of(getOwningPlayer(handle))
|
|
719
|
-
end
|
|
763
|
+
self:saveData()
|
|
720
764
|
local abilities = self.abilities
|
|
721
765
|
for ____, ability in ipairs(abilities) do
|
|
722
766
|
ability:destroy()
|
|
@@ -752,7 +796,11 @@ function Unit.prototype.addAttackHandler(self, condition, action)
|
|
|
752
796
|
self._attackHandlers = handlers
|
|
753
797
|
if #handlers == 1 then
|
|
754
798
|
local handle = self.handle
|
|
755
|
-
assert(
|
|
799
|
+
assert(
|
|
800
|
+
unitAddAbility(handle, attackHandlerAbilityId) and UnitMakeAbilityPermanent(handle, true, attackHandlerAbilityId),
|
|
801
|
+
"attack handler ability must be added",
|
|
802
|
+
self
|
|
803
|
+
)
|
|
756
804
|
end
|
|
757
805
|
return handler
|
|
758
806
|
end
|
|
@@ -836,16 +884,18 @@ function Unit.prototype.queueAnimation(self, animation)
|
|
|
836
884
|
QueueUnitAnimation(self.handle, animation)
|
|
837
885
|
end
|
|
838
886
|
function Unit.prototype.chooseWeapon(self, target)
|
|
839
|
-
|
|
840
|
-
|
|
887
|
+
local firstWeapon = self.firstWeapon
|
|
888
|
+
if firstWeapon.isEnabled and target:isAllowedTarget(self, firstWeapon.allowedTargetCombatClassifications) then
|
|
889
|
+
return firstWeapon
|
|
841
890
|
end
|
|
842
|
-
|
|
843
|
-
|
|
891
|
+
local secondWeapon = self.secondWeapon
|
|
892
|
+
if secondWeapon.isEnabled and target:isAllowedTarget(target, secondWeapon.allowedTargetCombatClassifications) then
|
|
893
|
+
return secondWeapon
|
|
844
894
|
end
|
|
845
895
|
return nil
|
|
846
896
|
end
|
|
847
897
|
function Unit.prototype.delayHealthChecks(self)
|
|
848
|
-
self[
|
|
898
|
+
self[104] = (self[104] or 0) + 1
|
|
849
899
|
Timer:run(delayHealthChecksCallback, self)
|
|
850
900
|
end
|
|
851
901
|
function Unit.prototype.setPosition(self, x, y)
|
|
@@ -963,24 +1013,6 @@ end
|
|
|
963
1013
|
function Unit.prototype.endAbilityCooldown(self, abilityId)
|
|
964
1014
|
BlzEndUnitAbilityCooldown(self.handle, abilityId)
|
|
965
1015
|
end
|
|
966
|
-
function Unit.prototype.interruptMovement(self)
|
|
967
|
-
local handle = self.handle
|
|
968
|
-
unitDisableAbility(
|
|
969
|
-
handle,
|
|
970
|
-
fourCC("Amov"),
|
|
971
|
-
true,
|
|
972
|
-
false
|
|
973
|
-
)
|
|
974
|
-
unitDisableAbility(
|
|
975
|
-
handle,
|
|
976
|
-
fourCC("Amov"),
|
|
977
|
-
false,
|
|
978
|
-
false
|
|
979
|
-
)
|
|
980
|
-
end
|
|
981
|
-
function Unit.prototype.interruptAttack(self)
|
|
982
|
-
unitInterruptAttack(self.handle)
|
|
983
|
-
end
|
|
984
1016
|
function Unit.prototype.interruptCast(self, abilityId)
|
|
985
1017
|
local handle = self.handle
|
|
986
1018
|
unitDisableAbility(handle, abilityId, true, false)
|
|
@@ -1051,18 +1083,44 @@ function Unit.prototype.unpauseEx(self)
|
|
|
1051
1083
|
end
|
|
1052
1084
|
function Unit.prototype.incrementStunCounter(self)
|
|
1053
1085
|
local stunCounter = self[102] or 0
|
|
1054
|
-
if not self[101] or stunCounter >= 0 then
|
|
1086
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 0 then
|
|
1055
1087
|
BlzPauseUnitEx(self.handle, true)
|
|
1056
1088
|
end
|
|
1057
1089
|
self[102] = stunCounter + 1
|
|
1058
1090
|
end
|
|
1059
1091
|
function Unit.prototype.decrementStunCounter(self)
|
|
1060
1092
|
local stunCounter = self[102] or 0
|
|
1061
|
-
if not self[101] or stunCounter >= 1 then
|
|
1093
|
+
if not self[101] and (self[103] or 0) <= 0 or stunCounter >= 1 then
|
|
1062
1094
|
BlzPauseUnitEx(self.handle, false)
|
|
1063
1095
|
end
|
|
1064
1096
|
self[102] = stunCounter - 1
|
|
1065
1097
|
end
|
|
1098
|
+
function Unit.prototype.incrementForceStunCounter(self)
|
|
1099
|
+
local forceStunCounter = self[103] or 0
|
|
1100
|
+
if forceStunCounter == 0 then
|
|
1101
|
+
local handle = self.handle
|
|
1102
|
+
if not self[101] then
|
|
1103
|
+
for _ = self[102] or 0, -1 do
|
|
1104
|
+
BlzPauseUnitEx(handle, true)
|
|
1105
|
+
end
|
|
1106
|
+
end
|
|
1107
|
+
BlzPauseUnitEx(handle, true)
|
|
1108
|
+
end
|
|
1109
|
+
self[103] = forceStunCounter + 1
|
|
1110
|
+
end
|
|
1111
|
+
function Unit.prototype.decrementForceStunCounter(self)
|
|
1112
|
+
local forceStunCounter = self[103] or 0
|
|
1113
|
+
if forceStunCounter == 1 then
|
|
1114
|
+
local handle = self.handle
|
|
1115
|
+
if not self[101] then
|
|
1116
|
+
for _ = self[102] or 0, -1 do
|
|
1117
|
+
BlzPauseUnitEx(handle, false)
|
|
1118
|
+
end
|
|
1119
|
+
end
|
|
1120
|
+
BlzPauseUnitEx(handle, false)
|
|
1121
|
+
end
|
|
1122
|
+
self[103] = forceStunCounter - 1
|
|
1123
|
+
end
|
|
1066
1124
|
function Unit.create(self, owner, id, x, y, facing, skinId)
|
|
1067
1125
|
local handle = skinId and BlzCreateUnitWithSkin(
|
|
1068
1126
|
owner.handle,
|
|
@@ -1349,19 +1407,6 @@ __TS__SetDescriptor(
|
|
|
1349
1407
|
},
|
|
1350
1408
|
true
|
|
1351
1409
|
)
|
|
1352
|
-
__TS__SetDescriptor(
|
|
1353
|
-
Unit.prototype,
|
|
1354
|
-
"strengthBase",
|
|
1355
|
-
{
|
|
1356
|
-
get = function(self)
|
|
1357
|
-
return getHeroStr(self.handle, false)
|
|
1358
|
-
end,
|
|
1359
|
-
set = function(self, strengthBase)
|
|
1360
|
-
setHeroStr(self.handle, strengthBase, true)
|
|
1361
|
-
end
|
|
1362
|
-
},
|
|
1363
|
-
true
|
|
1364
|
-
)
|
|
1365
1410
|
__TS__SetDescriptor(
|
|
1366
1411
|
Unit.prototype,
|
|
1367
1412
|
"strengthBonus",
|
|
@@ -1379,19 +1424,6 @@ __TS__SetDescriptor(
|
|
|
1379
1424
|
end},
|
|
1380
1425
|
true
|
|
1381
1426
|
)
|
|
1382
|
-
__TS__SetDescriptor(
|
|
1383
|
-
Unit.prototype,
|
|
1384
|
-
"agilityBase",
|
|
1385
|
-
{
|
|
1386
|
-
get = function(self)
|
|
1387
|
-
return getHeroAgi(self.handle, false)
|
|
1388
|
-
end,
|
|
1389
|
-
set = function(self, agilityBase)
|
|
1390
|
-
setHeroAgi(self.handle, agilityBase, true)
|
|
1391
|
-
end
|
|
1392
|
-
},
|
|
1393
|
-
true
|
|
1394
|
-
)
|
|
1395
1427
|
__TS__SetDescriptor(
|
|
1396
1428
|
Unit.prototype,
|
|
1397
1429
|
"agilityBonus",
|
|
@@ -1409,19 +1441,6 @@ __TS__SetDescriptor(
|
|
|
1409
1441
|
end},
|
|
1410
1442
|
true
|
|
1411
1443
|
)
|
|
1412
|
-
__TS__SetDescriptor(
|
|
1413
|
-
Unit.prototype,
|
|
1414
|
-
"intelligenceBase",
|
|
1415
|
-
{
|
|
1416
|
-
get = function(self)
|
|
1417
|
-
return getHeroInt(self.handle, false)
|
|
1418
|
-
end,
|
|
1419
|
-
set = function(self, intelligenceBase)
|
|
1420
|
-
setHeroInt(self.handle, intelligenceBase, true)
|
|
1421
|
-
end
|
|
1422
|
-
},
|
|
1423
|
-
true
|
|
1424
|
-
)
|
|
1425
1444
|
__TS__SetDescriptor(
|
|
1426
1445
|
Unit.prototype,
|
|
1427
1446
|
"intelligenceBonus",
|
|
@@ -1470,7 +1489,7 @@ __TS__SetDescriptor(
|
|
|
1470
1489
|
"isTeamGlowVisible",
|
|
1471
1490
|
{
|
|
1472
1491
|
get = function(self)
|
|
1473
|
-
return not self[
|
|
1492
|
+
return not self[107]
|
|
1474
1493
|
end,
|
|
1475
1494
|
set = function(self, isTeamGlowVisible)
|
|
1476
1495
|
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
@@ -1480,7 +1499,7 @@ __TS__SetDescriptor(
|
|
|
1480
1499
|
else
|
|
1481
1500
|
____temp_7 = nil
|
|
1482
1501
|
end
|
|
1483
|
-
self[
|
|
1502
|
+
self[107] = ____temp_7
|
|
1484
1503
|
end
|
|
1485
1504
|
},
|
|
1486
1505
|
true
|
|
@@ -1490,7 +1509,7 @@ __TS__SetDescriptor(
|
|
|
1490
1509
|
"color",
|
|
1491
1510
|
{set = function(self, color)
|
|
1492
1511
|
SetUnitColor(self.handle, color.handle)
|
|
1493
|
-
if self[
|
|
1512
|
+
if self[107] then
|
|
1494
1513
|
BlzShowUnitTeamGlow(self.handle, false)
|
|
1495
1514
|
end
|
|
1496
1515
|
end},
|
|
@@ -1514,14 +1533,14 @@ __TS__SetDescriptor(
|
|
|
1514
1533
|
"maxHealth",
|
|
1515
1534
|
{
|
|
1516
1535
|
get = function(self)
|
|
1517
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1536
|
+
return BlzGetUnitMaxHP(self.handle) - (self[105] or 0) - (self[106] or 0)
|
|
1518
1537
|
end,
|
|
1519
1538
|
set = function(self, maxHealth)
|
|
1520
|
-
if maxHealth < 1 and self[
|
|
1521
|
-
self[
|
|
1539
|
+
if maxHealth < 1 and self[104] ~= nil then
|
|
1540
|
+
self[105] = (self[105] or 0) + (1 - maxHealth)
|
|
1522
1541
|
maxHealth = 1
|
|
1523
1542
|
end
|
|
1524
|
-
BlzSetUnitMaxHP(self.handle, maxHealth + (self[
|
|
1543
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[106] or 0))
|
|
1525
1544
|
end
|
|
1526
1545
|
},
|
|
1527
1546
|
true
|
|
@@ -1563,10 +1582,10 @@ __TS__SetDescriptor(
|
|
|
1563
1582
|
"health",
|
|
1564
1583
|
{
|
|
1565
1584
|
get = function(self)
|
|
1566
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1585
|
+
return GetWidgetLife(self.handle) - (self[106] or 0)
|
|
1567
1586
|
end,
|
|
1568
1587
|
set = function(self, health)
|
|
1569
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1588
|
+
SetWidgetLife(self.handle, health + (self[106] or 0))
|
|
1570
1589
|
end
|
|
1571
1590
|
},
|
|
1572
1591
|
true
|
|
@@ -1642,25 +1661,12 @@ __TS__SetDescriptor(
|
|
|
1642
1661
|
},
|
|
1643
1662
|
true
|
|
1644
1663
|
)
|
|
1645
|
-
__TS__SetDescriptor(
|
|
1646
|
-
Unit.prototype,
|
|
1647
|
-
"flyHeight",
|
|
1648
|
-
{
|
|
1649
|
-
get = function(self)
|
|
1650
|
-
return getUnitFlyHeight(self.handle)
|
|
1651
|
-
end,
|
|
1652
|
-
set = function(self, v)
|
|
1653
|
-
SetUnitFlyHeight(self.handle, v, 100000)
|
|
1654
|
-
end
|
|
1655
|
-
},
|
|
1656
|
-
true
|
|
1657
|
-
)
|
|
1658
1664
|
__TS__SetDescriptor(
|
|
1659
1665
|
Unit.prototype,
|
|
1660
1666
|
"x",
|
|
1661
1667
|
{
|
|
1662
1668
|
get = function(self)
|
|
1663
|
-
return self[
|
|
1669
|
+
return self[108] or getUnitX(self.handle)
|
|
1664
1670
|
end,
|
|
1665
1671
|
set = function(self, v)
|
|
1666
1672
|
SetUnitX(self.handle, v)
|
|
@@ -1673,7 +1679,7 @@ __TS__SetDescriptor(
|
|
|
1673
1679
|
"y",
|
|
1674
1680
|
{
|
|
1675
1681
|
get = function(self)
|
|
1676
|
-
return self[
|
|
1682
|
+
return self[109] or getUnitY(self.handle)
|
|
1677
1683
|
end,
|
|
1678
1684
|
set = function(self, v)
|
|
1679
1685
|
SetUnitY(self.handle, v)
|
|
@@ -1778,14 +1784,18 @@ __TS__SetDescriptor(
|
|
|
1778
1784
|
local handle = self.handle
|
|
1779
1785
|
if isPaused and not IsUnitPaused(handle) then
|
|
1780
1786
|
self[101] = true
|
|
1781
|
-
|
|
1782
|
-
|
|
1787
|
+
if (self[103] or 0) <= 0 then
|
|
1788
|
+
for _ = self[102] or 0, -1 do
|
|
1789
|
+
BlzPauseUnitEx(handle, true)
|
|
1790
|
+
end
|
|
1783
1791
|
end
|
|
1784
1792
|
PauseUnit(handle, true)
|
|
1785
1793
|
elseif not isPaused and IsUnitPaused(handle) then
|
|
1786
1794
|
PauseUnit(handle, false)
|
|
1787
|
-
|
|
1788
|
-
|
|
1795
|
+
if (self[103] or 0) <= 0 then
|
|
1796
|
+
for _ = self[102] or 0, -1 do
|
|
1797
|
+
BlzPauseUnitEx(handle, false)
|
|
1798
|
+
end
|
|
1789
1799
|
end
|
|
1790
1800
|
self[101] = nil
|
|
1791
1801
|
end
|
|
@@ -1843,20 +1853,6 @@ __TS__SetDescriptor(
|
|
|
1843
1853
|
},
|
|
1844
1854
|
true
|
|
1845
1855
|
)
|
|
1846
|
-
__TS__SetDescriptor(
|
|
1847
|
-
Unit.prototype,
|
|
1848
|
-
"scale",
|
|
1849
|
-
{
|
|
1850
|
-
get = function(self)
|
|
1851
|
-
return getUnitRealField(self.handle, UNIT_RF_SCALING_VALUE)
|
|
1852
|
-
end,
|
|
1853
|
-
set = function(self, v)
|
|
1854
|
-
setUnitScale(self.handle, v, v, v)
|
|
1855
|
-
setUnitRealField(self.handle, UNIT_RF_SCALING_VALUE, v)
|
|
1856
|
-
end
|
|
1857
|
-
},
|
|
1858
|
-
true
|
|
1859
|
-
)
|
|
1860
1856
|
__TS__SetDescriptor(
|
|
1861
1857
|
Unit.prototype,
|
|
1862
1858
|
"timeScale",
|
|
@@ -1993,30 +1989,6 @@ __TS__SetDescriptor(
|
|
|
1993
1989
|
end},
|
|
1994
1990
|
true
|
|
1995
1991
|
)
|
|
1996
|
-
__TS__SetDescriptor(
|
|
1997
|
-
Unit.prototype,
|
|
1998
|
-
"onUnitInRange",
|
|
1999
|
-
{get = function(self)
|
|
2000
|
-
local handle = self.handle
|
|
2001
|
-
local onUnitInRange = setmetatable(
|
|
2002
|
-
{},
|
|
2003
|
-
{__index = function(self, value)
|
|
2004
|
-
local event = __TS__New(
|
|
2005
|
-
TriggerEvent,
|
|
2006
|
-
function(trigger)
|
|
2007
|
-
TriggerRegisterUnitInRangeSimple(trigger, value, handle)
|
|
2008
|
-
end,
|
|
2009
|
-
function() return ____exports.Unit:of(handle) end
|
|
2010
|
-
)
|
|
2011
|
-
rawset(self, value, event)
|
|
2012
|
-
return event
|
|
2013
|
-
end}
|
|
2014
|
-
)
|
|
2015
|
-
rawset(self, "onUnitInRange", onUnitInRange)
|
|
2016
|
-
return onUnitInRange
|
|
2017
|
-
end},
|
|
2018
|
-
true
|
|
2019
|
-
)
|
|
2020
1992
|
__TS__SetDescriptor(
|
|
2021
1993
|
Unit.prototype,
|
|
2022
1994
|
"onManaEqual",
|
|
@@ -2152,6 +2124,11 @@ __TS__SetDescriptor(
|
|
|
2152
2124
|
end},
|
|
2153
2125
|
true
|
|
2154
2126
|
)
|
|
2127
|
+
Unit.levelChangedEvent = __TS__New(
|
|
2128
|
+
____exports.UnitTriggerEvent,
|
|
2129
|
+
EVENT_PLAYER_HERO_LEVEL,
|
|
2130
|
+
function() return ____exports.Unit:of(getTriggerUnit()) end
|
|
2131
|
+
)
|
|
2155
2132
|
Unit.deathEvent = __TS__New(
|
|
2156
2133
|
____exports.UnitTriggerEvent,
|
|
2157
2134
|
EVENT_PLAYER_UNIT_DEATH,
|
|
@@ -2468,12 +2445,7 @@ Unit.onDamaging = (function()
|
|
|
2468
2445
|
preventRetaliation = damagingEventPreventRetaliation
|
|
2469
2446
|
}
|
|
2470
2447
|
if data.isAttack and source then
|
|
2471
|
-
|
|
2472
|
-
if weapon == -1 then
|
|
2473
|
-
local targetsAllowed = BlzGetUnitWeaponIntegerField(source.handle, UNIT_WEAPON_IF_ATTACK_TARGETS_ALLOWED, 0)
|
|
2474
|
-
weapon = 0
|
|
2475
|
-
end
|
|
2476
|
-
data.weapon = assert(source.weapons[weapon + 1])
|
|
2448
|
+
data.weapon = source:chooseWeapon(target)
|
|
2477
2449
|
end
|
|
2478
2450
|
if not data.isAttack or not source or not source._attackHandlers then
|
|
2479
2451
|
invoke(
|
|
@@ -2618,7 +2590,7 @@ Unit.onDamage = __TS__New(
|
|
|
2618
2590
|
invoke(event, source, target, evData)
|
|
2619
2591
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2620
2592
|
local bonusHealth = math.ceil(evData.amount)
|
|
2621
|
-
target[
|
|
2593
|
+
target[106] = (target[106] or 0) + bonusHealth
|
|
2622
2594
|
BlzSetUnitMaxHP(
|
|
2623
2595
|
target.handle,
|
|
2624
2596
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2632,7 +2604,7 @@ Unit.onDamage = __TS__New(
|
|
|
2632
2604
|
evData[0],
|
|
2633
2605
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2634
2606
|
)
|
|
2635
|
-
target[
|
|
2607
|
+
target[106] = (target[106] or 0) - bonusHealth
|
|
2636
2608
|
SetWidgetLife(
|
|
2637
2609
|
target.handle,
|
|
2638
2610
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2782,6 +2754,10 @@ __TS__ObjectDefineProperty(
|
|
|
2782
2754
|
rawset(self, "destroyEvent", destroyEvent)
|
|
2783
2755
|
return destroyEvent
|
|
2784
2756
|
end}
|
|
2757
|
+
)
|
|
2758
|
+
Unit.synchronize = synchronizer(
|
|
2759
|
+
function(unit) return unit.syncId end,
|
|
2760
|
+
function(syncId) return unitBySyncId[syncId] end
|
|
2785
2761
|
);
|
|
2786
2762
|
(function(self)
|
|
2787
2763
|
local leaveAbilityIds = postcompile(function()
|
|
@@ -2811,7 +2787,8 @@ __TS__ObjectDefineProperty(
|
|
|
2811
2787
|
return
|
|
2812
2788
|
end
|
|
2813
2789
|
end
|
|
2814
|
-
unit:
|
|
2790
|
+
unit:saveData()
|
|
2791
|
+
Timer:run(unit, "destroy")
|
|
2815
2792
|
end)
|
|
2816
2793
|
end
|
|
2817
2794
|
end)(Unit)
|
package/engine/local-client.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { Unit } from "../core/types/unit";
|
|
|
3
3
|
import { Async } from "../core/types/async";
|
|
4
4
|
import { Event, TriggerEvent } from "../event";
|
|
5
5
|
import { GraphicsMode } from "./index";
|
|
6
|
+
import { Color } from "../core/types/color";
|
|
6
7
|
export declare class LocalClient {
|
|
7
8
|
private constructor();
|
|
8
9
|
static readonly locale: string;
|
|
@@ -11,6 +12,7 @@ export declare class LocalClient {
|
|
|
11
12
|
static get isHD(): boolean;
|
|
12
13
|
static get graphicsMode(): GraphicsMode;
|
|
13
14
|
static get isActive(): boolean;
|
|
15
|
+
static pingMinimap(x: number, y: number, duration: number, ...parameters: [] | [red: number, green: number, blue: number, flashy?: boolean] | [color: Color, flashy?: boolean]): void;
|
|
14
16
|
static get mouseFocusUnit(): Async<Unit> | undefined;
|
|
15
17
|
static get mainSelectedUnit(): Async<Unit> | undefined;
|
|
16
18
|
static get mainSelectedUnitChangeEvent(): Event<[
|
package/engine/local-client.lua
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
2
|
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
3
3
|
local __TS__Class = ____lualib.__TS__Class
|
|
4
|
+
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
4
5
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
5
6
|
local __TS__New = ____lualib.__TS__New
|
|
6
7
|
local ____exports = {}
|
|
@@ -15,6 +16,8 @@ local ____player = require("core.types.player")
|
|
|
15
16
|
local Player = ____player.Player
|
|
16
17
|
local ____timer = require("core.types.timer")
|
|
17
18
|
local Timer = ____timer.Timer
|
|
19
|
+
local ____color = require("core.types.color")
|
|
20
|
+
local Color = ____color.Color
|
|
18
21
|
local loadTOCFile = BlzLoadTOCFile
|
|
19
22
|
local getLocalClientWidth = BlzGetLocalClientWidth
|
|
20
23
|
local getLocalClientHeight = BlzGetLocalClientHeight
|
|
@@ -25,6 +28,8 @@ local getMouseFocusUnit = BlzGetMouseFocusUnit
|
|
|
25
28
|
local getUnitRealField = BlzGetUnitRealField
|
|
26
29
|
local getUnitTypeId = GetUnitTypeId
|
|
27
30
|
local getLocale = BlzGetLocale
|
|
31
|
+
local pingMinimap = PingMinimap
|
|
32
|
+
local pingMinimapEx = PingMinimapEx
|
|
28
33
|
local tableSort = table.sort
|
|
29
34
|
local tocPath = "_warscript\\IsHD.toc"
|
|
30
35
|
compiletime(function()
|
|
@@ -62,6 +67,31 @@ local LocalClient = ____exports.LocalClient
|
|
|
62
67
|
LocalClient.name = "LocalClient"
|
|
63
68
|
function LocalClient.prototype.____constructor(self)
|
|
64
69
|
end
|
|
70
|
+
function LocalClient.pingMinimap(self, x, y, duration, redOrColor, greenOrFlashy, blue, flashy)
|
|
71
|
+
if redOrColor == nil then
|
|
72
|
+
pingMinimap(x, y, duration)
|
|
73
|
+
elseif __TS__InstanceOf(redOrColor, Color) then
|
|
74
|
+
pingMinimapEx(
|
|
75
|
+
x,
|
|
76
|
+
y,
|
|
77
|
+
duration,
|
|
78
|
+
redOrColor.r,
|
|
79
|
+
redOrColor.g,
|
|
80
|
+
redOrColor.b,
|
|
81
|
+
greenOrFlashy or false
|
|
82
|
+
)
|
|
83
|
+
else
|
|
84
|
+
pingMinimapEx(
|
|
85
|
+
x,
|
|
86
|
+
y,
|
|
87
|
+
duration,
|
|
88
|
+
redOrColor,
|
|
89
|
+
greenOrFlashy,
|
|
90
|
+
blue,
|
|
91
|
+
flashy or false
|
|
92
|
+
)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
65
95
|
LocalClient.locale = getLocale()
|
|
66
96
|
__TS__ObjectDefineProperty(
|
|
67
97
|
LocalClient,
|