warscript 0.0.1-dev.87bdb89 → 0.0.1-dev.8895ff6
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/core/types/frame.lua +24 -21
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/decl/native.d.ts +6 -4
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +2 -1
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +2 -1
- package/engine/behaviour/ability.lua +9 -17
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +26 -5
- package/engine/behaviour/unit.lua +180 -27
- package/engine/buff.d.ts +21 -8
- package/engine/buff.lua +187 -121
- package/engine/internal/ability.d.ts +3 -1
- package/engine/internal/ability.lua +34 -11
- package/engine/internal/item/ability.lua +51 -1
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +13 -15
- package/engine/internal/item.lua +63 -49
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -5
- package/engine/internal/unit/ability.lua +96 -21
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +2 -0
- package/engine/internal/unit/bonus.lua +10 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +19 -23
- package/engine/internal/unit.lua +171 -190
- package/engine/local-client.d.ts +2 -0
- package/engine/local-client.lua +30 -0
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -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.lua +5 -4
- 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 +15 -2
- package/engine/object-data/entry/unit-type.lua +135 -33
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +7 -6
- package/engine/object-field/unit.d.ts +31 -5
- package/engine/object-field/unit.lua +95 -0
- package/engine/object-field.d.ts +13 -3
- package/engine/object-field.lua +279 -133
- package/engine/random.d.ts +9 -0
- package/engine/random.lua +13 -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 +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +26 -3
- package/engine/text-tag.lua +217 -11
- package/engine/unit.d.ts +5 -0
- package/engine/unit.lua +5 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +10 -8
- package/package.json +2 -2
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +8 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +7 -0
- package/utility/functions.lua +12 -0
- package/utility/linked-map.d.ts +26 -0
- package/utility/linked-map.lua +66 -0
- package/utility/linked-set.d.ts +1 -0
- package/utility/linked-set.lua +23 -1
- package/utility/lua-maps.d.ts +12 -2
- package/utility/lua-maps.lua +37 -2
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +4 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/core/types/order.d.ts +0 -26
- package/core/types/order.lua +0 -65
|
@@ -9,9 +9,18 @@ local ____timer = require("core.types.timer")
|
|
|
9
9
|
local Timer = ____timer.Timer
|
|
10
10
|
local ____lua_2Dsets = require("utility.lua-sets")
|
|
11
11
|
local luaSetOf = ____lua_2Dsets.luaSetOf
|
|
12
|
+
local ____attributes = require("attributes")
|
|
13
|
+
local attribute = ____attributes.attribute
|
|
14
|
+
local ____linked_2Dset = require("utility.linked-set")
|
|
15
|
+
local LinkedSet = ____linked_2Dset.LinkedSet
|
|
16
|
+
local ____math = require("math")
|
|
17
|
+
local ceil = ____math.ceil
|
|
12
18
|
local autoAttackFinishEvent = __TS__New(Event)
|
|
13
19
|
rawset(Unit, "autoAttackFinishEvent", autoAttackFinishEvent)
|
|
14
|
-
local
|
|
20
|
+
local units = __TS__New(LinkedSet)
|
|
21
|
+
local targetAttribute = attribute()
|
|
22
|
+
local impactDelayAttribute = attribute()
|
|
23
|
+
local passedTimeAttribute = attribute()
|
|
15
24
|
local instantOrderIds = luaSetOf(
|
|
16
25
|
orderId("avatar"),
|
|
17
26
|
orderId("berserk"),
|
|
@@ -27,25 +36,54 @@ local instantOrderIds = luaSetOf(
|
|
|
27
36
|
orderId("undivineshield"),
|
|
28
37
|
orderId("unimmolation")
|
|
29
38
|
)
|
|
30
|
-
|
|
39
|
+
---
|
|
40
|
+
-- @internal For use by internal systems only.
|
|
41
|
+
____exports.resetAutoAttackTimer = function(unit)
|
|
42
|
+
if units:remove(unit) then
|
|
43
|
+
unit[targetAttribute] = nil
|
|
44
|
+
unit[impactDelayAttribute] = nil
|
|
45
|
+
unit[passedTimeAttribute] = nil
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
local function reset(unit, orderId)
|
|
31
49
|
if not (instantOrderIds[orderId] ~= nil) then
|
|
32
|
-
|
|
33
|
-
if eventTimer then
|
|
34
|
-
eventTimer:destroy()
|
|
35
|
-
eventTimerByUnit[source] = nil
|
|
36
|
-
end
|
|
50
|
+
____exports.resetAutoAttackTimer(unit)
|
|
37
51
|
end
|
|
38
52
|
end
|
|
39
53
|
Unit.onImmediateOrder:addListener(reset)
|
|
40
54
|
Unit.onPointOrder:addListener(reset)
|
|
41
55
|
Unit.onTargetOrder:addListener(reset)
|
|
42
|
-
local
|
|
43
|
-
|
|
44
|
-
|
|
56
|
+
local timerPeriod = 1 / 64
|
|
57
|
+
local function invokeEvent(unit)
|
|
58
|
+
units:remove(unit)
|
|
59
|
+
local target = unit[targetAttribute]
|
|
60
|
+
unit[targetAttribute] = nil
|
|
61
|
+
unit[impactDelayAttribute] = nil
|
|
62
|
+
unit[passedTimeAttribute] = nil
|
|
63
|
+
Event.invoke(autoAttackFinishEvent, unit, target)
|
|
64
|
+
end
|
|
65
|
+
local function checkUnit(unit)
|
|
66
|
+
local passedTime = unit[passedTimeAttribute] + timerPeriod
|
|
67
|
+
local impactDelay = unit[impactDelayAttribute]
|
|
68
|
+
if passedTime >= impactDelay and ceil(passedTime / 0.02) >= ceil(impactDelay / 0.02) then
|
|
69
|
+
invokeEvent(unit)
|
|
70
|
+
else
|
|
71
|
+
unit[passedTimeAttribute] = passedTime
|
|
72
|
+
end
|
|
45
73
|
end
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
local timer = Timer:simple(attackPoint, timerCallback, source, target)
|
|
49
|
-
eventTimerByUnit[source] = timer
|
|
74
|
+
Timer.onPeriod[timerPeriod]:addListener(function()
|
|
75
|
+
units:forEach(checkUnit)
|
|
50
76
|
end)
|
|
77
|
+
Unit.autoAttackStartEvent:addListener(
|
|
78
|
+
999999,
|
|
79
|
+
function(source, target)
|
|
80
|
+
if source[targetAttribute] ~= nil then
|
|
81
|
+
invokeEvent(source)
|
|
82
|
+
end
|
|
83
|
+
source[targetAttribute] = target
|
|
84
|
+
source[impactDelayAttribute] = (source:chooseWeapon(target) or source.firstWeapon).impactDelay
|
|
85
|
+
source[passedTimeAttribute] = -timerPeriod
|
|
86
|
+
units:add(source)
|
|
87
|
+
end
|
|
88
|
+
)
|
|
51
89
|
return ____exports
|
|
@@ -80,6 +80,8 @@ export declare class UnitWeapon {
|
|
|
80
80
|
readonly unit: Unit;
|
|
81
81
|
readonly index: 0 | 1;
|
|
82
82
|
constructor(unit: Unit, index: 0 | 1);
|
|
83
|
+
get isEnabled(): boolean;
|
|
84
|
+
set isEnabled(isEnabled: boolean);
|
|
83
85
|
get cooldown(): number;
|
|
84
86
|
set cooldown(cooldown: number);
|
|
85
87
|
get damage(): [minimumDamage: number, maximumDamage: number];
|
|
@@ -107,12 +109,13 @@ declare const enum UnitPropertyKey {
|
|
|
107
109
|
SYNC_ID = 100,
|
|
108
110
|
IS_PAUSED = 101,
|
|
109
111
|
STUN_COUNTER = 102,
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
FORCE_STUN_COUNTER = 103,
|
|
113
|
+
DELAY_HEALTH_CHECKS_COUNTER = 104,
|
|
114
|
+
DELAY_HEALTH_CHECKS_HEALTH_BONUS = 105,
|
|
115
|
+
PREVENT_DEATH_HEALTH_BONUS = 106,
|
|
116
|
+
IS_TEAM_GLOW_HIDDEN = 107,
|
|
117
|
+
LAST_X = 108,
|
|
118
|
+
LAST_Y = 109
|
|
116
119
|
}
|
|
117
120
|
export type UnitSyncId = number & {
|
|
118
121
|
readonly __unitSyncId: unique symbol;
|
|
@@ -121,6 +124,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
121
124
|
readonly syncId: UnitSyncId;
|
|
122
125
|
private [UnitPropertyKey.IS_PAUSED]?;
|
|
123
126
|
private [UnitPropertyKey.STUN_COUNTER]?;
|
|
127
|
+
private [UnitPropertyKey.FORCE_STUN_COUNTER]?;
|
|
124
128
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_COUNTER]?;
|
|
125
129
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_HEALTH_BONUS]?;
|
|
126
130
|
private [UnitPropertyKey.PREVENT_DEATH_HEALTH_BONUS]?;
|
|
@@ -160,8 +164,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
160
164
|
isInRangeOf(unit: Unit, range: number): boolean;
|
|
161
165
|
isAllyOf(unit: Unit): boolean;
|
|
162
166
|
isEnemyOf(unit: Unit): boolean;
|
|
163
|
-
playAnimation(animation: string, rarity?: jraritycontrol): void;
|
|
164
|
-
playAnimation(animation: number): void;
|
|
167
|
+
playAnimation(...parameters: [animation: number] | [animation: string, rarity?: jraritycontrol]): void;
|
|
165
168
|
resetAnimation(): void;
|
|
166
169
|
queueAnimation(animation: string): void;
|
|
167
170
|
get weapons(): [UnitWeapon, UnitWeapon];
|
|
@@ -174,16 +177,10 @@ export declare class Unit extends Handle<junit> {
|
|
|
174
177
|
set xp(v: number);
|
|
175
178
|
get primaryAttribute(): UnitAttribute;
|
|
176
179
|
set primaryAttribute(primaryAttribute: UnitAttribute);
|
|
177
|
-
get strengthBase(): number;
|
|
178
|
-
set strengthBase(strengthBase: number);
|
|
179
180
|
get strengthBonus(): number;
|
|
180
181
|
get strength(): number;
|
|
181
|
-
get agilityBase(): number;
|
|
182
|
-
set agilityBase(agilityBase: number);
|
|
183
182
|
get agilityBonus(): number;
|
|
184
183
|
get agility(): number;
|
|
185
|
-
get intelligenceBase(): number;
|
|
186
|
-
set intelligenceBase(intelligenceBase: number);
|
|
187
184
|
get intelligenceBonus(): number;
|
|
188
185
|
get intelligence(): number;
|
|
189
186
|
get name(): string;
|
|
@@ -217,8 +214,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
217
214
|
set facing(v: number);
|
|
218
215
|
get speed(): number;
|
|
219
216
|
set speed(v: number);
|
|
220
|
-
get flyHeight(): number;
|
|
221
|
-
set flyHeight(v: number);
|
|
222
217
|
get x(): number;
|
|
223
218
|
set x(v: number);
|
|
224
219
|
get y(): number;
|
|
@@ -242,8 +237,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
242
237
|
get isInvulnerable(): boolean;
|
|
243
238
|
get vertexColor(): Color;
|
|
244
239
|
set vertexColor(v: Color);
|
|
245
|
-
get scale(): number;
|
|
246
|
-
set scale(v: number);
|
|
247
240
|
get timeScale(): number;
|
|
248
241
|
set timeScale(v: number);
|
|
249
242
|
get collisionSize(): number;
|
|
@@ -267,18 +260,17 @@ export declare class Unit extends Handle<junit> {
|
|
|
267
260
|
dropItemTarget(item: Item, target: Widget): boolean;
|
|
268
261
|
dropItemSlot(item: Item, slot: number): boolean;
|
|
269
262
|
itemInSlot(slot: number): Item | null;
|
|
270
|
-
addAbility(abilityId: number): UnitAbility |
|
|
263
|
+
addAbility(abilityId: number): UnitAbility | undefined;
|
|
271
264
|
makeAbilityPermanent(abilityId: number, permanent: true): boolean;
|
|
272
265
|
setAbilityLevel(abilityId: number, level: number): number;
|
|
273
266
|
getAbilityLevel(abilityId: number): number;
|
|
274
267
|
hasAbility(abilityId: number): boolean;
|
|
275
|
-
|
|
276
|
-
removeAbility(
|
|
268
|
+
getAbility(abilityId: number): UnitAbility | undefined;
|
|
269
|
+
removeAbility(abilityTypeId: number): boolean;
|
|
277
270
|
hideAbility(abilityId: number, flag: boolean): void;
|
|
278
271
|
getAbilityRemainingCooldown(abilityId: number): number;
|
|
279
272
|
startAbilityCooldown(abilityId: number, cooldown: number): void;
|
|
280
273
|
endAbilityCooldown(abilityId: number): void;
|
|
281
|
-
interruptAttack(): void;
|
|
282
274
|
interruptCast(abilityId: number): void;
|
|
283
275
|
getDistanceTo(target: Unit | Vec2): number;
|
|
284
276
|
getCollisionDistanceTo(...target: [Unit] | [targetX: number, targetY: number]): number;
|
|
@@ -292,6 +284,8 @@ export declare class Unit extends Handle<junit> {
|
|
|
292
284
|
unpauseEx(): void;
|
|
293
285
|
incrementStunCounter(): void;
|
|
294
286
|
decrementStunCounter(): void;
|
|
287
|
+
incrementForceStunCounter(): void;
|
|
288
|
+
decrementForceStunCounter(): void;
|
|
295
289
|
set waygateActive(v: boolean);
|
|
296
290
|
get waygateActive(): boolean;
|
|
297
291
|
set waygateDestination(v: Vec2);
|
|
@@ -316,6 +310,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
316
310
|
static getInCollisionRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
|
|
317
311
|
static getInSector(pos: Vec2, range: number, offsetAngle: number, centralAngle: number): Unit[];
|
|
318
312
|
static getSelectionOf(player: Player, target?: Unit[]): Unit[];
|
|
313
|
+
static readonly levelChangedEvent: UnitTriggerEvent<[]>;
|
|
319
314
|
static readonly deathEvent: UnitTriggerEvent<[Unit]>;
|
|
320
315
|
static readonly onDecay: UnitTriggerEvent<[]>;
|
|
321
316
|
static readonly onResurrect: InitializingEvent<[Unit], void>;
|
|
@@ -353,7 +348,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
353
348
|
static itemDroppedEvent: UnitTriggerEvent<[Item]>;
|
|
354
349
|
static itemPickedUpEvent: UnitTriggerEvent<[Item]>;
|
|
355
350
|
static itemUsedEvent: UnitTriggerEvent<[Item]>;
|
|
356
|
-
static itemStackedEvent: UnitTriggerEvent<[Item]>;
|
|
351
|
+
static itemStackedEvent: UnitTriggerEvent<[target: Item, source: Item]>;
|
|
357
352
|
static get itemChargesChangedEvent(): Event<[unit: Unit, item: Item]>;
|
|
358
353
|
static get itemUseOrderEvent(): Event<[unit: Unit, item: Item]>;
|
|
359
354
|
static get itemMoveOrderEvent(): Event<[
|
|
@@ -373,5 +368,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
373
368
|
setField(field: junitstringfield, value: string): boolean;
|
|
374
369
|
toString(): string;
|
|
375
370
|
static getBySyncId(syncId: UnitSyncId): Unit | undefined;
|
|
371
|
+
static synchronize: (player: Player, object: Unit | undefined) => Promise<Unit | undefined>;
|
|
376
372
|
}
|
|
377
373
|
export {};
|