warscript 0.0.1-dev.2a08418 → 0.0.1-dev.2ad49fd

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.
Files changed (88) hide show
  1. package/core/types/frame.lua +47 -1
  2. package/core/types/sound.lua +1 -1
  3. package/destroyable.d.ts +1 -0
  4. package/destroyable.lua +9 -0
  5. package/engine/behavior.d.ts +4 -2
  6. package/engine/behavior.lua +69 -11
  7. package/engine/behaviour/ability/apply-buff.lua +4 -4
  8. package/engine/behaviour/ability/damage.d.ts +3 -0
  9. package/engine/behaviour/ability/damage.lua +8 -2
  10. package/engine/behaviour/ability.d.ts +11 -6
  11. package/engine/behaviour/ability.lua +31 -1
  12. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  13. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  14. package/engine/behaviour/unit.lua +13 -3
  15. package/engine/buff.d.ts +58 -20
  16. package/engine/buff.lua +300 -152
  17. package/engine/internal/mechanics/cast-ability.lua +6 -3
  18. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  19. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  20. package/engine/internal/object-data/health-bonus.lua +16 -0
  21. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  22. package/engine/internal/object-data/mana-bonus.lua +16 -0
  23. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  24. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  25. package/engine/internal/unit/attributes.d.ts +17 -0
  26. package/engine/internal/unit/attributes.lua +46 -0
  27. package/engine/internal/unit/bonus.d.ts +6 -0
  28. package/engine/internal/unit/bonus.lua +33 -3
  29. package/engine/internal/unit/fly-height.lua +3 -3
  30. package/engine/internal/unit/interrupts.d.ts +12 -0
  31. package/engine/internal/unit/interrupts.lua +28 -0
  32. package/engine/internal/unit/range-event.d.ts +12 -0
  33. package/engine/internal/unit/range-event.lua +90 -0
  34. package/engine/internal/unit/scale.lua +3 -3
  35. package/engine/internal/unit+bonus.lua +3 -3
  36. package/engine/internal/unit-missile-launch.lua +12 -5
  37. package/engine/internal/unit.d.ts +2 -9
  38. package/engine/internal/unit.lua +79 -121
  39. package/engine/local-client.d.ts +1 -1
  40. package/engine/local-client.lua +4 -4
  41. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  42. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  43. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  44. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  45. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  46. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  47. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  48. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  49. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  50. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  51. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  52. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  53. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  54. package/engine/object-data/entry/ability-type.d.ts +2 -0
  55. package/engine/object-data/entry/ability-type.lua +84 -4
  56. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  57. package/engine/object-data/entry/destructible-type.d.ts +27 -1
  58. package/engine/object-data/entry/destructible-type.lua +155 -0
  59. package/engine/object-data/entry/unit-type.d.ts +4 -0
  60. package/engine/object-data/entry/unit-type.lua +76 -32
  61. package/engine/object-field/ability.lua +2 -2
  62. package/engine/object-field/unit.d.ts +7 -4
  63. package/engine/object-field/unit.lua +4 -0
  64. package/engine/object-field.d.ts +3 -1
  65. package/engine/object-field.lua +177 -119
  66. package/engine/random.d.ts +1 -0
  67. package/engine/random.lua +8 -0
  68. package/engine/standard/fields/ability.d.ts +2 -2
  69. package/engine/standard/fields/ability.lua +2 -2
  70. package/engine/standard/fields/unit.d.ts +11 -5
  71. package/engine/standard/fields/unit.lua +13 -4
  72. package/engine/unit.d.ts +3 -0
  73. package/engine/unit.lua +3 -0
  74. package/lualib_bundle.lua +1 -1
  75. package/objutil/buff.lua +9 -7
  76. package/objutil/object.lua +1 -1
  77. package/operation.lua +1 -4
  78. package/package.json +5 -5
  79. package/patch-lua.lua +15 -0
  80. package/utility/linked-map.d.ts +34 -0
  81. package/utility/linked-map.lua +101 -0
  82. package/utility/linked-set.d.ts +2 -1
  83. package/utility/linked-set.lua +21 -0
  84. package/utility/records.lua +20 -1
  85. /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
  86. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  87. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  88. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/engine/buff.d.ts CHANGED
@@ -13,6 +13,7 @@ import { UnitBehavior } from "./behaviour/unit";
13
13
  import type { Widget } from "../core/types/widget";
14
14
  import { Destructor } from "../destroyable";
15
15
  import { Event } from "../event";
16
+ import { AbilityBehavior } from "./behaviour/ability";
16
17
  export type BuffConstructor<T extends Buff<any> = Buff<any>, Args extends any[] = any> = OmitConstructor<typeof Buff<any>> & (new (...args: Args) => T);
17
18
  type EnumParameterValueType<T extends number> = T | AbilityEnumLevelField<T>;
18
19
  type NumberParameterValueType = number | AbilityNumberField | AbilityNumberLevelField;
@@ -30,8 +31,10 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
30
31
  source?: Unit;
