private CardList doDraw() {
    	CardList drawn = new CardList();
    	PlayerZone library = AllZone.getZone(Constant.Zone.Library, this);
        if (library.size() != 0) {
            Card c = library.get(0);
            c = AllZone.getGameAction().moveToHand(c);

            setLastDrawnCard(c);
            c.setDrawnThisTurn(true);
            numDrawnThisTurn++;
            drawn.add(c);

            //Run triggers
            HashMap<String, Object> runParams = new HashMap<String, Object>();
            runParams.put("Card", c);
            AllZone.getTriggerHandler().runTrigger("Drawn", runParams);
        }
        //lose:
        else if (!Constant.Runtime.DevMode[0] || AllZone.getDisplay().canLoseByDecking()) {
            // if devMode is off, or canLoseByDecking is Enabled, run Lose Condition
            if (altLoseConditionMet("Milled")) {
                AllZone.getGameAction().checkStateEffects();
            }
        }
        return drawn;
    }