Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void Cmd_typecalc(void)
- {
- s32 i = 0;
- u8 moveType;
- if (gCurrentMove == MOVE_STRUGGLE)
- {
- gBattlescriptCurrInstr++;
- return;
- }
- GET_MOVE_TYPE(gCurrentMove, moveType);
- // check stab
- if (IS_BATTLER_OF_TYPE(gBattlerAttacker, moveType))
- {
- gBattleMoveDamage = gBattleMoveDamage * 15;
- gBattleMoveDamage = gBattleMoveDamage / 10;
- }
- if (gBattleMons[gBattlerTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
- {
- gLastUsedAbility = gBattleMons[gBattlerTarget].ability;
- gMoveResultFlags |= (MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE);
- gLastLandedMoves[gBattlerTarget] = 0;
- gLastHitByType[gBattlerTarget] = 0;
- gBattleCommunication[MISS_TYPE] = B_MSG_GROUND_MISS;
- RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
- }
- else
- {
- while (TYPE_EFFECT_ATK_TYPE(i) != TYPE_ENDTABLE)
- {
- if (TYPE_EFFECT_ATK_TYPE(i) == TYPE_FORESIGHT)
- {
- if (gBattleMons[gBattlerTarget].status2 & STATUS2_FORESIGHT)
- break;
- i += 3;
- continue;
- }
- else if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
- {
- // check type1
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1)
- ModulateDmgByType(TYPE_EFFECT_MULTIPLIER(i));
- // check type2
- if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2 &&
- gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2)
- ModulateDmgByType(TYPE_EFFECT_MULTIPLIER(i));
- }
- i += 3;
- }
- }
- if (gBattleMons[gBattlerTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBattlerAttacker, gCurrentMove) == 2
- && (!(gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) || ((gMoveResultFlags & (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)) == (MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE)))
- && gBattleMoves[gCurrentMove].power)
- {
- gLastUsedAbility = ABILITY_WONDER_GUARD;
- gMoveResultFlags |= MOVE_RESULT_MISSED;
- gLastLandedMoves[gBattlerTarget] = 0;
- gLastHitByType[gBattlerTarget] = 0;
- gBattleCommunication[MISS_TYPE] = B_MSG_AVOIDED_DMG;
- RecordAbilityBattle(gBattlerTarget, gLastUsedAbility);
- }
- if (gMoveResultFlags & MOVE_RESULT_DOESNT_AFFECT_FOE)
- gProtectStructs[gBattlerAttacker].targetNotAffected = 1;
- gBattlescriptCurrInstr++;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement