<button id="switch_to_drop_thing"></button>
<button id="door"></button>
<button id="consume"></button>
+ <button id="dance"></button>
<button id="switch_to_command_thing"></button>
<button id="teleport"></button>
<button id="wear"></button>
<li>flatten surroundings: <input id="key_flatten" type="text" value="F" />
<li>teleport: <input id="key_teleport" type="text" value="p" />
<li>spin: <input id="key_spin" type="text" value="S" />
+<li>dance: <input id="key_dance" type="text" value="T" />
<li>open/close: <input id="key_door" type="text" value="D" />
<li>consume: <input id="key_consume" type="text" value="C" />
<li>install: <input id="key_install" type="text" value="I" />
'install': '(un-)install',
'wear': '(un-)wear',
'spin': 'spin',
+ 'dance': 'dance',
'toggle_map_mode': 'toggle map view',
'toggle_tile_draw': 'toggle protection character drawing',
'hex_move_upleft': 'up-left',
let tokens = parser.tokenize(event.data);
if (tokens[0] === 'TURN') {
game.turn_complete = false;
- game.turn = parseInt(tokens[1]);
} else if (tokens[0] === 'OTHER_WIPE') {
game.portals_new = {};
explorer.annotations_new = {};
game.things_new = [];
+ } else if (tokens[0] === 'STATS') {
+ game.bladder_pressure_new = parseInt(tokens[1])
+ game.energy_new = parseInt(tokens[2])
} else if (tokens[0] === 'THING') {
let t = game.get_thing_temp(tokens[4], true);
t.position = parser.parse_yx(tokens[1]);
game.things = game.things_new;
game.player = game.things[game.player_id];
game.players_hat_chars = game.players_hat_chars_new;
+ game.bladder_pressure = game.bladder_pressure_new
+ game.energy = game.energy_new
game.turn_complete = true;
if (tui.mode.name == 'post_login_wait') {
tui.switch_mode('play');
} else if (tokens[0] === 'LOGIN_OK') {
this.send(['GET_GAMESTATE']);
tui.switch_mode('post_login_wait');
+ tui.log_msg('@ welcome!')
+ tui.log_msg('@ hint: see top of terminal for how to get help.')
+ tui.log_msg('@ hint: enter study mode to understand your environment.')
} else if (tokens[0] === 'DEFAULT_COLORS') {
terminal.set_default_colors();
} else if (tokens[0] === 'RANDOM_COLORS') {
'command': 'COMMAND',
'consume': 'INTOXICATE',
'spin': 'SPIN',
+ 'dance': 'DANCE',
},
offset: [0,0],
map_lines: [],
this.mode_play.available_modes = ["chat", "study", "edit", "admin_enter",
"command_thing", "take_thing", "drop_thing"]
this.mode_play.available_actions = ["move", "teleport", "door", "consume",
- "wear", "spin"];
+ "wear", "spin", "dance"];
this.mode_study.available_modes = ["chat", "play", "admin_enter", "edit"]
this.mode_study.available_actions = ["toggle_map_mode", "move_explorer"];
this.mode_admin.available_modes = ["admin_thing_protect", "control_pw_type",
"control_tile_type", "chat",
"study", "play", "edit"]
- this.mode_admin.available_actions = ["move"];
+ this.mode_admin.available_actions = ["move", "toggle_map_mode"];
this.mode_control_tile_draw.available_modes = ["admin_enter"]
this.mode_control_tile_draw.available_actions = ["toggle_tile_draw"];
this.mode_edit.available_modes = ["write", "annotate", "portal", "name_thing",
|| !game.player.carrying.commandable)) {
return fail('not carrying anything commandable');
} else if (mode_name == 'name_thing' && !game.player.carrying) {
- return fail('not carrying anything to re-name');
+ return fail('not carrying anything to re-name', 'edit');
} else if (mode_name == 'admin_thing_protect' && !game.player.carrying) {
return fail('not carrying anything to protect')
} else if (mode_name == 'take_thing' && game.player.carrying) {
this.switch_mode('play');
},
enter_ascii_art: function(command) {
- if (this.inputEl.value.length != 6) {
- this.log_msg('? wrong input length, must be 6; try again');
+ if (this.inputEl.value.length > 6) {
+ this.log_msg('? wrong input length, must be max 6; try again');
return;
+ } else if (this.inputEl.value.length < 6) {
+ while (this.inputEl.value.length < 6) {
+ this.inputEl.value += ' ';
+ }
}
this.log_msg(' ' + this.inputEl.value);
this.full_ascii_draw += this.inputEl.value;
}
terminal.write(0, this.window_width, 'MODE: ' + this.mode.short_desc + ' – ' + help);
},
- draw_turn_line: function(n) {
- if (game.turn_complete) {
- terminal.write(1, this.window_width, 'TURN: ' + game.turn);
- }
+ draw_stats_line: function(n) {
+ terminal.write(1, this.window_width,
+ 'ENERGY: ' + game.energy +
+ ' BLADDER: ' + game.bladder_pressure);
},
draw_history: function() {
let log_display_lines = [];
this.draw_input();
} else {
this.draw_map();
- this.draw_turn_line();
+ this.draw_stats_line();
this.draw_mode_line();
if (this.mode.shows_info) {
this.draw_info();
this.portals = {};
this.portals_new = {};
this.players_hat_chars = "";
+ this.bladder_pressure = 0;
+ this.bladder_pressure_new = 0;
},
get_thing_temp: function(id_, create_if_not_found=false) {
if (id_ in game.things_new) {
server.send(["TASK:WEAR"]);
} else if (event.key === tui.keys.spin && tui.task_action_on('spin')) {
server.send(["TASK:SPIN"]);
+ } else if (event.key === tui.keys.dance && tui.task_action_on('dance')) {
+ server.send(["TASK:DANCE"]);
} else if (event.key in tui.movement_keys && tui.task_action_on('move')) {
server.send(['TASK:MOVE', tui.movement_keys[event.key]]);
} else if (event.key === tui.keys.teleport) {
} else if (tui.mode.name == 'admin') {
if (tui.mode.mode_switch_on_key(event)) {
null;
+ } else if (event.key == tui.keys.toggle_map_mode) {
+ tui.toggle_map_mode();
} else if (event.key in tui.movement_keys && tui.task_action_on('move')) {
server.send(['TASK:MOVE', tui.movement_keys[event.key]]);
};
}, 1000);
window.setInterval(function() {
if (document.activeElement.tagName.toLowerCase() != 'input') {
+ const scroll_x = window.scrollX;
+ const scroll_y = window.scrollY;
tui.inputEl.focus();
+ window.scrollTo(scroll_x, scroll_y);
};
}, 100);
document.getElementById("help").onclick = function() {
document.getElementById("spin").onclick = function() {
server.send(['TASK:SPIN']);
};
+document.getElementById("dance").onclick = function() {
+ server.send(['TASK:DANCE']);
+};
document.getElementById("teleport").onclick = function() {
game.teleport();
};