mirror of https://github.com/pmret/papermario.git
1496 lines
61 KiB
C
1496 lines
61 KiB
C
#include "common.h"
|
|
#include "effects.h"
|
|
#include "hud_element.h"
|
|
#include "message_ids.h"
|
|
#include "ld_addrs.h"
|
|
#include "model.h"
|
|
#include "script_api/battle.h"
|
|
#include "entity.h"
|
|
#include "sprite/npc/BattleGoombario.h"
|
|
#include "sprite/npc/BattleKooper.h"
|
|
#include "sprite/npc/BattleBombette.h"
|
|
#include "sprite/npc/BattleParakarry.h"
|
|
#include "sprite/npc/Goompa.h"
|
|
#include "sprite/npc/BattleWatt.h"
|
|
#include "sprite/npc/BattleSushie.h"
|
|
#include "sprite/npc/BattleLakilester.h"
|
|
#include "sprite/npc/BattleBow.h"
|
|
#include "sprite/player.h"
|
|
|
|
extern HudScript HES_ProjectorBeam;
|
|
extern IconHudScriptPair gItemHudScripts[];
|
|
|
|
// menu position index for level up screen
|
|
enum {
|
|
MENU_HP = 0,
|
|
MENU_FP = 1,
|
|
MENU_BP = 2,
|
|
};
|
|
|
|
// first index for LevelUpStatTextIDs
|
|
enum {
|
|
LVL_UP_FP = 0,
|
|
LVL_UP_HP = 1,
|
|
LVL_UP_BP = 2,
|
|
};
|
|
|
|
// second index for LevelUpStatTextIDs
|
|
enum {
|
|
LVL_UP_TITLE = 0,
|
|
LVL_UP_CUR_TENS = 1,
|
|
LVL_UP_CUR_ONES = 2,
|
|
LVL_UP_ARROW = 3,
|
|
LVL_UP_NEXT_TENS = 4,
|
|
LVL_UP_NEXT_ONES = 5,
|
|
LVL_UP_BONUS = 6,
|
|
};
|
|
|
|
BSS HudElemID LevelUpStatEmblemIDs[4];
|
|
BSS HudElemID LevelUpStatTextIDs[3][7];
|
|
BSS s32 D_8029FAE4; // unused?
|
|
BSS HudElemID LevelUpSpotlightID;
|
|
BSS s32 D_8029FAEC[23]; // unused?
|
|
|
|
BSS HudElemID LevelUpSelectTextID;
|
|
BSS s32 CelebrateSubstateTime;
|
|
BSS s32 D_8029FB50;
|
|
BSS s32 EndBattleRewardStep;
|
|
BSS s32 D_8029FB58[2]; // unused?
|
|
BSS s32 CantLevelUpStat[3];
|
|
BSS s32 EndBattleRewardTotal;
|
|
BSS s32 EndBattleRewardIncrement;
|
|
BSS s32 pendingLevelUps;
|
|
BSS s32 EndBattleRewardsDone;
|
|
BSS Evt* LevelUpScriptPtr;
|
|
BSS s32 LevelUpScriptID;
|
|
BSS s32 CelebrateStateTime;
|
|
BSS s32 LevelUpSelectTextOffsetX;
|
|
BSS s32 LevelUpSelectTextVelX;
|
|
|
|
extern EntityModelScript EMS_starpoint_starpoint;
|
|
extern EntityModelScript EMS_starpoint_starpoints;
|
|
extern EntityModelScript EMS_starpoint_digit_0;
|
|
extern EntityModelScript EMS_starpoint_digit_1;
|
|
extern EntityModelScript EMS_starpoint_digit_2;
|
|
extern EntityModelScript EMS_starpoint_digit_3;
|
|
extern EntityModelScript EMS_starpoint_digit_4;
|
|
extern EntityModelScript EMS_starpoint_digit_5;
|
|
extern EntityModelScript EMS_starpoint_digit_6;
|
|
extern EntityModelScript EMS_starpoint_digit_7;
|
|
extern EntityModelScript EMS_starpoint_digit_8;
|
|
extern EntityModelScript EMS_starpoint_digit_9;
|
|
extern EntityModelScript EMS_starpoint_dummy;
|
|
|
|
extern EntityModelScript EMS_level_up;
|
|
|
|
extern HudScript HES_level_up_flower;
|
|
extern HudScript HES_level_up_leaves;
|
|
extern HudScript HES_level_up_heart;
|
|
extern HudScript HES_level_up_heart_copy;
|
|
extern HudScript HES_level_up_badge;
|
|
|
|
extern HudScript HES_level_up_FP;
|
|
extern HudScript HES_level_up_HP;
|
|
extern HudScript HES_level_up_BP;
|
|
|
|
extern HudScript HES_level_up_green_digit_0;
|
|
extern HudScript HES_level_up_green_digit_1;
|
|
extern HudScript HES_level_up_green_digit_2;
|
|
extern HudScript HES_level_up_green_digit_3;
|
|
extern HudScript HES_level_up_green_digit_4;
|
|
extern HudScript HES_level_up_green_digit_5;
|
|
extern HudScript HES_level_up_green_digit_6;
|
|
extern HudScript HES_level_up_green_digit_7;
|
|
extern HudScript HES_level_up_green_digit_8;
|
|
extern HudScript HES_level_up_green_digit_9;
|
|
extern HudScript HES_level_up_red_digit_0;
|
|
extern HudScript HES_level_up_red_digit_1;
|
|
extern HudScript HES_level_up_red_digit_2;
|
|
extern HudScript HES_level_up_red_digit_3;
|
|
extern HudScript HES_level_up_red_digit_4;
|
|
extern HudScript HES_level_up_red_digit_5;
|
|
extern HudScript HES_level_up_red_digit_6;
|
|
extern HudScript HES_level_up_red_digit_7;
|
|
extern HudScript HES_level_up_red_digit_8;
|
|
extern HudScript HES_level_up_red_digit_9;
|
|
extern HudScript HES_level_up_blue_digit_0;
|
|
extern HudScript HES_level_up_blue_digit_1;
|
|
extern HudScript HES_level_up_blue_digit_2;
|
|
extern HudScript HES_level_up_blue_digit_3;
|
|
extern HudScript HES_level_up_blue_digit_4;
|
|
extern HudScript HES_level_up_blue_digit_5;
|
|
extern HudScript HES_level_up_blue_digit_6;
|
|
extern HudScript HES_level_up_blue_digit_7;
|
|
extern HudScript HES_level_up_blue_digit_8;
|
|
extern HudScript HES_level_up_blue_digit_9;
|
|
|
|
extern HudScript HES_level_up_small_green_digit_0;
|
|
extern HudScript HES_level_up_small_green_digit_1;
|
|
extern HudScript HES_level_up_small_green_digit_2;
|
|
extern HudScript HES_level_up_small_green_digit_3;
|
|
extern HudScript HES_level_up_small_green_digit_4;
|
|
extern HudScript HES_level_up_small_green_digit_5;
|
|
extern HudScript HES_level_up_small_green_digit_6;
|
|
extern HudScript HES_level_up_small_green_digit_7;
|
|
extern HudScript HES_level_up_small_green_digit_8;
|
|
extern HudScript HES_level_up_small_green_digit_9;
|
|
extern HudScript HES_level_up_small_green_arrow;
|
|
extern HudScript HES_level_up_small_red_digit_0;
|
|
extern HudScript HES_level_up_small_red_digit_1;
|
|
extern HudScript HES_level_up_small_red_digit_2;
|
|
extern HudScript HES_level_up_small_red_digit_3;
|
|
extern HudScript HES_level_up_small_red_digit_4;
|
|
extern HudScript HES_level_up_small_red_digit_5;
|
|
extern HudScript HES_level_up_small_red_digit_6;
|
|
extern HudScript HES_level_up_small_red_digit_7;
|
|
extern HudScript HES_level_up_small_red_digit_8;
|
|
extern HudScript HES_level_up_small_red_digit_9;
|
|
extern HudScript HES_level_up_small_red_arrow;
|
|
extern HudScript HES_level_up_small_blue_digit_0;
|
|
extern HudScript HES_level_up_small_blue_digit_1;
|
|
extern HudScript HES_level_up_small_blue_digit_2;
|
|
extern HudScript HES_level_up_small_blue_digit_3;
|
|
extern HudScript HES_level_up_small_blue_digit_4;
|
|
extern HudScript HES_level_up_small_blue_digit_5;
|
|
extern HudScript HES_level_up_small_blue_digit_6;
|
|
extern HudScript HES_level_up_small_blue_digit_7;
|
|
extern HudScript HES_level_up_small_blue_digit_8;
|
|
extern HudScript HES_level_up_small_blue_digit_9;
|
|
extern HudScript HES_level_up_small_blue_arrow;
|
|
|
|
extern HudScript HES_level_up_select_one_to_upgrade;
|
|
|
|
s32 bFadeToBlackAmt = 255;
|
|
|
|
s32 D_80284154[] = {
|
|
[PARTNER_NONE] = 0,
|
|
[PARTNER_GOOMBARIO] = ANIM_BattleGoombario_Walk,
|
|
[PARTNER_KOOPER] = ANIM_BattleKooper_Walk,
|
|
[PARTNER_BOMBETTE] = ANIM_BattleBombette_Walk,
|
|
[PARTNER_PARAKARRY] = ANIM_BattleParakarry_Walk,
|
|
[PARTNER_GOOMPA] = ANIM_Goompa_Walk,
|
|
[PARTNER_WATT] = ANIM_BattleWatt_Walk,
|
|
[PARTNER_SUSHIE] = ANIM_BattleSushie_Walk,
|
|
[PARTNER_LAKILESTER] = ANIM_BattleLakilester_Walk,
|
|
[PARTNER_BOW] = ANIM_BattleBow_Walk,
|
|
[PARTNER_GOOMBARIA] = 0,
|
|
[PARTNER_TWINK] = 0,
|
|
0
|
|
};
|
|
|
|
EntityModelScript* starpoint_digit_scripts[] = {
|
|
&EMS_starpoint_digit_0,
|
|
&EMS_starpoint_digit_1,
|
|
&EMS_starpoint_digit_2,
|
|
&EMS_starpoint_digit_3,
|
|
&EMS_starpoint_digit_4,
|
|
&EMS_starpoint_digit_5,
|
|
&EMS_starpoint_digit_6,
|
|
&EMS_starpoint_digit_7,
|
|
&EMS_starpoint_digit_8,
|
|
&EMS_starpoint_digit_9,
|
|
};
|
|
|
|
EntityModelScript* starpoint_space_script = &EMS_starpoint_dummy;
|
|
|
|
HudScript* levelup_stat_scripts[3] = {
|
|
&HES_level_up_FP,
|
|
&HES_level_up_HP,
|
|
&HES_level_up_BP,
|
|
};
|
|
|
|
HudScript* HES_LevelUpDigits[3][10] = {
|
|
{
|
|
&HES_level_up_green_digit_0,
|
|
&HES_level_up_green_digit_1,
|
|
&HES_level_up_green_digit_2,
|
|
&HES_level_up_green_digit_3,
|
|
&HES_level_up_green_digit_4,
|
|
&HES_level_up_green_digit_5,
|
|
&HES_level_up_green_digit_6,
|
|
&HES_level_up_green_digit_7,
|
|
&HES_level_up_green_digit_8,
|
|
&HES_level_up_green_digit_9,
|
|
},
|
|
{
|
|
&HES_level_up_red_digit_0,
|
|
&HES_level_up_red_digit_1,
|
|
&HES_level_up_red_digit_2,
|
|
&HES_level_up_red_digit_3,
|
|
&HES_level_up_red_digit_4,
|
|
&HES_level_up_red_digit_5,
|
|
&HES_level_up_red_digit_6,
|
|
&HES_level_up_red_digit_7,
|
|
&HES_level_up_red_digit_8,
|
|
&HES_level_up_red_digit_9,
|
|
},
|
|
{
|
|
&HES_level_up_blue_digit_0,
|
|
&HES_level_up_blue_digit_1,
|
|
&HES_level_up_blue_digit_2,
|
|
&HES_level_up_blue_digit_3,
|
|
&HES_level_up_blue_digit_4,
|
|
&HES_level_up_blue_digit_5,
|
|
&HES_level_up_blue_digit_6,
|
|
&HES_level_up_blue_digit_7,
|
|
&HES_level_up_blue_digit_8,
|
|
&HES_level_up_blue_digit_9,
|
|
},
|
|
};
|
|
|
|
HudScript* level_up_small_digit_scripts[3][10] = {
|
|
{
|
|
&HES_level_up_small_green_digit_0,
|
|
&HES_level_up_small_green_digit_1,
|
|
&HES_level_up_small_green_digit_2,
|
|
&HES_level_up_small_green_digit_3,
|
|
&HES_level_up_small_green_digit_4,
|
|
&HES_level_up_small_green_digit_5,
|
|
&HES_level_up_small_green_digit_6,
|
|
&HES_level_up_small_green_digit_7,
|
|
&HES_level_up_small_green_digit_8,
|
|
&HES_level_up_small_green_digit_9,
|
|
},
|
|
{
|
|
&HES_level_up_small_red_digit_0,
|
|
&HES_level_up_small_red_digit_1,
|
|
&HES_level_up_small_red_digit_2,
|
|
&HES_level_up_small_red_digit_3,
|
|
&HES_level_up_small_red_digit_4,
|
|
&HES_level_up_small_red_digit_5,
|
|
&HES_level_up_small_red_digit_6,
|
|
&HES_level_up_small_red_digit_7,
|
|
&HES_level_up_small_red_digit_8,
|
|
&HES_level_up_small_red_digit_9,
|
|
},
|
|
{
|
|
&HES_level_up_small_blue_digit_0,
|
|
&HES_level_up_small_blue_digit_1,
|
|
&HES_level_up_small_blue_digit_2,
|
|
&HES_level_up_small_blue_digit_3,
|
|
&HES_level_up_small_blue_digit_4,
|
|
&HES_level_up_small_blue_digit_5,
|
|
&HES_level_up_small_blue_digit_6,
|
|
&HES_level_up_small_blue_digit_7,
|
|
&HES_level_up_small_blue_digit_8,
|
|
&HES_level_up_small_blue_digit_9,
|
|
},
|
|
};
|
|
|
|
s32* virtual_entity_get_by_index(s32);
|
|
|
|
void draw_content_level_up_textbox(void* data, s32 posX, s32 posY);
|
|
void draw_content_cant_increase_popup(void* data, s32 posX, s32 posY);
|
|
|
|
API_CALLABLE(GetRemainingStarPointsReward) {
|
|
script->varTable[0] = (s8)gBattleStatus.totalStarPoints;
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(GetStarPointDigitScripts) {
|
|
s32 levelUp = FALSE;
|
|
|
|
script->varTable[10] = gBattleStatus.totalStarPoints / 100; // star points in hundreds (levels to gain)
|
|
script->varTable[11] = (gBattleStatus.totalStarPoints % 100) / 10; // star points in tens
|
|
script->varTable[12] = gBattleStatus.totalStarPoints % 10; // star points in ones
|
|
|
|
if (script->varTable[10] > 0) {
|
|
script->varTablePtr[10] = starpoint_digit_scripts[script->varTable[10]];
|
|
levelUp = TRUE;
|
|
} else {
|
|
script->varTablePtr[10] = starpoint_space_script;
|
|
}
|
|
|
|
if ((script->varTable[11] > 0) || levelUp) {
|
|
script->varTablePtr[11] = starpoint_digit_scripts[script->varTable[11]];
|
|
} else {
|
|
script->varTablePtr[11] = starpoint_space_script;
|
|
}
|
|
|
|
script->varTablePtr[12] = starpoint_digit_scripts[script->varTable[12]];
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(AwaitBattleRewardsDone) {
|
|
if (EndBattleRewardsDone) {
|
|
return ApiStatus_DONE2;
|
|
} else {
|
|
return ApiStatus_BLOCK;
|
|
}
|
|
}
|
|
|
|
API_CALLABLE(InitStarPointModelFlags) {
|
|
EntityModel* model;
|
|
|
|
model = get_entity_model(*virtual_entity_get_by_index(script->varTable[6]));
|
|
model->flags &= ~MODEL_FLAGS_MASK_FFF0 ;
|
|
model->flags |= MODEL_FLAG_TRANSFORM_GROUP_MEMBER;
|
|
model = get_entity_model(*virtual_entity_get_by_index(script->varTable[7]));
|
|
model->flags &= ~MODEL_FLAGS_MASK_FFF0 ;
|
|
model->flags |= MODEL_FLAG_TRANSFORM_GROUP_MEMBER;
|
|
model = get_entity_model(*virtual_entity_get_by_index(script->varTable[8]));
|
|
model->flags &= ~MODEL_FLAGS_MASK_FFF0 ;
|
|
model->flags |= MODEL_FLAG_TRANSFORM_GROUP_MEMBER;
|
|
model = get_entity_model(*virtual_entity_get_by_index(script->varTable[9]));
|
|
model->flags &= ~MODEL_FLAGS_MASK_FFF0 ;
|
|
model->flags |= MODEL_FLAG_TRANSFORM_GROUP_MEMBER;
|
|
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(InitLevelUpModelFlags) {
|
|
EntityModel* model = get_entity_model(*virtual_entity_get_by_index(script->varTable[9]));
|
|
model->flags &= ~MODEL_FLAGS_MASK_FFF0;
|
|
model->flags |= MODEL_FLAG_TRANSFORM_GROUP_MEMBER;
|
|
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
API_CALLABLE(MakeLevelUpConfetti) {
|
|
fx_confetti(3, 0.0f, 100.0f, 0.0f, 1.0f, 120);
|
|
return ApiStatus_DONE2;
|
|
}
|
|
|
|
EvtScript EVS_ShowStarpoints = {
|
|
EVT_SET(LVarF, 0)
|
|
EVT_CALL(GetRemainingStarPointsReward)
|
|
EVT_IF_EQ(LVar0, 0)
|
|
EVT_RETURN
|
|
EVT_END_IF
|
|
EVT_IF_LT(LVar0, 2)
|
|
EVT_CALL(CreateVirtualEntity, LVar6, EVT_PTR(EMS_starpoint_starpoint))
|
|
EVT_CALL(SetVirtualEntityPosition, LVar6, -278, 68, 70)
|
|
EVT_CALL(SetVirtualEntityScale, LVar6, EVT_FLOAT(0.5), EVT_FLOAT(0.5), EVT_FLOAT(0.5))
|
|
EVT_ELSE
|
|
EVT_CALL(CreateVirtualEntity, LVar6, EVT_PTR(EMS_starpoint_starpoints))
|
|
EVT_CALL(SetVirtualEntityPosition, LVar6, -278, 68, 70)
|
|
EVT_CALL(SetVirtualEntityScale, LVar6, EVT_FLOAT(0.5), EVT_FLOAT(0.5), EVT_FLOAT(0.5))
|
|
EVT_SET(LFlag0, TRUE)
|
|
EVT_END_IF
|
|
EVT_SWITCH(LVar0)
|
|
EVT_CASE_GT(99)
|
|
EVT_SET(LVarF, 3)
|
|
EVT_CASE_GT(9)
|
|
EVT_SET(LVarF, 2)
|
|
EVT_CASE_DEFAULT
|
|
EVT_SET(LVarF, 1)
|
|
EVT_END_SWITCH
|
|
EVT_CALL(GetStarPointDigitScripts)
|
|
EVT_CALL(CreateVirtualEntity, LVar7, LVarA)
|
|
EVT_CALL(SetVirtualEntityPosition, LVar7, -353, 68, 70)
|
|
EVT_CALL(SetVirtualEntityScale, LVar7, EVT_FLOAT(0.5), EVT_FLOAT(0.5), EVT_FLOAT(0.5))
|
|
EVT_CALL(CreateVirtualEntity, LVar8, LVarB)
|
|
EVT_CALL(SetVirtualEntityPosition, LVar8, -338, 68, 70)
|
|
EVT_CALL(SetVirtualEntityScale, LVar8, EVT_FLOAT(0.5), EVT_FLOAT(0.5), EVT_FLOAT(0.5))
|
|
EVT_CALL(CreateVirtualEntity, LVar9, LVarC)
|
|
EVT_CALL(SetVirtualEntityPosition, LVar9, -323, 68, 70)
|
|
EVT_CALL(SetVirtualEntityScale, LVar9, EVT_FLOAT(0.5), EVT_FLOAT(0.5), EVT_FLOAT(0.5))
|
|
EVT_CALL(InitStarPointModelFlags)
|
|
EVT_SWITCH(LVarF)
|
|
EVT_CASE_EQ(3)
|
|
EVT_SET(LVar0, -197)
|
|
EVT_CASE_EQ(2)
|
|
EVT_SET(LVar0, -204)
|
|
EVT_CASE_EQ(1)
|
|
EVT_SET(LVar0, -211)
|
|
EVT_END_SWITCH
|
|
EVT_LOOP(10)
|
|
EVT_ADD(LVar0, 20)
|
|
EVT_SET(LVar1, LVar0)
|
|
EVT_ADD(LVar1, -78)
|
|
EVT_CALL(SetVirtualEntityPosition, LVar6, LVar1, 68, 70)
|
|
EVT_SET(LVar1, LVar0)
|
|
EVT_ADD(LVar1, -146)
|
|
EVT_CALL(SetVirtualEntityPosition, LVar7, LVar1, 68, 70)
|
|
EVT_SET(LVar1, LVar0)
|
|
EVT_ADD(LVar1, -131)
|
|
EVT_CALL(SetVirtualEntityPosition, LVar8, LVar1, 68, 70)
|
|
EVT_SET(LVar1, LVar0)
|
|
EVT_ADD(LVar1, -116)
|
|
EVT_CALL(SetVirtualEntityPosition, LVar9, LVar1, 68, 70)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_CALL(AwaitBattleRewardsDone)
|
|
EVT_SWITCH(LVarF)
|
|
EVT_CASE_EQ(3)
|
|
EVT_SET(LVar0, 3)
|
|
EVT_CASE_EQ(2)
|
|
EVT_SET(LVar0, -4)
|
|
EVT_CASE_EQ(1)
|
|
EVT_SET(LVar0, -11)
|
|
EVT_END_SWITCH
|
|
EVT_LOOP(10)
|
|
EVT_ADD(LVar0, 20)
|
|
EVT_SET(LVar1, LVar0)
|
|
EVT_ADD(LVar1, -78)
|
|
EVT_CALL(SetVirtualEntityPosition, LVar6, LVar1, 68, 70)
|
|
EVT_SET(LVar1, LVar0)
|
|
EVT_ADD(LVar1, -154)
|
|
EVT_CALL(SetVirtualEntityPosition, LVar7, LVar1, 68, 70)
|
|
EVT_SET(LVar1, LVar0)
|
|
EVT_ADD(LVar1, -139)
|
|
EVT_CALL(SetVirtualEntityPosition, LVar8, LVar1, 68, 70)
|
|
EVT_SET(LVar1, LVar0)
|
|
EVT_ADD(LVar1, -124)
|
|
EVT_CALL(SetVirtualEntityPosition, LVar9, LVar1, 68, 70)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_CALL(DeleteVirtualEntity, LVar6)
|
|
EVT_CALL(DeleteVirtualEntity, LVar7)
|
|
EVT_CALL(DeleteVirtualEntity, LVar8)
|
|
EVT_CALL(DeleteVirtualEntity, LVar9)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
EvtScript EVS_ShowLevelUp = {
|
|
EVT_CALL(CreateVirtualEntity, LVar9, EVT_PTR(EMS_level_up))
|
|
EVT_CALL(SetVirtualEntityPosition, LVar9, 0, 210, 70)
|
|
EVT_CALL(InitLevelUpModelFlags)
|
|
EVT_CHILD_THREAD
|
|
EVT_WAIT(4)
|
|
EVT_CALL(MakeLevelUpConfetti)
|
|
EVT_END_CHILD_THREAD
|
|
EVT_THREAD
|
|
EVT_WAIT(8)
|
|
EVT_CALL(ShakeCam, 1, 0, 5, EVT_FLOAT(3.0))
|
|
EVT_CALL(ShakeCam, 1, 0, 3, EVT_FLOAT(2.25))
|
|
EVT_CALL(ShakeCam, 1, 0, 4, EVT_FLOAT(1.2))
|
|
EVT_CALL(ShakeCam, 1, 0, 6, EVT_FLOAT(0.45))
|
|
EVT_CALL(ShakeCam, 1, 0, 8, EVT_FLOAT(0.15))
|
|
EVT_END_THREAD
|
|
EVT_THREAD
|
|
EVT_SET(LVar0, 210)
|
|
EVT_LOOP(10)
|
|
EVT_SUB(LVar0, 10)
|
|
EVT_CALL(SetVirtualEntityPosition, LVar9, 0, LVar0, 70)
|
|
EVT_WAIT(1)
|
|
EVT_END_LOOP
|
|
EVT_END_THREAD
|
|
EVT_WAIT(8)
|
|
EVT_RETURN
|
|
EVT_END
|
|
};
|
|
|
|
void btl_state_update_celebration(void) {
|
|
BattleStatus* battleStatus = &gBattleStatus;
|
|
PlayerData* playerData = &gPlayerData;
|
|
Actor* player = battleStatus->playerActor;
|
|
Actor* partner = battleStatus->partnerActor;
|
|
s8 currentSubmenu;
|
|
s32 newSubmenu;
|
|
s32 id;
|
|
s32 x, y, z;
|
|
s32 width;
|
|
s32 itemHudElemID;
|
|
|
|
Evt* takeTurnScript;
|
|
Evt* script;
|
|
|
|
s32 tensDigit;
|
|
s32 onesDigit;
|
|
|
|
s32 deltaSP;
|
|
s32 prevSP;
|
|
|
|
s32 i;
|
|
s32 j;
|
|
|
|
HudScript* new_var;
|
|
|
|
switch (gBattleSubState) {
|
|
case BTL_SUBSTATE_CELEBRATE_INIT:
|
|
if (battleStatus->pendingStarPoints <= 0) {
|
|
player->flags &= ~ACTOR_FLAG_8000000;
|
|
EndBattleRewardTotal = battleStatus->totalStarPoints * 100;
|
|
pendingLevelUps = 0;
|
|
D_8029FB50 = 0;
|
|
bFadeToBlackAmt = 0;
|
|
LevelUpSelectTextOffsetX = 0;
|
|
LevelUpSelectTextVelX = 0;
|
|
sfx_play_sound(SOUND_D4);
|
|
|
|
prevSP = playerData->starPoints + battleStatus->totalStarPoints;
|
|
if (prevSP > 99) {
|
|
bgm_set_song(0, SONG_LEVEL_UP, 0, 250, 8);
|
|
} else {
|
|
bgm_set_song(0, SONG_BATTLE_END, 0, 250, 8);
|
|
}
|
|
|
|
CelebrateStateTime = 0;
|
|
btl_cam_use_preset(BTL_CAM_VICTORY);
|
|
EndBattleRewardStep = 0;
|
|
CelebrateSubstateTime = 1;
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_LOAD_STAR_POINTS;
|
|
gBattleStatus.flags2 |= BS_FLAGS2_1;
|
|
}
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LOAD_STAR_POINTS:
|
|
if (CelebrateSubstateTime != 0) {
|
|
CelebrateSubstateTime--;
|
|
} else if (btl_cam_is_moving_done()) {
|
|
dma_copy(starpoint_ROM_START, starpoint_ROM_END, starpoint_VRAM);
|
|
script = start_script(&EVS_ShowStarpoints, EVT_PRIORITY_A, 0);
|
|
EndBattleRewardsDone = FALSE;
|
|
// divide reward into 20 increments
|
|
EndBattleRewardStep = 20;
|
|
EndBattleRewardIncrement = EndBattleRewardTotal / EndBattleRewardStep;
|
|
player->takeTurnScript = script;
|
|
CelebrateSubstateTime = 1;
|
|
player->takeTurnScriptID = script->id;
|
|
script->owner1.actorID = ACTOR_PLAYER;
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_TALLY_STAR_POINTS;
|
|
}
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_TALLY_STAR_POINTS:
|
|
if (CelebrateSubstateTime == 0) {
|
|
if (battleStatus->totalStarPoints != 0) {
|
|
// determine the remaining star point reward after this step and give the difference to the player
|
|
EndBattleRewardTotal -= EndBattleRewardIncrement;
|
|
prevSP = battleStatus->totalStarPoints;
|
|
battleStatus->totalStarPoints = EndBattleRewardTotal / 100;
|
|
deltaSP = prevSP - battleStatus->totalStarPoints;
|
|
if (deltaSP > 0) {
|
|
sfx_play_sound(SOUND_215);
|
|
}
|
|
|
|
playerData->starPoints += deltaSP;
|
|
bFadeToBlackAmt++; // ??
|
|
if (EndBattleRewardStep == 0 && battleStatus->totalStarPoints != 0) {
|
|
playerData->starPoints++;
|
|
}
|
|
}
|
|
if (playerData->level >= 27) {
|
|
playerData->starPoints = 0;
|
|
}
|
|
if (playerData->starPoints >= 100) {
|
|
pendingLevelUps = 1;
|
|
playerData->starPoints -= 100;
|
|
}
|
|
if (playerData->level + pendingLevelUps == 27) {
|
|
playerData->starPoints = 0;
|
|
}
|
|
if (battleStatus->totalStarPoints == 0) {
|
|
if (EndBattleRewardStep == 0) {
|
|
EndBattleRewardsDone = TRUE;
|
|
player->flags &= ~(ACTOR_FLAG_4000000 | ACTOR_FLAG_8000000);
|
|
if (partner != NULL) {
|
|
partner->flags &= ~(ACTOR_FLAG_4000000 | ACTOR_FLAG_8000000);
|
|
}
|
|
battleStatus->battlePhase = PHASE_CELEBRATE;
|
|
script = start_script(&EVS_Mario_HandlePhase, EVT_PRIORITY_A, 0);
|
|
player->takeTurnScript = script;
|
|
player->takeTurnScriptID = script->id;
|
|
script->owner1.actorID = ACTOR_PLAYER;
|
|
if (partner != NULL) {
|
|
script = start_script(partner->takeTurnSource, EVT_PRIORITY_A, 0);
|
|
partner->takeTurnScript = script;
|
|
partner->takeTurnScriptID = script->id;
|
|
script->owner1.actorID = ACTOR_PARTNER;
|
|
}
|
|
CelebrateSubstateTime = 40;
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_POST_STAR_POINTS;
|
|
} else {
|
|
EndBattleRewardStep--;
|
|
}
|
|
}
|
|
} else {
|
|
CelebrateSubstateTime--;
|
|
}
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_POST_STAR_POINTS:
|
|
if (CelebrateSubstateTime == 0) {
|
|
if (pendingLevelUps == 0) {
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_SKIPPABLE_END_DELAY;
|
|
} else {
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_LEVEL_UP_LOAD;
|
|
}
|
|
break;
|
|
}
|
|
CelebrateSubstateTime--;
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_LOAD:
|
|
if (CelebrateStateTime >= 99) {
|
|
playerData->level++;
|
|
btl_cam_use_preset(BTL_CAM_DEFAULT);
|
|
btl_cam_move(5);
|
|
dma_copy(level_up_ROM_START, level_up_ROM_END, level_up_VRAM);
|
|
sfx_play_sound(SOUND_80000008);
|
|
CelebrateStateTime = 0;
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_LEVEL_UP_BEGIN;
|
|
}
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_BEGIN:
|
|
LevelUpScriptPtr = start_script(&EVS_ShowLevelUp, EVT_PRIORITY_A, 0);
|
|
LevelUpScriptID = LevelUpScriptPtr->id;
|
|
CelebrateSubstateTime = 25;
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_LEVEL_UP_CREATE_HUD;
|
|
mdl_set_all_fog_mode(FOG_MODE_1);
|
|
*gBackgroundFogModePtr = FOG_MODE_1;
|
|
set_background_color_blend(0, 0, 0, 0);
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_CREATE_HUD:
|
|
if (CelebrateSubstateTime == 18) {
|
|
playerData->curHP = playerData->curMaxHP;
|
|
playerData->curFP = playerData->curMaxFP;
|
|
x = player->currentPos.x + 0.0f;
|
|
y = player->currentPos.y + 35.0f;
|
|
z = player->currentPos.z;
|
|
fx_recover(0, x, y, z, playerData->curHP);
|
|
x = player->currentPos.x + 20.0f;
|
|
y = player->currentPos.y + 25.0f;
|
|
z = player->currentPos.z;
|
|
fx_recover(1, x, y, z, playerData->curFP);
|
|
playerData->specialBarsFilled = playerData->maxStarPower * 256;
|
|
}
|
|
|
|
if (CelebrateSubstateTime != 0) {
|
|
CelebrateSubstateTime--;
|
|
if (CelebrateSubstateTime < 10) {
|
|
set_background_color_blend(0, 0, 0, ((10 - CelebrateSubstateTime) * 16) & 0xF0);
|
|
}
|
|
} else {
|
|
id = hud_element_create(&HES_level_up_heart);
|
|
LevelUpStatEmblemIDs[0] = id;
|
|
hud_element_set_render_pos(id, 310, 140);
|
|
hud_element_set_flags(id, HUD_ELEMENT_FLAG_80);
|
|
|
|
id = hud_element_create(&HES_level_up_flower);
|
|
LevelUpStatEmblemIDs[1] = id;
|
|
hud_element_set_render_pos(id, 158, 340);
|
|
hud_element_set_flags(id, HUD_ELEMENT_FLAG_80);
|
|
|
|
id = hud_element_create(&HES_level_up_leaves);
|
|
LevelUpStatEmblemIDs[3] = id;
|
|
hud_element_set_render_pos(id, 158, 340);
|
|
hud_element_set_flags(id, HUD_ELEMENT_FLAG_80);
|
|
|
|
id = hud_element_create(&HES_level_up_badge);
|
|
LevelUpStatEmblemIDs[2] = id;
|
|
hud_element_set_render_pos(id, 6, 140);
|
|
hud_element_set_flags(id, HUD_ELEMENT_FLAG_80);
|
|
|
|
id = hud_element_create(levelup_stat_scripts[0]);
|
|
LevelUpStatTextIDs[LVL_UP_FP][LVL_UP_TITLE] = id;
|
|
hud_element_set_render_pos(id, 160, 317);
|
|
hud_element_set_flags(id, HUD_ELEMENT_FLAG_80);
|
|
|
|
for (i = 1; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_FP]); i++) {
|
|
id = hud_element_create(HES_LevelUpDigits[LVL_UP_FP][0]);
|
|
LevelUpStatTextIDs[LVL_UP_FP][i] = id;
|
|
hud_element_set_render_pos(id, 160, 317);
|
|
hud_element_set_flags(id, HUD_ELEMENT_FLAG_80 | HUD_ELEMENT_FLAG_DISABLED);
|
|
}
|
|
|
|
id = hud_element_create(levelup_stat_scripts[1]);
|
|
LevelUpStatTextIDs[LVL_UP_HP][LVL_UP_TITLE] = id;
|
|
hud_element_set_render_pos(id, 312, 117);
|
|
hud_element_set_flags(id, HUD_ELEMENT_FLAG_80);
|
|
|
|
for (i = 1; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_HP]); i++) {
|
|
id = hud_element_create(HES_LevelUpDigits[LVL_UP_HP][0]);
|
|
LevelUpStatTextIDs[LVL_UP_HP][i] = id;
|
|
hud_element_set_render_pos(id, 312, 117);
|
|
hud_element_set_flags(id, HUD_ELEMENT_FLAG_80 | HUD_ELEMENT_FLAG_DISABLED);
|
|
}
|
|
|
|
id = hud_element_create(levelup_stat_scripts[2]);
|
|
LevelUpStatTextIDs[LVL_UP_BP][LVL_UP_TITLE] = id;
|
|
hud_element_set_render_pos(id, 8, 117);
|
|
hud_element_set_flags(id, HUD_ELEMENT_FLAG_80);
|
|
|
|
for (i = 1; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_BP]); i++) {
|
|
id = hud_element_create(HES_LevelUpDigits[LVL_UP_BP][0]);
|
|
LevelUpStatTextIDs[LVL_UP_BP][i] = id;
|
|
hud_element_set_render_pos(id, 8, 117);
|
|
hud_element_set_flags(id, HUD_ELEMENT_FLAG_80 | HUD_ELEMENT_FLAG_DISABLED);
|
|
}
|
|
|
|
CantLevelUpStat[MENU_HP] = FALSE;
|
|
CantLevelUpStat[MENU_FP] = FALSE;
|
|
CantLevelUpStat[MENU_BP] = FALSE;
|
|
|
|
if (playerData->hardMaxFP != 50) {
|
|
// current FP
|
|
tensDigit = playerData->curMaxFP / 10;
|
|
onesDigit = playerData->curMaxFP % 10;
|
|
id = LevelUpStatTextIDs[LVL_UP_FP][LVL_UP_CUR_TENS];
|
|
hud_element_set_script(id, level_up_small_digit_scripts[LVL_UP_FP][tensDigit]);
|
|
if (tensDigit != 0) {
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
}
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x - 14, y + 46);
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_FP][LVL_UP_CUR_ONES];
|
|
hud_element_set_script(id, level_up_small_digit_scripts[LVL_UP_FP][onesDigit]);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x - 8, y + 46);
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_FP][LVL_UP_ARROW];
|
|
hud_element_set_script(id, &HES_level_up_small_green_arrow);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x - 3, y + 46);
|
|
|
|
// upgraded FP
|
|
tensDigit = (playerData->curMaxFP + 5) / 10;
|
|
onesDigit = (playerData->curMaxFP + 5) % 10;
|
|
id = LevelUpStatTextIDs[LVL_UP_FP][LVL_UP_NEXT_TENS];
|
|
hud_element_set_script(id, HES_LevelUpDigits[LVL_UP_FP][tensDigit]);
|
|
if (tensDigit != 0) {
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
}
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x + 3, y + 46);
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_FP][LVL_UP_NEXT_ONES];
|
|
hud_element_set_script(id, HES_LevelUpDigits[LVL_UP_FP][onesDigit]);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x + 10, y + 46);
|
|
} else {
|
|
// upgraded FP only
|
|
id = LevelUpStatTextIDs[LVL_UP_FP][LVL_UP_NEXT_TENS];
|
|
tensDigit = playerData->curMaxFP / 10;
|
|
onesDigit = playerData->curMaxFP % 10;
|
|
hud_element_set_script(id, HES_LevelUpDigits[LVL_UP_FP][tensDigit]);
|
|
if (tensDigit != 0) {
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
}
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x - 6, y + 46);
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_FP][LVL_UP_NEXT_ONES];
|
|
hud_element_set_script(id, HES_LevelUpDigits[LVL_UP_FP][onesDigit]);
|
|
hud_element_clear_flags(id, 2);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x + 2, y + 46);
|
|
CantLevelUpStat[MENU_FP] = TRUE;
|
|
}
|
|
|
|
if (is_ability_active(ABILITY_FP_PLUS)) {
|
|
id = LevelUpStatTextIDs[LVL_UP_FP][LVL_UP_BONUS];
|
|
itemHudElemID = gItemTable[ITEM_FP_PLUS_A].hudElemID;
|
|
hud_element_set_script(id, gItemHudScripts[itemHudElemID].enabled);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_set_scale(id, 0.5f);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x + 17, y + 46);
|
|
}
|
|
|
|
if (playerData->hardMaxHP != 50) {
|
|
// current HP
|
|
tensDigit = playerData->curMaxHP / 10;
|
|
onesDigit = playerData->curMaxHP % 10;
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_HP][LVL_UP_CUR_TENS];
|
|
hud_element_set_script(id, level_up_small_digit_scripts[LVL_UP_HP][tensDigit]);
|
|
if (tensDigit != 0) {
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
}
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x - 14, y + 46);
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_HP][LVL_UP_CUR_ONES];
|
|
hud_element_set_script(id, level_up_small_digit_scripts[LVL_UP_HP][onesDigit]);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x - 8, y + 46);
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_HP][LVL_UP_ARROW];
|
|
hud_element_set_script(id, &HES_level_up_small_red_arrow);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x - 3, y + 46);
|
|
|
|
tensDigit = (playerData->curMaxHP + 5) / 10;
|
|
onesDigit = (playerData->curMaxHP + 5) % 10;
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_HP][LVL_UP_NEXT_TENS];
|
|
hud_element_set_script(id, HES_LevelUpDigits[LVL_UP_HP][tensDigit]);
|
|
if (tensDigit != 0) {
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
}
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x + 3, y + 46);
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_HP][LVL_UP_NEXT_ONES];
|
|
hud_element_set_script(id, HES_LevelUpDigits[LVL_UP_HP][onesDigit]);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x + 10, y + 46);
|
|
} else {
|
|
tensDigit = playerData->curMaxHP / 10;
|
|
onesDigit = playerData->curMaxHP % 10;
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_HP][LVL_UP_NEXT_TENS];
|
|
hud_element_set_script(id, HES_LevelUpDigits[LVL_UP_HP][tensDigit]);
|
|
if (tensDigit != 0) {
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
}
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x - 6, y + 46);
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_HP][LVL_UP_NEXT_ONES];
|
|
hud_element_set_script(id, HES_LevelUpDigits[LVL_UP_HP][onesDigit]);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x + 2, y + 46);
|
|
CantLevelUpStat[MENU_HP] = TRUE;
|
|
}
|
|
|
|
if (is_ability_active(ABILITY_HP_PLUS)) {
|
|
id = LevelUpStatTextIDs[LVL_UP_HP][LVL_UP_BONUS];
|
|
itemHudElemID = gItemTable[ITEM_HP_PLUS_A].hudElemID;
|
|
hud_element_set_script(id, gItemHudScripts[itemHudElemID].enabled);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_set_scale(id, 0.5f);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x + 17, y + 46);
|
|
}
|
|
|
|
if (playerData->maxBP != 30) {
|
|
tensDigit = playerData->maxBP / 10;
|
|
onesDigit = playerData->maxBP % 10;
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_BP][LVL_UP_CUR_TENS];
|
|
hud_element_set_script(id, level_up_small_digit_scripts[LVL_UP_BP][tensDigit]);
|
|
if (tensDigit != 0) {
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
}
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x - 14, y + 46);
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_BP][LVL_UP_CUR_ONES];
|
|
hud_element_set_script(id, level_up_small_digit_scripts[LVL_UP_BP][onesDigit]);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x - 8, y + 46);
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_BP][LVL_UP_ARROW];
|
|
hud_element_set_script(id, &HES_level_up_small_blue_arrow);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x - 3, y + 46);
|
|
|
|
tensDigit = (playerData->maxBP + 3) / 10;
|
|
onesDigit = (playerData->maxBP + 3) % 10;
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_BP][LVL_UP_NEXT_TENS];
|
|
hud_element_set_script(id, HES_LevelUpDigits[LVL_UP_BP][tensDigit]);
|
|
if (tensDigit != 0) {
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
}
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x + 3, y + 46);
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_BP][LVL_UP_NEXT_ONES];
|
|
hud_element_set_script(id, HES_LevelUpDigits[LVL_UP_BP][onesDigit]);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x + 10, y + 46);
|
|
} else {
|
|
id = LevelUpStatTextIDs[LVL_UP_BP][LVL_UP_NEXT_TENS];
|
|
hud_element_set_script(id, HES_LevelUpDigits[LVL_UP_BP][3]);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x - 6, y + 46);
|
|
|
|
id = LevelUpStatTextIDs[LVL_UP_BP][LVL_UP_NEXT_ONES];
|
|
hud_element_set_script(id, HES_LevelUpDigits[LVL_UP_BP][0]);
|
|
hud_element_clear_flags(id, HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
hud_element_set_render_pos(id, x + 2, y + 46);
|
|
CantLevelUpStat[MENU_BP] = TRUE;
|
|
}
|
|
|
|
id = LevelUpSpotlightID = hud_element_create(&HES_ProjectorBeam);
|
|
hud_element_create_transform_B(id);
|
|
hud_element_set_render_pos(id, 156, 13);
|
|
hud_element_set_tint(id, 255, 255, 255);
|
|
hud_element_set_transform_rotation_pivot(id, 0, -35);
|
|
hud_element_set_transform_rotation(id, 0.0f, 0.0f, 180.0f);
|
|
hud_element_set_transform_scale(id, 1.0f, 1.5f, 1.0f);
|
|
hud_element_set_alpha(id, 200);
|
|
hud_element_set_flags(id, HUD_ELEMENT_FLAG_FILTER_TEX | HUD_ELEMENT_FLAG_80);
|
|
|
|
id = LevelUpSelectTextID = hud_element_create(&HES_level_up_select_one_to_upgrade);
|
|
hud_element_set_render_pos(id, 0, 0);
|
|
hud_element_set_flags(id, HUD_ELEMENT_FLAG_80);
|
|
battleStatus->currentSubmenu = 1;
|
|
|
|
CelebrateSubstateTime = 10;
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_LEVEL_UP_SHOW_HUD;
|
|
}
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_SHOW_HUD:
|
|
id = LevelUpStatEmblemIDs[0];
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
x -= 20;
|
|
hud_element_set_render_pos(id, x, y);
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_HP]); i++) {
|
|
id = LevelUpStatTextIDs[LVL_UP_HP][i];
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
x -= 20;
|
|
hud_element_set_render_pos(id, x, y);
|
|
}
|
|
|
|
id = LevelUpStatEmblemIDs[1];
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
y -= 20;
|
|
hud_element_set_render_pos(id, x, y);
|
|
|
|
id = LevelUpStatEmblemIDs[3];
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
y -= 20;
|
|
hud_element_set_render_pos(id, x, y);
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_FP]); i++) {
|
|
id = LevelUpStatTextIDs[LVL_UP_FP][i];
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
y -= 20;
|
|
hud_element_set_render_pos(id, x, y);
|
|
}
|
|
|
|
id = LevelUpStatEmblemIDs[2];
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
x += 20;
|
|
hud_element_set_render_pos(id, x, y);
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_BP]); i++) {
|
|
id = LevelUpStatTextIDs[LVL_UP_BP][i];
|
|
hud_element_get_render_pos(id, &x, &y);
|
|
x += 20;
|
|
hud_element_set_render_pos(id, x, y);
|
|
}
|
|
|
|
CelebrateSubstateTime--;
|
|
if (CelebrateSubstateTime == 0) {
|
|
hud_element_set_tint(id, 128, 128, 128);
|
|
x = 20;
|
|
y = 186;
|
|
set_window_properties(WINDOW_ID_8, 20, 186, 280, 32, WINDOW_PRIORITY_20, draw_content_level_up_textbox, NULL, -1);
|
|
set_window_update(WINDOW_ID_8, WINDOW_UPDATE_SHOW);
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_LEVEL_UP_CHOOSE;
|
|
}
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_CHOOSE:
|
|
if (battleStatus->currentButtonsPressed & BUTTON_A) {
|
|
if (!CantLevelUpStat[battleStatus->currentSubmenu]) {
|
|
sfx_play_sound(SOUND_MENU_NEXT);
|
|
sfx_play_sound(SOUND_349 | SOUND_ID_TRIGGER_CHANGE_SOUND);
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_LEVEL_UP_UPGRADE;
|
|
} else {
|
|
sfx_play_sound(SOUND_MENU_ERROR);
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_LEVEL_UP_INVALID;
|
|
}
|
|
break;
|
|
}
|
|
|
|
newSubmenu = currentSubmenu = battleStatus->currentSubmenu;
|
|
if (battleStatus->currentButtonsHeld & BUTTON_STICK_LEFT) {
|
|
newSubmenu--;
|
|
}
|
|
if (battleStatus->currentButtonsHeld & BUTTON_STICK_RIGHT) {
|
|
newSubmenu++;
|
|
}
|
|
if (newSubmenu < 0) {
|
|
newSubmenu = 0;
|
|
}
|
|
if (newSubmenu > 2) {
|
|
newSubmenu = 2;
|
|
}
|
|
if (newSubmenu != currentSubmenu) {
|
|
sfx_play_sound(SOUND_MENU_CHANGE_SELECTION);
|
|
battleStatus->currentSubmenu = newSubmenu;
|
|
}
|
|
|
|
CelebrateStateTime++;
|
|
if (CelebrateStateTime > 100) {
|
|
fx_confetti(3, 0.0f, 100.0f, 0.0f, 1.0f, 120);
|
|
CelebrateStateTime = 0;
|
|
}
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_UPGRADE:
|
|
hud_element_free(LevelUpSpotlightID);
|
|
set_window_update(WINDOW_ID_8, WINDOW_UPDATE_HIDE);
|
|
|
|
switch (battleStatus->currentSubmenu) {
|
|
case 0:
|
|
playerData->hardMaxHP += 5;
|
|
playerData->curMaxHP += 5;
|
|
playerData->curHP += 5;
|
|
if (playerData->curMaxHP > 75) {
|
|
playerData->curMaxHP = 75;
|
|
}
|
|
if (playerData->curHP > playerData->curMaxHP) {
|
|
playerData->curHP = playerData->curMaxHP;
|
|
}
|
|
player->maxHP = playerData->curMaxHP;
|
|
player->currentHP = playerData->curHP;
|
|
break;
|
|
case 1:
|
|
playerData->hardMaxFP += 5;
|
|
playerData->curMaxFP += 5;
|
|
playerData->curFP += 5;
|
|
if (playerData->curMaxFP > 75) {
|
|
playerData->curMaxFP = 75;
|
|
}
|
|
if (playerData->curFP > playerData->curMaxFP) {
|
|
playerData->curFP = playerData->curMaxFP;
|
|
}
|
|
break;
|
|
case 2:
|
|
playerData->maxBP += 3;
|
|
if (playerData->maxBP > 30) {
|
|
playerData->maxBP = 30;
|
|
}
|
|
break;
|
|
}
|
|
|
|
set_animation(0, 0, ANIM_MarioB1_AdjustCap);
|
|
|
|
if (partner != NULL) {
|
|
script = start_script(partner->takeTurnSource, EVT_PRIORITY_A, 0);
|
|
partner->takeTurnScript = script;
|
|
partner->takeTurnScriptID = script->id;
|
|
script->owner1.actorID = ACTOR_PARTNER;
|
|
}
|
|
if (!(gBattleStatus.flags2 & BS_FLAGS2_DONT_STOP_MUSIC)) {
|
|
bgm_set_song(0, -1, 0, 2000, 8);
|
|
}
|
|
bFadeToBlackAmt = 0;
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_LEVEL_UP_FADE_OUT;
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_FADE_OUT:
|
|
if ((gGameStatusPtr->frameCounter % 2) != 0) {
|
|
switch (battleStatus->currentSubmenu) {
|
|
case 0:
|
|
hud_element_set_flags(LevelUpStatEmblemIDs[0], HUD_ELEMENT_FLAG_DISABLED);
|
|
break;
|
|
case 1:
|
|
hud_element_set_flags(LevelUpStatEmblemIDs[1], HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_set_flags(LevelUpStatEmblemIDs[3], HUD_ELEMENT_FLAG_DISABLED);
|
|
break;
|
|
case 2:
|
|
hud_element_set_flags(LevelUpStatEmblemIDs[2], HUD_ELEMENT_FLAG_DISABLED);
|
|
break;
|
|
}
|
|
} else {
|
|
switch (battleStatus->currentSubmenu) {
|
|
case 0:
|
|
hud_element_clear_flags(LevelUpStatEmblemIDs[0], HUD_ELEMENT_FLAG_DISABLED);
|
|
break;
|
|
case 1:
|
|
hud_element_clear_flags(LevelUpStatEmblemIDs[1], HUD_ELEMENT_FLAG_DISABLED);
|
|
hud_element_clear_flags(LevelUpStatEmblemIDs[3], HUD_ELEMENT_FLAG_DISABLED);
|
|
break;
|
|
case 2:
|
|
hud_element_clear_flags(LevelUpStatEmblemIDs[2], HUD_ELEMENT_FLAG_DISABLED);
|
|
break;
|
|
}
|
|
}
|
|
if (bFadeToBlackAmt == 255) {
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_LEVEL_UP_DESTROY_HUD;
|
|
break;
|
|
}
|
|
bFadeToBlackAmt += 10;
|
|
if (bFadeToBlackAmt > 255) {
|
|
bFadeToBlackAmt = 255;
|
|
}
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_DESTROY_HUD:
|
|
hud_element_free(LevelUpStatEmblemIDs[0]);
|
|
hud_element_free(LevelUpStatEmblemIDs[1]);
|
|
hud_element_free(LevelUpStatEmblemIDs[3]);
|
|
hud_element_free(LevelUpStatEmblemIDs[2]);
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs); i++) {
|
|
for (j = 0; j < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_FP]); j++) {
|
|
hud_element_free(LevelUpStatTextIDs[i][j]);
|
|
}
|
|
}
|
|
|
|
hud_element_free(LevelUpSelectTextID);
|
|
set_background_color_blend(0, 0, 0, 0);
|
|
btl_set_state(BATTLE_STATE_END_BATTLE);
|
|
gBattleSubState = BTL_SUBSTATE_END_BATTLE_EXEC_STAGE_SCRIPT;
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_INVALID:
|
|
width = get_msg_width(MSG_Menus_CantIncrease, 0) + 31;
|
|
x = 160 - (width / 2);
|
|
y = 80;
|
|
set_window_properties(WINDOW_ID_BATTLE_POPUP, x, y, width, 28, WINDOW_PRIORITY_10, draw_content_cant_increase_popup, NULL, -1);
|
|
set_window_update(WINDOW_ID_BATTLE_POPUP, WINDOW_UPDATE_SHOW);
|
|
CelebrateSubstateTime = 60;
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_LEVEL_UP_INVALID_DELAY;
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_INVALID_DELAY:
|
|
if (gGameStatusPtr->pressedButtons[0] & (BUTTON_A | BUTTON_B)) {
|
|
CelebrateSubstateTime = 0;
|
|
}
|
|
if (CelebrateSubstateTime != 0) {
|
|
CelebrateSubstateTime--;
|
|
break;
|
|
}
|
|
set_window_update(WINDOW_ID_BATTLE_POPUP, WINDOW_UPDATE_HIDE);
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_LEVEL_UP_CHOOSE;
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_SKIPPABLE_END_DELAY:
|
|
if (battleStatus->currentButtonsPressed & (BUTTON_A | BUTTON_B)) {
|
|
CelebrateStateTime = 99;
|
|
}
|
|
if (CelebrateStateTime >= 99) {
|
|
if (!(gBattleStatus.flags2 & BS_FLAGS2_DONT_STOP_MUSIC)) {
|
|
bgm_set_song(0, -1, 0, 1500, 8);
|
|
}
|
|
bFadeToBlackAmt = 0;
|
|
btl_cam_set_params(1, 270, 100, 8, 0, 0x2400, 0, 100);
|
|
set_animation(0, 0, ANIM_MarioB1_AdjustCap);
|
|
if (partner != NULL) {
|
|
set_animation(ACTOR_PARTNER, 0, D_80284154[playerData->currentPartner]);
|
|
}
|
|
CelebrateSubstateTime = 6;
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_WALK_AWAY;
|
|
break;
|
|
}
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_WALK_AWAY:
|
|
if (CelebrateSubstateTime != 0) {
|
|
CelebrateSubstateTime--;
|
|
if (CelebrateSubstateTime == 0) {
|
|
set_animation(0, 0, ANIM_Mario1_Walk);
|
|
}
|
|
} else {
|
|
player->yaw = 0.0f;
|
|
if (partner != NULL) {
|
|
partner->yaw = 0.0f;
|
|
}
|
|
|
|
player->currentPos.x += 4.0f;
|
|
if (partner != NULL) {
|
|
partner->currentPos.x += 4.0f;
|
|
}
|
|
}
|
|
if (bFadeToBlackAmt == 255) {
|
|
gBattleSubState = BTL_SUBSTATE_CELEBRATE_DONE;
|
|
break;
|
|
}
|
|
bFadeToBlackAmt += 20;
|
|
if (bFadeToBlackAmt > 255) {
|
|
bFadeToBlackAmt = 255;
|
|
}
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_DONE:
|
|
if (does_script_exist(player->takeTurnScriptID)) {
|
|
kill_script_by_ID(player->takeTurnScriptID);
|
|
}
|
|
if (partner != NULL && does_script_exist(partner->takeTurnScriptID)) {
|
|
kill_script_by_ID(partner->takeTurnScriptID);
|
|
}
|
|
btl_set_state(BATTLE_STATE_END_BATTLE);
|
|
gBattleSubState = BTL_SUBSTATE_END_BATTLE_EXEC_STAGE_SCRIPT;
|
|
break;
|
|
}
|
|
CelebrateStateTime++;
|
|
}
|
|
|
|
void btl_draw_upgrade_windows(s32 phase) {
|
|
BattleStatus* battleStatus = &gBattleStatus;
|
|
s32 x;
|
|
s32 y;
|
|
s32 d1;
|
|
s32 d2;
|
|
s32 d3;
|
|
|
|
switch (phase) {
|
|
case 0: // before choice
|
|
d1 = 100;
|
|
d2 = 100;
|
|
d3 = 100;
|
|
break;
|
|
case 1: // choosing
|
|
switch (battleStatus->currentSubmenu) {
|
|
case MENU_HP:
|
|
d1 = 0;
|
|
d2 = 100;
|
|
d3 = 100;
|
|
break;
|
|
case MENU_FP:
|
|
d1 = 100;
|
|
d2 = 0;
|
|
d3 = 100;
|
|
break;
|
|
default:
|
|
d1 = 100;
|
|
d2 = 100;
|
|
d3 = 0;
|
|
break;
|
|
}
|
|
break;
|
|
default: // after choice
|
|
d1 = 100;
|
|
d2 = 100;
|
|
d3 = 100;
|
|
break;
|
|
}
|
|
|
|
hud_element_get_render_pos(LevelUpStatEmblemIDs[0], &x, &y);
|
|
draw_box(0, WINDOW_STYLE_15, x - 22, y - 22, 0, 44, 44, 255, d1, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, NULL, NULL, NULL,
|
|
SCREEN_WIDTH, SCREEN_HEIGHT, NULL);
|
|
hud_element_get_render_pos(LevelUpStatEmblemIDs[3], &x, &y);
|
|
draw_box(0, WINDOW_STYLE_15, x - 22, y - 22, 0, 44, 44, 255, d2, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, NULL, NULL, NULL,
|
|
SCREEN_WIDTH, SCREEN_HEIGHT, NULL);
|
|
hud_element_get_render_pos(LevelUpStatEmblemIDs[2], &x, &y);
|
|
draw_box(0, WINDOW_STYLE_15, x - 22, y - 22, 0, 44, 44, 255, d3, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, NULL, NULL, NULL,
|
|
SCREEN_WIDTH, SCREEN_HEIGHT, NULL);
|
|
}
|
|
|
|
void btl_state_draw_celebration(void) {
|
|
BattleStatus* battleStatus = &gBattleStatus;
|
|
s32 rotZ;
|
|
s32 id;
|
|
s32 i;
|
|
s32 j;
|
|
|
|
switch (gBattleSubState) {
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_SHOW_HUD:
|
|
btl_draw_upgrade_windows(0);
|
|
id = LevelUpStatEmblemIDs[0];
|
|
hud_element_set_tint(id, 128, 128, 128);
|
|
hud_element_draw_clipped(id);
|
|
id = LevelUpStatEmblemIDs[3];
|
|
hud_element_set_tint(id, 128, 128, 128);
|
|
hud_element_draw_clipped(id);
|
|
id = LevelUpStatEmblemIDs[1];
|
|
hud_element_set_tint(id, 128, 128, 128);
|
|
hud_element_draw_clipped(id);
|
|
id = LevelUpStatEmblemIDs[2];
|
|
hud_element_set_tint(id, 128, 128, 128);
|
|
hud_element_draw_clipped(id);
|
|
|
|
for (j = 0; j < ARRAY_COUNT(LevelUpStatTextIDs); j++) {
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_FP]); i++) {
|
|
id = LevelUpStatTextIDs[j][i];
|
|
|
|
hud_element_set_tint(id, 128, 128, 128);
|
|
hud_element_draw_clipped(id);
|
|
}
|
|
}
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_CHOOSE:
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_INVALID:
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_INVALID_DELAY:
|
|
switch (battleStatus->currentSubmenu) {
|
|
case 0:
|
|
rotZ = 152;
|
|
hud_element_set_tint(LevelUpStatEmblemIDs[0], 255, 255, 255);
|
|
hud_element_set_tint(LevelUpStatEmblemIDs[3], 128, 128, 128);
|
|
hud_element_set_tint(LevelUpStatEmblemIDs[1], 128, 128, 128);
|
|
hud_element_set_tint(LevelUpStatEmblemIDs[2], 128, 128, 128);
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_FP]); i++) {
|
|
id = LevelUpStatTextIDs[LVL_UP_FP][i];
|
|
|
|
hud_element_set_tint(id, 128, 128, 128);
|
|
}
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_HP]); i++) {
|
|
id = LevelUpStatTextIDs[LVL_UP_HP][i];
|
|
|
|
hud_element_set_tint(id, 255, 255, 255);
|
|
}
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_BP]); i++) {
|
|
id = LevelUpStatTextIDs[LVL_UP_BP][i];
|
|
|
|
hud_element_set_tint(id, 128, 128, 128);
|
|
}
|
|
|
|
id = LevelUpStatEmblemIDs[0];
|
|
if (hud_element_get_script(id) != &HES_level_up_heart_copy) {
|
|
hud_element_set_script(id, &HES_level_up_heart_copy);
|
|
}
|
|
id = LevelUpStatEmblemIDs[3];
|
|
if (hud_element_get_script(id) != &HES_level_up_leaves) {
|
|
hud_element_set_script(id, &HES_level_up_leaves);
|
|
}
|
|
id = LevelUpStatEmblemIDs[1];
|
|
if (hud_element_get_script(id) != &HES_level_up_flower) {
|
|
hud_element_set_script(id, &HES_level_up_flower);
|
|
}
|
|
id = LevelUpStatEmblemIDs[2];
|
|
if (hud_element_get_script(id) != &HES_level_up_badge) {
|
|
hud_element_set_script(id, &HES_level_up_badge);
|
|
}
|
|
break;
|
|
case 1:
|
|
rotZ = 180;
|
|
hud_element_set_tint(LevelUpStatEmblemIDs[0], 128, 128, 128);
|
|
hud_element_set_tint(LevelUpStatEmblemIDs[3], 255, 255, 255);
|
|
hud_element_set_tint(LevelUpStatEmblemIDs[1], 255, 255, 255);
|
|
hud_element_set_tint(LevelUpStatEmblemIDs[2], 128, 128, 128);
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_FP]); i++) {
|
|
id = LevelUpStatTextIDs[LVL_UP_FP][i];
|
|
|
|
hud_element_set_tint(id, 255, 255, 255);
|
|
}
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_HP]); i++) {
|
|
id = LevelUpStatTextIDs[LVL_UP_HP][i];
|
|
|
|
hud_element_set_tint(id, 128, 128, 128);
|
|
}
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_BP]); i++) {
|
|
id = LevelUpStatTextIDs[LVL_UP_BP][i];
|
|
|
|
hud_element_set_tint(id, 128, 128, 128);
|
|
}
|
|
break;
|
|
case 2:
|
|
default:
|
|
rotZ = 208;
|
|
hud_element_set_tint(LevelUpStatEmblemIDs[0], 128, 128, 128);
|
|
hud_element_set_tint(LevelUpStatEmblemIDs[3], 128, 128, 128);
|
|
hud_element_set_tint(LevelUpStatEmblemIDs[1], 128, 128, 128);
|
|
hud_element_set_tint(LevelUpStatEmblemIDs[2], 255, 255, 255);
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_FP]); i++) {
|
|
id = LevelUpStatTextIDs[LVL_UP_FP][i];
|
|
|
|
hud_element_set_tint(id, 128, 128, 128);
|
|
}
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_HP]); i++) {
|
|
id = LevelUpStatTextIDs[LVL_UP_HP][i];
|
|
|
|
hud_element_set_tint(id, 128, 128, 128);
|
|
}
|
|
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_BP]); i++) {
|
|
id = LevelUpStatTextIDs[LVL_UP_BP][i];
|
|
|
|
hud_element_set_tint(id, 255, 255, 255);
|
|
}
|
|
break;
|
|
}
|
|
|
|
btl_draw_upgrade_windows(1);
|
|
hud_element_draw_clipped(LevelUpStatEmblemIDs[0]);
|
|
hud_element_draw_clipped(LevelUpStatEmblemIDs[3]);
|
|
hud_element_draw_clipped(LevelUpStatEmblemIDs[1]);
|
|
hud_element_draw_clipped(LevelUpStatEmblemIDs[2]);
|
|
|
|
for (j = 0; j < ARRAY_COUNT(LevelUpStatTextIDs); j++) {
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_FP]); i++) {
|
|
hud_element_draw_clipped(LevelUpStatTextIDs[j][i]);
|
|
}
|
|
}
|
|
|
|
func_80144218(-1);
|
|
id = LevelUpSpotlightID;
|
|
hud_element_set_transform_rotation(id, 0.0f, 0.0f, rotZ);
|
|
func_80144238(id);
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_UPGRADE:
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_FADE_OUT:
|
|
btl_draw_upgrade_windows(1);
|
|
hud_element_draw_clipped(LevelUpStatEmblemIDs[0]);
|
|
hud_element_draw_clipped(LevelUpStatEmblemIDs[3]);
|
|
hud_element_draw_clipped(LevelUpStatEmblemIDs[1]);
|
|
hud_element_draw_clipped(LevelUpStatEmblemIDs[2]);
|
|
|
|
for (j = 0; j < ARRAY_COUNT(LevelUpStatTextIDs); j++) {
|
|
for (i = 0; i < ARRAY_COUNT(LevelUpStatTextIDs[LVL_UP_FP]); i++) {
|
|
hud_element_draw_clipped(LevelUpStatTextIDs[j][i]);
|
|
}
|
|
}
|
|
|
|
set_screen_overlay_params_front(OVERLAY_SCREEN_COLOR, bFadeToBlackAmt);
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_DESTROY_HUD:
|
|
set_screen_overlay_params_front(OVERLAY_SCREEN_COLOR, bFadeToBlackAmt);
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_WALK_AWAY:
|
|
if (bFadeToBlackAmt != 0) {
|
|
set_screen_overlay_params_front(OVERLAY_SCREEN_COLOR, bFadeToBlackAmt);
|
|
}
|
|
break;
|
|
}
|
|
|
|
switch (gBattleSubState) {
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_SHOW_HUD:
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_CHOOSE:
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_UPGRADE:
|
|
LevelUpSelectTextVelX += 2;
|
|
LevelUpSelectTextOffsetX += LevelUpSelectTextVelX;
|
|
if (LevelUpSelectTextOffsetX > 200) {
|
|
LevelUpSelectTextOffsetX = 200;
|
|
LevelUpSelectTextVelX = -LevelUpSelectTextVelX / 3; // rebounding
|
|
}
|
|
id = LevelUpSelectTextID;
|
|
hud_element_set_render_pos(id, LevelUpSelectTextOffsetX - 43, 176);
|
|
hud_element_draw_clipped(id);
|
|
break;
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_FADE_OUT:
|
|
LevelUpSelectTextVelX += 4;
|
|
LevelUpSelectTextOffsetX += LevelUpSelectTextVelX;
|
|
if (LevelUpSelectTextOffsetX > 500) {
|
|
LevelUpSelectTextOffsetX = 500;
|
|
}
|
|
id = LevelUpSelectTextID;
|
|
hud_element_set_render_pos(id, LevelUpSelectTextOffsetX - 43, 176);
|
|
hud_element_draw_clipped(id);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void draw_content_level_up_textbox(void* data, s32 posX, s32 posY) {
|
|
BattleStatus* battleStatus = &gBattleStatus;
|
|
s32 xOffset;
|
|
s32 msgID;
|
|
|
|
switch (gBattleSubState) {
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_CHOOSE:
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_INVALID:
|
|
case BTL_SUBSTATE_CELEBRATE_LEVEL_UP_INVALID_DELAY:
|
|
switch (battleStatus->currentSubmenu) {
|
|
case MENU_HP:
|
|
if (!CantLevelUpStat[MENU_HP]) {
|
|
msgID = MSG_Menus_LevelUp_HP;
|
|
} else {
|
|
msgID = MSG_Menus_LevelUp_MaxedHP;
|
|
}
|
|
xOffset = 9;
|
|
break;
|
|
case MENU_FP:
|
|
if (!CantLevelUpStat[MENU_FP]) {
|
|
msgID = MSG_Menus_LevelUp_FP;
|
|
} else {
|
|
msgID = MSG_Menus_LevelUp_MaxedFP;
|
|
}
|
|
xOffset = 9;
|
|
break;
|
|
default:
|
|
if (!CantLevelUpStat[MENU_BP]) {
|
|
msgID = MSG_Menus_LevelUp_BP;
|
|
} else {
|
|
msgID = MSG_Menus_LevelUp_MaxedBP;
|
|
}
|
|
xOffset = 9;
|
|
break;
|
|
}
|
|
draw_msg(msgID, posX + xOffset + 17, posY, 255, MSG_PAL_STANDARD, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void draw_content_cant_increase_popup(void* data, s32 posX, s32 posY) {
|
|
draw_msg(MSG_Menus_CantIncrease, posX + 11, posY + 6, 255, MSG_PAL_0F, 0);
|
|
}
|