WelcomeWhat's NewsInform GuideDownloadsLinksWebMaster@OnyxRing.com

This site
pageviews since

Today's date:


What IS the ORLibrary, what is it NOT, and how do I get it?

The ORLibrary is a personal library and framework that builds upon and extends Inform's standard library. It's design was based upon principals discussed in the article "Code Reuse: Developing a Personal Library."

A common misconception is that the ORLibrary is a replacement for Inform's standard library. This is not, nor has this ever been the case. The ORLibrary simply builds upon and extends the standard library. If you are looking for an actual replacement, consider "Platypus."

The easiest way to get the library is to download ORLib_complete.zip. This file is a snapshot of the library as of the date indicated in the description. Modules that have been updated since the last snapshot are listed in the "Changed or new since the last release" section below. Alternatively, for those wanting just the framework to begin building their own entries, or to pick and choose the individual entries below, the file ORLib_base.zip has been provided as a starting point.

In addition, for those just interested in using an entry and nothing more, this page from the ORLibrary Manual explains how to use the library entries without the framework.

Where can I read about how to use the ORLibrary modules?

The ORLibrary Documentation section, has just about every detail that you ever wanted to know about the ORLibrary. Additionally, there is a quick start "How Do I..." section which answers questions commonly asked in RAIF posts from an ORLibrary perspective.

So... Is it perfect?

As is the case with any large coding project, there are bound to be bugs. Those of you who like to root for the underdogs will be saddened to know that even the cleverest of bugs will eventually be tracked down and squashed with the aid of the ORLibrary users. The ORBug Memorial has been erected for those who wish to pay homage to the dead bugs that have been victim of the Inform coder's perseverance.

Additionally, if you too would like to report a bug in the code, or simply express a comment, feel free to access the e-mail button to the left and send a comment.

What platforms do the modules target?

