Experimental Log

Similar to an update log, this will be a space I use to boast the new added systems, or to disappoint with added hassle or stress the system will cause due to gigantic parameter value lists.

12/8/2012 at approximately 4:55 AM

ADDED FEATURES:
Quest Log Active Quest now 100% working.
A bunch of other edits that escape me right now.

Mainly this entry is to outline how I plan to work on it after finishing. Here is the step-by-step. Priority is by position of bullet.

  • Work on library for person who PM'd me (if you are okay with your name being released, please PM me and I'll edit this biz).
  • Optimization of Code. (Code is working optimally with as little garbage left over as possible)
  • Readability of Code. (Code is in it's simplest form so it is easily de/re/constructed)
  • Ease of Use. (Code is optimized for the least amount of settings/parameter values/data table values.

12/5/2012 at approximately 5:21 PM

ADDED FEATURES:

Many variables moved to the global data table for more infinite-like quest-lines and less restrictions.

Moving to Quest Log next.

FINAL VERDICT: (At least one setting works off-map, will check more thoroughly once dialogs are finished.)

///Code has been hand-picked as there is a TON. You'll only be getting the gist but it will show you what is going on/needs to be set/etc///

//Start
    Options: Action, Create Thread
    Return Type: (None)
    Parameters
        Player = 0 <Integer>
        Show/Hide Quest Log to Start = Show <Show/Hide Option>
        Style of Objective = "" <String>
        Anchor for Dialog = "" <String>
        Width = 600 <Integer>
        Height = 200 <Integer>
        Offset X = 0 <Integer>
        Offset Y = 0 <Integer>
    Grammar Text: Start(Player, Show/Hide Quest Log to Start, Style of Objective, Anchor for Dialog, Width, Height, Offset X, Offset Y)
    Hint Text: Starts the QuestTaker System. 
    Custom Script Code
    Local Variables
    Actions
        ------- Dialogs and such
        Variable - Set Stored Variables Which Need No Player Interaction.Height = Height
        Variable - Set Stored Variables Which Need No Player Interaction.Width = Width
        General - Switch (Actions) depending on Style of Objective
            Cases
                General - If ("Dialog Item Style")
                    Actions
                        Variable - Set Global Presets.Booleans[0][Player] = True
                        General - Switch (Actions) depending on Anchor for Dialog
                            Cases
                                General - If ("Top Left")
                                    Actions
                                        Dialog - Create a Modal dialog of size (Width, Height) at (Offset X, Offset Y) relative to Top Left of screen
                                General - If ("Top Right")
                                    Actions
                                        Dialog - Create a Modal dialog of size (Width, Height) at (Offset X, Offset Y) relative to Top Right of screen
                                General - If ("Bottom Left")
                                    Actions
                                        Dialog - Create a Modal dialog of size (Width, Height) at (Offset X, Offset Y) relative to Bottom Left of screen
                                General - If ("Bottom Right")
                                    Actions
                                        Dialog - Create a Modal dialog of size (Width, Height) at (Offset X, Offset Y) relative to Bottom Right of screen
                                General - If ("Left")
                                    Actions
                                        Dialog - Create a Modal dialog of size (Width, Height) at (Offset X, Offset Y) relative to Left of screen
                                General - If ("Right")
                                    Actions
                                        Dialog - Create a Modal dialog of size (Width, Height) at (Offset X, Offset Y) relative to Right of screen
                            Default
                                UI - Display "ERROR: PLEASE DEFINE AN ANCHOR VALU..." for (All players) to Error area
                        Variable - Set Quests.Active Quests Dialog = (Last created dialog)
                        Dialog - Set title of (Last created dialog) to "ACTIVE QUEST"
                        Dialog - Show (Last created dialog) for (All players)
                General - If ("Objective Style")
                    Actions
                        Variable - Set Global Presets.Booleans[1][Player] = True
                General - If ("Custom Style")
                    Actions
                        Variable - Set Global Presets.Booleans[2][Player] = True
                        ------- You must set all the values of this style yourself.
            Default
                UI - Display "ERROR: PLEASE DEFINE A STYLE VALUE." for (All players) to Error area
        Dialog - Create a Modal dialog of size (200, 120) at (0, 50) relative to Top of screen
        Dialog - Show (Last created dialog) for (Player group(Player))
        Variable - Set Global Presets.Edit box dialog = (Last created dialog)
        Dialog - Hide the background image of (Last created dialog)
        Dialog - Create a Edit Box for dialog (Last created dialog)
        Dialog - Set (Last created dialog item) size to parent layout True for (Player group(Player))
        Dialog - Hide (Last created dialog item) for (All players)
        Variable - Set Global Presets.Edit Box[Player] = (Last created dialog item)
        Dialog - Create a Modal dialog of size (110, 75) at (0, 170) relative to Top of screen
        Dialog - Show (Last created dialog) for (Player group(Player))
        Variable - Set Global Presets.Answer Button Dialog = (Last created dialog)
        Dialog - Hide the background image of (Last created dialog)
        Dialog - Create a button for dialog (Last created dialog) with the dimensions (50, 25) anchored to Top Left with an offset of (50, 50) setting the tooltip to "" with button text "Answer" and the hover image set to ""
        Dialog - Set (Last created dialog item) size to parent layout True for (Player group(Player))
        Dialog - Hide (Last created dialog item) for (All players)
        Variable - Set Global Presets.Edit Box Answer Button[Player] = (Last created dialog item)
        Variable - Set Stored Variables Which Need No Player Interaction.Offset X = 40
        Variable - Set Stored Variables Which Need No Player Interaction.Offset Y = 65

//Set Values
    Options: Action, Create Thread
    Return Type: (None)
    Parameters
        Variable to Set = "" <String>
        Dialog Item = No Dialog Item <Dialog Item>
        Item = No Game Link <Game Link - Item>
        Max Count = 0 <Integer>
        Objective = No Objective <Objective>
        Player = 0 <Integer>
        Region = No Region <Region>
        String = "" <String>
        Text = No Text <Text>
        Threshold = 0 <Integer>
        Time = 0.0 <Real>
        Unit = No Unit <Unit>
        Unit Type = No Game Link <Game Link - Unit>
        Quest Number = 0 <Integer>
        Quest-Chain Number = 0 <Integer>
        Throttle Number = 0 <Integer>
    Grammar Text: Set Values(Variable to Set, Dialog Item, Item, Max Count, Objective, Player, Region, String, Text, Threshold, Time, Unit, Unit Type, Quest Number, Quest-Chain Number, Throttle Number)
    Hint Text: You only need to set parameters that are required for what you have to set. Check code for more details.
    Custom Script Code
    Local Variables
        Answer Key = (DOTDEEDO) <String>
        Region Key = (nop) <String>
        Hero Key = (yar!) <String>
        Time Key = (lelelelelelele) <String>
        Threshold Key = ("T" + (String(asdasdasdasd))) <String>
        Throttle Key = ("Throttle" + ((String(Quest Number)) + (String(Quest-Chain Number))) <String>
    Actions
        General - Switch (Actions) depending on Variable to Set
            Cases
                General - If ("Hero")
                    Actions
                        General - If (Conditions) then do (Actions) else do (Actions)
                            If
                                (Hero Key value exists in the Global data table) == False
                            Then
                                Data Table - Save Unit as Hero Key in the Global data table
                            Else
                                UI - Display "ERROR: HERO" for (All players) to Error area
                General - If ("Quest Dialog Item")
                    Actions
                        General - Pick each integer from 0 to Max Count, and do (Actions)
                            Actions
                                General - If (Conditions) then do (Actions) else do (Actions)
                                    If
                                        Quests.Active Quests Dialog Item[(Picked integer)] == No Dialog Item
                                    Then
                                        Variable - Set Quests.Active Quests Dialog Item[(Picked integer)] = Dialog Item
                                        General - Break
                                        General - Skip remaining actions
                                    Else
                                        General - If (Conditions) then do (Actions) else do (Actions)
                                            If
                                                (Picked integer) == Max Count
                                            Then
                                                UI - Display "ERROR: QUEST DIALOG ITEM" for (All players) to Error area
                                                General - Break
                                                General - Skip remaining actions
                                            Else
                                                General - Wait 0.0001 Real Time seconds
                General - If ("Quest Objective")
                    Actions
                        General - Pick each integer from 0 to Max Count, and do (Actions)
                            Actions
                                General - If (Conditions) then do (Actions) else do (Actions)
                                    If
                                        Quests.Active Quests Objective[(Picked integer)] == No Objective
                                    Then
                                        Variable - Set Quests.Active Quests Objective[(Picked integer)] = Objective
                                        General - Break
                                        General - Skip remaining actions
                                    Else
                                        General - If (Conditions) then do (Actions) else do (Actions)
                                            If
                                                (Picked integer) == Max Count
                                            Then
                                                UI - Display "ERROR: QUEST OBJECTIVE" for (All players) to Error area
                                                General - Break
                                                General - Skip remaining actions
                                            Else
                                                General - Wait 0.0001 Real Time seconds
                General - If ("Quest Giver")
                    Actions
                        create text tag(Player, Unit, ("<c val="000000">" + (TTaOTE."!" Text Element + "</c>")), True)
                General - If ("Region")
                    Actions
                        General - If (Conditions) then do (Actions) else do (Actions)
                            If
                                (Region Key value exists in the Global data table) == False
                            Then
                                Data Table - Save Region as Region Key in the Global data table
                            Else
                                UI - Display "ERROR: REGION" for (All players) to Error area
                General - If ("Reward.Unit")
                    Actions
                        General - If (Conditions) then do (Actions) else do (Actions)
                            If
                                Rewards.Units/Structures[Quest Number][0][Player] == No Game Link
                            Then
                                Variable - Set Rewards.Units/Structures[Quest Number][0][Player] = Unit Type
                            Else
                                UI - Display "ERROR: REWARD" for (All players) to Error area
                General - If ("Reward.Structure")
                    Actions
                        General - If (Conditions) then do (Actions) else do (Actions)
                            If
                                Rewards.Units/Structures[Quest Number][1][Player] == No Game Link
                            Then
                                Variable - Set Rewards.Units/Structures[Quest Number][1][Player] = Unit Type
                            Else
                                UI - Display "ERROR: REWARD" for (All players) to Error area
                General - If ("Reward.Item")
                    Actions
                        General - If (Conditions) then do (Actions) else do (Actions)
                            If
                                Item != No Game Link
                            Then
                                General - If (Conditions) then do (Actions) else do (Actions)
                                    If
                                        Rewards.Item as Item[Quest Number][Player] == No Game Link
                                    Then
                                        Variable - Set Rewards.Item as Item[Quest Number][Player] = Item
                                    Else
                                        UI - Display "ERROR: REWARD" for (All players) to Error area
                            Else
                                General - If (Conditions) then do (Actions) else do (Actions)
                                    If
                                        Rewards.Item as Unit[Quest Number][Player] == No Game Link
                                    Then
                                        Variable - Set Rewards.Item as Unit[Quest Number][Player] = Unit Type
                                    Else
                                        UI - Display "ERROR: REWARD" for (All players) to Error area
                General - If ("Reward.Other")
                    Actions
                        General - If (Conditions) then do (Actions) else do (Actions)
                            If
                                Rewards.Other[Quest Number][Player] == No Game Link
                            Then
                                Variable - Set Rewards.Other[Quest Number][Player] = String
                            Else
                                UI - Display "ERROR: REWARD" for (All players) to Error area
                General - If ("ParameterValue.QuestThreshold")
                    Actions
                        General - If (Conditions) then do (Actions) else do (Actions)
                            If
                                (Threshold Key value exists in the Global data table) == False
                            Then
                                Data Table - Save Threshold as Threshold Key in the Global data table
                            Else
                                UI - Display "ERROR: PARAMETER VALUE" for (All players) to Error area
                General - If ("ParameterValue.QuestTime")
                    Actions
                        General - If (Conditions) then do (Actions) else do (Actions)
                            If
                                (Time Key value exists in the Global data table) == False
                            Then
                                Data Table - Save Time as Time Key in the Global data table
                            Else
                                UI - Display "ERROR: PARAMETER VALUE" for (All players) to Error area
                General - If ("ParameterValue.QuestAnswer")
                    Actions
                        General - If (Conditions) then do (Actions) else do (Actions)
                            If
                                (Answer Key value exists in the Global data table) == False
                            Then
                                Data Table - Save String as Answer Key in the Global data table
                            Else
                                UI - Display "ERROR: PARAMETER VALUE" for (All players) to Error area
                General - If ("ParameterValue.ThrottleThreshold")
                    Actions
                        General - If (Conditions) then do (Actions) else do (Actions)
                            If
                                (Throttle Key value exists in the Global data table) == False
                            Then
                                Data Table - Save Threshold as Throttle Key in the Global data table
                            Else
                                UI - Display "ERROR: PARAMETER VALUE" for (All players) to Error area
                General - If ("ParameterValue.Quest.ChainName")
                    Actions
                        General - If (Conditions) then do (Actions) else do (Actions)
                            If
                                Or
                                    Conditions
                                        Parameter Values for Quests.Chain Name[Quest-Chain Number][Player] == No Text
                                        Parameter Values for Quests.Chain Name[Quest-Chain Number][Player] == No Parameter (Text)
                            Then
                                Variable - Set Parameter Values for Quests.Chain Name[Quest-Chain Number][Player] = Text
                            Else
                                UI - Display "ERROR: PARAMETER VALUE" for (All players) to Error area
            Default
                UI - Display "ERROR: PLEASE DEFINE A SET VALUE." for (All players) to Error area

//Set Quest
    Options: Action, Create Thread
    Return Type: (None)
    Parameters
        Basic Quest Text = No Text <Text>
        Player = 0 <Integer>
        Type = "" <String>
        Style = "" <String>
        Targetting Unit (Player's Unit) = No Unit <Unit>
        Target Unit = No Unit <Unit>
        Target Unit Type = No Game Link <Game Link - Unit>
        Timed = False <Boolean>
        Timer Name = "" <String>
        Quest Number = 0 <Integer>
        Quest Chain Number = 0 <Integer>
        Number in Chain = 0 <Integer>
        Throttle Number = -1 <Integer>
        Finishing Quest? = False <Boolean>
    Grammar Text: Set Quest(Basic Quest Text, Player, Type, Style, Targetting Unit (Player's Unit), Target Unit, Target Unit Type, Timed, Timer Name, Quest Number, Quest Chain Number, Number in Chain, Throttle Number, Finishing Quest?)
    Hint Text: Starts or Ends a Quest/Quest-Chain. Quest Chain number refers to the quest-chain in which it is housed. Number in Chain refers to it's queue number in said quest-chain.
    Custom Script Code
    Local Variables
        Quest Number = 0 <Integer>
        Quest Chain Name = No Text <Text>
        Dialog = False <Boolean>
        Objective = False <Boolean>
        Custom = False <Boolean>
        Throttle Number = 0 <Integer>
        Answer Key = () <String>
        Region Key = () <String>
        Time Key = () <String>
        Threshold Key = () <String>
        Timer = (New timer) <Timer>
        Timer Window = No Timer Window <Timer Window>
        Picked Integer = 0 <Integer>
    Actions
        ------- without a timer name, the name of the timer will default to the basic quest text
        General - If (Conditions) then do (Actions) else do (Actions)
            If
                Type == "Bypass"
            Then
            Else
                General - Else if (Conditions) then do (Actions)
                    Else If
                        (Queued(Quest Number, Quest Chain Number, Number in Chain, Player)) == True
                    Then
                        General - Wait for (Conditions), checking every 0.8 Game Time seconds
                            Conditions
                                (Queued(Quest Number, Quest Chain Number, Number in Chain, Player)) == False
        ------- FOR THE PURPOSES OF TUTORIAL ONLY, THIS CUSTOM SECTION OF CODE LIES OUT OF THE CUSTOM OPTION. IT IS HIGHLY RECOMMENDED YOU DO NOT DO THIS AND DELETE MY EXAMPLE.
        General - If (Conditions) then do (Actions) else do (Actions)
            If
                Quest Chain Number == 1
                Number in Chain == 1
            Then
                Unit - Make Probe [105.53, 38.71] Vulnerable
            Else
        ------- FOR THE PURPOSES OF TUTORIAL ONLY, THIS CUSTOM SECTION OF CODE LIES OUT OF THE CUSTOM OPTION. IT IS HIGHLY RECOMMENDED YOU DO NOT DO THIS AND DELETE MY EXAMPLE.
        Variable - Modify Stored Variables Which Need No Player Interaction.Maximum Quest Number for Chain[Quest Chain Number][Player]: + 1
        General - If (Conditions) then do (Actions) else do (Actions)
            If
                Global Presets.Booleans[0][Player] == True
            Then
                Variable - Set Dialog = True
            Else
                Variable - Set Dialog = False
                General - If (Conditions) then do (Actions) else do (Actions)
                    If
                        Global Presets.Booleans[1][Player] == True
                    Then
                        Variable - Set Objective = True
                    Else
                        Variable - Set Objective = False
                        General - If (Conditions) then do (Actions) else do (Actions)
                            If
                                Global Presets.Booleans[2][Player] == True
                            Then
                                Variable - Set Custom = True
                            Else
                                Variable - Set Dialog = True
                                Variable - Set Custom = False
        Variable - Set Quest Number = Quest Number
        General - If (Conditions) then do multiple (Actions)
            If Then Else
                General - Else if (Conditions) then do (Actions)
                    Else If
                        Or
                            Conditions
                                Parameter Values for Quests.Chain Name[Quest Chain Number][Player] != No Text
                                Parameter Values for Quests.Chain Name[Quest Chain Number][Player] != No Parameter (Text)
                    Then
                        Variable - Set Quest Chain Name = Parameter Values for Quests.Chain Name[Quest Chain Number][Player]
        General - If (Conditions) then do multiple (Actions)
            If Then Else
                General - Else if (Conditions) then do (Actions)
                    Else If
                        Or
                            Conditions
                                Throttle Number != -1
                    Then
                        Variable - Set Throttle Number = Throttle Number
        General - If (Conditions) then do (Actions) else do (Actions)
            If
                Timed == True
                (Time Key value exists in the Global data table) == True
            Then
                General - If (Conditions) then do (Actions) else do (Actions)
                    If
                        Or
                            Conditions
                                Timer Name != No String
                                Timer Name != No Parameter (String)
                    Then
                        General - If (Conditions) then do multiple (Actions)
                            If Then Else
                                General - Else if (Conditions) then do (Actions)
                                    Else If
                                        Quests.Timer Window[(Picked integer)][Player] == No Timer Window
                                    Then
                                        Timer - Start Quests.Timer[(Picked integer)][Player] as a One Shot timer that will expire in (Time Key from the Global data table) Game Time seconds
                                        Variable - Set Quests.Timer[(Picked integer)][Player] = (Last started timer)
                                        Variable - Set Timer = (Last started timer)
                                        Timer - Create a timer window for (Last started timer), with the title ((TTaOTE.Time to + " ") + ((Text(Timer Name)) + ": ")), using Remaining time (initially Visible)
                                        Variable - Set Quests.Timer Window[(Picked integer)][Player] = (Last created timer window)
                                        Variable - Set Timer Window = (Last created timer window)
                                        Timer - Show (Last created timer window) for (Player group(Player))
                    Else
                        General - If (Conditions) then do multiple (Actions)
                            If Then Else
                                General - Else if (Conditions) then do (Actions)
                                    Else If
                                        Quests.Timer Window[(Picked integer)][Player] == No Timer Window
                                    Then
                                        Timer - Start Quests.Timer[(Picked integer)][Player] as a One Shot timer that will expire in (Time Key from the Global data table) Game Time seconds
                                        Variable - Set Quests.Timer[(Picked integer)][Player] = (Last started timer)
                                        Variable - Set Timer = (Last started timer)
                                        Timer - Create a timer window for (Last started timer), with the title ((TTaOTE.Time to + " ") + (Basic Quest Text + ": ")), using Remaining time (initially Visible)
                                        Variable - Set Quests.Timer Window[(Picked integer)][Player] = (Last created timer window)
                                        Variable - Set Timer Window = (Last created timer window)
                                        Timer - Show (Last created timer window) for (Player group(Player))
            Else
                Variable - Set Timer = No Timer
                Variable - Set Timer Window = No Timer Window
        General - Switch (Actions) depending on Style
            Cases
                General - If ("Proximity to Unit")
                    Actions
                        destroy text tag(Player, Target Unit)
                        create text tag(Player, Target Unit, (Text TTaOTE."?" Text Element 2 with color (Color((Default player Player color)))), False)
                General - If ("Unit in Region")
                    Actions
                        destroy text tag(Player, Target Unit)
                        create text tag(Player, Target Unit, (Text TTaOTE."!" Text Element with color (Color((Default player Player color)))), False)
                General - If ("Question")
                    Actions
                        destroy text tag(Player, Target Unit)
                        create text tag(Player, Target Unit, (Text TTaOTE."?" Text Element 2 with color (Color((Default player Player color)))), False)
                        General - If (Conditions) then do multiple (Actions)
                            If Then Else
                                General - Else if (Conditions) then do (Actions)
                                    Else If
                                        (Global Presets.Edit Box[Player] is visible for Player) == True
                                    Then
                                        UI - Display "You are already being asked a quest..." for (Player group(Player)) to Subtitle area
                                        General - If (Conditions) then do multiple (Actions)
                                            If Then Else
                                                General - Else if (Conditions) then do (Actions)
                                                    Else If
                                                        Timer != No Timer
                                                    Then
                                                        Timer - Pause Timer
                                        General - Wait for (Conditions), checking every 1.0 Game Time seconds
                                            Conditions
                                                (Global Presets.Edit Box[Player] is visible for Player) == False
                                        General - If (Conditions) then do multiple (Actions)
                                            If Then Else
                                                General - Else if (Conditions) then do (Actions)
                                                    Else If
                                                        Timer != No Timer
                                                    Then
                                                        Timer - Unpause Timer
                        Dialog - Show Global Presets.Edit Box[Player] for (Player group(Player))
                        Dialog - Show Global Presets.Edit Box Answer Button[Player] for (Player group(Player))
                General - If ("Custom")
                    Actions
                        ------- For any setting not already included. You can also change code on other settings for the same effect but for multiple custom settings.
            Default
        General - If (Conditions) then do multiple (Actions)
            If Then Else
                General - Else if (Conditions) then do (Actions)
                    Else If
                        Dialog == True
                    Then
                        General - Switch (Actions) depending on Style
                            Cases
                                General - If ("Proximity to Unit")
                                    Actions
                                        General - If (Conditions) then do (Actions) else do (Actions)
                                            If
                                                Quests.Active Quests Dialog Item[Player] == No Dialog Item
                                            Then
                                                Dialog - Create a label for dialog Quests.Active Quests Dialog with the dimensions (Stored Variables Which Need No Player Interaction.Width, Stored Variables Which Need No Player Interaction.Height) anchored to Center with an offset of (Stored Variables Which Need No Player Interaction.Offset X, Stored Variables Which Need No Player Interaction.Offset Y) with the text Basic Quest Text color set to White text writeout set to True with a writeout duration of 2.0
                                            Else
                                General - If ("Unit in Region")
                                    Actions
                                General - If ("Question")
                                    Actions
                                General - If ("Kill Units")
                                    Actions
                                General - If ("Collect Items/Units")
                                    Actions
                                General - If ("Custom")
                                    Actions
                                        ------- For any setting not already included. You can also change code on other settings for the same effect but for multiple custom settings.
                            Default
                                UI - Display "ERROR: PLEASE DEFINE A STYLE VALUE." for (All players) to Error area
                General - Else if (Conditions) then do (Actions)
                    Else If
                        Objective == True
                    Then
                        General - Switch (Actions) depending on Style
                            Cases
                                General - If ("Proximity to Unit")
                                    Actions
                                        General - If (Conditions) then do (Actions) else do (Actions)
                                            If
                                                Quests.Currently Active Quest-chain[Player] == Quest Chain Number
                                            Then
                                                Objective - Create a Active Primary objective for (Player group(Player)) with text (Parameter Values for Quests.Chain Name[Quest Chain Number][Player] + ((":" + "  ") + Basic Quest Text)) and description Basic Quest Text
                                                Variable - Set Quests.Active Quests Objective[Player] = (Last created objective)
                                                Proximity to Unit(Player, Type, Finishing Quest?, Quests.Active Quests Objective[Player], Quest Number, Quest Chain Number, Targetting Unit (Player's Unit), Target Unit, Throttle Number, Timer, Timer Window)
                                            Else
                                                General - Pick each integer from 0 to 200, and do (Actions)
                                                    Actions
                                                        General - If (Conditions) then do multiple (Actions)
                                                            If Then Else
                                                                General - Else if (Conditions) then do (Actions)
                                                                    Else If
                                                                        Quests.Active Secondary Quest[(Picked integer)] == No Objective
                                                                    Then
                                                                        Objective - Create a Active Secondary objective for (Player group(Player)) with text (Parameter Values for Quests.Chain Name[Quest Chain Number][Player] + ((":" + "  ") + Basic Quest Text)) and description Basic Quest Text
                                                                        Variable - Set Quests.Active Secondary Quest[(Picked integer)] = (Last created objective)
                                                                        Variable - Set Picked Integer = (Picked integer)
                                                                        General - Break
                                                Proximity to Unit(Player, Type, Finishing Quest?, Quests.Active Secondary Quest[Picked Integer], Quest Number, Quest Chain Number, Targetting Unit (Player's Unit), Target Unit, Throttle Number, Timer, Timer Window)
                                General - If ("Unit in Region")
                                    Actions
                                        General - If (Conditions) then do (Actions) else do (Actions)
                                            If
                                                Quests.Currently Active Quest-chain[Player] == Quest Chain Number
                                            Then
                                                Objective - Create a Active Primary objective for (Player group(Player)) with text (Parameter Values for Quests.Chain Name[Quest Chain Number][Player] + ((":" + "  ") + Basic Quest Text)) and description Basic Quest Text
                                                Variable - Set Quests.Active Quests Objective[Player] = (Last created objective)
                                                Unit in Region(Player, Type, Finishing Quest?, Quests.Active Quests Objective[Player], Quest Number, Quest Chain Number, (Region Key from the Global data table), Targetting Unit (Player's Unit), Target Unit, Throttle Number, Timer, Timer Window)
                                                ------- ------------------------
                                                General - Wait 5.0 Game Time seconds
                                                Unit - Order Target Unit to ( Move targeting (Center of (Region Key from the Global data table))) (Replace Existing Orders)
                                                ------- ------------------------
                                            Else
                                                General - Pick each integer from 0 to 200, and do (Actions)
                                                    Actions
                                                        General - If (Conditions) then do (Actions) else do (Actions)
                                                            If
                                                                Quests.Active Secondary Quest[(Picked integer)] == No Objective
                                                            Then
                                                                Objective - Create a Active Secondary objective for (Player group(Player)) with text (Parameter Values for Quests.Chain Name[Quest Chain Number][Player] + ((":" + "  ") + Basic Quest Text)) and description Basic Quest Text
                                                                Variable - Set Quests.Active Secondary Quest[(Picked integer)] = (Last created objective)
                                                                Variable - Set Picked Integer = (Picked integer)
                                                                General - Break
                                                            Else
                                                Unit in Region(Player, Type, Finishing Quest?, Quests.Active Secondary Quest[Picked Integer], Quest Number, Quest Chain Number, (Region Key from the Global data table), Targetting Unit (Player's Unit), Target Unit, Throttle Number, Timer, Timer Window)
                                                ------- ------------------------
                                                General - Wait 5.0 Game Time seconds
                                                Unit - Order Target Unit to ( Move targeting (Center of (Region Key from the Global data table))) (Replace Existing Orders)
                                                ------- ------------------------
                                General - If ("Question")
                                    Actions
                                        General - If (Conditions) then do (Actions) else do (Actions)
                                            If
                                                Quests.Currently Active Quest-chain[Player] == Quest Chain Number
                                            Then
                                                Objective - Create a Active Primary objective for (Player group(Player)) with text (Parameter Values for Quests.Chain Name[Quest Chain Number][Player] + ((":" + "  ") + Basic Quest Text)) and description Basic Quest Text
                                                Variable - Set Quests.Active Quests Objective[Player] = (Last created objective)
                                                Question(Player, Type, Finishing Quest?, Quests.Active Quests Objective[Player], Quest Number, Quest Chain Number, Targetting Unit (Player's Unit), Target Unit, (Answer Key from the Global data table), Throttle Number, Timer, Timer Window)
                                            Else
                                                General - Pick each integer from 0 to 200, and do (Actions)
                                                    Actions
                                                        General - If (Conditions) then do multiple (Actions)
                                                            If Then Else
                                                                General - Else if (Conditions) then do (Actions)
                                                                    Else If
                                                                        Quests.Active Secondary Quest[(Picked integer)] == No Objective
                                                                    Then
                                                                        Objective - Create a Active Secondary objective for (Player group(Player)) with text (Parameter Values for Quests.Chain Name[Quest Chain Number][Player] + ((":" + "  ") + Basic Quest Text)) and description Basic Quest Text
                                                                        Variable - Set Quests.Active Secondary Quest[(Picked integer)] = (Last created objective)
                                                                        Variable - Set Picked Integer = (Picked integer)
                                                                        General - Break
                                                Question(Player, Type, Finishing Quest?, Quests.Active Secondary Quest[Picked Integer], Quest Number, Quest Chain Number, Targetting Unit (Player's Unit), Target Unit, (Answer Key from the Global data table), Throttle Number, Timer, Timer Window)
                                General - If ("Kill Units")
                                    Actions
                                        General - If (Conditions) then do (Actions) else do (Actions)
                                            If
                                                Quests.Currently Active Quest-chain[Player] == Quest Chain Number
                                            Then
                                                Objective - Create a Active Primary objective for (Player group(Player)) with text (Parameter Values for Quests.Chain Name[Quest Chain Number][Player] + ((":" + "  ") + (Basic Quest Text + (" (" + ((Text((Threshold Key from the Global data table))) + ")"))))) and description Basic Quest Text
                                                Variable - Set Quests.Active Quests Objective[Player] = (Last created objective)
                                                Kill Units(Player, Type, Finishing Quest?, Quests.Active Quests Objective[Player], Quest Number, Quest Chain Number, Targetting Unit (Player's Unit), Target Unit Type, (Threshold Key from the Global data table), Throttle Number, Timer, Timer Window)
                                            Else
                                                General - Pick each integer from 0 to 200, and do (Actions)
                                                    Actions
                                                        General - If (Conditions) then do multiple (Actions)
                                                            If Then Else
                                                                General - Else if (Conditions) then do (Actions)
                                                                    Else If
                                                                        Quests.Active Secondary Quest[(Picked integer)] == No Objective
                                                                    Then
                                                                        Objective - Create a Active Secondary objective for (Player group(Player)) with text (Parameter Values for Quests.Chain Name[Quest Chain Number][Player] + ((":" + "  ") + (Basic Quest Text + (" (" + ((Text((Threshold Key from the Global data table))) + ")"))))) and description Basic Quest Text
                                                                        Variable - Set Quests.Active Secondary Quest[(Picked integer)] = (Last created objective)
                                                                        Variable - Set Picked Integer = (Picked integer)
                                                                        General - Break
                                                Kill Units(Player, Type, Finishing Quest?, Quests.Active Secondary Quest[Picked Integer], Quest Number, Quest Chain Number, Targetting Unit (Player's Unit), Target Unit Type, (Threshold Key from the Global data table), Throttle Number, Timer, Timer Window)
                                General - If ("Collect Items/Units")
                                    Actions
                                        General - If (Conditions) then do (Actions) else do (Actions)
                                            If
                                                Quests.Currently Active Quest-chain[Player] == Quest Chain Number
                                            Then
                                                Objective - Create a Active Primary objective for (Player group(Player)) with text (Parameter Values for Quests.Chain Name[Quest Chain Number][Player] + ((":" + "  ") + (Basic Quest Text + (" (" + ((Text((Threshold Key from the Global data table))) + ")"))))) and description Basic Quest Text
                                                Variable - Set Quests.Active Quests Objective[Player] = (Last created objective)
                                                Collect(Player, Type, Finishing Quest?, Quests.Active Quests Objective[Player], Quest Number, Quest Chain Number, Targetting Unit (Player's Unit), Target Unit Type, (Threshold Key from the Global data table), Throttle Number, Timer, Timer Window)
                                            Else
                                                General - Pick each integer from 0 to 200, and do (Actions)
                                                    Actions
                                                        General - If (Conditions) then do multiple (Actions)
                                                            If Then Else
                                                                General - Else if (Conditions) then do (Actions)
                                                                    Else If
                                                                        Quests.Active Secondary Quest[(Picked integer)] == No Objective
                                                                    Then
                                                                        Objective - Create a Active Secondary objective for (Player group(Player)) with text (Parameter Values for Quests.Chain Name[Quest Chain Number][Player] + ((":" + "  ") + (Basic Quest Text + (" (" + ((Text((Threshold Key from the Global data table))) + ")"))))) and description Basic Quest Text
                                                                        Variable - Set Quests.Active Secondary Quest[(Picked integer)] = (Last created objective)
                                                                        Variable - Set Picked Integer = (Picked integer)
                                                                        General - Break
                                                Collect(Player, Type, Finishing Quest?, Quests.Active Secondary Quest[Picked Integer], Quest Number, Quest Chain Number, Targetting Unit (Player's Unit), Target Unit Type, (Threshold Key from the Global data table), Throttle Number, Timer, Timer Window)
                                General - If ("Custom")
                                    Actions
                                        ------- For any setting not already included. You can also change code on other settings for the same effect but for multiple custom settings.
                            Default
                                UI - Display "ERROR: PLEASE DEFINE A STYLE VALUE." for (All players) to Error area
                General - Else if (Conditions) then do (Actions)
                    Else If
                        Custom == True
                    Then
                        ------- For any setting not already included. You can also change code on other settings for the same effect but for multiple custom settings.

12/5/2012 at approximately 12:11 AM

Quote:

All you do is set everything up with the set definition, set up the quest and it's parameters, and forget! Quests queue automatically based on the active quest, and you can bypass the system at any time with the bypass key.

ADDED FEATURES: Quest chain system implemented allowing for up to 100 separate quest-chains to be active at one time, with a total of 1 primary and 201 secondary quests at any given time.

Quest Chain names implemented for easier tracking of which quests go where and why.

2 new options on top of the quest number need to be set manually now as the queue cannot seem to handle the automation of these values correctly.

Finishing Quest? Boolean added to cap a quest-chain. This is a minor inconvenience as it stops the system from checking all missions at once for the correct one and instead will only check though the quest chain.

Various additions to all styles to make them work.

Set Value now sets more for slightly greater automation and less clutter in the parameter values list of the Set Quest definition.

Throttling implemented and Archive in the works

Throttling: Allows a quest to queue and set as normally as any other, however it will not move the queue along. Instead, it will finish and do nothing. Useful when two or more objectives need to be done, make sure to specify which to finish first though, as the system only checks for the throttled status.

Plans are in the works to make throttling a queue-slot-wide system and not a quest-number-wide system, as it currently is.

Archiving: Allows a quest to completely bypass the system but instead of setting (as bypass would) it immediately archives. Good for cinematics or secret quests/achievements.

Objective mode now fully functional.

Quote:

even though this is experimental it is very close to completion with no hopes for better automation past what is already included. So there is a lot of settings to set and it can and will get tedious.

Current ETR: 12/15/12