Add Frostbite status

This commit is contained in:
Bassoonian 2023-04-22 18:23:08 +02:00
parent ae80d545c5
commit 623e7c5f25
12 changed files with 43 additions and 4 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 531 B

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 531 B

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 530 B

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 530 B

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 455 B

After

Width:  |  Height:  |  Size: 458 B

View File

@ -115,8 +115,9 @@
#define STATUS1_TOXIC_POISON (1 << 7) #define STATUS1_TOXIC_POISON (1 << 7)
#define STATUS1_TOXIC_COUNTER (1 << 8 | 1 << 9 | 1 << 10 | 1 << 11) #define STATUS1_TOXIC_COUNTER (1 << 8 | 1 << 9 | 1 << 10 | 1 << 11)
#define STATUS1_TOXIC_TURN(num) ((num) << 8) #define STATUS1_TOXIC_TURN(num) ((num) << 8)
#define STATUS1_FROSTBITE (1 << 12)
#define STATUS1_PSN_ANY (STATUS1_POISON | STATUS1_TOXIC_POISON) #define STATUS1_PSN_ANY (STATUS1_POISON | STATUS1_TOXIC_POISON)
#define STATUS1_ANY (STATUS1_SLEEP | STATUS1_POISON | STATUS1_BURN | STATUS1_FREEZE | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON) #define STATUS1_ANY (STATUS1_SLEEP | STATUS1_POISON | STATUS1_BURN | STATUS1_FREEZE | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON | STATUS1_FROSTBITE)
// Volatile status ailments // Volatile status ailments
// These are removed after exiting the battle or switching out // These are removed after exiting the battle or switching out

View File

@ -11,6 +11,7 @@
#define AILMENT_BRN 5 #define AILMENT_BRN 5
#define AILMENT_PKRS 6 #define AILMENT_PKRS 6
#define AILMENT_FNT 7 #define AILMENT_FNT 7
#define AILMENT_FSB 8
#define PARTY_LAYOUT_SINGLE 0 #define PARTY_LAYOUT_SINGLE 0
#define PARTY_LAYOUT_DOUBLE 1 #define PARTY_LAYOUT_DOUBLE 1

View File

@ -181,6 +181,7 @@ static const u8 sText_SideStatus[] = _("Side Status");
static const u8 sText_MaxHp[] = _("HP Max"); static const u8 sText_MaxHp[] = _("HP Max");
static const u8 sText_CurrHp[] = _("HP Current"); static const u8 sText_CurrHp[] = _("HP Current");
static const u8 sText_Freeze[] = _("Freeze"); static const u8 sText_Freeze[] = _("Freeze");
static const u8 sText_Frostbite[] = _("Frostbite");
static const u8 sText_ToxicPoison[] = _("Toxic Poison"); static const u8 sText_ToxicPoison[] = _("Toxic Poison");
static const u8 sText_ToxicCounter[] = _("Toxic Counter"); static const u8 sText_ToxicCounter[] = _("Toxic Counter");
static const u8 sText_Flinch[] = _("Flinch"); static const u8 sText_Flinch[] = _("Flinch");
@ -258,6 +259,7 @@ static const struct BitfieldInfo sStatus1Bitfield[] =
{/*Paralysis*/1, 6}, {/*Paralysis*/1, 6},
{/*Toxic Poison*/ 1, 7}, {/*Toxic Poison*/ 1, 7},
{/*Toxic Counter*/ 4, 8}, {/*Toxic Counter*/ 4, 8},
{/*Frostbite*/ 1, 12},
}; };
static const struct BitfieldInfo sStatus2Bitfield[] = static const struct BitfieldInfo sStatus2Bitfield[] =
@ -397,6 +399,7 @@ static const struct ListMenuItem sStatus1ListItems[] =
{gText_Paralysis, 4}, {gText_Paralysis, 4},
{sText_ToxicPoison, 5}, {sText_ToxicPoison, 5},
{sText_ToxicCounter, 6}, {sText_ToxicCounter, 6},
{sText_Frostbite, 7},
}; };
static const struct ListMenuItem sStatus2ListItems[] = static const struct ListMenuItem sStatus2ListItems[] =

View File

@ -73,6 +73,9 @@ enum
HEALTHBOX_GFX_STATUS_BRN_BATTLER0, //status brn HEALTHBOX_GFX_STATUS_BRN_BATTLER0, //status brn
HEALTHBOX_GFX_34, HEALTHBOX_GFX_34,
HEALTHBOX_GFX_35, HEALTHBOX_GFX_35,
HEALTHBOX_GFX_STATUS_FSB_BATTLER0, //status fsb
HEALTHBOX_GFX_116,
HEALTHBOX_GFX_117,
HEALTHBOX_GFX_36, //misc [Black section] HEALTHBOX_GFX_36, //misc [Black section]
HEALTHBOX_GFX_37, //misc [Black section] HEALTHBOX_GFX_37, //misc [Black section]
HEALTHBOX_GFX_38, //misc [Black section] HEALTHBOX_GFX_38, //misc [Black section]
@ -123,6 +126,9 @@ enum
HEALTHBOX_GFX_STATUS_BRN_BATTLER1, //status2 "BRN" HEALTHBOX_GFX_STATUS_BRN_BATTLER1, //status2 "BRN"
HEALTHBOX_GFX_84, HEALTHBOX_GFX_84,
HEALTHBOX_GFX_85, HEALTHBOX_GFX_85,
HEALTHBOX_GFX_STATUS_FSB_BATTLER1, //status2 "FSB"
HEALTHBOX_GFX_118,
HEALTHBOX_GFX_119,
HEALTHBOX_GFX_STATUS_PSN_BATTLER2, //status3 "PSN" HEALTHBOX_GFX_STATUS_PSN_BATTLER2, //status3 "PSN"
HEALTHBOX_GFX_87, HEALTHBOX_GFX_87,
HEALTHBOX_GFX_88, HEALTHBOX_GFX_88,
@ -138,6 +144,9 @@ enum
HEALTHBOX_GFX_STATUS_BRN_BATTLER2, //status3 "BRN" HEALTHBOX_GFX_STATUS_BRN_BATTLER2, //status3 "BRN"
HEALTHBOX_GFX_99, HEALTHBOX_GFX_99,
HEALTHBOX_GFX_100, HEALTHBOX_GFX_100,
HEALTHBOX_GFX_STATUS_FSB_BATTLER2, //status3 "FSB"
HEALTHBOX_GFX_120,
HEALTHBOX_GFX_121,
HEALTHBOX_GFX_STATUS_PSN_BATTLER3, //status4 "PSN" HEALTHBOX_GFX_STATUS_PSN_BATTLER3, //status4 "PSN"
HEALTHBOX_GFX_102, HEALTHBOX_GFX_102,
HEALTHBOX_GFX_103, HEALTHBOX_GFX_103,
@ -153,6 +162,9 @@ enum
HEALTHBOX_GFX_STATUS_BRN_BATTLER3, //status4 "BRN" HEALTHBOX_GFX_STATUS_BRN_BATTLER3, //status4 "BRN"
HEALTHBOX_GFX_114, HEALTHBOX_GFX_114,
HEALTHBOX_GFX_115, HEALTHBOX_GFX_115,
HEALTHBOX_GFX_STATUS_FSB_BATTLER3, //status4 "FSB"
HEALTHBOX_GFX_122,
HEALTHBOX_GFX_123,
HEALTHBOX_GFX_FRAME_END, HEALTHBOX_GFX_FRAME_END,
HEALTHBOX_GFX_FRAME_END_BAR, HEALTHBOX_GFX_FRAME_END_BAR,
}; };
@ -2208,6 +2220,11 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, battlerId)); statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, battlerId));
statusPalId = PAL_STATUS_FRZ; statusPalId = PAL_STATUS_FRZ;
} }
else if (status & STATUS1_FROSTBITE)
{
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FSB_BATTLER0, battlerId));
statusPalId = PAL_STATUS_FRZ;
}
else if (status & STATUS1_PARALYSIS) else if (status & STATUS1_PARALYSIS)
{ {
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, battlerId)); statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, battlerId));
@ -2290,6 +2307,16 @@ static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battlerId)
else else
ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER3; ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER3;
break; break;
case HEALTHBOX_GFX_STATUS_FSB_BATTLER0:
if (battlerId == 0)
ret = HEALTHBOX_GFX_STATUS_FSB_BATTLER0;
else if (battlerId == 1)
ret = HEALTHBOX_GFX_STATUS_FSB_BATTLER1;
else if (battlerId == 2)
ret = HEALTHBOX_GFX_STATUS_FSB_BATTLER2;
else
ret = HEALTHBOX_GFX_STATUS_FSB_BATTLER3;
break;
case HEALTHBOX_GFX_STATUS_BRN_BATTLER0: case HEALTHBOX_GFX_STATUS_BRN_BATTLER0:
if (battlerId == 0) if (battlerId == 0)
ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER0; ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER0;

View File

@ -1054,7 +1054,7 @@ static const union AnimCmd sSpriteAnim_StatusFaint[] =
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_Blank[] = static const union AnimCmd sSpriteAnim_StatusFrostbite[] =
{ {
ANIMCMD_FRAME(28, 0), ANIMCMD_FRAME(28, 0),
ANIMCMD_END ANIMCMD_END
@ -1069,7 +1069,7 @@ static const union AnimCmd *const sSpriteTemplate_StatusCondition[] =
sSpriteAnim_StatusBurn, sSpriteAnim_StatusBurn,
sSpriteAnim_StatusPokerus, sSpriteAnim_StatusPokerus,
sSpriteAnim_StatusFaint, sSpriteAnim_StatusFaint,
sSpriteAnim_Blank sSpriteAnim_StatusFrostbite
}; };
static const struct CompressedSpriteSheet sSpriteSheet_StatusIcons = static const struct CompressedSpriteSheet sSpriteSheet_StatusIcons =

View File

@ -1941,6 +1941,8 @@ u8 GetAilmentFromStatus(u32 status)
return AILMENT_FRZ; return AILMENT_FRZ;
if (status & STATUS1_BURN) if (status & STATUS1_BURN)
return AILMENT_BRN; return AILMENT_BRN;
if (status & STATUS1_FROSTBITE)
return AILMENT_FSB;
return AILMENT_NONE; return AILMENT_NONE;
} }

View File

@ -1112,6 +1112,10 @@ static const union AnimCmd sSpriteAnim_StatusFaint[] = {
ANIMCMD_FRAME(24, 0, FALSE, FALSE), ANIMCMD_FRAME(24, 0, FALSE, FALSE),
ANIMCMD_END ANIMCMD_END
}; };
static const union AnimCmd sSpriteAnim_StatusFrostbite[] = {
ANIMCMD_FRAME(28, 0, FALSE, FALSE),
ANIMCMD_END
};
static const union AnimCmd *const sSpriteAnimTable_StatusCondition[] = { static const union AnimCmd *const sSpriteAnimTable_StatusCondition[] = {
sSpriteAnim_StatusPoison, sSpriteAnim_StatusPoison,
sSpriteAnim_StatusParalyzed, sSpriteAnim_StatusParalyzed,
@ -1120,11 +1124,12 @@ static const union AnimCmd *const sSpriteAnimTable_StatusCondition[] = {
sSpriteAnim_StatusBurn, sSpriteAnim_StatusBurn,
sSpriteAnim_StatusPokerus, sSpriteAnim_StatusPokerus,
sSpriteAnim_StatusFaint, sSpriteAnim_StatusFaint,
sSpriteAnim_StatusFrostbite,
}; };
static const struct CompressedSpriteSheet sStatusIconsSpriteSheet = static const struct CompressedSpriteSheet sStatusIconsSpriteSheet =
{ {
.data = gStatusGfx_Icons, .data = gStatusGfx_Icons,
.size = 0x380, .size = 0x400,
.tag = TAG_MON_STATUS .tag = TAG_MON_STATUS
}; };
static const struct CompressedSpritePalette sStatusIconsSpritePalette = static const struct CompressedSpritePalette sStatusIconsSpritePalette =