- world/rebuild_world.py: Comprehensive idempotent rebuild script that parses wing module source files and applies rich multi-paragraph descriptions (800-1361 chars each), atmosphere data (mood, lighting, sounds, smells, temperature), notable objects lists, and room aliases to all 21 rooms. Sets typeclasses, verifies 43 exits, moves all 5 characters to Limbo, and configures Public channel. - commands/command.py: Added 5 new custom commands: @status - Agent status (location, wing, online users, uptime) @map - ASCII map of current wing @academy - Overview of all 4 wings with room counts smell/sniff - Sensory command using room atmosphere data listen/hear - Sensory command using room atmosphere data - commands/default_cmdsets.py: Registered all new commands in the CharacterCmdSet - README.md: Complete rewrite with project description, connection info, ASCII room maps, agent accounts, rebuild instructions, tech stack, and future plans (Gitea bridge, crisis training, Nexus integration)
99 lines
2.6 KiB
Python
99 lines
2.6 KiB
Python
"""
|
|
Command sets
|
|
|
|
All commands in the game must be grouped in a cmdset. A given command
|
|
can be part of any number of cmdsets and cmdsets can be added/removed
|
|
and merged onto entities at runtime.
|
|
|
|
To create new commands to populate the cmdset, see
|
|
`commands/command.py`.
|
|
|
|
This module wraps the default command sets of Evennia; overloads them
|
|
to add/remove commands from the default lineup. You can create your
|
|
own cmdsets by inheriting from them or directly from `evennia.CmdSet`.
|
|
|
|
"""
|
|
|
|
from evennia import default_cmds
|
|
from commands.command import (
|
|
CmdExamine, CmdRooms,
|
|
CmdStatus, CmdMap, CmdAcademy,
|
|
CmdSmell, CmdListen,
|
|
)
|
|
|
|
|
|
class CharacterCmdSet(default_cmds.CharacterCmdSet):
|
|
"""
|
|
The `CharacterCmdSet` contains general in-game commands like `look`,
|
|
`get`, etc available on in-game Character objects. It is merged with
|
|
the `AccountCmdSet` when an Account puppets a Character.
|
|
"""
|
|
|
|
key = "DefaultCharacter"
|
|
|
|
def at_cmdset_creation(self):
|
|
"""
|
|
Populates the cmdset
|
|
"""
|
|
super().at_cmdset_creation()
|
|
# First pass commands
|
|
self.add(CmdExamine)
|
|
self.add(CmdRooms)
|
|
# Second pass commands
|
|
self.add(CmdStatus)
|
|
self.add(CmdMap)
|
|
self.add(CmdAcademy)
|
|
self.add(CmdSmell)
|
|
self.add(CmdListen)
|
|
|
|
|
|
class AccountCmdSet(default_cmds.AccountCmdSet):
|
|
"""
|
|
This is the cmdset available to the Account at all times. It is
|
|
combined with the `CharacterCmdSet` when the Account puppets a
|
|
Character. It holds game-account-specific commands, channel
|
|
commands, etc.
|
|
"""
|
|
|
|
key = "DefaultAccount"
|
|
|
|
def at_cmdset_creation(self):
|
|
"""
|
|
Populates the cmdset
|
|
"""
|
|
super().at_cmdset_creation()
|
|
|
|
|
|
class UnloggedinCmdSet(default_cmds.UnloggedinCmdSet):
|
|
"""
|
|
Command set available to the Session before being logged in. This
|
|
holds commands like creating a new account, logging in, etc.
|
|
"""
|
|
|
|
key = "DefaultUnloggedin"
|
|
|
|
def at_cmdset_creation(self):
|
|
"""
|
|
Populates the cmdset
|
|
"""
|
|
super().at_cmdset_creation()
|
|
|
|
|
|
class SessionCmdSet(default_cmds.SessionCmdSet):
|
|
"""
|
|
This cmdset is made available on Session level once logged in. It
|
|
is empty by default.
|
|
"""
|
|
|
|
key = "DefaultSession"
|
|
|
|
def at_cmdset_creation(self):
|
|
"""
|
|
This is the only method defined in a cmdset, called during
|
|
its creation. It should populate the set with command instances.
|
|
|
|
As and example we just add the empty base `Command` object.
|
|
It prints some info.
|
|
"""
|
|
super().at_cmdset_creation()
|