move left (hex grid): <input id="key_hex_move_left" type="text" value="a" /><br />
help: <input id="key_help" type="text" value="h" /><br />
flatten surroundings: <input id="key_flatten" type="text" value="F" /><br />
+take thing under player: <input id="key_take_thing" type="text" value="z" /><br />
+drop carried thing: <input id="key_drop_thing" type="text" value="u" /><br />
switch to chat mode: <input id="key_switch_to_chat" type="text" value="t" /><br />
switch to play mode: <input id="key_switch_to_play" type="text" value="p" /><br />
switch to study mode: <input id="key_switch_to_study" type="text" value="?" /><br />
</div>
<script>
"use strict";
-//let websocket_location = "wss://plomlompom.com/rogue_chat/";
-let websocket_location = "ws://localhost:8000/";
+let websocket_location = "wss://plomlompom.com/rogue_chat/";
let rows_selector = document.getElementById("n_rows");
let cols_selector = document.getElementById("n_cols");
if (t) {
t.name_ = tokens[2];
};
+ } else if (tokens[0] === 'THING_CHAR') {
+ let t = game.get_thing(tokens[1], false);
+ if (t) {
+ t.player_char = tokens[2];
+ };
} else if (tokens[0] === 'TASKS') {
game.tasks = tokens[1].split(',')
} else if (tokens[0] === 'THING_TYPE') {
line = [];
j = 0;
};
- line.push(map_content[i]);
+ line.push(map_content[i] + ' ');
};
map_lines_split.push(line);
if (this.map_mode == 'terrain') {
+ let used_positions = [];
for (const thing_id in game.things) {
let t = game.things[thing_id];
let symbol = game.thing_types[t.type_];
- map_lines_split[t.position[0]][t.position[1]] = symbol;
+ let meta_char = ' ';
+ if (t.player_char) {
+ meta_char = t.player_char;
+ }
+ if (used_positions.includes(t.position.toString())) {
+ meta_char = '+';
+ };
+ map_lines_split[t.position[0]][t.position[1]] = symbol + meta_char;
+ used_positions.push(t.position.toString());
};
}
if (tui.mode.shows_info) {
- map_lines_split[explorer.position[0]][explorer.position[1]] = '?';
+ map_lines_split[explorer.position[0]][explorer.position[1]] = '??';
}
let map_lines = []
if (game.map_geometry == 'Square') {
for (let line_split of map_lines_split) {
- map_lines.push(line_split.join(' '));
+ map_lines.push(line_split.join(''));
};
} else if (game.map_geometry == 'Hex') {
let indent = 0
for (let line_split of map_lines_split) {
- map_lines.push(' '.repeat(indent) + line_split.join(' '));
+ map_lines.push(' '.repeat(indent) + line_split.join(''));
if (indent == 0) {
indent = 1;
} else {
if (game.tasks.includes('MOVE')) {
content += "[" + movement_keys_desc + "] – move player\n";
}
+ if (game.tasks.includes('PICK_UP')) {
+ content += "[" + this.keys.take_thing + "] – take thing under player\n";
+ }
+ if (game.tasks.includes('DROP')) {
+ content += "[" + this.keys.drop_thing + "] – drop carried thing\n";
+ }
if (game.tasks.includes('FLATTEN_SURROUNDINGS')) {
content += "[" + tui.keys.flatten + "] – flatten player's surroundings\n";
}
for (let t_id in game.things) {
let t = game.things[t_id];
if (t.position[0] == this.position[0] && t.position[1] == this.position[1]) {
- info += "THING: " + t.type_;
+ let symbol = game.thing_types[t.type_];
+ info += "THING: " + t.type_ + " / " + symbol;
+ if (t.player_char) {
+ info += t.player_char;
+ };
if (t.name_) {
- info += " (name: " + t.name_ + ")";
+ info += " (" + t.name_ + ")";
}
info += "\n";
}
} else if (event.key === tui.keys.flatten
&& game.tasks.includes('FLATTEN_SURROUNDINGS')) {
server.send(["TASK:FLATTEN_SURROUNDINGS", tui.password]);
+ } else if (event.key === tui.keys.take_thing
+ && game.tasks.includes('PICK_UP')) {
+ server.send(["TASK:PICK_UP"]);
+ } else if (event.key === tui.keys.drop_thing
+ && game.tasks.includes('DROP')) {
+ server.send(["TASK:DROP"]);
} else if (event.key in tui.movement_keys
&& game.tasks.includes('MOVE')) {
server.send(['TASK:MOVE', tui.movement_keys[event.key]]);