All *.pl2 archive files contain a file named "attribute" (lower-case with no extension), which acts as a configuration file for the add-on. It specifies the type of add-on, files included in it, and other settings.
| Key | Function | Used in types | Example |
|---|---|---|---|
| TYPE | Specifies the type of add-on | Required in All | TYPE=HAIR |
| NAME | Unique internal add-on name | Required in All except ARCHIVE and COORDINATE | NAME=imo_hairD_06_crzy |
| FILE_<#> | File included in *.pl2 archive Added in internal file list |
All | FILE_0=imo_hairD_06_crzy.tmb |
| ICON_<0,1> | Icon to show in Character Creation Screen 190x80px for rooms, 40x40px for others Added in internal file list |
All except ARCHIVE | ICON_0=imo_hairD_06_crzy.psd |
| COORD_<Part Index> | Assigns a file (without extension) to a specific part slot Doesn't include the file itself |
COORDINATE | COORD_05=imo_cos_school_B01A |
| CAPTION_<0,1,3,4> | Name and description for Character Creation Screen | All except ARCHIVE and COORDINATE | CAPTION_0=Short DarkーBrown Hair |
| UPPERONLY | Flags only upper-wear is included. If this key exists, even with a blank value, it is 'on'. |
COSTUME, UNDER | UPPERONLY=1 |
| BOTTOMONLY | Flags only lower-wear is included. If this key exists, even with a blank value, it is 'on'. |
COSTUME, UNDER | BOTTOMONLY=1 |
| HALFWEAR | Flags that half removed states are included. If this key exists, even with a blank value, it is 'on'. |
UNDER | HALFWEAR=1 |
There's also 2 unofficial keys often included in add-ons. They do nothing, but give a little more information about the add-on. They are:
| Type | Function | In Character Creation Screen? |
|---|---|---|
| ARCHIVE | Only contains other files | No |
| COORDINATE | Defines a preset configuration of items, but does not include the files itself. | As "Clothing Sets" |
| BG | Room models and animations | As the room selector |
| ARM | Item model shown on the arm, such as a bracelet | yes |
| BODY | Bare body model; no hair, eyes, etc | Yes |
| COSTUME | Outer clothes models May contain upper (Eg. Shirt), lower (Eg. Skirt), or both. |
Upper clothes in "Clothing (Upper)" Lower clothes in "Clothing (Lower)" |
| EYE | Eye models | Yes |
| FACE | Item model shown on the face, such as glasses | Yes |
| HAIR | Hair model | Yes |
| HEAD | Item model shown on the head, such as a hat | Yes |
| NECK | Item model shown on the neck, such as a necklace | Yes |
| SHOES | Shoes models | Yes |
| SOCKS | Socks models | Yes |
| UNDER | Under clothes models Upper and lower may be in the same or separate models, and may contain half removed states |
Yes |
All add-ons require a TYPE key, and for all TYPEs other then ARCHIVE the NAME key is required. Add-ons that show in the Character Creation Screen also include ICON_# and CAPTION_# keys.
All files included in that add-on, other then the attribute itself, must be specified in a FILE_# key. To specify no file, or "null", use nil. (Ex: "FILE_0=nil" in a body add-on will make the body disappear when selected.)
Captions are also specified, which are the name and description shown in the Character Creation Screen. This text must be encoded in Shift-JIS. Caption #0 is the name, and #1 is the description; one type also has a #3 and #4. Note that there is no caption #2 or #5.
Example:
TYPE=EYE
NAME=imo_eye_04
CAPTION_0=<コバルトブルーの瞳>
CAPTION_1=綺麗な濃いブルーの瞳。吸い込まれそう。
FILE_0=imo_eye_04.tmb
ICON_0=imo_eye_04.psd
This attribute file tells the game this add-on is an eye model, its internal name is "imo_eye_04", and a name (CAPTION_0) and description (CAPTION_1) for the Character Creation Screen. It also says there are 2 other files in the add-on: "imo_eye_04.tmb" (the eye model) and "imo_eye_04.psd" (its icon).
ARCHIVE add-ons include files for use in the game, such as scripts, images, sounds, etc; they do not appear in the Character Creation Screen.
The attribute may contain any number of FILE_ keys; in this type, and only* in ARCHIVEs, the part of the key after the underscore is irrelevant, though it's usually 00.
Example:
TYPE=ARCHIVE
FILE_00=script.txt
FILE_00=sc00_testing_title.txt
FILE_00=sc00_testing_test_model.txt
FILE_00=sc00_testing_test_script.txt
TYPE=ARCHIVE
FILE_0=script.txt
FILE_1=title.txt
FILE_I like this title better=title2.txt
FILE_1337=about.txt
COORDINATE files don't contain the models with them, but tell the game which to load. As such, they use COORD_## keys instead of FILE_##.
Example:
TYPE=COORDINATE
NAME=cos_school_B01
CAPTION_0=ブレザー系スクール制服 (夏服)
CAPTION_1=半袖スクールシャツとミニスカートの組み合わせ
ICON_0=cos_school_B01.psd
#Removes Socks
COORD_04=nil
#Lower Clothes; Loads imo_cos_school_B01A.tmb
COORD_05=imo_cos_school_B01A
#Upper clothes; Loads imo_cos_school_B01.tmb
COORD_06=imo_cos_school_B01B
#Neck item
COORD_09=imo_neck_school_01
#Removes Shoes
COORD_11=nil
Backgrounds include the model and animation for a room or area; this is the only selectable model add-on type that includes animations with it.
Example:
#1 model, no animation
TYPE=BG
NAME=room_01
CAPTION_0=お兄ちゃんの部屋
CAPTION_1=ちょっと渋め。
FILE_0=room_01.tmb
FILE_1=nil
ICON_0=BG1.psd
#2 models, 2nd one is animated
TYPE=BG
NAME=room_01
CAPTION_0=お兄ちゃんの部屋
CAPTION_1=ちょっと渋め。
FILE_0=room_01.tmb
FILE_1=nil
FILE_2=room_01b.tmb
FILE_3=room_01b.tsb
ICON_0=BG1.psd
COSTUME add-ons contain either outer-wear for upper, lower, or both. Upper and lower models can be chosen separately, even if they're in the same add-on.
Examples:
#Contains both upper and lower
TYPE=COSTUME
NAME=imo_cosE_02
CAPTION_0=<赤ライン体操服スソ出し>
CAPTION_1=赤は三年生の色。下級生あこがれの先輩色。
CAPTION_3=<赤ブルマ>
CAPTION_4=かなり目立つ赤いブルマ。走ったら速そう。
FILE_0=imo_cosE_02A.tmb
FILE_1=imo_cosE_02B.tmb
ICON_0=imo_cosE_02A.psd
ICON_1=imo_cosE_02B.psd
#Upper-wear only
TYPE=COSTUME
NAME=imo_cosE_02
CAPTION_0=<赤ライン体操服スソ出し>
CAPTION_1=赤は三年生の色。下級生あこがれの先輩色。
CAPTION_3=nil
CAPTION_4=nil
FILE_0=imo_cosE_02A.tmb
FILE_1=nil
ICON_0=imo_cosE_02A.psd
ICON_1=nil
UPPERONLY=1
#Lower-wear only
TYPE=COSTUME
NAME=imo_cosE_02
CAPTION_0=nil
CAPTION_1=nil
CAPTION_3=<赤ブルマ>
CAPTION_4=かなり目立つ赤いブルマ。走ったら速そう。
FILE_0=nil
FILE_1=imo_cosE_02B.tmb
ICON_0=nil
ICON_1=imo_cosE_02B.psd
BOTTOMONLY=1
UNDER add-ons contain models for upper and lower underwear. Unlike COSTUME, upper and lower pieces cannot be chosen separately in the Character Creation Screen.
There's only a single icon (ICON_0) and caption pair (CAPTION_0 for name, CAPTION_1 for description). In addition, this type also uses the UPPERONLY flag (not BOTTOMONLY), along with a new one named HALFWEAR. This type is further complicated by its FILE_# keys, as their meaning changes depending on which flags are present.
| Flag | FILE_0 | FILE_1 | FILE_2 | FILE_3 |
|---|---|---|---|---|
| None | Upper fully on | Lower fully on | ||
| HALFWEAR | Upper fully on | Lower fully on | Upper half removed | Lower half removed |
| UPPERONLY | Upper & Lower fully on | |||
| UPPERONLY & HALFWEAR |
Upper & Lower fully on | Upper half removed Lower fully on |
Upper fully on Lower half removed |
Upper half removed Lower half removed |
Examples:
#No flags
TYPE=UNDER
NAME=imo_underA_01
CAPTION_0=<ホワイトアンダーウェア>
CAPTION_1=清楚な白い下着セット。やっぱ白は基本だよね。
#Upper on
FILE_0=imo_underA_01A.tmb
#Lower on
FILE_1=imo_underA_01B.tmb
FILE_2=nil
FILE_3=nil
ICON_0=imo_underA_01.psd
#UPPERONLY
TYPE=UNDER
NAME=imo_underA_01
CAPTION_0=<ホワイトアンダーウェア>
CAPTION_1=清楚な白い下着セット。やっぱ白は基本だよね。
#Upper and Lower on
FILE_0=imo_underA_01.tmb
FILE_1=nil
FILE_2=nil
FILE_3=nil
ICON_0=imo_underA_01.psd
UPPERONLY=1
#HALFWEAR
VERSION=100
TYPE=UNDER
NAME=imo_underA_01
CAPTION_0=<ホワイトアンダーウェア>
CAPTION_1=清楚な白い下着セット。やっぱ白は基本だよね。
#Upper on
FILE_0=imo_underA_01A.tmb
#Lower on
FILE_1=imo_underA_01B.tmb
#Upper half-off
FILE_2=imo_underA_01HA.tmb
#Lower half-off
FILE_3=imo_underA_01HB.tmb
ICON_0=imo_underA_01.psd
HALFWEAR=1
#UPPERONLY and HALFWEAR
VERSION=100
TYPE=UNDER
NAME=imo_underA_01
CAPTION_0=<ホワイトアンダーウェア>
CAPTION_1=清楚な白い下着セット。やっぱ白は基本だよね。
#Upper and Lower on
FILE_0=imo_underA_01A.tmb
#Upper half-off; Lower on
FILE_1=imo_underA_01B.tmb
#Lower half-off; Upper on
FILE_2=imo_underA_01HA.tmb
#Upper and Lower half-off
FILE_3=imo_underA_01HB.tmb
ICON_0=imo_underA_01.psd
HALFWEAR=1
UPPERONLY=1
This table documents how exactly the different keys are implemented in the original PL2.
| Key | Access Method |
|---|---|
| TYPE | "TYPE" |
| NAME | "NAME" |
| FILE | "FILE_" "FILE_%d" "FILE_0" "FILE_1" "FILE_2" "FILE_3" |
| ICON | "ICON_" "ICON_0" "ICON_1" |
| COORD | "COORD_%02d" |
| CAPTION | "CAPTION_0" "CAPTION_1" "CAPTION_3" "CAPTION_4" |
| UPPERONLY | "UPPERONLY" |
| BOTTOMONLY | "BOTTOMONLY" |
| HALFWEAR | "HALFWEAR" |
There are other keys that are commonly put in add-ons. They are unused by both PL2 and unmodified OPL2 versions, though there are some hard-to-find EXE mods for PL2 that may use them.