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.