warscript 0.0.1-dev.172070c → 0.0.1-dev.1766d07

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 (185) hide show
  1. package/attributes.d.ts +5 -0
  2. package/attributes.lua +8 -1
  3. package/binaryreader.d.ts +1 -0
  4. package/binaryreader.lua +3 -0
  5. package/config.d.ts +5 -0
  6. package/config.lua +10 -0
  7. package/core/types/effect.d.ts +14 -6
  8. package/core/types/effect.lua +131 -35
  9. package/core/types/frame.d.ts +6 -0
  10. package/core/types/frame.lua +91 -1
  11. package/core/types/order.d.ts +1 -0
  12. package/core/types/order.lua +11 -1
  13. package/core/types/sound.d.ts +17 -24
  14. package/core/types/sound.lua +99 -24
  15. package/core/types/timer.d.ts +6 -7
  16. package/core/types/timer.lua +18 -21
  17. package/core/util.d.ts +1 -1
  18. package/core/util.lua +18 -1
  19. package/decl/native.d.ts +840 -786
  20. package/engine/behavior.d.ts +2 -2
  21. package/engine/behavior.lua +6 -6
  22. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  23. package/engine/behaviour/ability/always-enabled.lua +31 -0
  24. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  25. package/engine/behaviour/ability/apply-buff.lua +32 -0
  26. package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
  27. package/engine/behaviour/ability/damage.d.ts +32 -12
  28. package/engine/behaviour/ability/damage.lua +60 -30
  29. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  30. package/engine/behaviour/ability/emulate-impact.lua +42 -0
  31. package/engine/behaviour/ability/heal.d.ts +33 -6
  32. package/engine/behaviour/ability/heal.lua +89 -10
  33. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  34. package/engine/behaviour/ability/instant-impact.lua +4 -19
  35. package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
  36. package/engine/behaviour/ability/on-command-impact.lua +25 -0
  37. package/engine/behaviour/ability/remove-buffs.d.ts +16 -0
  38. package/engine/behaviour/ability/remove-buffs.lua +28 -0
  39. package/engine/behaviour/ability.d.ts +20 -4
  40. package/engine/behaviour/ability.lua +112 -39
  41. package/engine/behaviour/unit.d.ts +22 -0
  42. package/engine/behaviour/unit.lua +134 -4
  43. package/engine/buff.d.ts +101 -39
  44. package/engine/buff.lua +458 -203
  45. package/engine/internal/ability.d.ts +20 -13
  46. package/engine/internal/ability.lua +97 -76
  47. package/engine/internal/item/ability.lua +112 -4
  48. package/engine/internal/item+owner.lua +2 -2
  49. package/engine/internal/item.d.ts +7 -4
  50. package/engine/internal/item.lua +131 -28
  51. package/engine/internal/mechanics/ability-duration.lua +1 -1
  52. package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
  53. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  54. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  55. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  56. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  57. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  58. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  59. package/engine/internal/object-data/evasion-probability.lua +16 -0
  60. package/engine/internal/unit/ability.d.ts +15 -1
  61. package/engine/internal/unit/ability.lua +50 -14
  62. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  63. package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
  64. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  65. package/engine/internal/unit/add-item-to-slot.lua +52 -0
  66. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  67. package/engine/internal/unit/allowed-targets.lua +9 -1
  68. package/engine/internal/unit/bonus.d.ts +6 -2
  69. package/engine/internal/unit/bonus.lua +23 -1
  70. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  71. package/engine/internal/unit/ignore-events-items.lua +5 -0
  72. package/engine/internal/unit/item.d.ts +24 -0
  73. package/engine/internal/unit/item.lua +78 -0
  74. package/engine/internal/unit/main-selected.d.ts +13 -0
  75. package/engine/internal/unit/main-selected.lua +51 -0
  76. package/engine/internal/unit+ability.lua +2 -2
  77. package/engine/internal/unit+damage.d.ts +2 -11
  78. package/engine/internal/unit+damage.lua +10 -14
  79. package/engine/internal/unit+spellSteal.lua +1 -2
  80. package/engine/internal/unit-missile-launch.lua +25 -6
  81. package/engine/internal/unit.d.ts +51 -13
  82. package/engine/internal/unit.lua +329 -116
  83. package/engine/internal/utility.lua +12 -0
  84. package/engine/lightning.d.ts +12 -5
  85. package/engine/lightning.lua +48 -14
  86. package/engine/local-client.d.ts +7 -2
  87. package/engine/local-client.lua +82 -0
  88. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  89. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  90. package/engine/object-data/auxiliary/attachment-preset.d.ts +7 -2
  91. package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
  92. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  93. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  94. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  95. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  96. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  97. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  98. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  99. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  100. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  101. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  102. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  103. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  104. package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
  105. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  106. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  107. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  108. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  109. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  110. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  111. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  112. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  113. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  114. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  115. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  116. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  117. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  118. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  119. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  120. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  121. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  122. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  123. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  124. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  125. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  126. package/engine/object-data/entry/ability-type/web.lua +52 -0
  127. package/engine/object-data/entry/ability-type.d.ts +19 -17
  128. package/engine/object-data/entry/ability-type.lua +89 -33
  129. package/engine/object-data/entry/buff-type/applicable.lua +18 -37
  130. package/engine/object-data/entry/buff-type.d.ts +6 -12
  131. package/engine/object-data/entry/buff-type.lua +13 -29
  132. package/engine/object-data/entry/destructible-type.d.ts +1 -1
  133. package/engine/object-data/entry/item-type.d.ts +15 -1
  134. package/engine/object-data/entry/item-type.lua +93 -2
  135. package/engine/object-data/entry/lightning-type.d.ts +1 -1
  136. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  137. package/engine/object-data/entry/sound-preset.lua +140 -0
  138. package/engine/object-data/entry/unit-type.d.ts +10 -3
  139. package/engine/object-data/entry/unit-type.lua +155 -92
  140. package/engine/object-data/entry/upgrade.d.ts +1 -1
  141. package/engine/object-data/entry/upgrade.lua +4 -4
  142. package/engine/object-data/entry.d.ts +16 -14
  143. package/engine/object-data/entry.lua +60 -32
  144. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  145. package/engine/object-field/ability.d.ts +26 -3
  146. package/engine/object-field/ability.lua +54 -1
  147. package/engine/object-field/unit.d.ts +46 -3
  148. package/engine/object-field/unit.lua +173 -7
  149. package/engine/object-field.d.ts +15 -6
  150. package/engine/object-field.lua +173 -80
  151. package/engine/standard/entries/buff-type.d.ts +3 -0
  152. package/engine/standard/entries/buff-type.lua +3 -0
  153. package/engine/standard/entries/sound-preset.d.ts +10 -0
  154. package/engine/standard/entries/sound-preset.lua +10 -0
  155. package/engine/standard/fields/ability.d.ts +2 -0
  156. package/engine/standard/fields/ability.lua +2 -0
  157. package/engine/unit.d.ts +3 -0
  158. package/engine/unit.lua +3 -0
  159. package/index.d.ts +1 -0
  160. package/index.lua +1 -0
  161. package/net/socket.d.ts +7 -1
  162. package/net/socket.lua +45 -4
  163. package/network.d.ts +1 -0
  164. package/network.lua +3 -2
  165. package/objutil/buff.lua +2 -3
  166. package/objutil/unit.lua +8 -0
  167. package/package.json +2 -2
  168. package/patch-lua.d.ts +0 -0
  169. package/patch-lua.lua +10 -0
  170. package/property.d.ts +55 -0
  171. package/property.lua +374 -0
  172. package/utility/arrays.d.ts +9 -1
  173. package/utility/arrays.lua +37 -3
  174. package/utility/functions.d.ts +1 -0
  175. package/utility/functions.lua +1 -0
  176. package/utility/lazy.d.ts +2 -0
  177. package/utility/lazy.lua +14 -0
  178. package/utility/linked-set.d.ts +12 -2
  179. package/utility/linked-set.lua +8 -2
  180. package/utility/lua-maps.d.ts +3 -0
  181. package/utility/lua-maps.lua +16 -0
  182. package/utility/lua-sets.d.ts +1 -0
  183. package/utility/lua-sets.lua +3 -0
  184. package/utility/reflection.lua +11 -7
  185. package/utility/types.d.ts +1 -0
