Search Unity

[SALE 50% OFF] Quest Machine: Hand-Written and Procedurally-Generated Quests

Discussion in 'Assets and Asset Store' started by TonyLi, Sep 20, 2017.

  1. AGregori

    AGregori

    Joined:
    Dec 11, 2014
    Posts:
    527
    Thank you Tony, you're awesome as always!
     
    hopeful likes this.
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Glad to help!
     
  3. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    Inventory Pro has gone open source, no longer supported by Devdog, but I still use it. Does Quest Machine still integrate? Does Love/Hate still integrate with Inventory Pro, or is that even necessary?
     
    Last edited: Feb 4, 2020
  4. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi @wood333 - Yes, Quest Machine and the Dialogue System both still have Inventory Pro integration. I can't think of a use case for a Love/Hate integration; I don't think it's necessary.
     
    wood333 likes this.
  5. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    I am trying to figure out if the Quest Machine save system can handle all my needs. My player character has many script components on it. As part of my question, can the quest machine save system be used to save the Inventory Pro Player equipped items, (items the player are wearing and holding)? And is there a Quest Machine integration with Invector TPC"? I do own Easy Save, so I could use it, but if your save system system can do the job, it would be one less asset in my project, which would be good.
     
  6. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi @wood333 - Yes to both. Quest Machine's Inventory Pro integration can save the player's inventory & equipment. Quest Machine has Invector integration. It also has Easy Save integration in case you want to use it, too, for some reason.
     
    wood333 likes this.
  7. Kojote

    Kojote

    Joined:
    May 6, 2017
    Posts:
    200
    Howdy!

    You wrote in your documentary:

    Quest Machine is GUI system independent. This means you can use any GUI system. Quest Machine
    ships with a robust implementation for Unity UI that also automatically detects and supports TextMesh
    Pro. It also comes with a preconfigured UI that you can use as-is or customize to look the way you want.
    (Note: The evaluation version does not ship with TextMesh Pro support.)


    I bought her full version. According to my understanding and translation, TMP Pro should be supported.

    I just downloaded the template:

    Active Heading Text Template

    but only TEXT is supported here. All other components also seem to support only TEXT. Where can I find TMP Pro support or is there none?
     
  8. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi @Kojote - menu item Select Edit > Project Settings > Player, and add the Scripting Define Symbol TMP_PRESENT:

    upload_2020-3-6_8-30-35.png

    TextMesh Pro used to add this Scripting Define Symbol automatically. But now you need to add it yourself. (If you're also using the Dialogue System, you can use its Welcome Window to tick a checkbox that adds it.)

    Then inspect any field where you can assign a UI Text element, and unassign that UI Text element:

    upload_2020-3-6_8-34-16.png

    Now you can assign a TextMeshProUGUI or a UI Text:

    upload_2020-3-6_8-32-12.png


    That's probably what you're looking for. However, Quest Machine also has a further level of GUI system independence if you ever need it in the future. You can write your UI code completely from scratch and implement a few simple C# interfaces such as IQuestDialogueUI and IQuestJournalUI, and Quest Machine will work happily with it. This is what you'd do if you needed to make Quest Machine work with NGUI, or 2D Toolkit, or some future GUI system that doesn't exist yet.
     
    Kojote likes this.
  9. Kojote

    Kojote

    Joined:
    May 6, 2017
    Posts:
    200
    Ah, great! Thanks a lot. :)
     
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Happy to help!
     
  11. Kojote

    Kojote

    Joined:
    May 6, 2017
    Posts:
    200
    Hello @TonyLi.

    Unfortunately I have another problem. Yesterday I adapted the canvas to my graphic and two links in "Quest Machine Configuration" were removed.

    Quest Dialog UI
    Quest Journal UI

    I have both corresponding scripts in the same place as in your prefab. Unfortunately the objects cannot be dragged into the Inspector. The same problem seems to be present in the original Prefab. If I want to drag the object "Quest Journal UI" into its place in the Inspector, this doesn't work either.

    Can you tell me what this is and how to fix it?

    https://www.imagebanana.com/s/1691/8I3h6J1K.html
     
  12. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi @Kojote -

    To assign to Quest Machine’s UI fields (e.g., IQuestDialogueUI), you must drag the component itself, not the GameObject that contains it. (Technical details: This is because the field is a C# interface, not a regular class type. The Unity inspector doesn’t normally accept C# interfaces, but Quest Machine uses a custom property drawer to accept them, the restriction being that you must drag the component itself into the field.)

    upload_2020-3-10_8-39-55.png
     
    Kojote likes this.
  13. Kojote

    Kojote

    Joined:
    May 6, 2017
    Posts:
    200
    Great Support! :)
     
  14. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Thanks! Glad to help.
     
  15. cygnusprojects

    cygnusprojects

    Joined:
    Mar 13, 2011
    Posts:
    767
    Hi Tony,

    I'm facing an issue in a quest not being triggered. This is my situation:
    - On first game run there is an initial quest (I did set the quest giver to the location) that needs to be completed before going further. It's a fetch quest with 3 counters to give you an idea.
    - I created a script and assigned it to the location game object to trigger the quest start:
    Code (CSharp):
    1. public class QuestAutoStart : MonoBehaviour
    2. {
    3.     public string QuestID;
    4.  
    5.     // Start is called before the first frame update
    6.     void Start()
    7.     {
    8.         QuestState state = QuestMachine.GetQuestState(QuestID);
    9.         if (state != QuestState.Active)
    10.         {
    11.             if (state != QuestState.Successful)
    12.             {
    13.                 MessageSystem.SendMessage(this, "Let's begin", QuestID, "True");
    14.             }
    15.         }
    16.        
    17.     }
    18. }
    and these settings within the quest itself: 2020-03-10_20-03-10.png
    I have no conditions specified in the offer section.
    My issue: while the message is send the quest isn't started and added to the journal.
    Any tips/tricks?
     
  16. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    @cygnusprojects - If you add the quest to the player's Quest Journal > Quests list, your script will work -- that is, it will activate the instance of the quest that's in the player's journal.

    If the quest is only in the quest giver's Quests list, then the script will just activate the quest giver's master instance of the quest, but it won't give it to the player.

    If you want to keep the quest in the quest giver's Quests list instead of the player, use QuestGiver.GiveQuestToQuester to give it to the player and activate it. Change this line:
    Code (csharp):
    1. MessageSystem.SendMessage(this, "Let's begin", QuestID, "True");
    to this:
    Code (csharp):
    1. QuestGiver giver = GetComponent<QuestGiver>();
    2. giver.GiveQuestToQuester(giver.FindQuest(QuestID), QuestMachine.GetQuestJournal());
     
    cygnusprojects likes this.
  17. cygnusprojects

    cygnusprojects

    Joined:
    Mar 13, 2011
    Posts:
    767
    Thank you for the fast response, so I need to make sure there is an instance already available that can be activated if I understand correctly. Will give it a try.
     
    TonyLi likes this.
  18. Kojote

    Kojote

    Joined:
    May 6, 2017
    Posts:
    200
    Howdy!

    You have implemented fade-in and fade-out in your cenvas using Animator. Is there any way to deactivate them?
     
  19. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi @Kojote - Yes, just remove the Animator. Or, if you want to keep the Animator for your own purposes, clear the panel's Show Trigger and Hide Trigger fields.
     
    Kojote likes this.
  20. cygnusprojects

    cygnusprojects

    Joined:
    Mar 13, 2011
    Posts:
    767
    Hi Tony,

    I'm using the Invector integration with Questmachine and noticed the InvectorAddItemQuestAction wasn't able to remove items from the inventory when passing along negative amounts.
    I had to adapt the AddItem method with below changes to get it working:
    Code (CSharp):
    1. //var allItems = itemManager.GetAllItemInAllEquipAreas();
    2. //foreach (var item in allItems)
    3. //{
    4. //    if (item.id == itemID)
    5. //    {
    6. //        itemManager.DestroyItem(item, -amount);
    7. //    }
    8. //}
    9. var allItems = itemManager.items;
    10. vItem invectorItem = null;
    11. foreach (var item in allItems)
    12. {
    13.     if (item.id == itemID)                  
    14.     {
    15.         invectorItem = item;
    16.         break;
    17.     }
    18. }
    19. if (invectorItem != null)
    20.     itemManager.DestroyItem(invectorItem, -amount);
    Note that a caching of the invector item was needed as when you are removing multiple items a 'collection changed' error would pop-up.
     
  21. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    @cygnusprojects - Something must have changed in a recent Invector update. For the next Quest Machine release, that block of code looks like this, which effectively does the same thing.:

    Code (csharp):
    1.                 var allItems = itemManager.GetAllItemInAllEquipAreas();
    2.                 for (int i = allItems.Count - 1; i >= 0; i--)
    3.                 {
    4.                     var item = allItems[i];
    5.                     if (item.id == itemID)
    6.                     {
    7.                         itemManager.DestroyItem(item, -amount);
    8.                     }
    9.                 }
    You can get the updated package from the Quest Machine Extras page if you want.
     
    cygnusprojects likes this.
  22. cygnusprojects

    cygnusprojects

    Joined:
    Mar 13, 2011
    Posts:
    767
    Hi @TonyLi, wondering if I can pick your mind to get my current quest flow issue solved. My situation: I have a quest that consists out of 2 stages namely 1. gather some ingredients and 2. go to a specific location where the game auto removed the gathered ingredients to present a special reward. Everything works fine if you follow the standard flow as gathering all needed ingredients, go to the location and you are rewarded. However if the player does gather all the ingredients and decides to drop or remove some of the inventory the quest continues within stage 2 although stage 1 became invalid. Is there something within quest machine that can prevent this? Something like reevaluating previous quest stages?
     
  23. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi @cygnusprojects - Add a node that checks if the player no longer has enough ingredients. If this node's conditions becomes true (i.e., not enough ingredients), revert the state of the quest.

    Here's an example from the Inventory Pro integration:

    upload_2020-3-18_19-34-24.png

    This was auto-generated by Quest Machine's procedural quest generator, but you can do the same thing with hand-written quests. When the "Fetch 5 Apples" node becomes successful, it activates two nodes: "Talk to Villager" and "Revert Fetch 5".

    The "Revert Fetch 5" node checks if the player has less than 5 apples. If so, it sets the nodes back to a state where the "Fetch 5 Apples" node is active again. Since it was auto-generated, the node IDs shown in the Actions section aren't as human-readable as they could be if you made the quest by hand. but it should convey the idea. The node whose ID is "1" is the "Fetch 5 Apples" node, BTW.
     
    hopeful likes this.
  24. cygnusprojects

    cygnusprojects

    Joined:
    Mar 13, 2011
    Posts:
    767
    Thanks Tony! One headache less for me :), really appreciating Quest Machine and your support!
     
    TonyLi likes this.
  25. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Glad to help! :)
     
  26. skinwalker

    skinwalker

    Joined:
    Apr 10, 2015
    Posts:
    509
    Hello,

    I want to report a small visual problem with Quest Journal. The scroll rects under QuestDetailsPanel and QuestSelectionPanel must have the "Mask" component enabled and the Image must have an alpha of 1, otherwise when you scroll up its possible to drag the text out of the scroll window.
     
  27. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi @skinwalker - Thanks for letting me know. It got disabled for some reason. I'll make sure the prefab is updated in the next release.
     
  28. cygnusprojects

    cygnusprojects

    Joined:
    Mar 13, 2011
    Posts:
    767
    Hi @TonyLi - I'm facing some issue with the Journal UI and found the cause but no idea what to do to get it fixed.
    In my situation I'm having 2 active quests, when opening the Journal UI both are displayed so that's fine. However the first journal entry always get the yellow focus after a specific timeframe. I nailed it down to the 'Focus Check Frequency' of the UI Panel component. However whenever, whatever value I select the first item always get the focus back even after selecting the second quest. I also noticed even with 'Show Quest details on focus' on the details are only updated when pressing the button. Note I'm using a gamepad in my game so maybe I'm missing something crucial?
     
  29. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi @cygnusprojects - The Quest Journal UI has a UIPanel component. Try setting Refresh Selectables Frequency to a non-zero value such as 0.5. If it's already set to a non-zero value, please let me know.

    Through version 1.2.5, this checkbox only applies to moving the mouse pointer over the quest name. I'm attaching a patch that makes it also apply to navigating to the quest name with a gamepad. Note: This patch also includes the Quest Machine prefab, which updates the Quest Journal UI to use its scroll rect's mask. (The mask had been inadvertently disabled in a previous version.) If you've customized the Quest Machine prefab and aren't using your own copy of the prefab, only import the script, not the prefab.
     

    Attached Files:

  30. cygnusprojects

    cygnusprojects

    Joined:
    Mar 13, 2011
    Posts:
    767
    Hi @TonyLi, I'm afraid any value 0, positive or negative do reset the focus to the first item in the list. You see the details appear and the second item selected (turning yellow) but a fraction of a second later the first one has the focus back.

    I did break the prefab to use my own UI graphics ... however when turning the masks of the Scroll Rects on the complete Content isn't visible any longer ... did search for hours but didn't find anything that can cause this behavior as I did an one to one check with the settings of the original prefab. :(
    Update: the masking is working properly. Didn't notice the alpha of the image component was 0, setting it to any value higher does make the mask work.
     
    Last edited: Mar 23, 2020
  31. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    @cygnusproject - Can you send a reproduction project to tony (at) pixelcrushers.com?

    Can you compare Quest Machine's Demo scene UI setup to your own? First check that the Demo works properly in your project, in case something happens to be broken in your project.
     
  32. cygnusprojects

    cygnusprojects

    Joined:
    Mar 13, 2011
    Posts:
    767
    Sure, can take a while though as I need to reduce the project to it's essentials to make sure other not necessairy assets are stripped from it. But will first compare with the demo again, note that I'm using the Invector integration though.
     
  33. cygnusprojects

    cygnusprojects

    Joined:
    Mar 13, 2011
    Posts:
    767
    Hi @TonyLi before I made a big effort in resuce the project to it's bear minimum to show the issue I did debug further. The source of the issue is a repaint in UnityUIQuestJournalUI that's being called over and over again, even when the journal isn't visible. I did adapt the code to only repaint when the panel/form is shown and everyhting seems to work perfectly. I can sen you my changes for review if you're interested.
     
  34. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi @cygnusprojects - Yes, please PM me your changes. It shouldn't be calling Repaint() repeatedly, as in the Demo scene, so something must be going on. Your changes may provide a clue as to what's going on. Thanks!
     
  35. AGregori

    AGregori

    Joined:
    Dec 11, 2014
    Posts:
    527
    Hi there, the Emerald integration package now throws errors regarding "OpposingFactions" upon update to Emerald 2.4.
     
  36. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    I'm updating all Emerald AI integrations this week (Quest Machine, Dialogue System for Unity, and Love/Hate).
     
    AGregori likes this.
  37. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Emerald AI Integration Updated

    The Quest Machine Extras page now has an updated integration package for Emerald AI 2.4.
     
    AGregori likes this.
  38. businesstengi

    businesstengi

    Joined:
    Jul 5, 2019
    Posts:
    1
    Hi @TonyLi, thanks for the great work on this product.

    I have a quick question - I'm trying to create an animation when a condition is complete.

    For example - Carrot 1/3 has been picked up, and I would like to animate the HUD text when it turns from 0/3 to 1/3, so that there's visual feedback for the actions.

    I tried my best reading through the codebase, but I couldn't figure out how to integrate this into the repaint functions. I'm thinking that I could listen to messages from the conditions being met, and then get the strings from it to repopulate my own UI animation? I'm hoping that there's a better solution :p

    Thanks so much!

    TL;DR - Trying to add animation to HUD or Journal entries when they are being changed.

    Edit: For some more context - the HUD texts change from Active -> Complete templates. Is there a way to customize this, so that a it's a coroutine that animates active -> complete, instead of swapping a new Text template?
     
    Last edited: Apr 6, 2020
  39. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Hi @businesstengi - You could skip UnityUIQuestHUD entirely, and provide your own implementation of IQuestHUD. Or you could subclass UnityUIQuestHUD and override a few methods. Here's a rough idea of the latter:

    1. Add an Animator to the active and completed quest body templates. Configure the Animator's animator controller to do nothing by default. Define a trigger animator parameter (say 'AnimateFeedback') that animates the UI element.

    2. In your UnityUIQuestHUD subclass:
    • Maintain a list of quests that have changed their HUD content, and a bool flag to indicate if added content should be animated:
      Code (csharp):
      1. List<StringField> questsToAnimate;
      2. bool animateContent;
    • Implement IMessageHandler. Listen for the quest node state changed message, and add the quest ID to questIDsToAnimate:
      Code (csharp):
      1. void OnEnable()
      2. {
      3.     MessageSystem.AddListener(this, QuestMachineMessages.QuestNodeStateChangedMessage, null);
      4. }
      5. void OnMessage(MessageArgs messageArgs)
      6. {
      7.     questsToAnimate.Add(messageArgs.parameter);
      8. }

    • Override RefreshNow(). Use the same code that's in there now, except inside the for loop set animateContent:
      Code (csharp):
      1. foreach (var quest in questListContainer.questList)
      2. {
      3.     if (quest == null) continue;
      4.     animateContent = questsToAnimate.Contains(quest.id); //<--ADD

    • Override AddBodyContent(BodyTextQuestContent). Use the same code, except set the AnimateFeedback trigger if animateContent is true:
      Code (csharp):
      1. protected override void AddBodyContent(BodyTextQuestContent bodyContent)
      2. {
      3.     var instance = Instantiate<UnityUITextTemplate>(currentBodyTemplate);
      4.     currentContentManager.Add(instance, currentContentContainer);
      5.     instance.Assign(bodyContent.runtimeText);
      6.     currentIconList = null;
      7.     if (animateContent) instance.GetComponent<Animator>.SetTrigger("AnimateFeedback");
      8. }
     
  40. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Quest Machine 1.2.6 Released!

    Quest Machine 1.2.6 is now available on the Asset Store!

    Version 1.2.6 Release Notes:
    • Improved: Quest Journal UI > Show Details On Focus now also works when navigating to quest name with joystick/keyboard.
    • Improved: Added UIButtonKeyTrigger.monitorInput property, option to visually simulate pressed state.
    • Fixed: Scroll mask on Quest Journal UI prefab.
    • Fixed: PositionSaver on NavMeshAgents didn't restore rotation.
    • Save System: Added support for async saving; SaveSystem.SaversRestartGame() is now public.
    • Emerald AI: Updated integration for v2.4.
    • Opsive character controllers: Updated integration for version 2.2 (available on opsive.com).
    • ORK Framework: Added ORKEventsOnPausePlayer, ORKIconQuestContent.
    • uMMORPG: Updated integration for 1.189.
    • uSurvival: Updated integration for v1.74.

    NOTE: Unity has requested Asset Store publishers to submit new releases with a minimum of Unity 2018.4. The next release will require Unity 2018.4 or higher.
     
    Last edited: Apr 15, 2020
  41. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
  42. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Quest Machine & Dialogue System for Unity Comparison Chart

    Quest Machine and the Dialogue System for Unity can both do quests. For those who are asking about the differences, here's the comparison chart:

    Dialogue System & Quest Machine Features

    In brief:
    • The Dialogue System does interactive branching conversation, and provides a node-based conversation editor and field-based hand-written quest editor.
    • Quest Machine does WoW-style accept/decline dialogues, provides a node-based quest editor, and can procedurally generate new quests at runtime.
    • Quest Machine includes an integration package for the Dialogue System so you can add branching conversations to Quest Machine quests.
     
    AGregori likes this.
  43. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Reminder: Quest Machine 50% Off in Spring Sale

    upload_2020-4-24_8-9-1.jpeg

    Quest Machine is 50% off for a limited time in the Asset Store's Spring Sale.
     
  44. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Spring Sale Ending Soon - Quest Machine 50% Off

    Reminder: The Asset Store's Spring Sale ends on April 29. Get Quest Machine for 50% off before the sale ends.

    upload_2020-4-27_8-30-38.png
     
    AGregori likes this.
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Spring Sale Ends Today - Quest Machine 50% Off

    The Asset Store's Spring Sale ends today at midnight Pacific time.

    Is Quest Machine on your list? If so, get Quest Machine for 50% off before the sale ends tonight.

    upload_2020-4-29_8-47-0.png
     
  46. AGregori

    AGregori

    Joined:
    Dec 11, 2014
    Posts:
    527
    Hi there. The AC integration package seems to be incompatible with the latest AC due to apparent major changes to "ISave".
     
  47. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Last edited: May 9, 2020
  48. AGregori

    AGregori

    Joined:
    Dec 11, 2014
    Posts:
    527
    Awesome!
    The ISave changes were introduced by 1.71 as of today though, but I assume your update covers that.
     
  49. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Yes, sorry, I typed the wrong version in my post above, but the integration itself does work with the latest AC.
     
  50. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,694
    Quest Machine 1.2.7 Released

    Quest Machine 1.2.7 is now available on the Asset Store!

    This update brings many improvements to the Quest Editor window, such as: copy/paste; multiselecting nodes to reposition, delete, auto-arrange, or copy then; and optimized rendering and fixes for some previous UI issues.

    NOTE: The minimum Unity version is now Unity 2018.4.

    Release Notes:
    • UI improvements and fixes:
      • Copy/paste nodes.
      • Multiselect nodes and drag/delete/arrange.
      • Optimized node rendering and fixed window clipping.
    • Added: Tags {QUESTID} and {QUEST}.
    • Improved: Welcome window has checkboxes to enable support for Physics2D, new Input System, and TextMesh Pro.
    • Improved: Added Conditions Events to Quest Control component.
    • Improved: Added DeselectPreviousOnPointerEnter component.
    • Improved: Added InputDeviceManager.isInput Allowed.
    • Fixed: Enabled disabled UI mask in dialogue UI.
    • Text Tables: Added ability to import text table into another.
    • Save System: Changed: Savers' Save Across Scene Changes checkbox is now ticked by default.
    • Save System: DestructibleSaver.RecordDestruction is now public.
    • Save System: Added saveDataApplied C# event; added OnDataApplied() event to SaveSystemEvents.
    • Save System: Improved singleton management.
    • Save System: Fixed: LoadEnded event is always called when scene loads ends, not just if events were assigned at design time.
    • Adventure Creator: Updated for 1.71.
    • Compass Navigator Pro: Added QuestTrackingPOI to toggle quest-related POIs on and off.
    • Emerald AI: Updated for 2.4.0.1.
    • ORK: Updated inventory/quest counter monitoring to handle party configurations more flexibly.
     
    hopeful and AGregori like this.