diff options
author | camthesaxman <cameronghall@cox.net> | 2017-11-26 23:33:31 -0600 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-11-26 23:33:31 -0600 |
commit | 5d74d11d3e3047b4b53153365325db9e6999c627 (patch) | |
tree | f15fe9425296d4f95d0cd7190d6f19f852fbfe93 /src/battle/anim/strike.c | |
parent | 48ec0941b4ebbe78fe70ef93d205ce52d2de89b2 (diff) | |
parent | e6500d12a21e9833e08ad25cc6a76b075cff42dd (diff) |
fix merge conflicts
Diffstat (limited to 'src/battle/anim/strike.c')
-rwxr-xr-x | src/battle/anim/strike.c | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/battle/anim/strike.c b/src/battle/anim/strike.c new file mode 100755 index 000000000..f2fbdb5a4 --- /dev/null +++ b/src/battle/anim/strike.c @@ -0,0 +1,77 @@ +#include "global.h" +#include "rom_8077ABC.h" +#include "trig.h" +#include "battle_anim.h" +#include "sound.h" + +extern s16 gBattleAnimArgs[]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80CE798(struct Sprite* sprite); + +// strike (A red strike towards the opponent.) +// Used in Horn Attack, Fury Attack, and Horn Drill. + +void sub_80CE670(struct Sprite* sprite) +{ + if (gBattleAnimArgs[2] <= 1) + gBattleAnimArgs[2] = 2; + + if (gBattleAnimArgs[2] > 0x7F) + gBattleAnimArgs[2] = 0x7F; + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[2]; + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2) + gBattleAnimArgs[0]; + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[1]; + sprite->data[6] = sprite->pos1.x; + sprite->data[7] = sprite->pos1.y; + if (NotInBattle() != 0) + { + sprite->oam.matrixNum = 8; + sprite->pos1.x += 40; + sprite->pos1.y += 20; + sprite->data[2] = sprite->pos1.x << 7; + sprite->data[3] = -0x1400 / sprite->data[1]; + sprite->data[4] = sprite->pos1.y << 7; + sprite->data[5] = -0xA00 / sprite->data[1]; + } + else if (GetBankSide(gBattleAnimBankAttacker) == 0) + { + sprite->pos1.x -= 40; + sprite->pos1.y += 20; + sprite->data[2] = sprite->pos1.x << 7; + sprite->data[3] = 0x1400 / sprite->data[1]; + sprite->data[4] = sprite->pos1.y << 7; + sprite->data[5] = -0xA00 / sprite->data[1]; + } + else + { + sprite->pos1.x += 40; + sprite->pos1.y -= 20; + sprite->data[2] = sprite->pos1.x << 7; + sprite->data[3] = -0x1400 / sprite->data[1]; + sprite->data[4] = sprite->pos1.y << 7; + sprite->data[5] = 0xA00 / sprite->data[1]; + sprite->oam.matrixNum = 24; + } + + sprite->callback = sub_80CE798; +} + +void sub_80CE798(struct Sprite* sprite) +{ + sprite->data[2] += sprite->data[3]; + sprite->data[4] += sprite->data[5]; + sprite->pos1.x = sprite->data[2] >> 7; + sprite->pos1.y = sprite->data[4] >> 7; + if (--sprite->data[1] == 1) + { + sprite->pos1.x = sprite->data[6]; + sprite->pos1.y = sprite->data[7]; + } + + if (sprite->data[1] == 0) + move_anim_8072740(sprite); +} |