Giter Club home page Giter Club logo

alluvian-engine's People

Contributors

wrparker avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

alluvian-engine's Issues

Add Advance Command

Add an advance command that updates a player to a given level. Command should:

  • Display Text to advanced user
  • Confirm advancement to immortal issuing it
  • Save the players new level to the database.
  • Only be usable by Levels.IMPL

Sanitize MXP tags

#27 introduced automated negotiation for TTYPE and MXP. Now we need to deal with MXP output.

MXP tags are initiated by the following characters:
<, >, and &.

For clients using MXP they must be replaced:
< = &lt;
> = &gt;
" = &quot;
& = &amp;

Input should be santized when MXP is enabled such that MXP is only sendable by the mud server and not via players in communication.

MXP should be allowed for:

  • Exits
  • Objects
  • who list

There may be ways to abstract out player name such that anytime a player name is called, if MXp is enabled we create a linkable "whois" command.

For example:
say <send>hi</send> right now in mudlet allows linking of a "hi" command. This doesn't work in MUSHclient, but either way tags should be properly sanitized.

More information is available on this guide: https://www.gammon.com.au/mushclient/addingservermxp.htm

Add logging

Currently, there exists no logging in game. Setup the python logger so that logs are generated.

Logs should be sent to stdout, and a new, rotating log file should be created each time the game is spun up.

Prevent Thread Locking: Move Protocol Negotiation to Main Loop

Currently, protocol negotiation for a player happens all together. This means that all actions from other players are paused in the MUD until protocol negotiation is completed. Ideally, we should move protocol negotiation so that it is handled in the main loop rather than doing it all together.

The reason for this is because waiting for timeouts on protocol negotiation causes all other players to freeze until that player's telnet protocol negotiations are complete.

i.e.: the functions in alluvian/server/protocol.py should be handled similarly to how the Login system is handled so the thread isn't locked to a player every time they connect.

An alternative, hacky solution would be to give a very small response time allowed for protocol negotiation (currently it is set to 2 seconds).

Add "Wizhelp" command

Add command to show immortals wizardhelp. Basically it should be a list of all commands that extend WizardCommand.

Add "Zones" to game

All rooms should belong to zones.

  1. Add "zone" structure to MUD for rooms.
  2. Add "rlist" command (imm)
  3. Add "zlist" command (imm)

Create syslog stream in game

  1. Setup basic logging in the game using logging python package. Logs should be written to a log/* file.
  2. Create an syslog command in game that allows immortals to see incoming logs. Logs should be toggle:
    • i.e.: syslog shows a list of all logs and their toggled state
    • syslog toggles the state.
    • Categories can be: CONNECT for now. All CONNECT logs should be relevant to new connections.

Create Advanced Exits

Right now exits are identified in the Room model by essentially being an integer for each direction: exit_up, exit_down, exit_east, exit_west, exit_north, and exit_south.

Exits should likely be their own objects, because future implementations of exits will allow them to have:

  • Keywords
  • Doors
  • Flags (hidden, etc)

Update ANSI Color Codes Utilized

Currently bright color codes override non-bright colorcodes for ANSI capable terminals. Update the color code definitions used to fix this issue.
image

Create Tabulate Class

Create a utility class to be used for tabulation that wraps texts and lines rather than calling tabulate directly.

New Character needs name validation

Currently any input is accepted and parsed as a new character. The following stipulations should be met:

  1. A character name cannot be blank
  2. A character name must be at least 3 characters
  3. A character name must be alpha only, cannot contain numbers, symbols, or special characters

If a name does not meet these requirements, "Invalid name" should be returned.

Add time tracking to MUD

Add a command for uptime that displays the amount of time that the MUD has been running since last reboot/crash.

Implement Global Channels

Implement the following global channels:

  • gossip
  • chat
  • pray

Players should be able to toggle these channels using a channels command.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.