warscript 0.0.1-dev.ff2a62d → 0.0.1-dev.ff5dbcd

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 (123) hide show
  1. package/config.d.ts +5 -0
  2. package/config.lua +10 -0
  3. package/core/types/effect.d.ts +13 -3
  4. package/core/types/effect.lua +116 -17
  5. package/core/types/frame.d.ts +6 -0
  6. package/core/types/frame.lua +91 -1
  7. package/core/types/sound.d.ts +1 -0
  8. package/core/types/sound.lua +36 -2
  9. package/core/util.d.ts +1 -1
  10. package/core/util.lua +18 -1
  11. package/engine/behavior.d.ts +2 -2
  12. package/engine/behavior.lua +6 -6
  13. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  14. package/engine/behaviour/ability/always-enabled.lua +31 -0
  15. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  16. package/engine/behaviour/ability/apply-buff.lua +32 -0
  17. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  18. package/engine/behaviour/ability/emulate-impact.lua +28 -0
  19. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  20. package/engine/behaviour/ability/instant-impact.lua +4 -19
  21. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  22. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  23. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  24. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  25. package/engine/behaviour/ability.d.ts +15 -3
  26. package/engine/behaviour/ability.lua +93 -34
  27. package/engine/behaviour/unit.d.ts +5 -0
  28. package/engine/behaviour/unit.lua +20 -0
  29. package/engine/buff.d.ts +78 -42
  30. package/engine/buff.lua +351 -223
  31. package/engine/internal/ability.d.ts +16 -13
  32. package/engine/internal/ability.lua +80 -76
  33. package/engine/internal/item/ability.lua +106 -0
  34. package/engine/internal/item+owner.lua +2 -2
  35. package/engine/internal/item.d.ts +2 -2
  36. package/engine/internal/item.lua +56 -25
  37. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  38. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  39. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  40. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  41. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  42. package/engine/internal/object-data/evasion-probability.lua +16 -0
  43. package/engine/internal/unit/ability.d.ts +10 -1
  44. package/engine/internal/unit/ability.lua +36 -14
  45. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  46. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  47. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  48. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  49. package/engine/internal/unit/bonus.d.ts +6 -2
  50. package/engine/internal/unit/bonus.lua +23 -1
  51. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  52. package/engine/internal/unit/ignore-events-items.lua +5 -0
  53. package/engine/internal/unit/item.d.ts +24 -0
  54. package/engine/internal/unit/item.lua +78 -0
  55. package/engine/internal/unit/main-selected.d.ts +13 -0
  56. package/engine/internal/unit/main-selected.lua +51 -0
  57. package/engine/internal/unit+ability.lua +2 -2
  58. package/engine/internal/unit-missile-launch.lua +24 -5
  59. package/engine/internal/unit.d.ts +26 -10
  60. package/engine/internal/unit.lua +162 -81
  61. package/engine/internal/utility.lua +12 -0
  62. package/engine/lightning.d.ts +12 -5
  63. package/engine/lightning.lua +48 -14
  64. package/engine/local-client.d.ts +7 -2
  65. package/engine/local-client.lua +82 -0
  66. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  67. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  68. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  69. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  70. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  71. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  72. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  73. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  74. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  75. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  76. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  77. package/engine/object-data/entry/ability-type.d.ts +8 -6
  78. package/engine/object-data/entry/ability-type.lua +62 -27
  79. package/engine/object-data/entry/buff-type/applicable.lua +13 -37
  80. package/engine/object-data/entry/buff-type.d.ts +1 -1
  81. package/engine/object-data/entry/buff-type.lua +2 -2
  82. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  83. package/engine/object-data/entry/item-type.d.ts +15 -1
  84. package/engine/object-data/entry/item-type.lua +93 -2
  85. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  86. package/engine/object-data/entry/sound-preset.d.ts +16 -0
  87. package/engine/object-data/entry/sound-preset.lua +36 -0
  88. package/engine/object-data/entry/unit-type.d.ts +8 -1
  89. package/engine/object-data/entry/unit-type.lua +61 -8
  90. package/engine/object-data/entry/upgrade.d.ts +1 -1
  91. package/engine/object-data/entry/upgrade.lua +4 -4
  92. package/engine/object-data/entry.d.ts +16 -14
  93. package/engine/object-data/entry.lua +60 -32
  94. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  95. package/engine/object-field/ability.d.ts +26 -3
  96. package/engine/object-field/ability.lua +54 -1
  97. package/engine/object-field.d.ts +2 -2
  98. package/engine/object-field.lua +4 -0
  99. package/engine/standard/entries/sound-preset.d.ts +10 -0
  100. package/engine/standard/entries/sound-preset.lua +10 -0
  101. package/engine/standard/fields/ability.d.ts +2 -0
  102. package/engine/standard/fields/ability.lua +2 -0
  103. package/engine/unit.d.ts +3 -0
  104. package/engine/unit.lua +3 -0
  105. package/index.d.ts +1 -0
  106. package/index.lua +1 -0
  107. package/net/socket.d.ts +7 -1
  108. package/net/socket.lua +45 -4
  109. package/network.d.ts +1 -0
  110. package/network.lua +3 -2
  111. package/objutil/buff.lua +1 -1
  112. package/objutil/unit.lua +8 -0
  113. package/package.json +2 -2
  114. package/patch-lua.d.ts +0 -0
  115. package/patch-lua.lua +10 -0
  116. package/utility/arrays.d.ts +8 -1
  117. package/utility/arrays.lua +34 -3
  118. package/utility/lazy.d.ts +2 -0
  119. package/utility/lazy.lua +14 -0
  120. package/utility/linked-set.d.ts +11 -2
  121. package/utility/linked-set.lua +5 -2
  122. package/utility/reflection.lua +11 -7
  123. package/utility/types.d.ts +1 -0