31
32
  behaviorConstructors?: (new (unit: Unit) => UnitBehavior)[];
32
33
  abilityTypeIds?: Record<AbilityTypeId, {
33
- [numberField: (AbilityNumberField | AbilityNumberLevelField) & symbol]: NumberParameterValueType;
34
- } & {
34
+ readonly fields?: [
35
+ AbilityNumberField | AbilityNumberLevelField,
36
+ NumberParameterValueType
37
+ ][];
35
38
  /** Default `true`. */
36
39
  readonly isButtonVisible?: boolean;
37
40
  /** Default is the level of the source ability or 0 if it is absent. */
@@ -53,9 +56,11 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
53
56
  damageIncrease?: NumberParameterValueType;
54
57
  damageIncreaseFactor?: NumberParameterValueType;
55
58
  armorIncrease?: NumberParameterValueType;
56
- armorIncreaseFactor?: NumberParameterValueType;
59
+ maxHealthIncrease?: NumberParameterValueType;
60
+ maxManaIncrease?: NumberParameterValueType;
57
61
  attackSpeedIncreaseFactor?: NumberParameterValueType;
58
62
  movementSpeedIncreaseFactor?: NumberParameterValueType;
63
+ manaRegenerationRateIncreaseFactor?: NumberParameterValueType;
59
64
  evasionProbability?: NumberParameterValueType;
60
65
  missProbability?: NumberParameterValueType;
61
66
  damageFactor?: NumberParameterValueType;
@@ -75,6 +80,9 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
75
80
  maximumAutoAttackCount?: IntegerParameterValueType;
76
81
  maximumDamageDealtEventCount?: IntegerParameterValueType;
77
82
  maximumDamageReceivedEventCount?: IntegerParameterValueType;
83
+ absorbedDamageFactor?: NumberParameterValueType;
84
+ maximumDamageAbsorbed?: NumberParameterValueType;
85
+ destroysOnMaximumDamageAbsorbed?: BooleanParameterValueType;
78
86
  damageOnExpiration?: NumberParameterValueType;
79
87
  healingOnExpiration?: NumberParameterValueType;
80
88
  killsOnExpiration?: BooleanParameterValueType;
@@ -118,22 +126,26 @@ declare const enum BuffPropertyKey {
118
126
  MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 132,
119
127
  DAMAGE_RECEIVED_EVENT_COUNT = 133,
120
128
  MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 134,
121
- TURNS_INTO_GHOST = 135,
122
- STUNS = 136,
123
- IGNORES_STUN_IMMUNITY = 137,
124
- DISABLES_AUTO_ATTACK = 138,
125
- PROVIDES_INVULNERABILITY = 139,
126
- KILLS_ON_EXPIRATION = 140,
127
- EXPLODES_ON_EXPIRATION = 141,
128
- MISS_PROBABILITY = 142,
129
- ABILITY_COOLDOWN_FACTOR = 143,
130
- ABILITY_COOLDOWN_MODIFIER = 144
129
+ ABSORBED_DAMAGE_FACTOR = 135,
130
+ MAXIMUM_DAMAGE_ABSORBED = 136,
131
+ DAMAGE_ABSORBED = 137,
132
+ DESTROYS_ON_MAXIMUM_DAMAGE_ABSORBED = 138,
133
+ TURNS_INTO_GHOST = 139,
134
+ STUNS = 140,
135
+ IGNORES_STUN_IMMUNITY = 141,
136
+ DISABLES_AUTO_ATTACK = 142,
137
+ PROVIDES_INVULNERABILITY = 143,
138
+ KILLS_ON_EXPIRATION = 144,
139
+ EXPLODES_ON_EXPIRATION = 145,
140
+ MISS_PROBABILITY = 146,
141
+ ABILITY_COOLDOWN_FACTOR = 147,
142
+ ABILITY_COOLDOWN_MODIFIER = 148
131
143
  }
132
144
  export declare const enum BuffTypeIdSelectionPolicy {
133
145
  LEAST_DURATION = 0
134
146
  }
135
147
  export type BuffAdditionalParameters = Prohibit<Record<string, any>, keyof BuffParameters>;
136
- export type BuffConstructorParameters<AdditionalParameters extends BuffAdditionalParameters> = [
148
+ export type BuffConstructorParameters<T extends Buff<BuffAdditionalParameters>> = T extends Buff<infer AdditionalParameters> ? [
137
149
  ...typeId: [ApplicableBuffTypeId] | [
138
150
  typeIds: ReadonlyNonEmptyArray<ApplicableBuffTypeId>,
139
151
  typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
@@ -141,10 +153,12 @@ export type BuffConstructorParameters<AdditionalParameters extends BuffAdditiona
141
153
  polarity: BuffPolarityParameterType,
142
154
  resistanceType: BuffResistanceTypeParameterType,
143
155
  ...abilityOrParameters: [
144
- ability?: Ability,
156
+ ability?: Ability | AbilityBehavior,
145
157
  parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
146
- ] | [parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>]
147
- ];
158
+ ] | [
159
+ parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
160
+ ]
161
+ ] : never;
148
162
  export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = object> extends UnitBehavior {
149
163
  private _unit;
150
164
  protected readonly __additionalParametersBrand?: AdditionalParameters;
@@ -183,6 +197,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
183
197
  private [BuffPropertyKey.DAMAGE_DEALT_EVENT_COUNT]?;
184
198
  private [BuffPropertyKey.MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT]?;
185
199
  private [BuffPropertyKey.DAMAGE_RECEIVED_EVENT_COUNT]?;
200
+ private [BuffPropertyKey.ABSORBED_DAMAGE_FACTOR]?;
201
+ private [BuffPropertyKey.MAXIMUM_DAMAGE_ABSORBED]?;
202
+ private [BuffPropertyKey.DAMAGE_ABSORBED]?;
203
+ private [BuffPropertyKey.DESTROYS_ON_MAXIMUM_DAMAGE_ABSORBED]?;
186
204
  private [BuffPropertyKey.TURNS_INTO_GHOST]?;
187
205
  private [BuffPropertyKey.STUNS]?;
188
206
  private [BuffPropertyKey.IGNORES_STUN_IMMUNITY]?;
@@ -197,10 +215,11 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
197
215
  readonly typeId: ApplicableBuffTypeId;
198
216
  readonly polarity: BuffPolarity;
199
217
  readonly resistanceType: BuffResistanceType;
200
- readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any : keyof AdditionalParameters extends never ? undefined : {
218
+ readonly parameters: IsExactlyAny<AdditionalParameters> extends true ? any : AdditionalParameters extends Record<PropertyKey, never> ? undefined : {
201
219
  [K in keyof Omit<AdditionalParameters, keyof BuffParameters>]: AdditionalParameters[K] extends AbilityDependentValue<infer T> ? T : AdditionalParameters[K];
202
220
  };
203
221
  private readonly handle;
222
+ readonly previousBuff?: Buff;
204
223
  private _timer?;
205
224
  private readonly _level?;
206
225
  private readonly _spellStealPriority?;
@@ -208,7 +227,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
208
227
  private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
209
228
  private readonly _abilityTypeIds?;
210
229
  private _behaviors?;
211
- constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters>);
230
+ constructor(target: Unit, ...parameters: BuffConstructorParameters<Buff<AdditionalParameters>>);
212
231
  get level(): number;
213
232
  get remainingDamageOverDuration(): number;
214
233
  set remainingDamageOverDuration(remainingDamageOverDuration: number);
@@ -236,6 +255,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
236
255
  set receivedDamageFactor(receivedDamageFactor: number);
237
256
  get armorIncrease(): number;
238
257
  set armorIncrease(armorIncrease: number);
258
+ get maxHealthIncrease(): number;
259
+ set maxHealthIncrease(maxHealthIncrease: number);
260
+ get maxManaIncrease(): number;
261
+ set maxManaIncrease(maxManaIncrease: number);
239
262
  get turnsIntoGhost(): boolean;
240
263
  set turnsIntoGhost(turnsIntoGhost: boolean);
241
264
  get stuns(): boolean;
@@ -264,9 +287,19 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
264
287
  set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: number);
265
288
  get evasionProbability(): number;
266
289
  set evasionProbability(evasionProbability: number);
290
+ get manaRegenerationRateIncreaseFactor(): number;
291
+ set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: number);
267
292
  get duration(): number;
