nicked on 10/11/2024 at 12:26
This is a small demo mission demonstrating how to set up an Optional objective in Thief 1/Gold, since the Optional functionality is only available in Thief 2.
Demo mission: (
Demo mission: https://drive.google.com/file/d/1N_ioxF9aejKsk8wyImoLjYhXy-V-Zj5y/view?usp=sharing) Google Drive download link
Instructions are included, and repeated here:
The demo mission has three objectives:
- Goal 0 = Not optional (Steal an Item)
- Goal 1 = Optional (Steal an Item)
- Goal 2 = Final (Get to the Exit)You will need to create a QuestVarTrigger archetype as this does not exist in T1 by default. Make a new object under TrapTrig called QuestVarTrigger and add S>Scripts and give it the script TrigQVar.
Create a RequireAllTrap.
Create a QuestVarTrigger for Objective 0 with property Trap>Quest Var set to =1:goal_state_0 (this sends a TurnOn signal when goal 0 is completed). Add a ControlDevice link from the QuestVarTrigger to the RequireAllTrap.
Repeat the above for
all non-optional objectives* apart from the Final one.
*
IMPORTANT NOTE 1: You do NOT need a QuestVarTrigger for any Reverse objectives (e.g. Don't kill anyone) and indeed, the setup won't work if you have them - since these are Reverse, they will only reach goal state 1 at the end of the mission anyway.
IMPORTANT NOTE 2: For any difficulty-dependent objectives (for example, if you have different loot objectives for Normal, Hard, Expert), you will need to ensure that your QuestVarTriggers are destroyed on the other difficulties. So e.g. if you have an Expert-only objective, your QuestVarTrigger for that objective will need the property Difficulty: Destroy (0,1) to ensure it is not being included on Normal and Hard.
Now create another QuestVarTrigger and give it Trap>Quest Var set to =0:goal_state_1 (this sends a TurnOn signal when goal 1 is incomplete). Add a ControlDevice link from the QuestVarTrigger to the RequireAllTrap.
Now ensure you have a unique room brush for your final room (adjust these instructions as necessary if your final objective is not a Go To Location objective). Ensure the room brush has the script TrigRoomPlayer.
ControlDevice Link the final room brush to the RequireAllTrap.
Now we have a RequireAllTrap that will pass on it's signal only when:
All non-optional objectives apart from the final one are complete
AND
The optional objective is incomplete
AND
The player has entered the final room.Now create a QuestVarTrap. Set Trap>Quest Var to =2:goal_state_1. ControlDevice Link the RequireAllTrap to the QuestVarTrap.
This means when the above conditions are met, the optional objective will be set to Cancelled.
Finally, we need anotherr QuestVarTrap with Trap>Quest Var set to =1:goal_state_2. ControlDevice link the RequireAllTrap to this QuestVarTrap.
This will force the Final objective to be set to Complete if the above criteria are met (otherwise, the final objective will not be ticked off, because the test to see if the final objective is complete is run before we disable the optional objective, and since it's not really optional because we're in Thief 1, the game doesn't think all the required criteria have been met).
A Note about Bonus objectives:
As far as I can tell, Bonus objectives are NOT possible in Thief 1, because all objectives are hard-coded to be displayed on the mission complete screen, so even if you didn't discover the bonus objective, it will be displayed as incomplete. I'm happy to be proved wrong though.
vfig on 10/11/2024 at 13:11
Quote Posted by nicked
A Note about Bonus objectives:
As far as I can tell, Bonus objectives are NOT possible in Thief 1, because all objectives are hard-coded to be displayed on the mission complete screen, so even if you didn't discover the bonus objective, it will be displayed as incomplete. I'm happy to be proved wrong though.the ending screen will not show objectives that are marked as not visible. e.g. Assassins doesnt show the "loot the hammer temple" objective anymore when you finish it:
Inline Image:
https://i.imgur.com/B7KZuT5.pngInline Image:
https://i.imgur.com/RSKZSke.png
nicked on 10/11/2024 at 21:31
Unfortunately that seems to be a specific script for Assassins, as best I can tell - it has some markers with Phase1StatusManager, Phase2StatusManager etc. as scripts, and no QVarTraps or Triggers at all.
Last time I tried to set up a bonus objective in Thief 1, I had an invisible objective, and a QVarTrigger to make it visible if the state was completed. That much worked fine, but if the objective was never completed, it would still show up as visible and completed on the mission complete screen.
vfig on 11/11/2024 at 01:37
Quote Posted by nicked
Unfortunately that seems to be a specific script for Assassins, as best I can tell - it has some markers with Phase1StatusManager, Phase2StatusManager etc. as scripts, and no QVarTraps or Triggers at all.
those scripts only deal with setting/clearing/showing/hiding quest vars during the game.
the debrief screen will not show objectives whose goal_visible_X is set to 0, regardless of if they are complete, or incomplete, or cancelled. I just confirmed this in a test mission in TG, both in dromed and in game.
nicked on 17/11/2024 at 19:47
Added a couple of important notes about Reverse and difficulty-based objectives.