package/engine/buff.d.ts CHANGED
@@ -5,16 +5,21 @@ import { Ability } from "./internal/ability";
5
5
  import { AbilityTypeId } from "./object-data/entry/ability-type";
6
6
  import { BuffPolarity } from "./object-data/auxiliary/buff-polarity";
7
7
  import { BuffResistanceType } from "./object-data/auxiliary/buff-resistance-type";
8
- import { AbilityBooleanField, AbilityBooleanLevelField, AbilityCombatClassificationsLevelField, AbilityDependentValue, AbilityIntegerField, AbilityIntegerLevelField, AbilityNumberField, AbilityNumberLevelField } from "./object-field/ability";
8
+ import { AbilityBooleanField, AbilityBooleanLevelField, AbilityCombatClassificationsLevelField, AbilityDependentValue, AbilityEnumLevelField, AbilityIntegerField, AbilityIntegerLevelField, AbilityNumberField, AbilityNumberLevelField } from "./object-field/ability";
9
9
  import { CombatClassifications } from "./object-data/auxiliary/combat-classification";
10
- import { IsExactlyAny, NonEmptyArray, Prohibit } from "../utility/types";
10
+ import { IsExactlyAny, Prohibit, ReadonlyNonEmptyArray } from "../utility/types";
11
+ import { EffectParameters } from "../core/types/effect";
11
12
  import { UnitBehavior } from "./behaviour/unit";
12
13
  import type { Widget } from "../core/types/widget";
13
14
  import { Destructor } from "../destroyable";
15
+ import { Event } from "../event";
14
16
  export type BuffConstructor<T extends Buff<any> = Buff<any>, Args extends any[] = any> = OmitConstructor<typeof Buff<any>> & (new (...args: Args) => T);
17
+ type EnumParameterValueType<T extends number> = T | AbilityEnumLevelField<T>;
15
18
  type NumberParameterValueType = number | AbilityNumberField | AbilityNumberLevelField;
16
19
  type IntegerParameterValueType = number | AbilityIntegerField | AbilityIntegerLevelField;
17
20
  type BooleanParameterValueType = boolean | AbilityBooleanField | AbilityBooleanLevelField;
21
+ export type BuffPolarityParameterType = EnumParameterValueType<BuffPolarity>;
22
+ export type BuffResistanceTypeParameterType = EnumParameterValueType<BuffResistanceType>;
18
23
  export declare class BuffUniqueGroup {
19
24
  }
20
25
  export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
@@ -51,6 +56,9 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
51
56
  armorIncreaseFactor?: NumberParameterValueType;
