mirror of
https://github.com/pret/pmd-sky.git
synced 2026-09-30 14:18:10 -05:00
Merge pull request #298 from darkruss48/main
Some checks failed
build / build (push) Has been cancelled
Some checks failed
build / build (push) Has been cancelled
Decomp 13 functions, emptying six asm files
This commit is contained in:
@@ -1,3 +0,0 @@
|
||||
#pragma once
|
||||
.public _02098D64
|
||||
.public DUNGEON_MOVE_TABLES
|
||||
@@ -1,2 +0,0 @@
|
||||
#pragma once
|
||||
.public sub_02020B60
|
||||
@@ -1,5 +0,0 @@
|
||||
#pragma once
|
||||
.public _022AAE74
|
||||
.public _022AAE78
|
||||
.public MemsetSimple
|
||||
.public ReadStringSave
|
||||
@@ -1,3 +0,0 @@
|
||||
#pragma once
|
||||
.public _s32_div_f
|
||||
.public MONSTER_DATA_TABLE_PTR
|
||||
@@ -1,3 +0,0 @@
|
||||
#pragma once
|
||||
.public DisplayAnimatedNumbers
|
||||
.public ShouldDisplayEntityAdvanced
|
||||
@@ -1,2 +0,0 @@
|
||||
#pragma once
|
||||
.public IsMonster__022F9720
|
||||
@@ -1,92 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "main_02013884.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start GetMovesetLevelUpPtr
|
||||
GetMovesetLevelUpPtr: ; 0x02013884
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
cmp r4, #0x258
|
||||
subge r0, r4, #0x258
|
||||
movge r0, r0, lsl #0x10
|
||||
movge r4, r0, asr #0x10
|
||||
mov r0, r4
|
||||
bl IsInvalidMoveset
|
||||
cmp r0, #0
|
||||
ldrne r0, _020138C4 ; =_02098D64
|
||||
ldreq r1, _020138C8 ; =DUNGEON_MOVE_TABLES
|
||||
moveq r0, #0xc
|
||||
smulbbeq r0, r4, r0
|
||||
ldreq r1, [r1]
|
||||
ldreq r0, [r1, r0]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_020138C4: .word _02098D64
|
||||
_020138C8: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMovesetLevelUpPtr
|
||||
|
||||
arm_func_start IsInvalidMoveset
|
||||
IsInvalidMoveset: ; 0x020138CC
|
||||
cmp r0, #0
|
||||
ble _020138E0
|
||||
ldr r1, _020138F0 ; =0x00000229
|
||||
cmp r0, r1
|
||||
blt _020138E8
|
||||
_020138E0:
|
||||
mov r0, #1
|
||||
bx lr
|
||||
_020138E8:
|
||||
mov r0, #0
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_020138F0: .word 0x00000229
|
||||
arm_func_end IsInvalidMoveset
|
||||
|
||||
arm_func_start GetMovesetHmTmPtr
|
||||
GetMovesetHmTmPtr: ; 0x020138F4
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
cmp r4, #0x258
|
||||
subge r0, r4, #0x258
|
||||
movge r0, r0, lsl #0x10
|
||||
movge r4, r0, asr #0x10
|
||||
mov r0, r4
|
||||
bl IsInvalidMoveset
|
||||
cmp r0, #0
|
||||
ldrne r0, _02013938 ; =_02098D64
|
||||
ldmneia sp!, {r4, pc}
|
||||
ldr r1, _0201393C ; =DUNGEON_MOVE_TABLES
|
||||
mov r0, #0xc
|
||||
ldr r1, [r1]
|
||||
smlabb r0, r4, r0, r1
|
||||
ldr r0, [r0, #4]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_02013938: .word _02098D64
|
||||
_0201393C: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMovesetHmTmPtr
|
||||
|
||||
arm_func_start GetMovesetEggPtr
|
||||
GetMovesetEggPtr: ; 0x02013940
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
cmp r4, #0x258
|
||||
subge r0, r4, #0x258
|
||||
movge r0, r0, lsl #0x10
|
||||
movge r4, r0, asr #0x10
|
||||
mov r0, r4
|
||||
bl IsInvalidMoveset
|
||||
cmp r0, #0
|
||||
ldrne r0, _02013984 ; =_02098D64
|
||||
ldmneia sp!, {r4, pc}
|
||||
ldr r1, _02013988 ; =DUNGEON_MOVE_TABLES
|
||||
mov r0, #0xc
|
||||
ldr r1, [r1]
|
||||
smlabb r0, r4, r0, r1
|
||||
ldr r0, [r0, #8]
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_02013984: .word _02098D64
|
||||
_02013988: .word DUNGEON_MOVE_TABLES
|
||||
arm_func_end GetMovesetEggPtr
|
||||
@@ -1,18 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "main_0202614C.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start sub_0202614C
|
||||
sub_0202614C: ; 0x0202614C
|
||||
stmdb sp!, {r3, lr}
|
||||
sub sp, sp, #8
|
||||
add r3, sp, #0
|
||||
str r1, [sp]
|
||||
mov r1, r3
|
||||
add r0, r0, #4
|
||||
str r2, [sp, #4]
|
||||
bl sub_02020B60
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, pc}
|
||||
arm_func_end sub_0202614C
|
||||
@@ -1,32 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "main_02048C5C.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start sub_02048C5C
|
||||
sub_02048C5C: ; 0x02048C5C
|
||||
stmdb sp!, {r3, lr}
|
||||
ldr r0, _02048CA4 ; =_022AAE74
|
||||
mov r1, #0
|
||||
mov r2, #0x30
|
||||
bl MemsetSimple
|
||||
ldr r2, _02048CA8 ; =0x09011416
|
||||
ldr r1, _02048CAC ; =_022AAE74
|
||||
ldr r0, _02048CB0 ; =_022AAE78
|
||||
str r2, [r1, #0x24]
|
||||
bl ReadStringSave
|
||||
ldr r2, _02048CB4 ; =0x000F1206
|
||||
ldr r0, _02048CAC ; =_022AAE74
|
||||
mov r1, #0xff
|
||||
str r2, [r0, #0x28]
|
||||
strb r1, [r0, #0x2c]
|
||||
mov r1, #0
|
||||
strb r1, [r0, #0x2d]
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_02048CA4: .word _022AAE74
|
||||
_02048CA8: .word 0x09011416
|
||||
_02048CAC: .word _022AAE74
|
||||
_02048CB0: .word _022AAE78
|
||||
_02048CB4: .word 0x000F1206
|
||||
arm_func_end sub_02048C5C
|
||||
@@ -1,64 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "main_02052A7C.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start GetExp
|
||||
GetExp: ; 0x02052A7C
|
||||
stmdb sp!, {r4, lr}
|
||||
ldr r2, _02052AAC ; =MONSTER_DATA_TABLE_PTR
|
||||
sub r3, r1, #1
|
||||
ldr r2, [r2]
|
||||
mov r1, #0x44
|
||||
smlabb r0, r0, r1, r2
|
||||
ldrsh r4, [r0, #0x1c]
|
||||
mov r1, #0xa
|
||||
mul r0, r4, r3
|
||||
bl _s32_div_f
|
||||
add r0, r4, r0
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_02052AAC: .word MONSTER_DATA_TABLE_PTR
|
||||
arm_func_end GetExp
|
||||
|
||||
arm_func_start GetEvoParameters
|
||||
GetEvoParameters: ; 0x02052AB0
|
||||
ldr r3, _02052ADC ; =MONSTER_DATA_TABLE_PTR
|
||||
mov r2, #0x44
|
||||
ldr ip, [r3]
|
||||
mov r3, #4
|
||||
smlabb r1, r1, r2, ip
|
||||
add r2, r1, #8
|
||||
_02052AC8:
|
||||
ldrh r1, [r2], #2
|
||||
subs r3, r3, #1
|
||||
strh r1, [r0], #2
|
||||
bne _02052AC8
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02052ADC: .word MONSTER_DATA_TABLE_PTR
|
||||
arm_func_end GetEvoParameters
|
||||
|
||||
arm_func_start GetTreasureBoxChances
|
||||
GetTreasureBoxChances: ; 0x02052AE0
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r2, #0x44
|
||||
smulbb r4, r0, r2
|
||||
ldr r2, _02052B24 ; =MONSTER_DATA_TABLE_PTR
|
||||
mov lr, #0
|
||||
_02052AF4:
|
||||
ldr r3, [r2]
|
||||
add r0, lr, #1
|
||||
add r3, r4, r3
|
||||
add r3, r3, lr, lsl #1
|
||||
ldrsh r3, [r3, #0x3c]
|
||||
mov r0, r0, lsl #0x10
|
||||
mov ip, lr, lsl #1
|
||||
mov lr, r0, asr #0x10
|
||||
strh r3, [r1, ip]
|
||||
cmp lr, #4
|
||||
blt _02052AF4
|
||||
ldmia sp!, {r4, pc}
|
||||
.align 2, 0
|
||||
_02052B24: .word MONSTER_DATA_TABLE_PTR
|
||||
arm_func_end GetTreasureBoxChances
|
||||
@@ -1,29 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022E46D0.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start ov29_022E46D0
|
||||
ov29_022E46D0: ; 0x022E46D0
|
||||
bx lr
|
||||
arm_func_end ov29_022E46D0
|
||||
|
||||
arm_func_start DisplayStockpileNumbers
|
||||
DisplayStockpileNumbers: ; 0x022E46D4
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl ShouldDisplayEntityAdvanced
|
||||
cmp r0, #0
|
||||
ldmeqia sp!, {r4, pc}
|
||||
ldr r0, [r4, #0xb4]
|
||||
mov r1, r4
|
||||
#ifdef JAPAN
|
||||
ldrb r0, [r0, #0x11a]
|
||||
#else
|
||||
ldrb r0, [r0, #0x11e]
|
||||
#endif
|
||||
mov r2, #1
|
||||
mov r3, #0xb
|
||||
bl DisplayAnimatedNumbers
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end DisplayStockpileNumbers
|
||||
@@ -1,42 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "overlay_29_022FBA70.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start IsSpecialStoryAllyOrClient
|
||||
IsSpecialStoryAllyOrClient: ; 0x022FBA70
|
||||
stmdb sp!, {r4, lr}
|
||||
mov r4, r0
|
||||
bl IsMonster__022F9720
|
||||
cmp r0, #0
|
||||
beq _022FBAAC
|
||||
ldr r0, [r4, #0xb4]
|
||||
ldrb r0, [r0, #0x48]
|
||||
cmp r0, #0xfa
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r4, pc}
|
||||
cmp r0, #0xd9
|
||||
blo _022FBAAC
|
||||
cmp r0, #0xe4
|
||||
movlo r0, #1
|
||||
ldmloia sp!, {r4, pc}
|
||||
_022FBAAC:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r4, pc}
|
||||
arm_func_end IsSpecialStoryAllyOrClient
|
||||
|
||||
arm_func_start ResetTriggerFlags
|
||||
ResetTriggerFlags: ; 0x022FBAB4
|
||||
ldr r2, [r0, #0xb4]
|
||||
cmp r2, #0
|
||||
addne r0, r2, #0x100
|
||||
movne r1, #0
|
||||
#ifdef JAPAN
|
||||
strneh r1, [r0, #0x8e]
|
||||
strne r1, [r2, #0x188]
|
||||
#else
|
||||
strneh r1, [r0, #0x92]
|
||||
strne r1, [r2, #0x18c]
|
||||
#endif
|
||||
bx lr
|
||||
arm_func_end ResetTriggerFlags
|
||||
@@ -7,5 +7,6 @@ struct unk_02026130 {
|
||||
};
|
||||
|
||||
void sub_0202613C(struct unk_02026130* p);
|
||||
void sub_0202614C(struct unk_02026130* p, u32 a, u32 b);
|
||||
|
||||
#endif
|
||||
|
||||
6
include/main_02048C5C.h
Normal file
6
include/main_02048C5C.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef PMDSKY_MAIN_02048C5C_H
|
||||
#define PMDSKY_MAIN_02048C5C_H
|
||||
|
||||
void sub_02048C5C(void);
|
||||
|
||||
#endif
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "enums.h"
|
||||
#include "util.h"
|
||||
#include "monster_data.h"
|
||||
|
||||
u8 GetShadowSize(s16 monster_id);
|
||||
s16 GetSpeedStatus(s16 monster_id);
|
||||
@@ -22,5 +23,8 @@ enum type_id GetType(s16 monster_id, u8 type_idx);
|
||||
enum ability_id GetAbility(s16 monster_id, u8 ability_idx);
|
||||
s16 GetRecruitRate2(s16 monster_id);
|
||||
s16 GetRecruitRate1(s16 monster_id);
|
||||
s32 GetExp(s16 monster_id, s32 level);
|
||||
void GetEvoParameters(struct monster_evolution_parameters *evo_params, s16 monster_id);
|
||||
void GetTreasureBoxChances(s16 monster_id, s16 *chances);
|
||||
|
||||
#endif //PMDSKY_MAIN_0205283C_H
|
||||
|
||||
@@ -102,9 +102,17 @@ struct move_data_table
|
||||
struct move_data moves[559]; // 0x8
|
||||
};
|
||||
|
||||
struct moveset
|
||||
{
|
||||
u8 *levelup_moves;
|
||||
u8 *hmtm_moves;
|
||||
u8 *egg_moves;
|
||||
};
|
||||
|
||||
struct move_data_table_outer
|
||||
{
|
||||
u8 fill0[8];
|
||||
struct moveset *movesets;
|
||||
u8 fill4[4];
|
||||
struct move_data_table *moves;
|
||||
};
|
||||
|
||||
|
||||
@@ -9,4 +9,10 @@ s16 GetMoveTargetAndRange(struct move *move, bool8 is_ai);
|
||||
// Gets the type of a move
|
||||
enum type_id GetMoveType(struct move* move);
|
||||
|
||||
extern u8 _02098D64[];
|
||||
extern s32 IsInvalidMoveset(s16 moveset_id);
|
||||
u8 *GetMovesetLevelUpPtr(s16 monster_id);
|
||||
u8 *GetMovesetHmTmPtr(s16 monster_id);
|
||||
u8 *GetMovesetEggPtr(s16 monster_id);
|
||||
|
||||
#endif //PMDSKY_MOVES_2_H
|
||||
|
||||
@@ -6,5 +6,7 @@
|
||||
#include "move.h"
|
||||
|
||||
void ov29_022E46C0(struct entity *entity);
|
||||
void ov29_022E46D0(struct entity *entity);
|
||||
void DisplayStockpileNumbers(struct entity *entity);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -5,5 +5,7 @@
|
||||
|
||||
s16 FindMoveOnMonster(struct entity* entity, enum move_id move_id);
|
||||
bool8 DoesMonsterHaveMove(struct entity* entity, enum move_id move_id);
|
||||
bool8 IsSpecialStoryAllyOrClient(struct entity *entity);
|
||||
void ResetTriggerFlags(struct entity *entity);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_022FBA54_H
|
||||
|
||||
7
main.lsf
7
main.lsf
@@ -106,7 +106,6 @@ Static main
|
||||
Object asm/main_02012294.o
|
||||
Object src/moves_1.o
|
||||
Object src/moves_2.o
|
||||
Object asm/main_02013884.o
|
||||
Object src/main_0201398C.o
|
||||
Object src/moves_4.o
|
||||
Object src/moves.o
|
||||
@@ -138,7 +137,6 @@ Static main
|
||||
Object src/main_0202593C.o
|
||||
Object asm/main_0202598C.o
|
||||
Object src/main_0202613C.o
|
||||
Object asm/main_0202614C.o
|
||||
Object src/main_02026174.o
|
||||
Object asm/main_020261F4.o
|
||||
Object src/main_020265C4.o
|
||||
@@ -226,7 +224,7 @@ Static main
|
||||
Object src/main_02048B48.o
|
||||
Object asm/main_02048B74.o
|
||||
Object src/main_02048BB4.o
|
||||
Object asm/main_02048C5C.o
|
||||
Object src/main_02048C5C.o
|
||||
Object src/main_02048CB8.o
|
||||
Object asm/main_02048CF8.o
|
||||
Object asm/main_bss_020B3380.o
|
||||
@@ -289,7 +287,6 @@ Static main
|
||||
Object src/get_category_string.o
|
||||
Object src/main_020527A8.o
|
||||
Object src/main_0205283C.o
|
||||
Object asm/main_02052A7C.o
|
||||
Object src/main_02052B28.o
|
||||
Object asm/main_02052B44.o
|
||||
Object src/main_02054AA4.o
|
||||
@@ -813,7 +810,6 @@ Overlay OVY_29
|
||||
Object src/overlay_29_022E45B8.o
|
||||
Object asm/overlay_29_022E45CC.o
|
||||
Object src/overlay_29_022E46C0.o
|
||||
Object asm/overlay_29_022E46D0.o
|
||||
Object src/overlay_29_022E4704.o
|
||||
Object asm/overlay_29_022E4868.o
|
||||
Object src/overlay_29_022E4B8C.o
|
||||
@@ -910,7 +906,6 @@ Overlay OVY_29
|
||||
Object src/dungeon_logic_4.o
|
||||
Object asm/overlay_29_022FB678.o
|
||||
Object src/overlay_29_022FBA54.o
|
||||
Object asm/overlay_29_022FBA70.o
|
||||
Object src/joined_at_checks.o
|
||||
Object asm/overlay_29_022FBB1C.o
|
||||
Object src/overlay_29_022FBBEC.o
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
#include "main_0202613C.h"
|
||||
#include "dungeon_mode.h"
|
||||
|
||||
extern void sub_02020B14(void *p);
|
||||
|
||||
extern void sub_02020B60(void *p, u32 *pair, u32 unk, u32 *pair2);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -14,3 +17,12 @@ void sub_0202613C(struct unk_02026130* p)
|
||||
{
|
||||
sub_02020B14((void *) p + 4);
|
||||
}
|
||||
|
||||
void sub_0202614C(struct unk_02026130* p, u32 a, u32 b)
|
||||
{
|
||||
struct pixel_position v;
|
||||
u32 *r = (u32 *)&v;
|
||||
v.x = a;
|
||||
v.y = b;
|
||||
sub_02020B60((u8 *) p + 4, r, b, r);
|
||||
}
|
||||
|
||||
17
src/main_02048C5C.c
Normal file
17
src/main_02048C5C.c
Normal file
@@ -0,0 +1,17 @@
|
||||
#include "main_02048C5C.h"
|
||||
#include "main_02048BB4.h"
|
||||
#include "main_02048CB8.h"
|
||||
#include "main_0200330C.h"
|
||||
|
||||
extern struct unk_022AAE74 _022AAE74;
|
||||
extern char _022AAE78;
|
||||
|
||||
void sub_02048C5C(void)
|
||||
{
|
||||
MemsetSimple((u8 *)(&_022AAE78 - 4), 0, 0x30);
|
||||
_022AAE74.field_0x24 = 0x09011416;
|
||||
ReadStringSave(&_022AAE78);
|
||||
_022AAE74.field_0x28 = 0x000F1206;
|
||||
_022AAE74.field_0x2C = 0xFF;
|
||||
_022AAE74.field_0x2D = 0;
|
||||
}
|
||||
@@ -90,3 +90,21 @@ s16 GetRecruitRate1(s16 monster_id)
|
||||
{
|
||||
return MONSTER_DATA_TABLE_PTR->entries[monster_id].recruit_rate_1;
|
||||
}
|
||||
|
||||
s32 GetExp(s16 monster_id, s32 level)
|
||||
{
|
||||
s16 exp_yield = MONSTER_DATA_TABLE_PTR->entries[monster_id].exp_yield;
|
||||
return exp_yield + exp_yield * (level - 1) / 10;
|
||||
}
|
||||
|
||||
void GetEvoParameters(struct monster_evolution_parameters *evo_params, s16 monster_id)
|
||||
{
|
||||
*evo_params = MONSTER_DATA_TABLE_PTR->entries[monster_id].evolution_param;
|
||||
}
|
||||
|
||||
void GetTreasureBoxChances(s16 monster_id, s16 *chances)
|
||||
{
|
||||
s16 i;
|
||||
for (i = 0; i < 4; i++)
|
||||
chances[i] = (&MONSTER_DATA_TABLE_PTR->entries[monster_id].unk_0x3c)[i];
|
||||
}
|
||||
|
||||
@@ -12,3 +12,45 @@ enum type_id GetMoveType(struct move* move)
|
||||
{
|
||||
return DUNGEON_MOVE_TABLES.moves->moves[move->id].type;
|
||||
}
|
||||
|
||||
u8 *GetMovesetLevelUpPtr(s16 monster_id)
|
||||
{
|
||||
s16 id = monster_id;
|
||||
if (id >= 0x258)
|
||||
id = (s16)(id - 0x258);
|
||||
if (IsInvalidMoveset(id))
|
||||
return _02098D64;
|
||||
return DUNGEON_MOVE_TABLES.movesets[id].levelup_moves;
|
||||
}
|
||||
|
||||
s32 IsInvalidMoveset(s16 moveset_id)
|
||||
{
|
||||
if (moveset_id <= 0)
|
||||
goto invalid;
|
||||
if (moveset_id < 0x229)
|
||||
goto valid;
|
||||
invalid:
|
||||
return 1;
|
||||
valid:
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 *GetMovesetHmTmPtr(s16 monster_id)
|
||||
{
|
||||
s16 id = monster_id;
|
||||
if (id >= 0x258)
|
||||
id = (s16)(id - 0x258);
|
||||
if (IsInvalidMoveset(id))
|
||||
return _02098D64;
|
||||
return DUNGEON_MOVE_TABLES.movesets[id].hmtm_moves;
|
||||
}
|
||||
|
||||
u8 *GetMovesetEggPtr(s16 monster_id)
|
||||
{
|
||||
s16 id = monster_id;
|
||||
if (id >= 0x258)
|
||||
id = (s16)(id - 0x258);
|
||||
if (IsInvalidMoveset(id))
|
||||
return _02098D64;
|
||||
return DUNGEON_MOVE_TABLES.movesets[id].egg_moves;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
#include "overlay_29_022E46C0.h"
|
||||
#include "dungeon_util_static.h"
|
||||
|
||||
extern bool8 ShouldDisplayEntityAdvanced(struct entity *entity);
|
||||
|
||||
extern void DisplayAnimatedNumbers(s32 amount, struct entity *entity, bool8 display_sign,
|
||||
s32 color);
|
||||
|
||||
extern void PlaySeByIdIfShouldDisplayEntity(struct entity *entity, s32 se_id);
|
||||
|
||||
@@ -6,3 +12,15 @@ void ov29_022E46C0(struct entity *entity)
|
||||
{
|
||||
PlaySeByIdIfShouldDisplayEntity(entity, 0x30C);
|
||||
}
|
||||
|
||||
void ov29_022E46D0(struct entity *entity)
|
||||
{
|
||||
}
|
||||
|
||||
void DisplayStockpileNumbers(struct entity *entity)
|
||||
{
|
||||
if (!ShouldDisplayEntityAdvanced(entity))
|
||||
return;
|
||||
DisplayAnimatedNumbers(GetEntInfo(entity)->stockpile_stage, entity, TRUE,
|
||||
0xB);
|
||||
}
|
||||
|
||||
@@ -21,3 +21,26 @@ bool8 DoesMonsterHaveMove(struct entity* entity, enum move_id move_id)
|
||||
{
|
||||
return FindMoveOnMonster(entity, move_id) >= 0;
|
||||
}
|
||||
|
||||
bool8 IsSpecialStoryAllyOrClient(struct entity* entity)
|
||||
{
|
||||
if (IsMonster__022F9720(entity))
|
||||
{
|
||||
if (GetEntInfo(entity)->joined_at == DUNGEON_CLIENT)
|
||||
return TRUE;
|
||||
if (GetEntInfo(entity)->joined_at >= DUNGEON_JOINED_AT_BIDOOF
|
||||
&& GetEntInfo(entity)->joined_at < DUNGEON_DUMMY_0xE4)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void ResetTriggerFlags(struct entity* entity)
|
||||
{
|
||||
struct monster* monster = GetEntInfo(entity);
|
||||
if (monster != NULL)
|
||||
{
|
||||
monster->contact_ability_trigger_bitflags = 0;
|
||||
monster->exclusive_item_trigger_bitflags = 0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user