dungeon random with CalculateStatusTurns

This commit is contained in:
DizzyEggg
2025-04-03 10:33:48 +02:00
parent 68bba3d625
commit 5acaddfaa0
29 changed files with 64 additions and 60 deletions

View File

@@ -1,11 +1,5 @@
.section .rodata
@ ???
.string "pksdir0\0"
@ ???
.string "pksdir0\0"
@ ???
.string "pksdir0\0"
@ ???
.string "pksdir0\0"
@ ???

View File

@@ -1,8 +0,0 @@
#ifndef GUARD_808417C_H
#define GUARD_808417C_H
#include "structs/dungeon_entity.h"
s32 CalculateStatusTurns(Entity *target, const s16 *turnRange, bool8 factorCurerSkills);
#endif // GUARD_808417C_H

11
include/dungeon_8083AB0.h Normal file
View File

@@ -0,0 +1,11 @@
#ifndef GUARD_DUNGEON_8083AB0_H
#define GUARD_DUNGEON_8083AB0_H
#include "structs/dungeon_entity.h"
void sub_8083AB0(s16 param_0, Entity *target, Entity *entity);
bool8 sub_8083C24(void);
bool8 sub_8083C50(void);
bool8 sub_8083C88(u8 param_1);
#endif // GUARD_DUNGEON_8083AB0_H

View File

@@ -12,10 +12,6 @@ void PlayDungeonStartButtonSE(void);
void PlaySoundEffect(u32 songIndex);
void StopDungeonBGM(void);
void StopSoundEffect(u32 songIndex);
void sub_8083AB0(s16 param_0, Entity *target, Entity *entity);
bool8 sub_8083C24(void);
bool8 sub_8083C50(void);
bool8 sub_8083C88(u8);
void UpdateDungeonMusic(void);
#endif // GUARD_DUNGEON_MUSIC_H

View File

@@ -1,6 +1,8 @@
#ifndef GUARD_DUNGEON_RANDOM_H
#define GUARD_DUNGEON_RANDOM_H
#include "structs/dungeon_entity.h"
void sub_808408C(u32 param_1);
u32 YetAnotherRandom24(void);
void InitDungeonRNG(u32 value);
@@ -9,4 +11,6 @@ s32 DungeonRandInt(s32 cap);
s32 DungeonRandRange(s32 low, s32 high);
bool8 DungeonRandOutcome(s32 percentChance);
bool8 DungeonRandOutcome_2(s32 percentChance);
s32 CalculateStatusTurns(Entity *target, const s16 *turnRange, bool8 factorCurerSkills);
#endif

View File

@@ -279,7 +279,6 @@ SECTIONS {
src/dungeon_8083AB0.o(.text);
src/dungeon_music.o(.text);
src/dungeon_random.o(.text);
src/code_808417C.o(.text);
asm/code_808417C.o(.text);
src/code_8084778.o(.text);
src/code_80848F0.o(.text);
@@ -620,6 +619,9 @@ SECTIONS {
src/trap.o(.rodata);
data/pksdir_3.o(.rodata);
src/dungeon_serializer.o(.rodata);
src/dungeon_range.o(.rodata);
src/dungeon_8083AB0.o(.rodata);
src/dungeon_music.o(.rodata);
data/data_8107224.o(.rodata);
src/pokemon.o(.rodata);
data/data_81076E4.o(.rodata);

View File

@@ -6,7 +6,7 @@
#include "code_805D8C8.h"
#include "code_806CD90.h"
#include "code_8077274_1.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "constants/ability.h"
#include "constants/item.h"
#include "constants/status.h"

View File

@@ -1,26 +0,0 @@
#include "global.h"
#include "constants/ability.h"
#include "constants/iq_skill.h"
#include "structs/dungeon_entity.h"
#include "dungeon_logic.h"
#include "dungeon_random.h"
#include "dungeon_util.h"
s32 CalculateStatusTurns(Entity *target, s16 *turnRange, bool8 factorCurerSkills)
{
s32 numTurns;
numTurns = DungeonRandRange(turnRange[0],turnRange[1]);
if (EntityIsValid(target) && (GetEntityType(target) == ENTITY_MONSTER) && (factorCurerSkills)) {
if (IQSkillIsEnabled(target, IQ_SELF_CURER) && (numTurns != 0x7f)) {
numTurns /= 2;
}
if (AbilityIsActive(target, ABILITY_NATURAL_CURE) && (numTurns != 0x7f) && (4 < numTurns)) {
numTurns = 5;
}
}
if (numTurns < 1) {
numTurns = 1;
}
return numTurns;
}

View File

@@ -1,4 +1,6 @@
#include "global.h"
#include "globaldata.h"
#include "dungeon_8083AB0.h"
#include "dungeon.h"
#include "dungeon_util.h"
#include "text_util.h"

View File

@@ -5,7 +5,7 @@
#include "code_803E724.h"
#include "dungeon_message.h"
#include "code_8077274_1.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "constants/ability.h"
#include "constants/direction.h"
#include "constants/dungeon_action.h"

View File

@@ -5,7 +5,7 @@
#include "dungeon_message.h"
#include "code_8077274_1.h"
#include "code_807CD9C.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "constants/dungeon_action.h"
#include "constants/dungeon.h"
#include "constants/iq_skill.h"

View File

@@ -6,6 +6,7 @@
#include "code_8044CC8.h"
#include "code_8097DD0.h"
#include "dungeon.h"
#include "dungeon_8083AB0.h"
#include "dungeon_action.h"
#include "dungeon_leader.h"
#include "dungeon_main.h"

View File

@@ -42,6 +42,7 @@
#include "def_filearchives.h"
#include "code_803D110.h"
#include "dungeon_strings.h"
#include "dungeon_8083AB0.h"
static void EnsureCastformLoaded(void);
static void EnsureDeoxysLoaded(void);

View File

@@ -18,7 +18,7 @@
#include "code_806CD90.h"
#include "code_8077274_1.h"
#include "code_807CD9C.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "dungeon_logic.h"
#include "dungeon_config.h"
#include "run_dungeon.h"

View File

@@ -17,7 +17,7 @@
#include "code_806CD90.h"
#include "code_8077274_1.h"
#include "code_807CD9C.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "dungeon_logic.h"
#include "dungeon_config.h"
#include "run_dungeon.h"

View File

@@ -1,4 +1,5 @@
#include "global.h"
#include "globaldata.h"
#include "constants/bg_music.h"
#include "structs/menu.h"
#include "code_80118A4.h"

View File

@@ -1,5 +1,11 @@
#include "global.h"
#include "dungeon_random.h"
#include "constants/ability.h"
#include "constants/iq_skill.h"
#include "structs/dungeon_entity.h"
#include "dungeon_logic.h"
#include "dungeon_random.h"
#include "dungeon_util.h"
EWRAM_INIT u32 gDungeonRngState = {1};
EWRAM_INIT u32 gUnknown_203B458 = {1};
@@ -75,3 +81,21 @@ bool8 DungeonRandOutcome_2(s32 percentChance)
return FALSE;
}
s32 CalculateStatusTurns(Entity *target, const s16 *turnRange, bool8 factorCurerSkills)
{
s32 numTurns;
numTurns = DungeonRandRange(turnRange[0],turnRange[1]);
if (EntityIsValid(target) && (GetEntityType(target) == ENTITY_MONSTER) && (factorCurerSkills)) {
if (IQSkillIsEnabled(target, IQ_SELF_CURER) && (numTurns != 0x7f)) {
numTurns /= 2;
}
if (AbilityIsActive(target, ABILITY_NATURAL_CURE) && (numTurns != 0x7f) && (4 < numTurns)) {
numTurns = 5;
}
}
if (numTurns < 1) {
numTurns = 1;
}
return numTurns;
}

View File

@@ -1,4 +1,5 @@
#include "global.h"
#include "globaldata.h"
#include "dungeon_range.h"
#include "dungeon_leader.h"
#include "dungeon_util.h"

View File

@@ -6,7 +6,7 @@
#include "code_806CD90.h"
#include "code_8077274_1.h"
#include "code_807CD9C.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "constants/ability.h"
#include "constants/status.h"
#include "constants/targeting.h"

View File

@@ -6,7 +6,7 @@
#include "code_806CD90.h"
#include "code_8077274_1.h"
#include "code_807CD9C.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "constants/ability.h"
#include "constants/status.h"
#include "constants/targeting.h"

View File

@@ -5,7 +5,7 @@
#include "code_806CD90.h"
#include "code_8077274_1.h"
#include "code_807CD9C.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "constants/ability.h"
#include "constants/move_id.h"
#include "constants/status.h"

View File

@@ -7,7 +7,7 @@
#include "code_806CD90.h"
#include "code_8077274_1.h"
#include "code_807CD9C.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "constants/ability.h"
#include "constants/move_id.h"
#include "constants/status.h"

View File

@@ -4,7 +4,7 @@
#include "dungeon_message.h"
#include "code_806CD90.h"
#include "code_8077274_1.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "constants/ability.h"
#include "constants/direction.h"
#include "constants/dungeon_action.h"

View File

@@ -4,7 +4,7 @@
#include "code_803E46C.h"
#include "code_806CD90.h"
#include "code_8077274_1.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "constants/ability.h"
#include "constants/status.h"
#include "constants/type.h"

View File

@@ -6,7 +6,7 @@
#include "code_805D8C8.h"
#include "code_806CD90.h"
#include "code_8077274_1.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "constants/ability.h"
#include "constants/item.h"
#include "constants/status.h"

View File

@@ -6,7 +6,7 @@
#include "code_805D8C8.h"
#include "code_806CD90.h"
#include "code_8077274_1.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "constants/ability.h"
#include "constants/item.h"
#include "constants/status.h"

View File

@@ -6,7 +6,7 @@
#include "code_805D8C8.h"
#include "code_806CD90.h"
#include "code_8077274_1.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "constants/ability.h"
#include "constants/item.h"
#include "constants/status.h"

View File

@@ -22,6 +22,7 @@
#include "code_8094F88.h"
#include "code_8099360.h"
#include "cpu.h"
#include "dungeon_8083AB0.h"
#include "dungeon.h"
#include "dungeon_ai.h"
#include "dungeon_config.h"

View File

@@ -7,7 +7,7 @@
#include "dungeon_message.h"
#include "code_8077274_1.h"
#include "code_807CD9C.h"
#include "code_808417C.h"
#include "dungeon_random.h"
#include "code_806CD90.h"
#include "constants/trap.h"
#include "constants/type.h"