mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-17 18:01:24 +00:00
50c5dc62aa
- comment fixes taken from GZDoom. - division by zero check in R_SetVisibility from GZDoom.
166 lines
6.5 KiB
Text
166 lines
6.5 KiB
Text
===============================================================================
|
|
Universal Strife Dialog Format Specification v2.1 - 01/06/13
|
|
|
|
Written by Braden "Blzut3" Obrzut - admin@maniacsvault.net
|
|
|
|
Defined with input from:
|
|
|
|
CodeImp
|
|
Gez
|
|
Graf Zahl
|
|
Quasar
|
|
et al.
|
|
|
|
Copyright (c) 2013 Braden Obrzut.
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.2
|
|
or any later version published by the Free Software Foundation;
|
|
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
|
|
|
===============================================================================
|
|
|
|
=======================================
|
|
Changes in v2.1
|
|
=======================================
|
|
|
|
* Pages are specified as starting as being indexed from 1 instead of 0. While
|
|
this technically renders the spec incompatible, all known implementations
|
|
used this convention as it was inline with the binary format.
|
|
|
|
=======================================
|
|
I. Grammar / Syntax
|
|
=======================================
|
|
|
|
The grammar and syntax is similar to that of UDMF. A compliant UDMF parser
|
|
should be applyable to the USDF. However, it will need to be capable of
|
|
handling sub-blocks. Unknown sub-blocks should be skipped.
|
|
|
|
=======================================
|
|
II. Implementation Semantics
|
|
=======================================
|
|
|
|
------------------------------------
|
|
II.A : Storage and Retrieval of Data
|
|
------------------------------------
|
|
|
|
This is the same as in UDMF.
|
|
|
|
-----------------------------------
|
|
II.B : Storage Within Archive Files
|
|
-----------------------------------
|
|
|
|
There are two options for the USDF lump placement. This can either be a part
|
|
of the UDMF lump list or standalone. If used stand alone the lump name
|
|
DIALOGXY is used corresponding with MAPXY. For UDMF the lump shall be called
|
|
"DIALOGUE".
|
|
|
|
--------------------------------
|
|
II.C : Implementation Dependence
|
|
--------------------------------
|
|
|
|
USDF also implements the namespace statement. This has all the same
|
|
requirements as UDMF.
|
|
|
|
=======================================
|
|
III. Standardized Fields
|
|
=======================================
|
|
|
|
The following are required for all USDF complient implementations. Like UDMF,
|
|
any unknown field/function should be ignored and not treated as an error.
|
|
|
|
NOTE: "mobj" refers to Strife's conversationIDs and not doom editor numbers or
|
|
Hexen's spawnids. A valid mobj value is any positive integer greater
|
|
than or equal to 1.
|
|
|
|
---------------------
|
|
III.A : Conversations
|
|
---------------------
|
|
|
|
Conversations are groups of pages that can be assigned to a particular object.
|
|
Implementors should preserve the IDs to allow for dynamic reassignment through
|
|
scripting although this is not a requirement.
|
|
|
|
conversation // Starts a dialog.
|
|
{
|
|
actor = <integer>; // mobj for this conversation's actor. If previously
|
|
// used, this will override the previous conversation.
|
|
|
|
page // Starts a new page. Pages are automatically numbered starting at 1.
|
|
{
|
|
name = <string>; // Name that goes in the upper left hand corner
|
|
panel = <string>; // Name of lump to render as the background.
|
|
voice = <string>; // Narration sound lump.
|
|
dialog = <string>; // Dialog of the page.
|
|
drop = <integer>; // mobj for the object to drop if the actor is
|
|
// killed.
|
|
link = <integer>; // Page to jump to if all ifitem conditions are
|
|
// satisified.
|
|
|
|
// jumps to the specified page if the player has the specified amount
|
|
// or more of item in their inventory. This can be repeated as many
|
|
// times as the author wants, all conditions must be met for the
|
|
// jump to occur.
|
|
ifitem
|
|
{
|
|
item = <integer>; // mobj of item to check.
|
|
amount = <integer>; // amount required to be in inventory.
|
|
}
|
|
|
|
// Choices shall be automatically numbered.
|
|
choice
|
|
{
|
|
text = <string>; // Name of the choice.
|
|
|
|
// The amount of an item needed to successfully pick this option.
|
|
// This can be repeated, but only the first will be shown (provided
|
|
// displaycost is true). All costs must be satisfied for success.
|
|
cost
|
|
{
|
|
item = <integer>; // Item that is required for this option.
|
|
amount = <integer>; // Minimum amount of the item needed.
|
|
}
|
|
|
|
displaycost = <bool>; // Whether the cost should be
|
|
// displayed with the option.
|
|
// If no cost is specified this should
|
|
// be ignored.
|
|
yesmessage = <string>; // Text to add to console when choice
|
|
// is accepted.
|
|
nomessage = <string>; // Text to add to console when choice
|
|
// is denied.
|
|
|
|
log = <string>; // LOG entry to use on success.
|
|
giveitem = <integer>; // Gives the specified item upon
|
|
// success.
|
|
// The following are the same as the special for linedefs in UDMF.
|
|
// They are executed on success.
|
|
special = <integer>;
|
|
arg0 = <integer>;
|
|
arg1 = <integer>;
|
|
arg2 = <integer>;
|
|
arg3 = <integer>;
|
|
arg4 = <integer>;
|
|
|
|
nextpage = <integer>; // Sets the next page.
|
|
closedialog = <bool>; // Should the dialog be closed upon
|
|
// selecting this choice?
|
|
// Default: false
|
|
}
|
|
}
|
|
}
|
|
|
|
-------------------------------
|
|
III.B : Including Other Dialogs
|
|
-------------------------------
|
|
|
|
Unlike the original Strife dialog format. The lump "SCRIPT00" should not be
|
|
included automatically. Instead the user must specify this behavior by using
|
|
the include function, which takes the name of a lump to include. Include only
|
|
needs to be available in the global scope and for compatibility reasons, must
|
|
include the result of the script and not act like a preprocessor statement.
|
|
|
|
include = <string>;
|
|
|
|
===============================================================================
|
|
EOF
|
|
===============================================================================
|