public void addDamageAfterPrevention(final int damage, final Card source, final boolean isCombat) {
        int damageToDo = damage;

        if (source.hasKeyword("Infect")) {
            addPoisonCounters(damageToDo);
        } else {
            //Worship does not reduce the damage dealt but changes the effect of the damage
            if (PlayerUtil.worshipFlag(this) && life <= damageToDo) {
                loseLife(Math.min(damageToDo, life - 1), source);
            } else
                //rule 118.2. Damage dealt to a player normally causes that player to lose that much life.
                loseLife(damageToDo, source);
        }
        if (damageToDo > 0) {
            addAssignedDamage(damageToDo);
            GameActionUtil.executeDamageDealingEffects(source, damageToDo);
            GameActionUtil.executeDamageToPlayerEffects(this, source, damageToDo);

            //Run triggers
            HashMap<String, Object> runParams = new HashMap<String, Object>();
            runParams.put("DamageSource", source);
            runParams.put("DamageTarget", this);
            runParams.put("DamageAmount", damageToDo);
            runParams.put("IsCombatDamage", isCombat);
            AllZone.getTriggerHandler().runTrigger("DamageDone", runParams);
        }
    }