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