Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void atk00_attackcanceler(void){
- if (gBattleOutcome) {
- gFightStateTracker = 0xC; return;
- }
- else if (!gBattleMons[gBankAttacker].current_hp && !(gHitMarker & 0x200)){
- gHitMarker |= 0x80000;
- gBattlescriptCurrInstr = BS_ENDTURN;
- return;
- }
- else if (sub_8017718()) {return;}
- else if (sub_8018324(2, gBankTarget, 0, 0, 0)) {return;}
- else if (!gBattleMons[gBankAttacker].current_pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200)
- && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) {
- gBattlescriptCurrInstr = BS_NO_PP_FOR_MOVE;
- gBattleMoveFlags |= 1;
- return;
- }
- gHitMarker &= 0xff7fffff;
- if (!(gHitMarker & 0x2000000) && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))
- {
- u8 disobedience = sub_801B928();
- asm("":::"r0");
- asm("":::"r1"); // needed to match, whatever
- switch(disobedience)
- {
- case 0:
- break;
- case 2:
- gHitMarker |= 0x2000000;
- return;
- default:
- gBattleMoveFlags |= 1;
- return;
- }
- }
- gHitMarker |= 0x2000000;
- if (gProtectStructs[gBankTarget].flag0_bouncemove && gBattleMoves[gCurrentMove].flags & MAGICCOAT_AFFECTED) {
- sub_80151D4(gBankAttacker, gBankTarget, MOVE_MAGIC_COAT);
- gProtectStructs[gBankTarget].flag0_bouncemove = 0;
- b_movescr_stack_push_cursor();
- gBattlescriptCurrInstr = BS_MAGICCOAT_BOUNCE; return;
- }
- else
- {
- int i;
- for (i = 0; i < gNoOfAllBanks; i++)
- {
- struct protect_struct* Protect = gProtectStructs;
- u8 * turn_ptr = &gTurnOrder[i];
- u8 turn = gTurnOrder[i];
- if ((*(u8*) &Protect[turn]) << 0x1A < 0 && gBattleMoves[gCurrentMove].flags & SNATCH_AFFECTED) {
- sub_80151D4(gBankAttacker, turn, MOVE_SNATCH);
- Protect[* turn_ptr].flag0_stealmove = 0;
- BATTLE_STRUCT->ScriptingActive = * turn_ptr;
- b_movescr_stack_push_cursor();
- gBattlescriptCurrInstr = BS_SNATCHED; return;
- }
- }
- }
- if (gSpecialStatuses[gBankTarget].lightning_rod_redirected)
- {
- gSpecialStatuses[gBankTarget].lightning_rod_redirected = 0;
- gLastUsedAbility = ABILITY_LIGHTNING_ROD;
- b_movescr_stack_push_cursor();
- gBattlescriptCurrInstr = BS_TOOK_THE_ATTACK;
- sub_81074C4(gBankTarget, gLastUsedAbility);
- }
- else if (gProtectStructs[gBankTarget].flag0_protect && gBattleMoves[gCurrentMove].flags & PROTECT_AFFECTED &&
- (gCurrentMove != MOVE_CURSE || (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)) &&
- ((!sub_8028350(gCurrentMove) || (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))))
- {
- b_cancel_multi_turn_move_maybe(gBankAttacker);
- gBattleMoveFlags |= 1;
- gMoveHitWith[gBankTarget] = 0;
- gUnknown_02024C44[gBankTarget] = 0;
- gBattleCommunication.field6 = 1;
- gBattlescriptCurrInstr++;
- }
- else
- gBattlescriptCurrInstr++;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement