I want it to link to two passages. It will not let me do that.
The (set:) macro in your example is assigning a Boolean true value to the $blah story variable but in your (if:) macro you are comparing the current value of $blah to a String value, and this is why that condition expression never evaluates to to true. The following example show the correct way to check if a Boolean based story variable equals true or false.
(set: $variable to true)
(if: $variable)[Shown if the variable currently equals true.]
(if: not $variable)[Shown if the variable currently equals false.]
So the if macro in your example should look like the following
[[Passage 1 Link Here]]
[[Passage 2 link here]]
note: There should be no white-space characters between the closing parentheses ")" of the macro and the open square bracket "[" of the macro's associated hook.
How would I name a variable if the following scenario happened
There are a number of ways you can achieve the effect you want, the following solution uses three Boolean based story variables to track if each of the three passages have been seen yet.
1. Initialise the three varaibles within your project's startup tagged special passage.
(set: $seen1 to false)
(set: $seen2 to false)
(set: $seen3 to false)
2. In each of the three passages use a (set:) macro like the following to update the relavent variable to true, you will need to change which variable is updated based on which of the three passages you are editing.
eg. name the variable $seen1 in the 1st passage, $seen2 in the 2nd passage, and $seen3 in the 3rd.
(set: $seen1 to true)
3. Add the (if:) macro to all three passages, it conditionally displays the relevant (link-goto:) macro based link when all three variables equal true,
(if: $seen1 and $seen2 and $seen3)[(link-goto: "Continue", "Target Passage)]