My program doesn't have bugs. It just develops random features.
What's a Conversation?
A Conversation in Deus Ex describes an interaction between two Actors in the environment.
This is not necessarily limited to dialogue, with Conversations you can do things like:
- Give things (inventory) to the player
- Run a "store" where the player may purchase items
- Mess with the player's skill and credit levels
- Add goals and notes
The Conversation incidates:
- The Actors involved
- Under what conditions the Conversation begins (or doesn't)
- What happens during the conversation (Events).
- Choices (responses) the player can make to an NPC.
Types of Events
Each Conversation typically contains a linked list of events, which define:
- What things happen during the conversation,
- What order they occur in,
- What conditions are required.
There are several types of events, a few of which are not implemented:
- Add Credits; Change the number of credits the player has (you can use negative numbers to deduct)
- Add Goal
- Adds an item to the player's goal list.
- Add Note
- Adds a Note.
- Add Skill Points
- Change the player's skill point total.
- Check Flag
- Check Object
- Check Persona
- Does nothing, just a way to add a comment to the .CON file.
- Ends the sequence of events.
- Moves to another point in the Event list.
- Move Camera
- Moves the camera
- Random Label
- Set Flag
- Say something (really, indicate who is speaking, what they say, who they're talking to"
- Apparently not implemented.
- Transfer Object
- Moves objects (inventory) from one Actor to another.
How Conversations are Rendered
Text in conversation shows up in two ways.
Many conversations (i.e. dialogue between actors) show up at the bottom of the screen in a black area (letterbox?)
Still others, "barks" appear as a sort of popup window in the UI. They're mostly used when not engaging in dialogue with another actor. (For example, what the NPC's say as they go about their business, or things they say to the player if they don't have any "dialogue" conversation going on.
Getting to the Conversation Object Hierarchy
Conversation objects are spread throughout the actors that own them in each level. To get to the conversations, you must first get to the actors.
You do this through a reference to the current player.
To check if an actor has any conversations for it, check if its conListItems variable (Actor.conListItems) is none or not. If none, then there is a list of conversations that this actor is involved it.
Xhiris: I'm working on dumping the whole Conversation tree to XML, will fill this in more as details are discovered.