Monday, 4 August 2014

5.0.32 out now

Sorry it has been quite so long since the last release.  On a personal level there have been big changes at work, we've embarked upon a renovation project at home, and of course there's the birth of our beautiful baby boy.  Anyway, it was about time I got a new release out, so here's a list of what's new:

Retain selections when changing object type

If you change an object from Static to Dynamic (or vice-versa), the location of the object is no longer reset to hidden.  So a static object in a single location will default to a dynamic object within that same location, and similarly objects that are parts of characters default to being held by that character.  This makes it easier to make changes to object types in the game, and is especially useful if you use the Add Object to Location menu item.

Scroll folders into view when selecting

When you select a folder from the tree view, that folder will automatically scroll into view if it happens to be off screen.  This is useful if you have lots of folders open, and lose track of where each one is.

Right click location - Add Player-enters task

There is now a new menu item in the Add Specific Task menu when right-clicking on a Location to run a task whenever the player enters that location.  This shortcut will create a System task with that trigger pre-set.

Allow Specific Tasks to be hidden.

The Prevent this task from being inherited checkbox is now available on Specific Tasks (as opposed to just General Tasks) when that Specific Task does not "use up" all its references from its parent task.  This allows you to prevent the Specific Task appearing in the dropdown menu when creating other Specific Tasks, thus reducing unnecessary clutter.

"Return to Default" Option for Last Alternative Description

If you have a description that only displays once, you now have a new option that will "reset" the message back to the default description.  This effectively allows you to cycle through the descriptions infinitely.

Show file name with save/load

When loading and saving games, the filename is now displayed.  This is useful when the command "save" is used, so you are reminded which filename is in use, and also when looking back over transcripts.

Option to check if a character is visible to a character

A new restriction to check whether a character is visible to another character has been added.  This takes closed objects into account.

Moving tasks etc. to folder

Items can now be dragged from a folder onto another folder in the tree view, making organisation even easier.

Multi Select Restrictions/Actions (with Shift/Ctrl)

Multiple restrictions and actions can now be selected in the task windows, allowing them all to be moved or deleted in bulk.

The remaining changes are bug fixes, and are as follows:
  • Can't use %direction% in expression if direction is "Up" (ID 18956)
  • Using Ctrl-v to paste text into search & replace creates a variable (ID 18949)
  • Crashdump if PartOf parent put inside container (ID 18944)
  • task actions ... will kill the developer. (ID 18940)
  • Find All crashes (ID 18927)
  • Copy-paste of a User Function causes exception (ID 18922)
  • Restriction summary wrong, char same loc as object (ID 18921)
  • User functions only work once per text box (ID 18911)
  • Players not correctly removed from objects when moving (ID 18909)
  • Key Prefix Problem (ID 18908)
  • Expressions can't subtract a negative number (ID 18907)
  • Sound loop not working (ID 18903)
  • Brackets don't nest inside user function parameters (ID 18899)
  • Broken Action- Add Everyone with property to group (ID 18898)
  • Space in %objects%.Children(Objects, On) stops it working (ID 18893)
  • not working (ID 18885)
  • Editing a task from an event control causes error (ID 18881)
  • Location function not working for objects (ID 18871)
  • Exits function of Locations not working (ID 18870)
  • Object that are PartOf do not follow players into closed objects (ID 18860)
  • UNDO fail to undo "Move objects to groups" command (ID 18859)
  • Object set to be placed on itself causes runner to crash (ID 18805)
  • Zero Value Disappears When Amending Restriction (ID 18611)
  • Adding room in the map window may put it in other folders (ID 18333)
  • Sitting Position not being updated (ID 10087)

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)

Tuesday, 25 December 2012

5.0.27 out now

ADRIFT 5 release 27 is now available for download from the ADRIFT website.

The main highlights in this release are a redesigned Objects form, highlighted links, and improvements to the parser.

A full list of changes is as follows:


Bug Fixes
  • Location property restriction checks don't work (ID 18678)
  • OO Location properties don't work (ID 18677)
  • Action Set Referenced Location Property (ID 18676)
  • Runner font sometimes resets to Arial, 12 (ID 18672)
  • Options Font size (ID 18671)
  • Restore filename doesn't work (ID 18666)
  • Display completion message default (ID 18664)
  • MaxScore Not Updating Dynamically (ID 18663)
  • General Tasks always Repeatable? (ID 18660)
  • No intellisense for %AloneWithChar%. and %ConvCharacter%. (ID 18655)
  • Flickering text (ID 18652)
  • Task can be overridden checkbox not working correctly (ID 18645)
  • Priority is incremented when loading library (ID 18644)
  • Task Type selection inverting (ID 18640)
  • EXE crashes on startup (ID 18633)
  • Autocap doesn't autocap text overrides (ID 18630)
  • Object Oriented functions don't appear to work with multiple object lists (ID 18629)
  • Drag and Drop "Parent of Character" does nothing (ID 18627)
  • Dotted links on map before restrictions occur (ID 18620)
  • UNDO not working properly after v.5.25 (ID 18601)
  • Coloured text bug (ID 18451)
  • Expressions dont work for restrictions and text properties (ID 18325)
  • Deleting library items (ID 7957)

Merry Christmas!

Friday, 7 December 2012

Clickable links

Version 5.0.27 will introduce optional links to show which keywords are clickable. Runner already brings up a menu when certain words are clicked upon, but this will make it more obvious. This makes it easier to play games using only the mouse, should you wish to do so.