commit
8849efd3ca
26 changed files with 210 additions and 124 deletions
27
.github/ISSUE_TEMPLATE/bug-report-develop.md
vendored
Normal file
27
.github/ISSUE_TEMPLATE/bug-report-develop.md
vendored
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
---
|
||||||
|
name: Bug report (branch-develop)
|
||||||
|
about: Use this to report errors in the Evennia `develop` branch
|
||||||
|
title: "[BUG - Develop] (Enter a brief description here)"
|
||||||
|
labels: bug, branch-develop
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Describe the bug
|
||||||
|
<!--(Summarize your bug as clearly as possible here)-->
|
||||||
|
|
||||||
|
#### To Reproduce
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
#### Expected behavior
|
||||||
|
<!--(Add a clear and concise description of what you expected to happen.)-->
|
||||||
|
|
||||||
|
#### Develop-branch commit
|
||||||
|
<!-- (The develop-branch commit-hash. If unsure, run `evennia -v` or get the first few lines of the `about` command in-game.) -->
|
||||||
|
|
||||||
|
#### Additional context
|
||||||
|
<!--(Add with any other context about the problem, or ideas on how to solve.)-->
|
||||||
8
.github/ISSUE_TEMPLATE/bug-report.md
vendored
8
.github/ISSUE_TEMPLATE/bug-report.md
vendored
|
|
@ -8,7 +8,7 @@ assignees: ''
|
||||||
---
|
---
|
||||||
|
|
||||||
#### Describe the bug
|
#### Describe the bug
|
||||||
(Replace with a clear and concise description of what the bug is.)
|
<!--(Write with a clear and concise description of what the bug is.)-->
|
||||||
|
|
||||||
#### To Reproduce
|
#### To Reproduce
|
||||||
Steps to reproduce the behavior:
|
Steps to reproduce the behavior:
|
||||||
|
|
@ -18,10 +18,10 @@ Steps to reproduce the behavior:
|
||||||
4. See error
|
4. See error
|
||||||
|
|
||||||
#### Expected behavior
|
#### Expected behavior
|
||||||
(Replace with a clear and concise description of what you expected to happen.)
|
<!--(Write a clear and concise description of what you expected to happen.)-->
|
||||||
|
|
||||||
#### Environment, Evennia version, OS etc
|
#### Environment, Evennia version, OS etc
|
||||||
(Replace with info. If unsure, run `evennia -v` or get the first few lines of the `about` command in-game.)
|
<!--(Add Evennia version and ideally commit hash. If unsure, run `evennia -v` or get the first few lines of the `about` command in-game.)-->
|
||||||
|
|
||||||
#### Additional context
|
#### Additional context
|
||||||
(Replace with any other context about the problem, or ideas on how to solve.)
|
<!--(Add with any other context about the problem, or ideas on how to solve.)-->
|
||||||
|
|
|
||||||
10
.github/ISSUE_TEMPLATE/documentation-issue.md
vendored
10
.github/ISSUE_TEMPLATE/documentation-issue.md
vendored
|
|
@ -7,11 +7,11 @@ assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
#### Existing page / new
|
#### Documentation page name and link
|
||||||
(Link to existing documentation page or proposed name of new page)
|
<!--(Give the name and link to the documentation page that needs changes, or the proposed name of a new page)-->
|
||||||
|
|
||||||
#### Documentation issue
|
#### Reason for issue
|
||||||
(Replace with the description of what the issue is or motivate a changes/additions)
|
<!--(Motivate why you suggest this change)-->
|
||||||
|
|
||||||
#### Suggested change
|
#### Suggested change
|
||||||
(Enter the suggested change here)
|
<!--(Enter the suggested change here)-->
|
||||||
|
|
|
||||||
10
.github/ISSUE_TEMPLATE/feature-request.md
vendored
10
.github/ISSUE_TEMPLATE/feature-request.md
vendored
|
|
@ -8,13 +8,13 @@ assignees: ''
|
||||||
---
|
---
|
||||||
|
|
||||||
#### Is your feature request related to a problem? Please describe.
|
#### Is your feature request related to a problem? Please describe.
|
||||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
<!--(Optional - a concise description of what the problem is. Ex. I'm always frustrated when [...])-->
|
||||||
|
|
||||||
#### Describe the solution you'd like
|
#### Describe the solution you'd like
|
||||||
A clear and concise description of what you want to happen.
|
<!--(A clear and concise description of what you want to happen after this feature is added)-->
|
||||||
|
|
||||||
#### Describe alternatives you've considered
|
#### Alternatives you've considered
|
||||||
A clear and concise description of any alternative solutions or features you've considered.
|
<!--(Describe any alternatives you've already considered/tried, if any)-->
|
||||||
|
|
||||||
#### Additional context
|
#### Additional context
|
||||||
Add any other context or screenshots about the feature request here.
|
<!--(Any other info, links, images etc that can help with implementing or motivate adding this feature)-->
|
||||||
|
|
|
||||||
37
.github/workflows/github_action_test_suite.yml
vendored
37
.github/workflows/github_action_test_suite.yml
vendored
|
|
@ -18,7 +18,7 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
python-version: [3.7, 3.8]
|
python-version: [3.7, 3.8, 3.9]
|
||||||
TESTING_DB: ['sqlite3', 'postgresql', 'mysql']
|
TESTING_DB: ['sqlite3', 'postgresql', 'mysql']
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
@ -44,7 +44,7 @@ jobs:
|
||||||
mysql user: 'evennia'
|
mysql user: 'evennia'
|
||||||
mysql password: 'password'
|
mysql password: 'password'
|
||||||
|
|
||||||
# wait for db to activage, get logs from their start
|
# wait for db to activate, get logs from their start
|
||||||
- name: Wait / sleep
|
- name: Wait / sleep
|
||||||
uses: jakejarvis/wait-action@v0.1.0
|
uses: jakejarvis/wait-action@v0.1.0
|
||||||
if: ${{ matrix.TESTING_DB == 'postgresql' || matrix.TESTING_DB == 'mysql' }}
|
if: ${{ matrix.TESTING_DB == 'postgresql' || matrix.TESTING_DB == 'mysql' }}
|
||||||
|
|
@ -107,3 +107,36 @@ jobs:
|
||||||
with:
|
with:
|
||||||
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
|
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
|
||||||
coverage-reports: ./testing_mygame/coverage.xml
|
coverage-reports: ./testing_mygame/coverage.xml
|
||||||
|
|
||||||
|
# docker setup and push
|
||||||
|
-
|
||||||
|
name: Set up QEMU
|
||||||
|
if: matrix.TESTING_DB == 'sqlite3' && matrix.python-version == 3.7
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
-
|
||||||
|
name: Set up Docker Buildx
|
||||||
|
if: matrix.TESTING_DB == 'sqlite3' && matrix.python-version == 3.7
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
-
|
||||||
|
name: Login to DockerHub
|
||||||
|
if: matrix.TESTING_DB == 'sqlite3' && matrix.python-version == 3.7 && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop')
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
-
|
||||||
|
name: Build and push for master
|
||||||
|
if: matrix.TESTING_DB == 'sqlite3' && matrix.python-version == 3.7 && github.ref == 'refs/heads/master'
|
||||||
|
id: docker_build_master
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
push: true
|
||||||
|
tags: evennia/evennia:latest
|
||||||
|
-
|
||||||
|
name: Build and push for develop
|
||||||
|
if: matrix.TESTING_DB == 'sqlite3' && matrix.python-version == 3.7 && github.ref == 'refs/heads/develop'
|
||||||
|
id: docker_build_develop
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
push: true
|
||||||
|
tags: evennia/evennia:develop
|
||||||
|
|
|
||||||
|
|
@ -199,7 +199,7 @@ or in the chat.
|
||||||
|
|
||||||
[pep8]: http://www.python.org/dev/peps/pep-0008
|
[pep8]: http://www.python.org/dev/peps/pep-0008
|
||||||
[pep8tool]: https://pypi.python.org/pypi/pep8
|
[pep8tool]: https://pypi.python.org/pypi/pep8
|
||||||
[googlestyle]: http://www.sphinx-doc.org/en/stable/ext/example_google.html
|
[googlestyle]: https://www.sphinx-doc.org/en/master/usage/extensions/example_google.html
|
||||||
[githubmarkdown]: https://help.github.com/articles/github-flavored-markdown/
|
[githubmarkdown]: https://help.github.com/articles/github-flavored-markdown/
|
||||||
[markdown-hilight]: https://help.github.com/articles/github-flavored-markdown/#syntax-highlighting
|
[markdown-hilight]: https://help.github.com/articles/github-flavored-markdown/#syntax-highlighting
|
||||||
[command-docstrings]: https://github.com/evennia/evennia/wiki/Using%20MUX%20As%20a%20Standard#documentation-policy
|
[command-docstrings]: https://github.com/evennia/evennia/wiki/Using%20MUX%20As%20a%20Standard#documentation-policy
|
||||||
|
|
|
||||||
16
README.md
16
README.md
|
|
@ -60,22 +60,22 @@ introduction][introduction] to read.
|
||||||
|
|
||||||
To learn how to get your hands on the code base, the [Getting
|
To learn how to get your hands on the code base, the [Getting
|
||||||
started][gettingstarted] page is the way to go. Otherwise you could
|
started][gettingstarted] page is the way to go. Otherwise you could
|
||||||
browse the [Documentation][wiki] or why not come join the [Evennia
|
browse the [Documentation][docs] or why not come join the [Evennia
|
||||||
Community forum][group] or join us in our [development chat][chat].
|
Community forum][group] or join us in our [development chat][chat].
|
||||||
Welcome!
|
Welcome!
|
||||||
|
|
||||||
|
|
||||||
[homepage]: http://www.evennia.com
|
[homepage]: https://www.evennia.com
|
||||||
[gettingstarted]: http://github.com/evennia/evennia/wiki/Getting-Started
|
[gettingstarted]: https://www.evennia.com/docs/latest/Getting-Started.html
|
||||||
[wiki]: https://github.com/evennia/evennia/wiki
|
[docs]: https://www.evennia.com/docs/latest
|
||||||
[screenshot]: https://user-images.githubusercontent.com/294267/30773728-ea45afb6-a076-11e7-8820-49be2168a6b8.png
|
[screenshot]: https://user-images.githubusercontent.com/294267/30773728-ea45afb6-a076-11e7-8820-49be2168a6b8.png
|
||||||
[logo]: https://github.com/evennia/evennia/blob/master/evennia/web/website/static/website/images/evennia_logo.png
|
[logo]: https://github.com/evennia/evennia/blob/master/evennia/web/website/static/website/images/evennia_logo.png
|
||||||
[unittestciimg]: https://github.com/evennia/evennia/workflows/test-suite/badge.svg
|
[unittestciimg]: https://github.com/evennia/evennia/workflows/test-suite/badge.svg
|
||||||
[unittestcilink]: https://github.com/evennia/evennia/actions?query=workflow%3Atest-suite
|
[unittestcilink]: https://github.com/evennia/evennia/actions?query=workflow%3Atest-suite
|
||||||
[coverimg]: https://coveralls.io/repos/github/evennia/evennia/badge.svg?branch=master
|
[coverimg]: https://coveralls.io/repos/github/evennia/evennia/badge.svg?branch=master
|
||||||
[coverlink]: https://coveralls.io/github/evennia/evennia?branch=master
|
[coverlink]: https://coveralls.io/github/evennia/evennia?branch=master
|
||||||
[introduction]: https://github.com/evennia/evennia/wiki/Evennia-Introduction
|
[introduction]: https://www.evennia.com/docs/latest/Evennia-Introduction.html
|
||||||
[license]: https://github.com/evennia/evennia/wiki/Licensing
|
[license]: https://www.evennia.com/docs/latest/Licensing.html
|
||||||
[group]: https://groups.google.com/forum/#!forum/evennia
|
[group]: https://github.com/evennia/evennia/discussions
|
||||||
[chat]: http://webchat.freenode.net/?channels=evennia&uio=MT1mYWxzZSY5PXRydWUmMTE9MTk1JjEyPXRydWUbb
|
[chat]: https://discord.gg/AJJpcRUhtF
|
||||||
[wikimudpage]: http://en.wikipedia.org/wiki/MUD
|
[wikimudpage]: http://en.wikipedia.org/wiki/MUD
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ The live documentation is (will in the future be) available at `https://evennia.
|
||||||
# Editing the docs
|
# Editing the docs
|
||||||
|
|
||||||
The documentation source files are `*.md` (Markdown) files found in `evennia/docs/source/`.
|
The documentation source files are `*.md` (Markdown) files found in `evennia/docs/source/`.
|
||||||
Markdown files are simple text files that can be edited with a normal text editor. They primaroly use
|
Markdown files are simple text files that can be edited with a normal text editor. They primarily use
|
||||||
the [Markdown][commonmark] syntax. See [the syntax section below](#Editing-syntax) for more help.
|
the [Markdown][commonmark] syntax. See [the syntax section below](#Editing-syntax) for more help.
|
||||||
|
|
||||||
Don't edit the files in `source/api/`. These are auto-generated and your changes
|
Don't edit the files in `source/api/`. These are auto-generated and your changes
|
||||||
|
|
@ -18,7 +18,7 @@ will be lost.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Contributing to the docs is is like [contributing to the rest of Evennia][contributing]:
|
Contributing to the docs is like [contributing to the rest of Evennia][contributing]:
|
||||||
Check out the branch of Evennia you want to edit the documentation for. Create your
|
Check out the branch of Evennia you want to edit the documentation for. Create your
|
||||||
own work-branch, make your changes to files in `evennia/docs/source/` and make a PR for it!
|
own work-branch, make your changes to files in `evennia/docs/source/` and make a PR for it!
|
||||||
|
|
||||||
|
|
@ -66,7 +66,7 @@ All is done in your terminal/console.
|
||||||
The full documentation includes both the doc pages and the API documentation
|
The full documentation includes both the doc pages and the API documentation
|
||||||
generated from the Evennia source. For this you must install Evennia and
|
generated from the Evennia source. For this you must install Evennia and
|
||||||
initialize a new game with a default database (you don't need to have it
|
initialize a new game with a default database (you don't need to have it
|
||||||
running)
|
running).
|
||||||
|
|
||||||
- Follow the normal [Evennia Getting-Started instructions][getting-started]
|
- Follow the normal [Evennia Getting-Started instructions][getting-started]
|
||||||
to install Evennia. Use a virtualenv.
|
to install Evennia. Use a virtualenv.
|
||||||
|
|
@ -79,7 +79,7 @@ repo with
|
||||||
```
|
```
|
||||||
|
|
||||||
- Then `cd` into it and create a new, empty database. You don't need to start the game
|
- Then `cd` into it and create a new, empty database. You don't need to start the game
|
||||||
or do any further changes.
|
or make any further changes.
|
||||||
|
|
||||||
```
|
```
|
||||||
evennia migrate
|
evennia migrate
|
||||||
|
|
@ -104,7 +104,7 @@ repo with
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
- Finally, build the full documentation, including the auto-docs:
|
- Finally, build the full documentation including the auto-docs:
|
||||||
|
|
||||||
```
|
```
|
||||||
make local
|
make local
|
||||||
|
|
@ -274,7 +274,7 @@ The Evennia documentation supports some special reference shortcuts in links:
|
||||||
|
|
||||||
This will generate a link to https://github.com/evennia/evennia/issues/new/choose.
|
This will generate a link to https://github.com/evennia/evennia/issues/new/choose.
|
||||||
|
|
||||||
> For some reason these particular shortcuts gives a warning during documentation compilation. This
|
> For some reason these particular shortcuts give a warning during documentation compilation. This warning
|
||||||
> can be ignored.
|
> can be ignored.
|
||||||
|
|
||||||
## Verbatim text
|
## Verbatim text
|
||||||
|
|
@ -304,7 +304,7 @@ Everything within these backticks will be verbatim.
|
||||||
|
|
||||||
## Code blocks
|
## Code blocks
|
||||||
|
|
||||||
A special case is code examples - we want them to get code-highlighting for readability. This is done by using
|
Code examples are a special case - we want them to get code-highlighting for readability. This is done by using
|
||||||
the triple-backticks and specify which language we use:
|
the triple-backticks and specify which language we use:
|
||||||
|
|
||||||
````
|
````
|
||||||
|
|
@ -318,10 +318,9 @@ def a_python_func(x):
|
||||||
|
|
||||||
## ReST blocks
|
## ReST blocks
|
||||||
|
|
||||||
Markdown is easy to read and use. But while it does most of what we need, there are some things it's
|
Markdown is easy to read and use, but it isn't as expressive as it needs to be for some things. For this we
|
||||||
not quite as expressive as it needs to be. For this we need to fall back to the [ReST][ReST] markup
|
need to fall back to the [ReST][ReST] markup language which the documentation system uses under the hood. This is
|
||||||
language which the documentation system uses under the hood. This is done by specifying `eval_rst` as
|
done by specifying `eval_rst` as the name of the `language` of a literal block:
|
||||||
the name of the `language` of a literal block:
|
|
||||||
|
|
||||||
````
|
````
|
||||||
```eval_rst
|
```eval_rst
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
# requirements for building the docs
|
# requirements for building the docs
|
||||||
|
|
||||||
sphinx==3.2.1
|
sphinx==3.2.1
|
||||||
sphinx-multiversion==0.2.4
|
myst-parser==0.15.2
|
||||||
# lunr==0.5.8
|
myst-parser[linkify]==0.15.2
|
||||||
|
|
||||||
# recommonmark custom branch with evennia-specific fixes
|
# sphinx-multiversion with evennia fixes
|
||||||
git+https://github.com/evennia/recommonmark.git@evennia-mods#egg=recommonmark
|
git+https://github.com/evennia/sphinx-multiversion.git@evennia-mods#egg=sphinx-multiversion
|
||||||
|
|
||||||
# sphinxcontrib-lunrsearch custom branch with evennia-specific fixes
|
# sphinxcontrib-lunrsearch custom branch with evennia-specific fixes
|
||||||
git+https://github.com/evennia/sphinxcontrib-lunrsearch.git@evennia-mods#egg=sphinxcontrib-lunrsearch
|
# git+https://github.com/evennia/sphinxcontrib-lunrsearch.git@evennia-mods#egg=sphinxcontrib-lunrsearch
|
||||||
|
|
|
||||||
|
|
@ -14,27 +14,27 @@ with [EvEditor](./EvEditor.md), flipping pages in [EvMore](./EvMore.md) or using
|
||||||
[Batch-Processor](./Batch-Processors.md)'s interactive mode.
|
[Batch-Processor](./Batch-Processors.md)'s interactive mode.
|
||||||
```
|
```
|
||||||
|
|
||||||
- [**__unloggedin_look_command** [l, look]](evennia.commands.default.unloggedin.CmdUnconnectedLook) (cmdset: [UnloggedinCmdSet](evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet), help-category: _General_)
|
- [**__unloggedin_look_command** [look, l]](evennia.commands.default.unloggedin.CmdUnconnectedLook) (cmdset: [UnloggedinCmdSet](evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet), help-category: _General_)
|
||||||
- [**about** [version]](evennia.commands.default.system.CmdAbout) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
- [**about** [version]](evennia.commands.default.system.CmdAbout) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
||||||
- [**access** [hierarchy, groups]](evennia.commands.default.general.CmdAccess) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
- [**access** [groups, hierarchy]](evennia.commands.default.general.CmdAccess) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
||||||
- [**accounts** [account, listaccounts]](evennia.commands.default.system.CmdAccounts) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
- [**accounts** [listaccounts, account]](evennia.commands.default.system.CmdAccounts) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
||||||
- [**addcom** [chanalias, aliaschan]](evennia.commands.default.comms.CmdAddCom) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**addcom** [chanalias, aliaschan]](evennia.commands.default.comms.CmdAddCom) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**alias** [setobjalias]](evennia.commands.default.building.CmdSetObjAlias) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**alias** [setobjalias]](evennia.commands.default.building.CmdSetObjAlias) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**allcom**](evennia.commands.default.comms.CmdAllCom) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**allcom**](evennia.commands.default.comms.CmdAllCom) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**batchcode** [batchcodes]](evennia.commands.default.batchprocess.CmdBatchCode) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**batchcode** [batchcodes]](evennia.commands.default.batchprocess.CmdBatchCode) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**batchcommands** [batchcmd, batchcommand]](evennia.commands.default.batchprocess.CmdBatchCommands) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**batchcommands** [batchcommand, batchcmd]](evennia.commands.default.batchprocess.CmdBatchCommands) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**cboot**](evennia.commands.default.comms.CmdCBoot) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**cboot**](evennia.commands.default.comms.CmdCBoot) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**ccreate** [channelcreate]](evennia.commands.default.comms.CmdChannelCreate) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**ccreate** [channelcreate]](evennia.commands.default.comms.CmdChannelCreate) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**cdesc**](evennia.commands.default.comms.CmdCdesc) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**cdesc**](evennia.commands.default.comms.CmdCdesc) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**cdestroy**](evennia.commands.default.comms.CmdCdestroy) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**cdestroy**](evennia.commands.default.comms.CmdCdestroy) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**cemit** [cmsg]](evennia.commands.default.comms.CmdCemit) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**cemit** [cmsg]](evennia.commands.default.comms.CmdCemit) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**channels** [clist, chanlist, all channels, channellist, comlist]](evennia.commands.default.comms.CmdChannels) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**channels** [channellist, clist, comlist, all channels, chanlist]](evennia.commands.default.comms.CmdChannels) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**charcreate**](evennia.commands.default.account.CmdCharCreate) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**charcreate**](evennia.commands.default.account.CmdCharCreate) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
- [**chardelete**](evennia.commands.default.account.CmdCharDelete) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**chardelete**](evennia.commands.default.account.CmdCharDelete) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
- [**clock**](evennia.commands.default.comms.CmdClock) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**clock**](evennia.commands.default.comms.CmdClock) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**cmdsets** [listcmsets]](evennia.commands.default.building.CmdListCmdSets) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**cmdsets** [listcmsets]](evennia.commands.default.building.CmdListCmdSets) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**color**](evennia.commands.default.account.CmdColorTest) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**color**](evennia.commands.default.account.CmdColorTest) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
- [**connect** [conn, co, con]](evennia.commands.default.unloggedin.CmdUnconnectedConnect) (cmdset: [UnloggedinCmdSet](evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet), help-category: _General_)
|
- [**connect** [con, co, conn]](evennia.commands.default.unloggedin.CmdUnconnectedConnect) (cmdset: [UnloggedinCmdSet](evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet), help-category: _General_)
|
||||||
- [**copy**](evennia.commands.default.building.CmdCopy) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**copy**](evennia.commands.default.building.CmdCopy) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**cpattr**](evennia.commands.default.building.CmdCpAttr) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**cpattr**](evennia.commands.default.building.CmdCpAttr) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**create**](evennia.commands.default.building.CmdCreate) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**create**](evennia.commands.default.building.CmdCreate) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
|
|
@ -42,17 +42,17 @@ with [EvEditor](./EvEditor.md), flipping pages in [EvMore](./EvMore.md) or using
|
||||||
- [**cwho**](evennia.commands.default.comms.CmdCWho) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**cwho**](evennia.commands.default.comms.CmdCWho) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**delcom** [delchanalias, delaliaschan]](evennia.commands.default.comms.CmdDelCom) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**delcom** [delchanalias, delaliaschan]](evennia.commands.default.comms.CmdDelCom) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**desc** [describe]](evennia.commands.default.building.CmdDesc) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**desc** [describe]](evennia.commands.default.building.CmdDesc) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**destroy** [delete, del]](evennia.commands.default.building.CmdDestroy) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**destroy** [del, delete]](evennia.commands.default.building.CmdDestroy) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**dig**](evennia.commands.default.building.CmdDig) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**dig**](evennia.commands.default.building.CmdDig) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**drop**](evennia.commands.default.general.CmdDrop) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
- [**drop**](evennia.commands.default.general.CmdDrop) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
||||||
- [**encoding** [encode]](evennia.commands.default.unloggedin.CmdUnconnectedEncoding) (cmdset: [UnloggedinCmdSet](evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet), help-category: _General_)
|
- [**encoding** [encode]](evennia.commands.default.unloggedin.CmdUnconnectedEncoding) (cmdset: [UnloggedinCmdSet](evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet), help-category: _General_)
|
||||||
- [**examine** [ex, exam]](evennia.commands.default.building.CmdExamine) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Building_)
|
- [**examine** [exam, ex]](evennia.commands.default.building.CmdExamine) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Building_)
|
||||||
- [**find** [search, locate]](evennia.commands.default.building.CmdFind) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**find** [search, locate]](evennia.commands.default.building.CmdFind) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**get** [grab]](evennia.commands.default.general.CmdGet) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
- [**get** [grab]](evennia.commands.default.general.CmdGet) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
||||||
- [**give**](evennia.commands.default.general.CmdGive) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
- [**give**](evennia.commands.default.general.CmdGive) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
||||||
- [**grapevine2chan**](evennia.commands.default.comms.CmdGrapevine2Chan) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**grapevine2chan**](evennia.commands.default.comms.CmdGrapevine2Chan) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**help** [?]](evennia.commands.default.help.CmdHelp) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**help** [?]](evennia.commands.default.help.CmdHelp) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
- [**help** [h, ?]](evennia.commands.default.unloggedin.CmdUnconnectedHelp) (cmdset: [UnloggedinCmdSet](evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet), help-category: _General_)
|
- [**help** [?, h]](evennia.commands.default.unloggedin.CmdUnconnectedHelp) (cmdset: [UnloggedinCmdSet](evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet), help-category: _General_)
|
||||||
- [**home**](evennia.commands.default.general.CmdHome) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
- [**home**](evennia.commands.default.general.CmdHome) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
||||||
- [**ic** [puppet]](evennia.commands.default.account.CmdIC) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**ic** [puppet]](evennia.commands.default.account.CmdIC) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
- [**info**](evennia.commands.default.unloggedin.CmdUnconnectedInfo) (cmdset: [UnloggedinCmdSet](evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet), help-category: _General_)
|
- [**info**](evennia.commands.default.unloggedin.CmdUnconnectedInfo) (cmdset: [UnloggedinCmdSet](evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet), help-category: _General_)
|
||||||
|
|
@ -61,18 +61,18 @@ with [EvEditor](./EvEditor.md), flipping pages in [EvMore](./EvMore.md) or using
|
||||||
- [**ircstatus**](evennia.commands.default.comms.CmdIRCStatus) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**ircstatus**](evennia.commands.default.comms.CmdIRCStatus) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**link**](evennia.commands.default.building.CmdLink) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**link**](evennia.commands.default.building.CmdLink) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**lock** [locks]](evennia.commands.default.building.CmdLock) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**lock** [locks]](evennia.commands.default.building.CmdLock) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**look** [l, ls]](evennia.commands.default.account.CmdOOCLook) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**look** [ls, l]](evennia.commands.default.account.CmdOOCLook) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
- [**look** [l, ls]](evennia.commands.default.general.CmdLook) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
- [**look** [ls, l]](evennia.commands.default.general.CmdLook) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
||||||
- [**mvattr**](evennia.commands.default.building.CmdMvAttr) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**mvattr**](evennia.commands.default.building.CmdMvAttr) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**name** [rename]](evennia.commands.default.building.CmdName) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**name** [rename]](evennia.commands.default.building.CmdName) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**nick** [nickname, nicks]](evennia.commands.default.general.CmdNick) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**nick** [nicks, nickname]](evennia.commands.default.general.CmdNick) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
- [**objects** [listobjects, db, listobjs, stats]](evennia.commands.default.system.CmdObjects) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
- [**objects** [stats, db, listobjects, listobjs]](evennia.commands.default.system.CmdObjects) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
||||||
- [**ooc** [unpuppet]](evennia.commands.default.account.CmdOOC) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**ooc** [unpuppet]](evennia.commands.default.account.CmdOOC) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
- [**open**](evennia.commands.default.building.CmdOpen) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**open**](evennia.commands.default.building.CmdOpen) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**option** [options]](evennia.commands.default.account.CmdOption) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**option** [options]](evennia.commands.default.account.CmdOption) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
- [**page** [tell]](evennia.commands.default.comms.CmdPage) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**page** [tell]](evennia.commands.default.comms.CmdPage) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**password**](evennia.commands.default.account.CmdPassword) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**password**](evennia.commands.default.account.CmdPassword) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
- [**pose** [emote, :]](evennia.commands.default.general.CmdPose) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
- [**pose** [:, emote]](evennia.commands.default.general.CmdPose) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
||||||
- [**py** [!]](evennia.commands.default.system.CmdPy) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _System_)
|
- [**py** [!]](evennia.commands.default.system.CmdPy) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _System_)
|
||||||
- [**quell** [unquell]](evennia.commands.default.account.CmdQuell) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**quell** [unquell]](evennia.commands.default.account.CmdQuell) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
- [**quit**](evennia.commands.default.account.CmdQuit) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**quit**](evennia.commands.default.account.CmdQuit) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
|
|
@ -80,11 +80,11 @@ with [EvEditor](./EvEditor.md), flipping pages in [EvMore](./EvMore.md) or using
|
||||||
- [**reload** [restart]](evennia.commands.default.system.CmdReload) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _System_)
|
- [**reload** [restart]](evennia.commands.default.system.CmdReload) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _System_)
|
||||||
- [**reset** [reboot]](evennia.commands.default.system.CmdReset) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _System_)
|
- [**reset** [reboot]](evennia.commands.default.system.CmdReset) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _System_)
|
||||||
- [**rss2chan**](evennia.commands.default.comms.CmdRSS2Chan) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
- [**rss2chan**](evennia.commands.default.comms.CmdRSS2Chan) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _Comms_)
|
||||||
- [**say** [', "]](evennia.commands.default.general.CmdSay) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
- [**say** [", ']](evennia.commands.default.general.CmdSay) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
||||||
- [**screenreader**](evennia.commands.default.unloggedin.CmdUnconnectedScreenreader) (cmdset: [UnloggedinCmdSet](evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet), help-category: _General_)
|
- [**screenreader**](evennia.commands.default.unloggedin.CmdUnconnectedScreenreader) (cmdset: [UnloggedinCmdSet](evennia.commands.default.cmdset_unloggedin.UnloggedinCmdSet), help-category: _General_)
|
||||||
- [**script** [addscript]](evennia.commands.default.building.CmdScript) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**script** [addscript]](evennia.commands.default.building.CmdScript) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**scripts** [listscripts, globalscript]](evennia.commands.default.system.CmdScripts) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
- [**scripts** [globalscript, listscripts]](evennia.commands.default.system.CmdScripts) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
||||||
- [**server** [serverload, serverprocess]](evennia.commands.default.system.CmdServerLoad) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
- [**server** [serverprocess, serverload]](evennia.commands.default.system.CmdServerLoad) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
||||||
- [**service** [services]](evennia.commands.default.system.CmdService) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
- [**service** [services]](evennia.commands.default.system.CmdService) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
||||||
- [**sessions**](evennia.commands.default.account.CmdSessions) (cmdset: [SessionCmdSet](evennia.commands.default.cmdset_session.SessionCmdSet), help-category: _General_)
|
- [**sessions**](evennia.commands.default.account.CmdSessions) (cmdset: [SessionCmdSet](evennia.commands.default.cmdset_session.SessionCmdSet), help-category: _General_)
|
||||||
- [**set**](evennia.commands.default.building.CmdSetAttribute) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**set**](evennia.commands.default.building.CmdSetAttribute) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
|
|
@ -99,7 +99,7 @@ with [EvEditor](./EvEditor.md), flipping pages in [EvMore](./EvMore.md) or using
|
||||||
- [**tickers**](evennia.commands.default.system.CmdTickers) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
- [**tickers**](evennia.commands.default.system.CmdTickers) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
||||||
- [**time** [uptime]](evennia.commands.default.system.CmdTime) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
- [**time** [uptime]](evennia.commands.default.system.CmdTime) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _System_)
|
||||||
- [**tunnel** [tun]](evennia.commands.default.building.CmdTunnel) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**tunnel** [tun]](evennia.commands.default.building.CmdTunnel) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**typeclass** [swap, parent, update, type]](evennia.commands.default.building.CmdTypeclass) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**typeclass** [parent, update, type, swap]](evennia.commands.default.building.CmdTypeclass) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**unlink**](evennia.commands.default.building.CmdUnLink) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
- [**unlink**](evennia.commands.default.building.CmdUnLink) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _Building_)
|
||||||
- [**whisper**](evennia.commands.default.general.CmdWhisper) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
- [**whisper**](evennia.commands.default.general.CmdWhisper) (cmdset: [CharacterCmdSet](evennia.commands.default.cmdset_character.CharacterCmdSet), help-category: _General_)
|
||||||
- [**who** [doing]](evennia.commands.default.account.CmdWho) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
- [**who** [doing]](evennia.commands.default.account.CmdWho) (cmdset: [AccountCmdSet](evennia.commands.default.cmdset_account.AccountCmdSet), help-category: _General_)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# API Summary
|
# API Summary
|
||||||
|
|
||||||
[evennia](evennia) - library root
|
[evennia](api/evennia.md) - library root
|
||||||
- [evennia.accounts](evennia.accounts) - the out-of-character entities representing players
|
- [evennia.accounts](evennia.accounts) - the out-of-character entities representing players
|
||||||
- [evennia.commands](evennia.commands) - handle all inputs. Also includes default commands
|
- [evennia.commands](evennia.commands) - handle all inputs. Also includes default commands
|
||||||
- [evennia.comms](evennia.comms) - in-game channels and messaging
|
- [evennia.comms](evennia.comms) - in-game channels and messaging
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,8 @@ when designing a virtual multiplayer world (Raph is known for *Ultima Online* am
|
||||||
- Richard Bartle *Designing Virtual Worlds* ([amazon page](http://www.amazon.com/Designing-Virtual-Worlds-Richard-Bartle/dp/0131018167)) - Essential reading for the design of any persistent game
|
- Richard Bartle *Designing Virtual Worlds* ([amazon page](http://www.amazon.com/Designing-Virtual-Worlds-Richard-Bartle/dp/0131018167)) - Essential reading for the design of any persistent game
|
||||||
world, written by the co-creator of the original game *MUD*. Published in 2003 but it's still as
|
world, written by the co-creator of the original game *MUD*. Published in 2003 but it's still as
|
||||||
relevant now as when it came out. Covers everything you need to know and then some.
|
relevant now as when it came out. Covers everything you need to know and then some.
|
||||||
|
|
||||||
|
When the rights to Designing Virtual Worlds returned to him, Richard Bartle made the PDF of his Designing Virtual Worlds freely available through his own website ([Designing Virtual Worlds](https://mud.co.uk/dvw/)). A direct link to the PDF can be found [here](https://mud.co.uk/richard/DesigningVirtualWorlds.pdf).
|
||||||
- Zed A. Shaw *Learn Python the Hard way* ([homepage](https://learnpythonthehardway.org/)) - Despite
|
- Zed A. Shaw *Learn Python the Hard way* ([homepage](https://learnpythonthehardway.org/)) - Despite
|
||||||
the imposing name this book is for the absolute Python/programming beginner. One learns the language
|
the imposing name this book is for the absolute Python/programming beginner. One learns the language
|
||||||
by gradually creating a small text game! It has been used by multiple users before moving on to
|
by gradually creating a small text game! It has been used by multiple users before moving on to
|
||||||
|
|
|
||||||
|
|
@ -101,11 +101,11 @@ Read on for a description of the individual settings.
|
||||||
### Telnet
|
### Telnet
|
||||||
|
|
||||||
```python
|
```python
|
||||||
# Required. Change to whichever outgoing Telnet port(s)
|
# Required. Change to whichever outgoing Telnet port(s)
|
||||||
# you are allowed to use on your host.
|
# you are allowed to use on your host.
|
||||||
TELNET_PORTS = [4000]
|
TELNET_PORTS = [4000]
|
||||||
# Optional for security. Restrict which telnet
|
# Optional for security. Restrict which telnet
|
||||||
# interfaces we should accept. Should be set to your
|
# interfaces we should accept. Should be set to your
|
||||||
# outward-facing IP address(es). Default is ´0.0.0.0´
|
# outward-facing IP address(es). Default is ´0.0.0.0´
|
||||||
# which accepts all interfaces.
|
# which accepts all interfaces.
|
||||||
TELNET_INTERFACES = ['0.0.0.0']
|
TELNET_INTERFACES = ['0.0.0.0']
|
||||||
|
|
@ -115,22 +115,22 @@ The `TELNET_*` settings are the most important ones for getting a traditional ba
|
||||||
IP addresses you have available depends on your server hosting solution (see the next sections).
|
IP addresses you have available depends on your server hosting solution (see the next sections).
|
||||||
Some hosts will restrict which ports you are allowed you use so make sure to check.
|
Some hosts will restrict which ports you are allowed you use so make sure to check.
|
||||||
|
|
||||||
### Web server
|
### Web server
|
||||||
|
|
||||||
```python
|
```python
|
||||||
# Required. This is a list of tuples
|
# Required. This is a list of tuples
|
||||||
# (outgoing_port, internal_port). Only the outgoing
|
# (outgoing_port, internal_port). Only the outgoing
|
||||||
# port should be open to the world!
|
# port should be open to the world!
|
||||||
# set outgoing port to 80 if you want to run Evennia
|
# set outgoing port to 80 if you want to run Evennia
|
||||||
# as the only web server on your machine (if available).
|
# as the only web server on your machine (if available).
|
||||||
WEBSERVER_PORTS = [(4001, 4005)]
|
WEBSERVER_PORTS = [(4001, 4005)]
|
||||||
# Optional for security. Change this to the IP your
|
# Optional for security. Change this to the IP your
|
||||||
# server can be reached at (normally the same
|
# server can be reached at (normally the same
|
||||||
# as TELNET_INTERFACES)
|
# as TELNET_INTERFACES)
|
||||||
WEBSERVER_INTERFACES = ['0.0.0.0']
|
WEBSERVER_INTERFACES = ['0.0.0.0']
|
||||||
# Optional for security. Protects against
|
# Optional for security. Protects against
|
||||||
# man-in-the-middle attacks. Change it to your server's
|
# man-in-the-middle attacks. Change it to your server's
|
||||||
# IP address or URL when you run a production server.
|
# IP address or URL when you run a production server.
|
||||||
ALLOWED_HOSTS = ['*']
|
ALLOWED_HOSTS = ['*']
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -147,14 +147,14 @@ change the outgoing port unless the default internal port is clashing with some
|
||||||
```python
|
```python
|
||||||
# Required. Change this to the main IP address of your server.
|
# Required. Change this to the main IP address of your server.
|
||||||
WEBSOCKET_CLIENT_INTERFACE = '0.0.0.0'
|
WEBSOCKET_CLIENT_INTERFACE = '0.0.0.0'
|
||||||
# Optional and needed only if using a proxy or similar. Change
|
# Optional and needed only if using a proxy or similar. Change
|
||||||
# to the IP or address where the client can reach
|
# to the IP or address where the client can reach
|
||||||
# your server. The ws:// part is then required. If not given, the client
|
# your server. The ws:// part is then required. If not given, the client
|
||||||
# will use its host location.
|
# will use its host location.
|
||||||
WEBSOCKET_CLIENT_URL = ""
|
WEBSOCKET_CLIENT_URL = ""
|
||||||
# Required. Change to a free port for the websocket client to reach
|
# Required. Change to a free port for the websocket client to reach
|
||||||
# the server on. This will be automatically appended
|
# the server on. This will be automatically appended
|
||||||
# to WEBSOCKET_CLIENT_URL by the web client.
|
# to WEBSOCKET_CLIENT_URL by the web client.
|
||||||
WEBSOCKET_CLIENT_PORT = 4002
|
WEBSOCKET_CLIENT_PORT = 4002
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -171,15 +171,15 @@ SSL_PORTS = [4003]
|
||||||
SSL_INTERFACES = ['0.0.0.0']
|
SSL_INTERFACES = ['0.0.0.0']
|
||||||
# Optional public facing. Only if you allow SSH connections (off by default).
|
# Optional public facing. Only if you allow SSH connections (off by default).
|
||||||
SSH_PORTS = [4004]
|
SSH_PORTS = [4004]
|
||||||
SSH_INTERFACES = ['0.0.0.0']
|
SSH_INTERFACES = ['0.0.0.0']
|
||||||
# Required private. You should only change this if there is a clash
|
# Required private. You should only change this if there is a clash
|
||||||
# with other services on your host. Should NOT be open to the
|
# with other services on your host. Should NOT be open to the
|
||||||
# outside world.
|
# outside world.
|
||||||
AMP_PORT = 4006
|
AMP_PORT = 4006
|
||||||
```
|
```
|
||||||
|
|
||||||
The `AMP_PORT` is required to work, since this is the internal port linking Evennia's
|
The `AMP_PORT` is required to work, since this is the internal port linking Evennia's
|
||||||
[Server and Portal](../Components/Portal-And-Server.md) components together. The other ports are encrypted ports that may be
|
[Server and Portal](./Portal-And-Server.md) components together. The other ports are encrypted ports that may be
|
||||||
useful for custom protocols but are otherwise not used.
|
useful for custom protocols but are otherwise not used.
|
||||||
|
|
||||||
### Lockdown mode
|
### Lockdown mode
|
||||||
|
|
@ -198,9 +198,9 @@ drum up interest for your game and also shows people that Evennia is being used.
|
||||||
even if you are just starting development - if you don't give any telnet/web address it will appear
|
even if you are just starting development - if you don't give any telnet/web address it will appear
|
||||||
as _Not yet public_ and just be a teaser. If so, pick _pre-alpha_ as the development status.
|
as _Not yet public_ and just be a teaser. If so, pick _pre-alpha_ as the development status.
|
||||||
|
|
||||||
To register, stand in your game dir, run
|
To register, stand in your game dir, run
|
||||||
|
|
||||||
evennia connections
|
evennia connections
|
||||||
|
|
||||||
and follow the instructions. See the [Game index page](./Evennia-Game-Index.md) for more details.
|
and follow the instructions. See the [Game index page](./Evennia-Game-Index.md) for more details.
|
||||||
|
|
||||||
|
|
@ -384,17 +384,19 @@ Evennia users:
|
||||||
|
|
||||||
| Hosting name | Type | Lowest price | Comments |
|
| Hosting name | Type | Lowest price | Comments |
|
||||||
|---|---| ---| --- |
|
|---|---| ---| --- |
|
||||||
| [silvren.com][1] | Shell account | Free for MU* | Private hobby provider so don't assume backups or expect immediate support. To ask for an account,connect with a MUD client to iweb.localecho.net, port 4201 and ask for "Jarin". |
|
| [silvren.com][1] | Shell account | Free for MU* | Private hobby provider so don't assume backups or expect immediate support. To ask for an account,connect with a MUD client to rostdev.mushpark.com, port 4201 and ask for "Jarin". |
|
||||||
| [Digital Ocean][2] | VPS | $5/month | You can get a $50 credit if you use the referral link https://m.do.co/c/8f64fec2670c - if you do, once you've had it long enough to have paid $25 we will get that as a referral bonus to help Evennia development.|
|
| [Digital Ocean][2] | VPS | $5/month | You can get a $50 credit if you use the referral link https://m.do.co/c/8f64fec2670c - if you do, once you've had it long enough to have paid $25 we will get that as a referral bonus to help Evennia development.|
|
||||||
| [Amazon Web services][3] | Cloud | ~$5/month / on-demand | Free Tier first 12 months. Regions available around the globe.|
|
| [Amazon Web services][3] | Cloud | ~$5/month / on-demand | Free Tier first 12 months. Regions available around the globe.|
|
||||||
| [Amazon Lightsail][9] | Cloud | $5/month | Free first month. AWS's new "fixed cost" offering.|
|
| [Amazon Lightsail][9] | Cloud | $5/month | Free first month. AWS's new "fixed cost" offering.|
|
||||||
|
| [Azure App Services][12] | Cloud | Free | Provides a free tier for hobbyist. Limited regions to be deployed to under the free tier|
|
||||||
|
| [Huawei Cloud][13] | Cloud | on demand | Similar to Amazon. Free Tier first 12 months. Limited regions to be deployed to|
|
||||||
| [Genesis MUD hosting][4] | Shell account | $8/month | Dedicated MUD host with very limited memory offerings. As for 2017, runs a 13 years old Python version (2.4) so you'd need to either convince them to update or compile yourself. Note that Evennia needs *at least* the "Deluxe" package (50MB RAM) and probably *a lot* higher for a production game. This host is *not* recommended for Evennia.|
|
| [Genesis MUD hosting][4] | Shell account | $8/month | Dedicated MUD host with very limited memory offerings. As for 2017, runs a 13 years old Python version (2.4) so you'd need to either convince them to update or compile yourself. Note that Evennia needs *at least* the "Deluxe" package (50MB RAM) and probably *a lot* higher for a production game. This host is *not* recommended for Evennia.|
|
||||||
| [Host1Plus][5] | VPS & Cloud | $4/month | $4-$8/month depending on length of sign-up period.
|
| [Host1Plus][5] | VPS & Cloud | $4/month | $4-$8/month depending on length of sign-up period.
|
||||||
| [Scaleway][6] | Cloud | €3/month / on-demand | EU based (Paris, Amsterdam). Smallest option provides 2GB RAM. |
|
| [Scaleway][6] | Cloud | €3/month / on-demand | EU based (Paris, Amsterdam). Smallest option provides 2GB RAM. |
|
||||||
| [Prgmr][10] | VPS | $5/month | 1 month free with a year prepay. You likely want some experience with servers with this option as they don't have a lot of support.|
|
| [Prgmr][10] | VPS | $5/month | 1 month free with a year prepay. You likely want some experience with servers with this option as they don't have a lot of support.|
|
||||||
| [Linode][11] | Cloud | $5/month / on-demand | Multiple regions. Smallest option provides 1GB RAM|
|
| [Linode][11] | Cloud | $5/month / on-demand | Multiple regions. Smallest option provides 1GB RAM|
|
||||||
|
|
||||||
*Please help us expand this list.*
|
*Please help us expand this list.*
|
||||||
|
|
||||||
[1]: https://silvren.com
|
[1]: https://silvren.com
|
||||||
[2]: https://www.digitalocean.com/pricing
|
[2]: https://www.digitalocean.com/pricing
|
||||||
|
|
@ -407,6 +409,8 @@ Evennia users:
|
||||||
[9]: https://amazonlightsail.com
|
[9]: https://amazonlightsail.com
|
||||||
[10]: https://prgmr.com/
|
[10]: https://prgmr.com/
|
||||||
[11]: https://www.linode.com/
|
[11]: https://www.linode.com/
|
||||||
|
[12]: https://azure.microsoft.com/en-us/pricing/details/app-service/windows/
|
||||||
|
[13]: https://activity.huaweicloud.com/intl/en-us/free_packages/index.html
|
||||||
|
|
||||||
## Cloud9
|
## Cloud9
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -660,7 +660,7 @@ class DefaultAccount(AccountDB, metaclass=TypeclassBase):
|
||||||
typeclass (str, optional): Typeclass to use for this character. If
|
typeclass (str, optional): Typeclass to use for this character. If
|
||||||
not given, use settings.BASE_CHARACTER_TYPECLASS.
|
not given, use settings.BASE_CHARACTER_TYPECLASS.
|
||||||
permissions (list, optional): If not given, use the account's permissions.
|
permissions (list, optional): If not given, use the account's permissions.
|
||||||
ip (str, optiona): The client IP creating this character. Will fall back to the
|
ip (str, optional): The client IP creating this character. Will fall back to the
|
||||||
one stored for the account if not given.
|
one stored for the account if not given.
|
||||||
kwargs (any): Other kwargs will be used in the create_call.
|
kwargs (any): Other kwargs will be used in the create_call.
|
||||||
Returns:
|
Returns:
|
||||||
|
|
@ -927,7 +927,7 @@ class DefaultAccount(AccountDB, metaclass=TypeclassBase):
|
||||||
kwargs (any): Other keyword arguments will be added to the
|
kwargs (any): Other keyword arguments will be added to the
|
||||||
found command object instance as variables before it
|
found command object instance as variables before it
|
||||||
executes. This is unused by default Evennia but may be
|
executes. This is unused by default Evennia but may be
|
||||||
used to set flags and change operating paramaters for
|
used to set flags and change operating parameters for
|
||||||
commands at run-time.
|
commands at run-time.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
@ -1307,7 +1307,7 @@ class DefaultAccount(AccountDB, metaclass=TypeclassBase):
|
||||||
self._send_to_connect_channel(_("|G{key} connected|n").format(key=self.key))
|
self._send_to_connect_channel(_("|G{key} connected|n").format(key=self.key))
|
||||||
if _MULTISESSION_MODE == 0:
|
if _MULTISESSION_MODE == 0:
|
||||||
# in this mode we should have only one character available. We
|
# in this mode we should have only one character available. We
|
||||||
# try to auto-connect to our last conneted object, if any
|
# try to auto-connect to our last connected object, if any
|
||||||
try:
|
try:
|
||||||
self.puppet_object(session, self.db._last_puppet)
|
self.puppet_object(session, self.db._last_puppet)
|
||||||
except RuntimeError:
|
except RuntimeError:
|
||||||
|
|
@ -1334,7 +1334,7 @@ class DefaultAccount(AccountDB, metaclass=TypeclassBase):
|
||||||
"""
|
"""
|
||||||
Called by the login process if a user account is targeted correctly
|
Called by the login process if a user account is targeted correctly
|
||||||
but provided with an invalid password. By default it does nothing,
|
but provided with an invalid password. By default it does nothing,
|
||||||
but exists to be overriden.
|
but exists to be overridden.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
session (session): Session logging in.
|
session (session): Session logging in.
|
||||||
|
|
@ -1574,7 +1574,7 @@ class DefaultGuest(DefaultAccount):
|
||||||
Gets or creates a Guest account object.
|
Gets or creates a Guest account object.
|
||||||
|
|
||||||
Keyword Args:
|
Keyword Args:
|
||||||
ip (str, optional): IP address of requestor; used for ban checking,
|
ip (str, optional): IP address of requester; used for ban checking,
|
||||||
throttling and logging
|
throttling and logging
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
|
|
|
||||||
|
|
@ -1061,7 +1061,7 @@ class CmdTunnel(COMMAND_DEFAULT_CLASS):
|
||||||
exitname, backshort = self.directions[exitshort]
|
exitname, backshort = self.directions[exitshort]
|
||||||
backname = self.directions[backshort][0]
|
backname = self.directions[backshort][0]
|
||||||
|
|
||||||
# if we recieved a typeclass for the exit, add it to the alias(short name)
|
# if we received a typeclass for the exit, add it to the alias(short name)
|
||||||
if ":" in self.lhs:
|
if ":" in self.lhs:
|
||||||
# limit to only the first : character
|
# limit to only the first : character
|
||||||
exit_typeclass = ":" + self.lhs.split(":", 1)[-1]
|
exit_typeclass = ":" + self.lhs.split(":", 1)[-1]
|
||||||
|
|
@ -1647,7 +1647,7 @@ class CmdSetAttribute(ObjManipCommand):
|
||||||
def split_nested_attr(self, attr):
|
def split_nested_attr(self, attr):
|
||||||
"""
|
"""
|
||||||
Yields tuples of (possible attr name, nested keys on that attr).
|
Yields tuples of (possible attr name, nested keys on that attr).
|
||||||
For performance, this is biased to the deepest match, but allows compatability
|
For performance, this is biased to the deepest match, but allows compatibility
|
||||||
with older attrs that might have been named with `[]`'s.
|
with older attrs that might have been named with `[]`'s.
|
||||||
|
|
||||||
> list(split_nested_attr("nested['asdf'][0]"))
|
> list(split_nested_attr("nested['asdf'][0]"))
|
||||||
|
|
@ -3491,7 +3491,7 @@ class CmdSpawn(COMMAND_DEFAULT_CLASS):
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
# we homogenize the protoype first, to be more lenient with free-form
|
# we homogenize the prototype first, to be more lenient with free-form
|
||||||
protlib.validate_prototype(protlib.homogenize_prototype(prototype))
|
protlib.validate_prototype(protlib.homogenize_prototype(prototype))
|
||||||
except RuntimeError as err:
|
except RuntimeError as err:
|
||||||
self.caller.msg(str(err))
|
self.caller.msg(str(err))
|
||||||
|
|
|
||||||
|
|
@ -1261,7 +1261,7 @@ class CmdRSS2Chan(COMMAND_DEFAULT_CLASS):
|
||||||
|
|
||||||
class CmdGrapevine2Chan(COMMAND_DEFAULT_CLASS):
|
class CmdGrapevine2Chan(COMMAND_DEFAULT_CLASS):
|
||||||
"""
|
"""
|
||||||
Link an Evennia channel to an exteral Grapevine channel
|
Link an Evennia channel to an external Grapevine channel
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
grapevine2chan[/switches] <evennia_channel> = <grapevine_channel>
|
grapevine2chan[/switches] <evennia_channel> = <grapevine_channel>
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ class CmdHelp(COMMAND_DEFAULT_CLASS):
|
||||||
def format_help_entry(title, help_text, aliases=None, suggested=None):
|
def format_help_entry(title, help_text, aliases=None, suggested=None):
|
||||||
"""
|
"""
|
||||||
This visually formats the help entry.
|
This visually formats the help entry.
|
||||||
This method can be overriden to customize the way a help
|
This method can be overridden to customize the way a help
|
||||||
entry is displayed.
|
entry is displayed.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
|
|
||||||
|
|
@ -181,9 +181,24 @@ class TestGeneral(CommandTest):
|
||||||
rid = self.room1.id
|
rid = self.room1.id
|
||||||
self.call(general.CmdLook(), "here", "Room(#{})\nroom_desc".format(rid))
|
self.call(general.CmdLook(), "here", "Room(#{})\nroom_desc".format(rid))
|
||||||
|
|
||||||
|
def test_look_no_location(self):
|
||||||
|
self.char1.location = None
|
||||||
|
self.call(general.CmdLook(), "", "You have no location to look at!")
|
||||||
|
|
||||||
|
def test_look_nonexisting(self):
|
||||||
|
self.call(general.CmdLook(), "yellow sign", "Could not find 'yellow sign'.")
|
||||||
|
|
||||||
def test_home(self):
|
def test_home(self):
|
||||||
self.call(general.CmdHome(), "", "You are already home")
|
self.call(general.CmdHome(), "", "You are already home")
|
||||||
|
|
||||||
|
def test_go_home(self):
|
||||||
|
self.call(building.CmdTeleport(), "/quiet Room2")
|
||||||
|
self.call(general.CmdHome(), "", "There's no place like home")
|
||||||
|
|
||||||
|
def test_no_home(self):
|
||||||
|
self.char1.home = None
|
||||||
|
self.call(general.CmdHome(), "", "You have no home")
|
||||||
|
|
||||||
def test_inventory(self):
|
def test_inventory(self):
|
||||||
self.call(general.CmdInventory(), "", "You are not carrying anything.")
|
self.call(general.CmdInventory(), "", "You are not carrying anything.")
|
||||||
|
|
||||||
|
|
@ -213,6 +228,12 @@ class TestGeneral(CommandTest):
|
||||||
self.assertEqual(None, self.char1.account.nicks.get("testalias", category="account"))
|
self.assertEqual(None, self.char1.account.nicks.get("testalias", category="account"))
|
||||||
self.assertEqual("testaliasedstring3", self.char1.nicks.get("testalias", category="object"))
|
self.assertEqual("testaliasedstring3", self.char1.nicks.get("testalias", category="object"))
|
||||||
|
|
||||||
|
def test_nick_list(self):
|
||||||
|
self.call(general.CmdNick(), "/list", "No nicks defined.")
|
||||||
|
self.call(general.CmdNick(), "test1 = Hello",
|
||||||
|
"Inputline-nick 'test1' mapped to 'Hello'.")
|
||||||
|
self.call(general.CmdNick(), "/list", "Defined Nicks:")
|
||||||
|
|
||||||
def test_get_and_drop(self):
|
def test_get_and_drop(self):
|
||||||
self.call(general.CmdGet(), "Obj", "You pick up Obj.")
|
self.call(general.CmdGet(), "Obj", "You pick up Obj.")
|
||||||
self.call(general.CmdDrop(), "Obj", "You drop Obj.")
|
self.call(general.CmdDrop(), "Obj", "You drop Obj.")
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# world/
|
# world/
|
||||||
|
|
||||||
This folder is meant as a miscellanous folder for all that other stuff
|
This folder is meant as a miscellaneous folder for all that other stuff
|
||||||
related to the game. Code which are not commands or typeclasses go
|
related to the game. Code which are not commands or typeclasses go
|
||||||
here, like custom economy systems, combat code, batch-files etc.
|
here, like custom economy systems, combat code, batch-files etc.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ Possible keywords are:
|
||||||
- `prototype_key` - the name of the prototype. This is required for db-prototypes,
|
- `prototype_key` - the name of the prototype. This is required for db-prototypes,
|
||||||
for module-prototypes, the global variable name of the dict is used instead
|
for module-prototypes, the global variable name of the dict is used instead
|
||||||
- `prototype_parent` - string pointing to parent prototype if any. Prototype inherits
|
- `prototype_parent` - string pointing to parent prototype if any. Prototype inherits
|
||||||
in a similar way as classes, with children overriding values in their partents.
|
in a similar way as classes, with children overriding values in their parents.
|
||||||
- `key` - string, the main object identifier.
|
- `key` - string, the main object identifier.
|
||||||
- `typeclass` - string, if not set, will use `settings.BASE_OBJECT_TYPECLASS`.
|
- `typeclass` - string, if not set, will use `settings.BASE_OBJECT_TYPECLASS`.
|
||||||
- `location` - this should be a valid object or #dbref.
|
- `location` - this should be a valid object or #dbref.
|
||||||
|
|
@ -42,7 +42,7 @@ Possible keywords are:
|
||||||
of the shorter forms, defaults are used for the rest.
|
of the shorter forms, defaults are used for the rest.
|
||||||
- `tags` - Tags, as a list of tuples `(tag,)`, `(tag, category)` or `(tag, category, data)`.
|
- `tags` - Tags, as a list of tuples `(tag,)`, `(tag, category)` or `(tag, category, data)`.
|
||||||
- Any other keywords are interpreted as Attributes with no category or lock.
|
- Any other keywords are interpreted as Attributes with no category or lock.
|
||||||
These will internally be added to `attrs` (eqivalent to `(attrname, value)`.
|
These will internally be added to `attrs` (equivalent to `(attrname, value)`.
|
||||||
|
|
||||||
See the `spawn` command and `evennia.prototypes.spawner.spawn` for more info.
|
See the `spawn` command and `evennia.prototypes.spawner.spawn` for more info.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ from random import randint, sample
|
||||||
import mock
|
import mock
|
||||||
import uuid
|
import uuid
|
||||||
from time import time
|
from time import time
|
||||||
from anything import Something
|
from anything import Something, Anything
|
||||||
from django.test.utils import override_settings
|
from django.test.utils import override_settings
|
||||||
from evennia.utils.test_resources import EvenniaTest
|
from evennia.utils.test_resources import EvenniaTest
|
||||||
from evennia.utils.tests.test_evmenu import TestEvMenu
|
from evennia.utils.tests.test_evmenu import TestEvMenu
|
||||||
|
|
@ -363,7 +363,7 @@ class TestProtFuncs(EvenniaTest):
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
protlib.protfunc_parser("$right_justify( foo )", testing=True),
|
protlib.protfunc_parser("$right_justify( foo )", testing=True),
|
||||||
("unexpected indent (<unknown>, line 1)", " foo"),
|
(Anything, " foo"),
|
||||||
)
|
)
|
||||||
|
|
||||||
test_prot = {"key1": "value1", "key2": 2}
|
test_prot = {"key1": "value1", "key2": 2}
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ SSHUTD = chr(7) # server shutdown
|
||||||
SSYNC = chr(8) # server session sync
|
SSYNC = chr(8) # server session sync
|
||||||
SCONN = chr(11) # server portal connection (for bots)
|
SCONN = chr(11) # server portal connection (for bots)
|
||||||
PCONNSYNC = chr(12) # portal post-syncing session
|
PCONNSYNC = chr(12) # portal post-syncing session
|
||||||
PDISCONNALL = chr(13) # portal session discnnect all
|
PDISCONNALL = chr(13) # portal session disconnect all
|
||||||
SRELOAD = chr(14) # server reloading (have portal start a new server)
|
SRELOAD = chr(14) # server reloading (have portal start a new server)
|
||||||
SSTART = chr(15) # server start (portal must already be running anyway)
|
SSTART = chr(15) # server start (portal must already be running anyway)
|
||||||
PSHUTD = chr(16) # portal (+server) shutdown
|
PSHUTD = chr(16) # portal (+server) shutdown
|
||||||
|
|
@ -679,7 +679,7 @@ class ServerSessionHandler(SessionHandler):
|
||||||
Get a unique list of connected and logged-in Accounts.
|
Get a unique list of connected and logged-in Accounts.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
accounts (list): All conected Accounts (which may be fewer than the
|
accounts (list): All connected Accounts (which may be fewer than the
|
||||||
amount of Sessions due to multi-playing).
|
amount of Sessions due to multi-playing).
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -27,45 +27,45 @@ from django.dispatch import Signal
|
||||||
# Account.create() after the Account is created. Note that this will *not* fire
|
# Account.create() after the Account is created. Note that this will *not* fire
|
||||||
# if calling create.create_account alone, since going through the Account.create()
|
# if calling create.create_account alone, since going through the Account.create()
|
||||||
# is the most expected route.
|
# is the most expected route.
|
||||||
SIGNAL_ACCOUNT_POST_CREATE = Signal(providing_args=["ip"])
|
SIGNAL_ACCOUNT_POST_CREATE = Signal()
|
||||||
|
|
||||||
# The Sender is the renamed Account. This is triggered by the username setter in AccountDB.
|
# The Sender is the renamed Account. This is triggered by the username setter in AccountDB.
|
||||||
SIGNAL_ACCOUNT_POST_RENAME = Signal(providing_args=["old_name", "new_name"])
|
SIGNAL_ACCOUNT_POST_RENAME = Signal()
|
||||||
|
|
||||||
# The Sender is the connecting Account. This is triggered when an Account connects cold;
|
# The Sender is the connecting Account. This is triggered when an Account connects cold;
|
||||||
# that is, it had no other sessions connected.
|
# that is, it had no other sessions connected.
|
||||||
SIGNAL_ACCOUNT_POST_FIRST_LOGIN = Signal(providing_args=["session"])
|
SIGNAL_ACCOUNT_POST_FIRST_LOGIN = Signal()
|
||||||
|
|
||||||
# The sender is the connecting Account. This is triggered whenever a session authenticates
|
# The sender is the connecting Account. This is triggered whenever a session authenticates
|
||||||
# to an Account regardless of existing sessions. It then firest after FIRST_LOGIN signal
|
# to an Account regardless of existing sessions. It then firest after FIRST_LOGIN signal
|
||||||
SIGNAL_ACCOUNT_POST_LOGIN = Signal(providing_args=["session"])
|
SIGNAL_ACCOUNT_POST_LOGIN = Signal()
|
||||||
|
|
||||||
# The Sender is the Account attempting to authenticate. This is triggered whenever a
|
# The Sender is the Account attempting to authenticate. This is triggered whenever a
|
||||||
# session tries to login to an Account but fails.
|
# session tries to login to an Account but fails.
|
||||||
SIGNAL_ACCOUNT_POST_LOGIN_FAIL = Signal(providing_args=["session"])
|
SIGNAL_ACCOUNT_POST_LOGIN_FAIL = Signal()
|
||||||
|
|
||||||
# The sender is the disconnecting Account. This is triggered whenever a session disconnects
|
# The sender is the disconnecting Account. This is triggered whenever a session disconnects
|
||||||
# from the account, regardless of how many it started with or remain.
|
# from the account, regardless of how many it started with or remain.
|
||||||
SIGNAL_ACCOUNT_POST_LOGOUT = Signal(providing_args=["session"])
|
SIGNAL_ACCOUNT_POST_LOGOUT = Signal()
|
||||||
|
|
||||||
# The sender is the Account. This is triggered when an Account's final session disconnects.
|
# The sender is the Account. This is triggered when an Account's final session disconnects.
|
||||||
SIGNAL_ACCOUNT_POST_LAST_LOGOUT = Signal(providing_args=["session"])
|
SIGNAL_ACCOUNT_POST_LAST_LOGOUT = Signal()
|
||||||
|
|
||||||
# The sender is an Object. This is triggered when Object has been created, after all hooks.
|
# The sender is an Object. This is triggered when Object has been created, after all hooks.
|
||||||
SIGNAL_OBJECT_POST_CREATE = Signal()
|
SIGNAL_OBJECT_POST_CREATE = Signal()
|
||||||
|
|
||||||
# The sender is the Object being puppeted. This is triggered after all puppeting hooks have
|
# The sender is the Object being puppeted. This is triggered after all puppeting hooks have
|
||||||
# been called. The Object has already been puppeted by this point.
|
# been called. The Object has already been puppeted by this point.
|
||||||
SIGNAL_OBJECT_POST_PUPPET = Signal(providing_args=["session", "account"])
|
SIGNAL_OBJECT_POST_PUPPET = Signal()
|
||||||
|
|
||||||
# The sender is the Object being released. This is triggered after all hooks are called.
|
# The sender is the Object being released. This is triggered after all hooks are called.
|
||||||
# The Object is no longer puppeted by this point.
|
# The Object is no longer puppeted by this point.
|
||||||
SIGNAL_OBJECT_POST_UNPUPPET = Signal(providing_args=["session", "account"])
|
SIGNAL_OBJECT_POST_UNPUPPET = Signal()
|
||||||
|
|
||||||
# The sender is the Typed Object being renamed. This isn't necessarily an Object;
|
# The sender is the Typed Object being renamed. This isn't necessarily an Object;
|
||||||
# it could be a script. It fires whenever the value of the Typed object's 'key'
|
# it could be a script. It fires whenever the value of the Typed object's 'key'
|
||||||
# changes. Will need to use isinstance() or other filtering on things that use this.
|
# changes. Will need to use isinstance() or other filtering on things that use this.
|
||||||
SIGNAL_TYPED_OBJECT_POST_RENAME = Signal(providing_args=["old_key", "new_key"])
|
SIGNAL_TYPED_OBJECT_POST_RENAME = Signal()
|
||||||
|
|
||||||
# The sender is the created Script. This is called after the Script was first created,
|
# The sender is the created Script. This is called after the Script was first created,
|
||||||
# after all hooks.
|
# after all hooks.
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@ be out of sync with the database.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from functools import update_wrapper
|
from functools import update_wrapper
|
||||||
from collections import defaultdict, MutableSequence, MutableSet, MutableMapping
|
from collections import deque, OrderedDict, defaultdict
|
||||||
from collections import OrderedDict, deque
|
from collections.abc import MutableSequence, MutableSet, MutableMapping
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from pickle import dumps, loads
|
from pickle import dumps, loads
|
||||||
|
|
@ -391,7 +391,7 @@ class _SaverDeque(_SaverMutable):
|
||||||
@_save
|
@_save
|
||||||
def rotate(self, *args):
|
def rotate(self, *args):
|
||||||
self._data.rotate(*args)
|
self._data.rotate(*args)
|
||||||
|
|
||||||
@_save
|
@_save
|
||||||
def remove(self, *args):
|
def remove(self, *args):
|
||||||
self._data.remove(*args)
|
self._data.remove(*args)
|
||||||
|
|
|
||||||
|
|
@ -173,7 +173,7 @@ class EvMore:
|
||||||
justify (bool, optional): If set, auto-justify long lines. This must be turned
|
justify (bool, optional): If set, auto-justify long lines. This must be turned
|
||||||
off for fixed-width or formatted output, like tables. It's force-disabled
|
off for fixed-width or formatted output, like tables. It's force-disabled
|
||||||
if `inp` is an EvTable.
|
if `inp` is an EvTable.
|
||||||
justify_kwargs (dict, optional): Keywords for the justifiy function. Used only
|
justify_kwargs (dict, optional): Keywords for the justify function. Used only
|
||||||
if `justify` is True. If this is not set, default arguments will be used.
|
if `justify` is True. If this is not set, default arguments will be used.
|
||||||
exit_on_lastpage (bool, optional): If reaching the last page without the
|
exit_on_lastpage (bool, optional): If reaching the last page without the
|
||||||
page being completely filled, exit pager immediately. If unset,
|
page being completely filled, exit pager immediately. If unset,
|
||||||
|
|
@ -518,7 +518,7 @@ class EvMore:
|
||||||
def page_formatter(self, page):
|
def page_formatter(self, page):
|
||||||
"""
|
"""
|
||||||
Page formatter. Every page passes through this method. Override
|
Page formatter. Every page passes through this method. Override
|
||||||
it to customize behvaior per-page. A common use is to generate a new
|
it to customize behavior per-page. A common use is to generate a new
|
||||||
EvTable for every page (this is more efficient than to generate one huge
|
EvTable for every page (this is more efficient than to generate one huge
|
||||||
EvTable across many pages and feed it into EvMore all at once).
|
EvTable across many pages and feed it into EvMore all at once).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -785,7 +785,7 @@ def latinify(string, default="?", pure_ascii=False):
|
||||||
This is used as a last resort when normal encoding does not work.
|
This is used as a last resort when normal encoding does not work.
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
string (str): A string to convert to 'safe characters' convertable
|
string (str): A string to convert to 'safe characters' convertible
|
||||||
to an latin-1 bytestring later.
|
to an latin-1 bytestring later.
|
||||||
default (str, optional): Characters resisting mapping will be replaced
|
default (str, optional): Characters resisting mapping will be replaced
|
||||||
with this character or string. The intent is to apply an encode operation
|
with this character or string. The intent is to apply an encode operation
|
||||||
|
|
@ -1050,7 +1050,7 @@ def delay(timedelay, callback, *args, **kwargs):
|
||||||
Keep in mind that persistent tasks arguments and callback should not
|
Keep in mind that persistent tasks arguments and callback should not
|
||||||
use memory references.
|
use memory references.
|
||||||
If persistent is set to True the delay function will return an int
|
If persistent is set to True the delay function will return an int
|
||||||
which is the task's id itended for use with TASK_HANDLER's do_task
|
which is the task's id intended for use with TASK_HANDLER's do_task
|
||||||
and remove methods.
|
and remove methods.
|
||||||
All persistent tasks whose time delays have passed will be called on server startup.
|
All persistent tasks whose time delays have passed will be called on server startup.
|
||||||
|
|
||||||
|
|
@ -1430,12 +1430,12 @@ def class_from_module(path, defaultpaths=None, fallback=None):
|
||||||
defaultpaths (iterable, optional): If a direct import from `path` fails,
|
defaultpaths (iterable, optional): If a direct import from `path` fails,
|
||||||
try subsequent imports by prepending those paths to `path`.
|
try subsequent imports by prepending those paths to `path`.
|
||||||
fallback (str): If all other attempts fail, use this path as a fallback.
|
fallback (str): If all other attempts fail, use this path as a fallback.
|
||||||
This is intended as a last-resport. In the example of Evennia
|
This is intended as a last-resort. In the example of Evennia
|
||||||
loading, this would be a path to a default parent class in the
|
loading, this would be a path to a default parent class in the
|
||||||
evennia repo itself.
|
evennia repo itself.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
class (Class): An uninstatiated class recovered from path.
|
class (Class): An uninstantiated class recovered from path.
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
ImportError: If all loading failed.
|
ImportError: If all loading failed.
|
||||||
|
|
@ -1574,7 +1574,7 @@ def string_partial_matching(alternatives, inp, ret_index=True):
|
||||||
Matching is made from the start of each subword in each
|
Matching is made from the start of each subword in each
|
||||||
alternative. Case is not important. So e.g. "bi sh sw" or just
|
alternative. Case is not important. So e.g. "bi sh sw" or just
|
||||||
"big" or "shiny" or "sw" will match "Big shiny sword". Scoring is
|
"big" or "shiny" or "sw" will match "Big shiny sword". Scoring is
|
||||||
done to allow to separate by most common demoninator. You will get
|
done to allow to separate by most common denominator. You will get
|
||||||
multiple matches returned if appropriate.
|
multiple matches returned if appropriate.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
|
@ -1647,7 +1647,7 @@ def format_table(table, extra_space=1):
|
||||||
::
|
::
|
||||||
|
|
||||||
ftable = format_table([[...], [...], ...])
|
ftable = format_table([[...], [...], ...])
|
||||||
for ir, row in enumarate(ftable):
|
for ir, row in enumerate(ftable):
|
||||||
if ir == 0:
|
if ir == 0:
|
||||||
# make first row white
|
# make first row white
|
||||||
string += "\\\\n|w" + ""join(row) + "|n"
|
string += "\\\\n|w" + ""join(row) + "|n"
|
||||||
|
|
@ -2045,7 +2045,7 @@ def get_all_typeclasses(parent=None):
|
||||||
typeclasses (dict): On the form {"typeclass.path": typeclass, ...}
|
typeclasses (dict): On the form {"typeclass.path": typeclass, ...}
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
This will dynamicall retrieve all abstract django models inheriting at any distance
|
This will dynamically retrieve all abstract django models inheriting at any distance
|
||||||
from the TypedObject base (aka a Typeclass) so it will work fine with any custom
|
from the TypedObject base (aka a Typeclass) so it will work fine with any custom
|
||||||
classes being added.
|
classes being added.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue