warscript 0.0.1-dev.6389eac → 0.0.1-dev.63f1d69

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/util.lua CHANGED
@@ -67,7 +67,7 @@ do
67
67
  local hooked
68
68
  function hooked(func, hooks)
69
69
  return function(...)
70
- local result = func(nil, ...)
70
+ local result = func(...)
71
71
  for i = 1, #hooks do
72
72
  hooks[i](...)
73
73
  end
@@ -20,9 +20,9 @@ export declare abstract class Behavior<T extends AnyNotNil, PeriodicActionParame
20
20
  static getFirst<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], Count extends [number] | []>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, ...[count]: Count): Count extends [number] ? T[] : T | undefined;
21
21
  static getLast<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never): T | undefined;
22
22
  static getAll<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never): T[];
23
- static forFirst<T extends Behavior<any>, ConstructorParameters extends any[], ConsumerParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, count: number, consumer: (behavior: T, ...parameters: ConsumerParameters) => any, ...parameters: ConsumerParameters): number;
24
- static forFirst<T extends Behavior<any>, ConstructorParameters extends any[], K extends KeysOfType<T, (...args: any) => any>>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, count: number, key: K, ...parameters: T[K] extends (...args: any) => any ? Parameters<T[K]> : never): number;
25
- static forAll<T extends Behavior<any>, ConstructorParameters extends any[], ConsumerParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, consumer: (behavior: T, ...parameters: ConsumerParameters) => unknown, ...parameters: ConsumerParameters): number;
26
- static forAll<T extends Behavior<any>, ConstructorParameters extends any[], K extends KeysOfType<T, (...args: any) => any>>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, key: K, ...parameters: T[K] extends (...args: any) => any ? Parameters<T[K]> : never): number;
23
+ static forFirst<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], ConsumerParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, count: number, consumer: (this: void, behavior: T, ...parameters: ConsumerParameters) => any, ...parameters: ConsumerParameters): number;
24
+ static forFirst<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], K extends KeysOfType<T, (this: T, ...args: any) => any>>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, count: number, key: K, ...parameters: T[K] extends (this: T, ...args: any) => any ? Parameters<T[K]> : never): number;
25
+ static forAll<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], ConsumerParameters extends any[]>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, consumer: (this: void, behavior: T, ...parameters: ConsumerParameters) => unknown, ...parameters: ConsumerParameters): number;
26
+ static forAll<T extends Behavior<AnyNotNil>, ConstructorParameters extends any[], K extends KeysOfType<T, (this: T, ...args: any) => any>>(this: BehaviorConstructor<T, ConstructorParameters>, object: T extends Behavior<infer Object> ? Object : never, key: K, ...parameters: T[K] extends (this: T, ...args: any) => any ? Parameters<T[K]> : never): number;
27
27
  }
28
28
  export {};
@@ -2,6 +2,7 @@
2
2
  import { Behavior } from "../behavior";
3
3
  import { Ability } from "../internal/ability";
4
4
  import { DamageEvent, DamagingEvent, Unit } from "../internal/unit";
5
+ import "../internal/unit+ability";
5
6
  import "../internal/unit-missile-launch";
6
7
  export type UnitBehaviorConstructor<Args extends any[]> = new (unit: Unit, ...args: Args) => UnitBehavior;
