public boolean endTurn(Integer activePlayerId) {

		// Cooldowns
		for (Attack a : this.getAttacks()) {
			if (a.getCooldownRemaining() < 0) {
				a.setCooldownRemaining(0);
			} else if (a.getCooldownRemaining() > 0) {
				a.setCooldownRemaining(a.getCooldownRemaining() - 1);
			}
		}

		// TODO: Regen

		// Update Moves
		if (activePlayerId.toString().equalsIgnoreCase(playerId)) {
			this.setMovesRemaining(0);
		} else {
			this.setMovesRemaining(this.getMoveDistance());
		}

		// Status effects
		Iterator<String> i = statusEffects.keySet().iterator();
		while (i.hasNext()) {
			String name = i.next();
			StatusEffect se = statusEffects.get(name);
			if (se.durationRemaining > 0) {
				if (!se.execute(this)) {
					// LOG FAILURE
					// It would be cool if it also logged an ID of the failure
					// and included it in the client error logs
					// so they could reference like a bug status or something
				}
			}

			se.durationRemaining--;
			if (se.durationRemaining <= 0) {
				statusEffects.remove(name);
			}
		}

		// To live or Die?
		if (this.getCurrentHp() <= 0) {
			this.setDead(true);
		}

		return true;
	}