Fio:FileFormat
From Fio
(→.pro file) |
(→File Format) |
||
Line 587: | Line 587: | ||
with the beginning and end of messages, we can index into combatai.msg to get the correct msg. | with the beginning and end of messages, we can index into combatai.msg to get the correct msg. | ||
+ | ----- | ||
+ | ===.map=== | ||
+ | Note on the [http://www.teamx.ru/rus/bd/map_format.shtm .map] file. | ||
+ | ====portals==== | ||
+ | <pre> | ||
+ | 0x0058 4 Некие "флаги открытия" (в движке: cur_open_flags). | ||
+ | Certain " flags of opening" | ||
+ | </pre> | ||
+ | It is the flag of opening: | ||
+ | * 0 for closed | ||
+ | * 1 for opened | ||
+ | |||
+ | in fallout there's few opened doors - you can find one in newr1.map(desperado club) and another in ncrent.map(the bar just near the entry). |
Revision as of 01:44, 21 October 2006
TeamX is going ahead of whole world! Wasteland Ghost a few time ago has updated the documentation of PRO format. But TeamX is very silent organisation and the big problem is translation to english. - quote from nma
A link will be there for each type of file if it's referenced from TeamX's/NMA's site. Else it's figured out here in Fio.
File Format
Contents |
AI.txt
master.dat\\data\\AI.txt [1]
Here the format of a file master.dat \\\\ data \\ai.txt, behaviour setting parameters for all types NPC in fighting situations is described. Easier speaking, here it is set iskustvennyj intelligence (AI) NPC in fight. 1. A format of a file The file consists of descriptions of "fighting" parameters for PC and all classes NPC existing in game. Descriptions are separated from each other by empty line. Each description consists of the name of a class (is unique) also characteristics. Below the list of characteristics under their alphabetic name is resulted. The designation string means, that on this place there should be a line, N - numerical value, mixed - either a line, or value. [A name of the Class] This parameter should be specified to the first. For example, [Enclave Patrol], [Fighting Mantis] or [Arroyo Villager]. The class of the player refers to Player AI. At the description of "The" NPC, i.e. members of the command in game (party NPC), for each of them following classes should be specified: [PARTY NAME AGGRESSIVE] [PARTY NAME BERSERK] [PARTY NAME COWARD] [PARTY NAME CUSTOM] [PARTY NAME DEFENSIVE] Here NAME is a name of a member of a command, for example: DOC, LENNY, GORIS, etc. aggression=N Probability of aggressive behaviour NPC in a corresponding situation in fight. It is measured in percentage. Admissible values: 0 - 100. area_attack_mode=string Mode of shooting by turns. Existing values: no_pref always sometimes be_sure be_careful be_absolutely_sure attack_end=N attack_start=N Fighting shouts at attack. In the beginning of attack, casual image the number between two specified values gets out. Then from a file master.dat \\\\ text \\english \\game \\combatai.msg the message with corresponding number gets out and shows. The order of numbering of messages precisely is not certain, there are general rules (see the description for a file combatai.msg). attack_who=string Both it is heard, and it is written. The instruction on the one whom NPC should attack first of all. Existing values: whomever_attacking_me strongest weakest whomever closest best_weapon=string Type of preference of the weapon at attack. This parameter exists not at all NPC. Available values: no_pref never (Deathclaw) random unarmed ranged_over_melee melee_over_ranged unarmed_over_thrown (Spore Plant) By the way, the return value thrown_over_unarmed for some reason at anybody is not specified to the last, and is not clear, whether there is such preference in general;))) body_type=string Defines the block of casual messages which kritter cries out in reply to hits in it. Blocks of messages are in AIBDYMSG.TXT. Existing values (the dark blue inclined font specifies examples from game): None Primitive Wimpy Person (Whimpy, Coward...) Punk (SF) Berserk Person (Kamakazi...) Tough Person (Bounty Hunter, Caravan Driver...) Boxer Normal Person Robot Junkie (Crazy Addict) Elron (Habologisty) Ghoul Kaga Raider (Khan) Raider (Non-Khan) Gangster (Mobsters) Shi Super Mutant (Master Army) Goris Miron Marcus Lenny Cassidy Robo Brain (Hum/Cyb) Sulik called_freq=N Sets probability of event which is calculated as 1/N. I.e. event will occur 1 time from N. To zero it can not be equaled. The sense of parameter is unknown. chance=N Probability of occurrence of any message. It is measured in percentage. Admissible values: 0 - 100. cchem_primary_desire=N Preferences at the use of drugs. PIDy subjects, or-1 if there is no preference. If it is necessary to specify some kinds of drugs they are listed through a comma. (napr. 284,81,103) chem_use=string Use NPC of narcotics in fight. Existing values: clean sometimes stims_when_hurt_little stims_when_hurt_lots anytime always color=N The value used for fonts of fighting messages. For all classes value remains constant - 58. disposition=mixed Defines behaviour NPC during fight. Existing values: -1 none coward defensive aggressive berserk distance=string Distance between NPC and its opponent, tactics of conducting fight. Existing values: random (it is specified only for Mobsters and Tough Khan) charge on_your_own stay stay_close snipe font=N The value used for fonts of fighting messages. Existing value in the US-version of game - 101. In other versions there are also values 102, 103, 104. general_type=string Defines the block of casual messages which kritter periodically cries out during fight ( attacks, deviations, a miss). Blocks of messages are in AIGENMSG.TXT. Existing values: Badger Berserk Person Bounty Hunter Boxer Cassidy Chip Crazed Robot Cyberdog Dragon (The) Elron Guards Gangster Ghoul Goris Guard (Normal) Guard (Tough) Junkie Kaga (1) Lenny Lo Pan Marcus Myron None Normal Person OZ-7 OZ-9 Primitive Raider Raider Captain Raider Mercs Rat God Robot Ryan Shi Guards Sulik Super Mutant (Master Army) The Brain Tough Person Wimpy Person hit_eyes_end=N hit_eyes_start=N hit_groin_end=N hit_groin_start=N hit_head_end=N hit_head_start=N hit_left_arm_end=N hit_left_arm_start=N hit_left_leg_end=N hit_left_leg_start=N hit_right_arm_end=N hit_right_arm_start=N hit_right_leg_end=N hit_right_leg_start=N hit_torso_end=N hit_torso_start=N Shouts NPC at wound in eyes, a groin, a head, the left hand, the left leg, the right hand, the right leg and a trunk accordingly. In more detail - see the description of a variable attack_end. hurt_too_much=string The name of a variable speaks for itself. If this variable is present, it specifies a condition at which execution NPC starts to escape. Conditions perechisljutsja through a comma. crippled blind crippled_arms max_dist=N The maximal distance from the purpose at which NPS remains in a fighting mode. It is measured in geksah. min_hp=N The minimal value of lives at which NPS starts to escape. min_to_hit=N to_hit Is a parameter of game system. The extra charge to_hit = 10 means, that to a maximum level of damages is added 10. I.e. if at the weapon of damage 1-3 after such extra charge will be 1-13. How it operates here - it is not known. miss_end=N miss_start=N Shouts NPC at a miss. In more detail - see the description of a variable attack_end. outline_color=N The value used for fonts of fighting messages. For all classes NPC it is equal 55. packet_num=N Number AI - a package. Never change it! If in a new package of intelligence you will specify packet_num, which already exists, by pressing button AI in mappere (in properties krittera), mapper takes off for Windows. At creation of new packages of intelligence, watch that value packet_num was consecutive. In total in AI.txt there are 187 values packet_num. From 0 up to 186 vkljuchitel run_away_mode=string Conditions of runaway NPC from a battlefield. Existing values: none coward finger_hurts bleeding not_feeling_good tourniquet never run_end=N run_start=N Shouts NPC at runaway from a battlefield. In more detail - see the description of a variable attack_end. secondary_freq=N Similarly called_freq. Sets probability of event which is calculated as 1/N. I.e. event will occur 1 time from N. To zero it can not be equaled. The sense of parameter is unknown. 2. Authors The author of the initial version - Serge, the leader unDAT division. It is added binyan. Last updating: 26.06.2006
AIBDYMSG.txt AIGENMSG.txt
- \\master.dat\\data\\aibdymsg.txt
- \\master.dat\\data\\aigenmsg.txt
As stated in AI.txt, the slot body_type will index into aibdymsg.txt to get msg index when npc get hit; and aigenmsg.txt will index the general movement msg.
AI.txt, aibdymsg.txt and aigenmsg.txt are all in a .ini-like format. It's easy to convert the file into lua table and do some comparison between used type in ai.txt and those defined type in aibdymsg.txt and aigenmsg.txt. Here comes the result(red ones are those types defined but not used in ai.txt):
- body types used in ai.txt
1 Berserk Person 2 Boxer 3 Cassidy 4 Elron 5 Gangster 6 Ghoul 7 Goris 8 Junkie 9 Kaga 10 Lenny 11 Marcus 12 Myron 13 None 14 Normal Person 15 Primitive 16 Punk (SF) 17 Raider (Khan) 18 Raider (Non-Khan) 19 Robo Brain (Hum/Cyb) 20 Robot 21 Shi 22 Sulik 23 Super Mutant (Master Army) 24 Tough Person 25 Wimpy Person
- body type defined in aibdymsg.txt
1 Berserk Person 2 Boxer 3 Cassidy 4 Elron 5 Gangster 6 Ghoul 7 Goris 8 Junkie 9 Kaga 10 Lenny 11 Marcus 12 Myron 13 None 14 Normal Person 15 Primitive 16 Punk (SF) 17 Raider (Khan) 18 Raider (Non-Khan) 19 Robo Brain (Chimp/Ab) 20 Robo Brain (Hum/Cyb) 21 Robot 22 Shi 23 Sulik 24 Super Mutant (Master Army) 25 Tough Person 26 Wimpy Person
- general type used in ai.txt
1 Badger 2 Berserk Person 3 Bounty Hunter 4 Boxer 5 Cassidy 6 Chip 7 Crazed Robot 8 Cyberdog 9 Dragon (The) 10 Elron Guards 11 Gangster 12 Ghoul 13 Goris 14 Guard (Normal) 15 Guard (Tough) 16 Junkie 17 Kaga (1) 18 Lenny 19 Lo Pan 20 Marcus 21 Myron 22 None 23 Normal Person 24 OZ-7 25 OZ-9 26 Primitive 27 Raider 28 Raider Captain 29 Raider Mercs 30 Rat God 31 Robo Brain (Hum/Cyb) 32 Robot 33 Ryan 34 Shi Guards 35 Sulik 36 Super Mutant (Master Army) 37 The Brain 38 Tough Person 39 Wimpy Person
- general type defined in aigenmsg.txt
1 Badger 2 Berserk Person 3 Bounty Hunter 4 Boxer 5 Cassidy 6 Chip 7 Crazed Robot 8 Cyberdog 9 Dragon (The) 10 Elron Guards 11 Gangster 12 Ghoul 13 Goris 14 Guard (Normal) 15 Guard (Tough) 16 Junkie 17 Kaga (1) 18 Kaga (2) 19 Kaga (3) 20 Kaga (4) 21 Kaga (5) 22 Khan (Normal) 23 Khan (Tough) 24 Lenny 25 Lo Pan 26 Marcus 27 Myron 28 None 29 Normal Person 30 OZ-7 31 OZ-9 32 Primitive 33 Raider 34 Raider Captain 35 Raider Mercs 36 Rat God 37 Robo Brain (Chimp/Ab) 38 Robo Brain (Hum/Cyb) 39 Robot 40 Ryan 41 Shi Guards 42 Soldier 43 Sulik 44 Super Mutant (Master Army) 45 The Brain 46 Tough Person 47 Wimpy Person
.pro file
Some notes on part of .pro file format
Item
teamX's official .pro format has give a description of container which seems inaccurate:
3.3 Container (Контейнер) Смещение Размер Описание 0х0039 4 Max Size (объем контейнера) 0х003d 4 Open Flags (флаги контейнера): 0x00000001 - Cannot Pick Up (нельзя поднять) 0x00000008 - Magic Hands Grnd (анимация <юзания>)
using a lua script to parsing all .pro files of items(master.dat/proto/items), we found that following items' open flags are 8:
1 00000042 2 00000060 3 00000061 4 00000062 5 00000063 6 00000064 7 00000065 8 00000066 9 00000067 10 00000068 11 00000069 12 00000070
and other containers' open flags can be 0 or 1. And IMHO, the meaning of Open Flags for container's might be:
- 0 critter stand to open the container
- 1 critter crouch to open the container
- 8 N/A
[i'd tried to figure out the meaning of 8 for open flags from denbus1.map and newr1.map, but bad luck.]
Misc
8. Misc ------------ 0x14 Flags 0x00000008 - Flat 0x00000010 - NoBlock (To not block object) 0x00000800 - MultiHex 0x00008000 - TransNone (Opaque) 0x00010000 - TransWall 0x00020000 - TransGlass (Glass) 0x00040000 - TransSteam (Pairs) 0x00080000 - TransEnergy (Energy) 0x00004000 - TransRed 0x80000000 - ShootThru (Through object it is possible to shoot) 0x20000000 - LightThru (Through object passes light) 0x00000020 - Illumination (it is connected with fields Light distance and Light intensity) The note: flags TransNone, TransWall, TransGlass, TransSteam and TransEnergy are mutually exclusive.
These flag might be useful for path finding(to determine if a cell is blocked) and combat(ShootThru). For example, proto pid 0x020003B3 is a tree in arroyo and the flag is 0x80008000 which means it Trans Wall and can be ShootThru.
For scroll blocker (proto id 0x0500000C) the flag is 0xA0000018 - the scroll blocker can be ShootThru and LightThru. And it doesn't block (NoBlock/Flag) critter to walk thru it.
combatai.msg
- master.dat\\TEXT\\CHT\\game\\combatai.msg
The index got from aibdymsg.txt and aigenmsg.txt is the end of each message's spectrum:
[Berserk Person] attack_end=59 missed_end=72 move_end=39 packet_num=4 run_end=19 start_block=2300
while the begining of each type of message is arranged in a fixed rhythm:
- for aibdymsg.txt, {0, 10, 20, 30, 60, 70, 80, 90,}
- for aigenmsg.txt, {0, 20, 40, 60,}
with the beginning and end of messages, we can index into combatai.msg to get the correct msg.
.map
Note on the .map file.
portals
0x0058 4 Некие "флаги открытия" (в движке: cur_open_flags). Certain " flags of opening"
It is the flag of opening:
- 0 for closed
- 1 for opened
in fallout there's few opened doors - you can find one in newr1.map(desperado club) and another in ncrent.map(the bar just near the entry).