@@ -5,9 +5,10 @@ import { ObjectDataEntry, ObjectDataEntryIdType, ObjectDataEntryLevelFieldValueS
5
5
  export type ObjectFieldId = number & {
6
6
  readonly __objectDataEntryFieldId: unique symbol;
7
7
  };
8
- export type ObjectFieldConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (new (id: number) => T);
8
+ export type ObjectFieldConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (new (id: number, isGlobal?: boolean) => T);
9
9
  export type ObjectFieldAbstractConstructor<T extends ObjectFieldBase<any, any, any, any>> = OmitConstructor<typeof ObjectFieldBase> & (abstract new (id: number) => T);
10
10
  declare abstract class ObjectFieldBase<ObjectDataEntryType extends ObjectDataEntry, InstanceType extends AnyNotNil, ValueType, NativeFieldType> {
11
+ readonly isGlobal: boolean;
11
12
  protected abstract readonly instanceClass: AbstractConstructor<InstanceType> | Function;
12
13
  supports(instance: AnyNotNil): instance is InstanceType & {
13
14
  readonly __oneSidedTypeGuard: unique symbol;
@@ -16,8 +17,10 @@ declare abstract class ObjectFieldBase<ObjectDataEntryType extends ObjectDataEnt
16
17
  readonly id: ObjectFieldId;
17
18
  protected abstract getNativeFieldById(id: number): NativeFieldType;
18
19
  protected abstract getObjectDataEntryId(instance: InstanceType): ObjectDataEntryIdType<ObjectDataEntryType>;
19
- constructor(id: number);
20
- static create<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldConstructor<T>, id?: number): T & symbol;
20
+ protected abstract hasNativeFieldValue(instance: InstanceType): boolean;
21
+ hasValue(instance: InstanceType): boolean;
22
+ constructor(id: number, isGlobal?: boolean);
23
+ static create<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldConstructor<T>, id?: number, isGlobal?: boolean): T & symbol;
21
24
  static of<T extends ObjectFieldBase<any, any, any, any>>(this: ObjectFieldAbstractConstructor<T>, id: number): T | undefined;
22
25
  }
23
26
  export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any> | ReadonlyObjectFieldType<ObjectField<any, any, any, any>>> = T extends ObjectField<any, infer InstanceType, infer ValueType, any> ? DispatchingEvent<[
@@ -33,15 +36,22 @@ export type ObjectFieldValueChangeEvent<T extends ObjectField<any, any, any, any
33
36
  ]> : never;
34
37
  export type ReadonlyObjectFieldType<T extends ObjectField<any, any, any, any>> = Omit<T, "setValue" | "removeValue" | "trySetValue">;
35
38
  type ReadonlyObjectFieldConstructor<T extends ObjectField> = OmitConstructor<typeof ObjectField> & (abstract new (...args: any[]) => ReadonlyObjectFieldType<T>);