52
57
  attackSpeedIncreaseFactor?: NumberParameterValueType;
53
58
  movementSpeedIncreaseFactor?: NumberParameterValueType;
59
+ evasionProbability?: NumberParameterValueType;
60
+ missProbability?: NumberParameterValueType;
61
+ damageFactor?: NumberParameterValueType;
54
62
  receivedDamageFactor?: NumberParameterValueType;
55
63
  receivedMagicDamageFactor?: NumberParameterValueType;
56
64
  durationIncreaseOnAutoAttack?: NumberParameterValueType;
@@ -64,6 +72,8 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
64
72
  disablesAutoAttack?: BooleanParameterValueType;
65
73
  destroysOnDamage?: BooleanParameterValueType;
66
74
  maximumAutoAttackCount?: IntegerParameterValueType;
75
+ maximumDamageDealtEventCount?: IntegerParameterValueType;
76
+ maximumDamageReceivedEventCount?: IntegerParameterValueType;
67
77
  damageOnExpiration?: NumberParameterValueType;
68
78
  healingOnExpiration?: NumberParameterValueType;
69
79
  killsOnExpiration?: BooleanParameterValueType;
@@ -71,42 +81,48 @@ export type BuffParameters<T extends Buff<any> = Buff> = Buff extends T ? {
71
81
  uniqueGroup?: BuffUniqueGroup;
72
82
  } : BuffParameters & (T extends Buff<infer AdditionalParameters> ? AdditionalParameters : object);
73
83
  declare const enum BuffPropertyKey {
74
- UNIT = 100,
75
- SOURCE = 101,
76
- DURATION = 102,
77
- UNIQUE_GROUP = 103,
78
- EFFECT_MODEL_PATH = 104,
79
- SPECIAL_EFFECT_MODEL_PATH = 105,
80
- DURATION_INCREASE_ON_AUTO_ATTACK = 106,
81
- MAXIMUM_DURATION = 107,
82
- MAXIMUM_REMAINING_DURATION = 108,
83
- DAMAGE_OVER_DURATION = 109,
84
- DAMAGE_PER_INTERVAL = 110,
85
- DAMAGE_INTERVAL = 111,
86
- REMAINING_DAMAGE_OVER_DURATION = 112,
87
- DAMAGE_INTERVAL_TIMER = 113,
88
- HEALING_OVER_DURATION = 114,
89
- HEALING_PER_INTERVAL = 115,
90
- HEALING_INTERVAL = 116,
91
- REMAINING_HEALING_OVER_DURATION = 117,
92
- HEALING_INTERVAL_TIMER = 118,
93
- DAMAGE_ON_EXPIRATION = 119,
94
- HEALING_ON_EXPIRATION = 120,
95
- DAMAGE_UPON_DEATH_ALLOWED_TARGET_CLASSIFICATIONS = 121,
96
- DAMAGE_UPON_DEATH = 122,
97
- DAMAGE_UPON_DEATH_RANGE = 123,
98
- MEDIUM_DAMAGE_UPON_DEATH = 124,
99
- MEDIUM_DAMAGE_UPON_DEATH_RANGE = 125,
100
- SMALL_DAMAGE_UPON_DEATH = 126,
101
- SMALL_DAMAGE_UPON_DEATH_RANGE = 127,
102
- AUTO_ATTACK_COUNT = 128,
103
- MAXIMUM_AUTO_ATTACK_COUNT = 129,
104
- STUNS = 130,
105
- IGNORES_STUN_IMMUNITY = 131,
106
- DISABLES_AUTO_ATTACK = 132,
107
- PROVIDES_INVULNERABILITY = 133,
108
- KILLS_ON_EXPIRATION = 134,
109
- EXPLODES_ON_EXPIRATION = 135
84
+ STATE = 100,
85
+ UNIT = 101,
86
+ SOURCE = 102,
87
+ DURATION = 103,
88
+ UNIQUE_GROUP = 104,
89
+ EFFECT_MODEL_PATH = 105,
90
+ SPECIAL_EFFECT_MODEL_PATH = 106,
91
+ DURATION_INCREASE_ON_AUTO_ATTACK = 107,
92
+ MAXIMUM_DURATION = 108,
93
+ MAXIMUM_REMAINING_DURATION = 109,
94
+ DAMAGE_OVER_DURATION = 110,
95
+ DAMAGE_PER_INTERVAL = 111,
96
+ DAMAGE_INTERVAL = 112,
97
+ REMAINING_DAMAGE_OVER_DURATION = 113,
98
+ DAMAGE_INTERVAL_TIMER = 114,
99
+ HEALING_OVER_DURATION = 115,
100
+ HEALING_PER_INTERVAL = 116,
101
+ HEALING_INTERVAL = 117,
102
+ REMAINING_HEALING_OVER_DURATION = 118,
103
+ HEALING_INTERVAL_TIMER = 119,
104
+ DAMAGE_ON_EXPIRATION = 120,
105
+ HEALING_ON_EXPIRATION = 121,
106
+ DAMAGE_UPON_DEATH_ALLOWED_TARGET_CLASSIFICATIONS = 122,
107
+ DAMAGE_UPON_DEATH = 123,
108
+ DAMAGE_UPON_DEATH_RANGE = 124,
109
+ MEDIUM_DAMAGE_UPON_DEATH = 125,
110
+ MEDIUM_DAMAGE_UPON_DEATH_RANGE = 126,
111
+ SMALL_DAMAGE_UPON_DEATH = 127,
112
+ SMALL_DAMAGE_UPON_DEATH_RANGE = 128,
113
+ AUTO_ATTACK_COUNT = 129,
114
+ MAXIMUM_AUTO_ATTACK_COUNT = 130,
115
+ DAMAGE_DEALT_EVENT_COUNT = 131,
116
+ MAXIMUM_DAMAGE_DEALT_EVENT_COUNT = 132,
117
+ DAMAGE_RECEIVED_EVENT_COUNT = 133,
118
+ MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT = 134,
119
+ STUNS = 135,
120
+ IGNORES_STUN_IMMUNITY = 136,
121
+ DISABLES_AUTO_ATTACK = 137,
122
+ PROVIDES_INVULNERABILITY = 138,
123
+ KILLS_ON_EXPIRATION = 139,
124
+ EXPLODES_ON_EXPIRATION = 140,
125
+ MISS_PROBABILITY = 141
110
126
  }
