warscript 0.0.1-dev.ea69747 → 0.0.1-dev.eb92d79
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 +12 -0
- package/attributes.lua +16 -0
- package/binaryreader.d.ts +1 -0
- package/binaryreader.lua +3 -0
- package/core/types/frame.d.ts +4 -1
- package/core/types/frame.lua +22 -1
- package/core/types/group.d.ts +0 -1
- package/core/types/handle.d.ts +2 -1
- package/core/types/handle.lua +5 -0
- package/core/types/image.d.ts +0 -1
- package/core/types/missile.d.ts +2 -2
- package/core/types/missile.lua +8 -2
- package/core/types/unit.lua +8 -0
- package/core/util.d.ts +1 -1
- package/core/util.lua +6 -0
- package/decl/index.d.ts +1 -0
- package/engine/ability.d.ts +1 -1
- package/engine/behavior.d.ts +10 -10
- package/engine/behaviour/ability/apply-buff.d.ts +3 -5
- package/engine/behaviour/ability/apply-unit-behavior.d.ts +13 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +31 -9
- package/engine/behaviour/ability/damage.d.ts +33 -11
- package/engine/behaviour/ability/damage.lua +89 -31
- package/engine/behaviour/ability/heal.d.ts +33 -6
- package/engine/behaviour/ability/heal.lua +89 -10
- package/engine/behaviour/ability/instant-impact.lua +4 -0
- package/engine/behaviour/ability/restore-mana.d.ts +15 -0
- package/engine/behaviour/ability/restore-mana.lua +29 -0
- package/engine/behaviour/ability.d.ts +8 -1
- package/engine/behaviour/ability.lua +62 -0
- package/engine/behaviour/unit/stun-immunity.d.ts +0 -1
- package/engine/behaviour/unit.d.ts +8 -2
- package/engine/behaviour/unit.lua +27 -0
- package/engine/buff.d.ts +62 -20
- package/engine/buff.lua +247 -72
- package/engine/game-map.d.ts +7 -0
- package/engine/game-map.lua +32 -0
- package/engine/internal/ability.d.ts +2 -12
- package/engine/internal/ability.lua +2 -78
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/mechanics/ability-duration.d.ts +1 -3
- package/engine/internal/mechanics/ability-duration.lua +2 -0
- package/engine/internal/mechanics/cast-ability.d.ts +2 -0
- package/engine/internal/mechanics/cast-ability.lua +86 -0
- package/engine/internal/unit/bonus.d.ts +9 -8
- package/engine/internal/unit/bonus.lua +6 -1
- package/engine/internal/unit/detach-missiles.d.ts +7 -0
- package/engine/internal/unit/detach-missiles.lua +30 -0
- package/engine/internal/unit/item.d.ts +23 -0
- package/engine/internal/unit/item.lua +74 -0
- package/engine/internal/unit+ability.lua +2 -2
- package/engine/internal/unit+transport.lua +4 -10
- package/engine/internal/unit-missile-launch.lua +25 -6
- package/engine/internal/unit.d.ts +42 -13
- package/engine/internal/unit.lua +259 -93
- package/engine/object-data/auxiliary/attachment-preset.d.ts +0 -1
- package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blank-passive.d.ts +0 -1
- package/engine/object-data/entry/ability-type/blink.d.ts +10 -0
- package/engine/object-data/entry/ability-type/blink.lua +39 -0
- package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
- package/engine/object-data/entry/ability-type/mine.lua +39 -0
- package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
- package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
- package/engine/object-data/entry/ability-type.d.ts +1 -1
- package/engine/object-data/entry/ability-type.lua +1 -0
- package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
- package/engine/object-data/entry/buff-type/applicable.lua +27 -71
- package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
- package/engine/object-data/entry/buff-type.d.ts +0 -1
- package/engine/object-data/entry/destructible-type.d.ts +0 -1
- package/engine/object-data/entry/item-type/blank.d.ts +0 -1
- package/engine/object-data/entry/item-type.d.ts +12 -1
- package/engine/object-data/entry/item-type.lua +78 -0
- package/engine/object-data/entry/lightning-type.d.ts +0 -1
- package/engine/object-data/entry/unit-type.d.ts +42 -2
- package/engine/object-data/entry/unit-type.lua +378 -50
- package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
- package/engine/object-data/entry/upgrade.d.ts +0 -1
- package/engine/object-data/entry.d.ts +2 -3
- package/engine/object-field/ability.d.ts +25 -6
- package/engine/object-field/ability.lua +57 -1
- package/engine/object-field/unit.d.ts +1 -0
- package/engine/object-field/unit.lua +3 -0
- package/engine/object-field.d.ts +6 -4
- package/engine/object-field.lua +38 -12
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +9 -0
- package/engine/standard/entries/unit-type.d.ts +42 -1
- package/engine/standard/entries/unit-type.lua +42 -1
- package/engine/standard/fields/ability.d.ts +1 -1
- package/engine/standard/fields/ability.lua +1 -1
- package/engine/unit.d.ts +2 -0
- package/engine/unit.lua +11 -2
- package/event.d.ts +2 -3
- package/event.lua +9 -5
- package/exception.d.ts +2 -0
- package/exception.lua +4 -0
- package/global/vec2.lua +1 -0
- package/lualib_bundle.lua +146 -42
- package/math/vec2.d.ts +2 -9
- package/math.d.ts +0 -2
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/ability.d.ts +0 -1
- package/objutil/buff.d.ts +0 -1
- package/objutil/buff.lua +1 -1
- package/objutil/object.d.ts +0 -1
- package/objutil/unit.d.ts +0 -1
- package/package.json +13 -14
- package/property.d.ts +55 -0
- package/property.lua +374 -0
- package/string.d.ts +30 -0
- package/string.lua +14 -0
- package/util/stream.d.ts +0 -1
- package/utility/arrays.d.ts +4 -5
- package/utility/arrays.lua +4 -1
- package/utility/bit-set.d.ts +0 -2
- package/utility/linked-set.d.ts +31 -9
- package/utility/linked-set.lua +21 -2
- package/utility/lua-maps.d.ts +1 -2
- package/utility/lua-sets.d.ts +1 -2
- package/utility/types.d.ts +3 -2
- package/core/mapbounds.d.ts +0 -8
- package/core/mapbounds.lua +0 -12
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="@typescript-to-lua/language-extensions" />
|
|
2
1
|
/** @noSelfInFile */
|
|
3
2
|
import { Handle, HandleDestructor } from "../../core/types/handle";
|
|
4
3
|
import { Player } from "../../core/types/player";
|
|
@@ -43,6 +42,7 @@ export interface DamagingEvent {
|
|
|
43
42
|
damageType: jdamagetype;
|
|
44
43
|
weaponType: jweapontype;
|
|
45
44
|
readonly isAttack: boolean;
|
|
45
|
+
readonly originalAmount: number;
|
|
46
46
|
}
|
|
47
47
|
export type DamageEvent = DamagingEvent & {
|
|
48
48
|
preventDeath<P extends any[]>(this: DamageEvent, callback: (this: void, ...parameters: P) => any, ...parameters: P): void;
|
|
@@ -68,23 +68,44 @@ declare const modifiers: {
|
|
|
68
68
|
speed: (unit: junit, value: number) => void;
|
|
69
69
|
armor: (unit: junit, value: number) => void;
|
|
70
70
|
};
|
|
71
|
-
|
|
71
|
+
export declare class UnitWeapon {
|
|
72
|
+
readonly unit: Unit;
|
|
72
73
|
readonly index: 0 | 1;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
constructor(unit: Unit, index: 0 | 1);
|
|
75
|
+
get cooldown(): number;
|
|
76
|
+
set cooldown(cooldown: number);
|
|
77
|
+
get damage(): [minimumDamage: number, maximumDamage: number];
|
|
78
|
+
set damage([minimumDamage, maximumDamage]: [number, number]);
|
|
79
|
+
get damageBase(): number;
|
|
80
|
+
set damageBase(damageBase: number);
|
|
81
|
+
get damageDiceCount(): number;
|
|
82
|
+
set damageDiceCount(damageDiceCount: number);
|
|
83
|
+
get damageDiceSideCount(): number;
|
|
84
|
+
set damageDiceSideCount(damageDiceSideCount: number);
|
|
85
|
+
get range(): number;
|
|
86
|
+
set range(range: number);
|
|
87
|
+
get impactDelay(): number;
|
|
88
|
+
set impactDelay(impactDelay: number);
|
|
89
|
+
get missileArc(): number;
|
|
90
|
+
set missileArc(missileArc: number);
|
|
91
|
+
get missileModelPath(): string;
|
|
92
|
+
set missileModelPath(missileModelPath: string);
|
|
93
|
+
get missileSpeed(): number;
|
|
94
|
+
set missileSpeed(missileSpeed: number);
|
|
78
95
|
}
|
|
79
96
|
declare const enum UnitPropertyKey {
|
|
80
97
|
IS_PAUSED = 100,
|
|
81
98
|
STUN_COUNTER = 101,
|
|
82
|
-
|
|
83
|
-
|
|
99
|
+
DELAY_HEALTH_CHECKS_COUNTER = 102,
|
|
100
|
+
DELAY_HEALTH_CHECKS_HEALTH_BONUS = 103,
|
|
101
|
+
PREVENT_DEATH_HEALTH_BONUS = 104,
|
|
102
|
+
IS_TEAM_GLOW_HIDDEN = 105
|
|
84
103
|
}
|
|
85
104
|
export declare class Unit extends Handle<junit> {
|
|
86
105
|
private [UnitPropertyKey.IS_PAUSED]?;
|
|
87
106
|
private [UnitPropertyKey.STUN_COUNTER]?;
|
|
107
|
+
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_COUNTER]?;
|
|
108
|
+
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_HEALTH_BONUS]?;
|
|
88
109
|
private [UnitPropertyKey.PREVENT_DEATH_HEALTH_BONUS]?;
|
|
89
110
|
private [UnitPropertyKey.IS_TEAM_GLOW_HIDDEN]?;
|
|
90
111
|
private _owner?;
|
|
@@ -123,6 +144,8 @@ export declare class Unit extends Handle<junit> {
|
|
|
123
144
|
playAnimation(animation: number): void;
|
|
124
145
|
queueAnimation(animation: string): void;
|
|
125
146
|
get weapons(): [UnitWeapon, UnitWeapon];
|
|
147
|
+
get firstWeapon(): UnitWeapon;
|
|
148
|
+
get secondWeapon(): UnitWeapon;
|
|
126
149
|
get level(): number;
|
|
127
150
|
set level(v: number);
|
|
128
151
|
get xp(): number;
|
|
@@ -148,6 +171,10 @@ export declare class Unit extends Handle<junit> {
|
|
|
148
171
|
set color(color: PlayerColor);
|
|
149
172
|
get acquisitionRange(): number;
|
|
150
173
|
set acquisitionRange(v: number);
|
|
174
|
+
/**
|
|
175
|
+
* Keeps this unit alive even if its health becomes negative until the current game thread yields.
|
|
176
|
+
*/
|
|
177
|
+
delayHealthChecks(): void;
|
|
151
178
|
get maxHealth(): number;
|
|
152
179
|
set maxHealth(maxHealth: number);
|
|
153
180
|
get healthRegenerationRate(): number;
|
|
@@ -201,7 +228,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
201
228
|
isSelected(player: Player): boolean;
|
|
202
229
|
explode(): void;
|
|
203
230
|
kill(): void;
|
|
204
|
-
revive(
|
|
231
|
+
revive(x: number, y: number, doEffect?: boolean): void;
|
|
205
232
|
healTarget(target: Widget, amount: number): void;
|
|
206
233
|
useItem(item: Item): boolean;
|
|
207
234
|
issueImmediateOrder(order: number): boolean;
|
|
@@ -222,6 +249,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
222
249
|
getAbilityById(abilityId: number): UnitAbility | undefined;
|
|
223
250
|
removeAbility(abilityId: number): boolean;
|
|
224
251
|
hideAbility(abilityId: number, flag: boolean): void;
|
|
252
|
+
getAbilityRemainingCooldown(abilityId: number): number;
|
|
225
253
|
startAbilityCooldown(abilityId: number, cooldown: number): void;
|
|
226
254
|
endAbilityCooldown(abilityId: number): void;
|
|
227
255
|
interruptAttack(): void;
|
|
@@ -295,9 +323,10 @@ export declare class Unit extends Handle<junit> {
|
|
|
295
323
|
static readonly autoAttackStartEvent: UnitTriggerEvent<[Unit]>;
|
|
296
324
|
static readonly onDamaging: Event<[source: Unit | undefined, target: Unit, event: DamagingEvent]>;
|
|
297
325
|
static readonly onDamage: InitializingEvent<[source: Unit | undefined, target: Unit, event: DamageEvent], jtrigger>;
|
|
298
|
-
static
|
|
299
|
-
static
|
|
300
|
-
static
|
|
326
|
+
static itemDroppedEvent: UnitTriggerEvent<[Item]>;
|
|
327
|
+
static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
|
|
328
|
+
static itemUsedEvent: UnitTriggerEvent<[Item]>;
|
|
329
|
+
static itemStackedEvent: UnitTriggerEvent<[Item]>;
|
|
301
330
|
static get onCreate(): EventDispatcher<[Unit], [Unit]>;
|
|
302
331
|
static get destroyEvent(): EventDispatcher<[Unit], [Unit]>;
|
|
303
332
|
getField(field: junitintegerfield | junitrealfield): number;
|
package/engine/internal/unit.lua
CHANGED
|
@@ -5,9 +5,12 @@ local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
|
5
5
|
local __TS__New = ____lualib.__TS__New
|
|
6
6
|
local __TS__Class = ____lualib.__TS__Class
|
|
7
7
|
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
8
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
8
9
|
local __TS__ArraySetLength = ____lualib.__TS__ArraySetLength
|
|
10
|
+
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
11
|
+
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
12
|
+
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
9
13
|
local __TS__InstanceOf = ____lualib.__TS__InstanceOf
|
|
10
|
-
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
11
14
|
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
12
15
|
local Set = ____lualib.Set
|
|
13
16
|
local __TS__Spread = ____lualib.__TS__Spread
|
|
@@ -92,6 +95,10 @@ local isUnitInRangeXY = IsUnitInRangeXY
|
|
|
92
95
|
local isUnitInRange = IsUnitInRange
|
|
93
96
|
local setResourceAmount = SetResourceAmount
|
|
94
97
|
local getResourceAmount = GetResourceAmount
|
|
98
|
+
local getUnitWeaponRealField = BlzGetUnitWeaponRealField
|
|
99
|
+
local setUnitWeaponRealField = BlzSetUnitWeaponRealField
|
|
100
|
+
local getUnitWeaponStringField = BlzGetUnitWeaponStringField
|
|
101
|
+
local setUnitWeaponStringField = BlzSetUnitWeaponStringField
|
|
95
102
|
local getUnitAbilityLevel = GetUnitAbilityLevel
|
|
96
103
|
local unitDisableAbility = BlzUnitDisableAbility
|
|
97
104
|
local unitInterruptAttack = BlzUnitInterruptAttack
|
|
@@ -275,16 +282,14 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
|
|
|
275
282
|
end
|
|
276
283
|
local function dispatch(event, idGetter, argsGetter)
|
|
277
284
|
local initialized = false
|
|
278
|
-
local x = {}
|
|
279
285
|
return setmetatable(
|
|
280
|
-
|
|
286
|
+
{},
|
|
281
287
|
{
|
|
282
288
|
__index = function(self, id)
|
|
283
289
|
if type(id) ~= "number" then
|
|
284
290
|
return event[id]
|
|
285
291
|
end
|
|
286
292
|
if not initialized then
|
|
287
|
-
local invoke = Event.invoke
|
|
288
293
|
event:addListener(function(...)
|
|
289
294
|
local id = idGetter(...)
|
|
290
295
|
local dispatched = rawget(self, id)
|
|
@@ -322,7 +327,6 @@ local function dispatchAbility(event)
|
|
|
322
327
|
return event[id]
|
|
323
328
|
end
|
|
324
329
|
if not initialized then
|
|
325
|
-
local invoke = Event.invoke
|
|
326
330
|
event:addListener(function(unit, ability, ...)
|
|
327
331
|
local dispatched = rawget(self, ability.typeId)
|
|
328
332
|
if dispatched ~= nil then
|
|
@@ -387,51 +391,158 @@ local getters = {
|
|
|
387
391
|
return BlzGetUnitArmor(unit)
|
|
388
392
|
end
|
|
389
393
|
}
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
394
|
+
____exports.UnitWeapon = __TS__Class()
|
|
395
|
+
local UnitWeapon = ____exports.UnitWeapon
|
|
396
|
+
UnitWeapon.name = "UnitWeapon"
|
|
397
|
+
function UnitWeapon.prototype.____constructor(self, unit, index)
|
|
398
|
+
self.unit = unit
|
|
399
|
+
self.index = index
|
|
400
|
+
end
|
|
401
|
+
__TS__SetDescriptor(
|
|
402
|
+
UnitWeapon.prototype,
|
|
403
|
+
"cooldown",
|
|
404
|
+
{
|
|
405
|
+
get = function(self)
|
|
406
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index)
|
|
407
|
+
end,
|
|
408
|
+
set = function(self, cooldown)
|
|
409
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_BASE_COOLDOWN, self.index, cooldown)
|
|
410
|
+
end
|
|
411
|
+
},
|
|
412
|
+
true
|
|
413
|
+
)
|
|
414
|
+
__TS__SetDescriptor(
|
|
415
|
+
UnitWeapon.prototype,
|
|
416
|
+
"damage",
|
|
417
|
+
{
|
|
418
|
+
get = function(self)
|
|
419
|
+
local minimumDamage = self.damageBase + self.damageDiceCount
|
|
420
|
+
local maximumDamage = self.damageBase + self.damageDiceCount * self.damageDiceSideCount
|
|
421
|
+
return {minimumDamage, maximumDamage}
|
|
422
|
+
end,
|
|
423
|
+
set = function(self, ____bindingPattern0)
|
|
424
|
+
local maximumDamage
|
|
425
|
+
local minimumDamage
|
|
426
|
+
minimumDamage = ____bindingPattern0[1]
|
|
427
|
+
maximumDamage = ____bindingPattern0[2]
|
|
428
|
+
self.damageBase = minimumDamage - 1
|
|
429
|
+
self.damageDiceCount = 1
|
|
430
|
+
self.damageDiceSideCount = maximumDamage - minimumDamage + 1
|
|
431
|
+
end
|
|
432
|
+
},
|
|
433
|
+
true
|
|
434
|
+
)
|
|
435
|
+
__TS__SetDescriptor(
|
|
436
|
+
UnitWeapon.prototype,
|
|
437
|
+
"damageBase",
|
|
438
|
+
{
|
|
439
|
+
get = function(self)
|
|
440
|
+
return BlzGetUnitBaseDamage(self.unit.handle, self.index)
|
|
441
|
+
end,
|
|
442
|
+
set = function(self, damageBase)
|
|
443
|
+
BlzSetUnitBaseDamage(self.unit.handle, self.index, damageBase)
|
|
444
|
+
end
|
|
445
|
+
},
|
|
446
|
+
true
|
|
447
|
+
)
|
|
448
|
+
__TS__SetDescriptor(
|
|
449
|
+
UnitWeapon.prototype,
|
|
450
|
+
"damageDiceCount",
|
|
451
|
+
{
|
|
452
|
+
get = function(self)
|
|
453
|
+
return BlzGetUnitDiceNumber(self.unit.handle, self.index)
|
|
454
|
+
end,
|
|
455
|
+
set = function(self, damageDiceCount)
|
|
456
|
+
BlzSetUnitDiceNumber(self.unit.handle, self.index, damageDiceCount)
|
|
457
|
+
end
|
|
458
|
+
},
|
|
459
|
+
true
|
|
460
|
+
)
|
|
461
|
+
__TS__SetDescriptor(
|
|
462
|
+
UnitWeapon.prototype,
|
|
463
|
+
"damageDiceSideCount",
|
|
464
|
+
{
|
|
465
|
+
get = function(self)
|
|
466
|
+
return BlzGetUnitDiceSides(self.unit.handle, self.index)
|
|
467
|
+
end,
|
|
468
|
+
set = function(self, damageDiceSideCount)
|
|
469
|
+
BlzSetUnitDiceSides(self.unit.handle, self.index, damageDiceSideCount)
|
|
470
|
+
end
|
|
471
|
+
},
|
|
472
|
+
true
|
|
473
|
+
)
|
|
474
|
+
__TS__SetDescriptor(
|
|
475
|
+
UnitWeapon.prototype,
|
|
476
|
+
"range",
|
|
477
|
+
{
|
|
478
|
+
get = function(self)
|
|
479
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_RANGE, self.index)
|
|
480
|
+
end,
|
|
481
|
+
set = function(self, range)
|
|
482
|
+
local handle = self.unit.handle
|
|
483
|
+
local index = self.index
|
|
484
|
+
setUnitWeaponRealField(
|
|
485
|
+
handle,
|
|
486
|
+
UNIT_WEAPON_RF_ATTACK_RANGE,
|
|
487
|
+
index + 1,
|
|
488
|
+
getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index + 1) + (range - getUnitWeaponRealField(handle, UNIT_WEAPON_RF_ATTACK_RANGE, index))
|
|
489
|
+
)
|
|
490
|
+
end
|
|
491
|
+
},
|
|
492
|
+
true
|
|
493
|
+
)
|
|
494
|
+
__TS__SetDescriptor(
|
|
495
|
+
UnitWeapon.prototype,
|
|
496
|
+
"impactDelay",
|
|
497
|
+
{
|
|
498
|
+
get = function(self)
|
|
499
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index)
|
|
500
|
+
end,
|
|
501
|
+
set = function(self, impactDelay)
|
|
502
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_DAMAGE_POINT, self.index, impactDelay)
|
|
503
|
+
end
|
|
504
|
+
},
|
|
505
|
+
true
|
|
506
|
+
)
|
|
507
|
+
__TS__SetDescriptor(
|
|
508
|
+
UnitWeapon.prototype,
|
|
509
|
+
"missileArc",
|
|
510
|
+
{
|
|
511
|
+
get = function(self)
|
|
512
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index)
|
|
513
|
+
end,
|
|
514
|
+
set = function(self, missileArc)
|
|
515
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_ARC, self.index, missileArc)
|
|
516
|
+
end
|
|
517
|
+
},
|
|
518
|
+
true
|
|
519
|
+
)
|
|
520
|
+
__TS__SetDescriptor(
|
|
521
|
+
UnitWeapon.prototype,
|
|
522
|
+
"missileModelPath",
|
|
523
|
+
{
|
|
524
|
+
get = function(self)
|
|
525
|
+
return getUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index)
|
|
526
|
+
end,
|
|
527
|
+
set = function(self, missileModelPath)
|
|
528
|
+
setUnitWeaponStringField(self.unit.handle, UNIT_WEAPON_SF_ATTACK_PROJECTILE_ART, self.index, missileModelPath)
|
|
529
|
+
end
|
|
530
|
+
},
|
|
531
|
+
true
|
|
532
|
+
)
|
|
533
|
+
__TS__SetDescriptor(
|
|
534
|
+
UnitWeapon.prototype,
|
|
535
|
+
"missileSpeed",
|
|
536
|
+
{
|
|
537
|
+
get = function(self)
|
|
538
|
+
return getUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index)
|
|
539
|
+
end,
|
|
540
|
+
set = function(self, missileSpeed)
|
|
541
|
+
setUnitWeaponRealField(self.unit.handle, UNIT_WEAPON_RF_ATTACK_PROJECTILE_SPEED, self.index, missileSpeed)
|
|
542
|
+
end
|
|
543
|
+
},
|
|
544
|
+
true
|
|
545
|
+
)
|
|
435
546
|
local unitInventorySize = UnitInventorySize
|
|
436
547
|
local unitItemInSlot = UnitItemInSlot
|
|
437
548
|
local getItemAbility = BlzGetItemAbility
|
|
@@ -442,8 +553,6 @@ local getAbilityName = GetAbilityName
|
|
|
442
553
|
local unitAddAbility = UnitAddAbility
|
|
443
554
|
local getUnitGoldCost = GetUnitGoldCost
|
|
444
555
|
local getUnitLumberCost = GetUnitWoodCost
|
|
445
|
-
local unitMakeAbilityPermanent = UnitMakeAbilityPermanent
|
|
446
|
-
local unitAddItem = UnitAddItem
|
|
447
556
|
local unitRemoveAbility = UnitRemoveAbility
|
|
448
557
|
local function retrieveAbility(unit, ability, abilityId)
|
|
449
558
|
if ability == nil then
|
|
@@ -520,6 +629,23 @@ for ____, player in ipairs(Player.all) do
|
|
|
520
629
|
ShowUnit(dummy, false)
|
|
521
630
|
dummies[player] = dummy
|
|
522
631
|
end
|
|
632
|
+
local function delayHealthChecksCallback(unit)
|
|
633
|
+
local counter = (unit[102] or 0) - 1
|
|
634
|
+
if counter ~= 0 then
|
|
635
|
+
unit[102] = counter
|
|
636
|
+
return
|
|
637
|
+
end
|
|
638
|
+
unit[102] = nil
|
|
639
|
+
local healthBonus = unit[103]
|
|
640
|
+
if healthBonus ~= nil then
|
|
641
|
+
unit[103] = nil
|
|
642
|
+
local handle = unit.handle
|
|
643
|
+
BlzSetUnitMaxHP(
|
|
644
|
+
handle,
|
|
645
|
+
BlzGetUnitMaxHP(handle) - healthBonus
|
|
646
|
+
)
|
|
647
|
+
end
|
|
648
|
+
end
|
|
523
649
|
____exports.Unit = __TS__Class()
|
|
524
650
|
local Unit = ____exports.Unit
|
|
525
651
|
Unit.name = "Unit"
|
|
@@ -674,6 +800,10 @@ end
|
|
|
674
800
|
function Unit.prototype.queueAnimation(self, animation)
|
|
675
801
|
queueUnitAnimation(self.handle, animation)
|
|
676
802
|
end
|
|
803
|
+
function Unit.prototype.delayHealthChecks(self)
|
|
804
|
+
self[102] = (self[102] or 0) + 1
|
|
805
|
+
Timer:run(delayHealthChecksCallback, self)
|
|
806
|
+
end
|
|
677
807
|
function Unit.prototype.setPosition(self, x, y)
|
|
678
808
|
setUnitPosition(self.handle, x, y)
|
|
679
809
|
end
|
|
@@ -687,8 +817,15 @@ end
|
|
|
687
817
|
function Unit.prototype.kill(self)
|
|
688
818
|
killUnit(self.handle)
|
|
689
819
|
end
|
|
690
|
-
function Unit.prototype.revive(self,
|
|
691
|
-
|
|
820
|
+
function Unit.prototype.revive(self, x, y, doEffect)
|
|
821
|
+
local ____ReviveHero_4 = ReviveHero
|
|
822
|
+
local ____array_3 = __TS__SparseArrayNew(self.handle, x, y)
|
|
823
|
+
local ____doEffect_2 = doEffect
|
|
824
|
+
if ____doEffect_2 == nil then
|
|
825
|
+
____doEffect_2 = false
|
|
826
|
+
end
|
|
827
|
+
__TS__SparseArrayPush(____array_3, ____doEffect_2)
|
|
828
|
+
____ReviveHero_4(__TS__SparseArraySpread(____array_3))
|
|
692
829
|
end
|
|
693
830
|
function Unit.prototype.healTarget(self, target, amount)
|
|
694
831
|
if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
|
|
@@ -728,7 +865,7 @@ function Unit.prototype.dropItemSlot(self, item, slot)
|
|
|
728
865
|
return UnitDropItemSlot(self.handle, item.handle, slot)
|
|
729
866
|
end
|
|
730
867
|
function Unit.prototype.itemInSlot(self, slot)
|
|
731
|
-
return Item:of(
|
|
868
|
+
return Item:of(unitItemInSlot(self.handle, slot))
|
|
732
869
|
end
|
|
733
870
|
function Unit.prototype.addAbility(self, abilityId)
|
|
734
871
|
if unitAddAbility(self.handle, abilityId) then
|
|
@@ -784,6 +921,9 @@ end
|
|
|
784
921
|
function Unit.prototype.hideAbility(self, abilityId, flag)
|
|
785
922
|
BlzUnitHideAbility(self.handle, abilityId, flag)
|
|
786
923
|
end
|
|
924
|
+
function Unit.prototype.getAbilityRemainingCooldown(self, abilityId)
|
|
925
|
+
return BlzGetUnitAbilityCooldownRemaining(self.handle, abilityId)
|
|
926
|
+
end
|
|
787
927
|
function Unit.prototype.startAbilityCooldown(self, abilityId, cooldown)
|
|
788
928
|
BlzStartUnitAbilityCooldown(self.handle, abilityId, cooldown)
|
|
789
929
|
end
|
|
@@ -1071,12 +1211,27 @@ __TS__SetDescriptor(
|
|
|
1071
1211
|
Unit.prototype,
|
|
1072
1212
|
"weapons",
|
|
1073
1213
|
{get = function(self)
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1214
|
+
return {self.firstWeapon, self.secondWeapon}
|
|
1215
|
+
end},
|
|
1216
|
+
true
|
|
1217
|
+
)
|
|
1218
|
+
__TS__SetDescriptor(
|
|
1219
|
+
Unit.prototype,
|
|
1220
|
+
"firstWeapon",
|
|
1221
|
+
{get = function(self)
|
|
1222
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 0)
|
|
1223
|
+
rawset(self, "firstWeapon", weapon)
|
|
1224
|
+
return weapon
|
|
1225
|
+
end},
|
|
1226
|
+
true
|
|
1227
|
+
)
|
|
1228
|
+
__TS__SetDescriptor(
|
|
1229
|
+
Unit.prototype,
|
|
1230
|
+
"secondWeapon",
|
|
1231
|
+
{get = function(self)
|
|
1232
|
+
local weapon = __TS__New(____exports.UnitWeapon, self, 1)
|
|
1233
|
+
rawset(self, "secondWeapon", weapon)
|
|
1234
|
+
return weapon
|
|
1080
1235
|
end},
|
|
1081
1236
|
true
|
|
1082
1237
|
)
|
|
@@ -1233,17 +1388,17 @@ __TS__SetDescriptor(
|
|
|
1233
1388
|
"isTeamGlowVisible",
|
|
1234
1389
|
{
|
|
1235
1390
|
get = function(self)
|
|
1236
|
-
return not self[
|
|
1391
|
+
return not self[105]
|
|
1237
1392
|
end,
|
|
1238
1393
|
set = function(self, isTeamGlowVisible)
|
|
1239
1394
|
showUnitTeamGlow(self.handle, isTeamGlowVisible)
|
|
1240
|
-
local
|
|
1395
|
+
local ____temp_5
|
|
1241
1396
|
if not isTeamGlowVisible then
|
|
1242
|
-
|
|
1397
|
+
____temp_5 = true
|
|
1243
1398
|
else
|
|
1244
|
-
|
|
1399
|
+
____temp_5 = nil
|
|
1245
1400
|
end
|
|
1246
|
-
self[
|
|
1401
|
+
self[105] = ____temp_5
|
|
1247
1402
|
end
|
|
1248
1403
|
},
|
|
1249
1404
|
true
|
|
@@ -1253,7 +1408,7 @@ __TS__SetDescriptor(
|
|
|
1253
1408
|
"color",
|
|
1254
1409
|
{set = function(self, color)
|
|
1255
1410
|
setUnitColor(self.handle, color.handle)
|
|
1256
|
-
if self[
|
|
1411
|
+
if self[105] then
|
|
1257
1412
|
showUnitTeamGlow(self.handle, false)
|
|
1258
1413
|
end
|
|
1259
1414
|
end},
|
|
@@ -1277,10 +1432,14 @@ __TS__SetDescriptor(
|
|
|
1277
1432
|
"maxHealth",
|
|
1278
1433
|
{
|
|
1279
1434
|
get = function(self)
|
|
1280
|
-
return BlzGetUnitMaxHP(self.handle) - (self[
|
|
1435
|
+
return BlzGetUnitMaxHP(self.handle) - (self[103] or 0) - (self[104] or 0)
|
|
1281
1436
|
end,
|
|
1282
1437
|
set = function(self, maxHealth)
|
|
1283
|
-
|
|
1438
|
+
if maxHealth < 1 and self[102] ~= nil then
|
|
1439
|
+
self[103] = (self[103] or 0) + (1 - maxHealth)
|
|
1440
|
+
maxHealth = 1
|
|
1441
|
+
end
|
|
1442
|
+
BlzSetUnitMaxHP(self.handle, maxHealth + (self[104] or 0))
|
|
1284
1443
|
end
|
|
1285
1444
|
},
|
|
1286
1445
|
true
|
|
@@ -1322,10 +1481,10 @@ __TS__SetDescriptor(
|
|
|
1322
1481
|
"health",
|
|
1323
1482
|
{
|
|
1324
1483
|
get = function(self)
|
|
1325
|
-
return GetWidgetLife(self.handle) - (self[
|
|
1484
|
+
return GetWidgetLife(self.handle) - (self[104] or 0)
|
|
1326
1485
|
end,
|
|
1327
1486
|
set = function(self, health)
|
|
1328
|
-
SetWidgetLife(self.handle, health + (self[
|
|
1487
|
+
SetWidgetLife(self.handle, health + (self[104] or 0))
|
|
1329
1488
|
end
|
|
1330
1489
|
},
|
|
1331
1490
|
true
|
|
@@ -1903,7 +2062,6 @@ Unit.onDecay = __TS__New(
|
|
|
1903
2062
|
Unit.onResurrect = __TS__New(
|
|
1904
2063
|
InitializingEvent,
|
|
1905
2064
|
function(event)
|
|
1906
|
-
local invoke = Event.invoke
|
|
1907
2065
|
local dead = setmetatable({}, {__mode = "k"})
|
|
1908
2066
|
____exports.Unit.deathEvent:addListener(function(unit)
|
|
1909
2067
|
dead[unit] = true
|
|
@@ -1919,10 +2077,15 @@ Unit.onResurrect = __TS__New(
|
|
|
1919
2077
|
Unit.morphEvent = __TS__New(
|
|
1920
2078
|
InitializingEvent,
|
|
1921
2079
|
function(event)
|
|
2080
|
+
local function ifNotLeft(unit)
|
|
2081
|
+
local handle = unit.handle
|
|
2082
|
+
if getUnitAbilityLevel(handle, leaveDetectAbilityId) ~= 0 and unitAddAbility(handle, morphDetectAbilityId) then
|
|
2083
|
+
invoke(event, unit)
|
|
2084
|
+
end
|
|
2085
|
+
end
|
|
1922
2086
|
____exports.Unit.onImmediateOrder[orderId("undefend")]:addListener(function(unit)
|
|
1923
2087
|
if getUnitAbilityLevel(unit.handle, morphDetectAbilityId) == 0 then
|
|
1924
|
-
|
|
1925
|
-
Timer:run(Event.invoke, event, unit)
|
|
2088
|
+
Timer:run(ifNotLeft, unit)
|
|
1926
2089
|
end
|
|
1927
2090
|
end)
|
|
1928
2091
|
end
|
|
@@ -1960,27 +2123,26 @@ Unit.onSpellEffect = dispatchId(__TS__New(
|
|
|
1960
2123
|
Unit.onTargetCast = dispatchId(__TS__New(
|
|
1961
2124
|
InitializingEvent,
|
|
1962
2125
|
function(event)
|
|
1963
|
-
local invoke = Event.invoke
|
|
1964
2126
|
local function listener(unit, id)
|
|
1965
|
-
local
|
|
2127
|
+
local ____GetSpellTargetUnit_result_8
|
|
1966
2128
|
if GetSpellTargetUnit() then
|
|
1967
|
-
|
|
2129
|
+
____GetSpellTargetUnit_result_8 = ____exports.Unit:of(GetSpellTargetUnit())
|
|
1968
2130
|
else
|
|
1969
|
-
local
|
|
2131
|
+
local ____GetSpellTargetItem_result_7
|
|
1970
2132
|
if GetSpellTargetItem() then
|
|
1971
|
-
|
|
2133
|
+
____GetSpellTargetItem_result_7 = Item:of(GetSpellTargetItem())
|
|
1972
2134
|
else
|
|
1973
|
-
local
|
|
2135
|
+
local ____GetSpellTargetDestructable_result_6
|
|
1974
2136
|
if GetSpellTargetDestructable() then
|
|
1975
|
-
|
|
2137
|
+
____GetSpellTargetDestructable_result_6 = Destructable:of(GetSpellTargetDestructable())
|
|
1976
2138
|
else
|
|
1977
|
-
|
|
2139
|
+
____GetSpellTargetDestructable_result_6 = nil
|
|
1978
2140
|
end
|
|
1979
|
-
|
|
2141
|
+
____GetSpellTargetItem_result_7 = ____GetSpellTargetDestructable_result_6
|
|
1980
2142
|
end
|
|
1981
|
-
|
|
2143
|
+
____GetSpellTargetUnit_result_8 = ____GetSpellTargetItem_result_7
|
|
1982
2144
|
end
|
|
1983
|
-
local target =
|
|
2145
|
+
local target = ____GetSpellTargetUnit_result_8
|
|
1984
2146
|
if target then
|
|
1985
2147
|
invoke(event, unit, id, target)
|
|
1986
2148
|
end
|
|
@@ -2177,7 +2339,6 @@ Unit.autoAttackStartEvent = __TS__New(
|
|
|
2177
2339
|
)
|
|
2178
2340
|
Unit.onDamaging = (function()
|
|
2179
2341
|
local event = __TS__New(Event)
|
|
2180
|
-
local invoke = Event.invoke
|
|
2181
2342
|
local trigger = CreateTrigger()
|
|
2182
2343
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGING)
|
|
2183
2344
|
TriggerAddCondition(
|
|
@@ -2276,7 +2437,6 @@ end)()
|
|
|
2276
2437
|
Unit.onDamage = __TS__New(
|
|
2277
2438
|
InitializingEvent,
|
|
2278
2439
|
function(event)
|
|
2279
|
-
local invoke = Event.invoke
|
|
2280
2440
|
local trigger = CreateTrigger()
|
|
2281
2441
|
TriggerRegisterAnyUnitEventBJ(trigger, EVENT_PLAYER_UNIT_DAMAGED)
|
|
2282
2442
|
TriggerAddCondition(
|
|
@@ -2292,6 +2452,7 @@ Unit.onDamage = __TS__New(
|
|
|
2292
2452
|
damageType = BlzGetEventDamageType(),
|
|
2293
2453
|
weaponType = BlzGetEventWeaponType(),
|
|
2294
2454
|
isAttack = BlzGetEventIsAttack(),
|
|
2455
|
+
originalAmount = GetEventDamage(),
|
|
2295
2456
|
preventDeath = damageEventPreventDeath
|
|
2296
2457
|
}
|
|
2297
2458
|
local evData = setmetatable(
|
|
@@ -2308,7 +2469,7 @@ Unit.onDamage = __TS__New(
|
|
|
2308
2469
|
invoke(event, source, target, evData)
|
|
2309
2470
|
if evData[0] ~= nil and target.health - evData.amount < 0.405 then
|
|
2310
2471
|
local bonusHealth = math.ceil(evData.amount)
|
|
2311
|
-
target[
|
|
2472
|
+
target[104] = (target[104] or 0) + bonusHealth
|
|
2312
2473
|
BlzSetUnitMaxHP(
|
|
2313
2474
|
target.handle,
|
|
2314
2475
|
BlzGetUnitMaxHP(target.handle) + bonusHealth
|
|
@@ -2322,7 +2483,7 @@ Unit.onDamage = __TS__New(
|
|
|
2322
2483
|
evData[0],
|
|
2323
2484
|
table.unpack(evData, 1 + 1, 1 + (evData[1] or 0))
|
|
2324
2485
|
)
|
|
2325
|
-
target[
|
|
2486
|
+
target[104] = (target[104] or 0) - bonusHealth
|
|
2326
2487
|
SetWidgetLife(
|
|
2327
2488
|
target.handle,
|
|
2328
2489
|
GetWidgetLife(target.handle) - bonusHealth
|
|
@@ -2342,7 +2503,7 @@ Unit.onDamage = __TS__New(
|
|
|
2342
2503
|
DestroyTrigger(trigger)
|
|
2343
2504
|
end
|
|
2344
2505
|
)
|
|
2345
|
-
Unit.
|
|
2506
|
+
Unit.itemDroppedEvent = __TS__New(
|
|
2346
2507
|
____exports.UnitTriggerEvent,
|
|
2347
2508
|
EVENT_PLAYER_UNIT_DROP_ITEM,
|
|
2348
2509
|
function()
|
|
@@ -2353,7 +2514,7 @@ Unit.onItemDrop = __TS__New(
|
|
|
2353
2514
|
return IgnoreEvent
|
|
2354
2515
|
end
|
|
2355
2516
|
)
|
|
2356
|
-
Unit.
|
|
2517
|
+
Unit.itemPickedUpEvent = __TS__New(
|
|
2357
2518
|
____exports.UnitTriggerEvent,
|
|
2358
2519
|
EVENT_PLAYER_UNIT_PICKUP_ITEM,
|
|
2359
2520
|
function()
|
|
@@ -2364,10 +2525,15 @@ Unit.onItemPickup = __TS__New(
|
|
|
2364
2525
|
return IgnoreEvent
|
|
2365
2526
|
end
|
|
2366
2527
|
)
|
|
2367
|
-
Unit.
|
|
2528
|
+
Unit.itemUsedEvent = __TS__New(
|
|
2368
2529
|
____exports.UnitTriggerEvent,
|
|
2369
2530
|
EVENT_PLAYER_UNIT_USE_ITEM,
|
|
2370
|
-
function() return ____exports.Unit:of(
|
|
2531
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2532
|
+
)
|
|
2533
|
+
Unit.itemStackedEvent = __TS__New(
|
|
2534
|
+
____exports.UnitTriggerEvent,
|
|
2535
|
+
EVENT_PLAYER_UNIT_STACK_ITEM,
|
|
2536
|
+
function() return ____exports.Unit:of(getTriggerUnit()), Item:of(getManipulatedItem()) end
|
|
2371
2537
|
)
|
|
2372
2538
|
__TS__ObjectDefineProperty(
|
|
2373
2539
|
Unit,
|