7
8
  export declare abstract class UnitBehavior<PeriodicActionParameters extends any[] = any[]> extends Behavior<Unit, PeriodicActionParameters> {
@@ -13,8 +14,8 @@ export declare abstract class UnitBehavior<PeriodicActionParameters extends any[
13
14
  onDamageDealt(target: Unit, event: DamageEvent): void;
14
15
  onDamageReceiving(source: Unit | undefined, event: DamagingEvent): void;
15
16
  onDamageReceived(source: Unit | undefined, event: DamageEvent): void;
16
- protected onAbilityGained(ability: Ability): void;
17
- protected onAbilityLost(ability: Ability): void;
17
+ onAbilityGained(ability: Ability): void;
18
+ onAbilityLost(ability: Ability): void;
18
19
  onKill(target: Unit): void;
19
20
  onDeath(source: Unit | undefined): void;
20
21
  }
@@ -7,6 +7,7 @@ local ____behavior = require("engine.behavior")
7
7
  local Behavior = ____behavior.Behavior
8
8
  local ____unit = require("engine.internal.unit")
9
9
  local Unit = ____unit.Unit
10
+ require("engine.internal.unit+ability")
10
11
  require("engine.internal.unit-missile-launch")
11
12
  ____exports.UnitBehavior = __TS__Class()
12
13
  local UnitBehavior = ____exports.UnitBehavior
@@ -62,6 +63,12 @@ __TS__SetDescriptor(
62
63
  end
63
64
  ____exports.UnitBehavior:forAll(target, "onDamageReceived", source, event)
64
65
  end)
66
+ Unit.abilityGainedEvent:addListener(function(source, target)
67
+ ____exports.UnitBehavior:forAll(source, "onAbilityGained", target)
68
+ end)
69
+ Unit.abilityLostEvent:addListener(function(source, target)
70
+ ____exports.UnitBehavior:forAll(source, "onAbilityLost", target)
71
+ end)
65
72
  Unit.deathEvent:addListener(function(target, source)
66
73
  if source ~= nil then
67
74
  ____exports.UnitBehavior:forAll(source, "onKill", target)
package/engine/buff.lua CHANGED
@@ -1035,24 +1035,22 @@ __TS__SetDescriptor(
1035
1035
  true
1036
1036
  );
1037
1037
  (function(self)
1038
+ local function destroyBuffIfNeeded(buff)
1039
+ if getUnitAbility(buff[100].handle, buff.typeId) ~= buff.handle then
1040
+ buff:destroy()
1041
+ end
1042
+ end
1038
1043
  ____exports.checkBuff = function(unit, buffTypeId)
1039
1044
  local buffByTypeId = buffByTypeIdByUnit[unit]
1040
1045
  if buffByTypeId ~= nil then
1041
1046
  local buff = buffByTypeId[buffTypeId]
1042
- if buff ~= nil and getUnitAbility(unit.handle, buffTypeId) ~= buff.handle then
1043
- buff:destroy()
1047
+ if buff ~= nil then
1048
+ destroyBuffIfNeeded(buff)
1044
1049
  end
1045
1050
  end
1046
1051
  end
1047
1052
  ____exports.checkBuffs = function(unit)
1048
- local buffByTypeId = buffByTypeIdByUnit[unit]
1049
- if buffByTypeId ~= nil then
1050
- for ____, buff in pairs(buffByTypeId) do
1051
- if getUnitAbility(unit.handle, buff.typeId) ~= buff.handle then
1052
- buff:destroy()
1053
- end
1054
- end
1055
- end
1053
+ ____exports.Buff:forAll(unit, destroyBuffIfNeeded)
1056
1054
  end
1057
1055
  Unit.abilityChannelingStartEvent:addListener(
1058
1056
  0,
@@ -227,7 +227,7 @@ export declare class Unit extends Handle<junit> {
227
227
  isSelected(player: Player): boolean;
228
228
  explode(): void;
229
229
  kill(): void;
230
- revive(pos: Vec2, doEffect: boolean): void;
230
+ revive(x: number, y: number, doEffect?: boolean): void;
231
231
  healTarget(target: Widget, amount: number): void;
232
232
  useItem(item: Item): boolean;
233
233
  issueImmediateOrder(order: number): boolean;
@@ -7,6 +7,9 @@ local __TS__Class = ____lualib.__TS__Class
7
7
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
8
8
  local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
9
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
10
13
  local __TS__InstanceOf = ____lualib.__TS__InstanceOf
11
14
  local __TS__ObjectDefineProperty = ____lualib.__TS__ObjectDefineProperty
12
15
  local Set = ____lualib.Set
@@ -279,9 +282,8 @@ function UnitTriggerEvent.prototype.____constructor(self, eventType, c)
279
282
  end
280
283
  local function dispatch(event, idGetter, argsGetter)
281
284
  local initialized = false
282
- local x = {}
283
285
  return setmetatable(
284
- x,
286
+ {},
285
287
  {
286
288
  __index = function(self, id)
287
289
  if type(id) ~= "number" then
@@ -704,10 +706,7 @@ function Unit.prototype.onDestroy(self)
704
706
  if eventsToDestroy ~= nil then
705
707
  forEach(eventsToDestroy, "destroy")
706
708
  end
707
- if getUnitAbilityLevel(handle, leaveDetectAbilityId) > 0 then
708
- unitRemoveAbility(handle, leaveDetectAbilityId)
709
- removeUnit(handle)
710
- end
709
+ removeUnit(handle)
711
710
  return Handle.prototype.onDestroy(self)
712
711
  end
713
712
  function Unit.prototype.addAttackHandler(self, condition, action)
@@ -817,8 +816,15 @@ end
817
816
  function Unit.prototype.kill(self)
818
817
  killUnit(self.handle)
819
818
  end
820
- function Unit.prototype.revive(self, pos, doEffect)
821
- ReviveHero(self.handle, pos.x, pos.y, doEffect)
819
+ function Unit.prototype.revive(self, x, y, doEffect)
820
+ local ____ReviveHero_4 = ReviveHero
821
+ local ____array_3 = __TS__SparseArrayNew(self.handle, x, y)
822
+ local ____doEffect_2 = doEffect
823
+ if ____doEffect_2 == nil then
824
+ ____doEffect_2 = false
825
+ end
826
+ __TS__SparseArrayPush(____array_3, ____doEffect_2)
827
+ ____ReviveHero_4(__TS__SparseArraySpread(____array_3))
822
828
  end
823
829
  function Unit.prototype.healTarget(self, target, amount)
824
830
  if __TS__InstanceOf(target, ____exports.Unit) and target:hasAbility(fourCC("BIhm")) then
@@ -1385,13 +1391,13 @@ __TS__SetDescriptor(
1385
1391
  end,
1386
1392
  set = function(self, isTeamGlowVisible)
1387
1393
  showUnitTeamGlow(self.handle, isTeamGlowVisible)
1388
- local ____temp_2
1394
+ local ____temp_5
1389
1395
  if not isTeamGlowVisible then
1390
- ____temp_2 = true
1396
+ ____temp_5 = true
1391
1397
  else
1392
- ____temp_2 = nil
1398
+ ____temp_5 = nil
1393
1399
  end
1394
- self[105] = ____temp_2
1400
+ self[105] = ____temp_5
1395
1401
  end
1396
1402
  },
1397
1403
  true
@@ -2114,25 +2120,25 @@ Unit.onTargetCast = dispatchId(__TS__New(
2114
2120
  function(event)
2115
2121
  local invoke = Event.invoke
2116
2122
  local function listener(unit, id)
2117
- local ____GetSpellTargetUnit_result_5
2123
+ local ____GetSpellTargetUnit_result_8
2118
2124
  if GetSpellTargetUnit() then
2119
- ____GetSpellTargetUnit_result_5 = ____exports.Unit:of(GetSpellTargetUnit())
2125
+ ____GetSpellTargetUnit_result_8 = ____exports.Unit:of(GetSpellTargetUnit())
2120
2126
  else
2121
- local ____GetSpellTargetItem_result_4
2127
+ local ____GetSpellTargetItem_result_7
2122
2128
  if GetSpellTargetItem() then
2123
- ____GetSpellTargetItem_result_4 = Item:of(GetSpellTargetItem())
2129
+ ____GetSpellTargetItem_result_7 = Item:of(GetSpellTargetItem())
2124
2130
  else
2125
- local ____GetSpellTargetDestructable_result_3
2131
+ local ____GetSpellTargetDestructable_result_6
2126
2132
  if GetSpellTargetDestructable() then
2127
- ____GetSpellTargetDestructable_result_3 = Destructable:of(GetSpellTargetDestructable())
2133
+ ____GetSpellTargetDestructable_result_6 = Destructable:of(GetSpellTargetDestructable())
2128
2134
  else
2129
- ____GetSpellTargetDestructable_result_3 = nil
2135
+ ____GetSpellTargetDestructable_result_6 = nil
2130
2136
  end
2131
- ____GetSpellTargetItem_result_4 = ____GetSpellTargetDestructable_result_3
2137
+ ____GetSpellTargetItem_result_7 = ____GetSpellTargetDestructable_result_6
2132
2138
  end
2133
- ____GetSpellTargetUnit_result_5 = ____GetSpellTargetItem_result_4
2139
+ ____GetSpellTargetUnit_result_8 = ____GetSpellTargetItem_result_7
2134
2140
  end
2135
- local target = ____GetSpellTargetUnit_result_5
2141
+ local target = ____GetSpellTargetUnit_result_8
2136
2142
  if target then
2137
2143
  invoke(event, unit, id, target)
2138
2144
  end
@@ -2569,13 +2575,15 @@ __TS__ObjectDefineProperty(
2569
2575
  orderId("unimmolation")
2570
2576
  }) do
2571
2577
  ____exports.Unit.onImmediateOrder[leaveOrderId]:addListener(function(unit)
2572
- local handle = unit.handle
2573
- for i = 1, #leaveAbilityIds do
2574
- if getUnitAbilityLevel(handle, leaveAbilityIds[i]) ~= 0 then
2575
- return
2578
+ if unit.state == 1 then
2579
+ local handle = unit.handle
2580
+ for i = 1, #leaveAbilityIds do
2581
+ if getUnitAbilityLevel(handle, leaveAbilityIds[i]) ~= 0 then
2582
+ return
2583
+ end
2576
2584
  end
2585
+ unit:destroy()
2577
2586
  end
2578
- unit:destroy()
2579
2587
  end)
2580
2588
  end
2581
2589
  end)(Unit)
package/event.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** @noSelfInFile */
2
- export type EventListener<T extends any[]> = (...args: T) => void;
2
+ export type EventListener<T extends any[]> = (this: void, ...args: T) => void;
3
3
  export declare const enum EventListenerPriority {
4
4
  LOWEST = 0,
5
5
  LOW = 1,
@@ -37,7 +37,7 @@ export type EventDispatchTable<EventType extends Event<any>, KeyType extends num
37
37
  };
38
38
  export type DispatchingEvent<P extends any[], T extends Event<P> = Event<P>, S extends Event<P> = Event<P>> = T & EventDispatchTable<S>;
39
39
  export declare const createDispatchingEvent: {
40
- <T extends Event<any>, S extends Event<EventParameters<T>>>(underlyingEvent: T, extractKey: (...args: EventParameters<T>) => number, ...createEvent: [...(Event<any> extends S ? [(() => S)?] : [() => S])]): DispatchingEvent<EventParameters<T>, T>;
40
+ <T extends Event<any>, S extends Event<EventParameters<T>>>(underlyingEvent: T, extractKey: (this: void, ...args: EventParameters<T>) => number, invokeEvent?: (this: void, event: S, ...args: EventParameters<T>) => unknown, ...createEvent: [...(Event<any> extends S ? [((this: void) => S)?] : [(this: void) => S])]): DispatchingEvent<EventParameters<T>, T, S>;
41
41
  };
42
42
  export declare class DependentInitializingEvent<T extends any[], R extends any[]> extends InitializingEvent<R, EventListener<T>> {
43
43
  constructor(underlyingEvent: Event<T>, priority: EventListenerPriority, collector: (...args: T) => LuaMultiReturn<[false] | [true, ...R]>);
package/event.lua CHANGED
@@ -146,8 +146,13 @@ function TriggerEvent.prototype.____constructor(self, r, c)
146
146
  end
147
147
  )
148
148
  end
149
- ____exports.createDispatchingEvent = function(underlyingEvent, extractKey, createEvent)
150
- local actualCreateEvent = createEvent or (function() return __TS__New(____exports.Event) end)
149
+ ____exports.createDispatchingEvent = function(underlyingEvent, extractKey, invokeEvent, createEvent)
150
+ if invokeEvent == nil then
151
+ invokeEvent = ____exports.Event.invoke
152
+ end
153
+ if createEvent == nil then
154
+ createEvent = function() return __TS__New(____exports.Event) end
155
+ end
151
156
  local initialized = false
152
157
  return setmetatable(
153
158
  {},
@@ -157,17 +162,16 @@ ____exports.createDispatchingEvent = function(underlyingEvent, extractKey, creat
157
162
  return underlyingEvent[id]
158
163
  end
159
164
  if not initialized then
160
- local invoke = ____exports.Event.invoke
161
165
  underlyingEvent:addListener(function(...)
162
166
  local key = extractKey(...)
163
167
  local event = rawget(self, key)
164
168
  if event then
165
- invoke(event, ...)
169
+ invokeEvent(event, ...)
166
170
  end
167
171
  end)
168
172
  initialized = true
169
173
  end
170
- local event = actualCreateEvent()
174
+ local event = createEvent()
171
175
  rawset(self, id, event)
172
176
  return event
173
177
  end,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "warscript",
4
- "version": "0.0.1-dev.6389eac",
4
+ "version": "0.0.1-dev.63f1d69",
5
5
  "description": "A typescript library for Warcraft III using Warpack.",
6
6
  "keywords": [
7
7
  "warcraft",