dcss-lobby
dcss-lobby connects to a DCSS WebTiles server and gives you all game events - the same which are shown in the lobby.
Features
- automatic conversion of messages to game events
- configurable reconnect after timeout
- filter events
- multiple sinks
- noise protection
Usage
const Lobby = ; const lobby = 'CUE' 'https://underhound.eu:8080/' reconnect: true bulkProcessing: 3; lobby;lobby;
You can find a complete example in example/.
Example output
[CUE] OdinFK ist nun ein "Firebug".[CUE] Freyura ist von D:4 nach D:5 gegangen.[CUE] P0WERM0DE ist nun ein "Chopper".[CUE] PentaManta ist von D:2 nach D:3 gegangen.[CUE] iamserjio hat einen Meilenstein geschafft: "killed Jessica.".[CUE] P0WERM0DE hat einen Meilenstein geschafft: "became a worshipper of Makhleb.".[CUE] Freyura ist nun Level 8.[CUE] OdinFK ist von D:4 nach D:5 gegangen.[CUE] P0WERM0DE ist nun Level 7 und ist von D:4 nach D:5 gegangen.[CUE] Ge0ff ist von Crypt:3 nach Crypt:2 gegangen.[CUE] Ge0ff ist von Crypt:2 nach Crypt:3 gegangen.[CUE] iamserjio ist nun Level 6.[CUE] Artagas ist von Elf:2 nach Desolation gegangen.[CUE] iamserjio wird nicht mehr beobachtet.[CUE] iamserjio im Dungeon dcss-git als OpCK mit XL 6 pausiert auf der Suche nach dem Orb.[CUE] FreshCat ist von Dis:4 nach Dis:5 gegangen.[CUE] iamserjio ist im Dungeon dcss-git als OpCK mit XL 1 auf der Suche nach dem Orb.[CUE] KamiKatze ist im Dungeon dcss-0.23 als CeHu mit XL 2 auf der Suche nach dem Orb.[CUE] P0WERM0DE ist nun Level 8.[CUE] P0WERM0DE ist von D:5 nach D:6 gegangen und hat einen Meilenstein geschafft: "killed Eustachio.".[CUE] iamserjio ist nun ein "Skirmisher".[CUE] dstrtn ist von D:3 nach D:2 gegangen.
Installation
npm install dcss-lobby
Architecture
Client wraps the WebSocket connection. The WebSocket connection transmits messages. The MessageParser parses the messages and creates Message-Objects. These objects are stored in a MessageStore. The MessageBulk tries to summarize messages to reduce spam. After the MessageBulk got max messages, the messages are given to Translator, which converts the messages to game Event objects and puts them on the Emitter. The Emitter filters and formats events and puts them in a sink e. g. console.
Lobby is the main interaction object. It handles all the above mentioned things. A lobby needs the shortcut for a DCSS WebTiles server and the servers WebSocket URL and can have an optionally configuration object:
const lobby = /* server shortcut */ 'CUE' /* server url */ 'https://underhound.eu:8080/' reconnect: boolean // do reconnect after disconnect bulkProcessing: number // number of max messages in MessageBulk;
You can filter the events you are interested in:
{ thistoggle = false; } { thistoggle = !thistoggle; return thistoggle; } { return eventusername === 'syranez'; } // Filter is triggered on every eventlobby; // Filter is triggered only on update eventslobby;
You can format the events you are interested in:
{ return `Hey, new update from ! \o/`; } // format the Update eventlobby;
You can then output the event. If the event was previously formatted, the Sink will get a string not an Event.
// for all (formatted) eventslobby; // for (formatted) event typeslobby;
Game Event Types
start
Emitted if someone starts or continues a game.
key | meaning |
---|---|
username | Name of player |
xl | Experience Level |
title | Current title |
spectator_count | Count of spectators |
idle_time | Idle time |
char | Character |
place | Current location |
game_id | Game version |
id | Process id of current game |
Source: src/event/start.js
update
Emitted if something interesting happend in someones game.
key | meaning |
---|---|
username | Name of player |
game_id | Game version |
id | Process id of current game |
diff | Array with all changes |
switchedBranch() | Returns true if player switched the dungeon branch, otherwise false |
diff is an array with all changes where change is an object with this
key | meaning |
---|---|
key | Name of changed value (can be: xl, title, spectator_count, idle_time, char, place) |
oldValue | Value before |
newValue | current value |
Source: src/event/update.js
stop
Emitted if the game is stopped.
key | meaning |
---|---|
username | Name of player |
xl | Experience Level |
title | Current title |
spectator_count | Count of spectators |
idle_time | Idle time |
char | Character |
place | Current location |
game_id | Game version |
id | Process id of current game |
Source: src/event/stop.js
License
MIT
[//]: