Coder Social home page Coder Social logo

liamkenneth / archaicquest Goto Github PK

View Code? Open in Web Editor NEW
132.0 22.0 30.0 3.34 MB

ArchaicQuest a Multi User Dungeon (MUD) - Text based MMORPG in C# :dragon:

Home Page: http://www.archaicquest.com

License: MIT License

C# 72.51% CSS 12.86% ASP 0.01% JavaScript 13.97% HTML 0.51% TypeScript 0.14%
mud csharp signalr mongodb rpg text-adventure text-based mmorpg browser-game game adventure-game c-sharp javascript multiplayer

archaicquest's Introduction

[M]edieval [I]mmersive [M]ulti User Dungeon

MIM

A text based MMORPG inspired by the MUDs of the 90s built in C# using ASP.net MVC, SignalR and MongoDB. Unlike a traditional MUD MIM runs in the browser instead of Telnet. Telnet support could be added so make a pull request ๐Ÿ˜‰

Prerequisities

  1. The project is using C# 6 so you will need Visual Studio 2015 or add the Roslyn compiler to Visual Studio 2013

  2. Internet connection to connect to mongoDB

Run the site

With the above steps completed, hitting the start button in Visual Studio should successfully run the application. Your URL should show /Home and you should see the Create Character Wizard. Once you have created a character you will be in the game. You can log in again using the same character name.

In game commands

Here are the commands currently supported, all commands are checked using starts with which allows you to not type the whole word.

  • Movement using N, E, S, W, U and D
  • Get, get all, get
  • Drop, drop all, drop
  • Look, look at/in,
  • Examine
  • Smell
  • Touch
  • Taste
  • Inventory
  • Score (not fully implemented)
  • Say, ', Say to, >
  • Save
  • Quit
  • Equipment
  • Wear
  • Wield
  • Remove
  • Kill
  • Flee
  • lock, unlock
  • open, close

Creating Rooms, Items and mobs

To create a room, items or mobs check the example room

Once you have added a new room you need to open up UpdateDB.cs and add your new area methods to the area lists. Save and compile, before you run the UpdateDB.exe to update the database You need to manually delete the DB records (Could add this to UpdateDB or make it update existing records).

Connection details are: url: ds052968.mlab.com port: 52968 DB:mimdb username:testuser pass: password

That should be it, all contributions and feedback welcomed ๐Ÿ˜„

archaicquest's People

Contributors

fonol avatar liamkenneth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

archaicquest's Issues

Give item is not working

Give item is not working, also give message needs to check if receiver is known by name and to remove the preceding article if they are.

Inventory is not displaying items correctly

Items seem to vanish. Bug is with 'wear all ' which sets every item in the loop to worn even if it's not possible to wear so when viewing inventory items you cant see anything that you was carrying that's not wearable.

  • Need to double check wear x and wear all working
  • Add remove all command
  • Inventory UI is not being updated in all cases
  • double check get/drop get/drop all (does work but worth checking again after messing around with object manipulation)

Add stand command

Stand is used to cancel out rest and sleep.

from resting:
Message You stand up.
To room: {playerName} stands up

from sleeping:
message You wake and stand up
to room: {playerName } wakes and stands up

player status gets set to standing

Add rest command

Rest is Most commonly entered command that doesn't exist.

Typing rest will make the player Sit down and rest and increase amount of hp/mana etc they gain at the next tick. (this has already be done in the updateHP, UpdateMana etc methods)

Works same as sleep except player can still see what's going on.

message to player: You sit down and rest.
message to room: {playerName} sits down and rests.
player status should be set to resting

Add Help command

Syntax: help newbie.

Will search for everything related to newbie and return it to the user.

Skills have a help property that help text can be added too.

For generic things like help newbie will probably need a help class that has a list of help text and help title.

Read Command

Read command for looking at Books, signs and maps

Add Sell command

2nd most common error, people trying to sell items to shop keeper.

command: sell

Should check room for shopkeeper Mob (mob.shop == true) , if there is not one it should say;
You cannot not sell that here.

For now sell item to shop keeper for the same hardcoded value of the item. (I yet don't have an algorithm to workout item value but we should have one to keep values consistent)

the item sold will then appear in the shop keeper inventory with 15โ€ฐ added to the price.
the item will also have left the players inventory.
player can only sell items in their inventory.

message to player: You sell (article) (item.name) for (gold amount)
to room: (playerName) sells (article) (item. name) to (mob.name)

Shop keepers for now have unlimited gold so no gold deduction should take place

There is a shop class (shop. cs) that this should go in.

Improve testability of ContextHub?

Is it worth attempting to improve the testability of ContextHub?

I was thinking about writing some tests for WakePlayer() but I realised there isn't a straightforward way of mocking/stubbing the HubContext.SendToClient call.

Get, drop issues

Get, drop issues with containers. especially when trying to get / drop all.

Some dropped items don't show in the room like the blunt dagger on the cat.

Add Yell Command

Broadcast yell message to everyone in the same area.

Potentially muffle the yell (You hear someone yelling) if player is too far away. (unsure how to do that yet)

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.