public void setTargetPlayer(Player p) {
        if (p == null || (!(p.isHuman() || p.isComputer()))) throw new RuntimeException(
                "SpellAbility : setTargetPlayer() error, argument is " + p + " source card is " + getSourceCard());

        Target tgt = this.getTarget();
        if (tgt != null) {
            tgt.addTarget(p);
        } else {
            targetCard = null;//reset setTargetCard()
            targetPlayer = p;
        }
        setStackDescription(getSourceCard().getName() + " - targeting " + p);
    }