warscript 0.0.1-dev.f074376 → 0.0.1-dev.f0daa48

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 (67) hide show
  1. package/core/types/sound.lua +1 -1
  2. package/engine/behaviour/ability.d.ts +9 -5
  3. package/engine/behaviour/ability.lua +29 -0
  4. package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
  5. package/engine/behaviour/unit/stun-immunity.lua +5 -4
  6. package/engine/behaviour/unit.lua +13 -3
  7. package/engine/buff.d.ts +52 -19
  8. package/engine/buff.lua +266 -141
  9. package/engine/internal/mechanics/cast-ability.lua +6 -3
  10. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  11. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  12. package/engine/internal/object-data/health-bonus.lua +16 -0
  13. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  14. package/engine/internal/object-data/mana-bonus.lua +16 -0
  15. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +1 -1
  16. package/engine/internal/unit/attributes.d.ts +17 -0
  17. package/engine/internal/unit/attributes.lua +46 -0
  18. package/engine/internal/unit/bonus.d.ts +4 -0
  19. package/engine/internal/unit/bonus.lua +23 -3
  20. package/engine/internal/unit/fly-height.lua +3 -3
  21. package/engine/internal/unit/interrupts.d.ts +12 -0
  22. package/engine/internal/unit/interrupts.lua +28 -0
  23. package/engine/internal/unit/item.lua +1 -1
  24. package/engine/internal/unit/range-event.d.ts +12 -0
  25. package/engine/internal/unit/range-event.lua +90 -0
  26. package/engine/internal/unit/scale.lua +3 -3
  27. package/engine/internal/unit+bonus.lua +3 -3
  28. package/engine/internal/unit-missile-launch.lua +12 -5
  29. package/engine/internal/unit.d.ts +2 -9
  30. package/engine/internal/unit.lua +79 -121
  31. package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
  32. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
  33. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  34. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  35. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  36. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  37. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  38. package/engine/object-data/entry/ability-type/mana-regeneration.lua +1 -1
  39. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  40. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  41. package/engine/object-data/entry/ability-type.d.ts +2 -0
  42. package/engine/object-data/entry/ability-type.lua +84 -4
  43. package/engine/object-data/entry/buff-type/applicable.lua +113 -109
  44. package/engine/object-field/ability.lua +2 -2
  45. package/engine/object-field.d.ts +3 -1
  46. package/engine/object-field.lua +42 -18
  47. package/engine/random.d.ts +1 -0
  48. package/engine/random.lua +8 -0
  49. package/engine/standard/fields/unit.d.ts +11 -6
  50. package/engine/standard/fields/unit.lua +12 -5
  51. package/engine/unit.d.ts +3 -0
  52. package/engine/unit.lua +3 -0
  53. package/lualib_bundle.lua +118 -47
  54. package/objutil/buff.lua +9 -7
  55. package/objutil/object.lua +1 -1
  56. package/operation.lua +23 -17
  57. package/package.json +5 -5
  58. package/patch-lua.lua +15 -0
  59. package/utility/linked-map.d.ts +34 -0
  60. package/utility/linked-map.lua +101 -0
  61. package/utility/linked-set.d.ts +2 -1
  62. package/utility/linked-set.lua +21 -0
  63. package/utility/records.lua +20 -1
  64. /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
  65. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  66. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  67. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -22,7 +22,7 @@ local setSoundPlayPosition = SetSoundPlayPosition
22
22
  local stopSound = StopSound
23
23
  local attachSoundToUnit = AttachSoundToUnit
24
24
  local killSoundWhenDone = KillSoundWhenDone
25
- ____exports.SoundChannel = SoundChannel or ({})
25
+ ____exports.SoundChannel = ____exports.SoundChannel or ({})
26
26
  ____exports.SoundChannel.General = 0
27
27
  ____exports.SoundChannel[____exports.SoundChannel.General] = "General"
28
28
  ____exports.SoundChannel.UnitSelection = 1
@@ -26,16 +26,20 @@ export declare abstract class AbilityBehavior<Parameters extends {
26
26
  get unit(): Unit | undefined;
27
27
  protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value: AbilityDependentValue<T>): T;
