mirror of
https://github.com/pret/pmd-red.git
synced 2026-07-01 00:41:13 -05:00
more decomp
This commit is contained in:
parent
c5014c3ca4
commit
a601fd3a08
|
|
@ -2482,457 +2482,4 @@ _0807E198: .4byte 0x0000fffc
|
|||
_0807E19C: .4byte gUnknown_203B444
|
||||
thumb_func_end sub_807DF38
|
||||
|
||||
thumb_func_start sub_807E1A0
|
||||
sub_807E1A0:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
sub sp, 0x24
|
||||
mov r9, r0
|
||||
adds r6, r1, 0
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
mov r8, r2
|
||||
lsls r3, 16
|
||||
asrs r7, r3, 16
|
||||
adds r0, r6, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807E244
|
||||
ldr r5, [r6, 0x70]
|
||||
add r4, sp, 0x1C
|
||||
ldr r1, _0807E20C
|
||||
adds r0, r4, 0
|
||||
bl InitPokemonMove
|
||||
adds r0, r6, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80571F0
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0807E244
|
||||
ldrb r0, [r5, 0x6]
|
||||
cmp r0, 0
|
||||
bne _0807E210
|
||||
movs r0, 0xE
|
||||
ldrsh r4, [r5, r0]
|
||||
lsrs r0, r4, 31
|
||||
adds r5, r4, r0
|
||||
asrs r4, r5, 1
|
||||
adds r0, r6, 0
|
||||
movs r1, 0x2
|
||||
bl MonsterIsType
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807E202
|
||||
lsrs r0, r5, 31
|
||||
adds r0, r4, r0
|
||||
asrs r4, r0, 1
|
||||
_0807E202:
|
||||
cmp r4, 0
|
||||
bgt _0807E226
|
||||
movs r4, 0x1
|
||||
b _0807E226
|
||||
.align 2, 0
|
||||
_0807E20C: .4byte 0x00000163
|
||||
_0807E210:
|
||||
ldr r4, [sp, 0x40]
|
||||
adds r0, r6, 0
|
||||
movs r1, 0x2
|
||||
bl MonsterIsType
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807E226
|
||||
lsrs r0, r4, 31
|
||||
adds r0, r4, r0
|
||||
asrs r4, r0, 1
|
||||
_0807E226:
|
||||
add r0, sp, 0x18
|
||||
str r0, [sp]
|
||||
mov r0, r8
|
||||
str r0, [sp, 0x4]
|
||||
str r7, [sp, 0x8]
|
||||
movs r0, 0
|
||||
str r0, [sp, 0xC]
|
||||
str r0, [sp, 0x10]
|
||||
str r0, [sp, 0x14]
|
||||
mov r0, r9
|
||||
adds r1, r6, 0
|
||||
adds r2, r4, 0
|
||||
movs r3, 0
|
||||
bl sub_806F370
|
||||
_0807E244:
|
||||
add sp, 0x24
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_807E1A0
|
||||
|
||||
thumb_func_start sub_807E254
|
||||
sub_807E254:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x8
|
||||
adds r6, r0, 0
|
||||
adds r7, r1, 0
|
||||
movs r1, 0xE
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807E274
|
||||
ldr r0, _0807E270
|
||||
adds r1, r6, 0
|
||||
b _0807E286
|
||||
.align 2, 0
|
||||
_0807E270: .4byte gAvailablePokemonNames
|
||||
_0807E274:
|
||||
adds r0, r7, 0
|
||||
movs r1, 0xE
|
||||
bl HasAbility
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807E2A4
|
||||
ldr r0, _0807E29C
|
||||
adds r1, r7, 0
|
||||
_0807E286:
|
||||
movs r2, 0
|
||||
bl SetMessageArgument
|
||||
ldr r0, _0807E2A0
|
||||
ldr r2, [r0]
|
||||
adds r0, r6, 0
|
||||
adds r1, r7, 0
|
||||
bl sub_80522F4
|
||||
b _0807E366
|
||||
.align 2, 0
|
||||
_0807E29C: .4byte gAvailablePokemonNames
|
||||
_0807E2A0: .4byte gUnknown_80FCAC0
|
||||
_0807E2A4:
|
||||
ldrh r1, [r6, 0x6]
|
||||
lsls r1, 16
|
||||
ldrh r0, [r6, 0x4]
|
||||
orrs r0, r1
|
||||
str r0, [sp]
|
||||
ldrh r1, [r7, 0x6]
|
||||
lsls r1, 16
|
||||
ldrh r0, [r7, 0x4]
|
||||
orrs r0, r1
|
||||
str r0, [sp, 0x4]
|
||||
mov r5, sp
|
||||
mov r0, sp
|
||||
bl nullsub_93
|
||||
add r4, sp, 0x4
|
||||
adds r0, r4, 0
|
||||
bl nullsub_93
|
||||
movs r0, 0
|
||||
ldrsh r1, [r4, r0]
|
||||
movs r0, 0x2
|
||||
ldrsh r2, [r4, r0]
|
||||
adds r0, r6, 0
|
||||
movs r3, 0x1
|
||||
bl sub_80694C0
|
||||
mov r0, sp
|
||||
movs r2, 0
|
||||
ldrsh r1, [r0, r2]
|
||||
movs r0, 0x2
|
||||
ldrsh r2, [r5, r0]
|
||||
adds r0, r7, 0
|
||||
movs r3, 0x1
|
||||
bl sub_80694C0
|
||||
adds r0, r6, 0
|
||||
movs r1, 0
|
||||
bl sub_804535C
|
||||
adds r0, r7, 0
|
||||
movs r1, 0
|
||||
bl sub_804535C
|
||||
adds r0, r6, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807E330
|
||||
ldr r0, [r6, 0x70]
|
||||
ldrb r0, [r0, 0x7]
|
||||
cmp r0, 0
|
||||
beq _0807E31A
|
||||
adds r0, r6, 0x4
|
||||
bl sub_804AC20
|
||||
movs r0, 0
|
||||
bl sub_807EC28
|
||||
_0807E31A:
|
||||
adds r0, r6, 0
|
||||
bl sub_806A5B8
|
||||
ldr r0, _0807E370
|
||||
ldr r0, [r0]
|
||||
ldr r1, _0807E374
|
||||
adds r0, r1
|
||||
ldrb r1, [r0]
|
||||
adds r0, r6, 0
|
||||
bl sub_8075900
|
||||
_0807E330:
|
||||
adds r0, r7, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807E366
|
||||
ldr r0, [r7, 0x70]
|
||||
ldrb r0, [r0, 0x7]
|
||||
cmp r0, 0
|
||||
beq _0807E350
|
||||
adds r0, r7, 0x4
|
||||
bl sub_804AC20
|
||||
movs r0, 0
|
||||
bl sub_807EC28
|
||||
_0807E350:
|
||||
adds r0, r7, 0
|
||||
bl sub_806A5B8
|
||||
ldr r0, _0807E370
|
||||
ldr r0, [r0]
|
||||
ldr r2, _0807E374
|
||||
adds r0, r2
|
||||
ldrb r1, [r0]
|
||||
adds r0, r7, 0
|
||||
bl sub_8075900
|
||||
_0807E366:
|
||||
add sp, 0x8
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0807E370: .4byte gDungeon
|
||||
_0807E374: .4byte 0x00003a08
|
||||
thumb_func_end sub_807E254
|
||||
|
||||
thumb_func_start sub_807E378
|
||||
sub_807E378:
|
||||
push {r4-r7,lr}
|
||||
bl GetLeader
|
||||
adds r4, r0, 0
|
||||
bl EntityExists
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0807E38C
|
||||
b _0807E564
|
||||
_0807E38C:
|
||||
ldr r0, _0807E41C
|
||||
ldr r1, [r0]
|
||||
ldr r3, _0807E420
|
||||
adds r2, r1, r3
|
||||
ldrh r3, [r2]
|
||||
movs r5, 0
|
||||
ldrsh r1, [r2, r5]
|
||||
adds r6, r0, 0
|
||||
cmp r1, 0
|
||||
ble _0807E3AA
|
||||
subs r0, r3, 0x1
|
||||
strh r0, [r2]
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
bgt _0807E3B4
|
||||
_0807E3AA:
|
||||
ldr r0, [r6]
|
||||
ldr r1, _0807E424
|
||||
adds r0, r1
|
||||
movs r1, 0x3
|
||||
strb r1, [r0]
|
||||
_0807E3B4:
|
||||
adds r5, r6, 0
|
||||
ldr r1, [r5]
|
||||
ldr r7, _0807E424
|
||||
adds r0, r1, r7
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _0807E434
|
||||
ldr r2, _0807E420
|
||||
adds r0, r1, r2
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
cmp r0, 0xF9
|
||||
ble _0807E3D0
|
||||
b _0807E564
|
||||
_0807E3D0:
|
||||
bl sub_805E804
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl sub_806A2BC
|
||||
adds r0, r4, 0
|
||||
bl UseAttack
|
||||
bl sub_8044B28
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807E3EE
|
||||
b _0807E564
|
||||
_0807E3EE:
|
||||
ldr r0, _0807E428
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, 0
|
||||
bl SendMessage
|
||||
ldr r1, _0807E42C
|
||||
ldr r0, [r5]
|
||||
ldr r2, _0807E430
|
||||
adds r0, r2
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
movs r1, 0
|
||||
bl sub_80426C8
|
||||
ldr r0, [r5]
|
||||
adds r0, r7
|
||||
movs r1, 0x1
|
||||
strb r1, [r0]
|
||||
b _0807E564
|
||||
.align 2, 0
|
||||
_0807E41C: .4byte gDungeon
|
||||
_0807E420: .4byte 0x00000666
|
||||
_0807E424: .4byte 0x0000067a
|
||||
_0807E428: .4byte gUnknown_80F9C4C
|
||||
_0807E42C: .4byte gUnknown_80F5FAC
|
||||
_0807E430: .4byte 0x00003a0e
|
||||
_0807E434:
|
||||
cmp r0, 0x1
|
||||
bne _0807E4A0
|
||||
ldr r2, _0807E490
|
||||
adds r0, r1, r2
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
cmp r0, 0x95
|
||||
ble _0807E446
|
||||
b _0807E564
|
||||
_0807E446:
|
||||
bl sub_805E804
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl sub_806A2BC
|
||||
adds r0, r4, 0
|
||||
bl UseAttack
|
||||
bl sub_8044B28
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807E464
|
||||
b _0807E564
|
||||
_0807E464:
|
||||
ldr r0, _0807E494
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, 0
|
||||
bl SendMessage
|
||||
ldr r1, _0807E498
|
||||
ldr r0, [r5]
|
||||
ldr r2, _0807E49C
|
||||
adds r0, r2
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x1
|
||||
bl sub_80426C8
|
||||
ldr r0, [r5]
|
||||
adds r0, r7
|
||||
movs r1, 0x2
|
||||
strb r1, [r0]
|
||||
b _0807E564
|
||||
.align 2, 0
|
||||
_0807E490: .4byte 0x00000666
|
||||
_0807E494: .4byte gUnknown_80F9C70
|
||||
_0807E498: .4byte gUnknown_80F5FAC
|
||||
_0807E49C: .4byte 0x00003a0e
|
||||
_0807E4A0:
|
||||
cmp r0, 0x2
|
||||
bne _0807E508
|
||||
ldr r2, _0807E4F8
|
||||
adds r0, r1, r2
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
cmp r0, 0x31
|
||||
bgt _0807E564
|
||||
bl sub_805E804
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl sub_806A2BC
|
||||
adds r0, r4, 0
|
||||
bl UseAttack
|
||||
bl sub_8044B28
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0807E564
|
||||
ldr r0, _0807E4FC
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, 0
|
||||
bl SendMessage
|
||||
ldr r1, _0807E500
|
||||
ldr r0, [r5]
|
||||
ldr r2, _0807E504
|
||||
adds r0, r2
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x2
|
||||
bl sub_80426C8
|
||||
ldr r0, [r5]
|
||||
adds r0, r7
|
||||
movs r1, 0x3
|
||||
strb r1, [r0]
|
||||
b _0807E564
|
||||
.align 2, 0
|
||||
_0807E4F8: .4byte 0x00000666
|
||||
_0807E4FC: .4byte gUnknown_80F9C8C
|
||||
_0807E500: .4byte gUnknown_80F5FAC
|
||||
_0807E504: .4byte 0x00003a0e
|
||||
_0807E508:
|
||||
ldr r5, _0807E56C
|
||||
adds r0, r1, r5
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r0, 0
|
||||
bgt _0807E564
|
||||
bl sub_805E804
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl sub_806A2BC
|
||||
adds r0, r4, 0
|
||||
bl UseAttack
|
||||
bl sub_8044B28
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _0807E564
|
||||
ldr r0, _0807E570
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, 0
|
||||
bl SendMessage
|
||||
ldr r1, _0807E574
|
||||
ldr r0, [r6]
|
||||
ldr r2, _0807E578
|
||||
adds r0, r2
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x3
|
||||
bl sub_80426C8
|
||||
ldr r0, [r6]
|
||||
adds r0, r7
|
||||
movs r1, 0x4
|
||||
strb r1, [r0]
|
||||
ldr r1, _0807E57C
|
||||
adds r0, r4, 0
|
||||
adds r2, r4, 0
|
||||
bl sub_8068FE0
|
||||
_0807E564:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0807E56C: .4byte 0x00000666
|
||||
_0807E570: .4byte gUnknown_80F9CBC
|
||||
_0807E574: .4byte gUnknown_80F5FAC
|
||||
_0807E578: .4byte 0x00003a0e
|
||||
_0807E57C: .4byte 0x0000021e
|
||||
thumb_func_end sub_807E378
|
||||
|
||||
.align 2, 0
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ struct Dungeon
|
|||
u8 fill65D[0x660 - 0x65D];
|
||||
/* 0x660 */ s16 fractionalTurn; // Handles turn order when Pokémon have different movement speeds.
|
||||
u8 fill662[0x666 - 0x662];
|
||||
/* 0x666 */ u16 windTurns; // Turns remaining before getting swept out of the dungeon.
|
||||
/* 0x666 */ s16 windTurns; // Turns remaining before getting swept out of the dungeon.
|
||||
/* 0x668 */ u16 unk668;
|
||||
u16 bossSongIndex;
|
||||
u8 unk66C;
|
||||
|
|
@ -110,7 +110,9 @@ struct Dungeon
|
|||
/* 0x676 */ bool8 itemHoldersIdentified;
|
||||
u8 unk677;
|
||||
u8 unk678;
|
||||
u8 unk679[0x68A - 0x679];
|
||||
u8 unk679;
|
||||
u8 unk67A;
|
||||
u8 unk67B[0x68A - 0x67B];
|
||||
/* 0x68A */ u8 unk68A;
|
||||
u8 fill68B[0x699 - 0x68B];
|
||||
u8 unk699;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,10 @@
|
|||
|
||||
#include "dungeon_entity.h"
|
||||
|
||||
u32 sub_8057144(struct Entity * pokemon);
|
||||
bool8 sub_80571F0(struct Entity * pokemon, struct Move *move);
|
||||
bool8 sub_805727C(struct Entity * pokemon, struct Entity * target, s32 chance);
|
||||
bool8 sub_8057308(struct Entity *pokemon, s32 chance);
|
||||
bool8 CanAIUseMove(struct Entity *pokemon, s32 moveIndex, bool8 hasPPChecker);
|
||||
bool8 CanMonsterUseMove(struct Entity *pokemon, struct Move *move, bool8 hasPPChecker);
|
||||
|
||||
|
|
|
|||
|
|
@ -27,23 +27,23 @@ typedef void (*DungeonCallback)(struct Entity *);
|
|||
|
||||
void sub_80855E4(DungeonCallback func)
|
||||
{
|
||||
bool8 bVar1;
|
||||
bool8 flag;
|
||||
struct Entity * entity;
|
||||
struct Entity * partnerEntity;
|
||||
s32 index;
|
||||
|
||||
bVar1 = FALSE;
|
||||
flag = FALSE;
|
||||
for(index = 0; index < MAX_TEAM_MEMBERS; index++)
|
||||
{
|
||||
entity = gDungeon->teamPokemon[index];
|
||||
if (EntityExists(entity)) {
|
||||
if (entity->info->joinedAt == 0x41) {
|
||||
bVar1 = TRUE;
|
||||
flag = TRUE;
|
||||
}
|
||||
func(entity);
|
||||
}
|
||||
}
|
||||
if ((!bVar1) && (partnerEntity = GetPartnerEntity(), partnerEntity != NULL)) {
|
||||
if ((!flag) && (partnerEntity = GetPartnerEntity(), partnerEntity != NULL)) {
|
||||
func(partnerEntity);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
181
src/weather.c
181
src/weather.c
|
|
@ -1,15 +1,196 @@
|
|||
#include "global.h"
|
||||
#include "weather.h"
|
||||
|
||||
#include "constants/ability.h"
|
||||
#include "constants/item.h"
|
||||
#include "constants/move_id.h"
|
||||
#include "constants/type.h"
|
||||
#include "constants/weather.h"
|
||||
#include "dungeon_global_data.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "dungeon_leader.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "code_80521D0.h"
|
||||
#include "dungeon_ai.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "moves.h"
|
||||
#include "move_util.h"
|
||||
|
||||
extern void TriggerWeatherAbilities(void);
|
||||
extern void sub_807EAA0(u32, u32);
|
||||
void sub_807E5E4(u8);
|
||||
extern u8 UseAttack(struct Entity *);
|
||||
extern void sub_805E804(void);
|
||||
void sub_806A2BC(struct Entity *pokemon, u8 param_2);
|
||||
extern u8 sub_8044B28(void);
|
||||
extern void sub_80426C8(u32, u32);
|
||||
extern void sub_8068FE0(struct Entity *, u32, struct Entity *r2);
|
||||
extern void nullsub_93(struct Position *);
|
||||
extern void sub_80522F4(struct Entity *, struct Entity *, u8 *);
|
||||
extern void SetMessageArgument(char[], struct Entity*, u32);
|
||||
extern void sub_806F370(struct Entity *r0, struct Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32);
|
||||
extern void sub_80694C0(struct Entity *, s32, s32, u32);
|
||||
extern void sub_804535C(struct Entity *, u32);
|
||||
extern void sub_804AC20(struct Position *);
|
||||
extern void sub_807EC28(u32);
|
||||
extern void sub_806A5B8(struct Entity *);
|
||||
|
||||
extern u32 gUnknown_80F5FAC[];
|
||||
extern u8 *gUnknown_80F9C4C[];
|
||||
extern u8 *gUnknown_80F9C70[];
|
||||
extern u8 *gUnknown_80F9C8C[];
|
||||
extern u8 *gUnknown_80F9CBC[];
|
||||
extern u8 gAvailablePokemonNames[];
|
||||
extern u8 *gUnknown_80FCAC0[];
|
||||
|
||||
|
||||
void sub_807E1A0(struct Entity *pokemon,struct Entity *target,u8 param_3,s16 param_4,s32 param_5)
|
||||
{
|
||||
struct EntityInfo *targetInfo;
|
||||
u8 flag;
|
||||
struct Move move;
|
||||
s32 newHP;
|
||||
s32 param_4_s32;
|
||||
|
||||
param_4_s32 = param_4;
|
||||
|
||||
if (EntityExists(target)) {
|
||||
targetInfo = target->info;
|
||||
InitPokemonMove(&move, MOVE_REGULAR_ATTACK);
|
||||
if (!sub_80571F0(target,&move)) {
|
||||
if (!targetInfo->isNotTeamMember) {
|
||||
newHP = targetInfo->HP;
|
||||
newHP /= 2;
|
||||
if (MonsterIsType(target, TYPE_FIRE)) {
|
||||
newHP /= 2;
|
||||
}
|
||||
if (newHP < 1) {
|
||||
newHP = 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
newHP = param_5;
|
||||
if (MonsterIsType(target, TYPE_FIRE)) {
|
||||
newHP /= 2;
|
||||
}
|
||||
}
|
||||
sub_806F370(pokemon,target,newHP,0,&flag,param_3,param_4_s32,0,0,0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_807E254(struct Entity *pokemon,struct Entity *target)
|
||||
{
|
||||
struct Position pokemonPos;
|
||||
struct Position targetPos;
|
||||
|
||||
|
||||
if (HasAbility(pokemon, ABILITY_SUCTION_CUPS)) {
|
||||
SetMessageArgument(gAvailablePokemonNames,pokemon,0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCAC0); // $m0 is anchored! It won't switch places
|
||||
}
|
||||
else if(HasAbility(target, ABILITY_SUCTION_CUPS))
|
||||
{
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FCAC0); // $m0 is anchored! It won't switch places
|
||||
}
|
||||
else
|
||||
{
|
||||
pokemonPos.x = pokemon->pos.x;
|
||||
pokemonPos.y = pokemon->pos.y;
|
||||
targetPos.x = target->pos.x;
|
||||
targetPos.y = target->pos.y;
|
||||
nullsub_93(&pokemonPos);
|
||||
nullsub_93(&targetPos);
|
||||
sub_80694C0(pokemon,targetPos.x,targetPos.y,1);
|
||||
sub_80694C0(target,pokemonPos.x,pokemonPos.y,1);
|
||||
sub_804535C(pokemon,0x0);
|
||||
sub_804535C(target,0x0);
|
||||
|
||||
if (EntityExists(pokemon)) {
|
||||
if (pokemon->info->isTeamLeader) {
|
||||
sub_804AC20(&pokemon->pos);
|
||||
sub_807EC28(0);
|
||||
}
|
||||
sub_806A5B8(pokemon);
|
||||
sub_8075900(pokemon,gDungeon->unk3A08);
|
||||
}
|
||||
|
||||
if (EntityExists(target)) {
|
||||
if (target->info->isTeamLeader) {
|
||||
sub_804AC20(&target->pos);
|
||||
sub_807EC28(0);
|
||||
}
|
||||
sub_806A5B8(target);
|
||||
sub_8075900(target,gDungeon->unk3A08);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_807E378(void)
|
||||
{
|
||||
u16 uVar2;
|
||||
struct Entity *leader;
|
||||
|
||||
leader = GetLeader();
|
||||
if (EntityExists(leader)) {
|
||||
|
||||
uVar2 = gDungeon->windTurns;
|
||||
if ((gDungeon->windTurns < 1) ||
|
||||
(gDungeon->windTurns--, ((uVar2 - 1) << 0x10) < 1)) {
|
||||
gDungeon->unk67A = 3;
|
||||
}
|
||||
|
||||
if (gDungeon->unk67A == 0) {
|
||||
if (gDungeon->windTurns < 0xfa) {
|
||||
sub_805E804();
|
||||
sub_806A2BC(leader,1);
|
||||
UseAttack(leader);
|
||||
if (sub_8044B28() == 0) {
|
||||
SendMessage(leader,*gUnknown_80F9C4C);
|
||||
sub_80426C8(gUnknown_80F5FAC[gDungeon->tileset],0);
|
||||
gDungeon->unk67A = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (gDungeon->unk67A == 1) {
|
||||
if (gDungeon->windTurns < 0x96) {
|
||||
sub_805E804();
|
||||
sub_806A2BC(leader,1);
|
||||
UseAttack(leader);
|
||||
if (sub_8044B28() == 0) {
|
||||
SendMessage(leader,*gUnknown_80F9C70);
|
||||
sub_80426C8(gUnknown_80F5FAC[gDungeon->tileset],1);
|
||||
gDungeon->unk67A = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (gDungeon->unk67A == 2) {
|
||||
if (gDungeon->windTurns < 0x32) {
|
||||
sub_805E804();
|
||||
sub_806A2BC(leader,1);
|
||||
UseAttack(leader);
|
||||
if (sub_8044B28() == 0) {
|
||||
SendMessage(leader,*gUnknown_80F9C8C);
|
||||
sub_80426C8(gUnknown_80F5FAC[gDungeon->tileset],2);
|
||||
gDungeon->unk67A = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (gDungeon->windTurns < 1) {
|
||||
sub_805E804();
|
||||
sub_806A2BC(leader,1);
|
||||
UseAttack(leader);
|
||||
if (sub_8044B28() == 0) {
|
||||
SendMessage(leader,*gUnknown_80F9CBC);
|
||||
sub_80426C8(gUnknown_80F5FAC[gDungeon->tileset],3);
|
||||
gDungeon->unk67A = 4;
|
||||
sub_8068FE0(leader,0x21e,leader);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u8 GetApparentWeather(struct Entity *pokemon)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user