sub_8074FB0

This commit is contained in:
DizzyEggg 2024-09-13 15:56:40 +02:00
parent 49b0d2e77d
commit b50c8b2803
3 changed files with 233 additions and 637 deletions

View File

@ -5,634 +5,6 @@
.text
thumb_func_start TickStatusHeal
TickStatusHeal:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r7, r0, 0
cmp r7, 0
bne _08074B62
b _08074F96
_08074B62:
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08074B6E
b _08074F96
_08074B6E:
bl sub_8044B28
lsls r0, 24
cmp r0, 0
beq _08074B7A
b _08074F96
_08074B7A:
bl sub_805229C
ldr r6, [r7, 0x70]
movs r1, 0xA3
lsls r1, 1
adds r0, r6, r1
ldrb r0, [r0]
cmp r0, 0
bne _08074C48
adds r0, r6, 0
adds r0, 0xAC
ldrb r0, [r0]
cmp r0, 0x2
beq _08074C48
cmp r0, 0x3
beq _08074C48
movs r4, 0
ldrb r0, [r6, 0x6]
cmp r0, 0
bne _08074BAE
movs r2, 0x2
ldrsh r0, [r6, r2]
bl GetRegenSpeed
lsls r0, 24
lsrs r4, r0, 24
_08074BAE:
cmp r4, 0
beq _08074C48
adds r0, r7, 0
movs r1, 0xA
bl HasHeldItem
lsls r0, 24
cmp r0, 0
beq _08074BC8
ldr r0, _08074EF8
movs r3, 0
ldrsh r0, [r0, r3]
adds r4, r0
_08074BC8:
adds r0, r6, 0
adds r0, 0xC4
ldrb r0, [r0]
cmp r0, 0x6
bne _08074BDA
ldr r0, _08074EFC
movs r1, 0
ldrsh r0, [r0, r1]
adds r4, r0
_08074BDA:
adds r0, r7, 0
movs r1, 0x3
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _08074BFE
adds r0, r7, 0
bl GetApparentWeather
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
bne _08074BFE
ldr r0, _08074F00
movs r2, 0
ldrsh r0, [r0, r2]
adds r4, r0
_08074BFE:
movs r0, 0xFA
lsls r0, 1
cmp r4, r0
ble _08074C08
adds r4, r0, 0
_08074C08:
cmp r4, 0x1D
bgt _08074C0E
movs r4, 0x1E
_08074C0E:
movs r3, 0xFC
lsls r3, 1
adds r1, r6, r3
ldrh r0, [r6, 0x10]
ldrh r2, [r1]
adds r0, r2
strh r0, [r1]
movs r3, 0
ldrsh r0, [r1, r3]
cmp r0, r4
blt _08074C38
_08074C24:
ldrh r0, [r6, 0xE]
adds r0, 0x1
strh r0, [r6, 0xE]
ldrh r0, [r1]
subs r0, r4
strh r0, [r1]
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, r4
bge _08074C24
_08074C38:
movs r3, 0xE
ldrsh r1, [r6, r3]
ldrh r2, [r6, 0x10]
movs r3, 0x10
ldrsh r0, [r6, r3]
cmp r1, r0
blt _08074C48
strh r2, [r6, 0xE]
_08074C48:
adds r0, r6, 0
adds r0, 0xA8
ldrb r0, [r0]
cmp r0, 0
beq _08074C6E
adds r4, r6, 0
adds r4, 0xA9
adds r0, r4, 0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074C6E
adds r0, r7, 0
adds r1, r7, 0
movs r2, 0x1
movs r3, 0x1
bl SendSleepEndMessage
_08074C6E:
adds r0, r7, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08074C7C
b _08074F96
_08074C7C:
bl sub_8044B28
lsls r0, 24
cmp r0, 0
beq _08074C88
b _08074F96
_08074C88:
adds r0, r6, 0
adds r0, 0xAC
ldrb r0, [r0]
cmp r0, 0
beq _08074CAA
adds r4, r6, 0
adds r4, 0xAD
adds r0, r4, 0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074CAA
adds r0, r7, 0
adds r1, r7, 0
bl SendNonVolatileEndMessage
_08074CAA:
adds r0, r7, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08074CB8
b _08074F96
_08074CB8:
bl sub_8044B28
lsls r0, 24
cmp r0, 0
beq _08074CC4
b _08074F96
_08074CC4:
adds r0, r6, 0
adds r0, 0xB0
ldrb r0, [r0]
cmp r0, 0
beq _08074CE6
adds r4, r6, 0
adds r4, 0xB8
adds r0, r4, 0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074CE6
adds r0, r7, 0
adds r1, r7, 0
bl SendImmobilizeEndMessage
_08074CE6:
adds r0, r7, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08074CF4
b _08074F96
_08074CF4:
bl sub_8044B28
lsls r0, 24
cmp r0, 0
beq _08074D00
b _08074F96
_08074D00:
adds r0, r6, 0
adds r0, 0xBC
ldrb r0, [r0]
cmp r0, 0
beq _08074D22
adds r4, r6, 0
adds r4, 0xBD
adds r0, r4, 0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074D22
adds r0, r7, 0
adds r1, r7, 0
bl SendVolatileEndMessage
_08074D22:
adds r0, r7, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08074D30
b _08074F96
_08074D30:
bl sub_8044B28
lsls r0, 24
cmp r0, 0
beq _08074D3C
b _08074F96
_08074D3C:
adds r0, r6, 0
adds r0, 0xC4
ldrb r0, [r0]
cmp r0, 0
beq _08074D5E
adds r4, r6, 0
adds r4, 0xC5
adds r0, r4, 0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074D5E
adds r0, r7, 0
adds r1, r7, 0
bl SendProtectionEndMessage
_08074D5E:
adds r0, r7, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08074D6C
b _08074F96
_08074D6C:
bl sub_8044B28
lsls r0, 24
cmp r0, 0
beq _08074D78
b _08074F96
_08074D78:
adds r0, r6, 0
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0
beq _08074D9C
adds r4, r6, 0
adds r4, 0xCB
adds r0, r4, 0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074D9C
adds r0, r7, 0
adds r1, r7, 0
movs r2, 0
bl SendWaitingEndMessage
_08074D9C:
adds r0, r7, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08074DAA
b _08074F96
_08074DAA:
bl sub_8044B28
lsls r0, 24
cmp r0, 0
beq _08074DB6
b _08074F96
_08074DB6:
adds r0, r6, 0
adds r0, 0xD0
ldrb r0, [r0]
cmp r0, 0
beq _08074DD8
adds r4, r6, 0
adds r4, 0xD9
adds r0, r4, 0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074DD8
adds r0, r7, 0
adds r1, r7, 0
bl SendLinkedEndMessage
_08074DD8:
adds r0, r7, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08074DE6
b _08074F96
_08074DE6:
bl sub_8044B28
lsls r0, 24
cmp r0, 0
beq _08074DF2
b _08074F96
_08074DF2:
adds r0, r6, 0
adds r0, 0xDC
ldrb r0, [r0]
cmp r0, 0
beq _08074E14
adds r4, r6, 0
adds r4, 0xDD
adds r0, r4, 0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074E14
adds r0, r7, 0
adds r1, r7, 0
bl SendMoveEndMessage
_08074E14:
adds r0, r7, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08074E22
b _08074F96
_08074E22:
bl sub_8044B28
lsls r0, 24
cmp r0, 0
beq _08074E2E
b _08074F96
_08074E2E:
adds r0, r6, 0
adds r0, 0xE4
ldrb r0, [r0]
cmp r0, 0
beq _08074E50
adds r4, r6, 0
adds r4, 0xE5
adds r0, r4, 0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074E50
adds r0, r7, 0
adds r1, r7, 0
bl SendTransformEndMessage
_08074E50:
adds r0, r7, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08074E5E
b _08074F96
_08074E5E:
bl sub_8044B28
lsls r0, 24
cmp r0, 0
beq _08074E6A
b _08074F96
_08074E6A:
adds r0, r6, 0
adds r0, 0xE8
ldrb r0, [r0]
cmp r0, 0
beq _08074E8C
adds r4, r6, 0
adds r4, 0xE9
adds r0, r4, 0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074E8C
adds r0, r7, 0
adds r1, r7, 0
bl SendEyesightEndMessage
_08074E8C:
adds r0, r7, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08074E9A
b _08074F96
_08074E9A:
bl sub_8044B28
lsls r0, 24
cmp r0, 0
bne _08074F96
adds r0, r6, 0
adds r0, 0xEC
ldrb r0, [r0]
cmp r0, 0
beq _08074EC6
adds r4, r6, 0
adds r4, 0xED
adds r0, r4, 0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074EC6
adds r0, r7, 0
adds r1, r7, 0
bl SendMuzzledEndMessage
_08074EC6:
adds r0, r7, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08074F96
bl sub_8044B28
lsls r0, 24
cmp r0, 0
bne _08074F96
adds r4, r6, 0
adds r4, 0xFA
ldrb r0, [r4]
cmp r0, 0
beq _08074F18
adds r0, r4, 0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074F18
ldr r0, _08074F04
adds r1, r7, 0
b _08074F08
.align 2, 0
_08074EF8: .4byte gUnknown_80F4FC4
_08074EFC: .4byte gUnknown_80F4FC0
_08074F00: .4byte gUnknown_80F4FC2
_08074F04: .4byte gAvailablePokemonNames
_08074F08:
movs r2, 0
bl SetMessageArgument
ldr r0, _08074FA0
ldr r1, [r0]
adds r0, r7, 0
bl SendMessage
_08074F18:
movs r0, 0
mov r8, r0
movs r5, 0
_08074F1E:
ldr r1, _08074FA4
adds r0, r6, r1
adds r4, r0, r5
ldrb r0, [r4]
cmp r0, 0
beq _08074F3C
adds r0, r5, r1
adds r0, r6, r0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074F3C
movs r2, 0x1
mov r8, r2
_08074F3C:
movs r3, 0x84
lsls r3, 1
adds r0, r6, r3
adds r4, r0, r5
ldrb r0, [r4]
cmp r0, 0
beq _08074F5C
adds r0, r5, r3
adds r0, r6, r0
bl sub_80838EC
ldrb r0, [r4]
cmp r0, 0
bne _08074F5C
movs r0, 0x1
mov r8, r0
_08074F5C:
adds r5, 0x1
cmp r5, 0x4
ble _08074F1E
mov r1, r8
cmp r1, 0
beq _08074F96
ldr r0, [r7, 0x70]
movs r2, 0x82
lsls r2, 1
adds r0, r2
ldr r4, [r0]
adds r0, r7, 0
bl CalcSpeedStage
adds r5, r0, 0
cmp r4, r5
beq _08074F96
ldr r0, _08074FA8
adds r1, r7, 0
movs r2, 0
bl SetMessageArgument
ldr r1, _08074FAC
lsls r0, r5, 2
adds r0, r1
ldr r1, [r0]
adds r0, r7, 0
bl SendMessage
_08074F96:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08074FA0: .4byte gPtrStenchWavedOffMessage
_08074FA4: .4byte 0x0000010d
_08074FA8: .4byte gAvailablePokemonNames
_08074FAC: .4byte gUnknown_80FA124
thumb_func_end TickStatusHeal
thumb_func_start sub_8074FB0
sub_8074FB0:
push {r4-r6,lr}
adds r3, r0, 0
adds r5, r1, 0
ldr r4, [r3, 0x70]
movs r1, 0xFA
lsls r1, 1
adds r0, r4, r1
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0x3
ble _08074FD0
adds r1, r4, 0
adds r1, 0x44
movs r0, 0
strh r0, [r1]
b _08075040
_08074FD0:
ldr r0, _08074FE0
ldr r0, [r0]
ldrb r0, [r0]
cmp r0, 0
beq _08074FE8
ldr r1, _08074FE4
movs r0, 0x2
b _08074FEC
.align 2, 0
_08074FE0: .4byte gGameOptionsRef
_08074FE4: .4byte gUnknown_202F378
_08074FE8:
ldr r1, _08075048
movs r0, 0x1
_08074FEC:
str r0, [r1]
adds r6, r1, 0
movs r1, 0xFA
lsls r1, 1
adds r0, r4, r1
movs r1, 0
ldrsh r0, [r0, r1]
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
movs r0, 0xC2
lsls r0, 1
adds r1, r0
adds r1, r4, r1
movs r0, 0
strb r0, [r1, 0x1A]
str r5, [r1, 0xC]
ldrh r0, [r3, 0x4]
strh r0, [r1]
ldrh r0, [r3, 0x6]
strh r0, [r1, 0x2]
movs r3, 0
ldrsh r0, [r2, r3]
str r0, [r1, 0x4]
movs r3, 0x2
ldrsh r0, [r2, r3]
str r0, [r1, 0x8]
ldr r0, _0807504C
lsls r2, r5, 2
adds r2, r0
movs r5, 0
ldrsh r0, [r2, r5]
ldr r3, [r6]
muls r0, r3
str r0, [r1, 0x10]
movs r5, 0x2
ldrsh r0, [r2, r5]
muls r0, r3
str r0, [r1, 0x14]
adds r0, r4, 0
bl sub_8075050
_08075040:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08075048: .4byte gUnknown_202F378
_0807504C: .4byte gUnknown_80F4D44
thumb_func_end sub_8074FB0
thumb_func_start sub_8075050
sub_8075050:

View File

@ -157,6 +157,17 @@ typedef struct Muzzled
/* 0xED */ u8 muzzledTurns;
} Muzzled;
typedef struct Unk_Entity_x184
{
/* 0x184 - 0x0 */ Position previousTargetMovePosition1;
/* 0x188 - 0x4 */ Position32 previousTargetMovePosition2;
/* 0x190 - 0xC */ s32 lastMoveDirection; // The last direction that the Pokémon moved in.
// Number of tiles that the Pokémon moved last, multiplied by 0x100.
/* 0x194 - 0x10*/ Position32 lastMoveIncrement;
/* 0x19C - 0x18 */ u8 walkAnimFramesLeft; // Set when the Pokémon starts moving, and counts down until the Pokémon's walk animation stops.
/* 0x19D - 0x19 */ u8 fill19d;
/* 0x19e - 0x1a */ u8 unk1A;
} Unk_Entity_x184 ;
// size: 0x208
typedef struct EntityInfo
@ -306,15 +317,8 @@ typedef struct EntityInfo
u16 unk178;
/* 0x17A */ u16 mimicMoveIDs[MAX_MON_MOVES]; // All moves that Mimic has copied (not sure on size...)
// Previous value of targetPosition for movement, 1 and 2 moves ago.
/* 0x184 */ Position previousTargetMovePosition1;
/* 0x188 */ Position32 previousTargetMovePosition2;
/* 0x190 */ u8 lastMoveDirection; // The last direction that the Pokémon moved in.
// Number of tiles that the Pokémon moved last, multiplied by 0x100.
/* 0x194 */ Position32 lastMoveIncrement;
/* 0x19C */ u8 walkAnimFramesLeft; // Set when the Pokémon starts moving, and counts down until the Pokémon's walk animation stops.
u8 fill19D[0x1F4 - 0x19D];
/* 0x1F4 */ u8 numMoveTiles; // Number of tiles to move in a turn. Can be greater than 1 if the user's movement speed is boosted.
u8 fill1F5;
/* 0x184 */ Unk_Entity_x184 unk184[4];
/* 0x1F4 */ s16 numMoveTiles; // Number of tiles to move in a turn. Can be greater than 1 if the user's movement speed is boosted.
/* 0x1F6 */ bool8 notMoving;
/* 0x1F8 */ s16 unk1F8;
/* 0x1FA */ s16 mobileTurnTimer; // When a Pokémon can pass through walls in a hallway, this counts up to 200 before the Pokémon turns in a random direction.

View File

@ -10,6 +10,8 @@
#include "structs/map.h"
#include "structs/str_moves.h"
#include "dungeon_music.h"
#include "dungeon_movement.h"
#include "game_options.h"
#include "dungeon_items.h"
#include "moves.h"
#include "dungeon_random.h"
@ -80,6 +82,8 @@ extern const u8 *gUnknown_80FD628;
extern const u8 *gUnknown_80FEB30;
extern const u8 *gUnknown_80FABD8;
extern const u8 *gPtrProtectSavedItMessage;
extern const u8 *gPtrStenchWavedOffMessage;
extern const u8 *gUnknown_80FA124[];
void sub_8073D14(Entity *entity)
{
@ -240,6 +244,8 @@ extern const s16 gUnknown_80F4F70;
extern const s16 gUnknown_80F4F72;
extern const s16 gUnknown_80F4F30;
extern const s16 gUnknown_80F4F38;
extern const s16 gUnknown_80F4FC4;
extern const s16 gUnknown_80F4FC0;
extern const s16 gUnknown_80F4F3A;
extern const s16 gUnknown_80F4F3C;
extern const s16 gUnknown_80F4FB2;
@ -247,6 +253,7 @@ extern const s16 gUnknown_80F4F3E;
extern const s16 gUnknown_80F4FB4;
extern const s16 gUnknown_80F4F40;
extern const s16 gUnknown_80F4F74;
extern const s16 gUnknown_80F4FC2;
extern const s16 gUnknown_80F4F76;
extern const s16 gUnknown_80F4F36;
extern const u8 gUnknown_80F54F4[][8];
@ -595,5 +602,218 @@ void sub_8074094(Entity *entity)
return;
}
void TickStatusHeal(Entity *entity)
{
s32 i;
bool32 spdChange;
EntityInfo *entityInfo;
if (entity == NULL)
return;
if (!EntityExists(entity) || sub_8044B28())
return;
sub_805229C();
entityInfo = entity->info;
// HP heal
if (entityInfo->unk146 == 0 && entityInfo->nonVolatile.nonVolatileStatus != STATUS_POISONED && entityInfo->nonVolatile.nonVolatileStatus != STATUS_BADLY_POISONED) {
s32 r4 = 0;
if (!entityInfo->isNotTeamMember)
r4 = GetRegenSpeed(entityInfo->id);
if (r4 != 0) {
if (HasHeldItem(entity, ITEM_HEAL_RIBBON))
r4 += gUnknown_80F4FC4;
if (entityInfo->protection.protectionStatus == STATUS_WISH)
r4 += gUnknown_80F4FC0;
if (HasAbility(entity, ABILITY_RAIN_DISH) && GetApparentWeather(entity) == WEATHER_RAIN)
r4 += gUnknown_80F4FC2;
if (r4 > 500)
r4 = 500;
if (r4 < 30)
r4 = 30;
entityInfo->unk1F8 += entityInfo->maxHPStat;
while (entityInfo->unk1F8 >= r4) {
entityInfo->HP++;
entityInfo->unk1F8 -= r4;
}
if (entityInfo->HP >= entityInfo->maxHPStat)
entityInfo->HP = entityInfo->maxHPStat;
}
}
if (entityInfo->sleep.sleep != 0) {
sub_80838EC(&entityInfo->sleep.sleepTurns);
if (entityInfo->sleep.sleepTurns == 0) {
SendSleepEndMessage(entity, entity, TRUE, TRUE);
}
}
if (!EntityExists(entity) || sub_8044B28())
return;
if (entityInfo->nonVolatile.nonVolatileStatus != 0) {
sub_80838EC(&entityInfo->nonVolatile.nonVolatileStatusTurns);
if (entityInfo->nonVolatile.nonVolatileStatusTurns == 0) {
SendNonVolatileEndMessage(entity, entity);
}
}
if (!EntityExists(entity) || sub_8044B28())
return;
if (entityInfo->immobilize.immobilizeStatus != 0) {
sub_80838EC(&entityInfo->immobilize.immobilizeStatusTurns);
if (entityInfo->immobilize.immobilizeStatusTurns == 0) {
SendImmobilizeEndMessage(entity, entity);
}
}
if (!EntityExists(entity) || sub_8044B28())
return;
if (entityInfo->volatileStatus.volatileStatus != 0) {
sub_80838EC(&entityInfo->volatileStatus.volatileStatusTurns);
if (entityInfo->volatileStatus.volatileStatusTurns == 0) {
SendVolatileEndMessage(entity, entity);
}
}
if (!EntityExists(entity) || sub_8044B28())
return;
if (entityInfo->protection.protectionStatus != 0) {
sub_80838EC(&entityInfo->protection.protectionStatusTurns);
if (entityInfo->protection.protectionStatusTurns == 0) {
SendProtectionEndMessage(entity, entity);
}
}
if (!EntityExists(entity) || sub_8044B28())
return;
if (entityInfo->waitingStruct.waitingStatus != 0) {
sub_80838EC(&entityInfo->waitingStruct.waitingStatusTurns);
if (entityInfo->waitingStruct.waitingStatusTurns == 0) {
SendWaitingEndMessage(entity, entity, 0);
}
}
if (!EntityExists(entity) || sub_8044B28())
return;
if (entityInfo->linked.linkedStatus != 0) {
sub_80838EC(&entityInfo->linked.linkedStatusTurns);
if (entityInfo->linked.linkedStatusTurns == 0) {
SendLinkedEndMessage(entity, entity);
}
}
if (!EntityExists(entity) || sub_8044B28())
return;
if (entityInfo->moveStatus.moveStatus != 0) {
sub_80838EC(&entityInfo->moveStatus.moveStatusTurns);
if (entityInfo->moveStatus.moveStatusTurns == 0) {
SendMoveEndMessage(entity, entity);
}
}
if (!EntityExists(entity) || sub_8044B28())
return;
if (entityInfo->transformStatus.transformStatus != 0) {
sub_80838EC(&entityInfo->transformStatus.transformStatusTurns);
if (entityInfo->transformStatus.transformStatusTurns == 0) {
SendTransformEndMessage(entity, entity);
}
}
if (!EntityExists(entity) || sub_8044B28())
return;
if (entityInfo->eyesightStatus.eyesightStatus != 0) {
sub_80838EC(&entityInfo->eyesightStatus.eyesightStatusTurns);
if (entityInfo->eyesightStatus.eyesightStatusTurns == 0) {
SendEyesightEndMessage(entity, entity);
}
}
if (!EntityExists(entity) || sub_8044B28())
return;
if (entityInfo->muzzled.muzzled != 0) {
sub_80838EC(&entityInfo->muzzled.muzzledTurns);
if (entityInfo->muzzled.muzzledTurns == 0) {
SendMuzzledEndMessage(entity, entity);
}
}
if (!EntityExists(entity) || sub_8044B28())
return;
if (entityInfo->terrifiedTurns != 0) {
sub_80838EC(&entityInfo->terrifiedTurns);
if (entityInfo->terrifiedTurns == 0) {
SetMessageArgument(gAvailablePokemonNames, entity, 0);
SendMessage(entity, gPtrStenchWavedOffMessage);
}
}
spdChange = FALSE;
for (i = 0; i < NUM_SPEED_COUNTERS; i++) {
if (entityInfo->speedDownCounters[i] != 0) {
sub_80838EC(&entityInfo->speedDownCounters[i]);
if (entityInfo->speedDownCounters[i] == 0)
spdChange = TRUE;
}
if (entityInfo->speedUpCounters[i] != 0) {
sub_80838EC(&entityInfo->speedUpCounters[i]);
if (entityInfo->speedUpCounters[i] == 0)
spdChange = TRUE;
}
}
if (spdChange) {
s32 oldSpdStage = entity->info->speedStage;
s32 newSpdStage = CalcSpeedStage(entity);
if (oldSpdStage != newSpdStage) {
SetMessageArgument(gAvailablePokemonNames, entity, 0);
SendMessage(entity, gUnknown_80FA124[newSpdStage]);
}
}
}
extern s32 gUnknown_202F378;
extern const Position gUnknown_80F4D44[];
void sub_8075050(EntityInfo *info);
void sub_8074FB0(Entity *entity, s32 a1, Position *pos)
{
#ifdef NONMATCHING
Unk_Entity_x184 *strPtr;
#else
register Unk_Entity_x184 *strPtr asm("r1");
#endif // NONMATCHING
EntityInfo *entityInfo = entity->info;
if (entityInfo->numMoveTiles > 3) {
entityInfo->action.action = 0;
return;
}
if (gGameOptionsRef->dungeonSpeed != 0)
gUnknown_202F378 = 2;
else
gUnknown_202F378 = 1;
strPtr = &entityInfo->unk184[entityInfo->numMoveTiles];
strPtr->unk1A = 0;
strPtr->lastMoveDirection = a1;
strPtr->previousTargetMovePosition1.x = entity->pos.x;
strPtr->previousTargetMovePosition1.y = entity->pos.y;
strPtr->previousTargetMovePosition2.x = pos->x;
strPtr->previousTargetMovePosition2.y = pos->y;
strPtr->lastMoveIncrement.x = gUnknown_80F4D44[a1].x * gUnknown_202F378;
strPtr->lastMoveIncrement.y = gUnknown_80F4D44[a1].y * gUnknown_202F378;
sub_8075050(entityInfo);
}
//