warscript 0.0.1-dev.eda504c → 0.0.1-dev.ee6e396
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/player.d.ts +16 -0
- package/core/types/player.lua +57 -14
- package/core/types/tileCell.d.ts +2 -1
- package/core/types/tileCell.lua +5 -0
- 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 +6 -1
- 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 +7 -3
- package/engine/behaviour/unit.lua +101 -24
- package/engine/buff.d.ts +19 -4
- package/engine/buff.lua +122 -41
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- 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/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/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-missile-launch.lua +16 -6
- package/engine/internal/unit.d.ts +13 -19
- package/engine/internal/unit.lua +140 -173
- 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/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/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/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 +2 -1
- package/engine/unit.d.ts +5 -0
- package/engine/unit.lua +5 -0
- package/net/socket.lua +1 -1
- package/objutil/buff.lua +9 -7
- package/package.json +2 -2
- package/patch-lua.lua +15 -0
- 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 +38 -0
- package/utility/records.lua +20 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__New = ____lualib.__TS__New
|
|
3
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
4
|
+
local ____exports = {}
|
|
5
|
+
local ____event = require("event")
|
|
6
|
+
local Event = ____event.Event
|
|
7
|
+
local InitializingEvent = ____event.InitializingEvent
|
|
8
|
+
local TriggerEvent = ____event.TriggerEvent
|
|
9
|
+
local ____unit = require("engine.internal.unit")
|
|
10
|
+
local Unit = ____unit.Unit
|
|
11
|
+
local ____timer = require("core.types.timer")
|
|
12
|
+
local Timer = ____timer.Timer
|
|
13
|
+
local ____attributes = require("attributes")
|
|
14
|
+
local attribute = ____attributes.attribute
|
|
15
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
16
|
+
local mutableLinkedMap = ____linked_2Dmap.mutableLinkedMap
|
|
17
|
+
local ____linked_2Dset = require("utility.linked-set")
|
|
18
|
+
local LinkedSet = ____linked_2Dset.LinkedSet
|
|
19
|
+
local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
|
|
20
|
+
local getTriggerUnit = GetTriggerUnit
|
|
21
|
+
local triggerRegisterUnitInRange = TriggerRegisterUnitInRange
|
|
22
|
+
local eventInvoke = Event.invoke
|
|
23
|
+
__TS__ObjectDefineProperty(
|
|
24
|
+
Unit.prototype,
|
|
25
|
+
"unitInRangeEvent",
|
|
26
|
+
{get = function(self)
|
|
27
|
+
local unit = self
|
|
28
|
+
local handle = self.handle
|
|
29
|
+
local unitInRangeEvent = setmetatable(
|
|
30
|
+
{},
|
|
31
|
+
{__index = function(self, value)
|
|
32
|
+
local event = __TS__New(
|
|
33
|
+
TriggerEvent,
|
|
34
|
+
function(trigger)
|
|
35
|
+
triggerRegisterUnitInRange(trigger, handle, value, nil)
|
|
36
|
+
end,
|
|
37
|
+
function() return unit, value, Unit:of(getTriggerUnit()) end
|
|
38
|
+
)
|
|
39
|
+
rawset(self, value, event)
|
|
40
|
+
return event
|
|
41
|
+
end}
|
|
42
|
+
)
|
|
43
|
+
rawset(self, "unitInRangeEvent", unitInRangeEvent)
|
|
44
|
+
return unitInRangeEvent
|
|
45
|
+
end}
|
|
46
|
+
)
|
|
47
|
+
local units = __TS__New(LinkedSet)
|
|
48
|
+
local unitsInRangeByRangeAttribute = attribute()
|
|
49
|
+
local function registerUnitOfRangeEvent(unit, range, unitInRange)
|
|
50
|
+
units:add(unit)
|
|
51
|
+
unit:getOrPut(unitsInRangeByRangeAttribute, mutableLinkedMap):getOrPut(range, mutableLinkedSet):add(unitInRange)
|
|
52
|
+
end
|
|
53
|
+
__TS__ObjectDefineProperty(
|
|
54
|
+
Unit.prototype,
|
|
55
|
+
"unitOutOfRangeEvent",
|
|
56
|
+
{get = function(self)
|
|
57
|
+
local unit = self
|
|
58
|
+
local unitOutOfRangeEvent = setmetatable(
|
|
59
|
+
{},
|
|
60
|
+
{__index = function(self, value)
|
|
61
|
+
local event = __TS__New(
|
|
62
|
+
InitializingEvent,
|
|
63
|
+
function()
|
|
64
|
+
unit.unitInRangeEvent[value]:addListener(999999, registerUnitOfRangeEvent)
|
|
65
|
+
end
|
|
66
|
+
)
|
|
67
|
+
rawset(self, value, event)
|
|
68
|
+
return event
|
|
69
|
+
end}
|
|
70
|
+
)
|
|
71
|
+
rawset(self, "unitOutOfRangeEvent", unitOutOfRangeEvent)
|
|
72
|
+
return unitOutOfRangeEvent
|
|
73
|
+
end}
|
|
74
|
+
)
|
|
75
|
+
Timer.onPeriod[1]:addListener(function()
|
|
76
|
+
for unit in pairs(units) do
|
|
77
|
+
local unitsInRangeByRange = unit[unitsInRangeByRangeAttribute]
|
|
78
|
+
if unitsInRangeByRange ~= nil then
|
|
79
|
+
for range, unitsInRange in pairs(unitsInRangeByRange) do
|
|
80
|
+
for unitInRange in pairs(unitsInRange) do
|
|
81
|
+
if unit:getDistanceTo(unitInRange) > range then
|
|
82
|
+
unitsInRange:remove(unitInRange)
|
|
83
|
+
eventInvoke(unit.unitOutOfRangeEvent[range], unit, range, unitInRange)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end)
|
|
90
|
+
return ____exports
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
|
|
3
|
+
local ____exports = {}
|
|
4
|
+
local ____unit = require("engine.internal.unit")
|
|
5
|
+
local Unit = ____unit.Unit
|
|
6
|
+
local ____unit = require("engine.standard.fields.unit")
|
|
7
|
+
local SCALING_VALUE_UNIT_FIELD = ____unit.SCALING_VALUE_UNIT_FIELD
|
|
8
|
+
__TS__ObjectDefineProperty(
|
|
9
|
+
Unit.prototype,
|
|
10
|
+
"scale",
|
|
11
|
+
{
|
|
12
|
+
get = function(self)
|
|
13
|
+
return SCALING_VALUE_UNIT_FIELD:getValue(self)
|
|
14
|
+
end,
|
|
15
|
+
set = function(self, value)
|
|
16
|
+
SCALING_VALUE_UNIT_FIELD:setValue(self, value)
|
|
17
|
+
end
|
|
18
|
+
}
|
|
19
|
+
)
|
|
20
|
+
return ____exports
|
|
@@ -13,6 +13,8 @@ local ____attributes = require("attributes")
|
|
|
13
13
|
local attribute = ____attributes.attribute
|
|
14
14
|
local ____linked_2Dset = require("utility.linked-set")
|
|
15
15
|
local LinkedSet = ____linked_2Dset.LinkedSet
|
|
16
|
+
local ____math = require("math")
|
|
17
|
+
local ceil = ____math.ceil
|
|
16
18
|
local autoAttackFinishEvent = __TS__New(Event)
|
|
17
19
|
rawset(Unit, "autoAttackFinishEvent", autoAttackFinishEvent)
|
|
18
20
|
local units = __TS__New(LinkedSet)
|
|
@@ -34,11 +36,18 @@ local instantOrderIds = luaSetOf(
|
|
|
34
36
|
orderId("undivineshield"),
|
|
35
37
|
orderId("unimmolation")
|
|
36
38
|
)
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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)
|
|
49
|
+
if not (instantOrderIds[orderId] ~= nil) then
|
|
50
|
+
____exports.resetAutoAttackTimer(unit)
|
|
42
51
|
end
|
|
43
52
|
end
|
|
44
53
|
Unit.onImmediateOrder:addListener(reset)
|
|
@@ -55,7 +64,8 @@ local function invokeEvent(unit)
|
|
|
55
64
|
end
|
|
56
65
|
local function checkUnit(unit)
|
|
57
66
|
local passedTime = unit[passedTimeAttribute] + timerPeriod
|
|
58
|
-
|
|
67
|
+
local impactDelay = unit[impactDelayAttribute]
|
|
68
|
+
if passedTime >= impactDelay and ceil(passedTime / 0.02) >= ceil(impactDelay / 0.02) then
|
|
59
69
|
invokeEvent(unit)
|
|
60
70
|
else
|
|
61
71
|
unit[passedTimeAttribute] = passedTime
|
|
@@ -109,12 +109,13 @@ declare const enum UnitPropertyKey {
|
|
|
109
109
|
SYNC_ID = 100,
|
|
110
110
|
IS_PAUSED = 101,
|
|
111
111
|
STUN_COUNTER = 102,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
|
118
119
|
}
|
|
119
120
|
export type UnitSyncId = number & {
|
|
120
121
|
readonly __unitSyncId: unique symbol;
|
|
@@ -123,6 +124,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
123
124
|
readonly syncId: UnitSyncId;
|
|
124
125
|
private [UnitPropertyKey.IS_PAUSED]?;
|
|
125
126
|
private [UnitPropertyKey.STUN_COUNTER]?;
|
|
127
|
+
private [UnitPropertyKey.FORCE_STUN_COUNTER]?;
|
|
126
128
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_COUNTER]?;
|
|
127
129
|
private [UnitPropertyKey.DELAY_HEALTH_CHECKS_HEALTH_BONUS]?;
|
|
128
130
|
private [UnitPropertyKey.PREVENT_DEATH_HEALTH_BONUS]?;
|
|
@@ -137,6 +139,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
137
139
|
private _fields?;
|
|
138
140
|
private getEvent;
|
|
139
141
|
constructor(handle: junit);
|
|
142
|
+
private saveData;
|
|
140
143
|
protected onDestroy(): HandleDestructor;
|
|
141
144
|
addAttackHandler(condition: AttackHandlerCondition, action: AttackHandlerAction): AttackHandler;
|
|
142
145
|
removeAttackHandler(handler: AttackHandler): boolean;
|
|
@@ -175,16 +178,10 @@ export declare class Unit extends Handle<junit> {
|
|
|
175
178
|
set xp(v: number);
|
|
176
179
|
get primaryAttribute(): UnitAttribute;
|
|
177
180
|
set primaryAttribute(primaryAttribute: UnitAttribute);
|
|
178
|
-
get strengthBase(): number;
|
|
179
|
-
set strengthBase(strengthBase: number);
|
|
180
181
|
get strengthBonus(): number;
|
|
181
182
|
get strength(): number;
|
|
182
|
-
get agilityBase(): number;
|
|
183
|
-
set agilityBase(agilityBase: number);
|
|
184
183
|
get agilityBonus(): number;
|
|
185
184
|
get agility(): number;
|
|
186
|
-
get intelligenceBase(): number;
|
|
187
|
-
set intelligenceBase(intelligenceBase: number);
|
|
188
185
|
get intelligenceBonus(): number;
|
|
189
186
|
get intelligence(): number;
|
|
190
187
|
get name(): string;
|
|
@@ -218,8 +215,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
218
215
|
set facing(v: number);
|
|
219
216
|
get speed(): number;
|
|
220
217
|
set speed(v: number);
|
|
221
|
-
get flyHeight(): number;
|
|
222
|
-
set flyHeight(v: number);
|
|
223
218
|
get x(): number;
|
|
224
219
|
set x(v: number);
|
|
225
220
|
get y(): number;
|
|
@@ -243,8 +238,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
243
238
|
get isInvulnerable(): boolean;
|
|
244
239
|
get vertexColor(): Color;
|
|
245
240
|
set vertexColor(v: Color);
|
|
246
|
-
get scale(): number;
|
|
247
|
-
set scale(v: number);
|
|
248
241
|
get timeScale(): number;
|
|
249
242
|
set timeScale(v: number);
|
|
250
243
|
get collisionSize(): number;
|
|
@@ -279,8 +272,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
279
272
|
getAbilityRemainingCooldown(abilityId: number): number;
|
|
280
273
|
startAbilityCooldown(abilityId: number, cooldown: number): void;
|
|
281
274
|
endAbilityCooldown(abilityId: number): void;
|
|
282
|
-
interruptMovement(): void;
|
|
283
|
-
interruptAttack(): void;
|
|
284
275
|
interruptCast(abilityId: number): void;
|
|
285
276
|
getDistanceTo(target: Unit | Vec2): number;
|
|
286
277
|
getCollisionDistanceTo(...target: [Unit] | [targetX: number, targetY: number]): number;
|
|
@@ -294,12 +285,13 @@ export declare class Unit extends Handle<junit> {
|
|
|
294
285
|
unpauseEx(): void;
|
|
295
286
|
incrementStunCounter(): void;
|
|
296
287
|
decrementStunCounter(): void;
|
|
288
|
+
incrementForceStunCounter(): void;
|
|
289
|
+
decrementForceStunCounter(): void;
|
|
297
290
|
set waygateActive(v: boolean);
|
|
298
291
|
get waygateActive(): boolean;
|
|
299
292
|
set waygateDestination(v: Vec2);
|
|
300
293
|
get waygateDestination(): Vec2;
|
|
301
294
|
get abilities(): ReadonlyArray<UnitAbility>;
|
|
302
|
-
get onUnitInRange(): Record<number, Event<[Unit]>>;
|
|
303
295
|
get onManaEqual(): Record<number, Event<[Unit, number]>>;
|
|
304
296
|
get manaEvent(): Record<Operator, Record<number, Event<[Unit]>>>;
|
|
305
297
|
get targetAcquiredEvent(): Event;
|
|
@@ -318,6 +310,7 @@ export declare class Unit extends Handle<junit> {
|
|
|
318
310
|
static getInCollisionRange(x: number, y: number, range: number, predicate?: (unit: Unit) => boolean): Unit[];
|
|
319
311
|
static getInSector(pos: Vec2, range: number, offsetAngle: number, centralAngle: number): Unit[];
|
|
320
312
|
static getSelectionOf(player: Player, target?: Unit[]): Unit[];
|
|
313
|
+
static readonly levelChangedEvent: UnitTriggerEvent<[]>;
|
|
321
314
|
static readonly deathEvent: UnitTriggerEvent<[Unit]>;
|
|
322
315
|
static readonly onDecay: UnitTriggerEvent<[]>;
|
|
323
316
|
static readonly onResurrect: InitializingEvent<[Unit], void>;
|
|
@@ -375,5 +368,6 @@ export declare class Unit extends Handle<junit> {
|
|
|
375
368
|
setField(field: junitstringfield, value: string): boolean;
|
|
376
369
|
toString(): string;
|
|
377
370
|
static getBySyncId(syncId: UnitSyncId): Unit | undefined;
|
|
371
|
+
static synchronize: (player: Player, object: Unit | undefined) => Promise<Unit | undefined>;
|
|
378
372
|
}
|
|
379
373
|
export {};
|