pmd-red/include/dungeon_message.h
2025-03-29 00:38:23 +01:00

59 lines
2.5 KiB
C

#ifndef GUARD_DUNGEON_MESSAGE_H
#define GUARD_DUNGEON_MESSAGE_H
#include "structs/dungeon_entity.h"
#include "string_format.h"
struct MonDialogueSpriteInfo
{
s16 species;
u8 spriteId;
};
// Depending on partner's pokemon species, the dialogue may be slightly different.
#define DIALOGUE_ALLOW_ALL 0
#define DIALOGUE_ALLOW_MOST 1 // Bulbasaur, Cyndaquil, Mudkip, Pikachu, Charmander, Treecko
#define DIALOGUE_ONLY_SQUIRTLE_TOTODILE 7
#define DIALOGUE_ONLY_TORCHIC_CHICORITA 280
struct DungeonDialogueStruct
{
u16 type;
u8 spriteId;
u8 spritePlacementId; // Information on mon's portrait x/y and flip
s16 speciesId;
s16 allowType;
const u8 *str;
};
void sub_80521D0(void);
void sub_8052210(bool8 a0);
// These functions display the string if certain conditions are met. The conditions differ depending on the function. The string is then saved to the message log.
void LogMessageByIdWithPopupCheckUser(Entity *pokemon, const u8 *str);
void TryDisplayDungeonLoggableMessage2(Entity *pokemon, const u8 *str);
void TryDisplayDungeonLoggableMessage3(Entity *attacker, Entity *target, const u8 *str);
void TryDisplayDungeonLoggableMessage4(Entity *attacker, Entity *target, const u8 *str);
void TryDisplayDungeonLoggableMessage5(Entity *pokemon, DungeonPos *pos, const u8 *str);
// As opposed to the above - these always display the string and save it in the message log. False/True stand for an unknown argument. Not sure what the practical difference is between these.
void DisplayDungeonLoggableMessage(Entity *pokemon, const u8 *str);
void DisplayDungeonLoggableMessageFalse(Entity *pokemon, const u8 *str);
void DisplayDungeonLoggableMessageTrue(Entity *pokemon, const u8 *str);
void xxx_draw_string_80524F0(void);
void sub_80526D0(s32 r0);
void sub_8052740(s32 a0);
void DisplayDungeonMessage(struct MonDialogueSpriteInfo *monSpriteInfo, const u8 *str, bool8 a2);
void DisplayDungeonDialogue(const struct DungeonDialogueStruct *dialogueInfo);
bool32 DisplayDungeonYesNoMessage(struct MonDialogueSpriteInfo *monSpriteInfo, const u8 *str, bool32 defaultYes);
s32 DisplayDungeonMenuMessage(struct MonDialogueSpriteInfo *monSpriteInfo, const u8 *str, const MenuItem *menuItems, u16 unkArg);
void sub_8052D44(s16 *ids, Entity *leader, Entity *partner);
void TryDisplayGeneralTutorialMessage(void);
void TryDisplayItemPickupTutorialMessage(u8 itemId);
void DisplayYouReachedDestFloorStr(void);
void sub_8052FB8(const u8 *str);
const u8 *GetCurrentDungeonName(void);
#endif // GUARD_DUNGEON_MESSAGE_H