mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-02-04 02:10:01 +01:00
Heal Block anim with volume change task
This commit is contained in:
parent
1c73e61a2b
commit
91aafa2ebc
@ -144,7 +144,7 @@
|
||||
.byte \pan
|
||||
.endm
|
||||
|
||||
.macro panse_1B se:req, param1:req, param2:req, param3:req, param4
|
||||
.macro panse_1B se:req, param1:req, param2:req, param3:req, param4:req
|
||||
.byte 0x1b
|
||||
.2byte \se
|
||||
.byte \param1
|
||||
@ -215,7 +215,7 @@
|
||||
.byte \param2
|
||||
.endm
|
||||
|
||||
.macro panse_26 se:req, param1:req, param2:req, param3:req, param4
|
||||
.macro panse_26 se:req, param1:req, param2:req, param3:req, param4:req
|
||||
.byte 0x26
|
||||
.2byte \se
|
||||
.byte \param1
|
||||
@ -224,7 +224,7 @@
|
||||
.byte \param4
|
||||
.endm
|
||||
|
||||
.macro panse_27 se:req, param1:req, param2:req, param3:req, param4
|
||||
.macro panse_27 se:req, param1:req, param2:req, param3:req, param4:req
|
||||
.byte 0x27
|
||||
.2byte \se
|
||||
.byte \param1
|
||||
|
@ -1132,6 +1132,27 @@ Move_TRUMP_CARD:
|
||||
end
|
||||
|
||||
Move_HEAL_BLOCK:
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
monbg ANIM_TARGET
|
||||
createsoundtask AnimTask_PlaySeChangingVolume, SE_W071B, SOUND_PAN_TARGET, 256, -16, 0, 2
|
||||
createsprite gUnknown_08592F2C, ANIM_TARGET, 2, 0, -5, 1, 0
|
||||
delay 7
|
||||
createsprite gUnknown_08592F2C, ANIM_TARGET, 2, -15, 10, 1, 0
|
||||
delay 7
|
||||
createvisualtask sub_8116620, 10, 1 | 4, 4, 2, 12, 0, RGB_BLACK
|
||||
createsprite gUnknown_08592F2C, ANIM_TARGET, 2, 0, -5, 1, 0
|
||||
delay 7
|
||||
createsprite gUnknown_08592F2C, ANIM_TARGET, 2, -15, 10, 1, 0
|
||||
delay 7
|
||||
createsprite gUnknown_08592F2C, ANIM_TARGET, 2, -15, -15, 1, 0
|
||||
delay 7
|
||||
createsprite gUnknown_08592F2C, ANIM_TARGET, 2, 10, -5, 1, 0
|
||||
delay 7
|
||||
waitforvisualfinish
|
||||
delay 11
|
||||
createvisualtask sub_8116620, 10, 1 | 4, 4, 2, 0, 12, RGB_BLACK
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_TARGET
|
||||
end
|
||||
|
||||
Move_WRING_OUT:
|
||||
|
@ -2,11 +2,14 @@
|
||||
#include "battle.h"
|
||||
#include "battle_anim.h"
|
||||
#include "contest.h"
|
||||
#include "m4a.h"
|
||||
#include "sound.h"
|
||||
#include "task.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_SE1;
|
||||
|
||||
// this file's functions
|
||||
static void sub_8158B98(u8 taskId);
|
||||
static void sub_8158C04(u8 taskId);
|
||||
@ -14,6 +17,7 @@ static void sub_8158D08(u8 taskId);
|
||||
static void sub_8158FF4(u8 taskId);
|
||||
static void sub_815913C(u8 taskId);
|
||||
static void sub_8159308(u8 taskId);
|
||||
static void AnimTask_SeVolumeChange(u8 taskId);
|
||||
|
||||
// task start
|
||||
void sub_8158B30(u8 taskId)
|
||||
@ -436,3 +440,61 @@ _0815935A:\n\
|
||||
.pool");
|
||||
}
|
||||
#endif
|
||||
|
||||
#define tSongNum data[0]
|
||||
#define tPan data[1]
|
||||
#define tCurrentVolume data[2]
|
||||
#define tIncrementVal data[3]
|
||||
#define tTargetVolume data[4]
|
||||
#define tDelay data[5]
|
||||
#define tFrameCounter data[6]
|
||||
#define tInitialVolume data[7]
|
||||
|
||||
void AnimTask_PlaySeChangingVolume(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].tSongNum = gBattleAnimArgs[0];
|
||||
gTasks[taskId].tPan = BattleAnimAdjustPanning(gBattleAnimArgs[1]);
|
||||
gTasks[taskId].tCurrentVolume = gTasks[taskId].tInitialVolume = gBattleAnimArgs[2];
|
||||
gTasks[taskId].tIncrementVal = gBattleAnimArgs[3];
|
||||
gTasks[taskId].tTargetVolume = gBattleAnimArgs[4];
|
||||
gTasks[taskId].tDelay = gBattleAnimArgs[5];
|
||||
|
||||
PlaySE1WithPanning(gTasks[taskId].tSongNum, gTasks[taskId].tPan);
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_SE1, 0xFFFF, gTasks[taskId].tCurrentVolume);
|
||||
if (gTasks[taskId].tIncrementVal == 0) // Either increase or decrease volume.
|
||||
DestroyAnimSoundTask(taskId);
|
||||
else
|
||||
gTasks[taskId].func = AnimTask_SeVolumeChange;
|
||||
}
|
||||
|
||||
static void AnimTask_SeVolumeChange(u8 taskId)
|
||||
{
|
||||
bool32 destroyTask = FALSE;
|
||||
|
||||
if (gTasks[taskId].tFrameCounter++ >= gTasks[taskId].tDelay)
|
||||
{
|
||||
gTasks[taskId].tFrameCounter = 0;
|
||||
gTasks[taskId].tCurrentVolume += gTasks[taskId].tIncrementVal;
|
||||
|
||||
if (gTasks[taskId].tCurrentVolume < 0)
|
||||
gTasks[taskId].tCurrentVolume = 0;
|
||||
if (gTasks[taskId].tCurrentVolume > 256)
|
||||
gTasks[taskId].tCurrentVolume = 256;
|
||||
|
||||
if (gTasks[taskId].tInitialVolume < gTasks[taskId].tTargetVolume) // Volume increasing.
|
||||
{
|
||||
if (gTasks[taskId].tCurrentVolume >= gTasks[taskId].tTargetVolume) // Target reached.
|
||||
destroyTask = TRUE;
|
||||
}
|
||||
else // Volume decreasing.
|
||||
{
|
||||
if (gTasks[taskId].tCurrentVolume <= gTasks[taskId].tTargetVolume) // Target reached.
|
||||
destroyTask = TRUE;
|
||||
}
|
||||
|
||||
if (destroyTask)
|
||||
DestroyAnimSoundTask(taskId);
|
||||
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_SE1, 0xFFFF, gTasks[taskId].tCurrentVolume);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user