public boolean hasLost() {

        if (cantLose())
            return false;

        if (altLose) {
            return true;
        }

        if (poisonCounters >= 10) {
            altLoseConditionMet("Poison Counters");
            return true;
        }

        if (cantLoseForZeroOrLessLife()) {
            return false;
        }

        return getLife() <= 0;
    }