local Event = require 'utils.event'

local function on_entity_damaged(event)
    if not event.cause then
        return
    end
    if not event.cause.valid then
        return
    end
    if event.cause.name ~= 'character' then
        return
    end
    if event.damage_type.name ~= 'physical' then
        return
    end

    local player = event.cause
    if player.shooting_state.state == defines.shooting.not_shooting then
        return
    end
    local weapon = player.get_inventory(defines.inventory.character_guns)[player.selected_gun_index]
    local ammo = player.get_inventory(defines.inventory.character_ammo)[player.selected_gun_index]
    if not weapon.valid_for_read or not ammo.valid_for_read then
        return
    end
    if weapon.name ~= 'pistol' then
        return
    end
    if ammo.name ~= 'firearm-magazine' and ammo.name ~= 'piercing-rounds-magazine' and ammo.name ~= 'uranium-rounds-magazine' then
        return
    end
    if not event.entity.valid then
        return
    end
    event.entity.damage(event.final_damage_amount * 3, player.force, 'impact', player)
end

Event.add(defines.events.on_entity_damaged, on_entity_damaged)
