Giter VIP home page Giter VIP logo

archaicquest / archaicquest-ii Goto Github PK

View Code? Open in Web Editor NEW
128.0 13.0 22.0 6.75 MB

ArchaicQuest II :dragon: is a multiplayer text based RPG known as a Multi User Dungeon (MUD) that is playable from your browser.

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

License: MIT License

C# 99.98% Makefile 0.02%
rpg mud text-based-game text-adventure mud-server mud-client c-sharp multi-user-dungeon role-playing-game web-based-game

archaicquest-ii's People

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

archaicquest-ii's Issues

Change flags implementation for Item

ItemFlags and DamageType in Item.cs should be a [Flags] enum to more easily allow multiple types. ItemFlag Property should subsequently be changed from List.

Item Screen

Need a page that displays a Mat-Table of all the items in the database with filtering
The page will have a button to create a new item
The table will have the ability to edit an item and soft delete an item

NOTELL

Usage: notell

Use NOTELL if you wish to prevent other players from using "tell" to
communicate with you. (notell) will appear after your name in the WHO
list if you have notell on.

GSAY GTELL

Usage: gsay
gtell

Tell something to all the members of your group, even if they're not in the
room.

DONATE command

Usage: donate
donate coins

This command takes an object that you no longer want and deposits in to a donation pit to assist newbies in getting started. The donation pit is picked at random a donation pit is any object with type = donation

donate shield
donate all.bread
donate 500 coins

Add Money to the game.

In the Item class (found in the Item folder of the GameLogic project)

  1. Add a new enum value to ItemTypes called Money
  2. Add a property of type int called Value to Item.cs this is to store the value of the money.

With a money item in the room, assuming it's called Gold coin

  1. The user will see "(500) gold coins stacked here."
    • 500 comes from the value property of the item.
  2. If there is more than one the user will see
    • "(500) gold coins stacked here."
    • "(250) gold coins stacked here."
    • "(1) gold coin here."
  3. If there is only 1 coin it should display
    • "(1) gold coin here." and not "(1) gold coins stacked here."

When a user picks up the item, it should not be visible in it's inventory

  1. In the inventory class (found in the commands folder of the GameLogic project) On the foreach of player.Inventory and a query to get all items where type != money

When a user picks up the item, the value needs to be added to the player

  1. In the Object class (found in the commands folder of the GameLogic project)
    in these methods:

    • Get
    • GetAll
    • GetAllContainer
    • GetFromContainer
  2. when the item is type money, add the value to player.Money.Value but don't save the item to the inventory.

When a user drops money, the value needs to be deducted from the player

  1. In the Object class (found in the commands folder of the GameLogic project)
    in these methods:
    • Drop
    • DropAll
    • DropAllContainer
    • DropInContainer

This will need to generate a new Money item for the room, probably in the Object class create a GenerateCoin method that takes a int value as a prameter and generates the correct room descriptions based on the value.

When selecting item type of Potion

The user should see these fields:

  • Drop down for Spell - Hard code strings till we have a spell class
  • input for Level - determines strength of potion
  • update post method for new fields

ORDER

Usage: order
order followers

Used for ordering pets and charmed people to do your evil bidding. You
can order everyone under your command with "order followers".

Examples:

order puppy eat bread
order cityguard sleep

New Command - Areas

Areas
Displays all areas in the game

In Core.cs add a new command called areas.

when areas is entered by the player, they see the following output:

Areas:
There are xxx Areas and xxxx Rooms
[1 - 10] Newbie Area [ Malleus ]
[5 - 12] The Farm [ Builder ]

[1 - 10] = level range for the area
Newbie Area = room name
[ Malleus ] = Builder name

Death bug

when a player dies it converts them to a ghost but does not teleport them to the start room and revive them.

Push

An exit of a room is locked, but instead of requiring a key or lockpick the exit is barricaded or blocked.
The push command does a skill check against strength to open the exit.
Easy 30 Str
Moderate 50 Str
Difficult 70 Str
Hard 90 Str

When selecting Item type of Book

The user should see these fields:

  • Number of pages
  • Page 1 - A textarea, with a button to add another textarea up to the max set in number of pages
  • If Page 1 is null, the book is blank and the Player can write in it.
    -You do need a class to handle books in the item class

Climb

the UP and Down exits of a room are hidden and not allowed to be moved through normally.
instead the player types Climb Up or Climb Down and they are then moved in the correct Z axis.
The use of the skill checks against Dex depending on the difficulty assigned to the Climb.
Easy - 30 Dex
Moderate - 50 Dex
Difficult - 70 Dex
Hard - 90 Dex

BANK WITHDRAW DEPOSIT BALANCE commands

Commands to take money out of the bank, put money in the bank, or see how
much money you have in the bank. Can be used at any mob that is type bank

Examples:

deposit 400
withdraw 1000
balance

BE Potions

add potion to Item type enum

create a command quaff

quaff x - x being name of the potion

this will consume the potion removing it from the inventory - use findNth and findObjectInventory from helpers

the potion item will have two properties
spell name and spell level

look up the skill with the name of the spell name and cast it at the same spell level as set.

may need a new method for casting on quaff to do this

UI Notice: HP and other bars are distractingly large and kind of annoying.

I'm not sure how to make it look better right now. I just noticed this being a problem.

image

I think at the very least:

  • The bars could be placed horizontally and made smaller somewhere.

image

Also:

  • darker colors would be better for those bars,
    • maybe adding some darker texture to them would help out as well.

Personally the bars are too complex.

  • I'd remove this one from the whole game, whatever that is:
    image

And remember to label what each bar does:
image

I'm completely lazy today.

Larger interface
image
Smaller interface
image

ASSIST

Usage: ASSIST

If Quifael is being beaten senseless by a warg and you feel brave enough
to help him, type ASSIST QUIFAEL to hit the warg. Note that the warg will
keep hitting Quifael; assist only makes you start to fight whomever the
person you're assisting is fighting.

assist quifael

When selecting item type of Container

The user should see these fields:

  • Container Items (Section displaying items in container)
  • A button to add items that opens a Modal with an autocomplete drop down that searches items in the DB and puts the found item into the container.
  • update server call to handle container items

Traps

Traps - on player enter roll D 100. If player Dex is greater than dice roll then player does NOT trigger trap. If player Dex is lower than dice roll then trap triggers and deals damage or triggers event, the trap is destroyed when it triggers.
(events may be relocating a player down a Z level, summoning a Mob, giving player a debuff)
When a player is in the room if they are a thief they can dismantle the trap and retrieve some components, and use the trap skill themselves (Example Trap marbles, will build a marble trap in the room)
Marble Trap - make player prone ,requires Marbles to build
Pungi Trap - 2 D 10 requires 4 Branches to build
Arrow Trap - 3 D 10 requires Wire, Arrow

UNGROUP

Usage: ungroup [group member]

UNGROUP can be used by group leaders to disband the entire group, or
to kick a specific group member out of the group (and stop him/her from
following the leader).

Examples:

ungroup
ungroup homer

FILL

Usage: fill

If you want to fill a container you're holding with liquid from a fountain
in the same room as you.

Example:

fill canteen fountain

Clans

CLAN LEADER COMMANDS

The following commands are for all Clan Leaders.

War - Allows the clan leader to declare war on another clan.
Syntax war

Toggleooc - Allows a clan leader to toggle oclan on and off.
Syntax toggleooc

Treaty - Allows a clan leader to declare peace with another clan.
Both clans must declare peace for this to work.
One leader must invite the other. Then the invited leader types the following
Syntax treaty

Rank - Allows a clan leader to set the rank on a clan member. Also works to
set leader ranks, but cannot demote leaders.
Syntax: rank

Exile - Allows a clan leader to exile a member of their clan.
Syntax exile
Note that to un-exile them, the leader just uses the same Syntax again,
to toggle it.

Renegade - Allows a clan leader to renegade another clan member.
Syntax: renegade

Cmotd - Shows the clan's current Cmotd.
Syntax - Cmotd edit (to edit the cmotd) opens modal to edit

Reclass - Allows a clan leader to reclass specified person to a specified
clan specific reclass.
Syntax - reclass

Guild - Allows entry into the clan by a recruiter for a member outside of
the clan.
Syntax: Guild (character)
Note: The character wishing to be guilded must first INVITE the recruiter.

NOSUMMON

Usage: nosummon

all characters have SUMMON PROTECTION turned on by
default. This prevents people from summoning you and gives you a warning
message if someone tries. If you want to let someone summon you (i.e. if
someone wants to summon you for a legitimate reason), type NOSUMMON to turn
off summon protection. You can then type NOSUMMON again to turn protection
back on.

Character Creation Traits

Father Traits (pick your father occupation)

Soldier - +5 Str, +5 Con
Farmer - +10 Con
Scholar - + 5 Int, +5 Wis
Thief - + 10 Dex
Hunter - +5 Dex, +5 Wis
Mage - +10 Int
Merchant - +10 Cha

Mother Traits (pick your mother occupation)

Shield Maiden - +5 Str, +5 Con
Herbalist - +5 Int, +5 Wis
Priestess - +10 Wis
Seductress - +10 Cha
Witch - +10 Int
Dancer - +10 Dex

Childhood (pick your childhood occupation)

Street Urchin - +5 Dex, +5 Str
(Life of struggling to survive on the streets)

Apprenticeship - +5 Str, +5 Con
(hardwork working for your parents growing up)

Squire +10 Str
(you learned from following a knight)

Shop Clerk +10 Cha
(you worked in a shop as a child)

Scribe +5 Int, +5 Wis
(scribing for a lord or mage)

Young Adult years

Joined the Army +5 Str, 5 Con
Joined a Street Gang +10 Dex
Served in a Temple +5 Int, +5 Wis
Worked in a Library +10 Int
Shopkeeper +10 Cha
Lived in the Woods +5 Dex, +5 Wis
Escaped Slavery +10 Str
Farmer +10 Con
Worked at an Apothecary +10 Wis

Flaws (pick as many as you want)

Weak -5 Str
two left feet -5 Dex
Sickly -5 Con
Dullard -5 Int
Ignorant -5 Wis
Stutter -5 Cha
Club foot -5 Dex
Diminutive -5 Str
Fragile -5 Con
Foolish -5 Int
Absent Minded -5 Wis
Repugnant -5 Cha
Unlucky - -1 all stats
Scar -5 HP
Limp -5 Movement
Unattuned to magic -5 MP

Merits

Strong +5 Str
Nimble +5 Dex
Healthy +5 Con
Smart +5 Int
Sage +5 Wis
Charming +5 Cha
Catlike +5 Dex
Stalwart +5 Con
Giant +5 Str
Quick Witted +5 Int
Wise +5 Wis
Beautiful +5 Cha
Lucky +1 all stats

ALIAS Command

$9 may be used to represent arguments given with
an alias.

Examples:

alias killem cast 'fireball' $1; cast 'harm' $2
killem fido mage

Would cast fireball on fido, followed by casting harm on mage. Variables
may be used repeatedly and in any order:

alias helpem cast 'heal' $1; cast 'bless' $1; cast 'armor' $1

The special variable $* represents the entire input line after an alias:

alias tr tell rasmussen $*
tr hi there, how are you today?
You tell Rasmussen, 'hi there, how are you today?'

Kingdom - non PvP clan

The following commands are available to all Kingdom Leaders.

Krank - Sets recruiter status for a member of the Kingdom.
Syntax: Krank (character) kingdomname_rec

Krenegade - Removes a person from the kingdom displaying a global echo.
Syntax: Krenegade (character)

Banish - Removes a person from the kingdom without a global echo.
Syntax: krank (character) (Kingdom)_banish

Guild - Allows entry into the kingdom by a recruiter for a member outside of
the kingdom.
Syntax: Guild (character)
Note: The character wishing to be guilded must first INVITE the recruiter.

Setextrastatus - Honors the extradition of WANTED characters in the target
kingdom. Characters wanted by the selected kingdom will also be wanted
within the kingdom adopting this command.
Syntax: setextrastatus (targetkingdom)

Note: Type extrastatus (kingdom) to see the full list of a kingdoms
current extradition status.

Toggleooc - Toggles on and off the OOC Kingdom channel.
Syntax: Toggleooc

Kmotd - Shows the currently posted Kingdom Message Of The Day.
Syntax: KMOTD

