forked from vantablack/vantaMOO
Compare commits
2 commits
67c6d92616
...
36483a0528
Author | SHA1 | Date | |
---|---|---|---|
lunacb | 36483a0528 | ||
lunacb | 7c017dbb29 |
|
@ -16,6 +16,13 @@ own cmdsets by inheriting from them or directly from `evennia.CmdSet`.
|
||||||
|
|
||||||
from evennia import default_cmds
|
from evennia import default_cmds
|
||||||
|
|
||||||
|
from evennia.contrib.base_systems.building_menu import GenericBuildingCmd
|
||||||
|
from evennia.contrib.game_systems import mail
|
||||||
|
from evennia.contrib.game_systems.multidescer import CmdMultiDesc
|
||||||
|
from evennia.contrib.grid.ingame_map_display import MapDisplayCmdSet
|
||||||
|
from evennia.contrib.grid import simpledoor
|
||||||
|
from evennia.contrib.rpg.rpsystem import RPSystemCmdSet
|
||||||
|
|
||||||
|
|
||||||
class CharacterCmdSet(default_cmds.CharacterCmdSet):
|
class CharacterCmdSet(default_cmds.CharacterCmdSet):
|
||||||
"""
|
"""
|
||||||
|
@ -35,6 +42,24 @@ class CharacterCmdSet(default_cmds.CharacterCmdSet):
|
||||||
# any commands you add below will overload the default ones.
|
# any commands you add below will overload the default ones.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# building_menu
|
||||||
|
self.add(GenericBuildingCmd())
|
||||||
|
|
||||||
|
# mail
|
||||||
|
self.add(mail.CmdMail())
|
||||||
|
self.add(mail.CmdMailCharacter())
|
||||||
|
|
||||||
|
# multidescer
|
||||||
|
self.add(CmdMultiDesc())
|
||||||
|
|
||||||
|
# ingame_map_display
|
||||||
|
self.add(MapDisplayCmdSet)
|
||||||
|
|
||||||
|
# simpledoor
|
||||||
|
self.add(simpledoor.SimpleDoorCmdSet)
|
||||||
|
|
||||||
|
# rpsystem
|
||||||
|
self.add(RPSystemCmdSet())
|
||||||
|
|
||||||
class AccountCmdSet(default_cmds.AccountCmdSet):
|
class AccountCmdSet(default_cmds.AccountCmdSet):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -27,6 +27,8 @@ put secret game- or server-specific settings in secret_settings.py.
|
||||||
# Use the defaults from Evennia unless explicitly overridden
|
# Use the defaults from Evennia unless explicitly overridden
|
||||||
from evennia.settings_default import *
|
from evennia.settings_default import *
|
||||||
|
|
||||||
|
from evennia.contrib.base_systems import color_markups
|
||||||
|
|
||||||
######################################################################
|
######################################################################
|
||||||
# Evennia base server config
|
# Evennia base server config
|
||||||
######################################################################
|
######################################################################
|
||||||
|
@ -79,3 +81,17 @@ try:
|
||||||
from server.conf.secret_settings import *
|
from server.conf.secret_settings import *
|
||||||
except ImportError:
|
except ImportError:
|
||||||
print("secret_settings.py file not found or failed to import.")
|
print("secret_settings.py file not found or failed to import.")
|
||||||
|
|
||||||
|
# color_markups
|
||||||
|
COLOR_ANSI_EXTRA_MAP = color_markups.CURLY_COLOR_ANSI_EXTRA_MAP + \
|
||||||
|
color_markups.MUX_COLOR_ANSI_EXTRA_MAP
|
||||||
|
COLOR_XTERM256_EXTRA_FG = color_markups.CURLY_COLOR_XTERM256_EXTRA_FG + \
|
||||||
|
color_markups.MUX_COLOR_XTERM256_EXTRA_FG
|
||||||
|
COLOR_XTERM256_EXTRA_BG = color_markups.CURLY_COLOR_XTERM256_EXTRA_BG + \
|
||||||
|
color_markups.MUX_COLOR_XTERM256_EXTRA_BG
|
||||||
|
COLOR_XTERM256_EXTRA_GFG = color_markups.CURLY_COLOR_XTERM256_EXTRA_GFG + \
|
||||||
|
color_markups.MUX_COLOR_XTERM256_EXTRA_GFG
|
||||||
|
COLOR_XTERM256_EXTRA_GBG = color_markups.CURLY_COLOR_XTERM256_EXTRA_GBG + \
|
||||||
|
color_markups.MUX_COLOR_XTERM256_EXTRA_GBG
|
||||||
|
COLOR_ANSI_XTERM256_BRIGHT_BG_EXTRA_MAP = color_markups.CURLY_COLOR_ANSI_XTERM256_BRIGHT_BG_EXTRA_MAP + \
|
||||||
|
color_markups.MUX_COLOR_ANSI_XTERM256_BRIGHT_BG_EXTRA_MAP
|
||||||
|
|
|
@ -7,30 +7,8 @@ is setup to be the "default" character type created by the default
|
||||||
creation commands.
|
creation commands.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from evennia.objects.objects import DefaultCharacter
|
from evennia.contrib.rpg.rpsystem import ContribRPCharacter
|
||||||
|
|
||||||
from .objects import ObjectParent
|
|
||||||
|
|
||||||
|
|
||||||
class Character(ObjectParent, DefaultCharacter):
|
|
||||||
"""
|
|
||||||
The Character defaults to reimplementing some of base Object's hook methods with the
|
|
||||||
following functionality:
|
|
||||||
|
|
||||||
at_basetype_setup - always assigns the DefaultCmdSet to this object type
|
|
||||||
(important!)sets locks so character cannot be picked up
|
|
||||||
and its commands only be called by itself, not anyone else.
|
|
||||||
(to change things, use at_object_creation() instead).
|
|
||||||
at_post_move(source_location) - Launches the "look" command after every move.
|
|
||||||
at_post_unpuppet(account) - when Account disconnects from the Character, we
|
|
||||||
store the current location in the pre_logout_location Attribute and
|
|
||||||
move it to a None-location so the "unpuppeted" character
|
|
||||||
object does not need to stay on grid. Echoes "Account has disconnected"
|
|
||||||
to the room.
|
|
||||||
at_pre_puppet - Just before Account re-connects, retrieves the character's
|
|
||||||
pre_logout_location Attribute and move it back on the grid.
|
|
||||||
at_post_puppet - Echoes "AccountName has entered the game" to the room.
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
# rpsystem
|
||||||
|
class Character(ContribRPCharacter):
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -10,7 +10,7 @@ the other types, you can do so by adding this as a multiple
|
||||||
inheritance.
|
inheritance.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from evennia.objects.objects import DefaultObject
|
from evennia.contrib.rpg.rpsystem import ContribRPObject
|
||||||
|
|
||||||
|
|
||||||
class ObjectParent:
|
class ObjectParent:
|
||||||
|
@ -24,151 +24,6 @@ class ObjectParent:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# rpsystem
|
||||||
class Object(ObjectParent, DefaultObject):
|
class Object(ContribRPObject):
|
||||||
"""
|
|
||||||
This is the root typeclass object, implementing an in-game Evennia
|
|
||||||
game object, such as having a location, being able to be
|
|
||||||
manipulated or looked at, etc. If you create a new typeclass, it
|
|
||||||
must always inherit from this object (or any of the other objects
|
|
||||||
in this file, since they all actually inherit from BaseObject, as
|
|
||||||
seen in src.object.objects).
|
|
||||||
|
|
||||||
The BaseObject class implements several hooks tying into the game
|
|
||||||
engine. By re-implementing these hooks you can control the
|
|
||||||
system. You should never need to re-implement special Python
|
|
||||||
methods, such as __init__ and especially never __getattribute__ and
|
|
||||||
__setattr__ since these are used heavily by the typeclass system
|
|
||||||
of Evennia and messing with them might well break things for you.
|
|
||||||
|
|
||||||
|
|
||||||
* Base properties defined/available on all Objects
|
|
||||||
|
|
||||||
key (string) - name of object
|
|
||||||
name (string)- same as key
|
|
||||||
dbref (int, read-only) - unique #id-number. Also "id" can be used.
|
|
||||||
date_created (string) - time stamp of object creation
|
|
||||||
|
|
||||||
account (Account) - controlling account (if any, only set together with
|
|
||||||
sessid below)
|
|
||||||
sessid (int, read-only) - session id (if any, only set together with
|
|
||||||
account above). Use `sessions` handler to get the
|
|
||||||
Sessions directly.
|
|
||||||
location (Object) - current location. Is None if this is a room
|
|
||||||
home (Object) - safety start-location
|
|
||||||
has_account (bool, read-only)- will only return *connected* accounts
|
|
||||||
contents (list of Objects, read-only) - returns all objects inside this
|
|
||||||
object (including exits)
|
|
||||||
exits (list of Objects, read-only) - returns all exits from this
|
|
||||||
object, if any
|
|
||||||
destination (Object) - only set if this object is an exit.
|
|
||||||
is_superuser (bool, read-only) - True/False if this user is a superuser
|
|
||||||
|
|
||||||
* Handlers available
|
|
||||||
|
|
||||||
aliases - alias-handler: use aliases.add/remove/get() to use.
|
|
||||||
permissions - permission-handler: use permissions.add/remove() to
|
|
||||||
add/remove new perms.
|
|
||||||
locks - lock-handler: use locks.add() to add new lock strings
|
|
||||||
scripts - script-handler. Add new scripts to object with scripts.add()
|
|
||||||
cmdset - cmdset-handler. Use cmdset.add() to add new cmdsets to object
|
|
||||||
nicks - nick-handler. New nicks with nicks.add().
|
|
||||||
sessions - sessions-handler. Get Sessions connected to this
|
|
||||||
object with sessions.get()
|
|
||||||
attributes - attribute-handler. Use attributes.add/remove/get.
|
|
||||||
db - attribute-handler: Shortcut for attribute-handler. Store/retrieve
|
|
||||||
database attributes using self.db.myattr=val, val=self.db.myattr
|
|
||||||
ndb - non-persistent attribute handler: same as db but does not create
|
|
||||||
a database entry when storing data
|
|
||||||
|
|
||||||
* Helper methods (see src.objects.objects.py for full headers)
|
|
||||||
|
|
||||||
search(ostring, global_search=False, attribute_name=None,
|
|
||||||
use_nicks=False, location=None, ignore_errors=False, account=False)
|
|
||||||
execute_cmd(raw_string)
|
|
||||||
msg(text=None, **kwargs)
|
|
||||||
msg_contents(message, exclude=None, from_obj=None, **kwargs)
|
|
||||||
move_to(destination, quiet=False, emit_to_obj=None, use_destination=True)
|
|
||||||
copy(new_key=None)
|
|
||||||
delete()
|
|
||||||
is_typeclass(typeclass, exact=False)
|
|
||||||
swap_typeclass(new_typeclass, clean_attributes=False, no_default=True)
|
|
||||||
access(accessing_obj, access_type='read', default=False)
|
|
||||||
check_permstring(permstring)
|
|
||||||
|
|
||||||
* Hooks (these are class methods, so args should start with self):
|
|
||||||
|
|
||||||
basetype_setup() - only called once, used for behind-the-scenes
|
|
||||||
setup. Normally not modified.
|
|
||||||
basetype_posthook_setup() - customization in basetype, after the object
|
|
||||||
has been created; Normally not modified.
|
|
||||||
|
|
||||||
at_object_creation() - only called once, when object is first created.
|
|
||||||
Object customizations go here.
|
|
||||||
at_object_delete() - called just before deleting an object. If returning
|
|
||||||
False, deletion is aborted. Note that all objects
|
|
||||||
inside a deleted object are automatically moved
|
|
||||||
to their <home>, they don't need to be removed here.
|
|
||||||
|
|
||||||
at_init() - called whenever typeclass is cached from memory,
|
|
||||||
at least once every server restart/reload
|
|
||||||
at_cmdset_get(**kwargs) - this is called just before the command handler
|
|
||||||
requests a cmdset from this object. The kwargs are
|
|
||||||
not normally used unless the cmdset is created
|
|
||||||
dynamically (see e.g. Exits).
|
|
||||||
at_pre_puppet(account)- (account-controlled objects only) called just
|
|
||||||
before puppeting
|
|
||||||
at_post_puppet() - (account-controlled objects only) called just
|
|
||||||
after completing connection account<->object
|
|
||||||
at_pre_unpuppet() - (account-controlled objects only) called just
|
|
||||||
before un-puppeting
|
|
||||||
at_post_unpuppet(account) - (account-controlled objects only) called just
|
|
||||||
after disconnecting account<->object link
|
|
||||||
at_server_reload() - called before server is reloaded
|
|
||||||
at_server_shutdown() - called just before server is fully shut down
|
|
||||||
|
|
||||||
at_access(result, accessing_obj, access_type) - called with the result
|
|
||||||
of a lock access check on this object. Return value
|
|
||||||
does not affect check result.
|
|
||||||
|
|
||||||
at_pre_move(destination) - called just before moving object
|
|
||||||
to the destination. If returns False, move is cancelled.
|
|
||||||
announce_move_from(destination) - called in old location, just
|
|
||||||
before move, if obj.move_to() has quiet=False
|
|
||||||
announce_move_to(source_location) - called in new location, just
|
|
||||||
after move, if obj.move_to() has quiet=False
|
|
||||||
at_post_move(source_location) - always called after a move has
|
|
||||||
been successfully performed.
|
|
||||||
at_object_leave(obj, target_location) - called when an object leaves
|
|
||||||
this object in any fashion
|
|
||||||
at_object_receive(obj, source_location) - called when this object receives
|
|
||||||
another object
|
|
||||||
|
|
||||||
at_traverse(traversing_object, source_loc) - (exit-objects only)
|
|
||||||
handles all moving across the exit, including
|
|
||||||
calling the other exit hooks. Use super() to retain
|
|
||||||
the default functionality.
|
|
||||||
at_post_traverse(traversing_object, source_location) - (exit-objects only)
|
|
||||||
called just after a traversal has happened.
|
|
||||||
at_failed_traverse(traversing_object) - (exit-objects only) called if
|
|
||||||
traversal fails and property err_traverse is not defined.
|
|
||||||
|
|
||||||
at_msg_receive(self, msg, from_obj=None, **kwargs) - called when a message
|
|
||||||
(via self.msg()) is sent to this obj.
|
|
||||||
If returns false, aborts send.
|
|
||||||
at_msg_send(self, msg, to_obj=None, **kwargs) - called when this objects
|
|
||||||
sends a message to someone via self.msg().
|
|
||||||
|
|
||||||
return_appearance(looker) - describes this object. Used by "look"
|
|
||||||
command by default
|
|
||||||
at_desc(looker=None) - called by 'look' whenever the
|
|
||||||
appearance is requested.
|
|
||||||
at_get(getter) - called after object has been picked up.
|
|
||||||
Does not stop pickup.
|
|
||||||
at_drop(dropper) - called when this object has been dropped.
|
|
||||||
at_say(speaker, message) - by default, called if an object inside this
|
|
||||||
object speaks
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -4,12 +4,8 @@ Room
|
||||||
Rooms are simple containers that has no location of their own.
|
Rooms are simple containers that has no location of their own.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
from evennia.contrib.rpg.rpsystem import ContribRPRoom
|
||||||
|
|
||||||
from evennia.objects.objects import DefaultRoom
|
# rpsystem
|
||||||
|
class Room(ContribRPRoom):
|
||||||
from .objects import ObjectParent
|
|
||||||
|
|
||||||
|
|
||||||
class Room(ObjectParent, DefaultRoom):
|
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
"""
|
"""
|
||||||
Scripts
|
Scripts
|
||||||
|
|
||||||
Scripts are powerful jacks-of-all-trades. They have no in-game
|
|
||||||
existence and can be used to represent persistent game systems in some
|
|
||||||
"""
|
|
||||||
Scripts
|
|
||||||
|
|
||||||
Scripts are powerful jacks-of-all-trades. They have no in-game
|
Scripts are powerful jacks-of-all-trades. They have no in-game
|
||||||
existence and can be used to represent persistent game systems in some
|
existence and can be used to represent persistent game systems in some
|
||||||
circumstances. Scripts can also have a time component that allows them
|
circumstances. Scripts can also have a time component that allows them
|
||||||
|
@ -18,7 +13,6 @@ just overloads its hooks to have it perform its function.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from evennia.scripts.scripts import DefaultScript
|
from evennia.scripts.scripts import DefaultScript
|
||||||
import random
|
|
||||||
|
|
||||||
|
|
||||||
class Script(DefaultScript):
|
class Script(DefaultScript):
|
||||||
|
@ -96,19 +90,3 @@ class Script(DefaultScript):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class Test(Script):
|
|
||||||
"""
|
|
||||||
Just a testing script. For testing.
|
|
||||||
"""
|
|
||||||
def at_script_creation(self):
|
|
||||||
self.key = "test_script"
|
|
||||||
self.desc = "Testing script"
|
|
||||||
self.interval = 60
|
|
||||||
|
|
||||||
def at_repeat(self):
|
|
||||||
rand = random.random()
|
|
||||||
msg = "Testing: " + str(rand)
|
|
||||||
|
|
||||||
self.obj.msg_contents(msg)
|
|
||||||
|
|
||||||
|
|
|
@ -1,92 +0,0 @@
|
||||||
"""
|
|
||||||
Scripts
|
|
||||||
|
|
||||||
Scripts are powerful jacks-of-all-trades. They have no in-game
|
|
||||||
existence and can be used to represent persistent game systems in some
|
|
||||||
circumstances. Scripts can also have a time component that allows them
|
|
||||||
to "fire" regularly or a limited number of times.
|
|
||||||
|
|
||||||
There is generally no "tree" of Scripts inheriting from each other.
|
|
||||||
Rather, each script tends to inherit from the base Script class and
|
|
||||||
just overloads its hooks to have it perform its function.
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
from evennia.scripts.scripts import DefaultScript
|
|
||||||
|
|
||||||
|
|
||||||
class Script(DefaultScript):
|
|
||||||
"""
|
|
||||||
A script type is customized by redefining some or all of its hook
|
|
||||||
methods and variables.
|
|
||||||
|
|
||||||
* available properties
|
|
||||||
|
|
||||||
key (string) - name of object
|
|
||||||
name (string)- same as key
|
|
||||||
aliases (list of strings) - aliases to the object. Will be saved
|
|
||||||
to database as AliasDB entries but returned as strings.
|
|
||||||
dbref (int, read-only) - unique #id-number. Also "id" can be used.
|
|
||||||
date_created (string) - time stamp of object creation
|
|
||||||
permissions (list of strings) - list of permission strings
|
|
||||||
|
|
||||||
desc (string) - optional description of script, shown in listings
|
|
||||||
obj (Object) - optional object that this script is connected to
|
|
||||||
and acts on (set automatically by obj.scripts.add())
|
|
||||||
interval (int) - how often script should run, in seconds. <0 turns
|
|
||||||
off ticker
|
|
||||||
start_delay (bool) - if the script should start repeating right away or
|
|
||||||
wait self.interval seconds
|
|
||||||
repeats (int) - how many times the script should repeat before
|
|
||||||
stopping. 0 means infinite repeats
|
|
||||||
persistent (bool) - if script should survive a server shutdown or not
|
|
||||||
is_active (bool) - if script is currently running
|
|
||||||
|
|
||||||
* Handlers
|
|
||||||
|
|
||||||
locks - lock-handler: use locks.add() to add new lock strings
|
|
||||||
db - attribute-handler: store/retrieve database attributes on this
|
|
||||||
self.db.myattr=val, val=self.db.myattr
|
|
||||||
ndb - non-persistent attribute handler: same as db but does not
|
|
||||||
create a database entry when storing data
|
|
||||||
|
|
||||||
* Helper methods
|
|
||||||
|
|
||||||
start() - start script (this usually happens automatically at creation
|
|
||||||
and obj.script.add() etc)
|
|
||||||
stop() - stop script, and delete it
|
|
||||||
pause() - put the script on hold, until unpause() is called. If script
|
|
||||||
is persistent, the pause state will survive a shutdown.
|
|
||||||
unpause() - restart a previously paused script. The script will continue
|
|
||||||
from the paused timer (but at_start() will be called).
|
|
||||||
time_until_next_repeat() - if a timed script (interval>0), returns time
|
|
||||||
until next tick
|
|
||||||
|
|
||||||
* Hook methods (should also include self as the first argument):
|
|
||||||
|
|
||||||
at_script_creation() - called only once, when an object of this
|
|
||||||
class is first created.
|
|
||||||
is_valid() - is called to check if the script is valid to be running
|
|
||||||
at the current time. If is_valid() returns False, the running
|
|
||||||
script is stopped and removed from the game. You can use this
|
|
||||||
to check state changes (i.e. an script tracking some combat
|
|
||||||
stats at regular intervals is only valid to run while there is
|
|
||||||
actual combat going on).
|
|
||||||
at_start() - Called every time the script is started, which for persistent
|
|
||||||
scripts is at least once every server start. Note that this is
|
|
||||||
unaffected by self.delay_start, which only delays the first
|
|
||||||
call to at_repeat().
|
|
||||||
at_repeat() - Called every self.interval seconds. It will be called
|
|
||||||
immediately upon launch unless self.delay_start is True, which
|
|
||||||
will delay the first call of this method by self.interval
|
|
||||||
seconds. If self.interval==0, this method will never
|
|
||||||
be called.
|
|
||||||
at_stop() - Called as the script object is stopped and is about to be
|
|
||||||
removed from the game, e.g. because is_valid() returned False.
|
|
||||||
at_server_reload() - Called when server reloads. Can be used to
|
|
||||||
save temporary variables you want should survive a reload.
|
|
||||||
at_server_shutdown() - called at a full server shutdown.
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
pass
|
|
Loading…
Reference in a new issue