Stub out enough for CC2's Lesson 3 to load
This commit is contained in:
parent
e8d3adfe8e
commit
d3e60b88fa
@ -81,12 +81,12 @@ const TILE_ENCODING = {
|
|||||||
0x0d: 'force_floor_w',
|
0x0d: 'force_floor_w',
|
||||||
0x0e: 'green_wall',
|
0x0e: 'green_wall',
|
||||||
0x0f: 'green_floor',
|
0x0f: 'green_floor',
|
||||||
//0x10: 'teleport_red',
|
0x10: 'teleport_red',
|
||||||
0x11: 'teleport_blue',
|
0x11: 'teleport_blue',
|
||||||
//0x12: 'teleport_yellow',
|
0x12: 'teleport_yellow',
|
||||||
//0x13: 'teleport_green',
|
0x13: 'teleport_green',
|
||||||
0x14: 'exit',
|
0x14: 'exit',
|
||||||
//0x15: 'slime',
|
0x15: 'slime',
|
||||||
0x16: ['player', '#direction', '#next'],
|
0x16: ['player', '#direction', '#next'],
|
||||||
0x17: ['dirt_block', '#direction', '#next'],
|
0x17: ['dirt_block', '#direction', '#next'],
|
||||||
0x18: ['walker', '#direction', '#next'],
|
0x18: ['walker', '#direction', '#next'],
|
||||||
@ -145,20 +145,20 @@ const TILE_ENCODING = {
|
|||||||
0x4d: ['stopwatch_toggle', '#next'],
|
0x4d: ['stopwatch_toggle', '#next'],
|
||||||
// 0x4e: Transmogrifier :
|
// 0x4e: Transmogrifier :
|
||||||
// 0x4f: Railroad track (Modifier required, see section below) :
|
// 0x4f: Railroad track (Modifier required, see section below) :
|
||||||
// 0x50: Steel wall :
|
0x50: ['steel'],
|
||||||
// 0x51: Time bomb : '#next'
|
0x51: ['dynamite', '#next'],
|
||||||
// 0x52: Helmet : '#next'
|
// 0x52: Helmet : '#next'
|
||||||
// 0x56: Melinda : '#direction', '#next'
|
0x56: ['player2', '#direction', '#next'],
|
||||||
// 0x57: Timid teeth : '#direction', '#next'
|
// 0x57: Timid teeth : '#direction', '#next'
|
||||||
// 0x58: Explosion animation (unused in main levels) : '#direction', '#next'
|
// 0x58: Explosion animation (unused in main levels) : '#direction', '#next'
|
||||||
// 0x59: Hiking boots : '#next'
|
0x59: ['hiking_boots', '#next'],
|
||||||
// 0x5a: Male-only sign :
|
// 0x5a: Male-only sign :
|
||||||
// 0x5b: Female-only sign :
|
// 0x5b: Female-only sign :
|
||||||
// 0x5c: Inverter gate (N) : Modifier allows other gates, see below
|
// 0x5c: Inverter gate (N) : Modifier allows other gates, see below
|
||||||
// 0x5e: Logic switch (ON) :
|
// 0x5e: Logic switch (ON) :
|
||||||
// 0x5f: Flame jet (OFF) :
|
0x5f: 'flame_jet_off',
|
||||||
// 0x60: Flame jet (ON) :
|
0x60: 'flame_jet_on',
|
||||||
// 0x61: Orange button :
|
0x61: 'button_orange',
|
||||||
// 0x62: Lightning bolt : '#next'
|
// 0x62: Lightning bolt : '#next'
|
||||||
// 0x63: Yellow tank : '#direction', '#next'
|
// 0x63: Yellow tank : '#direction', '#next'
|
||||||
// 0x64: Yellow tank button :
|
// 0x64: Yellow tank button :
|
||||||
@ -180,8 +180,8 @@ const TILE_ENCODING = {
|
|||||||
0x7a: ['score_10', '#next'],
|
0x7a: ['score_10', '#next'],
|
||||||
0x7b: ['score_100', '#next'],
|
0x7b: ['score_100', '#next'],
|
||||||
0x7c: ['score_1000', '#next'],
|
0x7c: ['score_1000', '#next'],
|
||||||
// 0x7d: Solid green wall :
|
0x7d: ['popdown_wall'],
|
||||||
// 0x7e: False green wall :
|
0x7e: ['popdown_floor'],
|
||||||
0x7f: ['forbidden', '#next'],
|
0x7f: ['forbidden', '#next'],
|
||||||
0x80: ['score_2x', '#next'],
|
0x80: ['score_2x', '#next'],
|
||||||
// 0x81: Directional block : '#direction', Directional Arrows Bitmask, '#next'
|
// 0x81: Directional block : '#direction', Directional Arrows Bitmask, '#next'
|
||||||
|
|||||||
@ -680,6 +680,9 @@ const EDITOR_TOOLS = [{
|
|||||||
name: "Wire",
|
name: "Wire",
|
||||||
desc: "Draw CC2 wiring",
|
desc: "Draw CC2 wiring",
|
||||||
// TODO text tool; thin walls tool; ice tool; map generator?; subtools for select tool (copy, paste, crop)
|
// TODO text tool; thin walls tool; ice tool; map generator?; subtools for select tool (copy, paste, crop)
|
||||||
|
// TODO interesting option: rotate an actor as you draw it by dragging? or hold a key like in
|
||||||
|
// slade when you have some selected?
|
||||||
|
// TODO ah, railroads...
|
||||||
}];
|
}];
|
||||||
// Tiles the "adjust" tool will turn into each other
|
// Tiles the "adjust" tool will turn into each other
|
||||||
const EDITOR_ADJUST_TOGGLES = {
|
const EDITOR_ADJUST_TOGGLES = {
|
||||||
|
|||||||
@ -68,10 +68,11 @@ export const CC2_TILESET_LAYOUT = {
|
|||||||
// mercury boot
|
// mercury boot
|
||||||
// canopy, xray
|
// canopy, xray
|
||||||
|
|
||||||
// tnt
|
// TODO lit
|
||||||
|
dynamite: [0, 4],
|
||||||
bomb: [5, 4],
|
bomb: [5, 4],
|
||||||
green_bomb: [6, 4],
|
green_bomb: [6, 4],
|
||||||
// ??? tiny fireworks
|
// TODO bomb fuse tile, ugh
|
||||||
floor_custom_green: [8, 4],
|
floor_custom_green: [8, 4],
|
||||||
floor_custom_pink: [9, 4],
|
floor_custom_pink: [9, 4],
|
||||||
floor_custom_yellow: [10, 4],
|
floor_custom_yellow: [10, 4],
|
||||||
@ -83,8 +84,11 @@ export const CC2_TILESET_LAYOUT = {
|
|||||||
|
|
||||||
explosion: [[0, 5], [1, 5], [2, 5], [3, 5]],
|
explosion: [[0, 5], [1, 5], [2, 5], [3, 5]],
|
||||||
splash: [[4, 5], [5, 5], [6, 5], [7, 5]],
|
splash: [[4, 5], [5, 5], [6, 5], [7, 5]],
|
||||||
// flame jet
|
flame_jet_off: [8, 5],
|
||||||
// green walls...?
|
flame_jet_on: [[9, 5], [10, 5], [11, 5]],
|
||||||
|
popdown_wall: [12, 5],
|
||||||
|
popdown_floor: [12, 5],
|
||||||
|
popdown_floor_visible: [13, 5],
|
||||||
forbidden: [14, 5],
|
forbidden: [14, 5],
|
||||||
// directional block frame, i think?
|
// directional block frame, i think?
|
||||||
|
|
||||||
@ -269,7 +273,20 @@ export const CC2_TILESET_LAYOUT = {
|
|||||||
[15, 24],
|
[15, 24],
|
||||||
],
|
],
|
||||||
|
|
||||||
// TODO melinda, same layout as chip
|
player2: {
|
||||||
|
moving: {
|
||||||
|
north: [[0, 27], [1, 27], [2, 27], [3, 27], [4, 27], [5, 27], [6, 27], [7, 27]],
|
||||||
|
south: [[0, 28], [1, 28], [2, 28], [3, 28], [4, 28], [5, 28], [6, 28], [7, 28]],
|
||||||
|
west: [[8, 28], [9, 28], [10, 28], [11, 28], [12, 28], [13, 28], [14, 28], [15, 28]],
|
||||||
|
east: [[8, 27], [9, 27], [10, 27], [11, 27], [12, 27], [13, 27], [14, 27], [15, 27]],
|
||||||
|
},
|
||||||
|
standing: {
|
||||||
|
north: [0, 27],
|
||||||
|
south: [0, 28],
|
||||||
|
west: [8, 28],
|
||||||
|
east: [8, 27],
|
||||||
|
},
|
||||||
|
},
|
||||||
fire: [
|
fire: [
|
||||||
[12, 29],
|
[12, 29],
|
||||||
[13, 29],
|
[13, 29],
|
||||||
|
|||||||
105
js/tiletypes.js
105
js/tiletypes.js
@ -52,7 +52,7 @@ const TILE_TYPES = {
|
|||||||
},
|
},
|
||||||
wall_invisible: {
|
wall_invisible: {
|
||||||
draw_layer: LAYER_TERRAIN,
|
draw_layer: LAYER_TERRAIN,
|
||||||
// TODO cc2 seems to make these flicker briefly
|
// FIXME cc2 seems to make these flicker briefly
|
||||||
blocks_all: true,
|
blocks_all: true,
|
||||||
},
|
},
|
||||||
wall_appearing: {
|
wall_appearing: {
|
||||||
@ -105,6 +105,28 @@ const TILE_TYPES = {
|
|||||||
level.transmute_tile(me, 'floor');
|
level.transmute_tile(me, 'floor');
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
popdown_wall: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
blocks_all: true,
|
||||||
|
},
|
||||||
|
popdown_floor: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
on_arrive(me, level, other) {
|
||||||
|
// FIXME could probably do this with state? or, eh
|
||||||
|
level.transmute_tile(me, 'popdown_floor_visible');
|
||||||
|
},
|
||||||
|
},
|
||||||
|
popdown_floor_visible: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
on_depart(me, level, other) {
|
||||||
|
// FIXME possibly changes back too fast, not even visible for a tic for me (much like stepping on a button oops)
|
||||||
|
level.transmute_tile(me, 'popdown_floor');
|
||||||
|
},
|
||||||
|
},
|
||||||
|
steel: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
blocks_all: true,
|
||||||
|
},
|
||||||
canopy: {
|
canopy: {
|
||||||
draw_layer: LAYER_OVERLAY,
|
draw_layer: LAYER_OVERLAY,
|
||||||
},
|
},
|
||||||
@ -367,6 +389,16 @@ const TILE_TYPES = {
|
|||||||
level.set_actor_direction(other, level.get_force_floor_direction());
|
level.set_actor_direction(other, level.get_force_floor_direction());
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
slime: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
// FIXME kills everything except ghosts, blobs, blocks
|
||||||
|
// FIXME blobs spread slime onto floor tiles, even destroying wiring
|
||||||
|
on_arrive(me, level, other) {
|
||||||
|
if (other.type.name === 'dirt_block' || other.type.name === 'clone_block' || other.type.name === 'ice_block') {
|
||||||
|
level.transmute_tile(me, 'floor');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
bomb: {
|
bomb: {
|
||||||
draw_layer: LAYER_ITEM,
|
draw_layer: LAYER_ITEM,
|
||||||
// TODO explode
|
// TODO explode
|
||||||
@ -519,7 +551,34 @@ const TILE_TYPES = {
|
|||||||
connects_to: 'teleport_blue',
|
connects_to: 'teleport_blue',
|
||||||
connect_order: 'backward',
|
connect_order: 'backward',
|
||||||
is_teleporter: true,
|
is_teleporter: true,
|
||||||
// TODO to make this work, i need to be able to check if a spot is blocked /ahead of time/
|
},
|
||||||
|
teleport_red: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
connects_to: 'teleport_red',
|
||||||
|
connect_order: 'forward',
|
||||||
|
is_teleporter: true,
|
||||||
|
},
|
||||||
|
teleport_green: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
// connects_to: 'teleport_red',
|
||||||
|
// connect_order: 'forward',
|
||||||
|
// is_teleporter: true,
|
||||||
|
// FIXME completely different behavior from other teleporters
|
||||||
|
},
|
||||||
|
teleport_yellow: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
connects_to: 'teleport_yellow',
|
||||||
|
connect_order: 'backward',
|
||||||
|
is_teleporter: true,
|
||||||
|
// FIXME special pickup behavior
|
||||||
|
},
|
||||||
|
// FIXME do i want these as separate objects? what would they do, turn into each other? or should it be one with state?
|
||||||
|
flame_jet_off: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
},
|
||||||
|
flame_jet_on: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
// FIXME every tic, kills every actor in the cell
|
||||||
},
|
},
|
||||||
// Buttons
|
// Buttons
|
||||||
button_blue: {
|
button_blue: {
|
||||||
@ -601,7 +660,12 @@ const TILE_TYPES = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// Time alternation
|
button_orange: {
|
||||||
|
draw_layer: LAYER_TERRAIN,
|
||||||
|
// FIXME toggles flame jets, connected somehow, ???
|
||||||
|
},
|
||||||
|
|
||||||
|
// Time alteration
|
||||||
stopwatch_bonus: {
|
stopwatch_bonus: {
|
||||||
draw_layer: LAYER_ITEM,
|
draw_layer: LAYER_ITEM,
|
||||||
blocks_monsters: true,
|
blocks_monsters: true,
|
||||||
@ -747,7 +811,7 @@ const TILE_TYPES = {
|
|||||||
blocks_monsters: true,
|
blocks_monsters: true,
|
||||||
blocks_blocks: true,
|
blocks_blocks: true,
|
||||||
},
|
},
|
||||||
// Tools
|
// Boots
|
||||||
// TODO note: ms allows blocks to pass over tools
|
// TODO note: ms allows blocks to pass over tools
|
||||||
cleats: {
|
cleats: {
|
||||||
draw_layer: LAYER_ITEM,
|
draw_layer: LAYER_ITEM,
|
||||||
@ -787,6 +851,23 @@ const TILE_TYPES = {
|
|||||||
blocks_blocks: true,
|
blocks_blocks: true,
|
||||||
item_ignores: new Set(['water']),
|
item_ignores: new Set(['water']),
|
||||||
},
|
},
|
||||||
|
hiking_boots: {
|
||||||
|
draw_layer: LAYER_ITEM,
|
||||||
|
is_item: true,
|
||||||
|
is_tool: true,
|
||||||
|
blocks_monsters: true,
|
||||||
|
blocks_blocks: true,
|
||||||
|
// FIXME uhh these "ignore" that dirt and gravel block us, but they don't ignore the on_arrive, so, uhhhh
|
||||||
|
},
|
||||||
|
// Other tools
|
||||||
|
dynamite: {
|
||||||
|
draw_layer: LAYER_ITEM,
|
||||||
|
is_item: true,
|
||||||
|
is_tool: true,
|
||||||
|
blocks_monsters: true,
|
||||||
|
blocks_blocks: true,
|
||||||
|
// FIXME does a thing when dropped, but that isn't implemented at all yet
|
||||||
|
},
|
||||||
|
|
||||||
// Progression
|
// Progression
|
||||||
player: {
|
player: {
|
||||||
@ -800,11 +881,25 @@ const TILE_TYPES = {
|
|||||||
clone_block: true,
|
clone_block: true,
|
||||||
ice_block: true,
|
ice_block: true,
|
||||||
},
|
},
|
||||||
// FIXME this prevents thief from taking green key
|
|
||||||
infinite_items: {
|
infinite_items: {
|
||||||
key_green: true,
|
key_green: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
player2: {
|
||||||
|
draw_layer: LAYER_ACTOR,
|
||||||
|
is_actor: true,
|
||||||
|
is_player: true,
|
||||||
|
has_inventory: true,
|
||||||
|
movement_speed: 4,
|
||||||
|
pushes: {
|
||||||
|
dirt_block: true,
|
||||||
|
clone_block: true,
|
||||||
|
ice_block: true,
|
||||||
|
},
|
||||||
|
infinite_items: {
|
||||||
|
key_yellow: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
player_drowned: {
|
player_drowned: {
|
||||||
draw_layer: LAYER_ACTOR,
|
draw_layer: LAYER_ACTOR,
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user