void final_damagecalc_cmd7()
{
    battlescripts_curr_instruction++;
    if (damage_loc == 0)
        damage_loc = 1;

    if (!affected_by_substitute(bank_target))
    {
        u16 target_hp = battle_participants[bank_target].current_hp;
        if (protect_structs[bank_target].flag0_endure && damage_loc > target_hp)
        {
            damage_loc = target_hp - 1;
            move_outcome.endured = 1;
        }
        else if ((current_move == MOVE_FALSE_SWIPE || current_move == MOVE_HOLD_BACK) && damage_loc > target_hp && !(move_outcome.failed || move_outcome.missed || move_outcome.not_affected))
        {
            damage_loc = target_hp - 1;
        }
        else if (battle_participants[bank_target].ability_id == ABILITY_STURDY && has_ability_effect(bank_target, 1, 1) && damage_loc > target_hp && target_hp == battle_participants[bank_target].max_hp)
        {
            damage_loc = target_hp - 1;
            move_outcome.sturdied = 1;
        }
        else
        {
            switch (get_item_effect(bank_target, 1))
            {
            case ITEM_EFFECT_FOCUSSASH:
                if (damage_loc > target_hp && target_hp == battle_participants[bank_target].max_hp)
                {
                    damage_loc = target_hp - 1;
                    move_outcome.hanged_on_using_item = 1;
                    last_used_item = battle_participants[bank_target].held_item;
                    battle_participants[bank_target].held_item = 0;
                    active_bank = bank_target;
                    prepare_setattributes_in_battle(0, 2, 0, 2, &battle_participants[bank_target].held_item);
                    mark_buffer_bank_for_execution(bank_target);
                }
                break;
            case ITEM_EFFECT_FOCUSBAND:
                if (damage_loc > target_hp && (__umodsi3(rng(), 100) + 1) < get_all_item_quality(bank_target))
                {
                    damage_loc = target_hp - 1;
                    move_outcome.hanged_on_using_item = 1;
                    last_used_item = battle_participants[bank_target].held_item;
                }
                break;
            }
        }
    }
    return;
}
void atk07_final_dmg_calc(void)
{
    if (battle_execution_buffer) {return;}
    battlescripts_curr_instruction++;

    if(battle_participants[bank_target].species == POKE_MIMIKKYU && check_ability(bank_target,ABILITY_DISGUISE)
       && has_ability_effect(bank_target, 1, 1) && MOVE_WORKED && !affected_by_substitute(bank_target))
    {
        new_battlestruct->various.bust_mimikyu = 1;
        damage_loc = 0;
        move_outcome.super_effective = 0;
        move_outcome.not_very_effective = 0;
        move_outcome.one_hit_ko = 0;
    }
    else
    {
        if (new_battlestruct->various.berry_damage_redux)
        {
            u16 item = battle_participants[bank_target].held_item;
            new_battlestruct->various.berry_damage_redux = 0;
            if (MOVE_WORKED && DAMAGING_MOVE(current_move) && item)
            {
                battle_scripting.active_bank = bank_target;
                last_used_item = item;
                bs_push_current(BS_BERRY_DMG_REDUCE);
                setup_berry_consume_buffers(bank_target);
            }
        }
        damage_loc = ATLEAST_ONE(damage_loc);
        if (!affected_by_substitute(bank_target))
        {
            u16 target_hp = battle_participants[bank_target].current_hp;
            if (protect_structs[bank_target].flag0_endure && damage_loc > target_hp)
            {
                damage_loc = target_hp - 1;
                move_outcome.endured = 1;
            }
            else if ((current_move == MOVE_FALSE_SWIPE || current_move == MOVE_HOLD_BACK) && damage_loc > target_hp && !(move_outcome.failed || move_outcome.missed || move_outcome.not_affected))
            {
                damage_loc = target_hp - 1;
            }
            else if (battle_participants[bank_target].ability_id == ABILITY_STURDY && has_ability_effect(bank_target, 1, 1) && damage_loc > target_hp && target_hp == battle_participants[bank_target].max_hp)
            {
                damage_loc = target_hp - 1;
                move_outcome.sturdied = 1;
            }
            else
            {
                switch (get_item_effect(bank_target, 1))
                {
                case ITEM_EFFECT_FOCUSSASH:
                    if (damage_loc > target_hp && target_hp == battle_participants[bank_target].max_hp)
                    {
                        damage_loc = target_hp - 1;
                        move_outcome.hanged_on_using_item = 1;
                        last_used_item = battle_participants[bank_target].held_item;
                        battle_participants[bank_target].held_item = 0;
                        active_bank = bank_target;
                        bb2_setattributes_in_battle(0, 2, 0, 2, &battle_participants[bank_target].held_item);
                        mark_buffer_bank_for_execution(bank_target);
                    }
                    break;
                case ITEM_EFFECT_FOCUSBAND:
                    if (damage_loc > target_hp && (__umodsi3(rng(), 100) + 1) < get_all_item_quality(bank_target))
                    {
                        damage_loc = target_hp - 1;
                        move_outcome.hanged_on_using_item = 1;
                        last_used_item = battle_participants[bank_target].held_item;
                    }
                    break;
                }
            }
        }
    }
}