Vagrant Story/actor data

From Data Crystal
Jump to navigation Jump to search

Actor data struct contains information about additional characters that are currently present in the room with the player. Most of the time they are enemies, seldom friendly NPCs (like Sydney during the fight with Grissom). This struct is never used during the cut-scenes.

The pointer to the first actor is always located at the address 0x8011f9f0. If there's another actor in the room, the first 4 bytes of the struct contains its address; 0x0 otherwise. This way all the structs form a classic linked-list. If an actor is killed, the memory, that was allocated for its data, is freed (either right away, or as soon as it's looted), and the list is rearranged accordingly (all the pointers are updated).

$0	4	next Actor pointer
$4	40	_padding0
$2c	2	X coordinate
$2e	2	Y coordinate
$30	12	padding
$3c	4	Actor's Name pointer
$40	16	padding
$50	24	Actor's Name
$68	2	Current HP
$6a	2	Max HP
$6c	2	Current MP
$6e	2	Max MP
$70	2	RISK
$72	2s	Original STR
$74	2s	Equipped STR
$76	2s	Original INT
$78	2s	Equipped INT
$7a	2s	Original AGL
$7c	2s	Equipped AGL
$7e	14	padding
$8c	24	Weapon Name
$a4	48	Blade equip data
$d4	48	Grip equip data
$104	48	Weapon Gem 1 equip data
$134	48	Weapon Gem 2 equip data
$164	48	Weapon Gem 3 equip data
$194	168	padding
$23c	48	Shield equip data
$26c	48	Shield Gem 1 equip data
$29c	48	Shield Gem 2 equip data
$2cc	48	Shield Gem 3 equip data
$2fc	140	padding
$388	48	Accessory equip data
$3b8	80	padding
$408	48	Right Arm equip data
$438	172	padding
$4e4	48	Left Arm equip data
$514	172	padding
$5c0	48	Helm equip data
$5f0	172	padding
$69c	48	Breastplate equip data
$6cc	172	padding
$778	48	Leggings equip data
$7a8	496	padding
$998	16	Status effects
$9a8	8	padding
$9b0	2	Misc Loot Item Name
$9b2	1	Misc Loot Item Drop Chance Percentage

This data struct layout is most likely incomplete. All the fields named "padding" can contain more useful data. Feel free to add your findings, or find me on a Müllenkamp Discord server.