293
+ set duration(duration: number);
268
294
  get remainingDuration(): number;
269
295
  set remainingDuration(remainingDuration: number);
296
+ get absorbedDamageFactor(): number;
297
+ set absorbedDamageFactor(absorbedDamageFactor: number);
298
+ get maximumDamageAbsorbed(): number;
299
+ set maximumDamageAbsorbed(maximumDamageAbsorbed: number);
300
+ get damageAbsorbed(): number;
301
+ get destroysOnMaximumDamageAbsorbed(): boolean;
302
+ set destroysOnMaximumDamageAbsorbed(destroysOnMaximumDamageAbsorbed: boolean);
270
303
  get abilityCooldownFactor(): number;
271
304
  set abilityCooldownFactor(abilityCooldownFactor: number);
272
305
  onAbilityGained(ability: Ability): void;
@@ -275,7 +308,12 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
275
308
  ...widgetOrXY: [] | [Widget] | [x: number, x: number],
276
309
  ...parametersOrDuration: [] | [EffectParameters] | [number]
277
310
  ]): void;
278
- flashSpecialEffect(...parameters: [...widget: [] | [Widget], ...duration: [] | [number]]): void;
311
+ flashSpecialEffect(...parameters: [
312
+ ...widgetOrXY: [] | [Widget] | [x: number, x: number],
313
+ ...parametersOrDuration: [] | [EffectParameters] | [number]
314
+ ]): void;
315
+ private flash;
316
+ expire(): void;
279
317
  protected onCreate(): void;
280
318
  protected onDestroy(): Destructor;
281
319
  static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;