public final void run() throws FatalError {
		printJump();

		if (!Utils.fightAvailable(20)) {
			return;
		}

		Utils.visit("challenge/");
		Utils.visit("sieben/intro/");
		Utils.visit("sieben/index/");

		try {
			JSONObject ob = Utils.getJSON("sieben/siebenData/");

			Control.sleep(5);

			Output.printTab("Kampf mit " + ob.getString("lastName") + " ("
					+ ob.getString("lastId") + ")", 1);

			Utils.visit("sieben/fight/" + ob.getString("lastId"));

			ob = Utils.getJSON("sieben/fightData/");

			ob.remove("result");

			if (ob.getInt("won") == 1) {
				Output.println(" - won", 1);
			} else {
				Output.println(" - lost", 1);
			}

			Output.addGolden(ob);

			Control.sleep(5);

			Utils.visit("sieben/");

			ob = Utils.getJSON("sieben/siebenData/");

			if (medicine != -1) {

				// Aktualisieren
				Control.current.getCharacter();

				int procent = Math.round((User.getCurrentLivePoints() / User
						.getMaxLivePoints()) * 100);

				// Wenn weniger Prozent Leben als angegen, dann Medizin kaufen.
				if (procent < medicine) {
					Utils.buyMedicine();
				}

				Utils.visit("sieben/");

				ob = Utils.getJSON("sieben/siebenData/");
			}
			long miliSeconds = ob.getInt("wait") * 1000 + 1000;
			int min = Math.round(miliSeconds / 60000);

			Control.sleep((min + 1) * 600, 2);

		} catch (JSONException e) {
			Output.printTabLn("Kein Kampf möglich", 1);

			if (Config.getDebug())
				e.printStackTrace();
		}
	}