28
28
  protected resolveCurrentAbilityDependentValue<T extends boolean | number | string>(value?: AbilityDependentValue<T>): T | undefined;
29
- protected flashCasterEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
30
- protected flashTargetEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
31
- protected flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
32
- protected flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
33
- protected flashSpecialEffect(...args: [
29
+ flashCasterEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
30
+ flashTargetEffect(widget: Widget, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
31
+ flashAreaEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
32
+ flashEffect(x: number, y: number, ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]): void;
33
+ flashSpecialEffect(...args: [
34
34
  ...pointOrWidget: [x: number, y: number] | [widget: Widget],
35
35
  ...parametersOrDuration: [parameters?: EffectParameters] | [duration?: number, parameters?: EffectParameters]
36
36
  ]): void;
37
37
  private static MissileLaunchConfig;
38
38
  private get missileLaunchConfig();
39
+ protected launchMissile(source: Unit, ...args: [
40
+ ...pointOrWidget: [x: number, y: number] | [widget: Unit /** TODO: support Widget */],
41
+ ...parameters: NonNullable<Parameters["missileParameters"]>
42
+ ]): void;
39
43
  protected onCreate(): void;
40
44
  onValueChange(_value: ReadonlySubscribableAbilityDependentValue<string | number | boolean>): void;
41
45
  onMissileArrival(...parameters: NonNullable<Parameters["missileParameters"]>): void;
@@ -30,7 +30,14 @@ local ____ability = require("engine.object-field.ability")
30
30
  local AbilityField = ____ability.AbilityField
31
31
  local AbilityLevelField = ____ability.AbilityLevelField
32
32
  local resolveCurrentAbilityDependentValue = ____ability.resolveCurrentAbilityDependentValue
33
+ local ____missile = require("core.types.missile")
34
+ local Missile = ____missile.Missile
33
35
  local createBehaviorFunctionsByAbilityTypeId = {}
36
+ local function invokeOnMissileArrival(_missile, success, abilityBehavior, ...)
37
+ if success then
38
+ abilityBehavior:onMissileArrival(...)
39
+ end
40
+ end
34
41
  local exclusiveOnImpactHandlerAbilityBehaviorByAbility = setmetatable({}, {__mode = "k"})
35
42
  local function createUnitEventListener(key)
36
43
  return function(unit, ability, ...)
@@ -160,6 +167,28 @@ function AbilityBehavior.prototype.flashSpecialEffect(self, xOrWidget, yOrParame
160
167
  )
161
168
  end
162
169
  end
170
+ function AbilityBehavior.prototype.launchMissile(self, source, xOrWidget, yOrParameter, ...)
171
+ if type(xOrWidget) ~= "number" then
172
+ Missile:launch(
173
+ self.missileLaunchConfig,
174
+ source,
175
+ xOrWidget,
176
+ invokeOnMissileArrival,
177
+ self,
178
+ yOrParameter,
179
+ ...
180
+ )
181
+ else
182
+ Missile:launch(
183
+ self.missileLaunchConfig,
184
+ source,
185
+ vec2(xOrWidget, yOrParameter),
186
+ invokeOnMissileArrival,
187
+ self,
188
+ ...
189
+ )
190
+ end
191
+ end
163
192
  function AbilityBehavior.prototype.onCreate(self)
164
193
  end
165
194
  function AbilityBehavior.prototype.onValueChange(self, _value)
@@ -7,7 +7,7 @@ import { Destructor } from "../../../destroyable";
7
7
  import { BehaviorPriority } from "../../behavior";
8
8
  export type StunImmunityUnitBehaviorParameters = {
9
9
  readonly priority?: BehaviorPriority;
10
- buffTypeIds?: LuaSet<BuffTypeId>;
10
+ buffTypeIds?: readonly BuffTypeId[];
11
11
  textTagPreset?: TextTagPreset;
12
12
  textTagText?: string;
13
13
  additionalAction?: (this: void, unit: Unit) => void;
@@ -8,14 +8,15 @@ local UnitBehavior = ____unit.UnitBehavior
8
8
  local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
9
9
  local AbilityType = ____ability_2Dtype.AbilityType
10
10
  local ____arrays = require("utility.arrays")
11
- local flatMapToLuaSet = ____arrays.flatMapToLuaSet
11
+ local distinct = ____arrays.distinct
12
+ local flatMap = ____arrays.flatMap
12
13
  local map = ____arrays.map
13
14
  local ____text_2Dtag = require("engine.text-tag")
14
15
  local TextTag = ____text_2Dtag.TextTag
15
16
  local ____timer = require("core.types.timer")
16
17
  local Timer = ____timer.Timer
17
18
  local DEFAULT_BUFF_TYPE_IDS = postcompile(function()
18
- return flatMapToLuaSet(
19
+ return distinct(flatMap(
19
20
  AbilityType:getAllByBaseIds(map({
20
21
  "AHtb",
21
22
  "AHbh",
@@ -41,11 +42,11 @@ local DEFAULT_BUFF_TYPE_IDS = postcompile(function()
41
42
  "ACcb"
42
43
  }, fourCC)),
43
44
  function(abilityType) return __TS__ArrayFlat(abilityType.buffTypeIds) end
44
- )
45
+ ))
45
46
  end)
46
47
  local function process(behavior)
47
48
  local hasRemovedBuffs = false
48
- for buffTypeId in pairs(behavior.parameters.buffTypeIds or DEFAULT_BUFF_TYPE_IDS) do
49
+ for ____, buffTypeId in ipairs(behavior.parameters.buffTypeIds or DEFAULT_BUFF_TYPE_IDS) do
49
50
  hasRemovedBuffs = hasRemovedBuffs or behavior.unit:removeBuff(buffTypeId)
50
51
  end
51
52
  if hasRemovedBuffs then
@@ -21,6 +21,8 @@ local ____bonus = require("engine.internal.unit.bonus")
21
21
  local addOrUpdateOrRemoveUnitBonus = ____bonus.addOrUpdateOrRemoveUnitBonus
22
22
  local getUnitBonus = ____bonus.getUnitBonus
23
23
  local removeUnitBonus = ____bonus.removeUnitBonus
24
+ local ____linked_2Dmap = require("utility.linked-map")
25
+ local LinkedMap = ____linked_2Dmap.LinkedMap
24
26
  local safeCall = warpack.safeCall
25
27
  local createBehaviorFunctionsByUnitTypeId = {}
26
28
  local behaviorsByOwningPlayerEvent = {}
@@ -79,16 +81,24 @@ function UnitBehavior.prototype.onDestroy(self)
79
81
  end
80
82
  function UnitBehavior.prototype.getUnitBonus(self, bonusType)
81
83
  local ____opt_10 = self._bonusIdByBonusType
82
- local bonusId = ____opt_10 and ____opt_10[bonusType]
84
+ local bonusId = ____opt_10 and ____opt_10:get(bonusType)
83
85
  return bonusId == nil and 0 or getUnitBonus(self.object, bonusType, bonusId)
84
86
  end
85
87
  function UnitBehavior.prototype.addOrUpdateOrRemoveUnitBonus(self, bonusType, value)
86
88
  local bonusIdByBonusType = self._bonusIdByBonusType
87
89
  if bonusIdByBonusType == nil then
88
- bonusIdByBonusType = {}
90
+ bonusIdByBonusType = __TS__New(LinkedMap)
89
91
  self._bonusIdByBonusType = bonusIdByBonusType
90
92
  end
91
- bonusIdByBonusType[bonusType] = addOrUpdateOrRemoveUnitBonus(self.object, bonusType, bonusIdByBonusType[bonusType], value)
93
+ bonusIdByBonusType:put(
94
+ bonusType,
95
+ addOrUpdateOrRemoveUnitBonus(
96
+ self.object,
97
+ bonusType,
98
+ bonusIdByBonusType:get(bonusType),
99
+ value
100
+ )
101
+ )
92
102
  end
93
103
  function UnitBehavior.prototype.registerOwningPlayerEvent(self, event, extractPlayer, listener)
94
104
  local listenerByBehavior = getOrPut(listenerByBehaviorByOwningPlayerEvent, event, mutableLuaMap)
package/engine/buff.d.ts CHANGED
@@ -31,8 +31,10 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
31
31
  source?: Unit;
32
32
  behaviorConstructors?: (new (unit: Unit) => UnitBehavior)[];
33
33
  abilityTypeIds?: Record<AbilityTypeId, {
34
- [numberField: (AbilityNumberField | AbilityNumberLevelField) & symbol]: NumberParameterValueType;
35
- } & {
34
+ readonly fields?: [
35
+ AbilityNumberField | AbilityNumberLevelField,
36
+ NumberParameterValueType
37
+ ][];
36
38
  /** Default `true`. */
37
39
  readonly isButtonVisible?: boolean;
38
40
  /** Default is the level of the source ability or 0 if it is absent. */
@@ -54,7 +56,8 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
54
56
  damageIncrease?: NumberParameterValueType;
55
57
  damageIncreaseFactor?: NumberParameterValueType;
56
58
  armorIncrease?: NumberParameterValueType;
57
- armorIncreaseFactor?: NumberParameterValueType;
59
+ maxHealthIncrease?: NumberParameterValueType;
60
+ maxManaIncrease?: NumberParameterValueType;
58
61
  attackSpeedIncreaseFactor?: NumberParameterValueType;
59
62
  movementSpeedIncreaseFactor?: NumberParameterValueType;
60
63
  manaRegenerationRateIncreaseFactor?: NumberParameterValueType;
@@ -77,6 +80,9 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
77
80
  maximumAutoAttackCount?: IntegerParameterValueType;
78
81
  maximumDamageDealtEventCount?: IntegerParameterValueType;
79
82
  maximumDamageReceivedEventCount?: IntegerParameterValueType;
83
+ absorbedDamageFactor?: NumberParameterValueType;
84
+ maximumDamageAbsorbed?: NumberParameterValueType;
85
+ destroysOnMaximumDamageAbsorbed?: BooleanParameterValueType;
80
86
  damageOnExpiration?: NumberParameterValueType;
81
87
  healingOnExpiration?: NumberParameterValueType;
82
88
  killsOnExpiration?: BooleanParameterValueType;
@@ -120,22 +126,26 @@ declare const enum BuffPropertyKey {
120
126
  MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 132,
121
127
  DAMAGE_RECEIVED_EVENT_COUNT = 133,
122
128
  MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 134,
123
- TURNS_INTO_GHOST = 135,
124
- STUNS = 136,
125
- IGNORES_STUN_IMMUNITY = 137,
126
- DISABLES_AUTO_ATTACK = 138,
127
- PROVIDES_INVULNERABILITY = 139,
128
- KILLS_ON_EXPIRATION = 140,
129
- EXPLODES_ON_EXPIRATION = 141,
130
- MISS_PROBABILITY = 142,
131
- ABILITY_COOLDOWN_FACTOR = 143,
132
- 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
133
143
  }
134
144
  export declare const enum BuffTypeIdSelectionPolicy {
135
145
  LEAST_DURATION = 0
136
146
  }
137
147
  export type BuffAdditionalParameters = Prohibit<Record<string, any>, keyof BuffParameters>;
138
- export type BuffConstructorParameters<AdditionalParameters extends BuffAdditionalParameters> = [
148
+ export type BuffConstructorParameters<T extends Buff<BuffAdditionalParameters>> = T extends Buff<infer AdditionalParameters> ? [
139
149
  ...typeId: [ApplicableBuffTypeId] | [
140
150
  typeIds: ReadonlyNonEmptyArray<ApplicableBuffTypeId>,
141
151
  typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
@@ -145,8 +155,10 @@ export type BuffConstructorParameters<AdditionalParameters extends BuffAdditiona
145
155
  ...abilityOrParameters: [
146
156
  ability?: Ability | AbilityBehavior,
147
157
  parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
148
- ] | [parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>]
149
- ];
158
+ ] | [
159
+ parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
160
+ ]
161
+ ] : never;
150
162
  export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = object> extends UnitBehavior {
151
163
  private _unit;
152
164
  protected readonly __additionalParametersBrand?: AdditionalParameters;
@@ -185,6 +197,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
185
197
  private [BuffPropertyKey.DAMAGE_DEALT_EVENT_COUNT]?;
186
198
  private [BuffPropertyKey.MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT]?;
187
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]?;
188
204
  private [BuffPropertyKey.TURNS_INTO_GHOST]?;
189
205
  private [BuffPropertyKey.STUNS]?;
190
206
  private [BuffPropertyKey.IGNORES_STUN_IMMUNITY]?;
@@ -199,7 +215,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
199
215
  readonly typeId: ApplicableBuffTypeId;
200
216
  readonly polarity: BuffPolarity;
201
217
  readonly resistanceType: BuffResistanceType;
202
- 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 : {
203
219
  [K in keyof Omit<AdditionalParameters, keyof BuffParameters>]: AdditionalParameters[K] extends AbilityDependentValue<infer T> ? T : AdditionalParameters[K];
204
220
  };
205
221
  private readonly handle;
@@ -210,7 +226,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
210
226
  private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
211
227
  private readonly _abilityTypeIds?;
212
228
  private _behaviors?;
213
- constructor(target: Unit, ...parameters: BuffConstructorParameters<AdditionalParameters>);
229
+ constructor(target: Unit, ...parameters: BuffConstructorParameters<Buff<AdditionalParameters>>);
214
230
  get level(): number;
215
231
  get remainingDamageOverDuration(): number;
216
232
  set remainingDamageOverDuration(remainingDamageOverDuration: number);
@@ -238,6 +254,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
238
254
  set receivedDamageFactor(receivedDamageFactor: number);
239
255
  get armorIncrease(): number;
240
256
  set armorIncrease(armorIncrease: number);
257
+ get maxHealthIncrease(): number;
258
+ set maxHealthIncrease(maxHealthIncrease: number);
259
+ get maxManaIncrease(): number;
260
+ set maxManaIncrease(maxManaIncrease: number);
241
261
  get turnsIntoGhost(): boolean;
242
262
  set turnsIntoGhost(turnsIntoGhost: boolean);
243
263
  get stuns(): boolean;
@@ -269,8 +289,16 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
269
289
  get manaRegenerationRateIncreaseFactor(): number;
270
290
  set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: number);
271
291
  get duration(): number;
292
+ set duration(duration: number);
272
293
  get remainingDuration(): number;
273
294
  set remainingDuration(remainingDuration: number);
295
+ get absorbedDamageFactor(): number;
296
+ set absorbedDamageFactor(absorbedDamageFactor: number);
297
+ get maximumDamageAbsorbed(): number;
298
+ set maximumDamageAbsorbed(maximumDamageAbsorbed: number);
299
+ get damageAbsorbed(): number;
300
+ get destroysOnMaximumDamageAbsorbed(): boolean;
301
+ set destroysOnMaximumDamageAbsorbed(destroysOnMaximumDamageAbsorbed: boolean);
274
302
  get abilityCooldownFactor(): number;
275
303
  set abilityCooldownFactor(abilityCooldownFactor: number);
276
304
  onAbilityGained(ability: Ability): void;
@@ -279,7 +307,12 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
279
307
  ...widgetOrXY: [] | [Widget] | [x: number, x: number],
280
308
  ...parametersOrDuration: [] | [EffectParameters] | [number]
281
309
  ]): void;
282
- flashSpecialEffect(...parameters: [...widget: [] | [Widget], ...duration: [] | [number]]): void;
310
+ flashSpecialEffect(...parameters: [
311
+ ...widgetOrXY: [] | [Widget] | [x: number, x: number],
312
+ ...parametersOrDuration: [] | [EffectParameters] | [number]
313
+ ]): void;
314
+ private flash;
315
+ expire(): void;
283
316
  protected onCreate(): void;
284
317
  protected onDestroy(): Destructor;
285
318
  static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;