266 lines
7.5 KiB
C
266 lines
7.5 KiB
C
#include "class.h"
|
|
|
|
#include "common.h"
|
|
#include "ability.h"
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D200);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D254);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D2A8);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D2FC);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D350);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D3A4);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D3F8);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D44C);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D4A0);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D4F4);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D548);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D59C);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D5F0);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D644);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D698);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D6EC);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D740);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D794);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D7E8);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D83C);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D890);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D8E4);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D938);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D98C);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016D9E0);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016DA34);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016DA88);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016DADC);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016DB30);
|
|
|
|
INCLUDE_ASM(const s32, "class", func_8016DB84);
|
|
|
|
/* 43AD8 8016DBD8 */
|
|
u8 class_get_field_0x2c(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].field_0x2c;
|
|
|
|
return obClassData[class].field_0x2c;
|
|
}
|
|
|
|
/* 43B2C 8016DC2C */
|
|
u8 class_get_ability_front(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].ability_front;
|
|
|
|
return obClassData[class].ability_front;
|
|
}
|
|
|
|
/* 43B80 8016DC80 */
|
|
u8 class_get_ability_front_hitcount(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].ability_front_hitcount;
|
|
|
|
return obClassData[class].ability_front_hitcount;
|
|
}
|
|
|
|
/* 43BD4 8016DCD4 */
|
|
u8 class_get_ability_middle(u8 portrait, u8 class) {
|
|
s32 var_v0;
|
|
|
|
if (obClassData[portrait].field_0x45 != class) {
|
|
var_v0 = class * 9;
|
|
} else {
|
|
var_v0 = obClassData[portrait].field_0x45 * 9;
|
|
}
|
|
return *(&obClassData->ability_middle + (var_v0 * 8));
|
|
}
|
|
|
|
/* 43C20 8016DD20 */
|
|
u8 class_get_ability_middle_hitcount(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].ability_middle_hitcount;
|
|
|
|
return obClassData[class].ability_middle_hitcount;
|
|
}
|
|
|
|
/* 43C74 8016DD74 */
|
|
u8 class_get_ability_back(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].ability_back;
|
|
|
|
return obClassData[class].ability_back;
|
|
}
|
|
|
|
/* 43CC8 8016DDC8 */
|
|
u8 class_get_ability_back_hitcount(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].ability_back_hitcount;
|
|
|
|
return obClassData[class].ability_back_hitcount;
|
|
}
|
|
|
|
/* 43D1C 8016DE1C */
|
|
u8 class_get_field_0x4(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].field_0x4;
|
|
|
|
return obClassData[class].field_0x4;
|
|
}
|
|
|
|
/* 43D70 8016DE70 */
|
|
u8 class_get_gender(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].gender;
|
|
|
|
return obClassData[class].gender;
|
|
}
|
|
|
|
/* 43DC4 8016DEC4 */
|
|
u8 class_get_leadership_rank(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].leadership_rank;
|
|
|
|
return obClassData[class].leadership_rank;
|
|
}
|
|
|
|
/* 43E18 8016DF18 */
|
|
u8 class_get_global_flag(u8 portrait, u8 class) {
|
|
u8 var_a1;
|
|
|
|
var_a1 = class;
|
|
if (D_8018ECE4[portrait].field_0x0 & 0x80) {
|
|
if (obClassData[portrait].field_0x45 == var_a1) {
|
|
var_a1 = portrait;
|
|
}
|
|
}
|
|
return D_8018ECE4[var_a1].field_0x0 & 0x3F;
|
|
}
|
|
|
|
/* 43E88 8016DF88 */
|
|
EquipmentId class_get_item_upper_left(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].item_upper_left;
|
|
|
|
return obClassData[class].item_upper_left;
|
|
}
|
|
|
|
/* 43EDC 8016DFDC */
|
|
EquipmentId class_get_item_upper_right(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].item_upper_right;
|
|
|
|
return obClassData[class].item_upper_right;
|
|
}
|
|
|
|
/* 43F30 8016E030 */
|
|
EquipmentId class_get_item_lower_left(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].item_lower_left;
|
|
|
|
return obClassData[class].item_lower_left;
|
|
}
|
|
|
|
/* 43F84 8016E084 */
|
|
EquipmentId class_get_item_lower_right(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].item_lower_right;
|
|
|
|
return obClassData[class].item_lower_right;
|
|
}
|
|
|
|
/* 43FD8 8016E0D8 */
|
|
char* class_get_ability_front_name(u8 portrait, u8 class) {
|
|
u8 var_v0;
|
|
|
|
if (obClassData[portrait].field_0x45 == class) {
|
|
var_v0 = obClassData[portrait].ability_front;
|
|
} else {
|
|
var_v0 = obClassData[class].ability_front;
|
|
}
|
|
|
|
return obAbilityGetName(var_v0);
|
|
}
|
|
|
|
/* 44040 8016E140 */
|
|
char* class_get_ability_middle_name(u8 portrait, u8 class) {
|
|
// Possible a C macro wrapping?
|
|
do {
|
|
char* ret = obAbilityGetName(obClassData[class].ability_middle);
|
|
return ret;
|
|
} while(0);
|
|
}
|
|
|
|
/* 44074 8016E174 */
|
|
char* class_get_ability_back_name(u8 portrait, u8 class) {
|
|
u8 var_v0;
|
|
|
|
if (obClassData[portrait].field_0x45 == class) {
|
|
var_v0 = obClassData[portrait].ability_back;
|
|
} else {
|
|
var_v0 = obClassData[class].ability_back;
|
|
}
|
|
|
|
return obAbilityGetName(var_v0);
|
|
}
|
|
|
|
/* 440DC 8016E1DC */
|
|
char* class_get_name(u8 portrait, u8 class) {
|
|
if (obClassData[portrait].field_0x45 == class)
|
|
return obClassData[portrait].name;
|
|
|
|
return obClassData[class].name;
|
|
}
|
|
|
|
/* 44130 8016E230 */
|
|
u8 class_get_ability(u8 portrait, u8 class, u8 row)
|
|
{
|
|
if (obClassData[portrait].field_0x45 != class)
|
|
portrait = class;
|
|
|
|
if (row == 0) {
|
|
return obClassData[portrait].ability_front != 0xFF ? obClassData[portrait].ability_front : obClassData[class].ability_front;
|
|
} else if (row == 1) {
|
|
return obClassData[portrait].ability_middle != 0xFF ? obClassData[portrait].ability_middle : obClassData[class].ability_middle;
|
|
} else {
|
|
return obClassData[portrait].ability_back != 0xFF ? obClassData[portrait].ability_back : obClassData[class].ability_back;
|
|
}
|
|
}
|
|
|
|
/* 44238 8016E338 */
|
|
u8 class_get_ability_hitcount(u8 portrait, u8 class, u8 row) {
|
|
if (obClassData[portrait].field_0x45 != class)
|
|
portrait = class;
|
|
|
|
if (row == 0) {
|
|
return obClassData[portrait].ability_front_hitcount != 0xFF ? obClassData[portrait].ability_front_hitcount : obClassData[class].ability_front_hitcount;
|
|
} else if (row == 1) {
|
|
return obClassData[portrait].ability_middle_hitcount != 0xFF ? obClassData[portrait].ability_middle_hitcount : obClassData[class].ability_middle_hitcount;
|
|
} else {
|
|
return obClassData[portrait].ability_back_hitcount != 0xFF ? obClassData[portrait].ability_back_hitcount : obClassData[class].ability_back_hitcount;
|
|
}
|
|
}
|