39
+ type ObjectFieldModifier<InstanceType extends AnyNotNil, ValueType extends number | string | boolean> = (instance: InstanceType, currentValue: ValueType, originalValue: ValueType) => ValueType;
36
40
  export declare abstract class ObjectField<ObjectDataEntryType extends ObjectDataEntry = ObjectDataEntry, InstanceType extends AnyNotNil = AnyNotNil, ValueType extends number | string | boolean = number | string | boolean, NativeFieldType = unknown> extends ObjectFieldBase<ObjectDataEntryType, InstanceType, ValueType, NativeFieldType> {
37
41
  protected abstract readonly defaultValue: ValueType;
38
- protected abstract hasNativeFieldValue(instance: InstanceType): boolean;
39
42
  protected abstract getNativeFieldValue(instance: InstanceType): ValueType;
40
43
  protected abstract setNativeFieldValue(instance: InstanceType, value: ValueType): boolean;
41
- getValue(entry: ObjectDataEntryType | InstanceType): ValueType;
44
+ private originalValueByInstance?;
45
+ private modifiersByInstance?;
46
+ getValue(entry: ObjectDataEntryType | InstanceType, includeModifiers?: boolean): ValueType;
42
47
  setValue(entry: ObjectDataEntryType | InstanceType, value: ValueType): boolean;
48
+ applyModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): void;
49
+ removeModifier(instance: InstanceType, modifier: ObjectFieldModifier<InstanceType, ValueType>): boolean;
43
50
  removeValue(entry: ObjectDataEntryType): boolean;
44
51
  trySetValue(entry: ObjectDataEntryType | InstanceType, value: unknown): boolean;
52
+ private getActualValue;
53
+ private setActualValue;
54
+ private calculateActualValue;
45
55
  private invokeValueChangeEvent;
46
56
  private invokeValueChangeEventRecursive;
47
57
  protected static getOrCreateValueChangeEvent<T extends ObjectField, R extends ReadonlyObjectFieldType<T>>(this: ReadonlyObjectFieldConstructor<T>): ObjectFieldValueChangeEvent<R>;
@@ -71,7 +81,6 @@ export declare abstract class ObjectArrayField<ObjectDataEntryType extends Objec
71
81
  }
72
82
  export declare abstract class ObjectLevelField<ObjectDataEntryType extends ObjectDataEntry = ObjectDataEntry, InstanceType extends AnyNotNil = AnyNotNil, ValueType extends number | string | boolean = number | string | boolean, InputValueType extends ValueType = never, NativeFieldType = unknown> extends ObjectFieldBase<ObjectDataEntryType, InstanceType, ValueType[], NativeFieldType> {
73
83
  protected abstract readonly defaultValue: ValueType;
74
- protected abstract hasNativeFieldValue(instance: InstanceType): boolean;
75
84
  protected abstract getNativeFieldValue(instance: InstanceType, level: number): ValueType;
76
85
  protected abstract setNativeFieldValue(instance: InstanceType, level: number, value: ValueType): boolean;
77
86
  protected abstract getLevelCount(entry: ObjectDataEntryType | InstanceType): number;
@@ -20,6 +20,13 @@ local extractObjectDataEntryLevelFieldValue = ____entry.extractObjectDataEntryLe
20
20
  local ObjectDataEntry = ____entry.ObjectDataEntry
21
21
  local ____object_2Ddata_2Dentry_2Did_2Dgenerator = require("engine.object-data.utility.object-data-entry-id-generator")
22
22
  local ObjectDataEntryIdGenerator = ____object_2Ddata_2Dentry_2Did_2Dgenerator.ObjectDataEntryIdGenerator
23
+ local ____linked_2Dset = require("utility.linked-set")
24
+ local mutableLinkedSet = ____linked_2Dset.mutableLinkedSet
25
+ local ____lua_2Dmaps = require("utility.lua-maps")
26
+ local getOrPut = ____lua_2Dmaps.getOrPut
27
+ local mutableWeakLuaMap = ____lua_2Dmaps.mutableWeakLuaMap
28
+ local ____arrays = require("utility.arrays")
29
+ local emptyArray = ____arrays.emptyArray
23
30
  local compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId = {}
24
31
  local defaultValueByObjectDataEntryIdByObjectFieldId = postcompile(function() return compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId end)
25
32
  local objectFieldById = {}
@@ -29,7 +36,11 @@ local idGenerator = __TS__New(
29
36
  )
30
37
  local ObjectFieldBase = __TS__Class()
31
38
  ObjectFieldBase.name = "ObjectFieldBase"
32
- function ObjectFieldBase.prototype.____constructor(self, id)
39
+ function ObjectFieldBase.prototype.____constructor(self, id, isGlobal)
40
+ if isGlobal == nil then
41
+ isGlobal = true
42
+ end
43
+ self.isGlobal = isGlobal
33
44
  self.valueByInstance = setmetatable({}, {__mode = "k"})
34
45
  if objectFieldById[id] ~= nil then
35
46
  error(
@@ -46,10 +57,15 @@ end
46
57
  function ObjectFieldBase.prototype.supports(self, instance)
47
58
  return __TS__InstanceOf(instance, self.instanceClass)
48
59
  end
49
- function ObjectFieldBase.create(self, id)
60
+ function ObjectFieldBase.prototype.hasValue(self, instance)
61
+ local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
62
+ return self.isGlobal or defaultValueByObjectDataEntryId ~= nil and defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)] ~= nil or self:hasNativeFieldValue(instance)
63
+ end
64
+ function ObjectFieldBase.create(self, id, isGlobal)
50
65
  return __TS__New(
51
66
  self,
52
- id or idGenerator:next()
67
+ id or idGenerator:next(),
68
+ isGlobal
53
69
  )
