PowerQuest 0.15.13
Version History

Latest Stable: v0.15.13

To Update

Just download the new version from itch.io, and import into your project (in Unity, click Assets -> Import Package -> Custom Package)

Back up first! I'll do my best to not break anything between versions, but it's always worth backing up, or better still, use source control like git/svn.

Stable v0.15

Main 0.15 features:

  • New integrated GUI System. See the documentation and tutoral video here.
  • New template GUIs- Save/Restore, Options, Prompt popups
  • Support for latest Unity (2020.3 LTS now recommended)
  • Region tinting can fade as character walks in/out of a region
  • Smooth camera zooms and pans. See gif!
  • Easing curves for moving props and characters
  • Setting now saved in separate file, so loading a game doesn't mess with your volume, etc
  • Better support for animating the cursor
  • Characters can now have AnimPrefix, for easier costume changes and the like
  • Characters can walk/animate in the middle of talking, and dialog text moves with them
  • You can now use Regions can now block off a walkable area, rather than having to make separate areas
  • Exposed more of PowerQuest to be customisable and extendable
  • A gorllian fixes and tweaks

Note before updating:

  • The minium unity version is now Unity v2020.3. Update your project to at least this version before updating PowerQuest!
  • If updating a project with the 9-verb gui, first update to 0.14.10. (Otherwise you'll get an error)
  • Fade in/out changed slightly in 0.15. So even if you FadeOut twice, you now only have to call FadeIn once. Pass a string 'Source' to the Fade functions if you want to avoid this.
  • If you have a GUI named 'Options', 'Save' or 'Prompt'. Rename them before updating. (So they don't conflict with new GUIs with those names)
  • If updating from v0.15.3, you'll need to delete files Assets/PowerQuest/Scripts/Editor/QuiButtonEditor.cs and Assets/PowerQuest/Scripts/Editor/ImageEditor.cs

v0.15.13 (4 March 2022)

  • Changes:
    • Added IPowerQuest.DisableAllClickablesExcept() functions that take specific hotspots/props, rather than strings.
    • Added ICamera.Position and ICamera.Zoom properties
    • Changed hotspot/prop script-name to be readonly field, instead of hidden in inspector. Makes it easy to hackily duplicate a hotspot or prop ;)
    • Audio: By default, Calling SystemAudio.PlayMusic() with a cue that's already playing will no longer restart the music (though it will still crossfade volume if that is different). This behaviour can be changed with SystemAudio.ShouldRestartMusicIfAlreadyPlaying property.
    • Animation event "triggers" are no longer case sensitive (eg Plr.WaitForAnimTrigger("hit"); matches the "Hit" event)
    • Script editor: double clicking words with underscores now selects the entire word (for things like m_myVariable_3)
    • Script editor uses 'command' key on OSX for saving and zooming. Also removed the ctrl+enter to save, since it's been replaced with ctrl+s
    • Added IPowerQuest.HandleOption() function to easily start a dialog option script from elsewhere. Note, this doesn't actually start the dialog, just runs the script function. Eg E.HandleOption(D.TalkToBarney, "AskAboutTrees");
    • Added overrides to ICharacter.SetPosition() that take a prop/hotspot/character. These position the character on the passed in object's Walk-To point. Eg. C.Dave.SetPosition(H.Door)
      • Also added a similar override for Character.Show(), though it's not exposed yet, for now you can expose it by adding it to the ICharacter interface in your PowerQuestExtentions file.
    • Added Accessor for dialog tree list from PowerQuest (Useful for making dialog tree guis)
  • Fixes:
    • Fix for character getting stuck in animations with a LoopStart tag but no LoopEnd
    • Gui: Fix for fading in buttons on the frame they're shown, and fix for the fade being effected by pausing, which you don't want for guis
    • Dialog trees now have their data set correctly after restoring save
    • Fix for dropdown bar, now unpauses game when disabled
    • Fix for renaming regions
    • Fixed some null ref errors in Regions and PowerSprite

v0.15.12 (24 Feb 2022)

  • Tweaks/Fixes:
    • Added warning when trying to make character face themselves
    • Dialog tree scripts now have access to their own dialog data with Data property. Fixes a dialog's functions, like O.AskAboutBlah.Show() not being usable when the dialog wasn't playing.
    • PowerSprite Animator: Timeline event paramters are now displayed in the timeline bar (Thanks arcnor)
    • Fixed ICamera.SetCharacterToFollow() overTime parameter not being hooked up
    • Fixed BaselineFixed property not being hooked up (Thanks arcnor)
    • Charcter/Prop sorting is now previewable in the scene when you:
      • Change the in the inspector
      • Move the object around in the scene
    • Gui tab no longer disappears when editing a gui and go to edit another gui
    • Quest scripts can now access dialog tree scripts with D.MyDialog.Script. (same as rooms, characters, etc)
    • Fix for walkable edge case: When character fails to find path because starting or ending in "solid" character collision, it will now attempt it without the solid collision instead of just failing.

v0.15.11 (18 Feb 2022)

  • Tweaks/Fixes:
    • Fixed version checker url
    • Added R.FirstTimeVisited shortcut to R.Current.FirstTimeVisited
    • Fixes for ICharacter.SetTextPosition and ICharacter.LockTextPosition not working in certain cases
    • Fix for mouth anim not changing if set while not talking
    • Added IPowerQuest.DebugSetPreviousRoom(IRoom room) useful in PlayFrom functions (ones with [QuestPlayFromFunction] )
    • Fix for renaming regions and other child objects when room isn't saved
    • Fixed some broken easing curves
    • Occurrence methods all renamed to have correct spelling. Upgrading will find-replace old ones.
    • Fix for ICursor.NoneCursorActive returning false when inventory item active when there was an AnimationOverGui set, or Override anim playing
    • Null ref fix for setting props enabled/disabled
    • Fix: When character has no 'Talk' anim, it no longer gets stuck in walk anim when a say command is followed a walk command
  • QuestText fixes:
    • QuestText outline visibility now set when main text renderer is enabled/disabled
    • Quest text cleanup. Setting sort order now updates outline, but doesn't refresh text
    • QuestText component now only overrides CharacterSize if it's still at it's default (1). So it can still be set to other values if required
  • Integrated dialog tree gui changes by Arcnor:
    • Added option to number dialog options
    • Added option to vertically align options from the 'middle'

v0.15.10 (27 Jan 2022)

  • Tweaks/Fixes:
    • Added ICharacter.ReplaceInventory function
    • Inventory Panel: Added Item Cursor property, for when you want to override the cursor when held over inventory items
    • Guis now created relative to GuiCamera (fix issue where they're invisible after updating)
    • Fix for cursor for legacy inventory guis
    • Fix for exception message when upgrading

v0.15.9 (25 Jan 2022)

  • 9-Verb template:
    • Rebuilt verb gui with new gui system
    • Added menu gui with save/load/options/quit buttons
  • Tweaks:
    • Gui stuff works with tiled sprites as well as sliced
    • Exposed Color and TextComponent in ILabel
    • Added Gui property in gui quest scripts to return the current gui. So you can do Gui.Hide(); to hide the gui you're in, etc. (As possible replacement for confusing 'Data' property)
    • CollectedItem class is now partial
    • Added extention methods to GuiControls ExStart, ExOnShow,ExOnHide, ExOnVisibilityChange. And some extra ones for Gui Image and Button controls too
  • Fixes:
    • Fixed Dialog options and gui descriptions not being translated. (They weren't being marked dirty, so lost their is when unity was closed)
    • DisplayText gui now on the correct camera
    • Fix for bug where changing character inventory or room points in-game while testing could permanently change their prefab in editor too.

v0.15.8 (13 Jan 2022)

  • Save/Restore
    • Screenshots can now be saved in save games- Set up size in in PowerQuest setup tab
    • Template Save/Restore Gui added
      • To open, call G.Save.Script.OpenSave(); or G.Save.Script.OpenRestore();
    • Updated Toolbar in template project to have Save and Restore buttons
  • Option for Custom Keyboard Shortcuts
    • Added option in PowerQuest setup to have custom handling for keyboard shortcuts and mouse clicks.
    • Template game now has GlobalScript function UpdateInput() which defines keyboard shortcuts
  • Minor tweaks/fixes:
    • Added PowerQuest logo sprite to game folder
    • Better sorting of GlobalScript functions in script editor
    • Fix for broken QuestText editor in 0.15.5
    • Gui Buttons have option to set both image & text colour
    • Gui controls can now be reordered from their list
    • Made PowerSpriteImport and CursorComponent partial classes
    • CursorComponent: Added CurrentAnim and SpriteRenderer properties
    • Fix for script editor alt-left/right keys on mac (thanks Arcnor)

v0.15.5 (7 Jan 2022)

  • New stuff:
    • Regions tint can now fade as characters enter/exit the region, based on new FadeDistance property.
    • Camera refactor
      • Zoom and position overrides now work together. (Though you can't start one half-way through a transition other or it'll snap atm)
      • Fixed Zoom transitions breaking when near edge of screen
    • Added option to have Custom Speech Gui. Thanks Edu Garcia (Arcnor). To use it:
      • Make a gui that implements the 'ISpeechGui' interface in its component to set its text and turn itself on and off.
      • Set it as the CustomSpeechGui in PowerQuest settings, and set the SpeechStyle dropdown to "Custom"
      • Note you can also add a component that implements ISpeechGui to the regular dialog text object to do custom stuff there.
    • Added BaselineFixed property to Props, when set, the baseline doesn't move with the position of the prop. For props that move around but should stay sorted the way they are.
  • Tweaks:
    • Added animprefix to character interface
    • Template game: Barney's tweak to logo
    • Util for checking for null/empty strings: IsString.Set(string) and IsString.Empty(string)
    • Reordered some PowerQuest Project Settings
  • Fixes:
    • Text now updates immediately when language changed
      • Language now saves/loads from settings correctly
      • QuestText items now update when language changes
    • Fix for PowerSprite shader override not working if character was placed in scene
    • Fix for prop component not having components set up when calling SetVisible(true)
    • Script editor fixes
      • Can now select functions that end with the same name, eg: EatPudding() NoisilyEatPudding(). (Thanks Arcnor)
      • 'yield return' automatically inserted for 'character' and 'prop' variables
      • Prop or character function that starts with 'Wait' will have 'yield return' added
    • Fix for dialog list breaking when tried to add/remove/reorder list items.
    • Fix for Text System not preserving ids for non-character text when processing text.
    • Fixes for SpeechBox Gui
    • Fix: Error when setting animation of prop that's set to inactive in scene
    • Fix: When skipping animation transition too fast (like when holding down skip key), it could get stuck in wrong animation. (Now checking that transitioning to the same animation before avoiding skipping the transition...it's confusing ha ha)

v0.15.4 (10 Dec 2021)

  • In-game Options menu
    • Can set volume, text settings, language, resolution, etc
    • Lock-cursor option (only enabled in builds, because it's annoying when cursor locks in editor)
  • Settings refactor:
    • 'Settings' are now loaded from file (Settings.sav) on game start, so that things like volume, etc don't change when you restore/restart a game.
    • NB: Moved some things out of Settings: Settings.DialogTreeGui, DisplayBoxGui, Speech Style, Speech Portrait Location, Transition Fade Time, and Always Show Display Text.
    • NB: Moved Text Speed Multiplier INTO Settings.
  • Template Game changes:
    • Toolbar now has just power and options buttons. Later will add save/load there too
    • Added Options menu
    • Recoloured things to be all blues... more template blueprinty
    • Added Dave UR walk
    • Farted around with a PowerQuest logo for fun
  • Scripting API:
    • Added GlobalScript.UpdateNoPause() function- an update function called even when the game is paused.
    • New Cursor functions for playing and overriding cursor anims/sprites
    • Util functions for checking if strings are empty. because I hate writing string.IsNullOrEmpty(theString) everywhere: Utils.HasText(), Utils.IsEmpty(), Utils.IsNotEmpty()
    • RectCentered can now implicitly cast to Rect
    • Added Audio.IsPlaying(string cueName)
    • Added ICharacter.ResetWalkSpeed() to restore original walk speed from the inspector
    • Added ICharacter.SkipTransition() function to skip transitions between animations or turning anims
    • Added ability to "restart" into a specific room, and with a specific "play from" function. To make it easy to jump around in a build when testing
    • Added ICharacter.AnimPrefix. Game checks if anim exists with this prefix before falling back to regular anim.
      • Eg: if prefix is 'Angry', then, when a "Walk" anim is played, it'll first check if there's an "AngryWalk"
    • Vector2.Rotate extention function
    • Exposed IPowerQuest.GetRestoringGame()
    • Added gui mouse position accessor in PowerQuest
  • Script editor:
    • Quest script autocomplete includes cursor now
    • Fix: Script editor no longer treats blah.Button.blah or blah.Prop.blah as button/prop accessors (so if you have like, InputManager.Button.Ok.IsPressed, it won't change it to InputManager.GetButtons("Ok").IsPressed)
    • Autocomplete now updates immediately when quest objects (props, dialog options, etc), and things like audio cues and animations are added/renamed.
    • Added callbacks to PowerQuestEditor when creating objects (rooms, characters, etc)- so you can add custom stuff if you want. Eg: PowerQuestEditor.Get.CallbackOnCreateObject += AddMyCustomThings;
  • Gui System tweaks:
    • Added gui slider controller
    • Added yellow rectangle editing guis to show where screen edges are
    • AlignToScreen and FitToScreen now snaps to pixel.
    • Grid container fixes
    • Gui Fade functions
    • Grid container now saving the "custom size"
    • Renamed properties in grid container, hopefully less confusing?
    • Camera Extension methods for getting camera width/hight in world units
    • Tweak to cursor for handling custom dialog trees
    • Gui camera and guis are now created once at game start, and no longer recreated in each scene
    • Inventory panel static variables now non-static (so you can have multiple inventory panels)
    • Added sprite mask helper code to Inventory Panel, for masking inventory items when you scroll
    • Added 'overdraw' variable to grid container, so it can draw outside bounds, when you want to mask it
    • Added option to reverse inventory order in inventory panel
  • Quest Text editor.
    • Can now setup font display in the one component (color, font, etc)
    • Moved QuestText component above TextMesh component
    • Can adjust "Line height" in pixels, rather than as a ratio of font size
    • Font shader applied instantly (don't have to run game to see how it looks)
  • You no longer need to create animations for props, guis, inventory or cursors
    • If no animation is found, it'll search for a sprite of that name (with or withoout '_0' at the end)
  • Easing curves
    • Added a bunch of different curves to Utils.Ease() functions.
    • Easing Curve can be set when you call IProp.Move() and IProp.Fade(), same for guis.
  • Added some drop shadow support
    • Just some functions to let you easily turn on/off another sprite at the character's feet, and play anims on it when you want to.
  • Sprite Importer:
    • Fix: Powersprite import tags working on mac now (thanks IrreverentPixel).
    • Added option to sprite importer to not create anims for "single sprite animations". This is set for new rooms and guis
    • Added context menu option to each anim in sprite importer to set a sprite as "FullRect", which moves it into a seperate folder (non-atlased) and marks it as Full Rect. Useful for shader textures that are still sprites.
    • Moved "import dialog" to a text box so it's less intrusive.
    • Added button to "Import sprites + create anims" in one click.
    • Importer now includes sprite mesh type option. Removed old packing tag option.
  • Dialog text
    • Text now moves with character
    • Dialog text no longer goes off-screen if camera pans
    • Character text position functions:
      • ICharcter.SetTextPosition() - Sets text world position
      • ICharcter.LockTextPosition() - Locks the text position in the current place, even if character moves or is hidden.
      • ICharcter.ResetTextPosition() - Resets text position to default (above character)
    • Added ICharacter.TextPositionOffset and TextOffset property to characters. Distance that dialog text is offset from the top of the sprite, added to the global one set in PowerQuest settings. Will flip with the character. Defaults is zero.
  • More extentions support for expanding PQ functionality
    • Added commented out partial functions to PowerQuestExtentions so they're easy to find
    • Partial functions now all start with 'Ex'
    • Added partial functions for props/hotspots/Characters/inventory ExOnInteraction and ExOnCancelInteraction
    • Commented example of extending 'Settings' to add own settings variables
    • Added frame-limiter example in PowerQuestExtentions QuestSettings class
    • Added partial ExtentionOnInitialise method to QuestSettings
    • Added some partial methods to character and room to make it easier to extend
    • Character component made into partial class
    • Added callbacks to PowerQuestEditor when creating objects (rooms, characters, etc)- so you can add custom stuff if you want. Eg: PowerQuestEditor.Get.CallbackOnCreateObject += AddMyCustomThings;
  • Tweaks:
    • Turn animation updates:
      • Turn anims have option to be mirror automatically, so don't have to put in reverse directions
      • Turn anims use regex in "fromAnim" animation. So can do, "Idle|Talk|Walk" for example
    • Fade in/out
      • Fades no longer "stack", unless you use a different source. So FadeOut(); FadeOut(); FadeIn(); will now result in the game "fading in". (Before you'd need to match the fade outs and fade ins...). I think it's simpler now, if you call FadeIn, you know it'll do it.
      • Exposed Fade functions with a string "source" for layered fades. (eg: IPowerQuest.FadeOut() )
    • Pixel font shader now has tiny offset to snapping to stop so many edge cases.
    • Updated _PutDialogHere.txt with correct info
    • Optimisation: Importer now only updates default sprite if anim list changed.
    • ~+F9 now restarts current scene the same as stopping/starting the editor (but not horribly slow)
    • 'EnteredFromEditor' can now be used in dev builds, not just in editor
    • Added option in Text tools to use imported text as the source for default language, instead of the text that's in the script.
    • Added Prop.Alpha property. Sets sprite and text alpha, and means the transparency is saved.
    • Importing from photoshop now starts at frame 0, same as importing from aseprite
    • System for debug shapes
    • Can now have regions that block off an area, and character should be able to walk around on either area... (hacky and experimental code though)
      • Hacky walkable area code to find navigatable point to the cursor, using polygon build using clipper that subtracts un-walkable regions...
      • Moved experimental clipper walkable area code to room component partial class
  • Bug fixes:
    • Can now save game in Room's OnEnter
    • Fix: Save/restore games during dialog works again
    • Fix: Audio cue editor wasn't always keeping their clips in the list
    • Disabled cursor-locking on focus, no longer necessary afaik
    • Fixed cursor locking on game reset in editor
    • Guis "visible" flag now actually hooked up
    • Fixed gui's visibility not correctly saving/loading
    • Fix for room not setting sprite of prop immediately when it's in the editor.
    • Fix: AlignToScreen component now forces update on Enable/Start
    • Fix: "FadeIn" on first frame of "OnEnterRoomAfterFade" now works
    • Fix: Restart now destroys GuiCamera so you don't get duplicate guis
    • Fix for turn anims when using anim prefix
    • Fix for bug where changing room didn't reset background sequence, which would get set to "current" and block the main script. (Eg: using region to enter room)
    • Fix: Prop now remembers Position when it's set
    • Fix for character caching room on restart
    • No longer resetting start/end loop when anim resets, so will still transition out when using loop tags
    • Translation system fixes
      • Now escaping double-quotes correctly in CSV export (thanks drbb)
      • Fixed error first time setting the language (thanks Guga)
    • Fix for clicking object always resetting the selected unity tool (move/rotate/etc)
    • Fixed points getting selected when you're trying to edit colliders, or move somethign in the scene, etc
    • Fixed importing sprite timings from aseprite
    • Fix for 'WaitFor' functions not auto-loading in script editor if at the start of another script function.
    • Fix for CSV- Mark text prefab dirty after importing CSV

v0.15.3 (11 October 2021)

  • Tweaks:
    • Added IInventory.FirstUse, IInventory.FirstLook, IInventory.UseCount, IInventory.LookCount
    • Added Pan setting to audio cue
    • MinMaxRange drawer tickbox more obvious
    • Gui camera moved to 0,0 and now has near plane of -500. (So if a gui z pos is set to 0, it's still rendered)
    • Added callbacks on gui and controls focus/unfocus
    • Gui controls added at runtime are registered with their gui. (so can have baselines set-up correctly)
    • Cursor now uses cursor settings from gui when hovering over inventory item
    • Dialog tree component moves into canvas if still using old "Simple buttons"
    • Tweaks to WalkTo to make it more robust when calling rapidly. (For direct control with analog stick)
    • Animation Events will try to call function both with and without 'Anim' prefix.
    • Save system debugging code
  • Fixes:
    • Fix for sprite importer path not working with spaces in path
    • Fixed gui/sprite folder not renaming when upgrading from 0.14
    • Fix for old style dialog-tree scroll buttons not working
    • Fix for characters walking on the spot
    • Cursor override functions now work
    • Fix for gui controlcomponents potentially being added multiple times
    • Tweaked min/max range of gui baselines to stop them potentially overlapping
    • Fixes for "FitToScreen" component not working correctly
    • Optimisation fixes
      • Extra checks when setting inventory item anims for efficiency
      • Character caches their room
      • Gui baseline only sets children if it actually changed

v0.15.0 (24 September 2021)

  • Unity version update to 2020.3
    • Lots of fixes for things that weren't working quite right.
    • Now using Unity's new style of atlases (since old style was removed). Atlas files are now created automatically (it'll ask if you want to create them for you if upgrading).
    • Game view no longer captures mouse on windows
  • New Gui System
    • You can now create and edit simple guis in similar way to creating a room. Instead of props/hotspots, you use Buttons, Images and Labels, etc.
    • See Gui Sytem Documentation

v0.14

v0.14.10 (7 October 2021)

  • Fixes
    • Fix for characters walking on the spot
    • Cursor override functions now work
    • Fix for 9-verb to make it easier to update to 0.15

v0.14.8 (23 August 2021)

  • Sprite importer:
    • Added 'Import and Build' option for new anims.
    • Added 'Delete' and 'Rename' anims and sprites option.
    • Added Create Prop option, if importer is for the currently open room.
  • Other:
    • Added ICharacter.AddWaypoint() functions
    • Exposed IRoom.Bounds and IRoom.ScrollBounds
    • Can now right click Rooms in rooms list and jump straight to specific script functions (OnEnter,Update,etc)
    • Scrollable inventory tweaks (thanks to StickGrinder and Drbb on the discord)
    • Some ifdef'd out code for importing translation text CSVs at runtime.
    • "Debug key" is now either backtick (~ key) OR backslash.
  • Fixes for Unity 2019.3 and greater (v0.14.8)
    • Mouse is no longer constrained to game window in editor.
    • Fix for PowerSprite Animator event icon size
    • Fixed some unity console log spam
    • The blocking function IPowerQuest.ChangeRoom() now works. So you can change rooms correctly in the middle of a script.
  • Fixes:
    • After playing animation, it no longer restarts when entering another room.
    • Restoring game when screen's faded out no longers results in permenently faded out screen.
    • Powersprite animator no longer crashes if sample rate set < 1.
    • Warning/error fixes for new projects and upgrading projects
    • Spellchecker no longer disables itself on import
    • Null ref fixes.

v0.14.3 - Beta (16 July 2021)

  • Scripting:
    • Added PowerSprite.GetNodePosition() function, for easier access to anim nodes that includes powersprite's offset.
    • QuestCameraComponent.ShakeIntensity property exposed, so it can be used with/instead of other effects. You can now also set the Shake Intensity Multiplier to replace the shake with your own effects.
  • Template Project: InventoryClickStyle now set to OnMouseClick by default. (And fixes for this to work properly)
  • Sprite Importer: Added loop tickbox to context menu (Thanks IrreverentPixel)
  • Fix: Generate Sprite Hotspots tool disabled when using unity v2019+ since it doesn't work there.

v0.14.2 - Beta (5 July 2021)

  • Editor:
    • Added All/Highlight button to the top of lists of Rooms/Characters/etc, to toggle displaying only highlighted items.
    • Added ... button next to Rooms/Characters/etc, which opens the context menu.
  • Sprite Importer Upgrade:
    • Added "Play" button next to animations to open them in PowerSprite Animator.
    • Added context menu (right click or click ... button) next to the animation.
    • Added menu option to jump to sprite or animation in project
    • Added menu option to re-import single animation and/or its sprites. This clears old sprites, and re-builds the animation frames, unlike the bulk-import/create buttons.
    • Added option to import the animation list from the aseprite file (using frame tags as names)
    • Animation frame durations are now imported from aseprite.
  • 9-verb Template: StickGrinder's Tweaks for scrolling inventory.

v0.14.1 - Beta (30 Jun 2021)

  • Fixes:
    • Spell check working again.
    • Quest script editor no longer loses scroll position when another textbox is clicked.
    • Generate Sprite Hotspots tool disabled when using unity v2020+ since it doesn't work there.

v0.14.0 - Beta (25 Jun 2021)

  • NB: The ICharacter.Enable() function has changed, and no longer automatically sets ICharacter.Visible to true. Use ICharacter.Show() instead.see below for more details
  • Features:
    • Pathfinding around characters
    • Added ICharacter.Animation property. When set this animation plays instead of Idle/Talk/Walk, until StopAnimation is called.
    • Room, Character, Inventory and Dialog Tree lists can now be filtered to show only highlighted items.
    • ICharacter.SetPosition() now takes optional 'face' parameter, if set character will face that direction.
    • Added ICharacter.MoveTo and ICharacter.MoveToBG, similar to "walkto" but character doesn't face direction or play walking animation. Kinda hacky, might have to cleanup later. Not sure how useful it is anyway.
    • Characters Talking while walking/animating:
      • Characters can now be talking, walking and animating simultaneously. Previously it was only one at a time. Now handling stopping/starting any of those at the same time too. (eg: start talking halfway through walking somewhere), or play an animation half-way through line of dialog.
      • Calling ICharacter.WalkTo no longer stops a character talking.
      • Added Stop Walking To Talk option to PowerQuest settings to have characters keep walking when they start talking (by default they stop walking automatically).
    • Added ICharacter.StartFacingCharacter() and ICharacter.StopFacingCharacter() commands. Use when you want a character to keep turning to face another character even if one of them is walking around.
    • Automatic character hotspots:
      • Added option in characters to "Use Sprite As Hotspot". When true, the sprite's "physics shape" is used as the clickable collider. this can be enabled and disabled again by setting ICharacter.UseSpriteAsHotspot property.
      • Added utility for setting sprite physics shapes. Select the sprites to process, right click, and select "Generate Sprite Hotspots". This generates more accurate clickables for the sprites.
  • Minor Features/Tweaks:
    • Added 'Wait' cursor. Haven't tested template interfaces with it yet though, only used on Telwynium so far.
    • Added access to ICharacter.TextPositionOverride
    • Quest script editor:
      • Autocomplete & colour c# keywords
      • Keywords and strings no longer coloured inside comments (or other strings)
    • QuestText padding changed to 2d, so can hack in offsets more easily if required.
    • Sprite importer checks default steam aseprite folder first
    • Changed order of things a bit in Character data
    • ICharacter.Show/Hide refactor
      • Characters now have 'Enabled' flag under the hood. So you can Disable/Enable or Hide/Show them again without losing their Visible, Clickable and Solid settings.
      • ICharacter.Show() now sets them Enabled, Visible, and moves them to the current room.
      • ICharacter.Enable() now ONLY sets them Enabled.
      • You can now pass a position and facing direction into ICharacter.Show(). Useful for setting up characters in a new room.
    • Hotloading compiler optimisation. Loading and find/replace in source files no longer takes 1/3 the total compile time! (went from 6 seconds to 4)
    • Script editor optimiation- Regular expression optimisations, using zero width assertions instead of capturing groups in find-replace (for colors, and loading files)
    • Project window focuses when selecting room, character, etc in powerquest editor. (Useful if its docked behind something else)
    • Region OnEnter and OnExit no longer trigger when region is not Enabled
    • No longer locking mouse cursor when editor is playing (for unity 2019+ support)
    • When game's running can now use Ctrl+M to copy coordinates from game window
    • Exposed IPowerQuest.GetSkippingCutscene() function (renamed old internal GetSkipCutscene())
    • E.Wait(0) and E.WaitSkip(0) will now skip a single frame instead of doing nothing.
    • When prop animations are skipped in cutscene, they now update the animation on it's last frame (normalized time 0) so that the prop ends up with the state of the last frame (for animations where props are moved, etc)
    • Translation support changes from StickGrinder:
      • Can now export csv and script in specific language
      • Fix for translation support when mixing character name and 'Player: ' in dialog scripts
      • Fix for text processing not working correctly under Linux (and MacOS maybe) in unity 2020
    • Added attribute [QuestLocalize] that you can add to string fields and they'll be added to text system.
    • Templates:
      • 9-verb set up to work with translations
      • Example of new style string manipulation in global script
    • Added Audio.GetAnyMusicPlaying() function to check if music's playing
  • Fixes:
    • Fix for random null references
    • Fix for using inventory items on one another. it now tries the opposite order too. (if you use function variables)
    • Added warning message if tried to change rooms multiple times at once.
    • Fix for reloading a game breaking save slot data
    • Room bounds now default to zero width/height
    • Fix for error with shared material in PowerSprite (when looking at prefab while game is running)
    • Skipping cutscenes doesn't end character animations that have loop points or pauseAtEnd set
    • ICharacter.Animation property (and PlayAnimationBG) state is now saved/restored. Including LoopStart/LoopEnd points.
    • Fix for Quest text showing outlines when the gameobject isn't in a scene
    • The language in settings is now set when game starts
    • Fix: Music started during cutscene still plays even if not looping

v0.13

v0.13.5 (30 Apr 2021)

  • Minor Features:
    • Can now right click quest objects in list and "highlight" them, so they're easier to find.
    • Quest script editor now trims trailing space when saving.
    • When Room is deleted it's now unloaded, and removed from build settings list.
  • Minor Fixes:
    • Added warning about non-even sprite resolution on import.
    • Changing rooms or starting dialog now consumes event even if script isn't blocked (so you don't get 'I can't use that' message when changing room/starting dialog).
    • Fix for text not snapping to pixel correctly when vertex's lined up with pixels (due to float precision issue).
    • UseCount and Occurances are now correctly rolled back when you "cancel" the interaction by clicking something else during the initial 'walk to'. And also work correctly with HandleInteract and similar.
    • Deleting quest object no longer removees QuestScriptAutos lines for other objects that contained the same name.
    • Fix for deleting then adding quest object causing the new one not to be added to the prefab list.
    • Added check for project needing a refresh before processing text.

v0.13.4 (23 Apr 2021)

  • Room's objects (hotspots, props, etc) can now be reordered from the room editor lists.
  • Quest scripts now have using static GlobalScript; added to them, so you can easily access enums declared in Global Script "header". Updated templates to use this.
  • Added an 'Additive' version of the sprite shader
  • Fixes:
    • Fix for Autocomplete error where you could select item off the end of the list
    • Updated api links to point to new url
    • Fixed Start/Stop dialog tree not consuming the click event
    • Speech-box null error fix.
    • IDialogOption.TimesUsed now increments correctly.
    • Fix for warnings in unity 2019+.
    • Fix for removing active inventory from player.
    • Script Edtior: Fix for autocomplete not working for GlobalScript member variables, when editing GlobalScript functions

v0.13.1 (9 Apr 2021)

  • Dialog scripting improvements
  • Dialog tree guis:
    • Now scroll with up/down buttons (Thanks to StickGrinder)
    • Can now be aligned from bottom or top
    • Have option to color any images in the option object, along with the text
    • Can have option text wrap or truncate (Thanks to StickGrinder)
  • Default template:
    • Now uses BaSS fonts, and brighter UI
    • Includes same fonts that the 9-verb one has
    • Updated dialog gui with scrolling
    • Added image dot point in-front of each option
  • 9-verb template:
    • 9-verb dialog tree now fixed height and options top-aligned
    • 9-verb: "WalkTo" verb now handled per-object
    • Code moved to separate file, so other extentions can still be added easily later
  • Added "Create Polygon from Sprite" button to prop
  • Misc Scripting Changes
    • Any dialog text can now include variables by using braces. eg.
      • Dave: Hello {C.Barney.Description}, nice to meet you.
      • Display: You have {numCoins} gold coins.
    • Added RoomScript.EnterFromEditor and RoomScript.FirstTimeVisited. For easy access in Room scripts.
      • eg: if ( EnteredFromEditor ) I.ItemYouNeed.Add();, or if ( FirstTimeVisited ) Dave: I've never been here before!
  • Minor changes:
    • Added right-click context menu for items in quest editor lists (characters, hotspots, etc). Just has Rename/Delete/New options for now.
    • Animations list is no longer updated for prefab variant rooms. So variant will always use their root prefab's animation list. (Helps if using prefab variants as rooms)
    • Added util function: Static WeightedShuffledIndex.Select function for quick weighted shuffled list selection
    • Tidied up Prop, and Hotspot inspector layout
    • Added "Sortable" component for when you want to give other renderable things a baseline, so they sort against props/characters
  • Fixes:
    • Background room changes now "consume" the interaction. So you don't see Unhandled interactions when an interaction just changes the room.
    • Walkable polygon display (yellow line) now takes collider offset into account
    • Fix for exception in QuestScriptEditor when finding the play mode tint colours
    • Pixel camera fix when layers are different order
    • Fix for walkable area holes only working on the first walkable area
    • When restoring game where music was fading-out, it no longer keeps playing
    • PowerSprite Animator: Change to fix unloaded addressable animations crashing unity
    • Fix for quest objects not deleting properly
    • Fixed mini button left style text being aligned left (by ReferenceFinder and SelectionLog)
    • Timers no longer update when game is paused
    • Room/GlobalScript Update is no longer called after scene change, until after OnEnter is called first time. (previously was called once or twice). Order is now: OnEnter -> OnEnterAfterFade(until first blocking function) -> UpdateBlocking -> Update -> OnEnterAfterFade(the rest of it)
    • Autocomplete fix for linux (Thanks to StickGrinder)
    • Fix for the ChangeRoom error in unity v2019 (no longer an error, now just a debug log, but still needs proper fixing)
    • Unity 2020 warning fixes (thanks to ThriveNugget)
    • Fix for deleting quest object resulting in mixed EOL warnings in QuestScriptAutos
    • Fix for running an inline dialog while between StartCutscene and EndCutscene functions (Thanks to IrreverentPixel)

v0.12

v0.12.7 - Beta (6 Mar 2021)

  • Added Pixel Camera option with smooth camera/parallax preserved.
  • Added more quest script editor themes, and you can now customize the font too
  • Mouse cursor pos now shown at bottom of Room tab
  • Editor layout tweaks to room tab name display & tools tab settings layout)
  • Re-enabled vertex snapping on font shader. Fonts should
  • 9-Verb Template, minor fix for Verbs gui highlighting things during dialog tree sequences

v0.12.6 - Beta (26 Feb 2021)

  • Dark theme, and custom colours for the quest Script Editor. Set it under Editor settings in the Tools tab. Thanks to Dom De Re (irreverentpixel) for help with this one!
  • Fix & enhancements for animation name autocomplete animation names added in 0.12.5

v0.12.5 (22 Feb 2021)

  • Fix when updating from v0.10 (inventory was no longer clickable)
  • Autocomplete for animation names and audio cues. Eg: C.Dave.PlayAnimation(..., or P.Door.Animation = ..., or Audio.Play(...
  • Some other minor fixes

v0.12.4 (17 Feb 2021)

v0.12.0 (5 Feb 2021)

  • Editor:
    • Script function list: https://i.imgur.com/I8RF3As.png
      • Script editor function list readability improvements. Makes it easier to find a function in a big room script. Friendly version of functions is displayed, and they're sorted into Room, Hotspot, Prop, Region, Character, and Custom sections.
      • "+New function" button to create simple functions without having to jump into VS.
    • Added spellcheck to quest script editor to help me with my terrible spelling. Can be disabled in editor settings.
    • Added 'Inventory Click Style' to PowerQuest Project Settings. Lets you have inventory that is "used" when clicked on (like lucasarts games) instead of "selected" (like broken sword)
    • Prop Parallax values now make more sense and are explained in-editor.
    • Added debug buttons when game is running- Rooms have "Teleport" button, and Inventory Items have "Give" button.
    • Default audio mixer groups can now be added to SystemAudio for SFX, Music and Dialog.
    • Cleaned up the project context menu:
      • Moved 'Create anim' and 'Create audio cue' into the main context menu
      • Keyboard shortcut for 'Create anim from sprites'. (Ctrl+Alt+Shift + A) with sprites selected.
      • Keyboard shortcut for 'Create audio cue from clips'. (Ctrl+Alt+Shift + C) with audio clips selected.
      • Moved other items into Create/Powerhoof/ submenu
    • Added more convenient accessors to dialog option state from the dialog. IDialog.GetOption(string option), IDialog.GetOptionOn(string option), IDialog.GetOptionUsed(string option).
    • Using the integer version of dialog option functions now acts the same as the string version, referencing the name. (instead of index into the list of options)
  • Game:
    • Animation Events:
      • LoopStart and LoopEnd: For looping anims with in/out transitions. (eg: Crouching to pick something up). When the LoopEnd event is hit, the anim will jump back to the LoopStart event, until the anim is stopped/changed, when it will play the rest of the anim. Example Gif: https://i.imgur.com/BWJFGac.gif
      • Offset: for use in character animations that moves character from Node1 to Node2. Useful for anims that have character movement built into them.
      • WalkSpeed, WalkSpeedX, WalkSpeedY and WalkSpeedReset: Temporarily override character walk speeds. Useful for walk anims like "limping" etc. Example Gif: https://i.imgur.com/Y9W0pgF.gif
      • AnimSpawn tag in character to simply spawn the specified game object at the character's location
    • Background dialog text is now sorted behind foreground dialog text
    • Default GlobalScript has check to ignore mouse-clicks on GUIs. Makes it easier to have inventory that doesn't pause game.
    • Anims don't restart when you play the same anim again anymore, the play function is just ignored. Makes transitions easier.
    • When Idle/Talk animation changes, the anim is now played from the start
    • Added an audio mixer to sample project with submixers for SFX, Music and Dialog
    • Anim events now called on room script even if the event's on a character animation
    • Added debug keyboard shortcut to restart from current room (~+F9). So you can tweak and test OnEnterRoom room script without having to stop/start playing.
    • Camera Shake now has default duration of 0.1f instead of 0, to give more consistent shakes.
  • Scripting:
    • Global script can now be accessed with Globals. without breaking hotloading. (Don't have to use GlobalScript.Script any more)
    • In QuestScript you can now access the player by typing Plr. as slight shortcut to C.Plr
    • Added ICharacter.VisibleInRoom to check if character is visible, and in the current room
    • Camera: Added "overTime" parameter to Camera.SetCharacterToFollow(). Causes the camera to transition smoothly to new position.
    • ICharacter.WalkToBG now takes optional "Face after walking" parameter so you can make characters face a direction after finishing their walk
    • Added diagonal Character face functions: ICharacter.FaceUpRight(), ICharacter.FaceUpLeft(), ICharacter.FaceDownRight(), ICharacter.FaceDownLeft()
    • ICharacter.PlayAnimationBG(...) now has pauseAtEnd parameter. If true, character will stay on last frame until ICharacter.StopAnimation() is called
    • RoomScript.OnEnterRoomAfterFade() is now called immediately after RoomScript.OnEnterRoom(), rather than a few frames after fading in. This means you can now set up your room (character positions, etc) in this function, and OnEnterRoom is no longer really necessary. Could potentially change to a single 'OnEnter' function later for simplicity.
    • "Play from" function attribute. Advanced functionality for helping you skip to later sections of your game while testing. To use add a function that sets up the game state how you want, and give it the [QuestPlayFromFunction] attribute. Then the function can be selected from a dropdown in the room tab, and it will be called before OnEnterRoom.
    • Added IPowerQuest.GetMouseOverType() as shortcut to IPowerQuest.GetMouseOverClickable().ClickableType. Mainly for use in GlobalScript.OnMouseClick().
    • Added eQuestClickableType.None, for when mouse isn't over anything.
    • Added function Utils.GetTimeIncrementPassed(float min, float max, ref float timer). Returns true when a random timer has passed, just needs a float timer member variable.
  • Fixes:
    • Moving/fading props now pauses with game
    • Timers now actually work :P
    • Fix for restoring save game when dialog's active
    • Fix for editor hang for 1.5 sec when re-focused playing game (due to hotloading scripts check)
    • Fixed some infinite loops in FaceBG functions I'd never tested
    • Fix for warning when talking with no mouth node, and inactive mouth object
    • Character Hide/Disable now disables clickable
    • Interactions starting with WalkToBG can no longer be cancelled when they shouldn't be
    • QuestScript fix for functions starting with "End" inserting yield return E.Break; before the function on save
    • Fix for C.VisibleInRoom if character has no room set
    • UpdateBlocking, OnEnterRegion and OnExitRegion now automatically call CancelCurrentInteraction()
      • CancelCurrentInteraction no longer Unblocks (which was breaking things)
      • Removed E.CancelCurrentInteraction() and E.EnableCancel(), since they don't really work without breaking things
    • OnEnter/OnExitRegion no longer called on save/restore
    • Tweak to movieplayer to stop it ending on application defocus
    • Parallax updated when prop position set even when paused
    • Fixed "build lipsync data" progress bar not showing
    • Removed "failed to find animation" message when no animation specified
    • Fix for lipsync with separate mouths not working first time if no talk anim specified
    • Fix for possible null ref in SystemAudio after restoring game
    • Animation events now call functions in characters/rooms correctly, and automatically add QuestAnimationTriggers component for you.
    • Fixes for transitions when changing animation multiple times in single frame
    • Shift-click "global script" button now opens it immediately in editor like other script buttons
    • Fixed anim events getting called twice on components
    • Audio.PlayMusic() now gives warning if cue not found (instead of breaking)
    • Fix for UseCount not being incremented until start of next interaction (caused errors when checking UseCounts in Region.OneEnter)
    • Fix for webgl builds (Set webGLException setting for new projects)
    • Removed obsolete functions from GlobalScriptBase
    • Minor fixes merged from PowerSprite Animator
    • Some null check fixes

v0.10

v0.10.2 (1 September 2020)

  • Tweaks
    • Exposed Camera.Snap(), to snap camera to its target position
    • Added Vector2 extention WithOffset. So you can do C.Plr.Position = Point.Exit.WithOffset(100,12); Instead of Point.Exit + new Vector2(100,12); (It's a bit more natural)
    • Removed debug "on enter room" autosave since it wasn't really useful
    • Changed "Hotload scripts" shortcut to shift-F7 so it no longer conflicts
  • Fixes:
    • Pathfinder now handles inside-out polygons
    • Fix for dialog tree options getting into endless loop of "Dialog option ids cannot be empty". (now only checks when option id has changed)
    • OnGameStart now called before the first OnEnterRoom
    • PowerSprite Animator: Autocomplete now works for events with names 3 characters or longer (was 5, so tags like "move" didn't work)
    • Fix for Renaming Hotspots/Props/Regions. They are now only renamed in their own room's script (so it won't break objects of same name in other rooms)
    • Fix for "dialog text offset" being used inconsistently when character is invisible. Now dialog object is positioned exactly at character position when not visible.
    • Fix for mouth being visible when plr is in room with "Player Visible" set to false
    • HandleInteract for characters now tries function in room before falling back to character script function
    • Face functions now use Position accessed from IClickable, rather than instance, so you can face characters before they're moved to the current room

v0.10.1 (30 July 2020)

  • NOTE: Minimum Unity version increased to 2018.4
    • This is now the recommended version to use for full support
  • Editor Tweaks:
    • Added "smart" asset refresh
      • Stops unity freezing and compiling whenever a script changes.
      • When a script has been edited, unity won't compile it until you hit the "Compile" in the QuestScript window, or play the game. (Or press Ctrl+R)
      • Adding/deleting quest objects also no longer triggers compile, so you can (for example) add a bunch of inventory items without having to wait for compile between each.
      • Press Ctrl+R if you need to force a compile/import
      • This functionality is on by default, can be turned off in PowerQuest Tools tab->Editor Options-> Manual Asset Refresh & Compile option
    • Quest script now shows prompt when you had a compile error, since it's easy to miss them in the console.
    • Clicking room Scene buttons while game is running now teleports player to that room (for testing)
    • Inventory item inspector now has a "Give Item" button that gives player the item when game is running, handy when testing.
    • Renamed quest script "View in editor" to "View c#"
    • Quest script keyboard shortcuts: Ctrl-S to save, F7 to save & compile
    • Added checks when creating/renaming quest object, so you can't create duplicate named, or incorrectly named object that will break things.
    • Better walkable area editor for unity 2018 to 2019.2.
    • Removed broken walkable area button for unity 2019.3 and up.
  • Scripting
  • Fixes/Tweaks:
    • PowerSprite animator anim nodes placed on 0,0 are no longer stripped
    • Fix for "Select" button on room tab not working while game is running
    • Fixes/Improvements to advanced save/restore functionality, see IPowerQuest.AddSaveData() for more information
    • Fix for crash when restoring games with .net 4.x
    • Fixed rooms/characters/etc sometimes disappearing from powerquest list (Removed auto-deleting null rooms/characters/etc. Since it was constantly breaking)
    • Fixes for unity running PostProcessAllAssets repeatedly, and slowing down the import
    • Fix for warning when editing headers
    • Quest script: Fix for warning on save when editing non-public methods
    • Some improvements to stop later versions of unity being so slow saving prefabs all the time.
    • Fix for unity not compiling new scripts when tried to test the game with a broken script
    • Script hotloading compile errors match unity compile errors
    • Fix for warning when editing new function or script in quest script editor
    • No longer showing compiler generated functions in questscript dropdown or auto-complete
    • Quest script no longer defocuses on ctrl+s save
    • Setting clickable collider id of character that's not in the room now works
    • "Import sprites from photoshop" now updates asset database
    • Fixed version checker getting the incorrect version from the wrong place
    • Fixed Regions autocomplete
    • Fix for removing regions resulting in broken pathfinding. Pathfinder, no longer ignoring pathnodes that aren't in "Area", since that meant that removing regions didn't work
    • Power Sprite Import: Default anim rate now 100
    • Power Sprite Import: Moved import/create anim from sprites in menu to be more accessible
    • Added warning if text id added to script without being processed by text manager
    • Fix for Audio cue editor exposed internal unity variable
    • Fix: PlayAmbientSound didn't fade correctly
    • Fixed sprite import settings n ot working in 2019.3 and later
    • Legacy sprite packer should now automatically be enabled in project settings
  • Added Licence.txt (using MIT licence)

v0.9

v0.9.2 (4 June 2020)

  • Fix for black screen in builds

v0.9.1 (1 June 2020)

  • Audio:
    • Added ability to pause/resume/stop sounds by cue name. Makes it much easier to handle looping sounds now.
            Audio.Play("FireCrackle"); // Start a looping sound
            Audio.GetHandle("FireCrackle").pitch = 0.5f;  // Tweak the playing sound
            Audio.Stop("FireCrackle",0.2f); // Stop the playing sound
      
    • Audio cues are now automatically added to the audio system (no more clicking that "add cue" button). Can be disabled Tools/Audio Settings.
    • Added custom audio falloff function SystemAudio.UpdateCustomFalloff(...), so you can have audio that gets louder/pans as player gets closer
    • Audio state now saves and restores
    • Added ability to set mixer group per-cue. So you could do environmental effects more easily now
    • Tweaks to demo scene, example of sound and music playing
    • Fades no longer use coroutines, so they're more robust
    • Clip End Time now uses actual clip time rather than coroutine (more robust, and works in preview)
    • Removed FootstepAltSound. Use multiple sound clips instead (or custom anim event for like peglegs or whatever)
  • Inline Dialog Options:
    • You can now make dialog options appear mid-script, without having to set them up in editor.
    • See IPowerQuest.WaitForInlineDialog(...)
        Barney: You fight like a dairy farmer!
        E.WaitForInlineDialog("How appropriate, you fight like a cow", "I am rubber, you are glue", "I'm shakin' I'm shakin'");
        if ( E.InlineDialogResult == 2 )
            WinSwordFight();
      
  • Animation Events improved
    • When an Anim Events is hit, it'll now try and call function with matching name in the Character, Room or Global Script.
      • EG. Add an anim event "Vomit" in PowerSprite Animator, and it'll try and call void Vomit() in your script
    • WaitForAnimTrigger function now much easier to use. Eg, if you have animation event "Vomit"
        C.Dave.PlayAnimationBG("BeRealSick");
        C.Dave.WaitForAnimTrigger("Vomit");
        Audio.Play("GrossVomitSFX");
        Barney: Disgusting! You're Fired!
      
    • WaitForAnimTrigger now also stops if animation ends even if tag not hit, so game won't lock if that occurs
  • Character "Transition" anims
    • Character components now have Turn Anims and Transition Anims fields.
    • These let you set up an animation that'll automatically play, either:
      • Between two other animations. EG: between Idle, and IdleHoldingGun
      • Between two directions (eg: turning from left to right)
    • 'To' and 'From' anims use regular expressions. Eg: "Talk.*" will match all anims that start with "Talk"
  • Camera:
    • Improvements to smooth parallax movement for pixel art games
    • Camera can now transition from one position override to another with ICamera::SetPositionOverride(...)
    • Camera can now transition between zooms over time with ICamera::SetZoom(...)
  • Scripting/API:
    • Added E.Restart() function, for restarting the game from the first scene
    • Added OnExitRoom() function for global script and room scripts. Called after fadeout before entering next room
    • Added IPowerQuest.DisableAllClickablesExcept(...), and IPowerQuest.SetAllClickableCursors(...) functions.
      • For temporarily disabling/changing cursor of all clickables in room.
      • They are also now automatically restored on room exit.
    • IPowerQuest.ProcessClick now returns true if an action was queued
    • Added R.EnteredFromEditor function in room scripts to check if you've entered the room from unity editor (helpful for debugging)
    • Added Callbacks for customisation
      • On inventory collected
      • When Character start talking, and stop talking (CallbackOnSay, CallbackOnEndSay)
      • Added ability to do custom fades using the ratio in MenuManager, using callback PowerQuest.Get.GetMenuManager().CallbackOnUpdateFade and PowerQuest.Get.GetMenuManager().GetFadeRatio()
    • Talking property now returns true when there's dialog being said, even if it's background dialog or dialog shown when walking/animating (not in talk state)
    • Exposed "E.GetBlocking" function
    • Added option to E.UseFancyParalaxSnapping. Turn off for pixel art games when you want to animate your camera (it makes parallax effects smoother)
    • Added ICharacter::CancelSay(), cancels any current dialog the character's speaking (useful with SayBG()
    • Setting IInventoryItem::Owned = false now removes ALL of the item if character held more than one
    • C.CharacterName.Show() and C.CharacterName.Enable() now move the character to the current room if they weren't in there already
    • More comments/documentation
    • Dialog option functions now take a 'IDialogOption option' parameter, so you can change the current option more easily inside. eg: option.Off() instead of OptionOff("CurrentOptionName").
    • Added a bunch of convenient alias/shortcut functions for things you could already do (may remove non-useful ones in future)
      • R.RoomName.Enter() to change current room
      • R.RoomName.Current and R.RoomName.Active to check if in room (instead of R.Current == R.RoomName)
      • Hide() Show(), Enable(), Disable() functions are now consistent across Character, Prop and Hotspots
        • Note, if you were previously using C.CharacterName.Show(false,true); to set character clickable, you now should call C.CharacterName.Clickable = true; instead
      • Added aliases to C.Player. C.Plr, C.Ego. (Whichever I end up favouring I'll keep, and remove the rest)
      • In the Script Editor, changed hotspot/prop shortcuts to H and P, and Regions/Points to Region/Point.
  • Quest Script Editor Tweaks:
    • Added "next" and "previous" arrows to navigate back and forth between functions quickly
    • Now scrolls to match where your cursor is as you type/nav around yaaay
    • Multiline indent and outdent. (Select multiple lines, then tab or shift-tab)
    • Tab now shows file instead of function
    • enums now autocomplete
    • Global types/vars/functions can be added to autocomplete using the [QuestAutocompletable] attribute
    • Changed hotspot/prop shortcuts to H and P. Changed Regions/Points to Region/Point.
    • Now reloads function list on focus
    • Fixes:
      • Fix for yield returns being added mid-line
      • Revert now shows correct confirmation dialog
      • No longer losing changes when press escape
      • Fixed Bugs with switching between two text editors in same window
  • Editor Tweaks:
    • Moved base supported Unity version to 2017.4 (Will probably move this again soon, since that's pretty old still)
    • Lists of rooms/characters/items are now foldable. So you can hide/show what you're interested in looking at. Useful for bigger projects.
    • Tools tab redesigned so data for different quest objects is foldable.
    • Tools tab now has Camera settings
    • TextManager: Added ability to export text from only specified rooms or characters
    • Hold Shift when clicking any script button (Use, look, etc) to open directly in the IDE (monodevelop/VS)
    • Lip sync/Mouth anims:
      • Added ability to set lipsync extended mouth shapes
      • When there's no lip-sync data, game randomly chooses mouth frames
      • When mouth node is set to (0,0) regular talking anim frames are used.
    • Added ability to override text shader in QuestTest component ShaderOverride
    • Added WIP feature for platform specific sprites in text:
      • To use: Add to list of "Text Sprites" in PowerQuest Project Settings, then tag in text like "Press [B_Button] to start" where "B_Button" is the name you gave the tag.)
    • Debug log now outputs message when tried to play an animation that doesn't exist
    • Sprites are now automatically assigned to props/characters if the name matches, even if there's no animation (so you don't have to create an anim for it to auto-work)
    • PowerSprite Animator updated to version 1.7
    • PowerSpriteImporter:
      • Can now name aseprite layers "Guide", "Ignore" or "ignore", to stop them being imported
      • Now accepts .aseprite files (previously they had to be '.ase')
      • Can now set default compression settings
    • Texture post processor: Not setting pixel filtering unless it's a pixel game
    • Added missing On Start, On Stop function buttons to DialogTree component
    • A few fixes for using unity light theme
    • Editing a point now un-selects other objects, makes it easier to see what you're doing
    • "Show walkable areas" now un-selects other objects, makes it easier to see what you're doing
  • GuiDialogTree changes:
    • Line Spacing is now the space between the lines, instead of total space (ie: takes render bounds height of dialog options into account)
    • Guis now have a PauseGame flag to specify whether they pause the game seperately to whether they're modal (capture mouse input)
    • Default GuiDialogTree no longer pauses the game
  • Game Runtime Tweaks:
    • Background Character/Prop Animations are now skipped with skipped cutscenes (unless they're looping)
    • Regions no longer trigger OnEnter if player starts on the region
    • Mouth now animates when talking even if not in talk state
    • Updated save crypto key. Previous save files won't load, but doesn't matter cause no one's shipped a game with this yet ;)
    • Changed facing segment angle to be 45deg instead of 60deg for cardinal directions and 30deg for diagonals
    • Setting FadeColor immediately changes the faded colour if already faded out rather than waiting for next fade out/in
    • GuiInfoBarComponent can be set to hide when dialog bar is visible
    • Demo dialog gui has black background on by default, and no longer pauses game
    • Added some fonts from crawl and monkey island, removed the gothic bold one
  • Misc Fixes:
    • Fix for quest script Return Command
    • Fix for GuiDialogTree listing items in reverse order
    • Fixed UnhandledEvent with one inventory item on another
    • PQ: Fixes for character restarting walk anim when changing direction
    • 'instant' flag now works in ICharacter::Face(Vector2 location, bool instant) function
    • 'Occurrences' now saved (eg: if ( E.FirstOccurance("KissedToad")... )
    • Value types of classes inside scripts are now saving correctly
    • Consume event no longer blocks the game for a frame (so you won't see hud flicker off and on again)
    • Fix for region "obstacle" being added twice, then not removed
    • Fix for anim nodes not automatically being added for characters with lipsync/mouth anims
    • Sub-sprites of characters are now tinted along with characters
    • Points editing now in undo stack
    • Fix for when dialog text is up next to edge of screen
    • Fix for regions handling other characters incorrectly
    • Camera data (eg: player offset) now updated from prefab (rather than always staying default)
    • DialogText now previews text wrapping in scene
    • Cursor "mouse over gui" animation now works

v0.8

v0.8.3 (29 August 2019)

  • Added Translation support:
    • Added export/import text to CSV feature, translations can be added here
    • Add translation codes in SystemText, and set current language setting in PowerQuest.Settings
    • Non dialog strings now added to text system so they can be translated.
      • Includes: Descriptions of quest objects, strings wrapped SystemText.Localize("..."), and QuestText components with the "Localize" box ticked
  • Cursor: Added ability to outline inventory items on hover (pixel art only)
  • Added ability to set "Section" headings in dialog.
    • Section headings are ignored in-game, but display in the exported script for voice actors. Useful to add notes there for them, and describe what's happening in a section of dialog.
    • Eg. Section: Fred drops his icecream and is sad
  • Game Customisation: Refactored code to allow customisation without editing PowerQuest itself
    • Mouse Click behavior now handled in GlobalScript. So can now be customised for each game easily (see: OnMouseClick in GlobalScript)
    • Quest Objects can now have custom data added to them for each game. (eg: if you want your game's Characters to have HP, or your game's Regions to have special shader data). See Game\PowerQuestExtensions.cs
  • Audio System:
    • Cleaned up existing functionality and Documented API
    • Added functions for Ambient sound (if upgrading, change over to use the new functions instead of the ones in GlobalScript)
    • Dialog audio pans based on character position in room (and settings in SystemAudio)
    • Music and ambient audio now saves/restores correctly
    • Rhubarb lipsync now includes the "G" sound (TODO: need to add way of customising this easily)
  • Character:
    • FaceAway() function to face direciton opposite to current
    • Added "target position" accessor, to find the position a character is currently walking to
    • Added feature forsetting separate "Mouth" animation, which is positioned on a node on the character's animation.
      • Requires SpriteAnimNode component to be added to player, and a "mouth" anim set (For now)
      • Doesn't support portraits yet, but could be added later pretty easily
      • "Anim Mouth" property has been added to characters for this feature
    • Setting Characters visible/hidden enables/disables renderers of their children to. (So you can add shadows for example, and they'll hide when character is hidden)
  • ScriptEditor:
    • Multi-Tab workflow: Click the little menu icon (top right of script editor), to to Lock or Duplicate the window. (Work in progress)
    • Fixes for adding "yield return" in non-coroutines and avoiding breaking unity TextArea GuiStyles
    • Script auto-load now opens functions called with E.WaitFor(...)
    • Can now access dialog scripts by name. eg: DialogBarney.Script.MyDialogFunction();
  • Camera:
    • Camera data now saves/restores with game
    • Camera and prop parallax is now smoothed in pixel art games, but still snaps to pixel when stops
    • QuestText no longer snapped to pixel to work with smooth camera
  • GUI:
    • Ability to set which gui is used for display boxes and dialog mid-game
    • Ability to set drop-downs mouse area to center/middle
    • Added accessor for whether dropdowns are down, and ability to force off.
    • Can now set target character in inventory panel
    • Quest GUIs are now sorted by their baseline
    • Option to hide drop-down bars in cutscenes
    • Added ability to specify when an external gui is capturing mouse clicks: Powerquest.Get.CaptureInputOn()
    • Added ability to override the mouse hover description used in the info bar
    • ScreenAlign now updates immediately when offset is changed. And tweaked to work in build same as does in editor
    • Cleaned up unused button class
  • Misc Tweaks:
    • Set description fields to be "text areas" so easier to set long descriptions
    • Custom shaders are now added to PowerQuest prefab to preload them
    • Added "sharp" Font, that doesn't do pixel snapping but still displays non-blurry font
  • Misc Fixes:
    • Multiple fixes for Unity 2018.3+
    • Sequences are now only longer cancelable as soon as any character finishes walking (not just the player)
    • "GetRoomLoading" function now works
    • No longer triggering "look" interaction when look is disabled
    • Character AddInventory function now works
    • NumUse/FirstUse now works when HandleInteraction, etc is called
    • Fix for PowerSprite shaders being shared, affecting sprite tinting

Older Versions

v0.7 (5 June 2019)

  • Character's turn to face
  • Footstep and Sound tags work in player without extra components
  • Added Prop.Move(...) function
  • Updates to PowerSpriteAnimator (nodes can have preview sprites, and autocomplete functions)
  • Tabs in script editor are handled better
  • More minor tweaks/fixes

v0.6

  • Support for Unity 2018.3+ (I've found them less stable so I'd stick with earlier unless you need to upgrade)
  • Added simple Sierra style dialog box option.
  • Script editor:
  • Fixed width font
  • Ctrl+MouseScroll adjusts font size
  • Comment highlighting (kinda)
  • Skip dialog tweaks
    • Optional delay before click skips text
    • Spacebar skips text
    • ESC no longer skips text after ending a cutscene until released/re-pressed
  • Fixes
    • Fixed hang when setting text wrap width
    • StopDialog function is now blocking
    • Other minor fixes

v0.5

  • Added region based character Tinting
  • Added region based character Scaling
  • Camera functionality:
    • Camera Size now set in PowerQuest, and can be overridden in Rooms (Vertical Resolution property)
    • Camera Zoom function. (Further functionality such as zoom transitions still to come)
    • Enabled property- Allows you to to disable camera movement easily, when you want to play animations on it yourself
    • IgnoreBounds property - Useful when want to cut to other parts of scene outside the room during cutscenes
  • Quest Script editor improvements:
    • Auto-load tickbox opens up current interaction automatically while you're testing the game
    • Hotloading no longer fails when scripts access other scripts
    • Misc fixes and visual improvements
  • Video playback functions added to props
  • AudioCue cleanup and moved "Loop" tickbox to main cue (instead of per clip)
  • Added separate Music/Sound/Dialog volume settings
  • Added QuestSettings to API documentation and autocomplete
  • Lots of minor bugfixes/tweaks

v0.4

  • Refactored things so package can be distributed and projects can be updated without losing changes
  • Added Regions, separating functionality from Hotspots
  • Added diagonal anim directions
  • Added ability to change player character mid-game
  • Replaced Pathfinding with my own solution (removed PolyNav2d)
  • Updated PowerSpriteImporter and PowerSpriteAnim with new features

v0.3

  • Quest Script Autocomplete
  • Quest Script header editing
  • Added tickbox for pixel art games which enables snap to pixel, and pixel fonts
  • Can now renaming quest objects (characters, rooms, etc) from their inspector
  • Rooms now have points to easily get a position
  • Can now enable/disable different interactions in the editor (Use/Look/Inventory) for different projects
  • Added support for camera moving vertically
  • Added more complex room bounds, can be set by dragging box in the scene. So rooms no longer have to worry about being centered
  • Script Sequences can now span across room changes
  • Quest script has nicer formatting for props/hotspot (eg: Props.Door instead of Props("Door"))
  • Added convenient way of getting to another Quest object's script variables. Eg: RoomKitchen.Script.m_drawerOpen
  • Interactions can now be cancelled (most notably, the initial WalkTo in any interaction)
  • Background dialog working (DisplayBG: hello)
  • Asset importer improvements- can now right click on folder and import sprites from photoshop
  • Million other tweaks and fixes

v0.2

  • Fixes for Unity 2017

v0.1

  • First test alpha version