Advertisement
EliteAnax17

Untitled

May 29th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. void atk00_attackcanceler(void){
  2. if (gBattleOutcome) {
  3. gFightStateTracker = 0xC; return;
  4. }
  5. else if (!gBattleMons[gBankAttacker].current_hp && !(gHitMarker & 0x200)){
  6. gHitMarker |= 0x80000;
  7. gBattlescriptCurrInstr = BS_ENDTURN;
  8. return;
  9. }
  10. else if (sub_8017718()) {return;}
  11. else if (sub_8018324(2, gBankTarget, 0, 0, 0)) {return;}
  12. else if (!gBattleMons[gBankAttacker].current_pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200)
  13. && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) {
  14. gBattlescriptCurrInstr = BS_NO_PP_FOR_MOVE;
  15. gBattleMoveFlags |= 1;
  16. return;
  17. }
  18. gHitMarker &= 0xff7fffff;
  19. if (!(gHitMarker & 0x2000000) && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))
  20. {
  21. u8 disobedience = sub_801B928();
  22. asm("":::"r0");
  23. asm("":::"r1"); // needed to match, whatever
  24. switch(disobedience)
  25. {
  26. case 0:
  27. break;
  28. case 2:
  29. gHitMarker |= 0x2000000;
  30. return;
  31. default:
  32. gBattleMoveFlags |= 1;
  33. return;
  34. }
  35. }
  36. gHitMarker |= 0x2000000;
  37. if (gProtectStructs[gBankTarget].flag0_bouncemove && gBattleMoves[gCurrentMove].flags & MAGICCOAT_AFFECTED) {
  38. sub_80151D4(gBankAttacker, gBankTarget, MOVE_MAGIC_COAT);
  39. gProtectStructs[gBankTarget].flag0_bouncemove = 0;
  40. b_movescr_stack_push_cursor();
  41. gBattlescriptCurrInstr = BS_MAGICCOAT_BOUNCE; return;
  42. }
  43. else
  44. {
  45. int i;
  46. for (i = 0; i < gNoOfAllBanks; i++)
  47. {
  48. struct protect_struct* Protect = gProtectStructs;
  49. u8 * turn_ptr = &gTurnOrder[i];
  50. u8 turn = gTurnOrder[i];
  51. if ((*(u8*) &Protect[turn]) << 0x1A < 0 && gBattleMoves[gCurrentMove].flags & SNATCH_AFFECTED) {
  52. sub_80151D4(gBankAttacker, turn, MOVE_SNATCH);
  53. Protect[* turn_ptr].flag0_stealmove = 0;
  54. BATTLE_STRUCT->ScriptingActive = * turn_ptr;
  55. b_movescr_stack_push_cursor();
  56. gBattlescriptCurrInstr = BS_SNATCHED; return;
  57. }
  58. }
  59. }
  60. if (gSpecialStatuses[gBankTarget].lightning_rod_redirected)
  61. {
  62. gSpecialStatuses[gBankTarget].lightning_rod_redirected = 0;
  63. gLastUsedAbility = ABILITY_LIGHTNING_ROD;
  64. b_movescr_stack_push_cursor();
  65. gBattlescriptCurrInstr = BS_TOOK_THE_ATTACK;
  66. sub_81074C4(gBankTarget, gLastUsedAbility);
  67. }
  68. else if (gProtectStructs[gBankTarget].flag0_protect && gBattleMoves[gCurrentMove].flags & PROTECT_AFFECTED &&
  69. (gCurrentMove != MOVE_CURSE || (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)) &&
  70. ((!sub_8028350(gCurrentMove) || (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))))
  71. {
  72. b_cancel_multi_turn_move_maybe(gBankAttacker);
  73. gBattleMoveFlags |= 1;
  74. gMoveHitWith[gBankTarget] = 0;
  75. gUnknown_02024C44[gBankTarget] = 0;
  76. gBattleCommunication.field6 = 1;
  77. gBattlescriptCurrInstr++;
  78. }
  79. else
  80. gBattlescriptCurrInstr++;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement