Python MUD/MUX/MUSH/MU* development system http://www.evennia.com
Find a file
Tegiminis 3a52913bbb new unit tests for the new getters/remove methods. general test case improvement (+47 squashed commit)
Squashed commit:

[da8f778e1] fixed issue with buff instancing saving previous cache information

[50e381135] fixing clear to use new private method

[523196876] added new removal methods, spun boilerplate into private method

[ab2fe7a1b] misc

[4a2c2e887] added get_by_cachevalue, for arbitrary cache value comparison

[4e9199fd9] fix expired property

[cc6411eb2] added option to trigger buffs at the same time you check them

[eb112c12f] added get_by_source method to slice cache by source

[5d880d4f9] added "clear" method to remove all buffs

[49997e724] extended "expired" logic to include buffs with no stacks

[7ef357ade] docstring fixes

[306801d02] Added a little docstring bit for disconnecting autopause from signals and moving it to object puppet hooks

[7a120a2f8] fixed the sample buff for poison to demonstrate how playtime buff pause hooks happen (as at_pause fires after the object is moved to None, you can't message the None-room's contents)

[ada4457d1] made the pause variable assignments more verbose

[d64369908] nomenclature change: uid -> buffkey

[e5dd9a352] fixing places where the handler property name change from "db" to "buffcache" broke stuff on the buff class

[553d12b4b] lots of docstring updates and comments; also made conditional hook work with ticking

[b8d79583f] ran black autoformatter

[d5550f331] changing all the default dictionary assignments to None instead

[88c9a4889] sample buff of stat customizer

[72323a19e] added sample buff which allows stat customization, and unit test to cover it

[02453a79f] adding procgen ids for non-unique, non-refresh (ie, each time the buff is applied, it is as a full instance with a separate key)

[c72e5f2d7] added to_filter argument to slice methods, letting you slice an arbitrary dictionary as well as the main cache

[d8996f3a3] stress test for batch read/trigger

[f06f74463] last bit of cacheing, docstring update

[538afc676] fixing tests to not use __getattr__ on the handler

[905cfd6bb] removing __getattr__

[e588742ea] hooking caching into the buff instancing process

[7555ebae9] added method to instance entire cache, refactored dict-comprehension properties to use new method. should be more efficient?

[45f15fc46] fix to reapply logic; stacking and old cache

[d2460c9e6] docstring support for to_cache arg

[62f3f27d8] added to_cache arg for buff application, allows you to store arbitrary info in the buff cache

[6c2046497] general cleanup

[357945459] forgot to finish the mod for the "sated" moodlet sample buff

[b4b3ac48a] clamp minimum multiplier to 0

[da3e67fa6] allowing multiple stacks, cruft cleanup

[62110fd00] sample buffs

[77f6a56e8] fixing tests to work with new naming

[a9202f67c] misc cleanup

[887d9734b] allow infinite stacks

[887fb4b29] change duration setter

[da4277e2c] add at_pre_check

[6009469bc] fix pickling errors with handler properties

[89a2d02ee] allo ticking buffs to autopause

[a77bded93] fix flavor return

[60fcaa36f] swapping on_ to at_ for hooks to match evennia style

[130e600ea] import cleanup
2022-07-24 03:33:06 -07:00
.github Fix and clean up docker build doc 2022-02-05 18:51:23 +01:00
bin need to add twistd location to environment 2021-04-06 21:04:15 +02:00
docs Add vale linter config for docs 2022-07-05 19:24:53 +02:00
evennia new unit tests for the new getters/remove methods. general test case improvement (+47 squashed commit) 2022-07-24 03:33:06 -07:00
.gitignore Add TagProperty, AliasProperty, PermissionProperty. Default autocreate=True for AttributeProperty. 2022-04-09 15:56:24 +02:00
CHANGELOG.md Updated CHANGELOG 2022-06-04 13:24:06 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2017-10-01 18:44:00 +02:00
codeql-analysis.yml Create codeql-analysis.yml 2021-05-15 09:30:00 +02:00
CODING_STYLE.md fix google style URL on CODING_STYLE.md 2022-06-02 08:30:53 +02:00
CONTRIBUTING.md Grammar changes in docs 2022-02-14 10:25:16 -05:00
Dockerfile Fix and clean up docker build doc 2022-02-05 18:51:23 +01:00
INSTALL.md Cleared out-of-date INSTALL.md file, pointing to online docs 2020-02-06 16:35:58 +01:00
LICENSE.txt Fixed errors in the ExtendedRoom contrib, pertaining to the detail command. Resolves #741. 2015-04-29 16:07:57 +02:00
Makefile Resolve merge conflicts 2020-04-12 12:19:03 +02:00
pyproject.toml Ran black on sources, add black config 2020-07-27 21:09:13 +02:00
README.md Another update to the readme 2022-06-12 01:05:00 +02:00
requirements.txt Limit jinja2 version for sphinx error 2022-06-22 08:25:17 +02:00
requirements_extra.txt Up min versions to py3.9, Django 4 2022-02-04 23:24:48 +01:00
setup.py Change most http links to https 2021-06-23 21:17:30 +12:00

Evennia MUD/MU* Creation System evennia logo

Build Status Coverage Status

Evennia is a modern library for creating online multiplayer text games (MUD, MUSH, MUX, MUCK, MOO etc) in pure Python. It allows game creators to design and flesh out their ideas with great freedom. Evennia is made available under the very friendly BSD license.

http://www.evennia.com is the main hub tracking all things Evennia.

Features and Philosophy

The Evennia library aims for you to have a fully functioning, if empty, online game up and running in minutes. Rather than imposing a particular style, genre or game mechanic we offer a framework on which you build the game of your dreams. The idea is to allow you to concentrate on designing the bits that make your game unique.

Coding in Evennia is done using normal Python modules imported into the server at runtime. All library code is heavily documented and Evennia comes with extensive manuals and tutorials. You use Python classes to represent your objects, scripts, players, in-game channels and so on. The database layer is abstracted away. This makes it possible to create the game using modern code practices using the full flexibility and power of Python.

screenshot

Evennia offers extensive connectivity options, including traditional telnet connections. Evennia is also its own web server: A default website as well as a browser-based mud client (html5 websockets, with fallback to AJAX) runs by default. Due to our Django and Twisted foundations, web integration is easy since the same code powering the game is also used to run its web presence.

Whereas Evennia is intentionally empty of game content from the onset, we do offer some defaults you can build from. The code base comes with basic classes for objects, exits, rooms and characters. There are systems for handling puppeting, scripting, timers, dynamic games states etc. A default command set (completely replaceable with your own syntax and functionality) handles administration, building, chat channels, poses and so on. The default setup is enough to run a 'Talker' or some other social-style game out of the box. We also have a contributions folder with optional plugins and examples of more game-specific systems.

Current Status

The codebase is currently in Beta. While development continues, Evennia is already stable enough to be suitable for prototyping and development of your own games.

Where to go from here

If this piqued your interest, there is a lengthier introduction to read.

To learn how to get your hands on the code base, the Getting started page is the way to go. Otherwise you could browse the Documentation or why not come join the Evennia Community forum or join us in our development chat. Welcome!