Debug option to show opponents hp

This commit is contained in:
DizzyEggg 2018-07-29 17:19:57 +02:00
parent 2f6cc2be80
commit cc764d8b77
2 changed files with 43 additions and 8 deletions

View File

@ -85,6 +85,7 @@ enum
LIST_ITEM_STATUS3, LIST_ITEM_STATUS3,
LIST_ITEM_SIDE_STATUS, LIST_ITEM_SIDE_STATUS,
LIST_ITEM_AI, LIST_ITEM_AI,
LIST_ITEM_VARIOUS,
LIST_ITEM_COUNT LIST_ITEM_COUNT
}; };
@ -103,7 +104,8 @@ enum
VAL_BITFIELD_8, VAL_BITFIELD_8,
VAL_BITFIELD_16, VAL_BITFIELD_16,
VAL_BITFIELD_32, VAL_BITFIELD_32,
VAR_SIDE_STATUS VAR_SIDE_STATUS,
VAR_SHOW_HP,
}; };
enum enum
@ -121,6 +123,11 @@ enum
LIST_SIDE_STICKY_WEB, LIST_SIDE_STICKY_WEB,
}; };
enum
{
VARIOUS_SHOW_HP,
};
// const rom data // const rom data
static const u8 sText_Ability[] = _("Ability"); static const u8 sText_Ability[] = _("Ability");
static const u8 sText_Moves[] = _("Moves"); static const u8 sText_Moves[] = _("Moves");
@ -186,6 +193,8 @@ static const u8 sText_TryFaint[] = _("Try Faint");
static const u8 sText_SetUpFirstTurn[] = _("Setup 1 turn"); static const u8 sText_SetUpFirstTurn[] = _("Setup 1 turn");
static const u8 sText_Risky[] = _("Risky"); static const u8 sText_Risky[] = _("Risky");
static const u8 sText_StrongestMove[] = _("Most dmg move"); static const u8 sText_StrongestMove[] = _("Most dmg move");
static const u8 sText_Various[] = _("Various");
static const u8 sText_ShowHP[] = _("Show HP");
static const u8 sText_EmptyString[] = _(""); static const u8 sText_EmptyString[] = _("");
@ -277,6 +286,12 @@ static const struct ListMenuItem sMainListItems[] =
{sText_Status3, LIST_ITEM_STATUS3}, {sText_Status3, LIST_ITEM_STATUS3},
{sText_SideStatus, LIST_ITEM_SIDE_STATUS}, {sText_SideStatus, LIST_ITEM_SIDE_STATUS},
{sText_AI, LIST_ITEM_AI}, {sText_AI, LIST_ITEM_AI},
{sText_Various, LIST_ITEM_VARIOUS},
};
static const struct ListMenuItem sVariousListItems[] =
{
{sText_ShowHP, VARIOUS_SHOW_HP},
}; };
static const struct ListMenuItem sAIListItems[] = static const struct ListMenuItem sAIListItems[] =
@ -852,6 +867,10 @@ static void CreateSecondaryListMenu(struct BattleDebugMenu *data)
itemsCount = ARRAY_COUNT(sAIListItems); itemsCount = ARRAY_COUNT(sAIListItems);
data->bitfield = sAIBitfield; data->bitfield = sAIBitfield;
break; break;
case LIST_ITEM_VARIOUS:
listTemplate.items = sVariousListItems;
itemsCount = ARRAY_COUNT(sVariousListItems);
break;
case LIST_ITEM_SIDE_STATUS: case LIST_ITEM_SIDE_STATUS:
listTemplate.items = sSideStatusListItems; listTemplate.items = sSideStatusListItems;
itemsCount = ARRAY_COUNT(sSideStatusListItems); itemsCount = ARRAY_COUNT(sSideStatusListItems);
@ -1024,6 +1043,9 @@ static void UpdateBattlerValue(struct BattleDebugMenu *data)
case VAR_SIDE_STATUS: case VAR_SIDE_STATUS:
*GetSideStatusValue(data, TRUE, data->modifyArrows.currValue != 0) = data->modifyArrows.currValue; *GetSideStatusValue(data, TRUE, data->modifyArrows.currValue != 0) = data->modifyArrows.currValue;
break; break;
case VAR_SHOW_HP:
(*(struct BattleSpriteInfo*)(data->modifyArrows.modifiedValPtr)).hpNumbersNoBars = data->modifyArrows.currValue;
break;
} }
data->battlerWasChanged[data->battlerId] = TRUE; data->battlerWasChanged[data->battlerId] = TRUE;
} }
@ -1264,6 +1286,17 @@ static void SetUpModifyArrows(struct BattleDebugMenu *data)
data->modifyArrows.typeOfVal = VAL_U8; data->modifyArrows.typeOfVal = VAL_U8;
data->modifyArrows.currValue = gBattleMons[data->battlerId].statStages[data->currentSecondaryListItemId + STAT_ATK]; data->modifyArrows.currValue = gBattleMons[data->battlerId].statStages[data->currentSecondaryListItemId + STAT_ATK];
break; break;
case LIST_ITEM_VARIOUS:
if (data->currentSecondaryListItemId == VARIOUS_SHOW_HP)
{
data->modifyArrows.minValue = 0;
data->modifyArrows.maxValue = 1;
data->modifyArrows.maxDigits = 1;
data->modifyArrows.modifiedValPtr = &gBattleSpritesDataPtr->battlerData[data->battlerId];
data->modifyArrows.typeOfVal = VAR_SHOW_HP;
data->modifyArrows.currValue = gBattleSpritesDataPtr->battlerData[data->battlerId].hpNumbersNoBars;
}
break;
case LIST_ITEM_STATUS1: case LIST_ITEM_STATUS1:
data->modifyArrows.modifiedValPtr = &gBattleMons[data->battlerId].status1; data->modifyArrows.modifiedValPtr = &gBattleMons[data->battlerId].status1;
data->modifyArrows.currValue = GetBitfieldValue(gBattleMons[data->battlerId].status1, data->bitfield[data->currentSecondaryListItemId].currBit, data->bitfield[data->currentSecondaryListItemId].bitsCount); data->modifyArrows.currValue = GetBitfieldValue(gBattleMons[data->battlerId].status1, data->bitfield[data->currentSecondaryListItemId].currBit, data->bitfield[data->currentSecondaryListItemId].bitsCount);

View File

@ -22,6 +22,7 @@
#include "battle_anim.h" #include "battle_anim.h"
#include "constants/rgb.h" #include "constants/rgb.h"
#include "data2.h" #include "data2.h"
#include "battle_debug.h"
struct TestingBar struct TestingBar
{ {
@ -1218,7 +1219,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
memcpy(text, sUnknown_0832C3C4, sizeof(sUnknown_0832C3C4)); memcpy(text, sUnknown_0832C3C4, sizeof(sUnknown_0832C3C4));
battler = gSprites[healthboxSpriteId].hMain_Battler; battler = gSprites[healthboxSpriteId].hMain_Battler;
if (IsDoubleBattle() == TRUE || GetBattlerSide(battler) == B_SIDE_OPPONENT) if (IsDoubleBattle() == TRUE)
{ {
UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, value, maxOrCurrent); UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, value, maxOrCurrent);
} }
@ -1237,12 +1238,12 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
else else
{ {
if (maxOrCurrent == HP_CURRENT) if (maxOrCurrent == HP_CURRENT)
var = 20; var = 21;
else else
var = 48; var = 49;
} }
ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3); ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_LEADING_ZEROS, 3);
RenderTextFont9(gMonSpritesGfxPtr->barFontGfx, 9, text); RenderTextFont9(gMonSpritesGfxPtr->barFontGfx, 9, text);
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
@ -2193,9 +2194,6 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
s32 maxHp, currHp; s32 maxHp, currHp;
u8 battlerId = gSprites[healthboxSpriteId].hMain_Battler; u8 battlerId = gSprites[healthboxSpriteId].hMain_Battler;
if (elementId == HEALTHBOX_ALL && !IsDoubleBattle())
GetBattlerSide(battlerId); // Pointless function call.
if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER) if (GetBattlerSide(gSprites[healthboxSpriteId].hMain_Battler) == B_SIDE_PLAYER)
{ {
u8 isDoubles; u8 isDoubles;
@ -2245,6 +2243,10 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
{ {
if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL) if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL)
UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL)); UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL));
if (gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars && (elementId == HEALTHBOX_CURRENT_HP || elementId == HEALTHBOX_ALL))
UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_HP), HP_CURRENT);
if (gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars && (elementId == HEALTHBOX_MAX_HP || elementId == HEALTHBOX_ALL))
UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_MAX_HP), HP_MAX);
if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL) if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL)
{ {
LoadBattleBarGfx(0); LoadBattleBarGfx(0);