Finish battle_anim_mon_movement
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -64,6 +64,8 @@ extern u8 gBattleAnimTarget;
|
|||||||
extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT];
|
extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT];
|
||||||
extern u8 gUnknown_02038440;
|
extern u8 gUnknown_02038440;
|
||||||
extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
|
extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
|
||||||
|
extern u16 gUnknown_2037EEC;
|
||||||
|
extern s32 gUnknown_2037EE8;
|
||||||
|
|
||||||
void ClearBattleAnimationVars(void);
|
void ClearBattleAnimationVars(void);
|
||||||
void DoMoveAnim(u16 move);
|
void DoMoveAnim(u16 move);
|
||||||
@@ -127,5 +129,10 @@ u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 bank, u32 arg2, u8 ballId);
|
|||||||
void sub_8074DC4(struct Sprite * sprite);
|
void sub_8074DC4(struct Sprite * sprite);
|
||||||
void sub_8074E14(struct Sprite * sprite);
|
void sub_8074E14(struct Sprite * sprite);
|
||||||
void sub_80754B8(struct Sprite * sprite);
|
void sub_80754B8(struct Sprite * sprite);
|
||||||
|
void sub_80758E0(u8 spriteId, u8 b);
|
||||||
|
void sub_8075980(u8 spriteId);
|
||||||
|
void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation);
|
||||||
|
bool8 sub_8073788(void);
|
||||||
|
void sub_80759DC(u8 spriteId);
|
||||||
|
|
||||||
#endif // GUARD_BATTLE_ANIM_H
|
#endif // GUARD_BATTLE_ANIM_H
|
||||||
|
|||||||
@@ -139,7 +139,6 @@ SECTIONS {
|
|||||||
asm/map_name_popup.o(.text);
|
asm/map_name_popup.o(.text);
|
||||||
src/item_menu_icons.o(.text);
|
src/item_menu_icons.o(.text);
|
||||||
src/battle_anim_mon_movement.o(.text);
|
src/battle_anim_mon_movement.o(.text);
|
||||||
asm/battle_anim_mon_movement.o(.text);
|
|
||||||
src/item.o(.text);
|
src/item.o(.text);
|
||||||
asm/shop.o(.text);
|
asm/shop.o(.text);
|
||||||
src/berry.o(.text);
|
src/berry.o(.text);
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "trig.h"
|
#include "trig.h"
|
||||||
|
|
||||||
|
#define abs(x) ((x) < 0 ? -(x) : (x))
|
||||||
|
|
||||||
void sub_8098A6C(u8 taskId);
|
void sub_8098A6C(u8 taskId);
|
||||||
void sub_8098C08(u8 taskId);
|
void sub_8098C08(u8 taskId);
|
||||||
void sub_8098D54(u8 taskId);
|
void sub_8098D54(u8 taskId);
|
||||||
@@ -18,6 +20,13 @@ void sub_8099270(struct Sprite * sprite);
|
|||||||
void sub_80992E0(struct Sprite * sprite);
|
void sub_80992E0(struct Sprite * sprite);
|
||||||
void sub_8099394(struct Sprite * sprite);
|
void sub_8099394(struct Sprite * sprite);
|
||||||
void sub_809946C(struct Sprite * sprite);
|
void sub_809946C(struct Sprite * sprite);
|
||||||
|
void sub_8099530(u8 taskId);
|
||||||
|
void sub_8099594(u8 taskId);
|
||||||
|
void sub_80996B8(u8 taskId);
|
||||||
|
void sub_8099788(u8 taskId);
|
||||||
|
void sub_8099908(u8 taskId);
|
||||||
|
void sub_8099B54(u8 taskId);
|
||||||
|
void sub_8099CB8(u8 taskId);
|
||||||
|
|
||||||
const struct SpriteTemplate gUnknown_83D4E4C[] = {
|
const struct SpriteTemplate gUnknown_83D4E4C[] = {
|
||||||
{
|
{
|
||||||
@@ -447,3 +456,354 @@ void sub_809946C(struct Sprite * sprite)
|
|||||||
gSprites[sprite->data[5]].pos2.y = 0;
|
gSprites[sprite->data[5]].pos2.y = 0;
|
||||||
DestroyAnimSprite(sprite);
|
DestroyAnimSprite(sprite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sub_809949C(u8 taskId)
|
||||||
|
{
|
||||||
|
u16 r7 = 0x8000 / gBattleAnimArgs[3];
|
||||||
|
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||||
|
{
|
||||||
|
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||||
|
gBattleAnimArgs[5] = -gBattleAnimArgs[5];
|
||||||
|
}
|
||||||
|
gTasks[taskId].data[0] = GetAnimBankSpriteId(gBattleAnimArgs[0]);
|
||||||
|
gTasks[taskId].data[1] = gBattleAnimArgs[1] * 256 / gBattleAnimArgs[3];
|
||||||
|
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||||
|
gTasks[taskId].data[3] = gBattleAnimArgs[3];
|
||||||
|
gTasks[taskId].data[4] = gBattleAnimArgs[4];
|
||||||
|
gTasks[taskId].data[5] = gBattleAnimArgs[5] * 256 / gBattleAnimArgs[6];
|
||||||
|
gTasks[taskId].data[6] = gBattleAnimArgs[6];
|
||||||
|
gTasks[taskId].data[7] = r7;
|
||||||
|
gTasks[taskId].func = sub_8099530;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8099530(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId = gTasks[taskId].data[0];
|
||||||
|
gTasks[taskId].data[11] += gTasks[taskId].data[1];
|
||||||
|
gSprites[spriteId].pos2.x = gTasks[taskId].data[11] >> 8;
|
||||||
|
gSprites[spriteId].pos2.y = Sin((u8)(gTasks[taskId].data[10] >> 8), gTasks[taskId].data[2]);
|
||||||
|
gTasks[taskId].data[10] += gTasks[taskId].data[7];
|
||||||
|
if (--gTasks[taskId].data[3] == 0)
|
||||||
|
gTasks[taskId].func = sub_8099594;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8099594(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId;
|
||||||
|
|
||||||
|
if (gTasks[taskId].data[4] > 0)
|
||||||
|
gTasks[taskId].data[4]--;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
spriteId = gTasks[taskId].data[0];
|
||||||
|
gTasks[taskId].data[12] += gTasks[taskId].data[5];
|
||||||
|
gSprites[spriteId].pos2.x = (gTasks[taskId].data[12] >> 8) + (gTasks[taskId].data[11] >> 8);
|
||||||
|
if (--gTasks[taskId].data[6] == 0)
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80995FC(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId;
|
||||||
|
|
||||||
|
switch (gBattleAnimArgs[0])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (!sub_8072DF0(gBattleAnimAttacker ^ BIT_FLANK))
|
||||||
|
{
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
spriteId = gBattlerSpriteIds[gBattleAnimAttacker ^ BIT_FLANK];
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
if (!sub_8072DF0(gBattleAnimTarget ^ BIT_FLANK))
|
||||||
|
{
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
spriteId = gBattlerSpriteIds[gBattleAnimTarget ^ BIT_FLANK];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
gTasks[taskId].data[0] = spriteId;
|
||||||
|
if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
|
||||||
|
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||||
|
else
|
||||||
|
gTasks[taskId].data[1] = -gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].func = sub_80996B8;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80996B8(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId = gTasks[taskId].data[0];
|
||||||
|
gSprites[spriteId].pos2.x += gTasks[taskId].data[1];
|
||||||
|
if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x < -0x20 || gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x > 0x110)
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8099704(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId;
|
||||||
|
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||||
|
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||||
|
spriteId = GetAnimBankSpriteId(gBattleAnimArgs[4]);
|
||||||
|
gTasks[taskId].data[0] = gBattleAnimArgs[0];
|
||||||
|
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||||
|
gTasks[taskId].data[3] = gBattleAnimArgs[3];
|
||||||
|
gTasks[taskId].data[4] = spriteId;
|
||||||
|
if (gBattleAnimArgs[4] == 0)
|
||||||
|
gTasks[taskId].data[5] = gBattleAnimAttacker;
|
||||||
|
else
|
||||||
|
gTasks[taskId].data[5] = gBattleAnimTarget;
|
||||||
|
gTasks[taskId].data[12] = 1;
|
||||||
|
gTasks[taskId].func = sub_8099788;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8099788(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId;
|
||||||
|
u32 r8;
|
||||||
|
s16 r5;
|
||||||
|
u16 tmp;
|
||||||
|
|
||||||
|
spriteId = gTasks[taskId].data[4];
|
||||||
|
tmp = gTasks[taskId].data[10] + gTasks[taskId].data[2];
|
||||||
|
gTasks[taskId].data[10] = tmp;
|
||||||
|
r8 = tmp >> 8;
|
||||||
|
r5 = Sin(r8, gTasks[taskId].data[1]);
|
||||||
|
if (gTasks[taskId].data[0] == 0)
|
||||||
|
{
|
||||||
|
gSprites[spriteId].pos2.x = r5;
|
||||||
|
}
|
||||||
|
else if (GetBattlerSide(gTasks[taskId].data[5]) == B_SIDE_PLAYER)
|
||||||
|
{
|
||||||
|
gSprites[spriteId].pos2.y = abs(r5);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
gSprites[spriteId].pos2.y = -abs(r5);
|
||||||
|
if ((r8 > 0x7F && gTasks[taskId].data[11] == 0 && gTasks[taskId].data[12] == 1) || (r8 < 0x7F && gTasks[taskId].data[11] == 1 && gTasks[taskId].data[12] == 0))
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[11] ^= 1;
|
||||||
|
gTasks[taskId].data[12] ^= 1;
|
||||||
|
if (--gTasks[taskId].data[3] == 0)
|
||||||
|
{
|
||||||
|
gSprites[spriteId].pos2.x = 0;
|
||||||
|
gSprites[spriteId].pos2.y = 0;
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_80998B0(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[3]);
|
||||||
|
sub_80758E0(spriteId, gBattleAnimArgs[4]);
|
||||||
|
gTasks[taskId].data[0] = gBattleAnimArgs[0];
|
||||||
|
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||||
|
gTasks[taskId].data[3] = gBattleAnimArgs[2];
|
||||||
|
gTasks[taskId].data[4] = spriteId;
|
||||||
|
gTasks[taskId].data[10] = 0x100;
|
||||||
|
gTasks[taskId].data[11] = 0x100;
|
||||||
|
gTasks[taskId].func = sub_8099908;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8099908(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId;
|
||||||
|
gTasks[taskId].data[10] += gTasks[taskId].data[0];
|
||||||
|
gTasks[taskId].data[11] += gTasks[taskId].data[1];
|
||||||
|
spriteId = gTasks[taskId].data[4];
|
||||||
|
obj_id_set_rotscale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[11], 0);
|
||||||
|
if (--gTasks[taskId].data[2] == 0)
|
||||||
|
{
|
||||||
|
if (gTasks[taskId].data[3] > 0)
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[0] = -gTasks[taskId].data[0];
|
||||||
|
gTasks[taskId].data[1] = -gTasks[taskId].data[1];
|
||||||
|
gTasks[taskId].data[2] = gTasks[taskId].data[3];
|
||||||
|
gTasks[taskId].data[3] = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_8075980(spriteId);
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8099980(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]);
|
||||||
|
sub_80758E0(spriteId, 0);
|
||||||
|
gTasks[taskId].data[1] = 0;
|
||||||
|
gTasks[taskId].data[2] = gBattleAnimArgs[0];
|
||||||
|
if (gBattleAnimArgs[3] != 1)
|
||||||
|
gTasks[taskId].data[3] = 0;
|
||||||
|
else
|
||||||
|
gTasks[taskId].data[3] = gBattleAnimArgs[0] * gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[4] = gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[5] = spriteId;
|
||||||
|
gTasks[taskId].data[6] = gBattleAnimArgs[3];
|
||||||
|
if (sub_8073788())
|
||||||
|
gTasks[taskId].data[7] = 1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (gBattleAnimArgs[2] == 0)
|
||||||
|
gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : 0;
|
||||||
|
else
|
||||||
|
gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER ? 1 : 0;
|
||||||
|
}
|
||||||
|
if (gTasks[taskId].data[7] && !sub_8073788())
|
||||||
|
{
|
||||||
|
s16 tmp;
|
||||||
|
tmp = gTasks[taskId].data[3];
|
||||||
|
gTasks[taskId].data[3] = -tmp;
|
||||||
|
tmp = gTasks[taskId].data[4];
|
||||||
|
gTasks[taskId].data[4] = -tmp;
|
||||||
|
}
|
||||||
|
gTasks[taskId].func = sub_8099B54;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8099A78(u8 taskId)
|
||||||
|
{
|
||||||
|
u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[2]);
|
||||||
|
sub_80758E0(spriteId, 0);
|
||||||
|
gTasks[taskId].data[1] = 0;
|
||||||
|
gTasks[taskId].data[2] = gBattleAnimArgs[0];
|
||||||
|
if (gBattleAnimArgs[2] == 0)
|
||||||
|
{
|
||||||
|
if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||||
|
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (GetBattlerSide(gBattleAnimTarget) != B_SIDE_PLAYER)
|
||||||
|
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||||
|
}
|
||||||
|
if (gBattleAnimArgs[3] != 1)
|
||||||
|
gTasks[taskId].data[3] = 0;
|
||||||
|
else
|
||||||
|
gTasks[taskId].data[3] = gBattleAnimArgs[0] * gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[4] = gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[5] = spriteId;
|
||||||
|
gTasks[taskId].data[6] = gBattleAnimArgs[3];
|
||||||
|
gTasks[taskId].data[7] = 1;
|
||||||
|
if (gTasks[taskId].data[7] )
|
||||||
|
{
|
||||||
|
s16 tmp;
|
||||||
|
tmp = gTasks[taskId].data[3];
|
||||||
|
gTasks[taskId].data[3] = -tmp;
|
||||||
|
tmp = gTasks[taskId].data[4];
|
||||||
|
gTasks[taskId].data[4] = -tmp;
|
||||||
|
}
|
||||||
|
gTasks[taskId].func = sub_8099B54;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8099B54(u8 taskId)
|
||||||
|
{
|
||||||
|
s16 tmp;
|
||||||
|
gTasks[taskId].data[3] += gTasks[taskId].data[4];
|
||||||
|
obj_id_set_rotscale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]);
|
||||||
|
if (gTasks[taskId].data[7])
|
||||||
|
sub_80759DC(gTasks[taskId].data[5]);
|
||||||
|
if (++gTasks[taskId].data[1] >= gTasks[taskId].data[2])
|
||||||
|
{
|
||||||
|
switch (gTasks[taskId].data[6])
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
sub_8075980(gTasks[taskId].data[5]);
|
||||||
|
// fallthrough
|
||||||
|
case 0:
|
||||||
|
default:
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
gTasks[taskId].data[1] = 0;
|
||||||
|
tmp = gTasks[taskId].data[4];
|
||||||
|
gTasks[taskId].data[4] = -tmp;
|
||||||
|
gTasks[taskId].data[6] = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8099BD4(u8 taskId)
|
||||||
|
{
|
||||||
|
if (gBattleAnimArgs[0] == 0)
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[15] = gUnknown_2037EEC / 12;
|
||||||
|
if (gTasks[taskId].data[15] < 1)
|
||||||
|
gTasks[taskId].data[15] = 1;
|
||||||
|
if (gTasks[taskId].data[15] > 16)
|
||||||
|
gTasks[taskId].data[15] = 16;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gTasks[taskId].data[15] = gUnknown_2037EE8 / 12;
|
||||||
|
if (gTasks[taskId].data[15] < 1)
|
||||||
|
gTasks[taskId].data[15] = 1;
|
||||||
|
if (gTasks[taskId].data[15] > 16)
|
||||||
|
gTasks[taskId].data[15] = 16;
|
||||||
|
}
|
||||||
|
gTasks[taskId].data[14] = gTasks[taskId].data[15] / 2;
|
||||||
|
gTasks[taskId].data[13] = gTasks[taskId].data[14] + (gTasks[taskId].data[15] & 1);
|
||||||
|
gTasks[taskId].data[12] = 0;
|
||||||
|
gTasks[taskId].data[10] = gBattleAnimArgs[3];
|
||||||
|
gTasks[taskId].data[11] = gBattleAnimArgs[4];
|
||||||
|
gTasks[taskId].data[7] = GetAnimBankSpriteId(1);
|
||||||
|
gTasks[taskId].data[8] = gSprites[gTasks[taskId].data[7]].pos2.x;
|
||||||
|
gTasks[taskId].data[9] = gSprites[gTasks[taskId].data[7]].pos2.y;
|
||||||
|
gTasks[taskId].data[0] = 0;
|
||||||
|
gTasks[taskId].data[1] = gBattleAnimArgs[1];
|
||||||
|
gTasks[taskId].data[2] = gBattleAnimArgs[2];
|
||||||
|
gTasks[taskId].func = sub_8099CB8;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_8099CB8(u8 taskId)
|
||||||
|
{
|
||||||
|
struct Task *task = &gTasks[taskId];
|
||||||
|
if (++task->data[0] > task->data[1])
|
||||||
|
{
|
||||||
|
task->data[0] = 0;
|
||||||
|
task->data[12] = (task->data[12] + 1) & 1;
|
||||||
|
if (task->data[10])
|
||||||
|
{
|
||||||
|
if (task->data[12])
|
||||||
|
{
|
||||||
|
gSprites[task->data[7]].pos2.x = task->data[8] + task->data[13];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gSprites[task->data[7]].pos2.x = task->data[8] - task->data[14];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (task->data[11])
|
||||||
|
{
|
||||||
|
if (task->data[12])
|
||||||
|
{
|
||||||
|
gSprites[task->data[7]].pos2.y = task->data[15];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gSprites[task->data[7]].pos2.y = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!--task->data[2])
|
||||||
|
{
|
||||||
|
gSprites[task->data[7]].pos2.x = 0;
|
||||||
|
gSprites[task->data[7]].pos2.y = 0;
|
||||||
|
DestroyAnimVisualTask(taskId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user