From OniGalore
Jump to navigation Jump to search
DPge : Diary Page
XML modding tips
  • See HERE to start learning about XML modding.
  • See HERE if you are searching for information on how to handle object coordinates.
  • See HERE for some typical modding errors and their causes.

DOOR << Other file types >> FILM

switch to OBD page

General notes

  • The XML code on this page is based on OniSplit v0.9.61.0.
  • DPge*.oni are global (they can be found in AE/AEInstaller/vanilla/level0_Final.dat).
  • A diary page can be read for the first time when the player enters the level indicated by the <LevelNumber> tag.
  • An IGPA instance here will make Oni crash. But <PageNumber> let you create more diary pages for a day.
  • The game can load at most 60 DPge instances. 32 DPge instances exist in the original game.

XML structure

Think of "instances" (#N) as file sections: they run from 1 to N. 0 is the header (it defines the file type, here "DPge").

Every DPge contains one instance of type IGPG.
Every IGPG contains two instances of type IGSA.
Every IGSA contains a number of instances of type IGSt.
IGPG means a page
IGSA means a (text) string array
IGSt means a (text) string

Example from vanilla file "DPgelev_19_pg_01":

#0 (DPge instance) links to #1 (IGPG instance)
#1 (IGPG instance) links to #4 and #5 (IGSA instances)
#2 (unknown placeholder, only presented in original files) (can be ignored)
#3 (unknown placeholder, only presented in original files) (can be ignored)
#4 (IGSA instance) links to #7 (IGSt instance)
#5 (IGSA instance) links to #6 (IGSt instance)

XML tags and options

WPge instance tags

<LevelNumber> (page can be read for first time when player enters this level)
<PageNumber> (diary page number)
0 (normal page)
1 (displays message "New combat move learned. (F1)", which can be avoided with BSL command "ui_suppress_prompt = 1")
<Page> (link to IGPG instance)

IGPG instance tags

<Font> (defines the font in case it isn't defined in the IGSt instance; the style is bold by default)
<Color> (RGB range, e.g. <Color>255 0 77</Color>)
<Size> (10 and 12 are usually used)
<Image> (links to a TXMP or PSpc file)
<Text1> (links to an IGSA instance)
<Text2> (links to an IGSA instance (hint field))

IGSA instance tags

<Link> (links to an IGSt instance)

IGSt instance tags

<Flags> (Every IGSt can have its own properties. The <Flag> tag let you enable these. Add "Size" when you want to get a new font size, add "Color" when you want to get a new font color, etc.)
<Text> (contains the actual text, but can also create a bare paragraph)


<?xml version="1.0" encoding="utf-8"?>
   <DPge id="0">

You can display a small image if you use the image tag in the IGPG instance (either a non-animated TXMP or a PSpc).)=

   <IGPG id="1">
           <Color>255 127 0</Color>
           <Flags>Family Style Color Size</Flags>
   <IGSA id="4">
   <IGSA id="5">

A space between the text tags (<Text> </Text>) can produce a new paragraph. The import ignores that so far but you can fix it by writing "<Text xml:space="preserve"> </Text>" (not used in this example).

   <IGSt id="7">
           <Color>0 0 0 0</Color>
       <Text>Stepping Disarm</Text>
   <IGSt id="6">
           <Color>191 191 191</Color>
           <Flags>Family Style Color Size</Flags>
       <Text>When standing in front of an armed opponent, press FORWARD + KICK.  Disarm your opponent with a kick to the face!!</Text>