Page 1 of 1

Mission debriefings, as per the old forums

Posted: Thu May 09, 2002 1:37 am
by Max-Violence
Endocore
Vault Elite
Posts: 90 #1 Mar 27, 02 - 5:41 AM




In my newest map I decided to do some last minute tinkering with the presentation of the debriefing and wound up getting a very bad headache over some difficulties in using the "Add text to Debrief text list" trigger. I just thought I'd make this post as a warning to anyone else who's not familiar with the operation of this script trigger so that hopefully others can avoid wasting all the time I wasted in trying to get it to work right, since of the SP maps currently available I haven't really seen many other uses of this trigger.

In the past I've always just used a "world text display" for my debriefings, but due to the nature of the story in the map I was working on I decided to try to take advantage of the more flexible/generic way the normal FOT campaign generated many of its debriefs by use of the "Add text to Debrief text list" trigger. Anyone wanting to take advantage of this trigger who has never used it before would profit by looking at the triggers and speech file for Mission 6 (Quincy) of the regular campaign and exactly following the implementation MF used there. I initially had placed several of the "Add text to Debrief text list" triggers in amongst my other scripts to add relevant lines to the debriefing as the events that called for them actually happened in scripting terms, but this turned out to be a big mistake since the game was unable to "remember" any of these debrief lines being added and would only display in the debriefing the debrief lines for the last two or three objectives accomplished, leaving out the parts that had been triggered earlier on. Needless to say, this was very bad because in order to experiment with this I had to keep going all the way through the entire (rather lengthy) mission and accomplishing all the objectives in various orders to try to figure out what was happening, and risked introducing new errors into map because I had to delete so many opponent entities in order to speed up the tests that once I finally worked out some scripts for the debriefing that worked, I had to write them down on a piece of paper and enter them into the "real" map (always have a backup file) from there since the map used for experimenting on this stuff was no longer recognizable.

Use of the "Add text to Debrief text list" trigger seems to require that all possible lines of text one might want to use in the debriefing be triggered only after the player has completed the mission and has all their characters at the exit grid for the map. Any use of this trigger to add text to the debriefing before the player has all his characters at the exit grid runs the risk of having that text forgotten at debriefing time, apparently overwritten by later texts added to the debriefing.

Let's say you had a smallish map where the player had to 1)rescue some hostages from some gunmen, and 2)defuse a bomb that was going to blow up a building. There would then be four possible outcomes of your map that you would want to discuss in the debriefing, so you would put four appropriate lines in your mission's speech file:

hostagessaved = {You saved the hostages. You're an epic hero who's loved by all women and respected by all men.\n\n}

hostagesdead = {I wouldn't trust you to make me a cup of coffee, you pathetic excuse for a soldier. The hostages are dead, and you're going to be court-martialed.\n\n}

bombdefused = {Let me present you with a hearty handshake for defusing the bomb and saving the headquarters of the Acme Telemarketing Corporation.\n\n}

bombwentoff = {Due to your inept clumsiness, the headquarters of the Acme Telemarketing Corporation were destroyed by the bomb. How will decent citizens ever find the will to live again if they're not able to enjoy their right to be constantly interrupted by telephone solicitors?\n\n}

In order to utilize these lines of text in your debriefing, they all need to be tied to a variable that is set only when the mission is over, the exit grids have been turned on, and the player has all their remaining characters at the exit grid ready to leave the map. In the example mission I've set up for this discussion, then, a minimum of eight lines of script would be required to make a debriefing that was responsive to what happened in the mission.
-----------------------------------------------------------
1) Mission Set-Up

CONDITION:
Always

ACTION:
Set variable missionover to False
Set variable hostagesrescued to False
Set variable bombingstopped to False
Set variable finallyfinished to False
-----------------------------------------------------------

You'd then have all your normal scripting to determine what actually counted as saving the hostages and defusing the bomb, etc. Once both objectives were either accomplished or flubbed, the player would be prompted to head for the exit grid since there was nothing else to do in the mission.

-----------------------------------------------------------

2) Almost End of Game

CONDITION:
Player 1 [the PC's] has all alive at exit grids

ACTION:
Set variable missionover to True

-----------------------------------------------------------

3) Hostage Situation Result 1

CONDITION:
Variable missionover is True
Variable hostagesrescued is True

ACTION:
Add text 'hostagessaved' [from your entry in the mission speech file above] to Debrief text list at position: 0 [this will be the first thing talked about in the debriefing]

-----------------------------------------------------------

4) Hostage Situation Result 2

CONDITION:
Variable missionover is True
Variable hostagesrescued is False

ACTION:
Add text 'hostagesdead' to Debrief text list at position: 0 [the point is that whatever happened to the hostages, it will be talked about first in the debriefing]

-----------------------------------------------------------

5) Bomb Situation Result 1

CONDITION:
Variable missionover is True
Variable bombingstopped is True

ACTION:
Add text 'bombdefused' to Debrief text list at position: 1 [after the hostage situation has been discussed, the debrief will move on to talk about the bomb situation]
-----------------------------------------------------------

6) Bomb Situation Result 2

CONDITION:
Variable missionover is True
Variable bombingstopped is False

ACTION:
Add text to 'bombwentoff' to Debrief text list at position: 1
-----------------------------------------------------------

And finally we have the really odd part which makes no sense at all that seems to allow the whole thing to work properly:

-----------------------------------------------------------

7) Are we done yet?

CONDITION:
Variable missionover is True

ACTION:
Set variable finallyfinished to True

-----------------------------------------------------------

8 ) Player gets to leave the map

CONDITION:
Variable finallyfinished is True

ACTION:
B Display Debrief window and text
B Wait 1 second
B End Mission (Main Menu)
-----------------------------------------------------------
Maybe it's just me, but having to include trigger #7 just doesn't make any sense since it seems to serve no useful purpose whatsoever. Nonetheless, that's what I had to do to get my custom debriefing triggers to work.

The original way I tried to use the trigger "Add text to Debrief text list", which was an absolute failure, and I want to show only so mappers can know what NOT to do, was along the lines of what's below. In order to simplify things a little, we'll say that the first map was too long and we cut it down to size by only requiring the player to save some hostages. Once again, this is what NOT to do:
1) Mission Set-up

CONDITION:
Always

ACTION:
Set variable objective1done to False

-----------------------------------------------------------

1) Hostages saved

CONDITION:
Bad guys has less than 1 alive at anywhere
Hostages has more than 0 alive at anywhere

ACTION:
Set variable objective1done to True
Add text 'hostagessaved' to Debrief text list at position: 0
-----------------------------------------------------------

2) Hostages not saved

CONDITION:
Hostages has less than 1 alive at anywhere

ACTION:
Set variable objective1done to True
Add text 'hostagesdead' to Debrief text list at position: 0
-----------------------------------------------------------

3) Mission complete

CONDITION:
Variable objective1done is True

ACTION:
Turn exit grids on
-----------------------------------------------------------

4) Time to leave

CONDITION:
Player Human [PC's] has all alive at exit grid

ACTION:
B Display debrief window and text
B Wait 1 second
B End mission (Main Menu)

I hope I haven't been belaboring a point that everybody else already knew about anyway in this post, but the way I had to implement the "Add text to Debrief text list" trigger really surprised me and made me waste a lot of time, so hopefully if anyone didn't already know about this trigger they can avoid wasting their own time on it now.