warscript 0.0.1-dev.87b6c38 → 0.0.1-dev.8895725
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/types/frame.lua +47 -1
- package/core/types/handle.lua +6 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +1 -1
- package/core/types/player.lua +12 -11
- package/core/types/sound.lua +1 -1
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +4 -2
- package/engine/behavior.lua +69 -11
- package/engine/behaviour/ability/damage.d.ts +3 -0
- package/engine/behaviour/ability/damage.lua +8 -2
- package/engine/behaviour/ability/emulate-impact.lua +5 -4
- package/engine/behaviour/ability.d.ts +9 -5
- package/engine/behaviour/ability.lua +29 -0
- package/engine/behaviour/unit/stun-immunity.d.ts +1 -1
- package/engine/behaviour/unit/stun-immunity.lua +5 -4
- package/engine/behaviour/unit.lua +13 -3
- package/engine/buff.d.ts +56 -19
- package/engine/buff.lua +283 -142
- package/engine/internal/ability.lua +15 -15
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item.d.ts +4 -5
- package/engine/internal/item.lua +37 -40
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +6 -0
- package/engine/internal/unit/bonus.lua +33 -3
- package/engine/internal/unit/fly-height.lua +3 -3
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.lua +3 -3
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit-missile-launch.lua +12 -5
- package/engine/internal/unit.d.ts +2 -9
- package/engine/internal/unit.lua +79 -121
- package/engine/local-client.d.ts +6 -1
- package/engine/local-client.lua +60 -5
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → armor-bonus.d.ts} +3 -3
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type.d.ts +2 -0
- package/engine/object-data/entry/ability-type.lua +84 -4
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- package/engine/object-data/entry/destructible-type.d.ts +12 -0
- package/engine/object-data/entry/destructible-type.lua +78 -0
- package/engine/object-field/ability.lua +2 -2
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +7 -4
- package/engine/object-field/unit.lua +4 -0
- package/engine/object-field.d.ts +3 -1
- package/engine/object-field.lua +177 -119
- package/engine/random.d.ts +1 -0
- package/engine/random.lua +8 -0
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +11 -5
- package/engine/standard/fields/unit.lua +13 -4
- package/engine/unit.d.ts +3 -0
- package/engine/unit.lua +3 -0
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/objutil/buff.lua +9 -7
- package/objutil/object.lua +1 -1
- package/operation.lua +1 -4
- package/package.json +5 -5
- package/patch-lua.lua +15 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +3 -1
- package/utility/linked-set.lua +27 -0
- package/utility/records.lua +20 -1
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- /package/engine/internal/object-data/{armor-increase.d.ts → armor-bonus.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { AbilityType, AbilityTypeId } from "../ability-type";
|
|
3
3
|
import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
|
|
4
|
-
export declare class
|
|
4
|
+
export declare class ArmorBonusAbilityType extends AbilityType {
|
|
5
5
|
static readonly BASE_ID: AbilityTypeId;
|
|
6
|
-
get
|
|
7
|
-
set
|
|
6
|
+
get armorBonus(): number[];
|
|
7
|
+
set armorBonus(armorBonus: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
8
8
|
}
|
|
@@ -5,20 +5,20 @@ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
|
5
5
|
local ____exports = {}
|
|
6
6
|
local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
|
|
7
7
|
local AbilityType = ____ability_2Dtype.AbilityType
|
|
8
|
-
____exports.
|
|
9
|
-
local
|
|
10
|
-
|
|
11
|
-
__TS__ClassExtends(
|
|
12
|
-
|
|
8
|
+
____exports.ArmorBonusAbilityType = __TS__Class()
|
|
9
|
+
local ArmorBonusAbilityType = ____exports.ArmorBonusAbilityType
|
|
10
|
+
ArmorBonusAbilityType.name = "ArmorBonusAbilityType"
|
|
11
|
+
__TS__ClassExtends(ArmorBonusAbilityType, AbilityType)
|
|
12
|
+
ArmorBonusAbilityType.BASE_ID = fourCC("AId1")
|
|
13
13
|
__TS__SetDescriptor(
|
|
14
|
-
|
|
15
|
-
"
|
|
14
|
+
ArmorBonusAbilityType.prototype,
|
|
15
|
+
"armorBonus",
|
|
16
16
|
{
|
|
17
17
|
get = function(self)
|
|
18
18
|
return self:getNumberLevelField("Idef")
|
|
19
19
|
end,
|
|
20
|
-
set = function(self,
|
|
21
|
-
self:setNumberLevelField("Idef",
|
|
20
|
+
set = function(self, armorBonus)
|
|
21
|
+
self:setNumberLevelField("Idef", armorBonus)
|
|
22
22
|
end
|
|
23
23
|
},
|
|
24
24
|
true
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { AbilityType, AbilityTypeId } from "../ability-type";
|
|
3
|
+
import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
|
|
4
|
+
export declare class HealthBonusAbilityType extends AbilityType {
|
|
5
|
+
static readonly BASE_ID: AbilityTypeId;
|
|
6
|
+
get healthBonus(): number[];
|
|
7
|
+
set healthBonus(healthBonus: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
8
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
|
+
local ____exports = {}
|
|
6
|
+
local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
|
|
7
|
+
local AbilityType = ____ability_2Dtype.AbilityType
|
|
8
|
+
____exports.HealthBonusAbilityType = __TS__Class()
|
|
9
|
+
local HealthBonusAbilityType = ____exports.HealthBonusAbilityType
|
|
10
|
+
HealthBonusAbilityType.name = "HealthBonusAbilityType"
|
|
11
|
+
__TS__ClassExtends(HealthBonusAbilityType, AbilityType)
|
|
12
|
+
HealthBonusAbilityType.BASE_ID = fourCC("AIlf")
|
|
13
|
+
__TS__SetDescriptor(
|
|
14
|
+
HealthBonusAbilityType.prototype,
|
|
15
|
+
"healthBonus",
|
|
16
|
+
{
|
|
17
|
+
get = function(self)
|
|
18
|
+
return self:getNumberLevelField("Ilif")
|
|
19
|
+
end,
|
|
20
|
+
set = function(self, healthBonus)
|
|
21
|
+
self:setNumberLevelField("Ilif", healthBonus)
|
|
22
|
+
end
|
|
23
|
+
},
|
|
24
|
+
true
|
|
25
|
+
)
|
|
26
|
+
return ____exports
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { AbilityType, AbilityTypeId } from "../ability-type";
|
|
3
|
+
import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
|
|
4
|
+
export declare class ManaBonusAbilityType extends AbilityType {
|
|
5
|
+
static readonly BASE_ID: AbilityTypeId;
|
|
6
|
+
get manaBonus(): number[];
|
|
7
|
+
set manaBonus(manaBonus: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
8
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
|
+
local ____exports = {}
|
|
6
|
+
local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
|
|
7
|
+
local AbilityType = ____ability_2Dtype.AbilityType
|
|
8
|
+
____exports.ManaBonusAbilityType = __TS__Class()
|
|
9
|
+
local ManaBonusAbilityType = ____exports.ManaBonusAbilityType
|
|
10
|
+
ManaBonusAbilityType.name = "ManaBonusAbilityType"
|
|
11
|
+
__TS__ClassExtends(ManaBonusAbilityType, AbilityType)
|
|
12
|
+
ManaBonusAbilityType.BASE_ID = fourCC("AImb")
|
|
13
|
+
__TS__SetDescriptor(
|
|
14
|
+
ManaBonusAbilityType.prototype,
|
|
15
|
+
"manaBonus",
|
|
16
|
+
{
|
|
17
|
+
get = function(self)
|
|
18
|
+
return self:getNumberLevelField("Iman")
|
|
19
|
+
end,
|
|
20
|
+
set = function(self, manaBonus)
|
|
21
|
+
self:setNumberLevelField("Iman", manaBonus)
|
|
22
|
+
end
|
|
23
|
+
},
|
|
24
|
+
true
|
|
25
|
+
)
|
|
26
|
+
return ____exports
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { AbilityType, AbilityTypeId } from "../ability-type";
|
|
3
|
+
import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
|
|
4
|
+
export declare class ManaRegenerationAbilityType extends AbilityType {
|
|
5
|
+
static readonly BASE_ID: AbilityTypeId;
|
|
6
|
+
get manaRegenerationRateIncreaseFactor(): number[];
|
|
7
|
+
set manaRegenerationRateIncreaseFactor(manaRegenerationRateIncreaseFactor: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
8
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
|
+
local ____exports = {}
|
|
6
|
+
local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
|
|
7
|
+
local AbilityType = ____ability_2Dtype.AbilityType
|
|
8
|
+
____exports.ManaRegenerationAbilityType = __TS__Class()
|
|
9
|
+
local ManaRegenerationAbilityType = ____exports.ManaRegenerationAbilityType
|
|
10
|
+
ManaRegenerationAbilityType.name = "ManaRegenerationAbilityType"
|
|
11
|
+
__TS__ClassExtends(ManaRegenerationAbilityType, AbilityType)
|
|
12
|
+
ManaRegenerationAbilityType.BASE_ID = fourCC("AIrn")
|
|
13
|
+
__TS__SetDescriptor(
|
|
14
|
+
ManaRegenerationAbilityType.prototype,
|
|
15
|
+
"manaRegenerationRateIncreaseFactor",
|
|
16
|
+
{
|
|
17
|
+
get = function(self)
|
|
18
|
+
return self:getNumberLevelField("Imrp")
|
|
19
|
+
end,
|
|
20
|
+
set = function(self, manaRegenerationRateIncreaseFactor)
|
|
21
|
+
self:setNumberLevelField("Imrp", manaRegenerationRateIncreaseFactor)
|
|
22
|
+
end
|
|
23
|
+
},
|
|
24
|
+
true
|
|
25
|
+
)
|
|
26
|
+
return ____exports
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** @noSelfInFile */
|
|
2
|
+
import { AbilityType, AbilityTypeId } from "../ability-type";
|
|
3
|
+
import { ObjectDataEntryLevelFieldValueSupplier } from "../../entry";
|
|
4
|
+
export declare class ReincarnationAbilityType extends AbilityType {
|
|
5
|
+
static readonly BASE_ID: AbilityTypeId;
|
|
6
|
+
get reincarnationDelay(): number[];
|
|
7
|
+
set reincarnationDelay(reincarnationDelay: ObjectDataEntryLevelFieldValueSupplier<number>);
|
|
8
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
local ____lualib = require("lualib_bundle")
|
|
2
|
+
local __TS__Class = ____lualib.__TS__Class
|
|
3
|
+
local __TS__ClassExtends = ____lualib.__TS__ClassExtends
|
|
4
|
+
local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
|
|
5
|
+
local ____exports = {}
|
|
6
|
+
local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
|
|
7
|
+
local AbilityType = ____ability_2Dtype.AbilityType
|
|
8
|
+
____exports.ReincarnationAbilityType = __TS__Class()
|
|
9
|
+
local ReincarnationAbilityType = ____exports.ReincarnationAbilityType
|
|
10
|
+
ReincarnationAbilityType.name = "ReincarnationAbilityType"
|
|
11
|
+
__TS__ClassExtends(ReincarnationAbilityType, AbilityType)
|
|
12
|
+
ReincarnationAbilityType.BASE_ID = fourCC("AOre")
|
|
13
|
+
__TS__SetDescriptor(
|
|
14
|
+
ReincarnationAbilityType.prototype,
|
|
15
|
+
"reincarnationDelay",
|
|
16
|
+
{
|
|
17
|
+
get = function(self)
|
|
18
|
+
return self:getNumberLevelField("Ore1")
|
|
19
|
+
end,
|
|
20
|
+
set = function(self, reincarnationDelay)
|
|
21
|
+
self:setNumberLevelField("Ore1", reincarnationDelay)
|
|
22
|
+
end
|
|
23
|
+
},
|
|
24
|
+
true
|
|
25
|
+
)
|
|
26
|
+
return ____exports
|
|
@@ -67,6 +67,8 @@ export declare abstract class AbilityType extends ObjectDataEntry<AbilityTypeId>
|
|
|
67
67
|
set specialAttachmentPreset(specialAttachmentPreset: AttachmentPresetInput | undefined);
|
|
68
68
|
get targetCastingEffectPresets(): EffectPresetWithParameters[];
|
|
69
69
|
set targetCastingEffectPresets(targetCastingEffectPresets: AttachmentPresetInput[]);
|
|
70
|
+
get targetChannelingEffectPresets(): EffectPresetWithParameters[];
|
|
71
|
+
set targetChannelingEffectPresets(targetChannelingEffectPresets: EffectPresetWithParametersInput[]);
|
|
70
72
|
get targetEffectPresets(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
|
|
71
73
|
set targetEffectPresets(targetEffectPresets: TupleOf<AttachmentPresetInput, 0 | 1 | 2 | 3 | 4 | 5 | 6>);
|
|
72
74
|
get targetEffectPresetsSD(): TupleOf<EffectPresetWithParameters, 0 | 1 | 2 | 3 | 4 | 5 | 6>;
|
|
@@ -45,6 +45,7 @@ local isButtonVisibleFalseAbilityTypes = {}
|
|
|
45
45
|
local casterCastingEffectPresetsByAbilityTypeId = {}
|
|
46
46
|
local casterChannelingEffectPresetsByAbilityTypeId = {}
|
|
47
47
|
local targetCastingEffectPresetsByAbilityTypeId = {}
|
|
48
|
+
local targetChannelingEffectPresetsByAbilityTypeId = {}
|
|
48
49
|
local targetEffectSoundPresetByAbilityTypeId = {}
|
|
49
50
|
____exports.AbilityType = __TS__Class()
|
|
50
51
|
local AbilityType = ____exports.AbilityType
|
|
@@ -378,6 +379,19 @@ __TS__SetDescriptor(
|
|
|
378
379
|
},
|
|
379
380
|
true
|
|
380
381
|
)
|
|
382
|
+
__TS__SetDescriptor(
|
|
383
|
+
AbilityType.prototype,
|
|
384
|
+
"targetChannelingEffectPresets",
|
|
385
|
+
{
|
|
386
|
+
get = function(self)
|
|
387
|
+
return targetChannelingEffectPresetsByAbilityTypeId[self.id] or ({})
|
|
388
|
+
end,
|
|
389
|
+
set = function(self, targetChannelingEffectPresets)
|
|
390
|
+
targetChannelingEffectPresetsByAbilityTypeId[self.id] = map(targetChannelingEffectPresets, toEffectPreset)
|
|
391
|
+
end
|
|
392
|
+
},
|
|
393
|
+
true
|
|
394
|
+
)
|
|
381
395
|
__TS__SetDescriptor(
|
|
382
396
|
AbilityType.prototype,
|
|
383
397
|
"targetEffectPresets",
|
|
@@ -1099,18 +1113,84 @@ local function handleAbilityChannelingStartEvent(caster, ability)
|
|
|
1099
1113
|
end
|
|
1100
1114
|
casterChannelingEffectsByCaster[caster] = effects
|
|
1101
1115
|
end
|
|
1116
|
+
local targetChannelingEffectModelPathsByAbilityTypeId = postcompile(function()
|
|
1117
|
+
return mapValues(
|
|
1118
|
+
targetChannelingEffectPresetsByAbilityTypeId,
|
|
1119
|
+
function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, extractAttachmentPresetInputModelPath) end
|
|
1120
|
+
)
|
|
1121
|
+
end)
|
|
1122
|
+
local targetChannelingEffectAttachmentPointsByAbilityTypeId = postcompile(function()
|
|
1123
|
+
return mapValues(
|
|
1124
|
+
targetChannelingEffectPresetsByAbilityTypeId,
|
|
1125
|
+
function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, extractAttachmentPresetInputNodeFQN) end
|
|
1126
|
+
)
|
|
1127
|
+
end)
|
|
1128
|
+
local targetChannelingEffectParametersByAbilityTypeId = postcompile(function()
|
|
1129
|
+
return mapValues(
|
|
1130
|
+
targetChannelingEffectPresetsByAbilityTypeId,
|
|
1131
|
+
function(targetChannelingEffectPresets) return map(targetChannelingEffectPresets, "parameters") end
|
|
1132
|
+
)
|
|
1133
|
+
end)
|
|
1134
|
+
local targetChannelingEffectsByCaster = {}
|
|
1135
|
+
local function handleAbilityWidgetTargetChannelingStartEvent(caster, ability, target)
|
|
1136
|
+
local effectModelPaths = targetChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
|
|
1137
|
+
local attachmentPoints = targetChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
|
|
1138
|
+
local parameters = targetChannelingEffectParametersByAbilityTypeId[ability.typeId]
|
|
1139
|
+
local effects = {}
|
|
1140
|
+
if effectModelPaths ~= nil then
|
|
1141
|
+
for i = 1, #effectModelPaths do
|
|
1142
|
+
local effectModelPath = effectModelPaths[i]
|
|
1143
|
+
local attachmentPoint = attachmentPoints and attachmentPoints[i]
|
|
1144
|
+
if attachmentPoint == nil or attachmentPoint == "" then
|
|
1145
|
+
attachmentPoint = "origin"
|
|
1146
|
+
end
|
|
1147
|
+
effects[i] = Effect:create(effectModelPath, target, attachmentPoint, parameters and parameters[i])
|
|
1148
|
+
end
|
|
1149
|
+
end
|
|
1150
|
+
targetChannelingEffectsByCaster[caster] = effects
|
|
1151
|
+
end
|
|
1152
|
+
local function handleAbilityPointTargetChannelingStartEvent(caster, ability, x, y)
|
|
1153
|
+
local effectModelPaths = targetChannelingEffectModelPathsByAbilityTypeId[ability.typeId]
|
|
1154
|
+
local attachmentPoints = targetChannelingEffectAttachmentPointsByAbilityTypeId[ability.typeId]
|
|
1155
|
+
local parameters = targetChannelingEffectParametersByAbilityTypeId[ability.typeId]
|
|
1156
|
+
local effects = {}
|
|
1157
|
+
if effectModelPaths ~= nil then
|
|
1158
|
+
for i = 1, #effectModelPaths do
|
|
1159
|
+
local effectModelPath = effectModelPaths[i]
|
|
1160
|
+
local attachmentPoint = attachmentPoints and attachmentPoints[i]
|
|
1161
|
+
if attachmentPoint == nil or attachmentPoint == "" then
|
|
1162
|
+
attachmentPoint = "origin"
|
|
1163
|
+
end
|
|
1164
|
+
effects[i] = Effect:create(effectModelPath, x, y, parameters and parameters[i])
|
|
1165
|
+
end
|
|
1166
|
+
end
|
|
1167
|
+
targetChannelingEffectsByCaster[caster] = effects
|
|
1168
|
+
end
|
|
1102
1169
|
local function handleAbilityStopChannelingEvent(caster)
|
|
1103
|
-
local
|
|
1104
|
-
if
|
|
1105
|
-
for i = 1, #
|
|
1106
|
-
|
|
1170
|
+
local casterEffects = casterChannelingEffectsByCaster[caster]
|
|
1171
|
+
if casterEffects ~= nil then
|
|
1172
|
+
for i = 1, #casterEffects do
|
|
1173
|
+
casterEffects[i]:destroy()
|
|
1107
1174
|
end
|
|
1108
1175
|
casterChannelingEffectsByCaster[caster] = nil
|
|
1109
1176
|
end
|
|
1177
|
+
local targetEffects = targetChannelingEffectsByCaster[caster]
|
|
1178
|
+
if targetEffects ~= nil then
|
|
1179
|
+
for i = 1, #targetEffects do
|
|
1180
|
+
targetEffects[i]:destroy()
|
|
1181
|
+
end
|
|
1182
|
+
targetChannelingEffectsByCaster[caster] = nil
|
|
1183
|
+
end
|
|
1110
1184
|
end
|
|
1111
1185
|
for abilityTypeId in pairs(casterChannelingEffectModelPathsByAbilityTypeId) do
|
|
1112
1186
|
Unit.abilityChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityChannelingStartEvent)
|
|
1113
1187
|
Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
|
|
1114
1188
|
Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
|
|
1115
1189
|
end
|
|
1190
|
+
for abilityTypeId in pairs(targetChannelingEffectModelPathsByAbilityTypeId) do
|
|
1191
|
+
Unit.abilityWidgetTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityWidgetTargetChannelingStartEvent)
|
|
1192
|
+
Unit.abilityPointTargetChannelingStartEvent[abilityTypeId]:addListener(4, handleAbilityPointTargetChannelingStartEvent)
|
|
1193
|
+
Unit.abilityChannelingFinishEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
|
|
1194
|
+
Unit.abilityStopEvent[abilityTypeId]:addListener(4, handleAbilityStopChannelingEvent)
|
|
1195
|
+
end
|
|
1116
1196
|
return ____exports
|
|
@@ -65,123 +65,127 @@ function ApplicableBuffType.wrap(self, other)
|
|
|
65
65
|
return __TS__New(____exports.ApplicableBuffType, other.object)
|
|
66
66
|
end
|
|
67
67
|
ApplicableBuffType.BASE_ID = fourCC("BHbz")
|
|
68
|
-
local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId = table.unpack(
|
|
69
|
-
|
|
70
|
-
local
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if applicableBuffType.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
68
|
+
local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId = table.unpack(
|
|
69
|
+
postcompile(function()
|
|
70
|
+
local function prepareAbilityType(abilityTypeConstructor, applicableBuffType)
|
|
71
|
+
local abilityType = abilityTypeConstructor:create()
|
|
72
|
+
abilityType.isInternal = true
|
|
73
|
+
abilityType.levelCount = applicableBuffType.levelCount
|
|
74
|
+
abilityType.buttonPositionX = 0
|
|
75
|
+
abilityType.buttonPositionY = -11
|
|
76
|
+
abilityType.casterAttachmentPresets = {}
|
|
77
|
+
abilityType.targetEffectPresets = {}
|
|
78
|
+
abilityType.casterEffectSoundPresetId = nil
|
|
79
|
+
abilityType.learnLevelMinimum = 6
|
|
80
|
+
abilityType.race = "other"
|
|
81
|
+
abilityType.shouldCheckTechTreeDependencies = false
|
|
82
|
+
abilityType.techTreeDependencies = {}
|
|
83
|
+
abilityType.allowedTargetCombatClassifications = combatClassificationsOf(
|
|
84
|
+
4,
|
|
85
|
+
2,
|
|
86
|
+
2097152,
|
|
87
|
+
8,
|
|
88
|
+
1048576,
|
|
89
|
+
16
|
|
90
|
+
)
|
|
91
|
+
abilityType.areaOfEffect = 0
|
|
92
|
+
abilityType.castRange = 999999
|
|
93
|
+
abilityType.cooldown = 0
|
|
94
|
+
abilityType.manaCost = 0
|
|
95
|
+
abilityType.buffDuration = 0
|
|
96
|
+
abilityType.heroBuffDuration = 0
|
|
97
|
+
return abilityType
|
|
98
|
+
end
|
|
99
|
+
local multilevelPhysicalPositiveApplicatorAbilityTypes = {}
|
|
100
|
+
local applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId = {}
|
|
101
|
+
for applicableBuffType in pairs(compiletimeApplicableBuffTypes) do
|
|
102
|
+
local applicatorAbilityTypeIdByApplicatorType = {}
|
|
103
|
+
if applicableBuffType.resistanceType == 1 or applicableBuffType.resistanceType == nil then
|
|
104
|
+
if applicableBuffType.polarity == 2 or applicableBuffType.polarity == nil then
|
|
105
|
+
local applicatorAbilityType = prepareAbilityType(CurseAbilityType, applicableBuffType)
|
|
106
|
+
applicatorAbilityType.missProbability = 0
|
|
107
|
+
applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
|
|
108
|
+
applicatorAbilityTypeIdByApplicatorType[852190] = applicatorAbilityType.id
|
|
109
|
+
end
|
|
110
|
+
if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
|
|
111
|
+
local applicatorAbilityType = prepareAbilityType(BloodLustAbilityType, applicableBuffType)
|
|
112
|
+
applicatorAbilityType.attackSpeedIncreaseFactor = 0
|
|
113
|
+
applicatorAbilityType.movementSpeedIncreaseFactor = 0
|
|
114
|
+
applicatorAbilityType.scaleIncrease = 0
|
|
115
|
+
applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
|
|
116
|
+
applicatorAbilityTypeIdByApplicatorType[852101] = applicatorAbilityType.id
|
|
117
|
+
end
|
|
108
118
|
end
|
|
109
|
-
if applicableBuffType.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
119
|
+
if applicableBuffType.resistanceType == 2 or applicableBuffType.resistanceType == nil then
|
|
120
|
+
if applicableBuffType.polarity == 2 or applicableBuffType.polarity == nil then
|
|
121
|
+
local applicatorAbilityType = prepareAbilityType(SlowPoisonAbilityType, applicableBuffType)
|
|
122
|
+
applicatorAbilityType.damagePerSecond = 0
|
|
123
|
+
applicatorAbilityType.movementSpeedDecreaseFactor = 0
|
|
124
|
+
applicatorAbilityType.attackSpeedDecreaseFactor = 0
|
|
125
|
+
applicatorAbilityType.isDamageStacking = false
|
|
126
|
+
applicatorAbilityType.isMovementSpeedFactorStacking = false
|
|
127
|
+
applicatorAbilityType.isAttackSpeedFactorStacking = false
|
|
128
|
+
applicatorAbilityType.isAbleToKill = false
|
|
129
|
+
applicatorAbilityType.buffTypeIds = {applicableBuffType.id, applicableBuffType.id}
|
|
130
|
+
applicatorAbilityTypeIdByApplicatorType[852173] = applicatorAbilityType.id
|
|
131
|
+
end
|
|
132
|
+
if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
|
|
133
|
+
local applicatorAbilityType = prepareAbilityType(BerserkAbilityType, applicableBuffType)
|
|
134
|
+
applicatorAbilityType.attackSpeedIncreaseFactor = 0
|
|
135
|
+
applicatorAbilityType.movementSpeedIncreaseFactor = 0
|
|
136
|
+
applicatorAbilityType.receivedDamageIncreaseFactor = 0
|
|
137
|
+
applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
|
|
138
|
+
if applicatorAbilityType.levelCount > 1 then
|
|
139
|
+
multilevelPhysicalPositiveApplicatorAbilityTypes[#multilevelPhysicalPositiveApplicatorAbilityTypes + 1] = applicatorAbilityType
|
|
140
|
+
end
|
|
141
|
+
applicatorAbilityTypeIdByApplicatorType[852100] = applicatorAbilityType.id
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
if applicableBuffType.polarity == 0 or applicableBuffType.polarity == nil then
|
|
145
|
+
local applicatorAbilityType = prepareAbilityType(PermanentImmolationAbilityType, applicableBuffType)
|
|
146
|
+
applicatorAbilityType.levelCount = 1
|
|
147
|
+
applicatorAbilityType.damagePerInterval = 0
|
|
148
|
+
applicatorAbilityType.castRange = 0
|
|
149
|
+
applicatorAbilityType.buffDuration = MAXIMUM_INTEGER
|
|
150
|
+
applicatorAbilityType.heroBuffDuration = MAXIMUM_INTEGER
|
|
151
|
+
applicatorAbilityType.allowedTargetCombatClassifications = combatClassificationsOf(1)
|
|
114
152
|
applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
|
|
115
|
-
applicatorAbilityTypeIdByApplicatorType[
|
|
153
|
+
applicatorAbilityTypeIdByApplicatorType[0] = applicatorAbilityType.id
|
|
116
154
|
end
|
|
155
|
+
applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffType.id] = applicatorAbilityTypeIdByApplicatorType
|
|
117
156
|
end
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
end
|
|
131
|
-
if applicableBuffType.polarity == 1 or applicableBuffType.polarity == nil then
|
|
132
|
-
local applicatorAbilityType = prepareAbilityType(BerserkAbilityType, applicableBuffType)
|
|
133
|
-
applicatorAbilityType.attackSpeedIncreaseFactor = 0
|
|
134
|
-
applicatorAbilityType.movementSpeedIncreaseFactor = 0
|
|
135
|
-
applicatorAbilityType.receivedDamageIncreaseFactor = 0
|
|
136
|
-
applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
|
|
137
|
-
if applicatorAbilityType.levelCount > 1 then
|
|
138
|
-
multilevelPhysicalPositiveApplicatorAbilityTypes[#multilevelPhysicalPositiveApplicatorAbilityTypes + 1] = applicatorAbilityType
|
|
157
|
+
local applicatorUpgradeIds = {}
|
|
158
|
+
local applicatorUpgradeIdByApplicatorAbilityTypeId = {}
|
|
159
|
+
for ____, multilevelPhysicalPositiveApplicatorAbilityTypesChunk in ipairs(chunked(multilevelPhysicalPositiveApplicatorAbilityTypes, 4)) do
|
|
160
|
+
local maxLevelCount = max(map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "levelCount"))
|
|
161
|
+
local applicatorAbilityTypeIds = map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "id")
|
|
162
|
+
local applicatorUpgrade = BlankUpgrade:create()
|
|
163
|
+
applicatorUpgrade.isInternal = true
|
|
164
|
+
applicatorUpgrade.levelCount = maxLevelCount - 1
|
|
165
|
+
applicatorUpgrade.effects = map(
|
|
166
|
+
applicatorAbilityTypeIds,
|
|
167
|
+
function(applicatorAbilityTypeId)
|
|
168
|
+
return {type = "rlev", bonusBase = 1, bonusIncrement = 1, abilityTypeId = applicatorAbilityTypeId}
|
|
139
169
|
end
|
|
140
|
-
|
|
170
|
+
)
|
|
171
|
+
applicatorUpgradeIds[#applicatorUpgradeIds + 1] = applicatorUpgrade.id
|
|
172
|
+
for ____, applicatorAbilityTypeId in ipairs(applicatorAbilityTypeIds) do
|
|
173
|
+
applicatorUpgradeIdByApplicatorAbilityTypeId[applicatorAbilityTypeId] = applicatorUpgrade.id
|
|
141
174
|
end
|
|
142
175
|
end
|
|
143
|
-
|
|
144
|
-
local
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
applicatorAbilityType.allowedTargetCombatClassifications = combatClassificationsOf(1)
|
|
151
|
-
applicatorAbilityType.buffTypeIds = {applicableBuffType.id}
|
|
152
|
-
applicatorAbilityTypeIdByApplicatorType[0] = applicatorAbilityType.id
|
|
153
|
-
end
|
|
154
|
-
applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId[applicableBuffType.id] = applicatorAbilityTypeIdByApplicatorType
|
|
155
|
-
end
|
|
156
|
-
local applicatorUpgradeIds = {}
|
|
157
|
-
local applicatorUpgradeIdByApplicatorAbilityTypeId = {}
|
|
158
|
-
for ____, multilevelPhysicalPositiveApplicatorAbilityTypesChunk in ipairs(chunked(multilevelPhysicalPositiveApplicatorAbilityTypes, 4)) do
|
|
159
|
-
local maxLevelCount = max(map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "levelCount"))
|
|
160
|
-
local applicatorAbilityTypeIds = map(multilevelPhysicalPositiveApplicatorAbilityTypesChunk, "id")
|
|
161
|
-
local applicatorUpgrade = BlankUpgrade:create()
|
|
162
|
-
applicatorUpgrade.isInternal = true
|
|
163
|
-
applicatorUpgrade.levelCount = maxLevelCount - 1
|
|
164
|
-
applicatorUpgrade.effects = map(
|
|
165
|
-
applicatorAbilityTypeIds,
|
|
166
|
-
function(applicatorAbilityTypeId)
|
|
167
|
-
return {type = "rlev", bonusBase = 1, bonusIncrement = 1, abilityTypeId = applicatorAbilityTypeId}
|
|
168
|
-
end
|
|
169
|
-
)
|
|
170
|
-
applicatorUpgradeIds[#applicatorUpgradeIds + 1] = applicatorUpgrade.id
|
|
171
|
-
for ____, applicatorAbilityTypeId in ipairs(applicatorAbilityTypeIds) do
|
|
172
|
-
applicatorUpgradeIdByApplicatorAbilityTypeId[applicatorAbilityTypeId] = applicatorUpgrade.id
|
|
176
|
+
for ____, unitType in ipairs(UnitType:getAll()) do
|
|
177
|
+
local ____array_0 = __TS__SparseArrayNew(table.unpack(unitType.affectingUpgradeIds))
|
|
178
|
+
__TS__SparseArrayPush(
|
|
179
|
+
____array_0,
|
|
180
|
+
table.unpack(applicatorUpgradeIds)
|
|
181
|
+
)
|
|
182
|
+
unitType.affectingUpgradeIds = {__TS__SparseArraySpread(____array_0)}
|
|
173
183
|
end
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
table.unpack(applicatorUpgradeIds)
|
|
180
|
-
)
|
|
181
|
-
unitType.affectingUpgradeIds = {__TS__SparseArraySpread(____array_0)}
|
|
182
|
-
end
|
|
183
|
-
return {applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId}
|
|
184
|
-
end))
|
|
184
|
+
return {applicatorAbilityTypeIdByApplicatorTypeByApplicableBuffTypeId, applicatorUpgradeIdByApplicatorAbilityTypeId}
|
|
185
|
+
end),
|
|
186
|
+
1,
|
|
187
|
+
2
|
|
188
|
+
)
|
|
185
189
|
local EVASION_ABILITY_TYPE_IDS = postcompile(function()
|
|
186
190
|
return AbilityType:getAllIdsByBaseIds(map({
|
|
187
191
|
"AEev",
|
|
@@ -13,12 +13,18 @@ export declare abstract class DestructibleType extends ObjectDataEntry<Destructi
|
|
|
13
13
|
private static readonly idGenerator;
|
|
14
14
|
protected static generateId(): number;
|
|
15
15
|
protected static getObjectData(map: WarMap): WarObjects;
|
|
16
|
+
get fixedFacing(): number;
|
|
17
|
+
set fixedFacing(fixedFacing: number);
|
|
18
|
+
get flyOverHeight(): number;
|
|
19
|
+
set flyOverHeight(flyOverHeight: number);
|
|
16
20
|
get modelPath(): string;
|
|
17
21
|
set modelPath(modelPath: string);
|
|
18
22
|
get modelPathSD(): string;
|
|
19
23
|
set modelPathSD(modelPathSD: string);
|
|
20
24
|
get modelPathHD(): string;
|
|
21
25
|
set modelPathHD(modelPathHD: string);
|
|
26
|
+
get occlusionHeight(): number;
|
|
27
|
+
set occlusionHeight(occlusionHeight: number);
|
|
22
28
|
get armorSoundType(): ArmorSoundType;
|
|
23
29
|
set armorSoundType(armorSoundType: ArmorSoundType);
|
|
24
30
|
get armorSoundTypeSD(): ArmorSoundType;
|
|
@@ -27,8 +33,14 @@ export declare abstract class DestructibleType extends ObjectDataEntry<Destructi
|
|
|
27
33
|
set armorSoundTypeHD(armorSoundTypeHD: ArmorSoundType);
|
|
28
34
|
get combatClassifications(): CombatClassifications;
|
|
29
35
|
set combatClassifications(combatClassifications: CombatClassifications);
|
|
36
|
+
get cliffHeight(): number;
|
|
37
|
+
set cliffHeight(cliffHeight: number);
|
|
38
|
+
get isWalkable(): boolean;
|
|
39
|
+
set isWalkable(isWalkable: boolean);
|
|
30
40
|
get pathingTexturePath(): string;
|
|
31
41
|
set pathingTexturePath(pathingTexturePath: string);
|
|
32
42
|
get deadPathingTexturePath(): string;
|
|
33
43
|
set deadPathingTexturePath(deadPathingTexturePath: string);
|
|
44
|
+
get name(): string;
|
|
45
|
+
set name(name: string);
|
|
34
46
|
}
|