warscript 0.0.1-dev.d410c75 → 0.0.1-dev.d5494fc
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/core/types/effect.d.ts +1 -3
- package/core/types/effect.lua +26 -29
- package/core/types/sound.d.ts +17 -25
- package/core/types/sound.lua +91 -46
- package/core/types/timer.d.ts +6 -7
- package/core/types/timer.lua +18 -21
- package/core/util.lua +6 -1
- package/decl/native.d.ts +840 -786
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +8 -2
- package/engine/behaviour/ability/damage.lua +18 -31
- package/engine/behaviour/ability/emulate-impact.lua +7 -0
- package/engine/behaviour/ability.d.ts +5 -1
- package/engine/behaviour/ability.lua +18 -4
- package/engine/behaviour/unit.d.ts +2 -0
- package/engine/buff.d.ts +13 -8
- package/engine/buff.lua +81 -50
- package/engine/internal/item.d.ts +2 -1
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- 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+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.d.ts +16 -2
- package/engine/internal/unit.lua +81 -32
- package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- 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/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -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/blank-configurable.lua +0 -9
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/curse.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
- package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.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/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +13 -11
- package/engine/object-data/entry/ability-type.lua +65 -6
- package/engine/object-data/entry/buff-type/applicable.lua +8 -3
- 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/sound-preset.d.ts +18 -2
- package/engine/object-data/entry/sound-preset.lua +105 -15
- package/engine/object-data/entry/unit-type.d.ts +2 -2
- package/engine/object-data/entry/unit-type.lua +97 -87
- package/engine/object-data/entry.d.ts +1 -1
- 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 +9 -1
- package/engine/object-field.lua +158 -76
- 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/objutil/unit.lua +2 -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/utility/reflection.lua +11 -7
|
@@ -7,21 +7,14 @@ local ____player = require("core.types.player")
|
|
|
7
7
|
local Player = ____player.Player
|
|
8
8
|
local ____dummy = require("objutil.dummy")
|
|
9
9
|
local dummyUnitId = ____dummy.dummyUnitId
|
|
10
|
+
local ____attack_2Dtype = require("engine.object-data.auxiliary.attack-type")
|
|
11
|
+
local attackTypeToNative = ____attack_2Dtype.attackTypeToNative
|
|
12
|
+
local ____damage_2Dmetadata_2Dby_2Dtarget = require("engine.internal.misc.damage-metadata-by-target")
|
|
13
|
+
local damageMetadataByTarget = ____damage_2Dmetadata_2Dby_2Dtarget.damageMetadataByTarget
|
|
10
14
|
local createUnit = CreateUnit
|
|
11
15
|
local getOwningPlayer = GetOwningPlayer
|
|
12
16
|
local showUnit = ShowUnit
|
|
13
17
|
local unitDamageTarget = UnitDamageTarget
|
|
14
|
-
____exports.AttackType = {}
|
|
15
|
-
local AttackType = ____exports.AttackType
|
|
16
|
-
do
|
|
17
|
-
AttackType.SPELL = ATTACK_TYPE_NORMAL
|
|
18
|
-
AttackType.NORMAL = ATTACK_TYPE_MELEE
|
|
19
|
-
AttackType.PIERCE = ATTACK_TYPE_PIERCE
|
|
20
|
-
AttackType.SIEGE = ATTACK_TYPE_SIEGE
|
|
21
|
-
AttackType.MAGIC = ATTACK_TYPE_MAGIC
|
|
22
|
-
AttackType.CHAOS = ATTACK_TYPE_CHAOS
|
|
23
|
-
AttackType.HERO = ATTACK_TYPE_HERO
|
|
24
|
-
end
|
|
25
18
|
____exports.DamageType = {}
|
|
26
19
|
local DamageType = ____exports.DamageType
|
|
27
20
|
do
|
|
@@ -88,7 +81,7 @@ for ____, player in ipairs(Player.all) do
|
|
|
88
81
|
showUnit(dummy, false)
|
|
89
82
|
dummies[player] = dummy
|
|
90
83
|
end
|
|
91
|
-
Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, attackType, damageType, weaponType)
|
|
84
|
+
Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, attackType, damageType, weaponType, metadata)
|
|
92
85
|
if attack == nil then
|
|
93
86
|
attack = false
|
|
94
87
|
end
|
|
@@ -96,7 +89,7 @@ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, att
|
|
|
96
89
|
ranged = false
|
|
97
90
|
end
|
|
98
91
|
if attackType == nil then
|
|
99
|
-
attackType =
|
|
92
|
+
attackType = 0
|
|
100
93
|
end
|
|
101
94
|
if damageType == nil then
|
|
102
95
|
damageType = ____exports.DamageType.MAGIC
|
|
@@ -109,13 +102,16 @@ Unit.prototype.damageTarget = function(self, target, amount, attack, ranged, att
|
|
|
109
102
|
if not getOwningPlayer(handle) then
|
|
110
103
|
handle = dummies[__TS__InstanceOf(target, Unit) and target.owner or (self._owner or Player.neutralAggressive)]
|
|
111
104
|
end
|
|
105
|
+
if __TS__InstanceOf(target, Unit) then
|
|
106
|
+
damageMetadataByTarget[target] = metadata
|
|
107
|
+
end
|
|
112
108
|
return unitDamageTarget(
|
|
113
109
|
handle,
|
|
114
110
|
targetHandle,
|
|
115
111
|
amount,
|
|
116
112
|
attack,
|
|
117
113
|
ranged,
|
|
118
|
-
attackType,
|
|
114
|
+
attackTypeToNative(attackType),
|
|
119
115
|
damageType,
|
|
120
116
|
weaponType
|
|
121
117
|
)
|
|
@@ -6,7 +6,6 @@ local ____exports = {}
|
|
|
6
6
|
local ____unit = require("engine.internal.unit")
|
|
7
7
|
local Unit = ____unit.Unit
|
|
8
8
|
local ____unit_2Bdamage = require("engine.internal.unit+damage")
|
|
9
|
-
local AttackType = ____unit_2Bdamage.AttackType
|
|
10
9
|
local DamageType = ____unit_2Bdamage.DamageType
|
|
11
10
|
local ____event = require("event")
|
|
12
11
|
local Event = ____event.Event
|
|
@@ -33,7 +32,7 @@ local spellStealEventStack = {}
|
|
|
33
32
|
Unit.onDamaging:addListener(function(source, target, event)
|
|
34
33
|
if event.amount == 0 and source ~= nil then
|
|
35
34
|
local count = countByUnit[source] or 0
|
|
36
|
-
if count > 0 and event.attackType ==
|
|
35
|
+
if count > 0 and event.attackType == 0 then
|
|
37
36
|
if event.damageType == DamageType.UNKNOWN then
|
|
38
37
|
spellStealEventStack[#spellStealEventStack + 1] = {
|
|
39
38
|
sourceBuffIds = source.buffIds,
|
|
@@ -11,6 +11,9 @@ import { Ability, UnitAbility } from "./ability";
|
|
|
11
11
|
import { Widget } from "../../core/types/widget";
|
|
12
12
|
import type { UnitTypeId } from "../object-data/entry/unit-type";
|
|
13
13
|
import { CombatClassification, CombatClassifications } from "../object-data/auxiliary/combat-classification";
|
|
14
|
+
import { MovementType } from "../object-data/auxiliary/movement-type";
|
|
15
|
+
import { UnitAttribute } from "../object-data/auxiliary/unit-attribute";
|
|
16
|
+
import { AttackType } from "../object-data/auxiliary/attack-type";
|
|
14
17
|
export type UnitClassification = junittype;
|
|
15
18
|
export declare namespace UnitClassification {
|
|
16
19
|
const STRUCTURE: junittype;
|
|
@@ -38,11 +41,13 @@ type AbilityDispatcherTable<T extends any[] = []> = {
|
|
|
38
41
|
type AbilityEventDispatcher<T extends any[] = []> = Event<[Unit, Ability, ...T]> & AbilityDispatcherTable<T>;
|
|
39
42
|
export interface DamagingEvent {
|
|
40
43
|
amount: number;
|
|
41
|
-
attackType:
|
|
44
|
+
attackType: AttackType;
|
|
42
45
|
damageType: jdamagetype;
|
|
43
46
|
weaponType: jweapontype;
|
|
47
|
+
metadata: unknown;
|
|
44
48
|
readonly isAttack: boolean;
|
|
45
49
|
readonly originalAmount: number;
|
|
50
|
+
readonly originalMetadata: unknown;
|
|
46
51
|
}
|
|
47
52
|
export type DamageEvent = DamagingEvent & {
|
|
48
53
|
preventDeath<P extends any[]>(this: DamageEvent, callback: (this: void, ...parameters: P) => any, ...parameters: P): void;
|
|
@@ -100,7 +105,9 @@ declare const enum UnitPropertyKey {
|
|
|
100
105
|
DELAY_HEALTH_CHECKS_COUNTER = 103,
|
|
101
106
|
DELAY_HEALTH_CHECKS_HEALTH_BONUS = 104,
|
|
102
107
|
PREVENT_DEATH_HEALTH_BONUS = 105,
|
|
103
|
-
IS_TEAM_GLOW_HIDDEN = 106
|
|
108
|
+
IS_TEAM_GLOW_HIDDEN = 106,
|
|
109
|
+
LAST_X = 107,
|
|
110
|
+
LAST_Y = 108
|
|
104
111
|
}
|
|
105
112
|
export type UnitSyncId = number & {
|
|
106
113
|
readonly __unitSyncId: unique symbol;
|
|
@@ -113,6 +120,8 @@ export declare class Unit extends Handle<junit> {
|
|
|
113
120
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_HEALTH_BONUS]?;
|
|
114
121
|
private [UnitPropertyKey.PREVENT_DEATH_HEALTH_BONUS]?;
|
|
115
122
|
private [UnitPropertyKey.IS_TEAM_GLOW_HIDDEN]?;
|
|
123
|
+
private [UnitPropertyKey.LAST_X]?;
|
|
124
|
+
private [UnitPropertyKey.LAST_Y]?;
|
|
116
125
|
private _owner?;
|
|
117
126
|
private _timeScale?;
|
|
118
127
|
private events?;
|
|
@@ -148,6 +157,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
148
157
|
isEnemyOf(unit: Unit): boolean;
|
|
149
158
|
playAnimation(animation: string, rarity?: jraritycontrol): void;
|
|
150
159
|
playAnimation(animation: number): void;
|
|
160
|
+
resetAnimation(): void;
|
|
151
161
|
queueAnimation(animation: string): void;
|
|
152
162
|
get weapons(): [UnitWeapon, UnitWeapon];
|
|
153
163
|
get firstWeapon(): UnitWeapon;
|
|
@@ -156,6 +166,8 @@ export declare class Unit extends Handle<junit> {
|
|
|
156
166
|
set level(v: number);
|
|
157
167
|
get xp(): number;
|
|
158
168
|
set xp(v: number);
|
|
169
|
+
get primaryAttribute(): UnitAttribute;
|
|
170
|
+
set primaryAttribute(primaryAttribute: UnitAttribute);
|
|
159
171
|
get strengthBase(): number;
|
|
160
172
|
set strengthBase(strengthBase: number);
|
|
161
173
|
get strengthBonus(): number;
|
|
@@ -230,6 +242,8 @@ export declare class Unit extends Handle<junit> {
|
|
|
230
242
|
set timeScale(v: number);
|
|
231
243
|
get collisionSize(): number;
|
|
232
244
|
get pathingCollisionRange(): number;
|
|
245
|
+
get movementType(): MovementType;
|
|
246
|
+
set movementType(movementType: MovementType);
|
|
233
247
|
set pathing(v: boolean);
|
|
234
248
|
isSelected(player: Player): boolean;
|
|
235
249
|
explode(): void;
|
package/engine/internal/unit.lua
CHANGED
|
@@ -53,11 +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
|
|
56
61
|
local match = string.match
|
|
57
62
|
local ____tostring = _G.tostring
|
|
58
63
|
local setUnitAnimation = SetUnitAnimation
|
|
59
64
|
local setUnitAnimationWithRarity = SetUnitAnimationWithRarity
|
|
60
65
|
local setUnitAnimationByIndex = SetUnitAnimationByIndex
|
|
66
|
+
local resetUnitAnimation = ResetUnitAnimation
|
|
61
67
|
local queueUnitAnimation = QueueUnitAnimation
|
|
62
68
|
local getUnitIntegerField = BlzGetUnitIntegerField
|
|
63
69
|
local getUnitRealField = BlzGetUnitRealField
|
|
@@ -80,7 +86,6 @@ local getHandleId = GetHandleId
|
|
|
80
86
|
local getUnitCurrentOrder = GetUnitCurrentOrder
|
|
81
87
|
local createUnit = CreateUnit
|
|
82
88
|
local killUnit = KillUnit
|
|
83
|
-
local setUnitExploded = SetUnitExploded
|
|
84
89
|
local removeUnit = RemoveUnit
|
|
85
90
|
local getUnitTypeId = GetUnitTypeId
|
|
86
91
|
local isHeroUnitId = IsHeroUnitId
|
|
@@ -96,8 +101,6 @@ local getSpellTargetItem = GetSpellTargetItem
|
|
|
96
101
|
local getSpellTargetDestructable = GetSpellTargetDestructable
|
|
97
102
|
local isUnitInRangeXY = IsUnitInRangeXY
|
|
98
103
|
local isUnitInRange = IsUnitInRange
|
|
99
|
-
local setResourceAmount = SetResourceAmount
|
|
100
|
-
local getResourceAmount = GetResourceAmount
|
|
101
104
|
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
102
105
|
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
103
106
|
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
@@ -128,8 +131,6 @@ local isUnitType = IsUnitType
|
|
|
128
131
|
local isUnitAlly = IsUnitAlly
|
|
129
132
|
local isUnitEnemy = IsUnitEnemy
|
|
130
133
|
local getOwningPlayer = GetOwningPlayer
|
|
131
|
-
local setUnitColor = SetUnitColor
|
|
132
|
-
local showUnitTeamGlow = BlzShowUnitTeamGlow
|
|
133
134
|
____exports.UnitClassification = {}
|
|
134
135
|
local UnitClassification = ____exports.UnitClassification
|
|
135
136
|
do
|
|
@@ -357,7 +358,14 @@ local function damageEventPreventDeath(self, callback, ...)
|
|
|
357
358
|
rawset(self, 1 + i, (select(i, ...)))
|
|
358
359
|
end
|
|
359
360
|
end
|
|
360
|
-
local damageSetters = {
|
|
361
|
+
local damageSetters = {
|
|
362
|
+
amount = BlzSetEventDamage,
|
|
363
|
+
attackType = function(attackType)
|
|
364
|
+
return BlzSetEventAttackType(attackTypeToNative(attackType))
|
|
365
|
+
end,
|
|
366
|
+
damageType = BlzSetEventDamageType,
|
|
367
|
+
weaponType = BlzSetEventWeaponType
|
|
368
|
+
}
|
|
361
369
|
local jlimitopByOperator = {
|
|
362
370
|
[0] = LESS_THAN_OR_EQUAL,
|
|
363
371
|
[1] = LESS_THAN_OR_EQUAL,
|
|
@@ -639,7 +647,8 @@ local function delayHealthChecksCallback(unit)
|
|
|
639
647
|
end
|
|
640
648
|
end
|
|
641
649
|
local nextSyncId = 1
|
|
642
|
-
local unitBySyncId = setmetatable({}, {__mode = "
|
|
650
|
+
local unitBySyncId = setmetatable({}, {__mode = "v"})
|
|
651
|
+
local damagingEventByTarget = setmetatable({}, {__mode = "k"})
|
|
643
652
|
____exports.Unit = __TS__Class()
|
|
644
653
|
local Unit = ____exports.Unit
|
|
645
654
|
Unit.name = "Unit"
|
|
@@ -680,6 +689,8 @@ function Unit.prototype.getEvent(self, event, collector)
|
|
|
680
689
|
end
|
|
681
690
|
function Unit.prototype.onDestroy(self)
|
|
682
691
|
local handle = self.handle
|
|
692
|
+
self[107] = getUnitX(handle)
|
|
693
|
+
self[108] = getUnitY(handle)
|
|
683
694
|
if not self._owner then
|
|
684
695
|
self._owner = Player:of(getOwningPlayer(handle))
|
|
685
696
|
end
|
|
@@ -795,6 +806,9 @@ function Unit.prototype.playAnimation(self, animation, rarity)
|
|
|
795
806
|
setUnitAnimation(self.handle, animation)
|
|
796
807
|
end
|
|
797
808
|
end
|
|
809
|
+
function Unit.prototype.resetAnimation(self)
|
|
810
|
+
resetUnitAnimation(self.handle)
|
|
811
|
+
end
|
|
798
812
|
function Unit.prototype.queueAnimation(self, animation)
|
|
799
813
|
queueUnitAnimation(self.handle, animation)
|
|
800
814
|
end
|
|
@@ -809,7 +823,7 @@ function Unit.prototype.isSelected(self, player)
|
|
|
809
823
|
return IsUnitSelected(self.handle, player.handle)
|
|
810
824
|
end
|
|
811
825
|
function Unit.prototype.explode(self)
|
|
812
|
-
|
|
826
|
+
SetUnitExploded(self.handle, true)
|
|
813
827
|
killUnit(self.handle)
|
|
814
828
|
end
|
|
815
829
|
function Unit.prototype.kill(self)
|
|
@@ -1286,6 +1300,19 @@ __TS__SetDescriptor(
|
|
|
1286
1300
|
},
|
|
1287
1301
|
true
|
|
1288
1302
|
)
|
|
1303
|
+
__TS__SetDescriptor(
|
|
1304
|
+
Unit.prototype,
|
|
1305
|
+
"primaryAttribute",
|
|
1306
|
+
{
|
|
1307
|
+
get = function(self)
|
|
1308
|
+
return getUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE)
|
|
1309
|
+
end,
|
|
1310
|
+
set = function(self, primaryAttribute)
|
|
1311
|
+
setUnitIntegerField(self.handle, UNIT_IF_PRIMARY_ATTRIBUTE, primaryAttribute)
|
|
1312
|
+
end
|
|
1313
|
+
},
|
|
1314
|
+
true
|
|
1315
|
+
)
|
|
1289
1316
|
__TS__SetDescriptor(
|
|
1290
1317
|
Unit.prototype,
|
|
1291
1318
|
"strengthBase",
|
|
@@ -1410,7 +1437,7 @@ __TS__SetDescriptor(
|
|
|
1410
1437
|
return not self[106]
|
|
1411
1438
|
end,
|
|
1412
1439
|
set = function(self, isTeamGlowVisible)
|
|
1413
|
-
|
|
1440
|
+
BlzShowUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1414
1441
|
local ____temp_6
|
|
1415
1442
|
if not isTeamGlowVisible then
|
|
1416
1443
|
____temp_6 = true
|
|
@@ -1426,9 +1453,9 @@ __TS__SetDescriptor(
|
|
|
1426
1453
|
Unit.prototype,
|
|
1427
1454
|
"color",
|
|
1428
1455
|
{set = function(self, color)
|
|
1429
|
-
|
|
1456
|
+
SetUnitColor(self.handle, color.handle)
|
|
1430
1457
|
if self[106] then
|
|
1431
|
-
|
|
1458
|
+
BlzShowUnitTeamGlow(self.handle, false)
|
|
1432
1459
|
end
|
|
1433
1460
|
end},
|
|
1434
1461
|
true
|
|
@@ -1597,7 +1624,7 @@ __TS__SetDescriptor(
|
|
|
1597
1624
|
"x",
|
|
1598
1625
|
{
|
|
1599
1626
|
get = function(self)
|
|
1600
|
-
return getUnitX(self.handle)
|
|
1627
|
+
return self[107] or getUnitX(self.handle)
|
|
1601
1628
|
end,
|
|
1602
1629
|
set = function(self, v)
|
|
1603
1630
|
SetUnitX(self.handle, v)
|
|
@@ -1610,7 +1637,7 @@ __TS__SetDescriptor(
|
|
|
1610
1637
|
"y",
|
|
1611
1638
|
{
|
|
1612
1639
|
get = function(self)
|
|
1613
|
-
return getUnitY(self.handle)
|
|
1640
|
+
return self[108] or getUnitY(self.handle)
|
|
1614
1641
|
end,
|
|
1615
1642
|
set = function(self, v)
|
|
1616
1643
|
SetUnitY(self.handle, v)
|
|
@@ -1696,10 +1723,10 @@ __TS__SetDescriptor(
|
|
|
1696
1723
|
"gold",
|
|
1697
1724
|
{
|
|
1698
1725
|
get = function(self)
|
|
1699
|
-
return
|
|
1726
|
+
return GetResourceAmount(self.handle)
|
|
1700
1727
|
end,
|
|
1701
1728
|
set = function(self, gold)
|
|
1702
|
-
|
|
1729
|
+
SetResourceAmount(self.handle, gold)
|
|
1703
1730
|
end
|
|
1704
1731
|
},
|
|
1705
1732
|
true
|
|
@@ -1827,6 +1854,19 @@ __TS__SetDescriptor(
|
|
|
1827
1854
|
end},
|
|
1828
1855
|
true
|
|
1829
1856
|
)
|
|
1857
|
+
__TS__SetDescriptor(
|
|
1858
|
+
Unit.prototype,
|
|
1859
|
+
"movementType",
|
|
1860
|
+
{
|
|
1861
|
+
get = function(self)
|
|
1862
|
+
return getUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE)
|
|
1863
|
+
end,
|
|
1864
|
+
set = function(self, movementType)
|
|
1865
|
+
setUnitIntegerField(self.handle, UNIT_IF_MOVE_TYPE, movementType)
|
|
1866
|
+
end
|
|
1867
|
+
},
|
|
1868
|
+
true
|
|
1869
|
+
)
|
|
1830
1870
|
__TS__SetDescriptor(
|
|
1831
1871
|
Unit.prototype,
|
|
1832
1872
|
"pathing",
|
|
@@ -2369,13 +2409,18 @@ Unit.onDamaging = (function()
|
|
|
2369
2409
|
if source and source.typeId == dummyUnitId then
|
|
2370
2410
|
source = nil
|
|
2371
2411
|
end
|
|
2372
|
-
local target = BlzGetEventDamageTarget()
|
|
2412
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2413
|
+
local metadata = damageMetadataByTarget[target]
|
|
2414
|
+
damageMetadataByTarget[target] = nil
|
|
2373
2415
|
local data = {
|
|
2374
2416
|
amount = GetEventDamage(),
|
|
2375
|
-
attackType = BlzGetEventAttackType(),
|
|
2417
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2376
2418
|
damageType = BlzGetEventDamageType(),
|
|
2377
2419
|
weaponType = BlzGetEventWeaponType(),
|
|
2378
|
-
|
|
2420
|
+
metadata = metadata,
|
|
2421
|
+
isAttack = BlzGetEventIsAttack(),
|
|
2422
|
+
originalAmount = GetEventDamage(),
|
|
2423
|
+
originalMetadata = metadata
|
|
2379
2424
|
}
|
|
2380
2425
|
if data.isAttack and source then
|
|
2381
2426
|
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
|
|
@@ -2389,18 +2434,22 @@ Unit.onDamaging = (function()
|
|
|
2389
2434
|
invoke(
|
|
2390
2435
|
event,
|
|
2391
2436
|
source,
|
|
2392
|
-
|
|
2437
|
+
target,
|
|
2393
2438
|
setmetatable(
|
|
2394
2439
|
{},
|
|
2395
2440
|
{
|
|
2396
2441
|
__index = data,
|
|
2397
2442
|
__newindex = function(self, key, value)
|
|
2398
|
-
damageSetters[key]
|
|
2443
|
+
local damageSetter = damageSetters[key]
|
|
2444
|
+
if damageSetter ~= nil then
|
|
2445
|
+
damageSetter(value)
|
|
2446
|
+
end
|
|
2399
2447
|
data[key] = value
|
|
2400
2448
|
end
|
|
2401
2449
|
}
|
|
2402
2450
|
)
|
|
2403
2451
|
)
|
|
2452
|
+
damagingEventByTarget[target] = data
|
|
2404
2453
|
return
|
|
2405
2454
|
end
|
|
2406
2455
|
BlzSetEventDamage(0)
|
|
@@ -2408,7 +2457,7 @@ Unit.onDamaging = (function()
|
|
|
2408
2457
|
BlzSetEventDamageType(DAMAGE_TYPE_UNKNOWN)
|
|
2409
2458
|
BlzSetEventWeaponType(WEAPON_TYPE_WHOKNOWS)
|
|
2410
2459
|
local sourceOwner = source.owner.handle
|
|
2411
|
-
local targetOwner =
|
|
2460
|
+
local targetOwner = target.owner.handle
|
|
2412
2461
|
if not GetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE) then
|
|
2413
2462
|
SetPlayerAlliance(sourceOwner, targetOwner, ALLIANCE_PASSIVE, true)
|
|
2414
2463
|
Timer:run(function()
|
|
@@ -2424,23 +2473,19 @@ Unit.onDamaging = (function()
|
|
|
2424
2473
|
for ____, ____value in ipairs(source._attackHandlers) do
|
|
2425
2474
|
local condition = ____value[1]
|
|
2426
2475
|
local action = ____value[2]
|
|
2427
|
-
if condition(
|
|
2428
|
-
source,
|
|
2429
|
-
____exports.Unit:of(target),
|
|
2430
|
-
data
|
|
2431
|
-
) then
|
|
2476
|
+
if condition(source, target, data) then
|
|
2432
2477
|
action(
|
|
2433
2478
|
source,
|
|
2434
|
-
|
|
2479
|
+
target,
|
|
2435
2480
|
setmetatable(
|
|
2436
2481
|
{fire = function()
|
|
2437
2482
|
UnitDamageTarget(
|
|
2438
2483
|
source.handle,
|
|
2439
|
-
target,
|
|
2484
|
+
target.handle,
|
|
2440
2485
|
data.amount,
|
|
2441
2486
|
true,
|
|
2442
2487
|
true,
|
|
2443
|
-
data.attackType,
|
|
2488
|
+
attackTypeToNative(data.attackType),
|
|
2444
2489
|
data.damageType,
|
|
2445
2490
|
data.weaponType
|
|
2446
2491
|
)
|
|
@@ -2467,13 +2512,18 @@ Unit.onDamage = __TS__New(
|
|
|
2467
2512
|
if source and source.typeId == dummyUnitId then
|
|
2468
2513
|
source = nil
|
|
2469
2514
|
end
|
|
2515
|
+
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2516
|
+
local damagingEvent = damagingEventByTarget[target]
|
|
2517
|
+
damagingEventByTarget[target] = nil
|
|
2470
2518
|
local data = {
|
|
2471
2519
|
amount = GetEventDamage(),
|
|
2472
|
-
attackType = BlzGetEventAttackType(),
|
|
2520
|
+
attackType = nativeToAttackType(BlzGetEventAttackType()),
|
|
2473
2521
|
damageType = BlzGetEventDamageType(),
|
|
2474
2522
|
weaponType = BlzGetEventWeaponType(),
|
|
2523
|
+
metadata = damagingEvent and damagingEvent.metadata,
|
|
2475
2524
|
isAttack = BlzGetEventIsAttack(),
|
|
2476
|
-
originalAmount = GetEventDamage(),
|
|
2525
|
+
originalAmount = damagingEvent and damagingEvent.originalAmount or GetEventDamage(),
|
|
2526
|
+
originalMetadata = damagingEvent and damagingEvent.originalMetadata,
|
|
2477
2527
|
preventDeath = damageEventPreventDeath
|
|
2478
2528
|
}
|
|
2479
2529
|
local evData = setmetatable(
|
|
@@ -2486,7 +2536,6 @@ Unit.onDamage = __TS__New(
|
|
|
2486
2536
|
end
|
|
2487
2537
|
}
|
|
2488
2538
|
)
|
|
2489
|
-
local target = ____exports.Unit:of(BlzGetEventDamageTarget())
|
|
2490
2539
|
invoke(event, source, target, evData)
|
|
2491
2540
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2492
2541
|
local bonusHealth = math.ceil(evData.amount)
|
|
@@ -2,13 +2,18 @@
|
|
|
2
2
|
import { ModelNodeName } from "./model-node-name";
|
|
3
3
|
import { ModelNodeQualifier } from "./model-node-qualifier";
|
|
4
4
|
import { Optional } from "../../../utility/types";
|
|
5
|
+
import { EffectParameters } from "../../../core/types/effect";
|
|
5
6
|
export type AttachmentPreset = {
|
|
6
7
|
modelPath: string;
|
|
7
8
|
nodeName: ModelNodeName;
|
|
8
9
|
nodeQualifiers: ModelNodeQualifier[];
|
|
9
10
|
};
|
|
10
|
-
export type
|
|
11
|
-
|
|
11
|
+
export type EffectPresetWithParameters = AttachmentPreset & {
|
|
12
|
+
parameters?: EffectParameters;
|
|
13
|
+
};
|
|
14
|
+
export type AttachmentPresetInput<T extends AttachmentPreset = AttachmentPreset> = Optional<T, "nodeName" | "nodeQualifiers"> | string;
|
|
15
|
+
export type EffectPresetWithParametersInput = AttachmentPresetInput<EffectPresetWithParameters>;
|
|
16
|
+
export declare const toEffectPreset: (effectPresetInput: EffectPresetWithParametersInput) => EffectPresetWithParameters;
|
|
12
17
|
export declare const extractAttachmentPresetInputModelPath: (attachmentPresetInput: AttachmentPresetInput | undefined) => string;
|
|
13
18
|
export declare const extractAttachmentPresetInputNodeFQN: (attachmentPresetInput: AttachmentPresetInput | undefined) => string;
|
|
14
19
|
export declare const splitAttachmentNodeFQN: (attachmentNodeFQN: string) => LuaMultiReturn<[attachmentNodeName: ModelNodeName, attachmentNodeQualifiers: ModelNodeQualifier[]]>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ArrayJoin = ____lualib.__TS__ArrayJoin
|
|
2
3
|
local __TS__StringSplit = ____lualib.__TS__StringSplit
|
|
3
4
|
local __TS__ArraySlice = ____lualib.__TS__ArraySlice
|
|
4
5
|
local ____exports = {}
|
|
5
|
-
____exports.
|
|
6
|
-
return type(
|
|
6
|
+
____exports.toEffectPreset = function(effectPresetInput)
|
|
7
|
+
return type(effectPresetInput) == "string" and ({modelPath = effectPresetInput, nodeName = "origin", nodeQualifiers = {}}) or ({modelPath = effectPresetInput.modelPath, nodeName = effectPresetInput.nodeName or "origin", nodeQualifiers = effectPresetInput.nodeQualifiers or ({}), parameters = effectPresetInput.parameters})
|
|
7
8
|
end
|
|
8
9
|
____exports.extractAttachmentPresetInputModelPath = function(attachmentPresetInput)
|
|
9
10
|
return type(attachmentPresetInput) == "string" and attachmentPresetInput or (attachmentPresetInput and attachmentPresetInput.modelPath or "")
|
|
@@ -12,7 +13,7 @@ ____exports.extractAttachmentPresetInputNodeFQN = function(attachmentPresetInput
|
|
|
12
13
|
if type(attachmentPresetInput) == "string" or attachmentPresetInput == nil then
|
|
13
14
|
return ""
|
|
14
15
|
end
|
|
15
|
-
return
|
|
16
|
+
return __TS__ArrayJoin(
|
|
16
17
|
{
|
|
17
18
|
attachmentPresetInput.nodeName,
|
|
18
19
|
table.unpack(attachmentPresetInput.nodeQualifiers or ({}))
|
|
@@ -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,10 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
export declare const enum SoundEax {
|
|
3
|
+
DEFAULT = "DefaultEAXON",
|
|
4
|
+
ACKNOWLEDGEMENTS = "HeroAcksEAX",
|
|
5
|
+
ENVIRONMENT = "DoodadsEAX",
|
|
6
|
+
DRUMS = "KotoDrumsEAX",
|
|
7
|
+
ATTACKS = "CombatSoundsEAX",
|
|
8
|
+
ABILITIES = "SpellsEAX",
|
|
9
|
+
MISSILES = "MissilesEAX"
|
|
10
|
+
}
|
|
@@ -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
|