private static String preventDamageStackDescription(AbilityFactory af, SpellAbility sa) {
        final HashMap<String, String> params = af.getMapParams();
        StringBuilder sb = new StringBuilder();
        Card host = af.getHostCard();

        ArrayList<Object> tgts;
        if (sa.getTarget() == null)
            tgts = AbilityFactory.getDefinedObjects(sa.getSourceCard(), params.get("Defined"), sa);
        else
            tgts = sa.getTarget().getTargets();

        if (sa instanceof Ability_Sub)
            sb.append(" ");
        else
            sb.append(host).append(" - ");

        sb.append("Prevent the next ");
        sb.append(params.get("Amount"));
        sb.append(" that would be dealt to ");
        for (int i = 0; i < tgts.size(); i++) {
            if (i != 0)
                sb.append(" ");

            Object o = tgts.get(i);
            if (o instanceof Card) {
                Card tgtC = (Card) o;
                if (tgtC.isFaceDown()) sb.append("Morph");
                else sb.append(tgtC);
            } else sb.append(o.toString());
        }
        sb.append(" this turn.");

        Ability_Sub abSub = sa.getSubAbility();
        if (abSub != null) {
            sb.append(abSub.getStackDescription());
        }

        return sb.toString();
    }