54
70
  end
55
71
  function ObjectFieldBase.of(self, id)
@@ -71,7 +87,7 @@ ____exports.ObjectField = __TS__Class()
71
87
  local ObjectField = ____exports.ObjectField
72
88
  ObjectField.name = "ObjectField"
73
89
  __TS__ClassExtends(ObjectField, ObjectFieldBase)
74
- function ObjectField.prototype.getValue(self, entry)
90
+ function ObjectField.prototype.getValue(self, entry, includeModifiers)
75
91
  if __TS__InstanceOf(entry, ObjectDataEntry) then
76
92
  local defaultValueByObjectDataEntryId = (warpack.compiletime and compiletimeDefaultValueByObjectDataEntryIdByObjectFieldId or defaultValueByObjectDataEntryIdByObjectFieldId)[self.id]
77
93
  if defaultValueByObjectDataEntryId ~= nil then
@@ -82,22 +98,16 @@ function ObjectField.prototype.getValue(self, entry)
82
98
  end
83
99
  return self.defaultValue
84
100
  end
85
- local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
86
- if defaultValueByObjectDataEntryId ~= nil then
87
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
88
- if defaultValue ~= nil then
89
- local ____self_valueByInstance_entry_0 = self.valueByInstance[entry]
90
- if ____self_valueByInstance_entry_0 == nil then
91
- ____self_valueByInstance_entry_0 = defaultValue
101
+ if includeModifiers == false then
102
+ local originalValueByInstance = self.originalValueByInstance
103
+ if originalValueByInstance ~= nil then
104
+ local originalValue = originalValueByInstance[entry]
105
+ if originalValue ~= nil then
106
+ return originalValue
92
107
  end
93
- return ____self_valueByInstance_entry_0
94
108
  end
95
109
  end
96
- local ____temp_1 = self:getNativeFieldValue(entry)
97
- if ____temp_1 == nil then
98
- ____temp_1 = self.defaultValue
99
- end
100
- return ____temp_1
110
+ return self:getActualValue(entry)
101
111
  end
102
112
  function ObjectField.prototype.setValue(self, entry, value)
103
113
  if __TS__InstanceOf(entry, ObjectDataEntry) then
@@ -112,37 +122,53 @@ function ObjectField.prototype.setValue(self, entry, value)
112
122
  defaultValueByObjectDataEntryId[entry.id] = value
113
123
  return true
114
124
  end
115
- local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
116
- if defaultValueByObjectDataEntryId ~= nil then
117
- local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
118
- if defaultValue ~= nil then
119
- local ____self_valueByInstance_entry_2 = self.valueByInstance[entry]
120
- if ____self_valueByInstance_entry_2 == nil then
121
- ____self_valueByInstance_entry_2 = defaultValue
122
- end
123
- local ____self_valueByInstance_entry_2_3 = ____self_valueByInstance_entry_2
124
- if ____self_valueByInstance_entry_2_3 == nil then
125
- ____self_valueByInstance_entry_2_3 = self.defaultValue
125
+ local modifiersByInstance = self.modifiersByInstance
126
+ if modifiersByInstance ~= nil then
127
+ local modifiers = modifiersByInstance[entry]
128
+ if modifiers ~= nil and modifiers.size ~= 0 then
129
+ local originalValueByInstance = self.originalValueByInstance
130
+ if originalValueByInstance == nil then
131
+ originalValueByInstance = mutableWeakLuaMap()
132
+ self.originalValueByInstance = originalValueByInstance
126
133
  end
127
- local previousValue = ____self_valueByInstance_entry_2_3
128
- if value ~= previousValue then
129
- self.valueByInstance[entry] = value
130
- self:invokeValueChangeEvent(entry, self, previousValue, value)
131
- end
132
- return true
134
+ originalValueByInstance[entry] = value
135
+ value = self:calculateActualValue(entry)
133
136
  end
134
137
  end
135
- if not self:hasNativeFieldValue(entry) then
136
- return false
138
+ return self:setActualValue(entry, value)
139
+ end
140
+ function ObjectField.prototype.applyModifier(self, instance, modifier)
141
+ local modifiersByInstance = self.modifiersByInstance
142
+ if modifiersByInstance == nil then
143
+ modifiersByInstance = mutableWeakLuaMap()
144
+ self.modifiersByInstance = modifiersByInstance
145
+ end
146
+ if getOrPut(modifiersByInstance, instance, mutableLinkedSet):add(modifier) then
147
+ local originalValueByInstance = self.originalValueByInstance
148
+ if originalValueByInstance == nil then
149
+ originalValueByInstance = mutableWeakLuaMap()
150
+ self.originalValueByInstance = originalValueByInstance
151
+ end
152
+ originalValueByInstance[instance] = self:getActualValue(instance)
153
+ self:setActualValue(
154
+ instance,
155
+ self:calculateActualValue(instance)
156
+ )
137
157
  end
138
- local previousValue = self:getNativeFieldValue(entry)
139
- if value ~= previousValue then
140
- if not self:setNativeFieldValue(entry, value) then
141
- return false
158
+ end
159
+ function ObjectField.prototype.removeModifier(self, instance, modifier)
160
+ local modifiersByInstance = self.modifiersByInstance
161
+ if modifiersByInstance ~= nil then
162
+ local modifiers = modifiersByInstance[instance]
163
+ if modifiers ~= nil and modifiers:remove(modifier) then
164
+ self:setActualValue(
165
+ instance,
166
+ self:calculateActualValue(instance)
167
+ )
168
+ return true
142
169
  end
