#include "battle/battle.h" #include "script_api/battle.h" #include "sprite/npc/BattleKalmar.h" #include "entity.h" #include "model.h" #include "sprite/player.h" extern EntityModelScript EMS_StarIcon; #define NAMESPACE battle_move_up_and_away #include "common/StarPower.inc.c" API_CALLABLE(func_802A1518_7957F8) { if (isInitialCall) { mdl_set_all_fog_mode(FOG_MODE_1); *gBackgroundFogModePtr = FOG_MODE_1; set_background_color_blend(0, 0, 0, 0); script->functionTemp[0] = 200; } set_background_color_blend(0, 0, 0, script->functionTemp[0]); script->functionTemp[0] += 2; if (script->functionTemp[0] >= 254) { set_background_color_blend(0, 0, 0, 254); return ApiStatus_DONE2; } return ApiStatus_BLOCK; } API_CALLABLE(func_802A15B4_795894) { if (isInitialCall) { script->functionTemp[0] = 254; } set_background_color_blend(0, 0, 0, script->functionTemp[0]); script->functionTemp[0] -= 5; if (script->functionTemp[0] <= 200) { set_background_color_blend(0, 0, 0, 200); return ApiStatus_DONE2; } return ApiStatus_BLOCK; } API_CALLABLE(func_802A1628_795908) { Actor* targetActor = get_actor(get_actor(script->owner1.actorID)->targetActorID); u32 flags; script->varTable[0] = 0; flags = targetActor->flags; if (!(flags & ACTOR_FLAG_TARGET_ONLY)) { if (!(flags & ACTOR_FLAG_NO_DMG_APPLY)) { if (!(flags & ACTOR_FLAG_2000) && targetActor->actorBlueprint->upAndAwayChance != 0 && rand_int(100) <= targetActor->actorBlueprint->upAndAwayChance ) { script->varTable[0] = 1; } } else { return ApiStatus_DONE2; } } return ApiStatus_DONE2; } EvtScript N(802A16D0) = { EVT_CALL(GetOwnerID, LVarA) EVT_IF_EQ(LVarA, 0) EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_69) EVT_WAIT(10) EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_UsePower) EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2) EVT_ADD(LVar0, 16) EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(4.0)) EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2) EVT_CALL(PlayerRunToGoal, 0) EVT_WAIT(8) EVT_CALL(PlaySound, SOUND_241) EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2) EVT_ADD(LVar1, 15) EVT_CALL(N(UnkStarFunc1), LVar0, LVar1, LVar2) EVT_CALL(N(FadeBackgroundToBlack)) EVT_WAIT(20) EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Pray) EVT_WAIT(10) EVT_CALL(PlaySound, SOUND_2051) EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2) EVT_CALL(N(UnkStarFunc2), LVar0, LVar1, LVar2) EVT_WAIT(30) EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_LookUp) EVT_ELSE EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_69) EVT_WAIT(10) EVT_CALL(N(UnkStarFunc), 0) EVT_CALL(GetActorPos, ACTOR_PARTNER, LVar0, LVar1, LVar2) EVT_ADD(LVar0, 16) EVT_CALL(SetActorSpeed, ACTOR_PARTNER, EVT_FLOAT(4.0)) EVT_CALL(SetGoalPos, ACTOR_PARTNER, LVar0, LVar1, LVar2) EVT_CALL(RunToGoal, ACTOR_PARTNER, 0, FALSE) EVT_CALL(N(UnkStarFunc), 4) EVT_WAIT(8) EVT_CALL(PlaySound, SOUND_241) EVT_CALL(N(UnkStarFunc), 1) EVT_CALL(GetActorPos, ACTOR_PARTNER, LVar0, LVar1, LVar2) EVT_ADD(LVar1, 15) EVT_CALL(N(UnkStarFunc1), LVar0, LVar1, LVar2) EVT_CALL(N(FadeBackgroundToBlack)) EVT_WAIT(20) EVT_CALL(PlaySound, SOUND_2051) EVT_CALL(N(UnkStarFunc), 1) EVT_WAIT(10) EVT_CALL(GetActorPos, ACTOR_PARTNER, LVar0, LVar1, LVar2) EVT_CALL(N(UnkStarFunc2), LVar0, LVar1, LVar2) EVT_WAIT(30) EVT_CALL(N(UnkStarFunc), 4) EVT_END_IF EVT_RETURN EVT_END }; EvtScript N(802A1A68) = { EVT_CALL(GetOwnerID, LVarA) EVT_IF_EQ(LVarA, 0) EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_69) EVT_WAIT(10) EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_UsePower) EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2) EVT_ADD(LVar0, 16) EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(4.0)) EVT_CALL(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2) EVT_CALL(PlayerRunToGoal, 0) EVT_WAIT(8) EVT_CALL(PlaySound, SOUND_241) EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2) EVT_ADD(LVar1, 15) EVT_CALL(N(UnkStarFunc1), LVar0, LVar1, LVar2) EVT_CALL(N(UnkBackgroundFunc2)) EVT_WAIT(20) EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Pray) EVT_WAIT(10) EVT_CALL(PlaySound, SOUND_2051) EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2) EVT_CALL(N(UnkStarFunc2), LVar0, LVar1, LVar2) EVT_WAIT(30) EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_LookUp) EVT_ELSE EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_69) EVT_WAIT(10) EVT_CALL(N(UnkStarFunc), 0) EVT_CALL(GetActorPos, ACTOR_PARTNER, LVar0, LVar1, LVar2) EVT_ADD(LVar0, 16) EVT_CALL(SetActorSpeed, ACTOR_PARTNER, EVT_FLOAT(4.0)) EVT_CALL(SetGoalPos, ACTOR_PARTNER, LVar0, LVar1, LVar2) EVT_CALL(RunToGoal, ACTOR_PARTNER, 0, FALSE) EVT_CALL(N(UnkStarFunc), 4) EVT_WAIT(8) EVT_CALL(PlaySound, SOUND_241) EVT_CALL(N(UnkStarFunc), 1) EVT_CALL(GetActorPos, ACTOR_PARTNER, LVar0, LVar1, LVar2) EVT_ADD(LVar1, 15) EVT_CALL(N(UnkStarFunc1), LVar0, LVar1, LVar2) EVT_CALL(N(UnkBackgroundFunc2)) EVT_WAIT(20) EVT_CALL(PlaySound, SOUND_2051) EVT_CALL(N(UnkStarFunc), 1) EVT_WAIT(10) EVT_CALL(GetActorPos, ACTOR_PARTNER, LVar0, LVar1, LVar2) EVT_CALL(N(UnkStarFunc2), LVar0, LVar1, LVar2) EVT_WAIT(30) EVT_CALL(N(UnkStarFunc), 4) EVT_END_IF EVT_RETURN EVT_END }; EvtScript N(802A1E00) = { EVT_WAIT(8) EVT_CALL(SetForegroundModelsVisible, FALSE) EVT_CALL(UseBattleCamPresetImmediately, BTL_CAM_PRESET_73) EVT_CALL(MoveBattleCamOver, 1) EVT_CALL(PlaySound, SOUND_2041) EVT_CALL(CreateNpc, NPC_BTL_SPIRIT, LVar0) EVT_CALL(N(SetNpcCollision32)) EVT_CALL(SetNpcFlagBits, NPC_BTL_SPIRIT, NPC_FLAG_IGNORE_CAMERA_FOR_YAW, TRUE) EVT_CALL(SetNpcPos, NPC_BTL_SPIRIT, -75, 150, 0) EVT_CALL(SetNpcDecoration, NPC_BTL_SPIRIT, 0, NPC_DECORATION_WHITE_GLOW_BEHIND) EVT_CALL(N(UnkStarFunc3), -75, 167, 0) EVT_WAIT(10) EVT_CALL(EnableNpcBlur, NPC_BTL_SPIRIT, TRUE) EVT_SET(LVar0, 0) EVT_LOOP(8) EVT_ADD(LVar0, 67) EVT_CALL(SetNpcRotation, NPC_BTL_SPIRIT, 0, LVar0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_WAIT(10) EVT_CALL(EnableNpcBlur, NPC_BTL_SPIRIT, FALSE) EVT_THREAD EVT_WAIT(10) EVT_CALL(UseBattleCamPreset, BTL_CAM_PRESET_69) EVT_END_THREAD EVT_CALL(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2) EVT_ADD(LVar1, 50) EVT_CALL(NpcFlyTo, NPC_BTL_SPIRIT, LVar0, LVar1, LVar2, 30, 0, EASING_COS_IN_OUT) EVT_CALL(SetForegroundModelsVisible, TRUE) EVT_RETURN EVT_END }; EvtScript N(802A200C) = { EVT_CALL(GetOwnerID, LVarA) EVT_IF_EQ(LVarA, 0) EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT) EVT_CALL(PlaySound, SOUND_2047) EVT_THREAD EVT_LOOP(5) EVT_WAIT(6) EVT_CALL(GetNpcPos, NPC_BTL_SPIRIT, LVar0, LVar1, LVar2) EVT_CALL(N(UnkStarFunc4), LVar0, LVar1, LVar2) EVT_END_LOOP EVT_END_THREAD EVT_CALL(EnableNpcBlur, NPC_BTL_SPIRIT, TRUE) EVT_THREAD EVT_SET(LVar2, 0) EVT_SET(LVar3, 720) EVT_CALL(MakeLerp, LVar2, LVar3, 30, EASING_CUBIC_IN) EVT_LOOP(0) EVT_CALL(UpdateLerp) EVT_CALL(SetNpcRotation, NPC_BTL_SPIRIT, 0, LVar0, 0) EVT_WAIT(1) EVT_IF_EQ(LVar1, 0) EVT_BREAK_LOOP EVT_END_IF EVT_END_LOOP EVT_END_THREAD EVT_CALL(GetNpcPos, NPC_BTL_SPIRIT, LVar0, LVar1, LVar2) EVT_ADD(LVar1, 60) EVT_CALL(NpcFlyTo, NPC_BTL_SPIRIT, LVar0, LVar1, LVar2, 15, 0, EASING_COS_IN_OUT) EVT_ADD(LVar1, 140) EVT_CALL(NpcFlyTo, NPC_BTL_SPIRIT, LVar0, LVar1, LVar2, 15, 0, EASING_COS_IN_OUT) EVT_WAIT(10) EVT_CALL(EnableNpcBlur, NPC_BTL_SPIRIT, FALSE) EVT_CALL(DeleteNpc, NPC_BTL_SPIRIT) EVT_ELSE EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT) EVT_CALL(PlaySound, SOUND_2045) EVT_THREAD EVT_LOOP(5) EVT_WAIT(6) EVT_CALL(GetNpcPos, NPC_BTL_SPIRIT, LVar0, LVar1, LVar2) EVT_CALL(N(UnkStarFunc4), LVar0, LVar1, LVar2) EVT_END_LOOP EVT_END_THREAD EVT_CALL(EnableNpcBlur, NPC_BTL_SPIRIT, TRUE) EVT_THREAD EVT_SET(LVar2, 0) EVT_SET(LVar3, 720) EVT_CALL(MakeLerp, LVar2, LVar3, 30, EASING_CUBIC_IN) EVT_LOOP(0) EVT_CALL(UpdateLerp) EVT_CALL(SetNpcRotation, NPC_BTL_SPIRIT, 0, LVar0, 0) EVT_WAIT(1) EVT_IF_EQ(LVar1, 0) EVT_BREAK_LOOP EVT_END_IF EVT_END_LOOP EVT_END_THREAD EVT_CALL(GetNpcPos, NPC_BTL_SPIRIT, LVar0, LVar1, LVar2) EVT_ADD(LVar1, 60) EVT_CALL(NpcFlyTo, NPC_BTL_SPIRIT, LVar0, LVar1, LVar2, 15, 0, EASING_COS_IN_OUT) EVT_ADD(LVar1, 140) EVT_CALL(NpcFlyTo, NPC_BTL_SPIRIT, LVar0, LVar1, LVar2, 15, 0, EASING_COS_IN_OUT) EVT_WAIT(10) EVT_CALL(EnableNpcBlur, NPC_BTL_SPIRIT, FALSE) EVT_CALL(DeleteNpc, NPC_BTL_SPIRIT) EVT_END_IF EVT_RETURN EVT_END }; EvtScript N(802A245C) = { EVT_CALL(GetOwnerID, LVarA) EVT_IF_EQ(LVarA, 0) EVT_CALL(N(UnkBackgroundFunc)) EVT_WAIT(15) EVT_CALL(SetGoalToHome, ACTOR_PLAYER) EVT_CALL(SetActorSpeed, ACTOR_PLAYER, EVT_FLOAT(8.0)) EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Run) EVT_CALL(PlayerRunToGoal, 0) EVT_CALL(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle) EVT_ELSE EVT_CALL(N(UnkBackgroundFunc)) EVT_WAIT(15) EVT_CALL(SetGoalToHome, ACTOR_PARTNER) EVT_CALL(SetActorSpeed, ACTOR_PARTNER, EVT_FLOAT(8.0)) EVT_CALL(N(UnkStarFunc), 3) EVT_CALL(RunToGoal, ACTOR_PARTNER, 0) EVT_CALL(N(UnkStarFunc), 4) EVT_END_IF EVT_RETURN EVT_END }; EvtScript N(EVS_UsePower) = { EVT_EXEC_WAIT(N(802A16D0)) EVT_SET_CONST(LVar0, ANIM_BattleKalmar_Idle) EVT_EXEC_WAIT(N(802A1E00)) EVT_CALL(SetNpcAnimation, NPC_BTL_SPIRIT, ANIM_BattleKalmar_Shout) EVT_CALL(UseBattleCamPreset, BTL_CAM_DEFAULT) EVT_WAIT(20) EVT_CALL(SetMotionBlurParams, 0, 0, 0, 320, 240, 128, 10) EVT_CALL(func_802A1518_7957F8) EVT_CALL(PlaySound, SOUND_247) EVT_PLAY_EFFECT(EFFECT_ENERGY_SHOCKWAVE, 0, 0, 20, 0, EVT_FLOAT(1.0), 90) EVT_WAIT(30) EVT_THREAD EVT_PLAY_EFFECT(EFFECT_SHIMMER_WAVE, 0, 0, 50, 0, 300, 100, 10, 40) EVT_END_THREAD EVT_PLAY_EFFECT(EFFECT_ENERGY_SHOCKWAVE, 0, 0, 20, 0, EVT_FLOAT(1.0), 90) EVT_WAIT(75) EVT_CALL(SetMotionBlurParams, 0, 0, 0, 320, 240, 0, 10) EVT_CALL(InitTargetIterator) EVT_LABEL(0) EVT_CALL(SetGoalToTarget, ACTOR_SELF) EVT_CALL(func_802A1628_795908) EVT_SET(LFlag0, FALSE) EVT_CALL(ItemCheckHit, LVar1, 0, 0, 0, 0) EVT_IF_EQ(LVar1, 6) EVT_SET(LVar0, 0) EVT_SET(LFlag0, TRUE) EVT_END_IF EVT_SWITCH(LVar0) EVT_CASE_GT(0) EVT_CALL(GetOwnerTarget, LVar0, LVar1) EVT_CALL(DispatchEvent, LVar0, EVENT_UP_AND_AWAY) EVT_CALL(SetActorRotationOffset, LVar0, 0, 10, 0) EVT_THREAD EVT_CALL(GetOwnerTarget, LVarB, LVar1) EVT_WAIT(10) EVT_CALL(CreateVirtualEntity, LVarA, EVT_PTR(EMS_StarIcon)) EVT_CALL(GetActorPos, LVarB, LVar0, LVar1, LVar2) EVT_SET(LVarD, LVar0) EVT_SET(LVarE, LVar1) EVT_SET(LVarF, LVar2) EVT_CALL(SetVirtualEntityPosition, LVarA, LVar0, LVar1, LVar2) EVT_SETF(LVar0, EVT_FLOAT(0.2)) EVT_CALL(SetVirtualEntityScale, LVarA, LVar0, LVar0, LVar0) EVT_LOOP(4) EVT_ADDF(LVar0, EVT_FLOAT(0.2)) EVT_CALL(SetVirtualEntityScale, LVarA, LVar0, LVar0, LVar0) EVT_WAIT(1) EVT_END_LOOP EVT_SET(LVar0, 0) EVT_LOOP(5) EVT_ADD(LVar0, 72) EVT_CALL(SetVirtualEntityRotation, LVarA, 0, LVar0, 0) EVT_WAIT(1) EVT_END_LOOP EVT_CALL(PlaySound, SOUND_2052) EVT_SET(LVar0, LVarD) EVT_SET(LVar1, LVarE) EVT_SET(LVar2, LVarF) EVT_SET(LVar3, 0) EVT_LOOP(50) EVT_CALL(SetVirtualEntityPosition, LVarA, LVar0, LVar1, LVar2) EVT_CALL(SetVirtualEntityRotation, LVarA, 0, LVar3, 0) EVT_ADD(LVar1, 6) EVT_ADD(LVar3, 45) EVT_WAIT(1) EVT_END_LOOP EVT_END_THREAD EVT_THREAD EVT_CALL(PlaySound, SOUND_2071) EVT_CALL(GetOwnerTarget, LVarA, LVar1) EVT_CALL(SetActorFlagBits, LVarA, 4, TRUE) EVT_SETF(LVar0, EVT_FLOAT(1.0)) EVT_LOOP(18) EVT_SUBF(LVar0, EVT_FLOAT(0.05)) EVT_CALL(SetActorScale, LVarA, LVar0, LVar0, LVar0) EVT_WAIT(1) EVT_END_LOOP EVT_CALL(SetActorPos, LVarA, NPC_DISPOSE_LOCATION) EVT_CALL(GetActorPos, LVarA, LVar0, LVar1, LVar2) EVT_LOOP(10) EVT_PLAY_EFFECT(EFFECT_SPARKLES, 1, LVar0, LVar1, LVar2, 20, 0) EVT_ADD(LVar1, 30) EVT_WAIT(5) EVT_END_LOOP EVT_CALL(SetBattleFlagBits, BS_FLAGS1_STAR_POINTS_DROPPED, TRUE) EVT_CALL(RemoveActor, LVarA) EVT_END_THREAD EVT_CASE_DEFAULT EVT_IF_EQ(LFlag0, FALSE) EVT_CALL(PlayerDamageEnemy, LVar0, 0, SUPPRESS_EVENT_ALL, 0, 0, BS_FLAGS1_FORCE_HIT_IMMUNE | BS_FLAGS1_SP_EVT_ACTIVE) EVT_END_IF EVT_END_SWITCH EVT_WAIT(5) EVT_CALL(ChooseNextTarget, ITER_NEXT, LVar0) EVT_IF_NE(LVar0, -1) EVT_GOTO(0) EVT_END_IF EVT_WAIT(70) EVT_CALL(func_802A15B4_795894) EVT_EXEC_WAIT(N(802A200C)) EVT_CALL(PlayerYieldTurn) EVT_EXEC_WAIT(N(802A245C)) EVT_RETURN EVT_END };