Although the ORLibrary was originally targeted for the Z-Machine it has now expanded into the GLULX arena too. The modules below are marked with platform support in brackets. For instance [Z, GLULX] indicates a module that supports both the Z-Code platform and the GLULX platform. The [Z] or [GLULX] indicators are for modules that are only targeted for the single platform (generally because it isn't useful on the other platform).

P R E P A C K A G E D   F I L E S

I N D I V I D U A L   F I L E S

Changed or new since the last release (2004.06.08):

ordynastring.h2005.01.08 ORDynaString [Z, GLULX]
ORDynaString is a quick class to facilitate creation and printing of dynamic text.

orknowledgetopic.h2006.01.16 ORKnowledgeTopic [Z, GLULX]
This class provides the basis for ASK/TELL Topic-based conversations
including learable conversations as well as scripted conversations, and
NPC initiatable conversations that do not repeat.

ornpcverb.h2007.08.03 ORNPCVerb [Z, GLULX]
ORNPCVerb enables NPCs to act and react in much the same way as the PC.
Much of this module is a replacment for many library verbs.

Unchanged since the last release (2004.06.08):

oraction.h2004.06.08 ORAction [Z, GLULX]
A base class to represent actions and detect whether or not they are available.

oractionmenu.h2004.04.28 ORActionMenu
Adds the ability to list possible player actions in a menu. Although reminiscent of
the CYOA format (it can certainly be leveraged to make stories of that type), this is
actually an alternate front end to the parser (as opposed to the traditional
keyboard input prompt).

oractionqueue.h2004.03.05 ORActionQueue [Z, GLULX]
Gives the player a queue of actions that will be executed sequentially without
pause (unless interupted, or one of the next action becomes impossible).

oradjective.h2004.02.07 ORAdjective [Z, Glulx]
Implementation of Adjectives.

orbanner.h2004.02.07 ORBanner [Z, GLULX]
Extends the standard library's banner routine, adding a userdefined value to append
to the bottom of the output and ORLib versioning too.

orbetterchoice.h2004.02.07 ORBetterChoice [Z, GLULX]
Give the parser better decision making skills when considering objects.

orbracketparsermsgs.h2004.02.10 ORBracketParserMsgs [Z, GLULX]
Add brackets, or other wrapping characters to parser generated messaages.

orcantgoodd.h2004.02.07 ORCantGoOdd [Z, GLUILX]
A modification to the library's cant_go behavior to distinguish between "normal"
directions and "odd" directions (such as up, down, in, and out).

orcenter.h2004.02.12 ORCenter [Z, GLULX]
Centers text (with wordwrap)

orconversemenu.h2004.04.28 ORConverseMenu [Z, Glulx]
A conversation menu which sits on top of the Ask/Tell system.

ordispensor.h2004.02.07 ORDispensor [Z, GLULX]
An object which dispenses a seemingly endless supply of other objects, like a pot
of gold.

ordistinctmeself.h2004.02.07 ORDistinctMeSelf [Z, GLULX]
Makes the subtle distinction between 'self' and 'me', having them
equate to 'actor' and 'player' repectively.

ordistinctread.h2004.02.07 ORDistinctRead [Z, GLULX]
Generally, the commands Read and Examine are treated the same and are mapped to the
same verb which simply displays the description. This routine adds a behavior to
makes a distinction between reading and just looking at an object.

ordoor.h2004.02.07 ORDoor [Z, GLULX]
The ORDoor class represents a simple door, but utilizes generic code for the door_to,
door_dir properties so that objects derived from ORDoor class need not define these

Additionally, this module will probe the world map for directions that lead to
ORDoor objects and attempt to fill in the found_in property. This effectively
reduces door creation to:

ORDoor RedDoor "red door"
with name 'door' 'red';

...assuming that two rooms point to the RedDoor object.

ordynamap.h2004.02.07 ORDynaMap [Z, GLULX]
This module dynamically creates the ties between certain rooms based upon movements
by the player, similar to an effect in the "mars" scene of Adam Cadre's "Photopia".

orenglish.h2004.06.08 OREnglish [Z,GLULX]
This is an alternate language definition file based upon the English file
included in the standard library. It supports games written in past
tense as well as present tense, plus 1st, 2nd, and 3rd person. It further
provides the ability to alternate between these two modes, mixing and
matching tense and person. It further enables support for NPCs performing

This is NOT a standard ORLibrary entry, and it cannot be included in the
same fashion as other ORLibrary entries. Instead it must be specified as
an ICL command (i.e. specified on the commandline, in the ICL
file, or in the ICL section of the sourcecode).

orentrypoints.h2004.02.07 OREntryPoints [Z, GLULX]
Definition of common entry points so that multiple definitions can work together.

orexamwithcontents.h2004.02.07 ORExamWithContents [Z, GLULX]
Adds the functionality to the EXAMINE verb to describe the contents of a container.

orexits.h2004.02.07 ORExits [Z, GLULX]
Implements the "Exits" verb functionality.

orfirstthoughts.h2004.02.07 ORFirstThoughts [Z, GLULX]
Often it is desirable, when the player is first examining an object, to describe
first impressions that are not repeated afterwards.
This is a simple base class that allows for a complex first description.

orgibberish.h2004.02.07 ORGibberish [Z, GLULX]
Generate and print a random, human pronouncable word.

orinfglk.h2004.02.07 ORInfGlk [GLULX]
A wrapping of the INFGLK wrapper which eases GlulxInform development.

orinformlibrary.h2004.03.03 ORInformLibrary [Z, GLULX]
A rearangement of the ORInformLibrary object. No actual code has been altered (at
least not in any significant way) but the routines have been broken into smaller
componants which can be overriden by other modules.

orinsultcompli_kt.h2004.02.07 ORInsultCompli_KT [Z, GLULX]
This module creates specialized ORKnowlegeTopics to implement Insults and Compliments

orjustenoughglulx.h2004.02.07 ORJustEnoughGlulx [Z, GLULX]
Roger Firth's Just Enough Glux package wrapped in an easy to use ORLib module!
Used to assist in creating bi-platform code (compilable for both GLULX and
Z-Machine without modification)

orkeyboard.h2004.02.28 ORKeyboard [Z, GLULX]
A rearangement of the Keyboard routine. No actual code has been altered (at
least not in any significant way) but the routine has been broken into smaller
componants which can be overriden by other modules.

orkeyboardprimitive.h2004.02.28 ORKeyboardPrimitive [Z, GLULX]
A modified keyboard primitive that allows other modules to specify routines to replace
the normal keyboard input routines.

orknowledgescript.h2004.02.07 ORKnowledgeScript [Z, GLULX]
This class is derived from ORKnowledgeTopic. It provides the basis for scripted
NPC initiatable conversations that do not repeat, like a lecture.

orknowledgeweb.h2004.04.27 ORKnowledgeWeb [Z, GLULX]
Used to create a network of interrelating knowledge topics

orliquid.h2004.02.07 ORLiquid [Z, GLULX]
Classes for implementing liquid behaving objects. Like water, or sand.

orlistmanager.h2004.03.05 ORListManager [Z, GLULX]
A small class for managing property lists; supports stacks, queues, and generic
list access methods.

orlookroom.h2004.02.09 ORLookRoom [Z, GLULX]
This module adds the functionality of examining a neighboring room.

ormagic.h2004.03.06 ORMagic [Z, GLULX]
The base class for magic spells.

ormenu.h2004.02.07 ORMenu [Z, GLULX]
Full screen multi-layered menu system.

orminimenu.h2004.02.09 ORMiniMenu [Z, GLULX]
A sideline menu System (for both Z and GLULX)

ornameable.h2004.02.07 ORNameable [Z, GLULX]
Gives an object the ability to be named and then be referred to by that name.

ornpc.h2004.02.22 ORNPC [Z, GLULX]
A base class and controlling daemon for NPCs.

ornpc_asktelllearn.h2004.02.07 ORNPC_AskTellLearn [Z, GLULX]
A module which endows an NPC with the ability to answer questions and learn
new information that has been told to it. This module leverages the ORKnowledgeTopic

ornpc_converse.h2004.03.08 ORNPC_converse [Z, GLULX]
A module which anables NPCs to converse with the PC or other NPCs. Implements a
generic TALK TO CHARACTER verb which picks a subject to converse about.

ornpc_doverb.h2004.03.08 ORNPC_doverb [Z, GLULX]
Gives an NPC the ability to perform actions as the player would.

ornpc_goaldriven.h2004.03.08 ORNPC_GoalDriven [Z, GLULX]
Adds the ability for NPCs to perform goals.

ornpc_interact.h2004.02.09 ORNPC_interact [Z, GLULX]
A base class for NPC objects to derive from. Add support for interacting with other
NPCs of the PC.

ornpc_mapknown.h2004.02.07 ORNPC_MapKnown [Z, GLULX]
For NPCs that know their surroundings. Decreases the likelyhood that the NPC will
become "lost" and have to "wander".

ornpc_moods.h2004.02.07 ORNPC_moods [Z, GLULX]
Adds a "mood" or "mind-set" framework to an NPC.

ornpc_movement.h2004.03.08 ORNPC_movement [Z, GLULX]
Adds movement capabilities to an ORNPC object

ornumberedcontainer.h2004.02.07 ORNumberedContainer [Z, GLULX]
This is an object that is designed to emulate a collection of openable, stationary containers
(like lockers).

oroptionlist.h2004.02.07 OROptionList [Z, GLULX]
A class which maintains a list of value pairs.

oroptionlistmenu.h2004.02.07 OROptionListMenu [Z, GLULX]
Defines an object which reads the current OptionList of an object that inherits from
OROptionList and displays an appropriate menu. Each object should

orparser.h2004.02.09 ORParser [Z, GLULX]
A rearangement of the Parser__parse routine. No actual code has been altered (at
least not in any significant way) but the routine has been broken into smaller
componants which can be overriden by other modules.

orparsetoken.h2004.02.07 ORParseToken [Z, GLULX]
A rearangement of the ParserToken__ routine. No actual code has been altered (at
least not in any significant way) but the routine has been broken into smaller
componants which can be overriden by other modules.

orpathmaker.h2004.02.07 ORPathMaker [Z, GLULX]
Object which can determine a path between two rooms (or objects)

orprefixsuffix.h2004.02.07 ORPrefixSuffix [Z, GLULX]
Allows the use of prefixes and suffixes that are followed by periods (for example,
"Dr. Bob" or "Col. Mustard" or "Dan Jr." or "Mr. Armstrong")

orpronoun.h2004.02.22 ORPronoun [Z, GLULX]
This is a collection of pronoun print rules to handle just about every imaginable
scenerio. Build from principals discussed in the article "Pronouns on Steroids"

orprop.h2004.02.07 ORProp [Z, GLULX]
This class eases implementation of a generic object which does not need to be
referenced in the game.

orrecogname.h2004.02.07 ORRecogName [Z, GLULX]
This modification eliminates the need to specify the name property. That is,
it allows for object recognition without the use of dictionary words. Without
this modification, the name property needs to contain all possible words that can
be used to match against a noun, even if already listed in object the declaration

orredefineobject.h2004.02.07 ORRedefineObject [Z, GLULX]
Redefine an object's routines at runtime.

orreferbycontents.h2004.02.07 ORReferByContents [Z, GLULX]
An object that can be refered to by the name of what it contains. For instance a
glass of water can be taken by the command "get water".

orreversedirection.h2004.02.07 ORReverseDirection [Z, GLULX]
A simple routine, shared by multiple objects to reverse a direction.

orreview.h2004.02.07 ORReview [Z, Glulx]
An implementation of the Review Command

orrockdispensor.h2004.02.07 ORRockDispensor [GLULX]
An object to generate GLULX rocks dynamically, so modules do not confict.

orroutineslist.h2004.02.07 ORRoutinesList [Z, GLULX]
An object that can maintain a list of routines and run them in order like
additive properties.

orscore.h2004.02.07 ORScore [Z, GLULX]
Extends the standard library's task score system, creating an auto-initialized
repository for scores, which can be normal or randomly assigned (kind of like the
scoring in Leather Goddesses of Phobos).

orseveral.h2004.02.07 ORSeveral [Z, GLULX]
This module allows multiple objects of the same class to be described with an adjective
rather than an exact number. For instance, It may be preferable that the description
of 22 gold coins read as "several gold coins."

orspecializedexit.h2004.02.07 ORSpecializedExit [Z, GLULX]
Extends Exit/Take to support a few common exit commands.

orstylehint.h2004.03.03 ORStyleHint [GLULX]
An object wrapper to easily establish user-defined styles.

orsupportercontainer.h2004.02.23 ORSupporterContainer [Z, GLULX]
Allows an object to be both a supporter and and container at the same time.

orsuppresstakeall.h2004.02.07 ORSuppressTakeAll [Z, GLULX]
Allows suppression or altogther elimination of "TAKE ALL".

ortextformatting.h2004.02.07 ORTextFormatting [Z, GLULX]
Simple file containing various useful print rules.

ortransition.h2004.02.07 ORTransition [Z, GLULX]
Transition() is best used as a special effect for dividing story parts. It conveys
to the player, a transition between logical breaks in the game (for instance,
chapters). It can be called after printing the final lines of a section, and before
the first lines of the next.

oruniquemultimessage.h2004.02.07 ORUniqueMultiMessage [Z, GLULX]
Consolidates identical messages for actions that accept multiple objects. For example:
6 marbles: Removed.

orwae_formatting.h2004.02.07 ORWAE_Formatting [Z, GLULX]
A framework for implementing text that qualifies objects, such as "(providing light)".

orwriteafterentry.h2004.02.07 ORWriteAfterEntry [Z, GLULX]
A rearangement of the WriteAfterEntry routine. No actual code has been altered (at
least not in any significant way) but the routine has been broken into smaller
componants which can be overriden by other modules.

%! 2004.02.27 OR_BlankGame.inf [Z, GLULX]
%! This is a template for a blank game which utilizes the ORLibrary
or_blanklibraryentry.h2004.02.07 OR_BlankLibraryEntry
This file is a template to be used when creating extensions that conform to the
ORModule specification.

or_library_include.h2004.06.08 OR_Library_Include [Z, GLULX]
This file serves as a common entry point for all ORLibrary entries.