Sunday, 25 August 2013

5.0.31 out now

It has been a little while since the previous release, somewhat hampered by work, computer crashes and relocating the website, but the new release is finally available.  This brings some exciting new enhancements, plus a few critical bug fixes.

Allow item functions to filter by property value (ID 18857)

Item functions have, since 5.0.26, been able to restrict a list (of characters, objects etc) to those having a particular property.  This has been taken one step further by allowing to restrict by properties with a particular value.

So for example, if you wanted to know how many heavy items the player was carrying, you could use the function


Allow Increase and Decrease variables (ID 18856)

Rather than only allowing you to Set variables to a value (which means having to write a function when increasing or decreasing the value of a variable), you can simply select Increase or Decrease from the first dropdown on the Variable Action screen, like so:

Expose Characters in locations (ID 18796)

Item functions that resolve to a Location can now access all characters within that location.  For example, to list all characters in the same location as the Player you could use:


Allow a separate window layout per game (ID 18795)

Each game you play will now store it's window layout separately.  This is handy because you may resize the map in one game to be a particular size based on that game layout, but have a completely different layout for a different game.  It is also very useful for the Multiple frames enhancement below.

Relative Locations (ID 18794)

You can now use an Item Function to reference one location from another.  For example, to return the name of the location to the north of the player's current location, you could use:


Allow List function to list items per row (ID 18788)

The List Item Function can now take a parameter "Rows", which will return the list items on individual rows rather than being comma separated.  For example:


%item% (ID 64)

Tasks can now refer to Referenced Items, rather than just Referenced Objects or Referenced Characters.  A Referenced Item is either a Location, Object or Character that the player referred to in the command.

For example, you could create an "examine %item%" task, that would match on "examine bird", "examine Hamish" or "examine bedroom".

Properties of items (ID 18784)

In conjunction with the new Referenced Items, properties can now be assigned to items generally.  This can allow more efficient tasks to be written for properties that any item could have, such as odour, colour, sound etc.

Referenced Text CONTAINS Keyword (ID 18706)

Restrictions can now check to see whether a text variable contains a particular value, like so:

Add Front End For Handling Synonyms (ID 18631)

Synonyms have been supported in ADRIFT 5 for some time now. However, there was no way to edit them in Developer.  This has now been added.

For further info, see

User Functions (ID 18608)

User Defined Functions allow you to create your own custom functions, with parameters if necessary, that you can use within any text section or expression.

For further info, see

Multiple text output frames (ID 180)

It is now possible to output text into a different text frame from the default.  To do this, simply use the new "window" tag.  This takes the name of the frame as an attribute, like so:

   <window Location><cls>%Player%.Location.Description</window>

This will bring up the additional frame, which can be repositioned wherever you want it, like so:

The remaining changes are bug fixes, and are as follows:

Bug Fixes
  • Crash when executing multiple tasks using actions (ID 18853)
  • Variable Wait length (ID 18849)
  • Having a numbered array with an empty last entry corrupts save file! (ID 18845)
  • Exception if hidden object has character on or in it (ID 18835)
  • Variables dissapear + unexplainable "Key already exists" errors (ID 18821)
  • Property Hidden does not exist (ID 18819)
  • Options - Wait - resets when developer runs again (ID 18816)
  • Date created / Date modified are broken (ID 18815)
  • Item clash loading from multiple libraries (ID 18797)
  • Restrict key names to alphanumeric characters (ID 18787)
  • Ability to prioritize alternative descriptions (ID 18779)
  • Using keys with functions very confusing (ID 10011)

Friday, 29 March 2013

5.0.30 out now

ADRIFT 5 release 30 is now available for download from the ADRIFT website. The main enhancements in this release are:

Private Properties (ID 3040)

Properties for Objects, Locations, Characters and Groups can now be made "Private".  This means that the new property will only be listed in the particular item that it has been made private to, thus not cluttering up all the other items with irrelevant properties.

Property descriptions (ID 15073)

Properties can now be given descriptions.  These appear as tool-tips when viewing the properties in items, to give additional information to the game author.

Completion Message default (ID 18692)

A default for whether to make task messages appear before before or after actions can now be set in Settings.  This can be overridden in each task on the Advanced tab.

Group function (ID 18748)

Group keys can now be used as Item functions to insert lists or summary information in text boxes.  E.g. you could type


to get a list of all the items in that particular group.

Make properties friendlier (ID 18754)

The property editor has had a makeover, so options that are not required for the current property are hidden away.  This makes it less cluttered, and hopefully a little easier to use.

Auto generate keys from names (ID 18757)

In Settings, you can now specify that key names should be generated based off their item names.

So for example, if you create a character called "Bob", instead of his key being Character1, it will now be Bob.  This makes any item functions more intuitive, e.g. you can type Bob.Held.Count instead of Character1.Held.Count to get the number of items he is carrying.

Add a manual (ID 18758)

Yes, ADRIFT finally has built in help.  To access help, simply click on the question mark icon in the top-right of Developer, or click on the question mark on any screen to go straight to help for that section.

The help file has detailed help for each section, plus lots of tutorials.  It is also still being added to.  An online version can be found at

Improve Add Specific Task menu (ID 18765)

The menu when you right-click on an object or character has been enhanced to show more relevant tasks.  This makes it easier to find the specific task you want, rather than a long list of tasks you would never use.

