sub_806C330

This commit is contained in:
DizzyEggg 2024-11-25 18:54:12 +01:00
parent 15c4f42b33
commit 9d3b787619
10 changed files with 211 additions and 549 deletions

View File

@ -5,535 +5,6 @@
.text
thumb_func_start sub_806BFC0
sub_806BFC0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x3C
adds r4, r0, 0
lsls r1, 24
lsrs r1, 24
str r1, [sp]
adds r1, r4, 0
adds r1, 0xA8
movs r0, 0
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x3
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x8
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r2, r4, 0
adds r2, 0xB4
movs r1, 0x22
str r1, [r2]
adds r1, r4, 0
adds r1, 0xBC
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x3
strb r0, [r1]
adds r1, 0x4
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x3
strb r0, [r1]
adds r1, 0x3
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x4
strb r0, [r1]
adds r1, 0x9
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x2
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x3
strb r0, [r1]
adds r1, 0x4
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x3
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x3
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x3
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
adds r1, 0x1
strb r0, [r1]
movs r0, 0xB2
lsls r0, 1
adds r1, r4, r0
movs r0, 0xFF
strb r0, [r1]
ldr r2, _0806C168
adds r1, r4, r2
movs r0, 0x1
negs r0, r0
strb r0, [r1]
movs r1, 0
movs r7, 0x84
lsls r7, 1
adds r0, r4, r7
movs r5, 0x4
_0806C080:
strb r1, [r0]
strb r1, [r0, 0x5]
adds r0, 0x1
subs r5, 0x1
cmp r5, 0
bge _0806C080
movs r0, 0
str r0, [sp, 0x4]
movs r5, 0
adds r1, r4, 0
adds r1, 0x5E
str r1, [sp, 0x8]
movs r2, 0x5C
adds r2, r4
mov r10, r2
adds r7, r4, 0
adds r7, 0xFD
str r7, [sp, 0x20]
adds r0, r4, 0
adds r0, 0xF4
str r0, [sp, 0xC]
adds r1, 0x9D
str r1, [sp, 0x1C]
adds r2, r4, 0
adds r2, 0xF5
str r2, [sp, 0x10]
subs r7, 0x7
str r7, [sp, 0x14]
adds r0, 0x3
str r0, [sp, 0x18]
adds r1, 0x4
str r1, [sp, 0x24]
movs r2, 0x1
mov r9, r2
movs r3, 0xA
subs r7, 0xC2
str r7, [sp, 0x28]
subs r0, 0xCB
str r0, [sp, 0x2C]
adds r2, r4, 0
adds r2, 0x24
subs r1, 0xDF
str r1, [sp, 0x38]
adds r6, r4, 0
adds r6, 0x1C
movs r7, 0x80
lsls r7, 1
mov r8, r7
_0806C0E0:
movs r1, 0x2
ldrsh r0, [r4, r1]
adds r1, r5, 0
str r2, [sp, 0x30]
str r3, [sp, 0x34]
bl GetPokemonAbility
ldr r7, [sp, 0x8]
adds r1, r7, r5
strb r0, [r1]
lsls r0, 24
lsrs r0, 24
ldr r2, [sp, 0x30]
ldr r3, [sp, 0x34]
cmp r0, 0x25
bne _0806C104
movs r0, 0x1
str r0, [sp, 0x4]
_0806C104:
ldr r1, [sp]
cmp r1, 0
beq _0806C11E
adds r0, r4, 0
adds r0, 0x14
adds r0, r5
mov r7, r9
strb r7, [r0]
adds r0, r4, 0
adds r0, 0x16
adds r0, r5
mov r1, r9
strb r1, [r0]
_0806C11E:
strh r3, [r6]
ldr r7, [sp, 0x38]
strh r3, [r7]
strh r3, [r2]
ldr r1, [sp, 0x2C]
mov r0, r8
stm r1!, {r0}
str r1, [sp, 0x2C]
ldr r7, [sp, 0x28]
stm r7!, {r0}
str r7, [sp, 0x28]
adds r2, 0x2
ldr r0, [sp, 0x38]
adds r0, 0x2
str r0, [sp, 0x38]
adds r6, 0x2
adds r5, 0x1
cmp r5, 0x1
ble _0806C0E0
ldr r1, [sp, 0x4]
cmp r1, 0
beq _0806C170
movs r0, 0
bl GetApparentWeather
ldr r1, _0806C16C
lsls r0, 24
lsrs r0, 22
adds r0, r1
ldrb r0, [r0]
movs r1, 0
mov r2, r10
strb r0, [r2]
adds r0, r4, 0
adds r0, 0x5D
strb r1, [r0]
b _0806C188
.align 2, 0
_0806C168: .4byte 0x00000165
_0806C16C: .4byte gUnknown_80F520C
_0806C170:
movs r5, 0
_0806C172:
movs r7, 0x2
ldrsh r0, [r4, r7]
adds r1, r5, 0
bl GetPokemonType
mov r2, r10
adds r1, r2, r5
strb r0, [r1]
adds r5, 0x1
cmp r5, 0x1
ble _0806C172
_0806C188:
ldr r0, _0806C1D0
ldr r1, [r0]
movs r2, 0
movs r0, 0x1
strb r0, [r1, 0xC]
movs r0, 0
strh r2, [r4, 0x28]
movs r7, 0x89
lsls r7, 1
adds r1, r4, r7
strb r0, [r1]
ldr r1, [sp, 0x20]
strb r0, [r1]
ldr r2, _0806C1D4
adds r1, r4, r2
strb r0, [r1]
ldr r7, [sp, 0xC]
strb r0, [r7]
ldr r1, [sp, 0x1C]
strb r0, [r1]
ldr r2, [sp, 0x10]
strb r0, [r2]
ldr r7, [sp, 0x14]
strb r0, [r7]
ldr r1, [sp, 0x18]
strb r0, [r1]
ldr r2, [sp, 0x24]
strb r0, [r2]
add sp, 0x3C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0806C1D0: .4byte gDungeon
_0806C1D4: .4byte 0x00000113
thumb_func_end sub_806BFC0
thumb_func_start sub_806C1D8
sub_806C1D8:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
movs r5, 0
_0806C1E2:
ldr r0, _0806C258
ldr r0, [r0]
lsls r1, r5, 2
ldr r2, _0806C25C
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
adds r5, 0x1
mov r9, r5
cmp r0, 0
beq _0806C244
ldr r4, [r4, 0x70]
ldrb r6, [r4, 0xA]
cmp r6, 0
blt _0806C244
movs r5, 0
movs r0, 0x8C
lsls r0, 1
mov r12, r0
movs r2, 0x1
mov r8, r2
adds r3, r4, 0
movs r7, 0xFE
_0806C218:
lsls r0, r5, 3
adds r0, r4
add r0, r12
ldrb r1, [r0]
mov r0, r8
ands r0, r1
cmp r0, 0
beq _0806C234
ldr r0, _0806C260
adds r2, r3, r0
ldrb r1, [r2]
adds r0, r7, 0
ands r0, r1
strb r0, [r2]
_0806C234:
adds r3, 0x8
adds r5, 0x1
cmp r5, 0x3
ble _0806C218
adds r0, r6, 0
adds r1, r4, 0
bl sub_806C264
_0806C244:
mov r5, r9
cmp r5, 0x3
ble _0806C1E2
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0806C258: .4byte gDungeon
_0806C25C: .4byte 0x0001357c
_0806C260: .4byte 0x00000119
thumb_func_end sub_806C1D8
thumb_func_start sub_806C264
sub_806C264:
push {r4,r5,lr}
mov r12, r1
ldr r2, _0806C31C
movs r1, 0x64
muls r0, r1
ldr r1, _0806C320
adds r0, r1
ldr r1, [r2]
adds r3, r1, r0
mov r2, r12
ldrh r0, [r2, 0xE]
strh r0, [r3, 0x10]
ldrh r0, [r2, 0x10]
strh r0, [r3, 0x12]
ldr r0, [r2, 0x18]
str r0, [r3, 0x18]
adds r2, 0x14
adds r1, r3, 0
adds r1, 0x14
movs r4, 0x1
_0806C28C:
ldrb r0, [r2]
strb r0, [r1]
ldrb r0, [r2, 0x2]
strb r0, [r1, 0x2]
adds r2, 0x1
adds r1, 0x1
subs r4, 0x1
cmp r4, 0
bge _0806C28C
ldr r4, _0806C324
adds r0, r4, 0
mov r5, r12
ldrh r5, [r5, 0x4]
adds r0, r5
lsls r0, 16
lsrs r0, 16
cmp r0, 0x2
bhi _0806C2B6
movs r0, 0xBC
lsls r0, 1
strh r0, [r3, 0xE]
_0806C2B6:
adds r1, r3, 0
adds r1, 0x1C
movs r0, 0x8C
lsls r0, 1
add r0, r12
ldm r0!, {r2,r4,r5}
stm r1!, {r2,r4,r5}
ldm r0!, {r2,r4,r5}
stm r1!, {r2,r4,r5}
ldm r0!, {r2,r4,r5}
stm r1!, {r2,r4,r5}
mov r1, r12
ldrb r0, [r1, 0x9]
strb r0, [r3, 0x3]
ldrh r0, [r1, 0xC]
strh r0, [r3, 0x8]
mov r0, r12
adds r0, 0x8C
ldr r0, [r0]
str r0, [r3, 0x4C]
mov r0, r12
adds r0, 0x94
ldrb r1, [r0]
adds r0, r3, 0
adds r0, 0x50
strb r1, [r0]
mov r2, r12
ldr r0, [r2, 0x3C]
str r0, [r3, 0x54]
movs r0, 0x9E
lsls r0, 1
add r0, r12
ldr r0, [r0]
str r0, [r3, 0x44]
movs r0, 0xA0
lsls r0, 1
add r0, r12
ldr r0, [r0]
str r0, [r3, 0x48]
ldr r0, [r2, 0x60]
str r0, [r3, 0x40]
movs r4, 0xA
ldrsh r1, [r3, r4]
ldr r0, _0806C328
cmp r1, r0
bne _0806C316
ldr r0, _0806C32C
strh r0, [r3, 0xA]
_0806C316:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0806C31C: .4byte gRecruitedPokemonRef
_0806C320: .4byte 0x00008df8
_0806C324: .4byte 0xfffffe87
_0806C328: .4byte 0x000055aa
_0806C32C: .4byte 0x00005aa5
thumb_func_end sub_806C264
thumb_func_start sub_806C330
sub_806C330:
push {r4-r7,lr}
adds r4, r0, 0
adds r5, r1, 0
lsls r2, 16
asrs r2, 16
mov r12, r2
lsls r3, 24
lsrs r7, r3, 24
ldr r0, _0806C370
ldr r0, [r0]
ldr r1, _0806C374
adds r2, r0, r1
movs r3, 0
ldr r0, [r2, 0x40]
cmp r3, r0
bge _0806C382
mov r1, r12
lsls r0, r1, 16
lsrs r6, r0, 16
adds r1, r2, 0
_0806C358:
ldrb r0, [r1, 0x3]
cmp r0, 0
beq _0806C378
ldrb r0, [r1, 0x4]
cmp r0, r4
bne _0806C378
ldrb r0, [r1, 0x5]
cmp r0, r5
bne _0806C378
strh r6, [r1]
strb r7, [r1, 0x2]
b _0806C3B8
.align 2, 0
_0806C370: .4byte gDungeon
_0806C374: .4byte 0x0000057c
_0806C378:
adds r1, 0x8
adds r3, 0x1
ldr r0, [r2, 0x40]
cmp r3, r0
blt _0806C358
_0806C382:
ldr r0, [r2, 0x40]
cmp r0, 0x7
bgt _0806C3B8
lsls r0, 3
adds r0, r2, r0
movs r1, 0x1
strb r1, [r0, 0x3]
ldr r0, [r2, 0x40]
lsls r0, 3
adds r0, r2, r0
strb r4, [r0, 0x4]
ldr r0, [r2, 0x40]
lsls r0, 3
adds r0, r2, r0
strb r5, [r0, 0x5]
ldr r0, [r2, 0x40]
lsls r0, 3
adds r0, r2, r0
mov r1, r12
strh r1, [r0]
ldr r0, [r2, 0x40]
lsls r0, 3
adds r0, r2, r0
strb r7, [r0, 0x2]
ldr r0, [r2, 0x40]
adds r0, 0x1
str r0, [r2, 0x40]
_0806C3B8:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_806C330
thumb_func_start sub_806C3C0
sub_806C3C0:

