Package wyvern.lib

Provides most of the top-level game interfaces for programmers.

See:
          Description

Interface Summary
AI Monster AIs control monsters and think for them.
Alert Represents a simple audible alert, such as message-beep when someone has sent you a chat message.
Archetype A list of properties that a game object can inherit from.
Armor Armor - cloaks, boots, body armor, etc.
Attack This interface is shared by things that can be used as attacks.
Bag Main container interface in the game, for bags, quivers, scabbards, reagent pouches, backpacks, chests, and so on.
Broadcaster Interface shared by objects that can broadcast a message to everyone in the local area.
Camera Cameras provide different views of game maps to the client.
Command This is how you implement new game commands, or provide new implementation for existing commands.
Commandable A Commandable is an object that can receive and process events.
CommandEvent Every command is turned into a CommandEvent that goes into some Commandable's event queue, to be executed later by the game scheduler.
CommandList This object stores Commands.
CommandList.CommandFilter This interface is implemented by classes that want a chance to handle *every* command that comes through the queue.
Container Superinterface for things that can hold GameObjects.
Direction.Dirs You can implement this interface to get syntactic access to the Direction constants (NORTH, SOUTH, etc.)
EventQueue Holds every CommandEvent for a particular Commandable (such as a Monster, Player or Spell) waiting to be executed by the game scheduler.
GameMap A GameMap represents an area that players can visit; a game server will have thousands of individual maps.
GameMap.UnloadMapConstants Codes returned by the GameMap.dismantle() method, which attempts to unload a map from memory.
GameMapLoader Interface for classes that can create or load game maps.
GameObject This is the interface for the highest-level object in the game heirarchy.
Hookable Declares that an object has events and/or methods that can be "hooked" by other objects.
HookCallback Allows you to hook a Hookable event.
Inventory Holds items being carried by a Monster or Player.
Lair A programmable monster generator.
Message Interface for messages in the Wyvern publish/subscribe system.
MethodHookable Objects can use this interface to provide "method-hooks" for themselves.
MethodHookCallback Used to notify objects registered on a "method hook".
Monster Superinterface of all Monster-like objects, such as (of course) monsters, but also NPCs and Players.
Music Represents a background music track to play on the client.
Player Represents a single character logged in to the game.
Predicate A common interface for classes that perform an arbitrary test on an object and return true if it passes the test.
PropertyList Every GameObject and GameMap has a PropertyList that holds its persistent data, in the form of properties.
ProximityCallback You can register for a "proximity-hook", which allows you to be notified when some event takes place within a certain distance from a target object.
RoomHookCallback This interface is used to call back an object that has registered a room-hook with a map.
Sound Represents a physical sound.
SpellList Manages the list of spells a player or monster knows.
Subscriber Subscriber interface for the Wyvern Publish/Subscribe system.
Timed Callback method when a Timer expires.
Timer A Timer is a token that's returned when you call setTimer(), usually using the Kernel class.
Trap Common interface for Traps.
Visitor Allows you to visit an object without knowing the underlying data structure details.
Weapon Wieldable weapon interface.
WizTypes Constants for World.isAtLeast() - you can implement this interface to call World.isAtLeast(SENIOR), etc.
 

Class Summary
Dimension Encapsulates a width and height.
Direction Encapsulates the cardinal game directions (n, s, e, w, ne, nw ,se, sw).
ImageCache Server-side cache for mapping tile numbers to images.
Kernel Has the most commonly used game engine functions in one convenient location.
Location Encapsulates a location: a map and an (x, y) position in the map.
Point Represents an (x, y) point in a map.
PointCache Maintains a cache of Point objects for use in looking up things in maps.
Range Encapsulates a Range [MIN..MAX] value, and can generate random numbers.
Rectangle Represents a rectangle in a map.
Resource A Resource is an object that encapsulates a path to a Wyvern file resource, such as a map, archetype, code, artwork, or music file.
Search Contains a whole bunch of common ways to look for objects.
ServerURL Specifies a game server to teleport to, optionally including the desired map and location in the destination server.
 

Exception Summary
Bag.FullBagException This exception is thrown when someone tries to put something in a bag that can't hold any more items.
Bag.InvalidItemException Thrown when someone tries to put an item in the bag that isn't appropriate for this bag, as defined by the bag's filter() method.
 

Package wyvern.lib Description

Provides most of the top-level game interfaces for programmers.

Interfaces

Most of the important Wyvern objects are split into two pieces: the Interface, which you use to manipulate the object, and the implementation class, which is typically in the kernel. Some interfaces have more than one implementation. You usually only need to refer to an object by its interface to make use of it.

For example, a common object type is a Bag, one of the interfaces from this package. Lots of different game classes implement the Bag interface - bags, of course, but also chests, pouches, the Monster/Player inventory classes, and even the Trenchcoat, a type of armor that you can put things in. You can simply treat all of these objects as Bags.

Having the interfaces in wyvern.lib makes the import list for most game classes very short - in JPython, you just need to:

from wyvern.lib import *
Or in Java:
import wyvern.lib.*;
And you'll be able to access most of the game functionality in your Wizard code.

Utility Classes

Some very commonly-used utility classes are also found in this package, including the Range class (for generating random numbers and parsing ranges) and the Direction class, which specifies some useful constants and utilities for dealing with the eight cardinal directions.

One particularly useful class is wyvern.lib.Kernel, which gives you access to a number of useful system functions. These functions can also be accessed by calling the kernel implementation class directly, but using the Kernel wrapper class simplifies your code.

Sub-Packages

The wyvern.lib package has a number of sub-packages. Each of them is a related group of classes useful for constucting game areas. Generally speaking, wyvern.lib classes are implementations of user-visible objects like weapons, armor, magic items, spells and so on. The wyvern.kernel classes are usually implementations of low-level game data structures, and also some of the more complex game objects like monsters and players.

Other Packages

Not all the system interfaces and utility classes are found in wyvern.lib. In particular, classes that need to be shared by the server, game client(s) and the map editor are found in the wyvern.common.* packages.