parent
b6b6cf6834
commit
428b4baa7b
|
@ -1,6 +1,7 @@
|
||||||
#include "party_member.h"
|
#include "party_member.h"
|
||||||
|
|
||||||
#include "combat_ai.h"
|
#include "combat_ai.h"
|
||||||
|
#include "combat_ai_defs.h"
|
||||||
#include "animation.h"
|
#include "animation.h"
|
||||||
#include "color.h"
|
#include "color.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
@ -30,6 +31,46 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
typedef struct PartyMemberDescription {
|
||||||
|
bool areaAttackMode[AREA_ATTACK_MODE_COUNT];
|
||||||
|
bool runAwayMode[RUN_AWAY_MODE_COUNT];
|
||||||
|
bool bestWeapon[BEST_WEAPON_COUNT];
|
||||||
|
bool distanceMode[DISTANCE_COUNT];
|
||||||
|
bool attackWho[ATTACK_WHO_COUNT];
|
||||||
|
bool chemUse[CHEM_USE_COUNT];
|
||||||
|
bool disposition[DISPOSITION_COUNT];
|
||||||
|
int level_minimum;
|
||||||
|
int level_up_every;
|
||||||
|
int level_pids_num;
|
||||||
|
int level_pids[5];
|
||||||
|
} PartyMemberDescription;
|
||||||
|
|
||||||
|
typedef struct STRU_519DBC {
|
||||||
|
int field_0;
|
||||||
|
int field_4; // party member level
|
||||||
|
int field_8; // early what?
|
||||||
|
} STRU_519DBC;
|
||||||
|
|
||||||
|
typedef struct STRUCT_519DA8 {
|
||||||
|
Object* object;
|
||||||
|
Script* script;
|
||||||
|
int* vars;
|
||||||
|
struct STRUCT_519DA8* next;
|
||||||
|
} STRUCT_519DA8;
|
||||||
|
|
||||||
|
static int partyMemberGetDescription(Object* object, PartyMemberDescription** partyMemberDescriptionPtr);
|
||||||
|
static void partyMemberDescriptionInit(PartyMemberDescription* partyMemberDescription);
|
||||||
|
static int _partyMemberPrepLoadInstance(STRUCT_519DA8* a1);
|
||||||
|
static int _partyMemberRecoverLoadInstance(STRUCT_519DA8* a1);
|
||||||
|
static int _partyMemberNewObjID();
|
||||||
|
static int _partyMemberNewObjIDRecurseFind(Object* object, int objectId);
|
||||||
|
static int _partyMemberPrepItemSave(Object* object);
|
||||||
|
static int _partyMemberItemSave(Object* object);
|
||||||
|
static int _partyMemberItemRecover(STRUCT_519DA8* a1);
|
||||||
|
static int _partyMemberClearItemList();
|
||||||
|
static int _partyFixMultipleMembers();
|
||||||
|
static int _partyMemberCopyLevelInfo(Object* object, int a2);
|
||||||
|
|
||||||
// 0x519D9C
|
// 0x519D9C
|
||||||
int gPartyMemberDescriptionsLength = 0;
|
int gPartyMemberDescriptionsLength = 0;
|
||||||
|
|
||||||
|
@ -37,32 +78,32 @@ int gPartyMemberDescriptionsLength = 0;
|
||||||
int* gPartyMemberPids = NULL;
|
int* gPartyMemberPids = NULL;
|
||||||
|
|
||||||
//
|
//
|
||||||
STRUCT_519DA8* _itemSaveListHead = NULL;
|
static STRUCT_519DA8* _itemSaveListHead = NULL;
|
||||||
|
|
||||||
// List of party members, it's length is [gPartyMemberDescriptionsLength] + 20.
|
// List of party members, it's length is [gPartyMemberDescriptionsLength] + 20.
|
||||||
//
|
//
|
||||||
// 0x519DA8
|
// 0x519DA8
|
||||||
STRUCT_519DA8* gPartyMembers = NULL;
|
static STRUCT_519DA8* gPartyMembers = NULL;
|
||||||
|
|
||||||
// Number of critters added to party.
|
// Number of critters added to party.
|
||||||
//
|
//
|
||||||
// 0x519DAC
|
// 0x519DAC
|
||||||
int gPartyMembersLength = 0;
|
static int gPartyMembersLength = 0;
|
||||||
|
|
||||||
// 0x519DB0
|
// 0x519DB0
|
||||||
int _partyMemberItemCount = 20000;
|
static int _partyMemberItemCount = 20000;
|
||||||
|
|
||||||
// 0x519DB4
|
// 0x519DB4
|
||||||
int _partyStatePrepped = 0;
|
static int _partyStatePrepped = 0;
|
||||||
|
|
||||||
// 0x519DB8
|
// 0x519DB8
|
||||||
PartyMemberDescription* gPartyMemberDescriptions = NULL;
|
static PartyMemberDescription* gPartyMemberDescriptions = NULL;
|
||||||
|
|
||||||
// 0x519DBC
|
// 0x519DBC
|
||||||
STRU_519DBC* _partyMemberLevelUpInfoList = NULL;
|
static STRU_519DBC* _partyMemberLevelUpInfoList = NULL;
|
||||||
|
|
||||||
// 0x519DC0
|
// 0x519DC0
|
||||||
int _curID = 20000;
|
static int _curID = 20000;
|
||||||
|
|
||||||
// partyMember_init
|
// partyMember_init
|
||||||
// 0x493BC0
|
// 0x493BC0
|
||||||
|
@ -260,7 +301,7 @@ void partyMembersExit()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4941F0
|
// 0x4941F0
|
||||||
int partyMemberGetDescription(Object* object, PartyMemberDescription** partyMemberDescriptionPtr)
|
static int partyMemberGetDescription(Object* object, PartyMemberDescription** partyMemberDescriptionPtr)
|
||||||
{
|
{
|
||||||
for (int index = 1; index < gPartyMemberDescriptionsLength; index++) {
|
for (int index = 1; index < gPartyMemberDescriptionsLength; index++) {
|
||||||
if (gPartyMemberPids[index] == object->pid) {
|
if (gPartyMemberPids[index] == object->pid) {
|
||||||
|
@ -273,7 +314,7 @@ int partyMemberGetDescription(Object* object, PartyMemberDescription** partyMemb
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x49425C
|
// 0x49425C
|
||||||
void partyMemberDescriptionInit(PartyMemberDescription* partyMemberDescription)
|
static void partyMemberDescriptionInit(PartyMemberDescription* partyMemberDescription)
|
||||||
{
|
{
|
||||||
for (int index = 0; index < AREA_ATTACK_MODE_COUNT; index++) {
|
for (int index = 0; index < AREA_ATTACK_MODE_COUNT; index++) {
|
||||||
partyMemberDescription->areaAttackMode[index] = 0;
|
partyMemberDescription->areaAttackMode[index] = 0;
|
||||||
|
@ -504,7 +545,7 @@ int _partyMemberPrepLoad()
|
||||||
|
|
||||||
// partyMemberPrepLoadInstance
|
// partyMemberPrepLoadInstance
|
||||||
// 0x49480C
|
// 0x49480C
|
||||||
int _partyMemberPrepLoadInstance(STRUCT_519DA8* a1)
|
static int _partyMemberPrepLoadInstance(STRUCT_519DA8* a1)
|
||||||
{
|
{
|
||||||
Object* obj = a1->object;
|
Object* obj = a1->object;
|
||||||
|
|
||||||
|
@ -610,7 +651,7 @@ int _partyMemberRecoverLoad()
|
||||||
|
|
||||||
// partyMemberRecoverLoadInstance
|
// partyMemberRecoverLoadInstance
|
||||||
// 0x494A88
|
// 0x494A88
|
||||||
int _partyMemberRecoverLoadInstance(STRUCT_519DA8* a1)
|
static int _partyMemberRecoverLoadInstance(STRUCT_519DA8* a1)
|
||||||
{
|
{
|
||||||
if (a1->script == NULL) {
|
if (a1->script == NULL) {
|
||||||
showMesageBox("\n Error!: partyMemberRecoverLoadInstance: No script!");
|
showMesageBox("\n Error!: partyMemberRecoverLoadInstance: No script!");
|
||||||
|
@ -859,7 +900,7 @@ int _getPartyMemberCount()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x495070
|
// 0x495070
|
||||||
int _partyMemberNewObjID()
|
static int _partyMemberNewObjID()
|
||||||
{
|
{
|
||||||
Object* object;
|
Object* object;
|
||||||
|
|
||||||
|
@ -901,7 +942,7 @@ int _partyMemberNewObjID()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4950F4
|
// 0x4950F4
|
||||||
int _partyMemberNewObjIDRecurseFind(Object* obj, int objectId)
|
static int _partyMemberNewObjIDRecurseFind(Object* obj, int objectId)
|
||||||
{
|
{
|
||||||
Inventory* inventory = &(obj->data.inventory);
|
Inventory* inventory = &(obj->data.inventory);
|
||||||
for (int index = 0; index < inventory->length; index++) {
|
for (int index = 0; index < inventory->length; index++) {
|
||||||
|
@ -935,7 +976,7 @@ int _partyMemberPrepItemSaveAll()
|
||||||
}
|
}
|
||||||
|
|
||||||
// partyMemberPrepItemSaveAll
|
// partyMemberPrepItemSaveAll
|
||||||
int _partyMemberPrepItemSave(Object* object)
|
static int _partyMemberPrepItemSave(Object* object)
|
||||||
{
|
{
|
||||||
if (object->sid != -1) {
|
if (object->sid != -1) {
|
||||||
Script* script;
|
Script* script;
|
||||||
|
@ -957,7 +998,7 @@ int _partyMemberPrepItemSave(Object* object)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x495234
|
// 0x495234
|
||||||
int _partyMemberItemSave(Object* object)
|
static int _partyMemberItemSave(Object* object)
|
||||||
{
|
{
|
||||||
if (object->sid != -1) {
|
if (object->sid != -1) {
|
||||||
Script* script;
|
Script* script;
|
||||||
|
@ -1015,7 +1056,7 @@ int _partyMemberItemSave(Object* object)
|
||||||
|
|
||||||
// partyMemberItemRecover
|
// partyMemberItemRecover
|
||||||
// 0x495388
|
// 0x495388
|
||||||
int _partyMemberItemRecover(STRUCT_519DA8* a1)
|
static int _partyMemberItemRecover(STRUCT_519DA8* a1)
|
||||||
{
|
{
|
||||||
int sid = -1;
|
int sid = -1;
|
||||||
if (scriptAdd(&sid, SCRIPT_TYPE_ITEM) == -1) {
|
if (scriptAdd(&sid, SCRIPT_TYPE_ITEM) == -1) {
|
||||||
|
@ -1051,7 +1092,7 @@ int _partyMemberItemRecover(STRUCT_519DA8* a1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4954C4
|
// 0x4954C4
|
||||||
int _partyMemberClearItemList()
|
static int _partyMemberClearItemList()
|
||||||
{
|
{
|
||||||
while (_itemSaveListHead != NULL) {
|
while (_itemSaveListHead != NULL) {
|
||||||
STRUCT_519DA8* node = _itemSaveListHead;
|
STRUCT_519DA8* node = _itemSaveListHead;
|
||||||
|
@ -1143,7 +1184,7 @@ int partyGetBestSkillValue(int skill)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x495620
|
// 0x495620
|
||||||
int _partyFixMultipleMembers()
|
static int _partyFixMultipleMembers()
|
||||||
{
|
{
|
||||||
debugPrint("\n\n\n[Party Members]:");
|
debugPrint("\n\n\n[Party Members]:");
|
||||||
|
|
||||||
|
@ -1508,7 +1549,7 @@ int _partyMemberIncLevels()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x495EA8
|
// 0x495EA8
|
||||||
int _partyMemberCopyLevelInfo(Object* critter, int a2)
|
static int _partyMemberCopyLevelInfo(Object* critter, int a2)
|
||||||
{
|
{
|
||||||
if (critter == NULL) {
|
if (critter == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -1,63 +1,22 @@
|
||||||
#ifndef PARTY_MEMBER_H
|
#ifndef PARTY_MEMBER_H
|
||||||
#define PARTY_MEMBER_H
|
#define PARTY_MEMBER_H
|
||||||
|
|
||||||
#include "combat_ai_defs.h"
|
|
||||||
#include "db.h"
|
#include "db.h"
|
||||||
#include "obj_types.h"
|
#include "obj_types.h"
|
||||||
#include "scripts.h"
|
|
||||||
|
|
||||||
typedef struct PartyMemberDescription {
|
|
||||||
bool areaAttackMode[AREA_ATTACK_MODE_COUNT];
|
|
||||||
bool runAwayMode[RUN_AWAY_MODE_COUNT];
|
|
||||||
bool bestWeapon[BEST_WEAPON_COUNT];
|
|
||||||
bool distanceMode[DISTANCE_COUNT];
|
|
||||||
bool attackWho[ATTACK_WHO_COUNT];
|
|
||||||
bool chemUse[CHEM_USE_COUNT];
|
|
||||||
bool disposition[DISPOSITION_COUNT];
|
|
||||||
int level_minimum;
|
|
||||||
int level_up_every;
|
|
||||||
int level_pids_num;
|
|
||||||
int level_pids[5];
|
|
||||||
} PartyMemberDescription;
|
|
||||||
|
|
||||||
typedef struct STRU_519DBC {
|
|
||||||
int field_0;
|
|
||||||
int field_4; // party member level
|
|
||||||
int field_8; // early what?
|
|
||||||
} STRU_519DBC;
|
|
||||||
|
|
||||||
typedef struct STRUCT_519DA8 {
|
|
||||||
Object* object;
|
|
||||||
Script* script;
|
|
||||||
int* vars;
|
|
||||||
struct STRUCT_519DA8* next;
|
|
||||||
} STRUCT_519DA8;
|
|
||||||
|
|
||||||
extern int gPartyMemberDescriptionsLength;
|
extern int gPartyMemberDescriptionsLength;
|
||||||
extern int* gPartyMemberPids;
|
extern int* gPartyMemberPids;
|
||||||
extern STRUCT_519DA8* _itemSaveListHead;
|
|
||||||
extern STRUCT_519DA8* gPartyMembers;
|
|
||||||
extern int gPartyMembersLength;
|
|
||||||
extern int _partyMemberItemCount;
|
|
||||||
extern int _partyStatePrepped;
|
|
||||||
extern PartyMemberDescription* gPartyMemberDescriptions;
|
|
||||||
extern STRU_519DBC* _partyMemberLevelUpInfoList;
|
|
||||||
extern int _curID;
|
|
||||||
|
|
||||||
int partyMembersInit();
|
int partyMembersInit();
|
||||||
void partyMembersReset();
|
void partyMembersReset();
|
||||||
void partyMembersExit();
|
void partyMembersExit();
|
||||||
int partyMemberGetDescription(Object* object, PartyMemberDescription** partyMemberDescriptionPtr);
|
|
||||||
void partyMemberDescriptionInit(PartyMemberDescription* partyMemberDescription);
|
|
||||||
int partyMemberAdd(Object* object);
|
int partyMemberAdd(Object* object);
|
||||||
int partyMemberRemove(Object* object);
|
int partyMemberRemove(Object* object);
|
||||||
int _partyMemberPrepSave();
|
int _partyMemberPrepSave();
|
||||||
int _partyMemberUnPrepSave();
|
int _partyMemberUnPrepSave();
|
||||||
int partyMembersSave(File* stream);
|
int partyMembersSave(File* stream);
|
||||||
int _partyMemberPrepLoad();
|
int _partyMemberPrepLoad();
|
||||||
int _partyMemberPrepLoadInstance(STRUCT_519DA8* a1);
|
|
||||||
int _partyMemberRecoverLoad();
|
int _partyMemberRecoverLoad();
|
||||||
int _partyMemberRecoverLoadInstance(STRUCT_519DA8* a1);
|
|
||||||
int partyMembersLoad(File* stream);
|
int partyMembersLoad(File* stream);
|
||||||
void _partyMemberClear();
|
void _partyMemberClear();
|
||||||
int _partyMemberSyncPosition();
|
int _partyMemberSyncPosition();
|
||||||
|
@ -66,17 +25,10 @@ Object* partyMemberFindByPid(int a1);
|
||||||
bool _isPotentialPartyMember(Object* object);
|
bool _isPotentialPartyMember(Object* object);
|
||||||
bool objectIsPartyMember(Object* object);
|
bool objectIsPartyMember(Object* object);
|
||||||
int _getPartyMemberCount();
|
int _getPartyMemberCount();
|
||||||
int _partyMemberNewObjID();
|
|
||||||
int _partyMemberNewObjIDRecurseFind(Object* object, int objectId);
|
|
||||||
int _partyMemberPrepItemSaveAll();
|
int _partyMemberPrepItemSaveAll();
|
||||||
int _partyMemberPrepItemSave(Object* object);
|
|
||||||
int _partyMemberItemSave(Object* object);
|
|
||||||
int _partyMemberItemRecover(STRUCT_519DA8* a1);
|
|
||||||
int _partyMemberClearItemList();
|
|
||||||
int partyMemberGetBestSkill(Object* object);
|
int partyMemberGetBestSkill(Object* object);
|
||||||
Object* partyMemberGetBestInSkill(int skill);
|
Object* partyMemberGetBestInSkill(int skill);
|
||||||
int partyGetBestSkillValue(int skill);
|
int partyGetBestSkillValue(int skill);
|
||||||
int _partyFixMultipleMembers();
|
|
||||||
void _partyMemberSaveProtos();
|
void _partyMemberSaveProtos();
|
||||||
bool partyMemberSupportsDisposition(Object* object, int disposition);
|
bool partyMemberSupportsDisposition(Object* object, int disposition);
|
||||||
bool partyMemberSupportsAreaAttackMode(Object* object, int areaAttackMode);
|
bool partyMemberSupportsAreaAttackMode(Object* object, int areaAttackMode);
|
||||||
|
@ -86,7 +38,6 @@ bool partyMemberSupportsDistance(Object* object, int distanceMode);
|
||||||
bool partyMemberSupportsAttackWho(Object* object, int attackWho);
|
bool partyMemberSupportsAttackWho(Object* object, int attackWho);
|
||||||
bool partyMemberSupportsChemUse(Object* object, int chemUse);
|
bool partyMemberSupportsChemUse(Object* object, int chemUse);
|
||||||
int _partyMemberIncLevels();
|
int _partyMemberIncLevels();
|
||||||
int _partyMemberCopyLevelInfo(Object* object, int a2);
|
|
||||||
bool partyIsAnyoneCanBeHealedByRest();
|
bool partyIsAnyoneCanBeHealedByRest();
|
||||||
int partyGetMaxWoundToHealByRest();
|
int partyGetMaxWoundToHealByRest();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue