114 lines
3.6 KiB
C
114 lines
3.6 KiB
C
#ifndef __CLASS_H__
|
|
#define __CLASS_H__
|
|
|
|
#include <ultra64.h>
|
|
|
|
#include "assert.h"
|
|
#include "class_id.h"
|
|
#include "equipment_id.h"
|
|
#include "gender.h"
|
|
|
|
typedef struct {
|
|
/* 0x00 */ char *name;
|
|
/* 0x04 */ u8 field_0x4;
|
|
/* 0x05 */ Gender gender;
|
|
/* 0x06 */ u8 leadership_rank;
|
|
/* 0x07 */ u8 field_0x7;
|
|
|
|
/* 0x08 */ u16 max_hp;
|
|
/* 0x0a */ u8 field_0xa;
|
|
/* 0x0b */ u8 field_0xb;
|
|
/* 0x0c */ u16 strength;
|
|
/* 0x0e */ u8 field_0xe;
|
|
/* 0x0f */ u8 field_0xf;
|
|
/* 0x10 */ u16 vitality;
|
|
/* 0x12 */ u8 field_0x12;
|
|
/* 0x13 */ u8 field_0x13;
|
|
/* 0x14 */ u16 intelligence;
|
|
/* 0x16 */ u8 field_0x16;
|
|
/* 0x17 */ u8 field_0x17;
|
|
/* 0x18 */ u16 mentality;
|
|
/* 0x1a */ u8 field_0x1a;
|
|
/* 0x1b */ u8 field_0x1b;
|
|
/* 0x1c */ u16 agility;
|
|
/* 0x1e */ u8 field_0x1e;
|
|
/* 0x1f */ u8 field_0x1f;
|
|
/* 0x20 */ u16 dexterity;
|
|
/* 0x22 */ u8 field_0x22;
|
|
/* 0x23 */ u8 field_0x23;
|
|
|
|
/* 0x24 */ u8 field_0x24;
|
|
/* 0x25 */ u8 field_0x25;
|
|
/* 0x26 */ u8 field_0x26;
|
|
/* 0x27 */ u8 field_0x27;
|
|
/* 0x28 */ u8 field_0x28;
|
|
/* 0x29 */ u8 field_0x29;
|
|
/* 0x2a */ u8 field_0x2a;
|
|
/* 0x2b */ u8 field_0x2b;
|
|
/* 0x2c */ u8 field_0x2c;
|
|
/* 0x2d */ u8 field_0x2d;
|
|
|
|
/* 0x2e */ u16 item_upper_left;
|
|
/* 0x30 */ u16 item_upper_right;
|
|
/* 0x32 */ u16 item_lower_left;
|
|
/* 0x34 */ u16 item_lower_right;
|
|
|
|
/* 0x36 */ u8 field_0x36;
|
|
|
|
// The ability which is used when the unit is placed in the front row.
|
|
/* 0x37 */ u8 ability_front;
|
|
// The amount of hits the unit performs when placed in the front row.
|
|
/* 0x38 */ u8 ability_front_hitcount;
|
|
// The ability which is used when the unit is placed in the middle row.
|
|
/* 0x39 */ u8 ability_middle;
|
|
// The amount of hits the unit performs when placed in the middle row.
|
|
/* 0x3a */ u8 ability_middle_hitcount;
|
|
// The ability which is used when the unit is placed in the back row.
|
|
/* 0x3b */ u8 ability_back;
|
|
// The amount of hits the unit performs when placed in the back row.
|
|
/* 0x3c */ u8 ability_back_hitcount;
|
|
|
|
/* 0x3d */ u8 field_0x3d;
|
|
/* 0x3e */ u8 field_0x3e;
|
|
/* 0x3f */ u8 field_0x3f;
|
|
|
|
/* 0x40 */ u8 field_0x40;
|
|
/* 0x41 */ u8 field_0x41;
|
|
/* 0x42 */ u8 field_0x42;
|
|
/* 0x43 */ u8 field_0x43;
|
|
/* 0x44 */ u8 field_0x44;
|
|
/* 0x45 */ ClassId field_0x45;
|
|
/* 0x46 */ u8 element;
|
|
/* 0x47 */ u8 max_items;
|
|
} ClassData; // size:0x48
|
|
|
|
ASSERT_SIZE(ClassData, 0x48);
|
|
|
|
extern ClassData obClassData[];
|
|
extern EquipmentId (*FP_CLASS_GET_ITEM_1[4])(u8, ClassId);
|
|
|
|
u8 class_get_field_0x2c(u8 portrait, ClassId class);
|
|
u8 obClassGetAbilityFront(u8 portrait, ClassId class);
|
|
u8 obClassGetAbilityFrontHits(u8 portrait, ClassId class);
|
|
u8 obClassGetAbilityMiddle(u8 portrait, ClassId class);
|
|
u8 obClassGetAbilityMiddleHits(u8 portrait, ClassId class);
|
|
u8 obClassGetAbilityBack(u8 portrait, ClassId class);
|
|
u8 obClassGetAbilityBackHits(u8 portrait, ClassId class);
|
|
u8 class_get_field_0x4(u8 portrait, ClassId class);
|
|
u8 obClassGetGender(u8 portrait, ClassId class);
|
|
u8 obClassGetLeadershipRank(u8 portrait, ClassId class);
|
|
u8 class_get_global_flag(u8 portrait, ClassId class);
|
|
|
|
EquipmentId obClassGetItemUpperLeft(u8 portrait, ClassId class);
|
|
EquipmentId obClassGetItemUpperRight(u8 portrait, ClassId class);
|
|
EquipmentId obClassGetItemLowerLeft(u8 portrait, ClassId class);
|
|
EquipmentId obClassGetItemLowerRight(u8 portrait, ClassId class);
|
|
|
|
char *obClassGetAbilityFrontName(u8 portrait, ClassId class);
|
|
char *obClassGetAbilityMiddleName(u8 portrait, ClassId class);
|
|
char *obClassGetAbilityBackName(u8 portrait, ClassId class);
|
|
char *obClassGetName(u8 portrait, ClassId class);
|
|
|
|
u8 obClassGetAbility(u8 portrait, ClassId class, u8 row);
|
|
|
|
#endif // __CLASS_H__
|