111
127
  export declare const enum BuffTypeIdSelectionPolicy {
112
128
  LEAST_DURATION = 0
@@ -114,11 +130,11 @@ export declare const enum BuffTypeIdSelectionPolicy {
114
130
  export type BuffAdditionalParameters = Prohibit<Record<string, any>, keyof BuffParameters>;
115
131
  export type BuffConstructorParameters<AdditionalParameters extends BuffAdditionalParameters> = [
116
132
  ...typeId: [ApplicableBuffTypeId] | [
117
- typeIds: NonEmptyArray<ApplicableBuffTypeId>,
133
+ typeIds: ReadonlyNonEmptyArray<ApplicableBuffTypeId>,
118
134
  typeIdSelectionPolicy: BuffTypeIdSelectionPolicy
119
135
  ],
120
- polarity: BuffPolarity,
121
- resistanceType: BuffResistanceType,
136
+ polarity: BuffPolarityParameterType,
137
+ resistanceType: BuffResistanceTypeParameterType,
122
138
  ...abilityOrParameters: [
123
139
  ability: Ability,
124
140
  parameters?: BuffParameters & Omit<AdditionalParameters, keyof BuffParameters>
@@ -127,6 +143,7 @@ export type BuffConstructorParameters<AdditionalParameters extends BuffAdditiona
127
143
  export declare class Buff<AdditionalParameters extends Prohibit<Record<string, any>, keyof BuffParameters> = object> extends UnitBehavior {
128
144
  private _unit;
129
145
  protected readonly __additionalParametersBrand?: AdditionalParameters;
146
+ private [BuffPropertyKey.STATE];
130
147
  private [BuffPropertyKey.UNIT];
131
148
  private [BuffPropertyKey.SOURCE]?;
132
149
  private [BuffPropertyKey.DURATION];
@@ -157,6 +174,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
157
174
  private [BuffPropertyKey.SMALL_DAMAGE_UPON_DEATH_RANGE]?;
158
175
  private [BuffPropertyKey.MAXIMUM_AUTO_ATTACK_COUNT]?;
159
176
  private [BuffPropertyKey.AUTO_ATTACK_COUNT]?;
177
+ private [BuffPropertyKey.MAXIMUM_DAMAGE_DEALT_EVENT_COUNT]?;
178
+ private [BuffPropertyKey.DAMAGE_DEALT_EVENT_COUNT]?;
179
+ private [BuffPropertyKey.MAXIMUM_DAMAGE_RECEIVED_EVENT_COUNT]?;
180
+ private [BuffPropertyKey.DAMAGE_RECEIVED_EVENT_COUNT]?;
160
181
  private [BuffPropertyKey.STUNS]?;
161
182
  private [BuffPropertyKey.IGNORES_STUN_IMMUNITY]?;
162
183
  private [BuffPropertyKey.DISABLES_AUTO_ATTACK]?;
@@ -176,6 +197,7 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
176
197
  private readonly _level?;
177
198
  private readonly _spellStealPriority?;
178
199
  private readonly _learnLevelMinimum?;
200
+ private readonly [BuffPropertyKey.MISS_PROBABILITY]?;
179
201
  private _bonusIdByBonusType?;
180
202
  private readonly _abilityTypeIds?;
181
203
  private _behaviors?;
@@ -203,6 +225,8 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
203
225
  set damageOnExpiration(damageOnExpiration: number);
204
226
  get healingOnExpiration(): number;
205
227
  set healingOnExpiration(healingOnExpiration: number);
228
+ get damageFactor(): number;
229
+ set damageFactor(damageFactor: number);
206
230
  get receivedDamageFactor(): number;
207
231
  set receivedDamageFactor(receivedDamageFactor: number);
208
232
  get armorIncrease(): number;
@@ -219,6 +243,10 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
219
243
  set killsOnExpiration(killsOnExpiration: boolean);
220
244
  get explodesOnExpiration(): boolean;
221
245
  set explodesOnExpiration(killsOnExpiration: boolean);
246
+ get maximumDamageDealtEventCount(): number;
247
+ set maximumDamageDealtEventCount(maximumDamageDealtEventCount: number);
248
+ get maximumDamageReceivedEventCount(): number;
249
+ set maximumDamageReceivedEventCount(maximumDamageReceivedEventCount: number);
222
250
  get maximumAutoAttackCount(): number;
223
251
  set maximumAutoAttackCount(maximumAutoAttackCount: number);
224
252
  get durationIncreaseOnAutoAttack(): number;
@@ -227,16 +255,24 @@ export declare class Buff<AdditionalParameters extends Prohibit<Record<string, a
227
255
  set attackSpeedIncreaseFactor(attackSpeedIncreaseFactor: number);
228
256
  get movementSpeedIncreaseFactor(): number;
229
257
  set movementSpeedIncreaseFactor(movementSpeedIncreaseFactor: number);
258
+ get evasionProbability(): number;
259
+ set evasionProbability(evasionProbability: number);
230
260
  get duration(): number;
231
261
  get remainingDuration(): number;
232
262
  set remainingDuration(remainingDuration: number);
233
- flashEffect(...parameters: [...widget: [] | [Widget], ...duration: [] | [number]]): void;
263
+ flashEffect(...parameters: [
264
+ ...widgetOrXY: [] | [Widget] | [x: number, x: number],
265
+ ...parametersOrDuration: [] | [EffectParameters] | [number]
266
+ ]): void;
234
267
  flashSpecialEffect(...parameters: [...widget: [] | [Widget], ...duration: [] | [number]]): void;
268
+ protected onCreate(): void;
235
269
  protected onDestroy(): Destructor;
236
270
  static apply<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, ...args: Args): T | undefined;
237
271
  static getByTypeId<T extends Buff<any>, Args extends any[]>(this: BuffConstructor<T, Args>, unit: Unit, typeId: ApplicableBuffTypeId): T | undefined;
238
272
  onExpiration(): void;
239
273
  onDeath(source: Unit | undefined): void;
240
274
  onDamageDealt(target: Unit, event: DamageEvent): void;
275
+ onDamageReceived(source: Unit | undefined, event: DamageEvent): void;
276
+ static readonly destroyEvent: Event<[Buff<object>]>;
241
277
  }
242
278
  export {};