Kmotd edit- Allows for changes made to the Kingdom Message Of The Day.
Editing may be done as one would with a note.
Syntax: KMOTD edit

Settax - Sets the tax rate of a kingdom which collects a percentage of
monetary gains made within, including sales, vendor and merchant district
purchases and quest rewards.
Syntax: Settax (number)

Pardon - Removes the wanted flag from a character in the kingdom.
Syntax: Pardon (character)

Kinfo - For kleaders, shows the kingdom bank account info in eggs, gold
and silver.
Syntax: kinfo (kingdomname)

Sirname - Creates a newly granted title for the members of a kingdom. Two
titles must be created, one for the male and female slot.
Syntax: sirname (male title) (female title)

Note: Sirname (male title) (female title) on an existing sirname will
erase it from the list.

Grant - Applies one of the the preset sirnames to a kingdomer, regardless of
gender.
Syntax: grant (sirname title)

Combat bugged

passive skills are being attempted to use although character doesn't know the skill yet

it returns a message you can't use that while your dead

ClientUpdateUI refactoring

Change the way client updates are sent. Instead of calling the update manually, make it so when a property that is being watched is changed the update would happen automatically.

Add Where Command

The where command shows the player other players in the area and the room they're in. This is to help collaboration and RP but also used to find PK targets

if there are players:

where
<area name>
Players near you:
<Player name>  <Room Name>
<Player name>  <Room Name>

if no players:

Where
<area name>
Players near you:
None

The player can only see visible players, if someone is invisible they are only seen in 'where' if the player has detect invis on. (detect invis should be an affect flag that already exists)

Syntax: where

'where' will list details about the current area and the locations of all visible players within it.

Add 'where', 'whe' to the switch case in commands.cs to call the class that deals with the 'where' command

Level up

Level up is not firing when enough XP is earned

Add Who Command

Syntax: who

'who' without any arguments shows all visible players connected to the MUD.
It shows their current level, race, class, name, title, clan, and AFK

[level, race name, class name] [clan name] player name, player title.
for example:

[51 Hum Mag] [ Black Robes ] *AFK* Liam, Magus of the Black Tower 
Players found: 1 

Add 'who', 'wh' to the switch case in commands.cs to call the class that deals with the 'who' command

Decay Items dropped in room

Items to be removed if they've been dropped and left for 7 days.

Crafted items should only last a set amount of ticks defined in the admin tool

potentially limit the amount of crafted items allowed in one room?

Fishing

while fishing it sends emote skill not found

label:question can I install AQ on Linux?

Hi visualstudio I have been installed.

So all what I see on your docu is for windows.

Can you a me a give me a little bit support zu make this?

Love greetings from Germany

New Command - Area

Area
Displays where you are and a description of the area.


In Core.cs add new command called area.

when area is entered by the player they see the following output:

You are currently in: {area name}
{description}
This area is for level x - x
You have explored x of x rooms in this area. (x%)
You have completed x of x quests (x%)

example

You are currently in: Arundel
Arundel is the main town....
This area is for level 1 - 51
You have explored 10 of 65 rooms in this area. (15%)
You have completed 0 of 15 quests (0%)

a future requirement to include secrets too, currently no way to determine a secret. it could be a secret room found or an item hidden that's been found.

You have found 0 of 5 secrets (0%)

TITLE

Usage: title

Sets the title people see on the WHO list You can't use parentheses (the "(" and ")" characters) because those
are reserved for flags.

SPLIT

Usage: split

Split is used to split money among people in your group who are in the same
room as you. If you are in a group with 4 other people, all of whom are in
the same room with you, and you type SPLIT 100, you will give each of the
other 4 group members 20 coins each. (100 coins is split 5 ways; you keep
your share and give everyone else their share).

Potential Memory Leak

I was attempting to run Archaic on 3 Repl.it projects, but the memory useage for building the client went up way too high and didn't work. Is there already a fix for this?

WIMPY

Usage: wimpy [hp]

Use the WIMPY command to automatically flee once your health drops below
a certain level.

Examples:

wimpy 35 will make your character automatically flee a fight
if you have less than 35 hit points.
wimpy 0 will turn off wimpy mode.
wimpy will show you your current wimp status.

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.