Isle-Slingers/js/levels.js

159 lines
4.5 KiB
JavaScript
Raw Normal View History

/* ISLE SLINGERS — levels.js
* Original level layouts. Coordinates are world pixels; (x,y) = block CENTER.
* World: width 2400, ground surface at y=900.
*/
(function (root, factory) {
var api = factory();
if (typeof module !== 'undefined' && module.exports) module.exports = api;
else root.ISLE_LEVELS = api;
})(typeof globalThis !== 'undefined' ? globalThis : this, function () {
'use strict';
// helpers to keep the data below readable
function wood(x, y, w, h) { return { x: x, y: y, w: w, h: h, mat: 'wood' }; }
function ice(x, y, w, h) { return { x: x, y: y, w: w, h: h, mat: 'ice' }; }
function stone(x, y, w, h) { return { x: x, y: y, w: w, h: h, mat: 'stone' }; }
function mogg(x, y) { return { x: x, y: y, kind: 'mogg' }; }
function grum(x, y) { return { x: x, y: y, kind: 'grum' }; }
function king(x, y) { return { x: x, y: y, kind: 'king' }; }
var SLING = { x: 260, y: 745 };
var LEVELS = [
{
id: 1,
name: 'First Perch',
birds: ['wren', 'wren', 'zippy'],
sling: SLING,
stars: [12000, 24000, 36000],
decor: { palms: [950, 2150, 2350], flowers: [700, 1200, 2050] },
blocks: [
// simple hut
wood(1500, 830, 30, 140),
wood(1640, 830, 30, 140),
wood(1570, 745, 200, 30)
],
enemies: [
mogg(1570, 876),
mogg(1770, 876)
]
},
{
id: 2,
name: 'Crate Caves',
birds: ['wren', 'zippy', 'wren'],
sling: SLING,
stars: [15000, 28000, 42000],
decor: { palms: [1000, 2200], flowers: [800, 1350, 2000] },
blocks: [
// left tower: stone base + wood post
stone(1420, 865, 70, 70),
wood(1420, 760, 30, 140),
// right tower: ice base + ice post
ice(1660, 860, 80, 80),
ice(1660, 765, 30, 110),
// side crates
wood(1300, 860, 80, 80),
wood(1790, 860, 80, 80)
],
enemies: [
mogg(1420, 666),
mogg(1660, 686),
mogg(1540, 876)
]
},
{
id: 3,
name: 'Glass Works',
birds: ['wren', 'zippy', 'boulder'],
sling: SLING,
stars: [18000, 34000, 50000],
decor: { palms: [900, 2250], flowers: [750, 1300, 2100] },
blocks: [
// ice workshop: two-storey
ice(1500, 840, 30, 120),
ice(1640, 840, 30, 120),
wood(1570, 765, 200, 30),
ice(1520, 700, 30, 100),
ice(1620, 700, 30, 100),
ice(1570, 635, 170, 30),
// wood hut
wood(1850, 830, 30, 140),
wood(1950, 830, 30, 140),
wood(1900, 745, 160, 30)
],
enemies: [
mogg(1570, 876),
mogg(1570, 596),
grum(1900, 868),
mogg(1900, 706)
]
},
{
id: 4,
name: 'Stone Keep',
birds: ['wren', 'zippy', 'boulder', 'wren'],
sling: SLING,
stars: [22000, 40000, 58000],
decor: { palms: [1050, 2300], flowers: [850, 1400, 2150] },
blocks: [
// stone wall (three cubes)
stone(1600, 865, 70, 70),
stone(1750, 865, 70, 70),
stone(1900, 865, 70, 70),
wood(1750, 815, 400, 30),
// second floor
wood(1650, 740, 30, 120),
wood(1850, 740, 30, 120),
wood(1750, 665, 260, 30),
// left ice watchtower
ice(1450, 840, 30, 120),
// right crate
stone(2050, 865, 70, 70)
],
enemies: [
mogg(1675, 876),
mogg(1825, 876),
grum(1750, 618),
mogg(2050, 806),
mogg(1500, 876)
]
},
{
id: 5,
name: 'Mog Fortress',
birds: ['wren', 'zippy', 'boulder', 'boulder'],
sling: SLING,
stars: [28000, 48000, 70000],
decor: { palms: [980, 2320], flowers: [780, 1300, 2180] },
blocks: [
// left stone tower (2 stories + ice cap)
stone(1450, 865, 70, 70),
stone(1450, 760, 70, 70),
ice(1450, 710, 30, 30),
// center keep
stone(1700, 865, 70, 70),
stone(1850, 865, 70, 70),
wood(1775, 815, 260, 30),
wood(1700, 740, 30, 120),
wood(1850, 740, 30, 120),
wood(1775, 665, 220, 30),
ice(1775, 635, 260, 30),
// right post
stone(2050, 865, 70, 70),
wood(2050, 760, 30, 120)
],
enemies: [
king(1775, 862),
mogg(1450, 671),
mogg(1775, 626),
mogg(2050, 676),
mogg(1575, 876),
mogg(1975, 876)
]
}
];
return { LEVELS: LEVELS, SLING: SLING };
});