From cc764d8b779129f8f3e818a4d1840ea772253207 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 29 Jul 2018 17:19:57 +0200 Subject: [PATCH] Debug option to show opponents hp --- src/battle_debug.c | 35 ++++++++++++++++++++++++++++++++++- src/battle_interface.c | 16 +++++++++------- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/src/battle_debug.c b/src/battle_debug.c index c7bfa4832..734eadc0d 100644 --- a/src/battle_debug.c +++ b/src/battle_debug.c @@ -85,6 +85,7 @@ enum LIST_ITEM_STATUS3, LIST_ITEM_SIDE_STATUS, LIST_ITEM_AI, + LIST_ITEM_VARIOUS, LIST_ITEM_COUNT }; @@ -103,7 +104,8 @@ enum VAL_BITFIELD_8, VAL_BITFIELD_16, VAL_BITFIELD_32, - VAR_SIDE_STATUS + VAR_SIDE_STATUS, + VAR_SHOW_HP, }; enum @@ -121,6 +123,11 @@ enum LIST_SIDE_STICKY_WEB, }; +enum +{ + VARIOUS_SHOW_HP, +}; + // const rom data static const u8 sText_Ability[] = _("Ability"); 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_Risky[] = _("Risky"); 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[] = _(""); @@ -277,6 +286,12 @@ static const struct ListMenuItem sMainListItems[] = {sText_Status3, LIST_ITEM_STATUS3}, {sText_SideStatus, LIST_ITEM_SIDE_STATUS}, {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[] = @@ -852,6 +867,10 @@ static void CreateSecondaryListMenu(struct BattleDebugMenu *data) itemsCount = ARRAY_COUNT(sAIListItems); data->bitfield = sAIBitfield; break; + case LIST_ITEM_VARIOUS: + listTemplate.items = sVariousListItems; + itemsCount = ARRAY_COUNT(sVariousListItems); + break; case LIST_ITEM_SIDE_STATUS: listTemplate.items = sSideStatusListItems; itemsCount = ARRAY_COUNT(sSideStatusListItems); @@ -1024,6 +1043,9 @@ static void UpdateBattlerValue(struct BattleDebugMenu *data) case VAR_SIDE_STATUS: *GetSideStatusValue(data, TRUE, data->modifyArrows.currValue != 0) = data->modifyArrows.currValue; break; + case VAR_SHOW_HP: + (*(struct BattleSpriteInfo*)(data->modifyArrows.modifiedValPtr)).hpNumbersNoBars = data->modifyArrows.currValue; + break; } data->battlerWasChanged[data->battlerId] = TRUE; } @@ -1264,6 +1286,17 @@ static void SetUpModifyArrows(struct BattleDebugMenu *data) data->modifyArrows.typeOfVal = VAL_U8; data->modifyArrows.currValue = gBattleMons[data->battlerId].statStages[data->currentSecondaryListItemId + STAT_ATK]; 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: 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); diff --git a/src/battle_interface.c b/src/battle_interface.c index 278edb6f4..e8c9fad91 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -22,6 +22,7 @@ #include "battle_anim.h" #include "constants/rgb.h" #include "data2.h" +#include "battle_debug.h" struct TestingBar { @@ -1218,7 +1219,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) memcpy(text, sUnknown_0832C3C4, sizeof(sUnknown_0832C3C4)); battler = gSprites[healthboxSpriteId].hMain_Battler; - if (IsDoubleBattle() == TRUE || GetBattlerSide(battler) == B_SIDE_OPPONENT) + if (IsDoubleBattle() == TRUE) { UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, value, maxOrCurrent); } @@ -1237,12 +1238,12 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent) else { if (maxOrCurrent == HP_CURRENT) - var = 20; + var = 21; 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); for (i = 0; i < 3; i++) @@ -2193,9 +2194,6 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem s32 maxHp, currHp; 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) { u8 isDoubles; @@ -2245,6 +2243,10 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem { if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL) 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) { LoadBattleBarGfx(0);