View File

@ -430,4 +430,6 @@
#define NUM_MONSTERS MONSTER_JIRACHI
#define MONSTER_MAX (MONSTER_RAYQUAZA_CUTSCENE + 1)
#endif // GUARD_CONSTANTS_MONSTER_H
#define IS_CASTFORM_FORM_MONSTER(id)((id == MONSTER_CASTFORM_SNOWY || id == MONSTER_CASTFORM_SUNNY || id == MONSTER_CASTFORM_RAINY))
#endif // GUARD_CONSTANTS_MONSTER_H

View File

@ -310,6 +310,22 @@ typedef struct unkDungeon2F3C
/* 0x10 */ u8 unk10[2];
} unkDungeon2F3C;
// Size :0x8
typedef struct unkDungeon57CSub
{
s16 unk0;
u8 unk2;
u8 unk3;
u8 unk4;
u8 unk5;
} unkDungeon57CSub;
typedef struct unkDungeon57C
{
unkDungeon57CSub unkArray[8];
s32 unk40;
} unkDungeon57C;
// size: 0x1CEDC
typedef struct Dungeon
{
@ -340,7 +356,7 @@ typedef struct Dungeon
u8 fillC0[0x134 - 0xC0];
struct unkStruct_Dungeon134_sub unk134;
/* 0x47C */ RGB colorRamp[0x100];
/* 0x57C */ u8 fill57C[0x5C0 - 0x57c];
/* 0x57C */ unkDungeon57C unk57C;
/* 0x5C0 */ s32 unk5C0;
/* 0x5C4 */ struct unkStruct_Dungeon5C4_sub unk5C4[3];
/* 0x5F4 */ u8 faintStringBuffer[80];

View File

@ -373,7 +373,7 @@ extern void sub_8083AB0(s16 param_0, Entity * target, Entity * entity);
extern void sub_8046F84(s32 itemFlag);
extern bool8 sub_8083C50(void);
extern void sub_8068FE0(Entity *, u32, Entity *r2);
extern void sub_806BFC0(EntityInfo *, u32);
extern void ResetMonEntityData(EntityInfo *, u32);
extern s32 GetMovesLearnedAtLevel(u16* dst, s16 species, s32 level, s32 IQPoints);
extern bool8 IsKeepMoney(u8 dungeon);
extern void sub_8042B0C(Entity *);
@ -1041,7 +1041,7 @@ void sub_8043D60(void)
monInfo->HP = monInfo->maxHPStat;
monInfo->belly = monInfo->maxBelly;
gDungeon->unk644.itemHoldersIdentified = FALSE;
sub_806BFC0(monInfo, 0);
ResetMonEntityData(monInfo, 0);
monInfo->apparentID = monInfo->id;
monInfo->perishSongTurns = 0;
for (i = 0; i < MAX_MON_MOVES; i++) {

View File

@ -45,7 +45,7 @@ struct unkStruct_80F520C
};
// Castform Forecast ability data
extern struct unkStruct_80F520C gUnknown_80F520C[WEATHER_RANDOM];
extern const struct unkStruct_80F520C gUnknown_80F520C[WEATHER_RANDOM];
extern u8 gUnknown_80F51E4[];
extern u8 *gUnknown_80FCC7C[];
@ -112,7 +112,7 @@ void TriggerWeatherAbilities(void)
s32 GetMonsterApparentID(Entity *pokemon, s16 id)
{
if (id == MONSTER_CASTFORM || id == MONSTER_CASTFORM_SNOWY || id == MONSTER_CASTFORM_SUNNY || id == MONSTER_CASTFORM_RAINY) {
if (id == MONSTER_CASTFORM || IS_CASTFORM_FORM_MONSTER(id)) {
if (HasAbility(pokemon, ABILITY_FORECAST))
return gUnknown_80F520C[GetApparentWeather(pokemon)].unk2;
return MONSTER_CASTFORM;
@ -1665,10 +1665,11 @@ NAKED void sub_806BB6C(Entity *entity, s16 _species)
#endif // NONMATCHING
extern s32 sub_803DA20(s32 param_1);
extern void sub_806BFC0(EntityInfo *, u32);
extern void sub_80694C0(Entity *, s32, s32, u32);
extern void AddPokemonDungeonSprite(s32 id, s16 species, DungeonPos *pos, u32);
void ResetMonEntityData(EntityInfo *, bool8 a1);
void sub_806BC68(bool8 a0, Entity *entity, struct unkStruct_806B7F8 *structPtr, DungeonPos *pos)
{
DungeonPos entityPos;
@ -1676,7 +1677,7 @@ void sub_806BC68(bool8 a0, Entity *entity, struct unkStruct_806B7F8 *structPtr,
gDungeon->unkC = 1;
entInfo = GetEntInfo(entity);
sub_806BFC0(entInfo, 1);
ResetMonEntityData(entInfo, TRUE);
entInfo->monsterBehavior = structPtr->unk2;
entity->isVisible = TRUE;
entity->unk22 = 0;
@ -1748,7 +1749,7 @@ void sub_806BC68(bool8 a0, Entity *entity, struct unkStruct_806B7F8 *structPtr,
entInfo->unkFF = 0;
entInfo->unk174.raw = 0;
entInfo->decoyAITracker = 0;
sub_806BFC0(entInfo, 1);
ResetMonEntityData(entInfo, TRUE);
ZeroOutItem(&entInfo->heldItem);
entInfo->unk64 = 0;
entInfo->statusIcons = 0;
@ -1796,4 +1797,176 @@ void sub_806BC68(bool8 a0, Entity *entity, struct unkStruct_806B7F8 *structPtr,
LoadIQSkills(entity);
sub_806A898(entity, FALSE, FALSE);
}
void ResetMonEntityData(EntityInfo *entInfo, bool8 setStatsToOne)
{
s32 i;
bool8 hasForecast;
entInfo->sleepClassStatus.status = 0;
entInfo->sleepClassStatus.turns = 0;
entInfo->burnClassStatus.status = 0;
entInfo->burnClassStatus.turns = 0;
entInfo->burnClassStatus.damageCountdown = 0;
entInfo->burnClassStatus.unk4 = 0;
entInfo->frozenClassStatus.status = 0;
entInfo->frozenClassStatus.turns = 0;
entInfo->frozenClassStatus.damageCountdown = 0;
entInfo->frozenClassStatus.unk4 = 34;
entInfo->cringeClassStatus.status = 0;
entInfo->cringeClassStatus.turns = 0;
entInfo->bideClassStatus.status = 0;
entInfo->reflectClassStatus.status = 0;
entInfo->reflectClassStatus.turns = 0;
entInfo->curseClassStatus.status = 0;
entInfo->curseClassStatus.turns = 0;
entInfo->curseClassStatus.damageCountdown = 0;
entInfo->leechSeedClassStatus.status = 0;
entInfo->leechSeedClassStatus.turns = 0;
entInfo->leechSeedClassStatus.damageCountdown = 0;
entInfo->sureShotClassStatus.status = 0;
entInfo->sureShotClassStatus.turns = 0;
entInfo->longTossClassStatus.status = 0;
entInfo->invisibleClassStatus.status = 0;
entInfo->invisibleClassStatus.turns = 0;
entInfo->blinkerClassStatus.status = 0;
entInfo->blinkerClassStatus.turns = 0;
entInfo->muzzled.muzzled = FALSE;
entInfo->muzzled.turns = 0;
entInfo->powerEars = FALSE;
entInfo->scanning = FALSE;
entInfo->stairSpotter = FALSE;
entInfo->stairSpotter = FALSE;
entInfo->unk164 = 0xFF;
entInfo->unk165 = 0xFF;
for (i = 0; i < NUM_SPEED_COUNTERS; i++) {
entInfo->speedUpCounters[i] = 0;
entInfo->speedDownCounters[i] = 0;
}
hasForecast = FALSE;
for (i = 0; i < 2; i++) {
entInfo->abilities[i] = GetPokemonAbility(entInfo->id, i);
if (entInfo->abilities[i] == ABILITY_FORECAST) {
hasForecast = TRUE;
}
if (setStatsToOne) {
entInfo->atk[i] = 1;
entInfo->def[i] = 1;
}
entInfo->offensiveStages[i] = 10;
entInfo->defensiveStages[i] = 10;
entInfo->hitChanceStages[i] = 10;
entInfo->offensiveMultipliers[i].raw = IntToF248_2(1).raw;
entInfo->defensiveMultipliers[i].raw = IntToF248_2(1).raw;
}
if (hasForecast) {
entInfo->types[0] = gUnknown_80F520C[GetApparentWeather(NULL)].unk0;
entInfo->types[1] = TYPE_NONE;
}
else {
for (i = 0; i < 2; i++) {
entInfo->types[i] = GetPokemonType(entInfo->id, i);
}
}
gDungeon->unkC = 1;
entInfo->flashFireBoost = 0;
entInfo->stockpileStage = 0;
entInfo->perishSongTurns = 0;
entInfo->unk113 = 0;
entInfo->grudge = 0;
entInfo->expMultiplier = EXP_HALVED;
entInfo->exposed = FALSE;
entInfo->isColorChanged = 0;
entInfo->bossFlag = 0;
entInfo->unkFF = 0;
}
void sub_806C264(s32 teamIndex, EntityInfo *entInfo);
void sub_806C1D8(void)
{
s32 i, j;
for (i = 0; i < MAX_TEAM_MEMBERS; i++) {
Entity *entity = gDungeon->teamPokemon[i];
if (EntityExists(entity)) {
EntityInfo *entInfo = GetEntInfo(entity);
s32 teamIndex = entInfo->teamIndex;
if (teamIndex >= 0) {
for (j = 0; j < MAX_MON_MOVES; j++) {
if (MoveFlagExists(&entInfo->moves.moves[j])) {
entInfo->moves.moves[j].moveFlags2 &= ~(1);
}
}
sub_806C264(teamIndex, entInfo);
}
}
}
}
void sub_806C264(s32 teamIndex, EntityInfo *entInfo)
{
s32 i;
PokemonStruct2 *monPtr = &gRecruitedPokemonRef->pokemon2[teamIndex];
monPtr->unk10 = entInfo->HP;
monPtr->unk12 = entInfo->maxHPStat;
monPtr->currExp = entInfo->exp;
for (i = 0; i < 2; i++) {
monPtr->offense.att[i] = entInfo->atk[i];
monPtr->offense.def[i] = entInfo->def[i];
}
if (IS_CASTFORM_FORM_MONSTER(entInfo->apparentID)) {
monPtr->speciesNum = MONSTER_CASTFORM;
}
monPtr->moves = entInfo->moves;
monPtr->level = entInfo->level;
monPtr->IQ = entInfo->IQ;
monPtr->IQSkills = entInfo->IQSkillMenuFlags;
monPtr->tacticIndex = entInfo->tactic;
monPtr->hiddenPower = entInfo->hiddenPower;
monPtr->belly = entInfo->belly;
monPtr->maxBelly = entInfo->maxBelly;
monPtr->itemSlot = entInfo->heldItem;
if (monPtr->unkA == 0x55AA) {
monPtr->unkA = 0x5AA5;
}
}
// s16 species memes again
void sub_806C330(s32 _x, s32 _y, s16 _species, u32 _a3)
{
s32 i;
s32 x = _x;
s32 y = _y;
s32 species = (_species);
u8 a3 = _a3;
unkDungeon57C *strPtr = &gDungeon->unk57C;
for (i = 0; i < strPtr->unk40; i++) {
if (strPtr->unkArray[i].unk3 != 0 && strPtr->unkArray[i].unk4 == x && strPtr->unkArray[i].unk5 == y) {
s16 speciesMatchMe = SpeciesId(_species);
strPtr->unkArray[i].unk0 = speciesMatchMe;
strPtr->unkArray[i].unk2 = a3;
return;
}
}
if (strPtr->unk40 < 8) {
strPtr->unkArray[strPtr->unk40].unk3 = 1;
strPtr->unkArray[strPtr->unk40].unk4 = x;
strPtr->unkArray[strPtr->unk40].unk5 = y;
strPtr->unkArray[strPtr->unk40].unk0 = species;
strPtr->unkArray[strPtr->unk40].unk2 = a3;
strPtr->unk40++;
}
}
//

View File

@ -39,7 +39,7 @@
extern u8 gUnknown_202F221;
extern void sub_806BFC0(EntityInfo *, u32);
extern void ResetMonEntityData(EntityInfo *, u32);
const u8 gUnknown_8106EEF[] = {0x03, 0x04, 0x05, 0x00, 0x00, 0x70, 0x6b, 0x73, 0x64, 0x69, 0x72, 0x30, 0x00 };
@ -786,7 +786,7 @@ static bool8 HandleDealingDamageInternal(Entity *attacker, Entity *target, struc
EndCurseClassStatus(attacker, target, STATUS_DECOY);
}
sub_8078084(target);
sub_806BFC0(targetData, 0);
ResetMonEntityData(targetData, 0);
sub_800DBBC();
sub_806A390(target);
sub_806CCB4(target, sub_806CEBC(target));
@ -843,7 +843,7 @@ static bool8 HandleDealingDamageInternal(Entity *attacker, Entity *target, struc
EndCurseClassStatus(attacker, target, STATUS_DECOY);
}
sub_8078084(target);
sub_806BFC0(targetData, 0);
ResetMonEntityData(targetData, 0);
sub_800DBBC();
sub_806A390(target);
sub_806CCB4(target, sub_806CEBC(target));
@ -897,7 +897,7 @@ static bool8 HandleDealingDamageInternal(Entity *attacker, Entity *target, struc
EndCurseClassStatus(attacker, target, STATUS_DECOY);
}
sub_8078084(target);
sub_806BFC0(targetData, 0);
ResetMonEntityData(targetData, 0);
sub_800DBBC();
sub_806A390(target);
sub_806CCB4(target, sub_806CEBC(target));

View File

@ -17,7 +17,7 @@
extern u8 *gUnknown_80FE2EC[];
extern void sub_806BFC0(EntityInfo *, u32);
extern void ResetMonEntityData(EntityInfo *, u32);
void sub_8069E0C(Entity *pokemon);
void sub_8042A44(Entity *r0);
void sub_8083D78(void);
@ -105,7 +105,7 @@ void sub_8072B78(Entity *pokemon, Entity *target, s16 id)
GetPokemonLevelData(&levelData,id_s32,entityInfo->level);
entityInfo->exp = levelData.expRequired;
target->axObj.spriteFile = file;
sub_806BFC0(entityInfo,0);
ResetMonEntityData(entityInfo,0);
sub_8069E0C(target);
sub_806CCB4(target,7);
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FE2EC);

View File

@ -176,7 +176,7 @@ extern s32 GetMonsterApparentID(Entity *param_1, s16 param_2);
extern void sub_806A898(Entity *, u32, u32);
extern void HealTargetHP(Entity *pokemon, Entity *r1, s16, s16, u32);
extern void DealDamageToEntity(Entity *, s16, u32, u32);
extern void sub_806BFC0(EntityInfo *, u32);
extern void ResetMonEntityData(EntityInfo *, u32);
extern void sub_80420C8(Entity *r0);
extern void nullsub_68(Entity *);
extern void nullsub_67(Entity *);
@ -1133,7 +1133,7 @@ void sub_807A0CC(Entity * pokemon, Entity * target)
if (EntityExists(target)) {
entityInfo = GetEntInfo(target);
sub_806BFC0(entityInfo,0);
ResetMonEntityData(entityInfo,0);
entityInfo->perishSongTurns = 0;
entityInfo->exposed = FALSE;

View File

@ -381,7 +381,7 @@ extern void sub_8049884(void);
extern void sub_8049B8C(void);
extern void sub_8040A84(void);
extern void sub_8086A54(Entity *);
extern void sub_806BFC0(EntityInfo *, u32);
extern void ResetMonEntityData(EntityInfo *, u32);
extern void sub_808BBA8(Entity * );
extern void sub_8041888(u32);
extern u32 sub_80861F8(u32, Entity *, u32);
@ -4240,7 +4240,7 @@ void sub_808BB3C(DungeonPos *pos1)
void sub_808BBA8(Entity *jirachiEntity)
{
sub_806BFC0(GetEntInfo(jirachiEntity),0);
ResetMonEntityData(GetEntInfo(jirachiEntity),0);
}
void JirachiDropInEffect(Entity *jirachiEntity)

View File

@ -409,7 +409,7 @@ void GenerateFloor(void)
}
if (sKecleonShopMiddlePos.x >= 0 && sKecleonShopMiddlePos.y >= 0) {
sub_806C330(sKecleonShopMiddlePos.x, sKecleonShopMiddlePos.y, 380, 0);
sub_806C330(sKecleonShopMiddlePos.x, sKecleonShopMiddlePos.y, MONSTER_KECLEON, 0);
}
if (sKecleonShopPosition.minX >= 0) {