143
- self:invokeValueChangeEvent(entry, self, previousValue, value)
144
170
  end
145
- return true
171
+ return false
146
172
  end
147
173
  function ObjectField.prototype.removeValue(self, entry)
148
174
  if not warpack.compiletime then
@@ -164,6 +190,73 @@ function ObjectField.prototype.trySetValue(self, entry, value)
164
190
  end
165
191
  return self:setValue(entry, value)
166
192
  end
193
+ function ObjectField.prototype.getActualValue(self, instance)
194
+ local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
195
+ if defaultValueByObjectDataEntryId ~= nil then
196
+ local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
197
+ if defaultValue ~= nil then
198
+ local ____self_valueByInstance_instance_0 = self.valueByInstance[instance]
199
+ if ____self_valueByInstance_instance_0 == nil then
200
+ ____self_valueByInstance_instance_0 = defaultValue
201
+ end
202
+ return ____self_valueByInstance_instance_0
203
+ end
204
+ end
205
+ local ____temp_1 = self:getNativeFieldValue(instance)
206
+ if ____temp_1 == nil then
207
+ ____temp_1 = self.defaultValue
208
+ end
209
+ return ____temp_1
210
+ end
211
+ function ObjectField.prototype.setActualValue(self, instance, value)
212
+ local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
213
+ if defaultValueByObjectDataEntryId ~= nil then
214
+ local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(instance)]
215
+ if defaultValue ~= nil or self.isGlobal then
216
+ local ____self_valueByInstance_instance_2 = self.valueByInstance[instance]
217
+ if ____self_valueByInstance_instance_2 == nil then
218
+ ____self_valueByInstance_instance_2 = defaultValue
219
+ end
220
+ local ____self_valueByInstance_instance_2_3 = ____self_valueByInstance_instance_2
221
+ if ____self_valueByInstance_instance_2_3 == nil then
222
+ ____self_valueByInstance_instance_2_3 = self.defaultValue
223
+ end
224
+ local previousValue = ____self_valueByInstance_instance_2_3
225
+ if value ~= previousValue then
226
+ self.valueByInstance[instance] = value
227
+ self:invokeValueChangeEvent(instance, self, previousValue, value)
228
+ end
229
+ return true
230
+ end
231
+ end
232
+ if not self:hasNativeFieldValue(instance) then
233
+ return false
234
+ end
235
+ local previousValue = self:getNativeFieldValue(instance)
236
+ if value ~= previousValue then
237
+ if not self:setNativeFieldValue(instance, value) then
238
+ return false
239
+ end
240
+ self:invokeValueChangeEvent(instance, self, previousValue, value)
241
+ end
242
+ return true
243
+ end
244
+ function ObjectField.prototype.calculateActualValue(self, instance)
245
+ local ____opt_4 = self.originalValueByInstance
246
+ local originalValue = ____opt_4 and ____opt_4[instance]
247
+ local ____opt_6 = self.modifiersByInstance
248
+ local modifiers = ____opt_6 and ____opt_6[instance]
249
+ if originalValue ~= nil then
250
+ local value = originalValue
251
+ if modifiers ~= nil then
252
+ for modifier in pairs(modifiers) do
253
+ value = modifier(instance, value, originalValue)
254
+ end
255
+ end
256
+ return value
257
+ end
258
+ return self.defaultValue
259
+ end
167
260
  function ObjectField.prototype.invokeValueChangeEvent(self, ...)
168
261
  self:invokeValueChangeEventRecursive(
169
262
  getClass(self),
@@ -217,17 +310,17 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
217
310
  if defaultValueByObjectDataEntryId ~= nil then
218
311
  local value = defaultValueByObjectDataEntryId[entry.id]
219
312
  if value ~= nil then
220
- local ____temp_5
313
+ local ____temp_9
221
314
  if index == nil then
222
- ____temp_5 = value
315
+ ____temp_9 = value
223
316
  else
224
- local ____value_index_4 = value[index + 1]
225
- if ____value_index_4 == nil then
226
- ____value_index_4 = self.defaultValue
317
+ local ____value_index_8 = value[index + 1]
318
+ if ____value_index_8 == nil then
319
+ ____value_index_8 = self.defaultValue
227
320
  end
228
- ____temp_5 = ____value_index_4
321
+ ____temp_9 = ____value_index_8
229
322
  end
230
- return ____temp_5
323
+ return ____temp_9
231
324
  end
232
325
  end
233
326
  return index == nil and ({}) or self.defaultValue
@@ -237,17 +330,17 @@ function ObjectArrayField.prototype.getValue(self, entry, index)
237
330
  local defaultValue = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
238
331
  if defaultValue ~= nil then
239
332
  local value = self.valueByInstance[entry] or defaultValue
240
- local ____temp_7
333
+ local ____temp_11
241
334
  if index == nil then
242
- ____temp_7 = value
335
+ ____temp_11 = value
243
336
  else
244
- local ____value_index_6 = value[index + 1]
245
- if ____value_index_6 == nil then
246
- ____value_index_6 = self.defaultValue
337
+ local ____value_index_10 = value[index + 1]
338
+ if ____value_index_10 == nil then
339
+ ____value_index_10 = self.defaultValue
247
340
  end
248
- ____temp_7 = ____value_index_6
341
+ ____temp_11 = ____value_index_10
249
342
  end
250
- return ____temp_7
343
+ return ____temp_11
251
344
  end
252
345
  end
253
346
  if index ~= nil then
@@ -292,11 +385,11 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
292
385
  if defaultValueByObjectDataEntryId ~= nil then
293
386
  local valueByLevel = defaultValueByObjectDataEntryId[entry.id]
294
387
  if valueByLevel ~= nil then
295
- local ____valueByLevel_index_8 = valueByLevel[level + 1]
296
- if ____valueByLevel_index_8 == nil then
297
- ____valueByLevel_index_8 = self.defaultValue
388
+ local ____valueByLevel_index_12 = valueByLevel[level + 1]
389
+ if ____valueByLevel_index_12 == nil then
390
+ ____valueByLevel_index_12 = self.defaultValue
298
391
  end
299
- return ____valueByLevel_index_8
392
+ return ____valueByLevel_index_12
300
393
  end
301
394
  end
302
395
  return self.defaultValue
@@ -305,23 +398,23 @@ function ObjectLevelField.prototype.getValue(self, entry, level)
305
398
  if defaultValueByObjectDataEntryId ~= nil then
306
399
  local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
307
400
  if defaultValueByLevel ~= nil then
308
- local ____opt_9 = self.valueByInstance[entry]
309
- local ____temp_11 = ____opt_9 and ____opt_9[level + 1]
310
- if ____temp_11 == nil then
311
- ____temp_11 = defaultValueByLevel[level + 1]
401
+ local ____opt_13 = self.valueByInstance[entry]
402
+ local ____temp_15 = ____opt_13 and ____opt_13[level + 1]
403
+ if ____temp_15 == nil then
404
+ ____temp_15 = defaultValueByLevel[level + 1]
312
405
  end
313
- local ____temp_11_12 = ____temp_11
314
- if ____temp_11_12 == nil then
315
- ____temp_11_12 = self.defaultValue
406
+ local ____temp_15_16 = ____temp_15
407
+ if ____temp_15_16 == nil then
408
+ ____temp_15_16 = self.defaultValue
316
409
  end
317
- return ____temp_11_12
410
+ return ____temp_15_16
318
411
  end
319
412
  end
320
- local ____temp_13 = self:getNativeFieldValue(entry, level)
321
- if ____temp_13 == nil then
322
- ____temp_13 = self.defaultValue
413
+ local ____temp_17 = self:getNativeFieldValue(entry, level)
414
+ if ____temp_17 == nil then
415
+ ____temp_17 = self.defaultValue
323
416
  end
324
- return ____temp_13
417
+ return ____temp_17
325
418
  end
326
419
  function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
327
420
  if value == nil then
@@ -364,21 +457,21 @@ function ObjectLevelField.prototype.setValue(self, entry, levelOrValue, value)
364
457
  local defaultValueByObjectDataEntryId = defaultValueByObjectDataEntryIdByObjectFieldId[self.id]
365
458
  if defaultValueByObjectDataEntryId ~= nil then
366
459
  local defaultValueByLevel = defaultValueByObjectDataEntryId[self:getObjectDataEntryId(entry)]
367
- if defaultValueByLevel ~= nil then
460
+ if defaultValueByLevel ~= nil or self.isGlobal then
368
461
  local valueByLevel = self.valueByInstance[entry]
369
462
  if valueByLevel == nil then
370
463
  valueByLevel = {}
371
464
  self.valueByInstance[entry] = valueByLevel
372
465
  end
373
- local ____valueByLevel_index_14 = valueByLevel[level + 1]
374
- if ____valueByLevel_index_14 == nil then
375
- ____valueByLevel_index_14 = defaultValueByLevel[level + 1]
466
+ local ____valueByLevel_index_18 = valueByLevel[level + 1]
467
+ if ____valueByLevel_index_18 == nil then
468
+ ____valueByLevel_index_18 = (defaultValueByLevel or emptyArray())[level + 1]
376
469
  end
377
- local ____valueByLevel_index_14_15 = ____valueByLevel_index_14
378
- if ____valueByLevel_index_14_15 == nil then
379
- ____valueByLevel_index_14_15 = self.defaultValue
470
+ local ____valueByLevel_index_18_19 = ____valueByLevel_index_18
471
+ if ____valueByLevel_index_18_19 == nil then
472
+ ____valueByLevel_index_18_19 = self.defaultValue
380
473
  end
381
- local previousValue = ____valueByLevel_index_14_15
474
+ local previousValue = ____valueByLevel_index_18_19
382
475
  if value ~= previousValue then
383
476
  valueByLevel[level + 1] = value
384
477
  self:invokeValueChangeEvent(
@@ -0,0 +1,3 @@
1
+ /** @noSelfInFile */
2
+ import { StandardBuffTypeId } from "../../object-data/entry/buff-type";
3
+ export declare const CHEMICAL_RAGE_BUFF_TYPE_ID: StandardBuffTypeId;
@@ -0,0 +1,3 @@
1
+ local ____exports = {}
2
+ ____exports.CHEMICAL_RAGE_BUFF_TYPE_ID = fourCC("BNcr")
3
+ return ____exports
@@ -0,0 +1,10 @@
1
+ /** @noSelfInFile */
2
+ import { StandardSoundPresetId } from "../../object-data/entry/sound-preset";
3
+ export declare const ABOMINATION_PISSED_SOUND_PRESET_ID: StandardSoundPresetId;
4
+ export declare const ABOMINATION_READY_SOUND_PRESET_ID: StandardSoundPresetId;
5
+ export declare const ABOMINATION_WAR_CRY_SOUND_PRESET_ID: StandardSoundPresetId;
6
+ export declare const AXE_MEDIUM_CHOP_WOOD_SOUND_PRESET_ID: StandardSoundPresetId;
7
+ export declare const IMPALE_SOUND_PRESET_ID: StandardSoundPresetId;
8
+ export declare const IMPALE_HIT_SOUND_PRESET_ID: StandardSoundPresetId;
9
+ export declare const IMPALE_LAND_SOUND_PRESET_ID: StandardSoundPresetId;
10
+ export declare const IMPALE_CAST_SOUND_PRESET_ID: StandardSoundPresetId;
@@ -0,0 +1,10 @@
1
+ local ____exports = {}
2
+ ____exports.ABOMINATION_PISSED_SOUND_PRESET_ID = "AbominationPissed"
3
+ ____exports.ABOMINATION_READY_SOUND_PRESET_ID = "AbominationReady"
4
+ ____exports.ABOMINATION_WAR_CRY_SOUND_PRESET_ID = "AbominationWarcry"
5
+ ____exports.AXE_MEDIUM_CHOP_WOOD_SOUND_PRESET_ID = "AxeMediumChopWood"
6
+ ____exports.IMPALE_SOUND_PRESET_ID = "Impale"
7
+ ____exports.IMPALE_HIT_SOUND_PRESET_ID = "ImpaleHit"
8
+ ____exports.IMPALE_LAND_SOUND_PRESET_ID = "ImpaleLand"
9
+ ____exports.IMPALE_CAST_SOUND_PRESET_ID = "ImpaleCast"
10
+ return ____exports
@@ -687,6 +687,8 @@ export declare const DISABLE_OTHER_ABILITIES_ABILITY_BOOLEAN_LEVEL_FIELD: Abilit
687
687
  export declare const ALLOW_BOUNTY_ABILITY_BOOLEAN_LEVEL_FIELD: AbilityBooleanLevelField & symbol;
688
688
  export declare const ICON_NORMAL_ABILITY_STRING_LEVEL_FIELD: AbilityStringLevelField & symbol;
689
689
  export declare const CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD: AbilityStringArrayField & symbol;
690
+ export declare const CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD: AbilityStringField & symbol;
691
+ export declare const CASTER_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD: AbilityStringField & symbol;
690
692
  export declare const TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD: AbilityStringArrayField & symbol;
691
693
  export declare const TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD: AbilityStringField & symbol;
692
694
  export declare const TARGET_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD: AbilityStringField & symbol;
@@ -698,6 +698,8 @@ ____exports.DISABLE_OTHER_ABILITIES_ABILITY_BOOLEAN_LEVEL_FIELD = AbilityBoolean
698
698
  ____exports.ALLOW_BOUNTY_ABILITY_BOOLEAN_LEVEL_FIELD = AbilityBooleanLevelField:create(fourCC("Ntm4"))
699
699
  ____exports.ICON_NORMAL_ABILITY_STRING_LEVEL_FIELD = AbilityStringLevelField:create(fourCC("aart"))
700
700
  ____exports.CASTER_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = AbilityStringArrayField:create(fourCC("acat"))
701
+ ____exports.CASTER_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = AbilityStringField:create(fourCC("acap"))
702
+ ____exports.CASTER_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD = AbilityStringField:create(fourCC("aca1"))
701
703
  ____exports.TARGET_EFFECT_MODEL_PATHS_ABILITY_STRING_ARRAY_FIELD = AbilityStringArrayField:create(fourCC("atat"))
702
704
  ____exports.TARGET_EFFECT_FIRST_ATTACHMENT_POINT_STRING_FIELD = AbilityStringField:create(fourCC("ata0"))
703
705
  ____exports.TARGET_EFFECT_SECOND_ATTACHMENT_POINT_STRING_FIELD = AbilityStringField:create(fourCC("ata1"))
package/engine/unit.d.ts CHANGED
@@ -4,6 +4,7 @@ import "./internal/unit/ability";
4
4
  import "./internal/unit/allowed-targets";
5
5
  import "./internal/unit/buff";
6
6
  import "./internal/unit/expiration-timer";
7
+ import "./internal/unit/item";
7
8
  import "./internal/unit+ability";
8
9
  import "./internal/unit+damage";
9
10
  import "./internal/unit+rally";
@@ -15,6 +16,8 @@ import "./internal/unit-missile-launch";
15
16
  import "./internal/unit/ghost-counter";
16
17
  import "./internal/unit/invulnerability-counter";
17
18
  import "./internal/unit/detach-missiles";
19
+ import "./internal/unit/main-selected";
20
+ import "./internal/unit/add-item-to-slot-init";
18
21
  import "./internal/unit/band-aids/ancestral-spirit-cannibalize";
19
22
  export { Unit, DamagingEvent, DamageEvent } from "./internal/unit";
20
23
  export * from "./internal/unit+damage";
package/engine/unit.lua CHANGED
@@ -4,6 +4,7 @@ require("engine.internal.unit.ability")
4
4
  require("engine.internal.unit.allowed-targets")
5
5
  require("engine.internal.unit.buff")
6
6
  require("engine.internal.unit.expiration-timer")
7
+ require("engine.internal.unit.item")
7
8
  require("engine.internal.unit+ability")
8
9
  require("engine.internal.unit+damage")
9
10
  require("engine.internal.unit+rally")
@@ -15,6 +16,8 @@ require("engine.internal.unit-missile-launch")
15
16
  require("engine.internal.unit.ghost-counter")
16
17
  require("engine.internal.unit.invulnerability-counter")
17
18
  require("engine.internal.unit.detach-missiles")
19
+ require("engine.internal.unit.main-selected")
20
+ require("engine.internal.unit.add-item-to-slot-init")
18
21
  require("engine.internal.unit.band-aids.ancestral-spirit-cannibalize")
19
22
  do
20
23
  local ____unit = require("engine.internal.unit")
package/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  /** @noSelfInFile */
2
2
  import "./types";
3
+ import "./patch-lua";
3
4
  import "./patch-lualib";
4
5
  import "./patch-natives";
5
6
  import "./global/math";
package/index.lua CHANGED
@@ -1,5 +1,6 @@
1
1
  local ____exports = {}
2
2
  require("types")
3
+ require("patch-lua")
3
4
  require("patch-lualib")
4
5
  require("patch-natives")
5
6
  require("global.math")
package/net/socket.d.ts CHANGED
@@ -1,9 +1,15 @@
1
1
  /** @noSelfInFile */
2
2
  import { Event } from "../event";
3
3
  import { Player } from "../core/types/player";
4
+ declare const enum SocketPropertyKey {
5
+ ID = 0,
6
+ CHUNK_ID = 1
7
+ }
4
8
  export declare class Socket {
5
- private readonly id;
9
+ private readonly [SocketPropertyKey.ID];
10
+ private readonly [SocketPropertyKey.CHUNK_ID];
6
11
  readonly onMessage: Event<[Player, string]>;
7
12
  constructor();
8
13
  send(data: string): void;
9
14
  }
15
+ export {};
package/net/socket.lua CHANGED
@@ -7,6 +7,11 @@ local Event = ____event.Event
7
7
  local ____network = require("network")
8
8
  local send = ____network.send
9
9
  local onReceive = ____network.onReceive
10
+ local MAX_PAYLOAD_LENGTH = ____network.MAX_PAYLOAD_LENGTH
11
+ local ____math = require("math")
12
+ local ceil = ____math.ceil
13
+ local stringSub = string.sub
14
+ local tableConcat = table.concat
10
15
  local nextId = 0
11
16
  ____exports.Socket = __TS__Class()
12
17
  local Socket = ____exports.Socket
@@ -14,13 +19,49 @@ Socket.name = "Socket"
14
19
  function Socket.prototype.____constructor(self)
15
20
  local ____tostring_0 = tostring
16
21
  nextId = nextId + 1
17
- self.id = ____tostring_0(nextId)
22
+ self[0] = ____tostring_0(nextId)
23
+ local ____tostring_1 = tostring
24
+ nextId = nextId + 1
25
+ self[1] = ____tostring_1(nextId)
18
26
  self.onMessage = __TS__New(Event)
19
- onReceive[self.id]:addListener(function(sender, data)
20
- Event.invoke(self.onMessage, sender, data)
27
+ local chunksByPlayer = {}
28
+ onReceive[self[0]]:addListener(function(sender, data)
29
+ local chunks = chunksByPlayer[sender]
30
+ if chunks ~= nil then
31
+ chunks[#chunks + 1] = data
32
+ Event.invoke(
33
+ self.onMessage,
34
+ sender,
35
+ tableConcat(chunks)
36
+ )
37
+ chunksByPlayer[sender] = nil
38
+ else
39
+ Event.invoke(self.onMessage, sender, data)
40
+ end
41
+ end)
42
+ onReceive[self[1]]:addListener(function(sender, data)
43
+ local chunks = chunksByPlayer[sender]
44
+ if chunks == nil then
45
+ chunks = {}
46
+ chunksByPlayer[sender] = chunks
47
+ end
48
+ chunks[#chunks + 1] = data
21
49
  end)
22
50
  end
23
51
  function Socket.prototype.send(self, data)
24
- send(self.id, data)
52
+ local chunks = ceil(#data / MAX_PAYLOAD_LENGTH) - 1
53
+ local offset = 1
54
+ for _ = 0, chunks - 1 do
55
+ local nextOffset = offset + MAX_PAYLOAD_LENGTH
56
+ send(
57
+ self[1],
58
+ stringSub(data, offset, nextOffset - 1)
59
+ )
60
+ offset = nextOffset
61
+ end
62
+ send(
63
+ self[0],
64
+ stringSub(data, offset)
65
+ )
25
66
  end
26
67
  return ____exports
package/network.d.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  import { Event } from "./event";
3
3
  import { Player } from "./core/types/player";
4
4
  import { Operation, OperationContinue, OperationMonitor } from "./operation";
5
+ export declare const MAX_PAYLOAD_LENGTH = 255;
5
6
  export declare const onReceive: {
6
7
  [prefix: string]: Event<[Player, string]>;
7
8
  } & {
package/network.lua CHANGED
@@ -25,6 +25,7 @@ local concat = table.concat
25
25
  local pack = string.pack
26
26
  local sub = string.sub
27
27
  local ____unpack = string.unpack
28
+ ____exports.MAX_PAYLOAD_LENGTH = 255
28
29
  ____exports.onReceive = setmetatable(
29
30
  {},
30
31
  {__index = function(self, prefix)
@@ -42,11 +43,11 @@ ____exports.onReceive = setmetatable(
42
43
  end}
43
44
  )
44
45
  function ____exports.send(id, payload)
45
- if #payload > 255 then
46
+ if #payload > ____exports.MAX_PAYLOAD_LENGTH then
46
47
  error(
47
48
  __TS__New(
48
49
  IllegalArgumentException,
49
- "payload length must be <= 256, but was " .. tostring(#payload)
50
+ (("payload length must be <= " .. tostring(____exports.MAX_PAYLOAD_LENGTH)) .. ", but was ") .. tostring(#payload)
50
51
  ),
51
52
  0
52
53
  )