(To my knowledge this isn't mentioned in any of the Yes/No tutorials out there.)
The response to a "historic_event xxx true" will either be "accepted" or "declined", right? Not necessarily: if the player saves the game while that scroll is open then the response is "neither" when that save is reloaded.
Code:
monitor_event (whatever)
;show the yes/no scroll
historic_event my_he true
terminate_monitor
end_monitor
monitor_event EventCounter EventCounterType my_he_accepted
and EventCounter > 0
;answered "yes" ... do something
terminate_monitor
end_monitor
monitor_event EventCounter EventCounterType my_he_declined
and EventCounter > 0
;answered "no" ... do something else
terminate_monitor
end_monitor
(NOTE: if this historic event occurs more than once in the campaign then remove the terminate_monitors.)
As explained in other tutorials historic_event implicitly creates the my_he_accepted and my_he_declined event counters and they will be 0. When the player clicks the Accept button my_he_accepted is incremented (adds 1, so is now 1) and that second monitor fires. Likewise for the Decline button.
BUT: if the game is saved while the scroll is open then at that point both event counters are still 0. So as far as the saved game is aware the question has been asked but no answer has been given. Therefore when that save is reloaded that is the state of things: both event counters are 0 and the reload does not automatically show the yes/no scroll. So the question has not been answered and the question will not be re-asked.
A solution is some extra script to re-ask the question when a reload occurs...
Code:
declare_counter my_he_awaiting_answer ;0 = false, 1 = true
monitor_event (whatever)
;show the yes/no scroll
set_counter my_he_awaiting_answer 1
historic_event my_he true
end_monitor
monitor_event EventCounter EventCounterType my_he_accepted
and EventCounter > 0
;answered "yes" ... do something
set_counter my_he_awaiting_answer 0
terminate_monitor
end_monitor
monitor_event EventCounter EventCounterType my_he_declined
and EventCounter > 0
;answered "no" ... do something else
set_counter my_he_awaiting_answer 0
terminate_monitor
end_monitor
monitor_event GameReloaded TrueCondition
if I_CompareCounter my_he_awaiting_answer = 1
campaign_wait 0.1
historic_event my_he true
end_if
end_monitor
I found the campaign_wait to be necessary: the scroll would not appear without it. No idea why not.
my_he_awaiting_answer must be set to 0 in BOTH response monitors. Sometimes only one monitor is needed, e.g. you only need to handle them answering "yes" and do nothing if they answer "no". That's no good here because if they answered "no" then my_he_awaiting_answer is still 1 so when the player reloads they will be asked the question again.
P.S. This can't be said enough: do not use monitor_conditions for your response monitors, use "monitor_event EventCounter"!