The remaining changes are bug fixes, and are as follows:

Bug Fixes
  • %text% not working in expressions (ID 18778)
  • String concatenation in expressions doesn't work (ID 18776)
  • Transcript appends but states it overwrites (ID 18774)
  • Only-display-once sequence skips half the tabs (ID 18773)
  • Run after task failure output (ID 18771)
  • Item functions returning object keys from objects is broken (ID 18769)
  • Display only once is being ignored in alternative desc (ID 18763)
  • Bad expressions with Objects.Children (ID 18762)
  • Character walks not upgrading properly (ID 18761)
  • Updates to Player in library (ID 18760)
  • window in set properties to small (ID 18753)
  • Functions Parent & InsideOf do not output key (ID 18749)
  • Boolean values stored in registry (ID 18743)
  • Scrollbar obsurces expression box (ID 18737)
  • Expression not evaluating (ID 18736)
  • Crash when cancelling blank step for character walk (ID 18730)
  • OO menus don't display correctly (ID 18729)
  • String expressions containing variables dont work (ID 18688)
  • Displaying Direction Restrictions Text Issue (ID 18483)

Tuesday, 29 January 2013

5.0.29 out now

ADRIFT 5 release 29 is now available for download from the ADRIFT website. Rather than simply list the changes, I thought I might try and give some explanation of the enhancements this time.

Access Events in OO functions (ID 18718)

If you type the name of an event key in any text box followed by the dot character, it will now bring up a menu where you can select either Length or Position.  These two new functions will return an Integer value of the length of the event (in turns), or the current position of the event from the start.

These can be useful, as you can create restrictions that an event must be before or after a certain position.

Repeat Countdown option on Events (ID 18715)

I have added a new checkbox on Events, so that if you have a delay at the start of the event (i.e. the event should start off waiting for X turns) and also you have the event set to repeat on completion, you can now select this new checkbox to wait again before the event starts, effectively allowing you to insert a pause between each run of the event.

OneOf expression function (ID 18714)

Similar to the existing Either function, there is now a OneOf function.  This function can take any number of parameters, and will return one of the parameters randomly.  For example, you could embed the function into a piece of text like so:

The top card is the Queen of <# OneOf("club", "spade", "diamond", "heart") #>s. 

Add new sound interface (ID 18709)

Several users have had problems with the DirectX sound interface.  As a result, I have added a new interface, using WinMM.  This is now the default interface for sound, as it doesn't require additional DLLs (so Runner no longer requires the Microsoft.DirectX files).  You can enable or disable individual interfaces in Runner Options > Advanced in case any particular interface causes a problem on your machine.

In addition to this, the debugger will now specify which interface is being used when a sound file is being played.

New function: Replace (ID 18707)

Expressions can now use the function Replace.  This takes three parameters - the first is the piece of text to be altered, the second is the text to find, and the third is the text to replace the found text with.  So for example,

Replace("one two three", "two", "TWO") would return "one TWO three".

Map Shortcut (ID 18699)

Ctrl+M now closes the map in Developer, as well as opening it.

Global Text override view/edit (ID 9737)

In the previous release I added an option to Import Text Overrides from file.  I have now added the corresponding Export option:

This will create an *.alr file, in the same format as that used in version 4.

The remaining changes are bug fixes, and are as follows:

Bug Fixes
  • Unhandled Exceptions - Boolean conversions (ID 18728)
  • Tab order on Properties form (ID 18725)
  • Character movement not displayed when Player on an object (ID 18722)
  • Scroll Bars (ID 18721)
  • Editing a text property causes value copying (ID 18719)
  • Dragging Variable - Value incorrect (ID 18717)
  • Double-spacing when appending blank text (ID 18716)
  • Carriage Returns break expressions (ID 18713)
  • Timing problem on character walks (ID 18712)
  • Appended StateList values aren't saving (ID 18711)
  • Mono - crash when clicking in output area (ID 18708)
  • Text boxes not scrolling to end on open (ID 18705)
  • Developer hangs when selecting certain text (ID 18704)
  • Abort map walk if task kicks in (ID 18698)
  • Object group properties not recognised by runner (ID 18634)
  • Audio doesn't work on some systems (ID 18473)
  • Missing Object Properties in Actions (ID 691)
  • Changing property types (ID 68)

Friday, 11 January 2013

5.0.28 out now

ADRIFT 5 release 28 is now available for download from the ADRIFT website. This is somewhat earlier than expected, but I felt it necessary in order to fix some irritating bugs for new users playing packaged games. There are two enhancements in this release; being able to import v4 style ALR files, and the ability to print out the map.

A full list of changes is as follows:


Bug Fixes
  • Error stopping audio (ID 18697)
  • Error loading blorb/exe, Layout path not found (ID 18696)
  • Cant set value-list property with an action (ID 18694)
  • Cant test value-list property in a restriction (ID 18693)
  • Error Loading Adventure. Invalid character (ID 18690)
  • Corrupt text window (ID 18687)
  • %text% not passing as a parameter (ID 18686)
  • Object orientated functions aren't recursive (ID 18685)
  • Integer Properties Cannot Be Dependent on Value (ID 18459)
  • Assigning values to properties in actions (ID 18391)