@v12-engine/create 0.1.0 → 0.4.0
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/README.md +4 -1
- package/base/_gitignore +5 -0
- package/base/package.json +3 -3
- package/base/src/main.ts +36 -10
- package/base/src/navigation.worker.ts +7 -0
- package/base/vite.config.ts +24 -2
- package/cli.mjs +21 -6
- package/index.mjs +27 -7
- package/layers/desktop/electron/app.mjs +237 -0
- package/layers/desktop/electron/config.mjs +16 -0
- package/layers/desktop/electron/dev.mjs +63 -0
- package/layers/desktop/electron/files.mjs +86 -0
- package/layers/desktop/electron/icons/icon.icns +0 -0
- package/layers/desktop/electron/icons/icon.png +0 -0
- package/layers/desktop/electron/main.mjs +12 -0
- package/layers/desktop/electron/package.mjs +75 -0
- package/layers/desktop/electron/preload.cjs +41 -0
- package/layers/desktop/electron/presentation.m +87 -0
- package/layers/desktop/electron/serve.mjs +76 -0
- package/layers/desktop/electron/tools.mjs +63 -0
- package/layers/desktop/electron/updates.mjs +71 -0
- package/layers/desktop/package.json +13 -0
- package/layers/desktop/src/desktop.ts +175 -0
- package/layers/desktop/src/shell.ts +279 -0
- package/layers/desktop/tests/main.test.ts +189 -0
- package/layers/desktop/tests/shell.test.ts +152 -0
- package/layers/rooms/server.ts +13 -10
- package/layers/server/server.ts +4 -5
- package/layers/source/vite.config.ts +21 -1
- package/package.json +2 -1
- package/starters/campaign/README.md +9 -2
- package/starters/campaign/layers/rooms/server.ts +3 -3
- package/starters/campaign/layers/server/server.ts +3 -5
- package/starters/campaign/layers/tests/tests/rules.test.ts +40 -21
- package/starters/campaign/src/campaign/game.ts +26 -5
- package/starters/campaign/src/campaign/index.ts +104 -68
- package/starters/campaign/src/campaign/kills.ts +1 -1
- package/starters/campaign/src/campaign/missions/homecoming.ts +7 -7
- package/starters/campaign/src/campaign/missions/siege.ts +6 -6
- package/starters/campaign/src/campaign/missions/warlord.ts +13 -14
- package/starters/campaign/src/campaign/scenes.ts +8 -7
- package/starters/campaign/src/campaign/units.ts +59 -20
- package/starters/campaign/src/campaign/view/attacks.ts +19 -0
- package/starters/campaign/src/campaign/view/fire.ts +2 -2
- package/starters/campaign/src/campaign/view/index.ts +54 -43
- package/starters/campaign/src/campaign/waves.ts +18 -17
- package/starters/campaign/src/game.ts +8 -1
- package/starters/campaign/src/main.ts +38 -19
- package/starters/campaign/src/maps/fort.names.ts +2 -2
- package/starters/campaign/src/maps/fort.vgmap.json +102 -2
- package/starters/campaign/src/maps/homestead.names.ts +2 -2
- package/starters/campaign/src/maps/homestead.vgmap.json +85 -1
- package/starters/campaign/src/maps/pass.names.ts +2 -2
- package/starters/campaign/src/maps/pass.vgmap.json +69 -1
- package/starters/campaign/src/waves-panel.ts +2 -1
- package/starters/empty/README.md +18 -10
- package/starters/empty/layers/tests/tests/rules.test.ts +16 -17
- package/starters/empty/src/game.ts +11 -75
- package/starters/empty/src/generate.worker.ts +5 -5
- package/starters/empty/src/rules.ts +83 -25
- package/starters/empty/src/view.ts +82 -0
- package/starters/examples/README.md +83 -0
- package/starters/examples/layers/tests/tests/examples.test.ts +30 -0
- package/starters/examples/package.json +5 -0
- package/starters/examples/src/examples/abilities/areas.ts +165 -0
- package/starters/examples/src/examples/abilities/areasLooks.ts +30 -0
- package/starters/examples/src/examples/abilities/buffs.ts +287 -0
- package/starters/examples/src/examples/abilities/buffsLooks.ts +46 -0
- package/starters/examples/src/examples/abilities/changing.ts +228 -0
- package/starters/examples/src/examples/abilities/changingLooks.ts +61 -0
- package/starters/examples/src/examples/abilities/control.ts +158 -0
- package/starters/examples/src/examples/abilities/controlLooks.ts +78 -0
- package/starters/examples/src/examples/abilities/damage.ts +156 -0
- package/starters/examples/src/examples/abilities/damageLooks.ts +37 -0
- package/starters/examples/src/examples/abilities/family.ts +29 -0
- package/starters/examples/src/examples/abilities/index.ts +32 -0
- package/starters/examples/src/examples/abilities/kit.ts +179 -0
- package/starters/examples/src/examples/abilities/lookKit.ts +71 -0
- package/starters/examples/src/examples/abilities/looks.ts +47 -0
- package/starters/examples/src/examples/abilities/missiles.ts +203 -0
- package/starters/examples/src/examples/abilities/missilesLooks.ts +38 -0
- package/starters/examples/src/examples/abilities/moves.ts +206 -0
- package/starters/examples/src/examples/abilities/movesLooks.ts +52 -0
- package/starters/examples/src/examples/abilities/recasts.ts +181 -0
- package/starters/examples/src/examples/abilities/recastsLooks.ts +41 -0
- package/starters/examples/src/examples/abilities/resources.ts +166 -0
- package/starters/examples/src/examples/abilities/resourcesLooks.ts +42 -0
- package/starters/examples/src/examples/abilities/summons.ts +296 -0
- package/starters/examples/src/examples/abilities/summonsLooks.ts +115 -0
- package/starters/examples/src/examples/abilities/triggers.ts +204 -0
- package/starters/examples/src/examples/abilities/triggersLooks.ts +53 -0
- package/starters/examples/src/examples/abilities/vision.ts +137 -0
- package/starters/examples/src/examples/abilities/visionLooks.ts +50 -0
- package/starters/examples/src/examples/animation/index.ts +235 -0
- package/starters/examples/src/examples/animation/looks.ts +444 -0
- package/starters/examples/src/examples/catalog.ts +52 -0
- package/starters/examples/src/examples/cinematics/index.ts +217 -0
- package/starters/examples/src/examples/cinematics/looks.ts +476 -0
- package/starters/examples/src/examples/cinematics/tour.json +43 -0
- package/starters/examples/src/examples/cinematics/village.ts +88 -0
- package/starters/examples/src/examples/common/looks.ts +65 -0
- package/starters/examples/src/examples/common/units.ts +70 -0
- package/starters/examples/src/examples/construction/index.ts +329 -0
- package/starters/examples/src/examples/construction/looks.ts +275 -0
- package/starters/examples/src/examples/custom-animation/bones.ts +92 -0
- package/starters/examples/src/examples/custom-animation/index.ts +190 -0
- package/starters/examples/src/examples/custom-animation/looks.ts +523 -0
- package/starters/examples/src/examples/custom-animation/runes.ts +82 -0
- package/starters/examples/src/examples/custom-fx/glaive.look.ts +110 -0
- package/starters/examples/src/examples/custom-fx/glaive.ts +40 -0
- package/starters/examples/src/examples/custom-fx/gpu.look.ts +145 -0
- package/starters/examples/src/examples/custom-fx/gpu.ts +22 -0
- package/starters/examples/src/examples/custom-fx/index.ts +25 -0
- package/starters/examples/src/examples/custom-fx/lights.look.ts +144 -0
- package/starters/examples/src/examples/custom-fx/lights.ts +25 -0
- package/starters/examples/src/examples/custom-fx/looks.ts +36 -0
- package/starters/examples/src/examples/custom-fx/meteor.look.ts +133 -0
- package/starters/examples/src/examples/custom-fx/meteor.ts +26 -0
- package/starters/examples/src/examples/custom-fx/parts.look.ts +193 -0
- package/starters/examples/src/examples/custom-fx/parts.ts +21 -0
- package/starters/examples/src/examples/custom-fx/portal.look.ts +193 -0
- package/starters/examples/src/examples/custom-fx/portal.ts +48 -0
- package/starters/examples/src/examples/custom-fx/renderer.look.ts +139 -0
- package/starters/examples/src/examples/custom-fx/renderer.ts +18 -0
- package/starters/examples/src/examples/custom-fx/ribbons.look.ts +151 -0
- package/starters/examples/src/examples/custom-fx/ribbons.ts +22 -0
- package/starters/examples/src/examples/custom-fx/shader.ts +42 -0
- package/starters/examples/src/examples/custom-fx/shield.look.ts +226 -0
- package/starters/examples/src/examples/custom-fx/shield.ts +43 -0
- package/starters/examples/src/examples/define.ts +86 -0
- package/starters/examples/src/examples/destruction/index.ts +570 -0
- package/starters/examples/src/examples/destruction/looks.ts +447 -0
- package/starters/examples/src/examples/dialogs/index.ts +383 -0
- package/starters/examples/src/examples/dialogs/looks.ts +546 -0
- package/starters/examples/src/examples/dynamic-map/index.ts +603 -0
- package/starters/examples/src/examples/dynamic-map/looks.ts +301 -0
- package/starters/examples/src/examples/fx/blood.look.ts +62 -0
- package/starters/examples/src/examples/fx/blood.ts +59 -0
- package/starters/examples/src/examples/fx/feel.look.ts +86 -0
- package/starters/examples/src/examples/fx/feel.ts +57 -0
- package/starters/examples/src/examples/fx/fight.ts +28 -0
- package/starters/examples/src/examples/fx/floats.look.ts +108 -0
- package/starters/examples/src/examples/fx/floats.ts +24 -0
- package/starters/examples/src/examples/fx/gallery.look.ts +168 -0
- package/starters/examples/src/examples/fx/gallery.ts +23 -0
- package/starters/examples/src/examples/fx/index.ts +30 -0
- package/starters/examples/src/examples/fx/links.look.ts +83 -0
- package/starters/examples/src/examples/fx/links.ts +49 -0
- package/starters/examples/src/examples/fx/looks.ts +55 -0
- package/starters/examples/src/examples/fx/map.look.ts +93 -0
- package/starters/examples/src/examples/fx/map.ts +33 -0
- package/starters/examples/src/examples/fx/marks.look.ts +100 -0
- package/starters/examples/src/examples/fx/marks.ts +36 -0
- package/starters/examples/src/examples/fx/shots.look.ts +92 -0
- package/starters/examples/src/examples/fx/shots.ts +71 -0
- package/starters/examples/src/examples/fx/spells.look.ts +87 -0
- package/starters/examples/src/examples/fx/spells.ts +122 -0
- package/starters/examples/src/examples/fx/stage.ts +31 -0
- package/starters/examples/src/examples/gui/babylonScreen.ts +167 -0
- package/starters/examples/src/examples/gui/babylonWorld.ts +191 -0
- package/starters/examples/src/examples/gui/htmlPart.ts +95 -0
- package/starters/examples/src/examples/gui/index.ts +143 -0
- package/starters/examples/src/examples/gui/keys.ts +91 -0
- package/starters/examples/src/examples/gui/layout.ts +42 -0
- package/starters/examples/src/examples/gui/looks.ts +270 -0
- package/starters/examples/src/examples/gui/minimap.ts +127 -0
- package/starters/examples/src/examples/gui/ownInterface.ts +129 -0
- package/starters/examples/src/examples/gui/plates.ts +87 -0
- package/starters/examples/src/examples/gui/radial.ts +104 -0
- package/starters/examples/src/examples/gui/solidPart.ts +107 -0
- package/starters/examples/src/examples/looks.ts +45 -0
- package/starters/examples/src/examples/mechanics/battle.ts +51 -0
- package/starters/examples/src/examples/mechanics/damage.ts +80 -0
- package/starters/examples/src/examples/mechanics/flying.ts +93 -0
- package/starters/examples/src/examples/mechanics/formations.ts +58 -0
- package/starters/examples/src/examples/mechanics/highGround.ts +82 -0
- package/starters/examples/src/examples/mechanics/index.ts +44 -0
- package/starters/examples/src/examples/mechanics/looks.ts +289 -0
- package/starters/examples/src/examples/mechanics/maze.ts +119 -0
- package/starters/examples/src/examples/mechanics/orders.ts +68 -0
- package/starters/examples/src/examples/mechanics/selection.ts +30 -0
- package/starters/examples/src/examples/moba/index.ts +377 -0
- package/starters/examples/src/examples/moba/looks.ts +349 -0
- package/starters/examples/src/examples/moba/maps.ts +69 -0
- package/starters/examples/src/examples/moba/spells.ts +34 -0
- package/starters/examples/src/examples/moba/units.ts +196 -0
- package/starters/examples/src/examples/nature/camera.ts +15 -0
- package/starters/examples/src/examples/nature/grass.ts +64 -0
- package/starters/examples/src/examples/nature/index.ts +327 -0
- package/starters/examples/src/examples/nature/land.ts +173 -0
- package/starters/examples/src/examples/nature/looks.ts +577 -0
- package/starters/examples/src/examples/nature/maps.ts +370 -0
- package/starters/examples/src/examples/nature/skies.ts +324 -0
- package/starters/examples/src/examples/nature/weather.ts +80 -0
- package/starters/examples/src/examples/performance/index.ts +263 -0
- package/starters/examples/src/examples/performance/looks.ts +372 -0
- package/starters/examples/src/examples/performance/meter.ts +158 -0
- package/starters/examples/src/examples/post/grades.ts +86 -0
- package/starters/examples/src/examples/post/index.ts +202 -0
- package/starters/examples/src/examples/post/looks.ts +884 -0
- package/starters/examples/src/examples/post/passes.ts +213 -0
- package/starters/examples/src/examples/rts/ai.ts +49 -0
- package/starters/examples/src/examples/rts/airlift.ts +43 -0
- package/starters/examples/src/examples/rts/base.ts +129 -0
- package/starters/examples/src/examples/rts/build.ts +65 -0
- package/starters/examples/src/examples/rts/camps.ts +36 -0
- package/starters/examples/src/examples/rts/carry.ts +103 -0
- package/starters/examples/src/examples/rts/creeps.ts +61 -0
- package/starters/examples/src/examples/rts/data.ts +406 -0
- package/starters/examples/src/examples/rts/ferry.ts +41 -0
- package/starters/examples/src/examples/rts/garrison.ts +50 -0
- package/starters/examples/src/examples/rts/harvest.ts +29 -0
- package/starters/examples/src/examples/rts/hero.ts +67 -0
- package/starters/examples/src/examples/rts/index.ts +77 -0
- package/starters/examples/src/examples/rts/looks.ts +721 -0
- package/starters/examples/src/examples/rts/shop.ts +46 -0
- package/starters/examples/src/examples/rts/tech.ts +39 -0
- package/starters/examples/src/examples/rts/train.ts +48 -0
- package/starters/examples/src/examples/rts/waterside.ts +185 -0
- package/starters/examples/src/examples/showcase/index.ts +714 -0
- package/starters/examples/src/examples/showcase/looks.ts +238 -0
- package/starters/examples/src/game.ts +17 -0
- package/starters/examples/src/main.ts +82 -0
- package/starters/examples/src/rules.ts +31 -0
- package/starters/examples/src/shell/look.ts +79 -0
- package/starters/examples/src/shell/registry.ts +7 -0
- package/starters/examples/src/shell/scenes.ts +178 -0
- package/starters/examples/src/shell/shell.ts +290 -0
- package/starters/examples/src/shell/style.ts +202 -0
- package/starters/examples/src/view.ts +50 -0
- package/starters/melee/README.md +12 -3
- package/starters/melee/layers/tests/tests/heroes.test.ts +402 -0
- package/starters/melee/layers/tests/tests/rules.test.ts +10 -8
- package/starters/melee/src/game.ts +32 -2
- package/starters/melee/src/maps/bay.names.ts +2 -2
- package/starters/melee/src/maps/bay.vgmap.json +198 -1
- package/starters/melee/src/maps.ts +11 -9
- package/starters/melee/src/melee/abilities.ts +1 -194
- package/starters/melee/src/melee/blight.ts +7 -7
- package/starters/melee/src/melee/cellLayers.json +3 -3
- package/starters/melee/src/melee/data.json +1 -18
- package/starters/melee/src/melee/game.ts +6 -4
- package/starters/melee/src/melee/heroes.ts +1025 -0
- package/starters/melee/src/melee/index.ts +64 -61
- package/starters/melee/src/melee/items.ts +15 -362
- package/starters/melee/src/melee/languages/he.json +14 -2
- package/starters/melee/src/melee/pings.ts +5 -6
- package/starters/melee/src/melee/saves.ts +1 -1
- package/starters/melee/src/melee/undead.ts +15 -230
- package/starters/melee/src/melee/units.ts +37 -171
- package/starters/melee/src/melee/view/attacks.ts +19 -0
- package/starters/melee/src/melee/view/heroSpellLooks.ts +39 -8
- package/starters/melee/src/melee/view/index.ts +56 -52
- package/starters/melee/src/melee/view/looks.ts +86 -63
- package/starters/melee/src/melee/view/undeadLooks.ts +70 -31
- package/starters/melee/src/melee/view/walls.ts +1 -1
- package/starters.mjs +6 -0
- package/v12.mjs +14 -15
- package/starters/campaign/src/rules.ts +0 -20
- package/starters/empty/src/maps.ts +0 -44
- package/starters/empty/src/tiles.ts +0 -12
- package/starters/melee/src/melee/heroSpells.ts +0 -38
- package/starters/melee/src/rules.ts +0 -24
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { rubbleType, type UnitTypeDef, type UpgradeDef } from '@v12-engine/engine'
|
|
2
2
|
import { catalogue } from './items'
|
|
3
|
+
import { heroes, HOLLOW_HEROES, KINGDOM_HEROES } from './heroes'
|
|
3
4
|
import { undeadUnits, undeadUpgrades } from './undead'
|
|
4
5
|
|
|
5
6
|
export const peasant: UnitTypeDef = {
|
|
6
7
|
id: 'peasant',
|
|
7
|
-
armourType: 'medium',
|
|
8
8
|
race: 'human',
|
|
9
9
|
name: 'Peasant',
|
|
10
10
|
kind: 'unit',
|
|
11
11
|
radius: 0.4,
|
|
12
12
|
stats: { health: 250, attackDamage: 8, attackSpeed: 0.6, attackRange: 0.4, moveSpeed: 4.05 },
|
|
13
13
|
sight: 8,
|
|
14
|
-
attacks: [{
|
|
14
|
+
attacks: [{ damagePoint: 0.4, acquisitionRange: 0, targets: ['unit', 'building'] }],
|
|
15
15
|
cost: { gold: 75 },
|
|
16
16
|
supply: 1,
|
|
17
17
|
buildTime: 10,
|
|
@@ -23,14 +23,13 @@ export const peasant: UnitTypeDef = {
|
|
|
23
23
|
|
|
24
24
|
export const footman: UnitTypeDef = {
|
|
25
25
|
id: 'footman',
|
|
26
|
-
armourType: 'heavy',
|
|
27
26
|
race: 'human',
|
|
28
27
|
name: 'Footman',
|
|
29
28
|
kind: 'unit',
|
|
30
29
|
radius: 0.45,
|
|
31
30
|
stats: { health: 480, attackDamage: 12, attackSpeed: 1.25, attackRange: 0.5, armor: 10, moveSpeed: 4.05 },
|
|
32
31
|
sight: 10,
|
|
33
|
-
attacks: [{
|
|
32
|
+
attacks: [{ damagePoint: 0.45, acquisitionRange: 8 }],
|
|
34
33
|
cost: { gold: 135 },
|
|
35
34
|
supply: 2,
|
|
36
35
|
buildTime: 14,
|
|
@@ -40,14 +39,13 @@ export const footman: UnitTypeDef = {
|
|
|
40
39
|
|
|
41
40
|
export const rifleman: UnitTypeDef = {
|
|
42
41
|
id: 'rifleman',
|
|
43
|
-
armourType: 'medium',
|
|
44
42
|
race: 'human',
|
|
45
43
|
name: 'Rifleman',
|
|
46
44
|
kind: 'unit',
|
|
47
45
|
radius: 0.45,
|
|
48
46
|
stats: { health: 300, attackDamage: 23, attackSpeed: 0.667, attackRange: 6.9, moveSpeed: 4.05 },
|
|
49
47
|
sight: 11,
|
|
50
|
-
attacks: [{
|
|
48
|
+
attacks: [{ damagePoint: 0.35, acquisitionRange: 9, projectileSpeed: 22, targets: ['ground', 'air'] }],
|
|
51
49
|
cost: { gold: 205, lumber: 30 },
|
|
52
50
|
supply: 3,
|
|
53
51
|
buildTime: 18,
|
|
@@ -57,7 +55,6 @@ export const rifleman: UnitTypeDef = {
|
|
|
57
55
|
|
|
58
56
|
export const catapult: UnitTypeDef = {
|
|
59
57
|
id: 'catapult',
|
|
60
|
-
armourType: 'heavy',
|
|
61
58
|
race: 'human',
|
|
62
59
|
name: 'Catapult',
|
|
63
60
|
kind: 'unit',
|
|
@@ -67,7 +64,6 @@ export const catapult: UnitTypeDef = {
|
|
|
67
64
|
turnRate: 2.5,
|
|
68
65
|
attacks: [
|
|
69
66
|
{
|
|
70
|
-
attackType: 'siege',
|
|
71
67
|
damagePoint: 0.6,
|
|
72
68
|
acquisitionRange: 11,
|
|
73
69
|
projectileSpeed: 11,
|
|
@@ -85,7 +81,6 @@ export const catapult: UnitTypeDef = {
|
|
|
85
81
|
|
|
86
82
|
export const gryphon: UnitTypeDef = {
|
|
87
83
|
id: 'gryphon',
|
|
88
|
-
armourType: 'medium',
|
|
89
84
|
race: 'human',
|
|
90
85
|
name: 'Gryphon Rider',
|
|
91
86
|
kind: 'unit',
|
|
@@ -94,7 +89,7 @@ export const gryphon: UnitTypeDef = {
|
|
|
94
89
|
stats: { health: 700, attackDamage: 45, attackSpeed: 0.5, attackRange: 4.5, armor: 10, magicResist: 20, moveSpeed: 5 },
|
|
95
90
|
sight: 12,
|
|
96
91
|
turnRate: 6,
|
|
97
|
-
attacks: [{
|
|
92
|
+
attacks: [{ damageType: 'magic', damagePoint: 0.5, acquisitionRange: 8, projectileSpeed: 14, targets: ['ground', 'air'] }],
|
|
98
93
|
cost: { gold: 280, lumber: 70 },
|
|
99
94
|
supply: 4,
|
|
100
95
|
buildTime: 35,
|
|
@@ -103,7 +98,6 @@ export const gryphon: UnitTypeDef = {
|
|
|
103
98
|
|
|
104
99
|
export const priest: UnitTypeDef = {
|
|
105
100
|
id: 'priest',
|
|
106
|
-
armourType: 'light',
|
|
107
101
|
race: 'human',
|
|
108
102
|
name: 'Priest',
|
|
109
103
|
kind: 'unit',
|
|
@@ -111,7 +105,7 @@ export const priest: UnitTypeDef = {
|
|
|
111
105
|
stats: { health: 290, mana: 200, manaRegen: 0.7, attackDamage: 10, attackSpeed: 0.6, attackRange: 6, moveSpeed: 4.05 },
|
|
112
106
|
initialMana: 75,
|
|
113
107
|
sight: 10,
|
|
114
|
-
attacks: [{
|
|
108
|
+
attacks: [{ damageType: 'magic', damagePoint: 0.4, acquisitionRange: 7, projectileSpeed: 16, targets: ['ground', 'air'] }],
|
|
115
109
|
abilities: ['heal', 'innerFire', 'raiseDead', 'dispelMagic'],
|
|
116
110
|
cost: { gold: 145, lumber: 10 },
|
|
117
111
|
supply: 2,
|
|
@@ -122,7 +116,6 @@ export const priest: UnitTypeDef = {
|
|
|
122
116
|
|
|
123
117
|
export const sorceress: UnitTypeDef = {
|
|
124
118
|
id: 'sorceress',
|
|
125
|
-
armourType: 'light',
|
|
126
119
|
race: 'human',
|
|
127
120
|
name: 'Sorceress',
|
|
128
121
|
kind: 'unit',
|
|
@@ -130,7 +123,7 @@ export const sorceress: UnitTypeDef = {
|
|
|
130
123
|
stats: { health: 325, mana: 200, manaRegen: 0.7, attackDamage: 12, attackSpeed: 0.6, attackRange: 6, moveSpeed: 4.05 },
|
|
131
124
|
initialMana: 75,
|
|
132
125
|
sight: 10,
|
|
133
|
-
attacks: [{
|
|
126
|
+
attacks: [{ damageType: 'magic', damagePoint: 0.4, acquisitionRange: 7, projectileSpeed: 16, targets: ['ground', 'air'] }],
|
|
134
127
|
abilities: ['slow', 'arcaneBlast', 'manaShield', 'mirrorImage'],
|
|
135
128
|
cost: { gold: 165, lumber: 20 },
|
|
136
129
|
supply: 2,
|
|
@@ -139,120 +132,8 @@ export const sorceress: UnitTypeDef = {
|
|
|
139
132
|
hotkey: 'S'
|
|
140
133
|
}
|
|
141
134
|
|
|
142
|
-
export const paladin: UnitTypeDef = {
|
|
143
|
-
id: 'paladin',
|
|
144
|
-
armourType: 'hero',
|
|
145
|
-
race: 'human',
|
|
146
|
-
name: 'Paladin',
|
|
147
|
-
kind: 'unit',
|
|
148
|
-
radius: 0.5,
|
|
149
|
-
stats: {
|
|
150
|
-
health: 645,
|
|
151
|
-
healthRegen: 1.2,
|
|
152
|
-
mana: 300,
|
|
153
|
-
manaRegen: 1.7,
|
|
154
|
-
attackDamage: 55,
|
|
155
|
-
attackSpeed: 0.625,
|
|
156
|
-
attackRange: 0.6,
|
|
157
|
-
armor: 40,
|
|
158
|
-
magicResist: 32,
|
|
159
|
-
moveSpeed: 4.25
|
|
160
|
-
},
|
|
161
|
-
sight: 12,
|
|
162
|
-
attacks: [{ attackType: 'hero', damagePoint: 0.45, acquisitionRange: 8 }],
|
|
163
|
-
hero: {
|
|
164
|
-
growth: {
|
|
165
|
-
stats: { health: 99, healthRegen: 0.1, mana: 60, manaRegen: 0.2, attackDamage: 3.5, armor: 4.3, magicResist: 2.05 },
|
|
166
|
-
percent: { attackSpeed: 0.02 }
|
|
167
|
-
},
|
|
168
|
-
learns: ['holyLight', 'stomp', 'devotionAura', 'blessedSprint', 'avatar'],
|
|
169
|
-
spells: ['barrier', 'flash']
|
|
170
|
-
},
|
|
171
|
-
inventory: 6,
|
|
172
|
-
cost: { gold: 425, lumber: 100 },
|
|
173
|
-
supply: 5,
|
|
174
|
-
buildTime: 45,
|
|
175
|
-
hotkey: 'P',
|
|
176
|
-
threat: 3
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
export const archmage: UnitTypeDef = {
|
|
180
|
-
id: 'archmage',
|
|
181
|
-
armourType: 'hero',
|
|
182
|
-
race: 'human',
|
|
183
|
-
name: 'Archmage',
|
|
184
|
-
kind: 'unit',
|
|
185
|
-
radius: 0.5,
|
|
186
|
-
stats: {
|
|
187
|
-
health: 580,
|
|
188
|
-
healthRegen: 1.1,
|
|
189
|
-
mana: 480,
|
|
190
|
-
manaRegen: 1.6,
|
|
191
|
-
attackDamage: 54,
|
|
192
|
-
attackSpeed: 0.669,
|
|
193
|
-
attackRange: 6.9,
|
|
194
|
-
armor: 21,
|
|
195
|
-
magicResist: 30,
|
|
196
|
-
moveSpeed: 4.1
|
|
197
|
-
},
|
|
198
|
-
sight: 12,
|
|
199
|
-
attacks: [{ attackType: 'hero', damageType: 'magic', damagePoint: 0.4, acquisitionRange: 8, projectileSpeed: 18, targets: ['ground', 'air'] }],
|
|
200
|
-
hero: {
|
|
201
|
-
growth: {
|
|
202
|
-
stats: { health: 99, healthRegen: 0.11, mana: 24, manaRegen: 0.16, attackDamage: 3.3, armor: 5.2, magicResist: 1.3 },
|
|
203
|
-
percent: { attackSpeed: 0.03 }
|
|
204
|
-
},
|
|
205
|
-
learns: ['flameStrike', 'frostBolt', 'clarityAura', 'cataclysm'],
|
|
206
|
-
spells: ['secondWind', 'flash']
|
|
207
|
-
},
|
|
208
|
-
inventory: 6,
|
|
209
|
-
cost: { gold: 425, lumber: 100 },
|
|
210
|
-
supply: 5,
|
|
211
|
-
buildTime: 45,
|
|
212
|
-
hotkey: 'A',
|
|
213
|
-
threat: 3
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
export const testiro: UnitTypeDef = {
|
|
217
|
-
id: 'testiro',
|
|
218
|
-
armourType: 'hero',
|
|
219
|
-
race: 'human',
|
|
220
|
-
name: 'Testiro',
|
|
221
|
-
kind: 'unit',
|
|
222
|
-
radius: 0.5,
|
|
223
|
-
stats: {
|
|
224
|
-
health: 570,
|
|
225
|
-
healthRegen: 1.1,
|
|
226
|
-
mana: 360,
|
|
227
|
-
manaRegen: 2.3,
|
|
228
|
-
attackDamage: 52,
|
|
229
|
-
attackSpeed: 0.625,
|
|
230
|
-
attackRange: 6.9,
|
|
231
|
-
armor: 28,
|
|
232
|
-
magicResist: 30,
|
|
233
|
-
moveSpeed: 4.1
|
|
234
|
-
},
|
|
235
|
-
sight: 12,
|
|
236
|
-
attacks: [{ attackType: 'hero', damageType: 'magic', damagePoint: 0.4, acquisitionRange: 8, projectileSpeed: 18, targets: ['ground', 'air'] }],
|
|
237
|
-
hero: {
|
|
238
|
-
growth: {
|
|
239
|
-
stats: { health: 90, healthRegen: 0.1, mana: 64, manaRegen: 0.08, attackDamage: 3, armor: 4.5, magicResist: 1.3 },
|
|
240
|
-
percent: { attackSpeed: 0.025 }
|
|
241
|
-
},
|
|
242
|
-
learns: ['tornado', 'groundSmash', 'lasso'],
|
|
243
|
-
spells: ['secondWind', 'flash']
|
|
244
|
-
},
|
|
245
|
-
inventory: 6,
|
|
246
|
-
cost: { gold: 425, lumber: 100 },
|
|
247
|
-
supply: 5,
|
|
248
|
-
buildTime: 45,
|
|
249
|
-
hotkey: 'E',
|
|
250
|
-
threat: 3
|
|
251
|
-
}
|
|
252
|
-
|
|
253
135
|
export const altar: UnitTypeDef = {
|
|
254
136
|
id: 'altar',
|
|
255
|
-
armourType: 'fortified',
|
|
256
137
|
race: 'human',
|
|
257
138
|
name: 'Hero Altar',
|
|
258
139
|
kind: 'building',
|
|
@@ -262,7 +143,8 @@ export const altar: UnitTypeDef = {
|
|
|
262
143
|
sight: 9,
|
|
263
144
|
cost: { gold: 180, lumber: 50 },
|
|
264
145
|
buildTime: 30,
|
|
265
|
-
|
|
146
|
+
// the Kingdom's heroes (`heroes.ts`)
|
|
147
|
+
trains: KINGDOM_HEROES,
|
|
266
148
|
revives: true,
|
|
267
149
|
hotkey: 'L'
|
|
268
150
|
}
|
|
@@ -270,7 +152,6 @@ export const altar: UnitTypeDef = {
|
|
|
270
152
|
/** Put down by a hero from the Sentry Ward item: sees around it for a minute, and enemies only see it being put down */
|
|
271
153
|
export const ward: UnitTypeDef = {
|
|
272
154
|
id: 'ward',
|
|
273
|
-
armourType: 'unarmored',
|
|
274
155
|
name: 'Sentry Ward',
|
|
275
156
|
kind: 'unit',
|
|
276
157
|
radius: 0.3,
|
|
@@ -279,7 +160,7 @@ export const ward: UnitTypeDef = {
|
|
|
279
160
|
sightNight: 12,
|
|
280
161
|
lifetime: 60,
|
|
281
162
|
invisible: { after: 2 },
|
|
282
|
-
|
|
163
|
+
uses: 3,
|
|
283
164
|
bounty: [15, 15],
|
|
284
165
|
xp: 15
|
|
285
166
|
}
|
|
@@ -287,13 +168,12 @@ export const ward: UnitTypeDef = {
|
|
|
287
168
|
/** Raised from a corpse by a priest's Raise Dead: weak, and gone after a while */
|
|
288
169
|
export const skeleton: UnitTypeDef = {
|
|
289
170
|
id: 'skeleton',
|
|
290
|
-
armourType: 'light',
|
|
291
171
|
name: 'Skeleton Warrior',
|
|
292
172
|
kind: 'unit',
|
|
293
173
|
radius: 0.4,
|
|
294
174
|
stats: { health: 180, attackDamage: 9, attackSpeed: 0.75, attackRange: 1, moveSpeed: 3.5, armor: 5 },
|
|
295
175
|
sight: 8,
|
|
296
|
-
attacks: [{
|
|
176
|
+
attacks: [{ damagePoint: 0.4, acquisitionRange: 6 }],
|
|
297
177
|
// bones leave no corpse to raise again
|
|
298
178
|
corpse: false,
|
|
299
179
|
abilities: ['burrow'],
|
|
@@ -304,13 +184,12 @@ export const skeleton: UnitTypeDef = {
|
|
|
304
184
|
|
|
305
185
|
export const gnoll: UnitTypeDef = {
|
|
306
186
|
id: 'gnoll',
|
|
307
|
-
armourType: 'medium',
|
|
308
187
|
name: 'Gnoll',
|
|
309
188
|
kind: 'unit',
|
|
310
189
|
radius: 0.42,
|
|
311
190
|
stats: { health: 400, attackDamage: 16, attackSpeed: 0.7, attackRange: 0.5, moveSpeed: 4 },
|
|
312
191
|
sight: 8,
|
|
313
|
-
attacks: [{
|
|
192
|
+
attacks: [{ damagePoint: 0.4, acquisitionRange: 5 }],
|
|
314
193
|
level: 1,
|
|
315
194
|
bounty: [8, 12],
|
|
316
195
|
xp: 25
|
|
@@ -318,22 +197,20 @@ export const gnoll: UnitTypeDef = {
|
|
|
318
197
|
|
|
319
198
|
export const troll: UnitTypeDef = {
|
|
320
199
|
id: 'troll',
|
|
321
|
-
armourType: 'medium',
|
|
322
200
|
name: 'Forest Troll',
|
|
323
201
|
kind: 'unit',
|
|
324
202
|
radius: 0.45,
|
|
325
203
|
stats: { health: 500, attackDamage: 25, attackSpeed: 0.6, attackRange: 6, armor: 10, magicResist: 10, moveSpeed: 4 },
|
|
326
204
|
sight: 9,
|
|
327
|
-
attacks: [{
|
|
205
|
+
attacks: [{ damagePoint: 0.4, acquisitionRange: 5, projectileSpeed: 18, targets: ['ground', 'air'] }],
|
|
328
206
|
level: 2,
|
|
329
207
|
bounty: [14, 20],
|
|
330
208
|
xp: 40,
|
|
331
|
-
drops: [{ item: '
|
|
209
|
+
drops: [{ item: 'healingDraught', chance: 0.25 }]
|
|
332
210
|
}
|
|
333
211
|
|
|
334
212
|
export const ogre: UnitTypeDef = {
|
|
335
213
|
id: 'ogre',
|
|
336
|
-
armourType: 'heavy',
|
|
337
214
|
name: 'Ogre Lord',
|
|
338
215
|
kind: 'unit',
|
|
339
216
|
radius: 0.75,
|
|
@@ -351,16 +228,20 @@ export const ogre: UnitTypeDef = {
|
|
|
351
228
|
moveSpeed: 3.6
|
|
352
229
|
},
|
|
353
230
|
sight: 9,
|
|
354
|
-
attacks: [{
|
|
231
|
+
attacks: [{ damagePoint: 0.55, acquisitionRange: 5 }],
|
|
355
232
|
abilities: ['clap'],
|
|
356
233
|
level: 5,
|
|
357
234
|
bounty: [45, 60],
|
|
358
235
|
xp: 115,
|
|
359
236
|
threat: 3,
|
|
237
|
+
// what it leaves behind, and now and then a relic of the default items: found, never sold
|
|
360
238
|
drops: [
|
|
361
|
-
{ item: '
|
|
362
|
-
{ item: '
|
|
363
|
-
{ item: '
|
|
239
|
+
{ item: 'ironSword', chance: 0.5 },
|
|
240
|
+
{ item: 'paddedCoat', chance: 0.5 },
|
|
241
|
+
{ item: 'manaDraught', chance: 0.5 },
|
|
242
|
+
{ item: 'emberIdol', chance: 0.05 },
|
|
243
|
+
{ item: 'ringOfTheOldKing', chance: 0.05 },
|
|
244
|
+
{ item: 'wolfhideCharm', chance: 0.05 }
|
|
364
245
|
]
|
|
365
246
|
}
|
|
366
247
|
|
|
@@ -368,7 +249,6 @@ export const creeps = [gnoll, troll, ogre]
|
|
|
368
249
|
|
|
369
250
|
export const townhall: UnitTypeDef = {
|
|
370
251
|
id: 'townhall',
|
|
371
|
-
armourType: 'fortified',
|
|
372
252
|
race: 'human',
|
|
373
253
|
name: 'Town Hall',
|
|
374
254
|
kind: 'building',
|
|
@@ -378,7 +258,7 @@ export const townhall: UnitTypeDef = {
|
|
|
378
258
|
sight: 12,
|
|
379
259
|
cost: { gold: 385, lumber: 205 },
|
|
380
260
|
buildTime: 45,
|
|
381
|
-
|
|
261
|
+
supplyGiven: 12,
|
|
382
262
|
trains: ['peasant'],
|
|
383
263
|
dropOff: true,
|
|
384
264
|
upgradesTo: 'keep',
|
|
@@ -387,7 +267,6 @@ export const townhall: UnitTypeDef = {
|
|
|
387
267
|
|
|
388
268
|
export const keep: UnitTypeDef = {
|
|
389
269
|
id: 'keep',
|
|
390
|
-
armourType: 'fortified',
|
|
391
270
|
race: 'human',
|
|
392
271
|
name: 'Keep',
|
|
393
272
|
kind: 'building',
|
|
@@ -397,7 +276,7 @@ export const keep: UnitTypeDef = {
|
|
|
397
276
|
sight: 12,
|
|
398
277
|
cost: { gold: 320, lumber: 210 },
|
|
399
278
|
buildTime: 50,
|
|
400
|
-
|
|
279
|
+
supplyGiven: 12,
|
|
401
280
|
trains: ['peasant'],
|
|
402
281
|
dropOff: true,
|
|
403
282
|
provides: ['townhall'],
|
|
@@ -407,7 +286,6 @@ export const keep: UnitTypeDef = {
|
|
|
407
286
|
|
|
408
287
|
export const castle: UnitTypeDef = {
|
|
409
288
|
id: 'castle',
|
|
410
|
-
armourType: 'fortified',
|
|
411
289
|
race: 'human',
|
|
412
290
|
name: 'Castle',
|
|
413
291
|
kind: 'building',
|
|
@@ -417,7 +295,7 @@ export const castle: UnitTypeDef = {
|
|
|
417
295
|
sight: 12,
|
|
418
296
|
cost: { gold: 360, lumber: 210 },
|
|
419
297
|
buildTime: 60,
|
|
420
|
-
|
|
298
|
+
supplyGiven: 12,
|
|
421
299
|
trains: ['peasant'],
|
|
422
300
|
dropOff: true,
|
|
423
301
|
provides: ['townhall', 'keep'],
|
|
@@ -426,7 +304,6 @@ export const castle: UnitTypeDef = {
|
|
|
426
304
|
|
|
427
305
|
export const farm: UnitTypeDef = {
|
|
428
306
|
id: 'farm',
|
|
429
|
-
armourType: 'fortified',
|
|
430
307
|
race: 'human',
|
|
431
308
|
name: 'Farm',
|
|
432
309
|
kind: 'building',
|
|
@@ -436,7 +313,7 @@ export const farm: UnitTypeDef = {
|
|
|
436
313
|
sight: 6,
|
|
437
314
|
cost: { gold: 80, lumber: 20 },
|
|
438
315
|
buildTime: 12,
|
|
439
|
-
|
|
316
|
+
supplyGiven: 6,
|
|
440
317
|
hotkey: 'F',
|
|
441
318
|
// up to four peasants take cover in it, and shoot out of it: it attacks only with them inside, as an orc burrow does
|
|
442
319
|
transport: { capacity: 4, takes: (def) => def.id === 'peasant', armed: 9 },
|
|
@@ -445,7 +322,6 @@ export const farm: UnitTypeDef = {
|
|
|
445
322
|
|
|
446
323
|
export const barracks: UnitTypeDef = {
|
|
447
324
|
id: 'barracks',
|
|
448
|
-
armourType: 'fortified',
|
|
449
325
|
race: 'human',
|
|
450
326
|
name: 'Barracks',
|
|
451
327
|
kind: 'building',
|
|
@@ -461,7 +337,6 @@ export const barracks: UnitTypeDef = {
|
|
|
461
337
|
|
|
462
338
|
export const tower: UnitTypeDef = {
|
|
463
339
|
id: 'tower',
|
|
464
|
-
armourType: 'fortified',
|
|
465
340
|
race: 'human',
|
|
466
341
|
name: 'Guard Tower',
|
|
467
342
|
kind: 'building',
|
|
@@ -469,7 +344,7 @@ export const tower: UnitTypeDef = {
|
|
|
469
344
|
footprint: { w: 2, d: 2 },
|
|
470
345
|
stats: { health: 1500, attackDamage: 60, attackSpeed: 0.83, attackRange: 8, armor: 40, magicResist: 40 },
|
|
471
346
|
sight: 12,
|
|
472
|
-
attacks: [{
|
|
347
|
+
attacks: [{ damagePoint: 0.3, acquisitionRange: 8, projectileSpeed: 24, targets: ['ground', 'air'] }],
|
|
473
348
|
cost: { gold: 110, lumber: 50 },
|
|
474
349
|
buildTime: 20,
|
|
475
350
|
requires: ['barracks'],
|
|
@@ -477,12 +352,11 @@ export const tower: UnitTypeDef = {
|
|
|
477
352
|
}
|
|
478
353
|
|
|
479
354
|
/**
|
|
480
|
-
* A piece of stone wall: a cell of it, laid in a line by a drag (`
|
|
355
|
+
* A piece of stone wall: a cell of it, laid in a line by a drag (`wallsPack`), each piece joined with those beside it
|
|
481
356
|
* and drawn by the shape that makes (its look: `stoneWallLooks`)
|
|
482
357
|
*/
|
|
483
358
|
export const stoneWall: UnitTypeDef = {
|
|
484
359
|
id: 'stoneWall',
|
|
485
|
-
armourType: 'fortified',
|
|
486
360
|
race: 'human',
|
|
487
361
|
name: 'Stone Wall',
|
|
488
362
|
kind: 'building',
|
|
@@ -501,12 +375,11 @@ export const stoneWall: UnitTypeDef = {
|
|
|
501
375
|
|
|
502
376
|
/**
|
|
503
377
|
* A gate of stone wall: a gatehouse of 3 by 3 in a line of the wall, joined and turned along it, that its owner opens
|
|
504
|
-
* and shuts for everyone (`
|
|
378
|
+
* and shuts for everyone (`wallsPack`' `wallGateCommand`): open, whoever walks goes through. A cell's gap would let
|
|
505
379
|
* nobody by
|
|
506
380
|
*/
|
|
507
381
|
export const stoneGate: UnitTypeDef = {
|
|
508
382
|
id: 'stoneGate',
|
|
509
|
-
armourType: 'fortified',
|
|
510
383
|
race: 'human',
|
|
511
384
|
name: 'Stone Gate',
|
|
512
385
|
kind: 'building',
|
|
@@ -524,7 +397,6 @@ export const stoneGate: UnitTypeDef = {
|
|
|
524
397
|
|
|
525
398
|
export const blacksmith: UnitTypeDef = {
|
|
526
399
|
id: 'blacksmith',
|
|
527
|
-
armourType: 'fortified',
|
|
528
400
|
race: 'human',
|
|
529
401
|
name: 'Blacksmith',
|
|
530
402
|
kind: 'building',
|
|
@@ -541,7 +413,6 @@ export const blacksmith: UnitTypeDef = {
|
|
|
541
413
|
|
|
542
414
|
export const alchemist: UnitTypeDef = {
|
|
543
415
|
id: 'alchemist',
|
|
544
|
-
armourType: 'fortified',
|
|
545
416
|
race: 'human',
|
|
546
417
|
name: 'Alchemist',
|
|
547
418
|
kind: 'building',
|
|
@@ -562,7 +433,6 @@ export const alchemist: UnitTypeDef = {
|
|
|
562
433
|
*/
|
|
563
434
|
export const transportShip: UnitTypeDef = {
|
|
564
435
|
id: 'transportShip',
|
|
565
|
-
armourType: 'heavy',
|
|
566
436
|
name: 'Transport Ship',
|
|
567
437
|
kind: 'unit',
|
|
568
438
|
radius: 1,
|
|
@@ -593,7 +463,6 @@ export const goblinShipyard: UnitTypeDef = {
|
|
|
593
463
|
|
|
594
464
|
export const armory: UnitTypeDef = {
|
|
595
465
|
id: 'armory',
|
|
596
|
-
armourType: 'fortified',
|
|
597
466
|
race: 'human',
|
|
598
467
|
name: 'Armory',
|
|
599
468
|
kind: 'building',
|
|
@@ -610,7 +479,6 @@ export const armory: UnitTypeDef = {
|
|
|
610
479
|
|
|
611
480
|
export const aviary: UnitTypeDef = {
|
|
612
481
|
id: 'aviary',
|
|
613
|
-
armourType: 'fortified',
|
|
614
482
|
race: 'human',
|
|
615
483
|
name: 'Aviary',
|
|
616
484
|
kind: 'building',
|
|
@@ -627,7 +495,6 @@ export const aviary: UnitTypeDef = {
|
|
|
627
495
|
|
|
628
496
|
export const lumbermill: UnitTypeDef = {
|
|
629
497
|
id: 'lumbermill',
|
|
630
|
-
armourType: 'fortified',
|
|
631
498
|
race: 'human',
|
|
632
499
|
name: 'Lumber Mill',
|
|
633
500
|
kind: 'building',
|
|
@@ -651,7 +518,7 @@ export const tree: UnitTypeDef = {
|
|
|
651
518
|
sight: 0,
|
|
652
519
|
invulnerable: true,
|
|
653
520
|
fellable: true,
|
|
654
|
-
resource: {
|
|
521
|
+
resource: { id: 'lumber', amount: 50, slots: 1, gatherTime: 8 }
|
|
655
522
|
}
|
|
656
523
|
|
|
657
524
|
export const goldmine: UnitTypeDef = {
|
|
@@ -663,12 +530,12 @@ export const goldmine: UnitTypeDef = {
|
|
|
663
530
|
stats: { health: 1 },
|
|
664
531
|
sight: 0,
|
|
665
532
|
invulnerable: true,
|
|
666
|
-
resource: {
|
|
533
|
+
resource: { id: 'gold', amount: 12500, slots: 1, entered: true }
|
|
667
534
|
}
|
|
668
535
|
|
|
669
536
|
/**
|
|
670
|
-
* A tavern: neutral, and it cannot be destroyed. It hires out
|
|
671
|
-
*
|
|
537
|
+
* A tavern: neutral, and it cannot be destroyed. It hires out every hero, of either side, to whoever has someone of
|
|
538
|
+
* theirs by it (`hires`, the `hire` command): each once, and no more heroes than a player may have
|
|
672
539
|
*/
|
|
673
540
|
export const tavern: UnitTypeDef = {
|
|
674
541
|
id: 'tavern',
|
|
@@ -678,11 +545,12 @@ export const tavern: UnitTypeDef = {
|
|
|
678
545
|
footprint: { w: 3, d: 3 },
|
|
679
546
|
stats: { health: 1500, armor: 40, magicResist: 40 },
|
|
680
547
|
sight: 9,
|
|
681
|
-
invulnerable: true
|
|
548
|
+
invulnerable: true,
|
|
549
|
+
hires: [...KINGDOM_HEROES, ...HOLLOW_HEROES]
|
|
682
550
|
}
|
|
683
551
|
|
|
684
552
|
/**
|
|
685
|
-
* The ruins a fallen building leaves where it stood, by its size (`
|
|
553
|
+
* The ruins a fallen building leaves where it stood, by its size (`remainsPack`): they block the way until workers clear
|
|
686
554
|
* them, gathering their timber as lumber
|
|
687
555
|
*/
|
|
688
556
|
export const ruins = [2, 3, 4].map((size) =>
|
|
@@ -711,9 +579,7 @@ export const units = [
|
|
|
711
579
|
sorceress,
|
|
712
580
|
catapult,
|
|
713
581
|
gryphon,
|
|
714
|
-
|
|
715
|
-
archmage,
|
|
716
|
-
testiro,
|
|
582
|
+
...heroes,
|
|
717
583
|
dummy,
|
|
718
584
|
ward,
|
|
719
585
|
skeleton,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AttackLook } from '@v12-engine/client'
|
|
2
|
+
|
|
3
|
+
// The swings of the shared characters' rig (`UnitLook.attacks`): several each, so a fight does not play the same blow
|
|
4
|
+
// over and over. At random, never the same twice running; a critical strike ends in a big two-handed slice
|
|
5
|
+
|
|
6
|
+
/** A one-handed weapon's swings: a chop, a slice, a stab */
|
|
7
|
+
export const ONE_HANDED: AttackLook = {
|
|
8
|
+
clip: ['Melee_1H_Attack_Chop', 'Melee_1H_Attack_Slice_Diagonal', 'Melee_1H_Attack_Stab'],
|
|
9
|
+
order: 'random',
|
|
10
|
+
crit: 'Melee_2H_Attack_Slice'
|
|
11
|
+
}
|
|
12
|
+
/** A two-handed weapon's: a chop and a slice, in turn */
|
|
13
|
+
export const TWO_HANDED: AttackLook = { clip: ['Melee_2H_Attack_Chop', 'Melee_2H_Attack_Slice'], crit: 'Melee_2H_Attack_Chop' }
|
|
14
|
+
/** Two weapons': both together, and each alone */
|
|
15
|
+
export const DUAL_WIELD: AttackLook = {
|
|
16
|
+
clip: ['Melee_Dualwield_Attack_Chop', 'Melee_1H_Attack_Slice_Diagonal', 'Melee_1H_Attack_Stab'],
|
|
17
|
+
order: 'random',
|
|
18
|
+
crit: 'Melee_Dualwield_Attack_Chop'
|
|
19
|
+
}
|
|
@@ -1,21 +1,52 @@
|
|
|
1
|
-
import type { AbilityLooks } from '@v12-engine/client'
|
|
1
|
+
import type { AbilityLooks, Rgb } from '@v12-engine/client'
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
/** The spells every hero brings along */
|
|
3
|
+
/** The spells every hero brings along: the engine's (`defaultHeroSpells`) */
|
|
6
4
|
const GOLD: Rgb = [1, 0.85, 0.35]
|
|
7
5
|
const LIFE: Rgb = [0.5, 1, 0.55]
|
|
8
|
-
/** What falls from the sky is gold */
|
|
9
6
|
const STARLIGHT: Rgb = [1, 0.92, 0.5]
|
|
10
7
|
|
|
11
|
-
/** How the spells every hero brings along
|
|
8
|
+
/** How the spells every hero brings along look, by their id */
|
|
12
9
|
export const heroSpellEffects: AbilityLooks = {
|
|
13
10
|
// ---- the spells every hero brings along
|
|
14
11
|
flash: { color: GOLD, style: 'burst', options: { where: 'point', rise: 0, count: 40 } },
|
|
15
12
|
secondWind: { color: LIFE, style: 'burst', options: { count: 50 } },
|
|
16
13
|
healHaste: { color: LIFE, aura: 'glow', options: { shape: 'rise', streaks: true } },
|
|
17
14
|
barrier: { color: GOLD, style: 'burst', aura: 'glow', options: { count: 36, shape: 'shell' } },
|
|
15
|
+
brand: { color: [1, 0.4, 0.1], aura: 'glow', options: { shape: 'rise', streaks: true } },
|
|
16
|
+
withered: { color: [0.5, 0.45, 0.35], aura: 'glow' },
|
|
17
|
+
phantomStride: { color: [0.7, 0.85, 1], aura: 'glow', options: { shape: 'rise' } },
|
|
18
|
+
purify: { color: [1, 1, 1], style: 'burst', options: { count: 40, shape: 'shell' } },
|
|
19
|
+
purified: { color: [1, 1, 1], aura: 'glow' },
|
|
20
|
+
waystone: { color: [0.55, 0.75, 1], style: 'burst', options: { where: 'point', count: 60, rise: 2.5, shape: 'rise' } },
|
|
21
|
+
reap: { color: [0.75, 0.2, 0.25], style: 'burst', options: { count: 30 } }
|
|
22
|
+
}
|
|
18
23
|
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
/** How the Kingdom's heroes' abilities look (`heroes.ts`), by their id */
|
|
25
|
+
export const kingdomHeroEffects: AbilityLooks = {
|
|
26
|
+
// Oathbreaker
|
|
27
|
+
oathCharge: { color: [1, 0.85, 0.4], style: 'burst', options: { count: 40, ring: 2.5, shape: 'about' } },
|
|
28
|
+
taunted: { color: [1, 0.3, 0.2] },
|
|
29
|
+
shieldwall: { color: GOLD, style: 'burst', aura: 'glow', options: { count: 30, shape: 'shell' } },
|
|
30
|
+
lastStand: { color: [1, 0.8, 0.35], aura: 'glow' },
|
|
31
|
+
bulwarkWard: { color: [0.9, 0.8, 0.5] },
|
|
32
|
+
// Dawn Priest
|
|
33
|
+
holyLight: { color: [1, 0.95, 0.45] },
|
|
34
|
+
cleansingFlame: { color: [1, 0.85, 0.5], style: 'burst', options: { count: 60, ring: 3, shape: 'about' } },
|
|
35
|
+
dawnlight: { color: [1, 0.95, 0.6] },
|
|
36
|
+
sanctuary: { color: STARLIGHT, aura: 'glow', options: { shape: 'rise', streaks: true } },
|
|
37
|
+
hallowed: { color: STARLIGHT, aura: 'glow', options: { count: 36, shape: 'shell' } },
|
|
38
|
+
echoShield: { color: LIFE, aura: 'glow' },
|
|
39
|
+
// Stormcaller
|
|
40
|
+
tornado: { color: [0.78, 0.86, 0.92], style: 'tornado' },
|
|
41
|
+
chainLightning: { color: [0.6, 0.8, 1] },
|
|
42
|
+
buffeted: { color: [0.78, 0.86, 0.92] },
|
|
43
|
+
eyeOfTheStorm: { color: [0.6, 0.75, 1], style: 'mark', options: { lasts: 5, radius: 4, sparks: 30 } },
|
|
44
|
+
stormSlow: { color: [0.6, 0.75, 1] },
|
|
45
|
+
staticCharge: { color: [0.6, 0.8, 1] },
|
|
46
|
+
// Gale Hunter
|
|
47
|
+
piercingBolt: { color: [0.85, 0.95, 0.8] },
|
|
48
|
+
tumbleShot: { color: [0.8, 1, 0.85], aura: 'glow' },
|
|
49
|
+
steadied: { color: [0.85, 0.95, 0.8] },
|
|
50
|
+
arrowstorm: { color: [0.85, 0.95, 0.8], style: 'mark', options: { lasts: 4, radius: 5, sparks: 30 } },
|
|
51
|
+
pinned: { color: [0.85, 0.95, 0.8] }
|
|
21
52
|
}
|