Friday 28 August 2020

5.0.36 out now

The latest version of ADRIFT is now available for download.  This update is mainly focused on searchable lists.  In detail, the changes are as follows:

Enable Search on Object Names in Lists (ID 18739)

When editing tasks or other forms where you need to select from a dropdown list, you can now type into the list to filter on your selected text.  For example, in Task Actions, you can type into the object list to find blue objects:

Or when overriding a task you can quickly find anything green:

This new feature defaults to being on, but if you prefer the lists as they were before, you can turn the feature off in Settings:

In addition to this, the following bugs have been fixed:

  • %text% reference doesn't work within conversations (ID 19182)
  • User function restrictions don't work in runner 35 (ID 19156)
  • Font tag isn't inheriting properly (ID 19123)
  • PutObjectsInsideOthers - restriction error (ID 19030)
  • New mandatory property does not update items immediately (ID 18891)
  • Friday 3 June 2016

    5.0.35 out now

    The latest version of ADRIFT is now available for download.  Aside from the usual host of bug fixes, I've focused a little bit on Events, giving them some love.  The enhancements in a little more detail are as follows:

    Time based events (ID 19099)

    Events can now be Time based in addition to just Turn based.  This means that instead of the event start, length and sub-events all being defined in terms of turns, they can be defined in seconds instead.  This allows you to create events that trigger completely independently of user input.

    Auto-set event lengths (ID 19100)

    Rather than having to independently setting the length of the event in addition to any sub-events, the length will automatically be calculated based upon the sub-events you add, making it quicker to create the event.

    SubEvents Reorganising (ID 18401)

    When sub-events are moved up or down, they stay selected, making it easier to move them further up or down the list.

    Change the Name/Prefix properties of the object from a task (ID 19085)

    It is now possible to dynamically change the article, prefix and name of an object, by setting the relevant property of the object in a task action.  This can allow you to change how an object is referred to in the game, and removes the need to swap out objects with other objects if their description changes.

    In addition to these, the following bugs have been fixed:

    • Adding exported module folders to the library empties folder (ID 19103)
    • If you copy a folder with tasks in it those copied tasks retains same keys (ID 19102)
    • Remove subevent/event control doesn't work (ID 19098)
    • Enter a < into the Runner command line prevents new lines from printing? (ID 19091)
    • No popup list for group-of-integer item functions (ID 19089)
    • LocationTo Item sub-functions not working (ID 19084)
    • Adrift crash when changing direction (ID 19083)
    • Cannot deselect "Private to object" in a property (ID 19081)
    • Item Function returns object name as 'nothing' (ID 19076)
    • Cancel Button on task doesn't always cancel changes (ID 19075)
    • Tab Deletion Doesn't always delete correct tab (ID 19074)
    • "Character ignores you" bug (ID 19072)
    • System.NullReferenceException: Object not set to an instance of an object (ID 19070)
    • Expression resolver is adding quotes incorrectly (ID 19065)
    • Critical Error: An UltraListViewItem cannot be selected if it does not belong to ... (ID 19061)
    • Audio disappears when description added to location (ID 19057)
    • Setting save file name when reloading adventure. (ID 19055)
    • Can't OK restriction [Referenced Character] [Must] [Exist] (ID 19054)
    • Messages not displaying after Timed Event (ID 18625)

    Sunday 22 November 2015

    5.0.34 out now

    The latest version of ADRIFT is now available for download.  This contains the following changes:

    Export Module (ID 19011)

    When exporting a module, you can now opt to export only a particular folder, or just the items you currently have selected.  This means you can easily create modules for particular parts of your game.  There are two ways to do this - either right-click on a folder and select Export folder like so:

    Or if you select Export Module from the main menu and if you have items selected, you will be prompted whether you wish to export just the selected items.

    Runner Window Size Settings for Individual Adventures (ID 18913)

    Last Window Size and position are now stored within a Blorb/EXE, so you can distribute your game with your preferred layout.

    Advanced task option - Prevent merging of task outputs (ID 18824)

    The default for ADRIFT, is to aggregate the output of tasks.  So for example, if you type "get all" and there are two objects in the room, it will state "You pick up the red ball and the green ball" instead of "You pick up the red ball.  You pick up the green ball."

    You can now change this behaviour on a task by task basis by deselecting the Aggregate output, where possible checkbox on the Advanced tab of tasks.

    Loops (ID 18479)

    Loops can now be created around task calls, allowing for much greater flexibility.

    A no repeat RAND() function (ID 18384)

    I have added a new URand (Unique Random) function, which takes the same parameters as the Rand function (i.e. a single value, or a Min and Max values), but which will return Unique values within the range until all values are exhausted.

    e.g. URand(1, 5) might return 3 the first time you call it, then 2 the next time, then 5, then 1 then 4.  On the next call it will return any random number from the range and uniquely work through them again.

    As well as the above enhancements, the following bugs have also been fixed:

    • Restriction string in PlayerMovement task returns "nothing" (ID 19039)
    • Copy/paste in the runner causes images vanish (ID 19038)
    • Locking down/password protect Blorb files (ID 19037)
    • Custom Player Name not saved/restored (ID 19036)
    • Interrupting looping audio can crash the runner (ID 19035)
    • "Locking" graphics in games (ID 19029)
    • Map Bug (ID 19027)
    • Cancel button when exporting window executable (ID 19026)
    • EVENT will not continue if game is saved/restored (ID 19024)
    • Extra quotes added in restrictions when using Copy & Paste (ID 19022)
    • Undo do not undo ProperName changes for the player character (ID 19020)
    • Standard library-PutObjectOnOther restrictionerror (ID 19019)
    • Extra window panes cannot display graphics (ID 19016)
    • Standard library "Wear all" failure message (ID 18465)

    Monday 4 May 2015

    5.0.33 out now

    Again, it has taken me quite a while to get this release out, having squeezed in development as and when I can, but hopefully it will be worth the wait.  There are some exciting enhancements, amongst which is the ability to make debugging your games easier and more enjoyable.

    Support <bgcolour> tags (ID 19010)

    ADRIFT 4.0 supported the ability for the game designer to change the background colour.  This functionality is now available in ADRIFT 5.0, allowing background colours to be changed at any point within the game.  The background will remain this colour until changed again, or set back to the default.

    The format is:

       <bgcolour = "colour">

    Where colour is a named colour (e.g. red, green, blue etc), a hexadecimal colour code (e.g. #FF8800, #123456) or simply "default" to set back to the default colour.

    Add default background colour in Developer (ID 19009)

    Default colours for the game can now be set in Developer.  This allows the author to set the game colours appropriately for the atmosphere of the game.  It also allows them to set a suitable background colour for any font colour changes within the game.

    To set default colours, go to Options > General > Default Colours

    The person playing the game can choose whether to allow these colours, or to use their own preferred colours.

    Allow more than one of all reference types (ID 18985)

    All reference types now support multiple references per task command.  This means you can have %location1% and %location2% in the same command.  Same goes for Number, Text, Direction and Item (previously only Object and Character supported multiple references).

    Ability to copy-paste restrictions/actions (ID 18844)

    Actions and Restrictions can now be copied and pasted within Developer.  To access this feature, right-click on any Action or Restriction, where the new options will be available on the menu:

    Debugger Enhancements (ID 18387)

    The debugger has been significantly improved, providing visibility and the option to change all property values of each of the item types.  To see the properties, select the individual item within the debugger tree view, where they will be listed like so:

    The property values can be changed by either selecting a new value from the dropdown, or by over-keying the value currently there.  Changes will be reflected immediate within the game currently being played in Runner.

    Player controlled wait command (ID 8125)

    A new task action has been added, allowing a particular task to cause a certain amount of time to pass.

    As well as the above enhancements, the following bugs have also been fixed:
    • Variables set to strings with spaces (ID 18994)
    • %object% %object1% %objects% confusion (ID 18986)
    • Saving array values does not work (ID 18984)
    • Cancel Open File can still load file (ID 18979)
    • IF expression not resolved before actions execution (ID 18973)
    • Restriction: reference must exist, does not check type (ID 18971)
    • Pop-up for adding restrictions to new task appears twice (ID 18968)
    • Character not known & indefinite (ID 18964)
    • Character1.Known function generate a error dialog (ID 18963)
    • Undo fail to UNDO unselect property (ID 18962)
    • Player.Held.OpenStatus(Closed/Open) does not return value (ID 18961)
    • %object2% reference with no %object1% fails "exists" restriction (ID 18957)
    • Old games load new libraries (ID 18946)
    • ToDo: Selection only item functions (ID 18925)
    • reference parameters scrambled if order changed (ID 18924)
    • Property restriction comparing < kills debugger (ID 18858)
    • Set default user dictionary location (ID 18422)

    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)