Conversation

Conversations or dialogues are a feature of Strife: Quest for the Sigil, allowing peaceful interactions with NPCs.

A conversation takes place between the player and one NPC, sometimes with added commentary by BlackBird. Plot-relevant conversations usually feature a full-screen portrait of the character and voice-acting for his lines. During a conversation, inventory items can be given to or taken from the player (which is how shopping is implemented). Some items are coded to trigger actions normally associated with certain linedef types; these allow a limited form of level scripting to take place (for example, talking to a character may be necessary to open a door).

Conversations are stored in binary form in lumps named, where xy corresponds to that of the MAPxy map slot. In addition, the conversations stored in are valid on every map. If a conversation for an object cannot be found in the map's own script first, then the lump will be checked. If no specific one is found there either, then the first conversation defined in will be used as a fallback. In vanilla Strife, any objects without the flag (0x8000) will converse with the player when not in combat.

The IDs used to identify actor types in the conversation data files are drawn from the enumeration, and correspond to the order in which the object types were defined in the game's  source code file. This concept is also known in the Doom community as the DeHackEd number of the object. In ZDoom-based source ports, this number is referred to as the object's Conversation ID and is defined through DECORATE.

Special speaker behaviors
In vanilla Strife, all merchants have special behaviors when engaged in dialogue. They will set themselves to certain hard-coded states while conversing. When a conversation is started, they will enter their "greetings" state. If the player selects a choice successfully, they will enter their "yes" state. If the player fails a choice (ie., by attempting to buy something without enough gold) or leaves the conversation using the last choice or by pressing the escape key, they will enter the "no" state.

Special given item behaviors
If an item has the flag (0x800), then its  value will be interpreted as a quest flag value from 1 to 32, and the corresponding quest flag will be awarded to the player along with the item.

When one of the 31 quest token items is given (object IDs 312 through 342), the quest flag awarded is determined by the item's ID itself, such that quest token 1 awards quest flag 1, quest token 2 awards quest flag 2, and so on. The item's name as defined in will be used as the message for the item received.

Other item effects are determined by the item's sprite or object type. Only items with special behaviors are listed here. Other items will simply be inserted into the player's inventory and in some cases will be automatically used first if applicable. Items such as weapons and ammunition mostly have the same effects as if they were collected from the level directly by the player. Note that weapons cannot be given if the player already owns them; they will not award any ammunition in this case.

Special dropped item behaviors
Certain objects have special effects if they are dropped by an actor due to a conversation. Note that an object dropping any Sigil piece will immediately increment the player's current Sigil type if possible, and cause the player to change to the newest version of the Sigil. In all of these cases, no object is actually spawned in the map.

Extensions
USDF, short for Universal Strife Dialogue Format, is a text script meant to replace use of the binary lumps in modern source ports. It is currently supported by ZDoom and several of its derivatives. ZDoom further defines its own USDF extension called ZSDF, which defines additional features only useful in explicitly compatible ports. USDF can be compiled to the binary script format if no extended features are used, which is useful for creating new vanilla-compatible dialogue lumps.