@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,23 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
type AbilityLooks,
|
|
3
|
+
foliage,
|
|
3
4
|
FX_FILE,
|
|
4
5
|
type GameView,
|
|
5
6
|
hotView,
|
|
6
7
|
type HudClient,
|
|
7
|
-
type
|
|
8
|
+
type HudWidgetDef,
|
|
8
9
|
layFiles,
|
|
9
10
|
type ModelDef,
|
|
10
|
-
|
|
11
|
+
presetFoliage,
|
|
11
12
|
presetFx,
|
|
12
|
-
|
|
13
|
-
presetSpellStyles,
|
|
14
|
-
presetWeather,
|
|
13
|
+
presetView,
|
|
15
14
|
readCinematic,
|
|
16
15
|
type StatusLine,
|
|
17
|
-
TILE_LOOKS,
|
|
18
16
|
viewListener,
|
|
19
17
|
type UnitLooks,
|
|
20
|
-
|
|
18
|
+
heroesViewPack
|
|
21
19
|
} from '@v12-engine/client'
|
|
22
20
|
import { LOOKS_FILE } from '@v12-engine/client/looks-file'
|
|
23
21
|
import looksFile from '../looks.json'
|
|
@@ -32,6 +30,7 @@ import { holyFire } from './fire'
|
|
|
32
30
|
import { bossName, towerKills } from './labels'
|
|
33
31
|
import { rubble } from './rubble'
|
|
34
32
|
import { waveLane } from './waveLane'
|
|
33
|
+
import { ONE_HANDED, TWO_HANDED } from './attacks'
|
|
35
34
|
|
|
36
35
|
/**
|
|
37
36
|
* How the campaign looks: its own view, next to its rules in `..`. Every unit and building is a model of the shared
|
|
@@ -76,81 +75,91 @@ const person = (height: number, body: [number, number, number] | 'team') => [
|
|
|
76
75
|
const TREES = ['common_tree_1', 'common_tree_2', 'common_tree_3', 'common_tree_5', 'pine_1', 'pine_2', 'pine_3', 'pine_5']
|
|
77
76
|
|
|
78
77
|
export const looks: UnitLooks<CampaignUnit> = {
|
|
79
|
-
peasant: { height: 1.5, model: character('barbarian', 0.58, { hold: [hold('axe_1handed')] }),
|
|
80
|
-
footman: {
|
|
78
|
+
peasant: { height: 1.5, model: character('barbarian', 0.58, { hold: [hold('axe_1handed')] }), attacks: [ONE_HANDED], shapes: person(1.5, 'team') },
|
|
79
|
+
footman: {
|
|
80
|
+
height: 1.8,
|
|
81
|
+
model: character('knight', 0.7, { hold: [hold('sword_1handed'), hold('shield_round', 'l')] }),
|
|
82
|
+
// its swings in turn, never the same twice running (`./attacks`): as the knight's, the Red Hand's
|
|
83
|
+
attacks: [ONE_HANDED],
|
|
84
|
+
shapes: person(1.8, 'team')
|
|
85
|
+
},
|
|
81
86
|
archer: {
|
|
82
87
|
height: 1.7,
|
|
83
88
|
model: character('ranger', 0.68, { hold: [hold('bow')], animations: { attack: 'Ranged_2H_Shoot' } }),
|
|
84
89
|
shot: { color: [0.85, 0.75, 0.55], size: 0.2 },
|
|
85
|
-
|
|
90
|
+
shapes: person(1.7, 'team')
|
|
86
91
|
},
|
|
87
92
|
knight: {
|
|
88
93
|
height: 2.2,
|
|
89
94
|
model: character('knight', 0.9, { hold: [hold('sword_2handed')], animations: { attack: 'Melee_2H_Attack_Chop' } }),
|
|
90
|
-
|
|
95
|
+
attacks: [TWO_HANDED],
|
|
96
|
+
shapes: person(2.2, 'team')
|
|
91
97
|
},
|
|
92
98
|
hall: {
|
|
93
99
|
height: 4.4,
|
|
94
100
|
model: building('rts/castle.glb', [6.31, 2.81, 5.87], 4.4),
|
|
95
|
-
|
|
101
|
+
shapes: [{ shape: 'box', size: [3.8, 2.6, 3.8], offset: [0, 1.3, 0], color: STONE }]
|
|
96
102
|
},
|
|
97
103
|
farm: {
|
|
98
104
|
height: 2.2,
|
|
99
105
|
model: building('rts/small_farm.glb', [5.437, 3.211, 3.33], 2.6),
|
|
100
|
-
|
|
106
|
+
shapes: [{ shape: 'box', size: [1.8, 1.4, 1.8], offset: [0, 0.7, 0], color: WOOD }]
|
|
101
107
|
},
|
|
102
108
|
barracks: {
|
|
103
109
|
height: 3.2,
|
|
104
110
|
model: building('rts/barracks.glb', [3.029, 2.158, 3.234], 3.2),
|
|
105
|
-
|
|
111
|
+
shapes: [{ shape: 'box', size: [2.8, 2, 2.8], offset: [0, 1, 0], color: WOOD }]
|
|
106
112
|
},
|
|
107
113
|
tower: {
|
|
108
114
|
height: 4.8,
|
|
109
115
|
model: building('rts/watch_tower.glb', [1.515, 4.388, 1.558], 1.7, { points: { launch: { offset: [0, 3.6, 0] } } }),
|
|
110
116
|
shot: { color: [0.85, 0.75, 0.55], size: 0.25 },
|
|
111
|
-
|
|
117
|
+
shapes: [{ shape: 'cylinder', size: [1.5, 3.5, 1.5], offset: [0, 1.75, 0], color: STONE }]
|
|
112
118
|
},
|
|
113
119
|
wall: {
|
|
114
120
|
height: 1.4,
|
|
115
121
|
model: building('rts/stone_wall.glb', [4.681, 1.338, 0.74], 2.2),
|
|
116
122
|
death: { collapse: { look: 'crumble', pieces: 8, dust: true } },
|
|
117
|
-
|
|
123
|
+
shapes: [{ shape: 'box', size: [2, 1.2, 0.7], offset: [0, 0.6, 0], color: STONE }]
|
|
118
124
|
},
|
|
119
125
|
trader: {
|
|
120
126
|
height: 2.4,
|
|
121
127
|
model: building('village/market_stand.glb', [0.776, 1.563, 1.731], 2.2),
|
|
122
|
-
|
|
128
|
+
shapes: [{ shape: 'box', size: [1.8, 1.6, 1.8], offset: [0, 0.8, 0], color: [0.7, 0.55, 0.3] }]
|
|
123
129
|
},
|
|
124
130
|
raider: {
|
|
125
131
|
height: 1.8,
|
|
126
132
|
model: character('barbarian', 0.72, { hold: [hold('axe_1handed'), hold('shield_round_barbarian', 'l')] }),
|
|
127
|
-
|
|
133
|
+
attacks: [ONE_HANDED],
|
|
134
|
+
shapes: person(1.8, RED)
|
|
128
135
|
},
|
|
129
136
|
warlock: {
|
|
130
137
|
height: 1.8,
|
|
131
138
|
model: character('mage', 0.72, { hold: [hold('staff')] }),
|
|
132
139
|
shot: { color: [1, 0.45, 0.15], size: 0.3 },
|
|
133
|
-
|
|
140
|
+
shapes: person(1.8, RED)
|
|
134
141
|
},
|
|
135
142
|
brute: {
|
|
136
143
|
height: 2.5,
|
|
137
144
|
model: character('barbarian', 1.05, { hold: [hold('axe_2handed')], animations: { attack: 'Melee_2H_Attack_Chop' } }),
|
|
138
|
-
|
|
145
|
+
attacks: [TWO_HANDED],
|
|
146
|
+
shapes: person(2.5, RED)
|
|
139
147
|
},
|
|
140
148
|
warlord: {
|
|
141
149
|
height: 2.8,
|
|
142
150
|
model: character('barbarian', 1.2, { hold: [hold('sword_2handed')], animations: { attack: 'Melee_2H_Attack_Chop' } }),
|
|
151
|
+
attacks: [TWO_HANDED],
|
|
143
152
|
unitHud: { show: 'always', items: [{ text: 'Varga', size: 13, color: 'owner' }] },
|
|
144
|
-
|
|
153
|
+
shapes: person(2.8, RED)
|
|
145
154
|
},
|
|
146
|
-
gnoll: { height: 1.6, model: character('rogue_hooded', 0.62, { hold: [hold('dagger')] }),
|
|
147
|
-
prisoner: { height: 1.6, model: character('rogue', 0.62),
|
|
155
|
+
gnoll: { height: 1.6, model: character('rogue_hooded', 0.62, { hold: [hold('dagger')] }), attacks: [ONE_HANDED], shapes: person(1.6, [0.45, 0.4, 0.3]) },
|
|
156
|
+
prisoner: { height: 1.6, model: character('rogue', 0.62), shapes: person(1.6, [0.5, 0.5, 0.5]) },
|
|
148
157
|
tree: {
|
|
149
158
|
height: 3,
|
|
150
159
|
looks: Object.fromEntries(TREES.map((look) => [look, { src: `forest/${look}.glb`, scale: 0.85 }])),
|
|
151
160
|
mix: TREES,
|
|
152
161
|
vary: { scale: 0.25, lean: 0.07 },
|
|
153
|
-
|
|
162
|
+
shapes: [
|
|
154
163
|
{ shape: 'cylinder', size: [0.3, 1, 0.3], offset: [0, 0.5, 0], color: [0.36, 0.25, 0.15] },
|
|
155
164
|
{ shape: 'cone', size: [1.5, 1.8, 1.5], offset: [0, 1.7, 0], color: [0.15, 0.38, 0.18] }
|
|
156
165
|
]
|
|
@@ -158,7 +167,7 @@ export const looks: UnitLooks<CampaignUnit> = {
|
|
|
158
167
|
goldmine: {
|
|
159
168
|
height: 3.2,
|
|
160
169
|
model: building('rts/mine.glb', [3.853, 3.508, 4.084], 3.9),
|
|
161
|
-
|
|
170
|
+
shapes: [
|
|
162
171
|
{ shape: 'box', size: [3.5, 2, 3.5], offset: [0, 1, 0], color: [0.4, 0.38, 0.35] },
|
|
163
172
|
{ shape: 'sphere', size: [1, 1, 1], offset: [0, 2.4, 0], color: GOLD }
|
|
164
173
|
]
|
|
@@ -171,7 +180,11 @@ export const effects: AbilityLooks = {
|
|
|
171
180
|
rallied: { color: [1, 0.6, 0.2], aura: 'glow' },
|
|
172
181
|
// drawn by a style of the game's own (`styles` below, made in fire.ts)
|
|
173
182
|
judgement: { color: [1, 0.85, 0.35], style: 'campaign.holyFire' },
|
|
174
|
-
drinkPotion: { color: [0.4, 1, 0.5] }
|
|
183
|
+
drinkPotion: { color: [0.4, 1, 0.5] },
|
|
184
|
+
// the engine's hero spells the knight brings, and the buffs they put on
|
|
185
|
+
barrier: { color: GOLD, style: 'burst', aura: 'glow', options: { count: 36, shape: 'shell' } },
|
|
186
|
+
purify: { color: [1, 1, 1], style: 'burst', options: { count: 40, shape: 'shell' } },
|
|
187
|
+
purified: { color: [1, 1, 1], aura: 'glow' }
|
|
175
188
|
}
|
|
176
189
|
|
|
177
190
|
/** The lines on the HUD, from what the game reports: the wave, when the next one comes, who is still coming */
|
|
@@ -186,7 +199,7 @@ function status(report: Record<string, unknown>): StatusLine[] {
|
|
|
186
199
|
}
|
|
187
200
|
|
|
188
201
|
/** A panel of the campaign's own: what the next wave brings, while the player waits for it (the siege) */
|
|
189
|
-
const nextWavePanel:
|
|
202
|
+
const nextWavePanel: HudWidgetDef = {
|
|
190
203
|
id: 'campaign.nextWave',
|
|
191
204
|
place: 'top-right',
|
|
192
205
|
mount(element: HTMLElement, client: HudClient) {
|
|
@@ -206,7 +219,9 @@ const nextWavePanel: HudPartDef = {
|
|
|
206
219
|
}
|
|
207
220
|
|
|
208
221
|
export const campaignView: GameView<CampaignUnit, CampaignResource, CampaignMessage> = layFiles(
|
|
209
|
-
|
|
222
|
+
// the client's ready-made looks it draws none of by itself: the rain and snow, the abilities' styles, a building's
|
|
223
|
+
// rally flag, the glow over a unit with a buff and the looks of the engine's tiles, under what the view says of its own
|
|
224
|
+
presetView({
|
|
210
225
|
files: {
|
|
211
226
|
// its own folder of files (public/games/campaign, with an assets.json saying what is in it): where the editor puts
|
|
212
227
|
// what is taken in for the game
|
|
@@ -229,10 +244,10 @@ export const campaignView: GameView<CampaignUnit, CampaignResource, CampaignMess
|
|
|
229
244
|
},
|
|
230
245
|
// what the screen does as a wave sets out, besides the flare the rules fire: the camera feels it
|
|
231
246
|
on: [viewListener(waveComing, ({ x, z }, client) => client.camera.shake(x, z, 0.3))],
|
|
232
|
-
// the HUD's half of the heroes the rules take (`
|
|
233
|
-
packs: [
|
|
247
|
+
// the HUD's half of the heroes the rules take (`heroesPack`): the hero's panel, the heroes' portraits, the shop
|
|
248
|
+
packs: [heroesViewPack()],
|
|
234
249
|
hud: {
|
|
235
|
-
|
|
250
|
+
widgets: [nextWavePanel],
|
|
236
251
|
resources: { gold: { chip: 'background: radial-gradient(circle at 35% 30%, #fff3b8, var(--vg-gold) 45%, #9c6f12)' } },
|
|
237
252
|
status,
|
|
238
253
|
messages: {
|
|
@@ -284,29 +299,25 @@ export const campaignView: GameView<CampaignUnit, CampaignResource, CampaignMess
|
|
|
284
299
|
renderers: [towerKills, bossName, rubble],
|
|
285
300
|
fx: {
|
|
286
301
|
abilities: {
|
|
287
|
-
// spell
|
|
288
|
-
styles: {
|
|
302
|
+
// a spell style of its own beside the ready-made ones, by the name the effects' looks give (`effects` above)
|
|
303
|
+
styles: { 'campaign.holyFire': holyFire },
|
|
289
304
|
looks: effects
|
|
290
305
|
},
|
|
291
306
|
// the ready-made effects the maps and the rules use; what the editor's FX panel wrote is laid over them (`fx.json`)
|
|
292
307
|
defs: presetFx(['campfire', 'torch', 'dust', 'puff', 'spark-burst', 'explosion', 'glow'])
|
|
293
308
|
},
|
|
294
|
-
|
|
295
|
-
// the ready-made rain and snow, a building's rally flag, the glow over a unit with a buff: the client draws none
|
|
296
|
-
// of them by itself
|
|
297
|
-
weather: presetWeather(),
|
|
309
|
+
world: {
|
|
298
310
|
// trees and scenery in front of the player's own units faded out
|
|
299
311
|
seeThrough: {}
|
|
300
312
|
},
|
|
313
|
+
ground: {
|
|
314
|
+
// the maps' grass (the rules' `grass` layer): a meadow with flowers in it, the tall grass of the same name
|
|
315
|
+
cellLayers: { grass: foliage({ ...presetFoliage.meadow, styles: { 2: presetFoliage.tallGrass } }) }
|
|
316
|
+
},
|
|
301
317
|
units: {
|
|
302
|
-
rallyFlag: presetRallyFlag(),
|
|
303
|
-
buffMarker: presetBuffMarker(),
|
|
304
318
|
// what the editor's model setup wrote is laid over these (`looks.json`)
|
|
305
319
|
looks
|
|
306
320
|
},
|
|
307
|
-
ground: {
|
|
308
|
-
tiles: TILE_LOOKS
|
|
309
|
-
},
|
|
310
321
|
input: {
|
|
311
322
|
keys: {
|
|
312
323
|
actions: {
|
|
@@ -322,7 +333,7 @@ export const campaignView: GameView<CampaignUnit, CampaignResource, CampaignMess
|
|
|
322
333
|
}
|
|
323
334
|
}
|
|
324
335
|
}
|
|
325
|
-
},
|
|
336
|
+
}),
|
|
326
337
|
// the files the editor writes next to the code, laid over what it says above
|
|
327
338
|
[
|
|
328
339
|
[LOOKS_FILE, looksFile],
|
|
@@ -15,7 +15,7 @@ import wavesData from './waves.json'
|
|
|
15
15
|
|
|
16
16
|
/*
|
|
17
17
|
* The waves of the siege (mission two): who comes out of the war camp, how often, and what beating a wave pays. They
|
|
18
|
-
* are the file `waves.json`, a file of the game's own (`wavesFile`, in `
|
|
18
|
+
* are the file `waves.json`, a file of the game's own (`wavesFile`, in `Rules.files`): each world's registry holds
|
|
19
19
|
* what it plays (`siegeWaves(world)`), which the editor's Waves panel changes as it writes the file (saved with the
|
|
20
20
|
* map, undone like the rest). They go by timers and events: nothing looks at them every tick
|
|
21
21
|
*/
|
|
@@ -29,8 +29,8 @@ export interface Wave {
|
|
|
29
29
|
bonus: number
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
/** The waves' file, a file of the game's own: what the game lists (`
|
|
33
|
-
export const wavesFile = defineGameFile('waves.json', wavesData, readWaves)
|
|
32
|
+
/** The waves' file, a file of the game's own: what the game lists (`Rules.files`), read as waves */
|
|
33
|
+
export const wavesFile = defineGameFile({ id: 'waves.json', data: wavesData, read: readWaves })
|
|
34
34
|
|
|
35
35
|
/** The waves a world, a screen or the editor plays, in order: its registry's (`registry.file`) */
|
|
36
36
|
export const siegeWaves = (of: { readonly registry: Registry }): Wave[] => of.registry.file(wavesFile)
|
|
@@ -79,7 +79,7 @@ interface WaveState {
|
|
|
79
79
|
* The state of the waves, kept in the world: what the waves remember belongs to the world, not to the game module,
|
|
80
80
|
* which every world shares. As world state it goes into a save, and so do the timers it waits for
|
|
81
81
|
*/
|
|
82
|
-
export const waves = defineComponent<WaveState>('campaign.waves',
|
|
82
|
+
export const waves = defineComponent<WaveState>({ id: 'campaign.waves', default: () => ({ wave: 0, phase: 'idle', timer: 0, queue: [] }) })
|
|
83
83
|
|
|
84
84
|
export const wavesOf = (world: World): WaveState => world.state(waves)
|
|
85
85
|
|
|
@@ -91,12 +91,12 @@ function raiders(world: World): number {
|
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
/** A wave was beaten: how many are, now. For whoever keeps count, like the mission */
|
|
94
|
-
export const waveBeaten = defineEvent<{ wave: number }>('campaign.waveBeaten')
|
|
94
|
+
export const waveBeaten = defineEvent<{ wave: number }>({ id: 'campaign.waveBeaten' })
|
|
95
95
|
/** A wave is coming out of the camp: for the mission (the gate shuts) and the screen (the horn, the flare) */
|
|
96
|
-
export const waveComing = defineEvent<{ wave: number; x: number; z: number }>('campaign.waveComing',
|
|
96
|
+
export const waveComing = defineEvent<{ wave: number; x: number; z: number }>({ id: 'campaign.waveComing', replicate: 'everyone' })
|
|
97
97
|
|
|
98
98
|
/** The next wave is due: its raiders come out of the camp, one every so often */
|
|
99
|
-
const waveComes = defineTimer('campaign.waveComes', (world) => {
|
|
99
|
+
const waveComes = defineTimer({ id: 'campaign.waveComes', run: (world) => {
|
|
100
100
|
if (world.winner !== null) return
|
|
101
101
|
const state = wavesOf(world)
|
|
102
102
|
const { units, interval } = siegeWaves(world)[state.wave]
|
|
@@ -108,15 +108,15 @@ const waveComes = defineTimer('campaign.waveComes', (world) => {
|
|
|
108
108
|
const camp = world.map.point(WAR_CAMP)
|
|
109
109
|
world.events.emit(waveComing, { wave: state.wave + 1, x: camp.x, z: camp.z })
|
|
110
110
|
world.message(PLAYER, { key: MSG.waveComing, params: { wave: state.wave + 1 } }, 'info')
|
|
111
|
-
})
|
|
111
|
+
} })
|
|
112
112
|
|
|
113
113
|
/** The next raider of the wave comes out, and goes for the hall. After the last, the wave is fought */
|
|
114
|
-
const raiderComes = defineTimer('campaign.raiderComes', (world, _data, { left }) => {
|
|
114
|
+
const raiderComes = defineTimer({ id: 'campaign.raiderComes', run: (world, _data, { left }) => {
|
|
115
115
|
if (world.winner !== null) return
|
|
116
116
|
const state = wavesOf(world)
|
|
117
117
|
comeOut(world, state.queue.shift()!)
|
|
118
118
|
if (left === 0) state.phase = 'fighting'
|
|
119
|
-
})
|
|
119
|
+
} })
|
|
120
120
|
|
|
121
121
|
/** The last raider of a wave died: the wave is beaten, for gold, and the next one is set to come */
|
|
122
122
|
const lastOfTheWave = defineListener({
|
|
@@ -145,15 +145,16 @@ function waitForWave(world: World, seconds: number): void {
|
|
|
145
145
|
/** Sets the first wave to come. Called once, as the siege begins */
|
|
146
146
|
export const startWaves = (world: World) => waitForWave(world, FIRST_WAIT)
|
|
147
147
|
|
|
148
|
-
/**
|
|
148
|
+
/**
|
|
149
|
+
* A raider comes out of the camp and goes for the hall: `raider.order` goes in as a command of its owner's, the way
|
|
150
|
+
* every order does
|
|
151
|
+
*/
|
|
149
152
|
function comeOut(world: World, type: string): void {
|
|
150
153
|
const camp = world.map.point(WAR_CAMP)
|
|
151
|
-
const raider = world.spawn(type,
|
|
154
|
+
const raider = world.spawn(type, { at: camp, owner: ENEMY, facing: camp.facing })
|
|
152
155
|
const hall = world.named(HALL)
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
: { type: 'move', point: { x: world.terrain.width / 2, z: world.terrain.depth / 2 } }
|
|
156
|
-
world.issue({ type: 'order', player: ENEMY, entities: [raider.id], order })
|
|
156
|
+
if (hall?.alive) raider.order('attack', hall)
|
|
157
|
+
else raider.order('move', { x: world.terrain.width / 2, z: world.terrain.depth / 2 })
|
|
157
158
|
}
|
|
158
159
|
|
|
159
160
|
/** Brings the next wave on now, instead of waiting for it. The seconds that were left are paid out in gold */
|
|
@@ -169,7 +170,7 @@ export const nextWave = defineCommand('nextWave', {}, (world, player) => {
|
|
|
169
170
|
export const waveTimers = [waveComes, raiderComes]
|
|
170
171
|
export const waveListeners = [lastOfTheWave]
|
|
171
172
|
|
|
172
|
-
/** What the player is told about the waves, for the HUD: see `
|
|
173
|
+
/** What the player is told about the waves, for the HUD: see `Rules.report`. Nothing until a mission starts them */
|
|
173
174
|
export function reportWaves(world: World): Record<string, unknown> {
|
|
174
175
|
const state = wavesOf(world)
|
|
175
176
|
if (state.phase === 'idle') return {}
|
|
@@ -1,2 +1,9 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* The game, whole, as every part of the project takes it (`createGame`): the campaign's (`src/campaign/game.ts`): its
|
|
3
|
+
* rules (`src/campaign`), its look (`src/campaign/view`, fetched as the page first plays it), its maps and the mission
|
|
4
|
+
* of a map given as a game of it starts. The page, the server, the editor and the tests all take this
|
|
5
|
+
*/
|
|
2
6
|
export { campaignGame as game } from './campaign/game'
|
|
7
|
+
export { ENEMY, PLAYER, UNIT } from './campaign'
|
|
8
|
+
// (saved while it runs, the campaign's rules and its look take their new versions with no new page:
|
|
9
|
+
// `src/campaign/index.ts` and `src/campaign/view/index.ts` say so)
|
|
@@ -14,7 +14,12 @@
|
|
|
14
14
|
* screen otherwise. The debug panel (🐞 on the top bar, Alt+Shift+D) and its cheats are in the game while developing
|
|
15
15
|
* (`npm run dev`), not in a built page: `debug` says otherwise
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
// @if !desktop
|
|
18
|
+
import { appScenes, sceneAsked, startApp } from '@v12-engine/client/app'
|
|
19
|
+
// @end
|
|
20
|
+
// @if desktop
|
|
21
|
+
import { appScenes, exitButton, sceneAsked, startApp } from '@v12-engine/client/app'
|
|
22
|
+
// @end
|
|
18
23
|
import '@v12-engine/client/styles.css'
|
|
19
24
|
// the theme's typefaces come with the client: the page's own font stays what it was
|
|
20
25
|
import '@v12-engine/client/fonts.css'
|
|
@@ -22,17 +27,20 @@ import { theLongRoad } from './campaign/scenes'
|
|
|
22
27
|
// @if editor
|
|
23
28
|
import { editor } from './editor'
|
|
24
29
|
// @end
|
|
25
|
-
import {
|
|
26
|
-
|
|
30
|
+
import { game } from './game'
|
|
31
|
+
// @if desktop
|
|
32
|
+
// what the desktop app adds: its shell's stores, the game saved as the window closes, an error log, updates, Exit
|
|
33
|
+
import { desktop } from './desktop'
|
|
34
|
+
// @end
|
|
27
35
|
|
|
36
|
+
// @if desktop
|
|
37
|
+
const shell = desktop()
|
|
38
|
+
|
|
39
|
+
// @end
|
|
28
40
|
const scenes = appScenes({
|
|
29
|
-
// the game
|
|
30
|
-
//
|
|
31
|
-
game
|
|
32
|
-
rules,
|
|
33
|
-
maps,
|
|
34
|
-
map: DEFAULT_MAP,
|
|
35
|
-
start,
|
|
41
|
+
// the game (`src/game.ts`): its rules say what the start screen shows, its maps and its start are the scenes', and its
|
|
42
|
+
// look (and the client that draws it) is fetched as a scene first plays it, so that the start screen shows at once
|
|
43
|
+
game,
|
|
36
44
|
// @if editor
|
|
37
45
|
editor,
|
|
38
46
|
// @end
|
|
@@ -42,6 +50,17 @@ const scenes = appScenes({
|
|
|
42
50
|
// @if rooms
|
|
43
51
|
server: { rooms: true },
|
|
44
52
|
// @end
|
|
53
|
+
// the campaign's menu, its button first on the start screen, and its missions among the scenes
|
|
54
|
+
home: {
|
|
55
|
+
buttons: [{ label: 'Campaign', scene: theLongRoad.menu }],
|
|
56
|
+
// @if desktop
|
|
57
|
+
// Exit, last on the start screen: in the shell alone, as a page cannot close its tab
|
|
58
|
+
after: [exitButton(shell)]
|
|
59
|
+
// @end
|
|
60
|
+
},
|
|
61
|
+
extra: theLongRoad.scenes,
|
|
62
|
+
// the game on its own is Free play: a map with its mission's rules, nothing carried or kept
|
|
63
|
+
scenes: { play: { name: 'Free play' } },
|
|
45
64
|
menu: {
|
|
46
65
|
description: 'A campaign made with V12: three missions, a hero carried from one to the next.',
|
|
47
66
|
details: [{ label: 'Missions', value: 'three, played in order' }]
|
|
@@ -55,16 +74,16 @@ const scenes = appScenes({
|
|
|
55
74
|
}
|
|
56
75
|
})
|
|
57
76
|
|
|
58
|
-
// the campaign's menu and missions among the scenes, its button first on the start screen
|
|
59
|
-
scenes.push(...theLongRoad.scenes)
|
|
60
|
-
const home = scenes.find((scene) => scene.id === 'home') as MenuScene
|
|
61
|
-
home.buttons.unshift({ label: 'Campaign', scene: theLongRoad.menu })
|
|
62
|
-
// the game on its own is Free play: a map with its mission's rules, nothing carried or kept
|
|
63
|
-
for (const scene of scenes) if (scene.id === 'play') scene.name = 'Free play'
|
|
64
|
-
for (const button of home.buttons) if (button.scene?.id === 'play') button.label = 'Free play'
|
|
65
|
-
|
|
66
77
|
/** The ground's textures made in a worker of the page's (`src/ground.worker.ts`), made at the first texture: the page goes on while they are made */
|
|
67
78
|
const groundWorker = () => new Worker(new URL('./ground.worker.ts', import.meta.url), { type: 'module' })
|
|
79
|
+
/** The navigations of its worlds built in another (`src/navigation.worker.ts`), made at the first build */
|
|
80
|
+
const navigationWorker = () => new Worker(new URL('./navigation.worker.ts', import.meta.url), { type: 'module' })
|
|
68
81
|
|
|
69
|
-
|
|
82
|
+
// @if !desktop
|
|
83
|
+
const app = startApp({ target: '#game', game, scenes, start: sceneAsked(scenes, 'home'), groundWorker, navigationWorker })
|
|
84
|
+
// @end
|
|
85
|
+
// @if desktop
|
|
86
|
+
const app = startApp({ target: '#game', game, scenes, start: sceneAsked(scenes, 'home'), groundWorker, navigationWorker, ...shell.options })
|
|
87
|
+
shell.started(app)
|
|
88
|
+
// @end
|
|
70
89
|
Object.assign(window, { app })
|
|
@@ -23,8 +23,8 @@ export type FortPaths =
|
|
|
23
23
|
export type FortLights =
|
|
24
24
|
| 'bonfire'
|
|
25
25
|
|
|
26
|
-
/** The effects of the map that are named, for `client.
|
|
27
|
-
export type
|
|
26
|
+
/** The effects of the map that are named, for `client.mapFx.named(...)` */
|
|
27
|
+
export type FortFx =
|
|
28
28
|
| 'bonfire'
|
|
29
29
|
|
|
30
30
|
/** The ids of the regions, points and paths by name: what a field that names one keeps (it is handed the name) */
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
{ "id": 20, "name": "gate", "x": 48, "z": 42, "scale": [0.68,1,1], "gate": true, "model": "rts/castle_gate.glb", "open": true, "radius": 2, "yaw": 0 },
|
|
21
21
|
{ "id": 31, "x": 48, "z": 8, "scale": [2,2,2], "model": "village/bonfire.glb", "yaw": 0 }
|
|
22
22
|
],
|
|
23
|
-
"environment": {"clouds":{"cover":0.6,"speed":1.2},"light":{"sunAround":220,"sunUp":20,"night":{"ambient":0.35,"ambientColor":[0.5,0.55,0.8]}},"fog":{"start":40,"end":150,"color":[0.08,0.09,0.14]},"lights":[{"id":1000,"x":45.5,"z":41,"height":2.6,"color":[1,0.7,0.4],"intensity":1.6,"range":9,"when":"night","flicker":0.3},{"id":1002,"x":50.5,"z":41,"height":2.6,"color":[1,0.7,0.4],"intensity":1.6,"range":9,"when":"night","flicker":0.3},{"id":1004,"x":34,"z":40,"height":2.6,"color":[1,0.7,0.4],"intensity":1.6,"range":9,"when":"night","flicker":0.3},{"id":1006,"x":62,"z":40,"height":2.6,"color":[1,0.7,0.4],"intensity":1.6,"range":9,"when":"night","flicker":0.3},{"id":1009,"x":48,"z":52,"height":1.5,"color":[1,0.6,0.3],"intensity":2,"range":12,"when":"night","flicker":0.4,"name":"bonfire"}],"
|
|
23
|
+
"environment": {"clouds":{"cover":0.6,"speed":1.2},"light":{"sunAround":220,"sunUp":20,"night":{"ambient":0.35,"ambientColor":[0.5,0.55,0.8]}},"fog":{"start":40,"end":150,"color":[0.08,0.09,0.14]},"lights":[{"id":1000,"x":45.5,"z":41,"height":2.6,"color":[1,0.7,0.4],"intensity":1.6,"range":9,"when":"night","flicker":0.3},{"id":1002,"x":50.5,"z":41,"height":2.6,"color":[1,0.7,0.4],"intensity":1.6,"range":9,"when":"night","flicker":0.3},{"id":1004,"x":34,"z":40,"height":2.6,"color":[1,0.7,0.4],"intensity":1.6,"range":9,"when":"night","flicker":0.3},{"id":1006,"x":62,"z":40,"height":2.6,"color":[1,0.7,0.4],"intensity":1.6,"range":9,"when":"night","flicker":0.3},{"id":1009,"x":48,"z":52,"height":1.5,"color":[1,0.6,0.3],"intensity":2,"range":12,"when":"night","flicker":0.4,"name":"bonfire"}],"fx":[{"id":1001,"fx":"torch","x":45.5,"z":41,"height":2.2,"when":"night"},{"id":1003,"fx":"torch","x":50.5,"z":41,"height":2.2,"when":"night"},{"id":1005,"fx":"torch","x":34,"z":40,"height":2.2,"when":"night"},{"id":1007,"fx":"torch","x":62,"z":40,"height":2.2,"when":"night"},{"id":1008,"fx":"campfire","x":48,"z":52,"name":"bonfire"}]},
|
|
24
24
|
"day": {"start":22,"still":true},
|
|
25
25
|
"camps": [],
|
|
26
26
|
"objects": [
|
|
@@ -1158,5 +1158,105 @@
|
|
|
1158
1158
|
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1159
1159
|
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1160
1160
|
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
|
1161
|
-
]
|
|
1161
|
+
],
|
|
1162
|
+
"cells": {
|
|
1163
|
+
"grass": [
|
|
1164
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1165
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1166
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1167
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1168
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1169
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1170
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1171
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1172
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1173
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1174
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1175
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1176
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1177
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1178
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1179
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1180
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1181
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1182
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1183
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1184
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1185
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1186
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1187
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1188
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1189
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1190
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1191
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1192
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1193
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1194
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1195
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1196
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1197
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1198
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1199
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1200
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1201
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1202
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1203
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1204
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1205
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1206
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1207
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1208
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1209
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1210
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1211
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1212
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1213
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1214
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1215
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1216
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1217
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1218
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1219
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1220
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1221
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1222
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1223
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1224
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1225
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1226
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1227
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1228
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1229
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1230
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1231
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1232
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1233
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1234
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1235
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1236
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1237
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1238
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1239
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1240
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1241
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1242
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1243
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1244
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1245
|
+
"AAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAA",
|
|
1246
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1247
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1248
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1249
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1250
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1251
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1252
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1253
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1254
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1255
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1256
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1257
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1258
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
|
1259
|
+
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
|
1260
|
+
]
|
|
1261
|
+
}
|
|
1162
1262
|
}
|
|
@@ -29,8 +29,8 @@ export type HomesteadPaths = never
|
|
|
29
29
|
/** The lights of the map that are named, for `client.lights.named(...)` */
|
|
30
30
|
export type HomesteadLights = never
|
|
31
31
|
|
|
32
|
-
/** The effects of the map that are named, for `client.
|
|
33
|
-
export type
|
|
32
|
+
/** The effects of the map that are named, for `client.mapFx.named(...)` */
|
|
33
|
+
export type HomesteadFx = never
|
|
34
34
|
|
|
35
35
|
/** The ids of the regions, points and paths by name: what a field that names one keeps (it is handed the name) */
|
|
36
36
|
export const HomesteadIds = { regions: { "ford": 12, "caravan": 13, "redHandCamp": 20 }, points: { "outpost": 11, "camp": 19 }, paths: { } } as const
|