Software für Hearthstone

Da es mir zu blöd war nach jedem absolvierten Erfolg den nächsten nachzuschlagen, habe ich eine neue Batch-Datei geschrieben, die eine Textdatei („Achievements.todo.txt“) mit allen noch benötigten Erfolgen (nur die jeweils nächste Stufe) erstellt und diese dann öffnet.
(Ist vermutlich nur nützlich im Window-Modus, den ich benutze.)

Im Sourcecode vor allen erreichten Erfolgen ein Semikolon, setzen um dem Programm mitzuteilen, dass ihr diese schon erhalten habt und dann die Batch doppelklicken um eine aktualisierte Fassung dieser Datei zu erstellen.

Ich habe noch ein paar Lücken („Gebt Euch der leere hin“ 1-4 und „Kostet nur den Verstand“ 1-4), da ich diese Erfolge schon versehentlich erfüllt habe (und diese vor Stufe 35 nicht abgeben will).
Auch weiß ich nicht genau, wo die Quest „Dermatologie“ positioniert war, die ich erfüllt und abgegeben hatte um zu sehen, ob es Bonus-XP geben würde (leider ohne vorher ins Forum zu schauen und zu sehen, dass VBrainstone das ebenfalls schon getestet hatte, siehe hier.

Sourcecode "Achievements.bat"
@echo off
setlocal enableExtensions enableDelayedExpansion
>"Achievements.todo.txt" call :main
start "" "Achievements.todo.txt"
goto :eof

:main
if not defined skip for /f "delims=: eol=" %%a in ('findstr /n /r "^;Erfolge$" "%~f0"') do set "skip=%%~a"

set /a "available_XP=0, available_EP=0"
for %%a in ("category" "subcategory" "group" "title" "text" "level" "XP=" "EP="  "treasure=") do (
	set "previous_%%~a="
	set "%%~a="
)

for /f "tokens=1* skip=%skip% eol=; delims=:" %%a in ('findstr /r "^" "%~f0"') do (
	for %%A in (%%a) do set "%%~A"
	set /a "available_XP+=XP, available_EP+=EP"
	if defined XP set "XP=!XP! Belohnungserfarung, "

	if NOT "!previous_category!" == "!category!" (
		echo([!category!]
	) else if NOT "!previous_subcategory!" == "!subcategory!" (
		echo([[!subcategory!]]
	) else if NOT "!previous_group!" == "!group!" (
		echo(
		echo(;!group!
	)
	if NOT "!previous_title!" == "!title!" (
		echo(!title!
		echo(!text!
		echo(!XP!!EP! Erfolgspunkte
		echo(
	)
	for %%a in ("category" "subcategory" "group" "title" "text" "level" "XP=" "EP="  "treasure=") do set "previous_%%~a=!%%~a!"
)

echo(;Es sind noch !available_XP! Belohnungserfarung (ohne Boost) und !available_EP! Erfolgspunkte verfügbar.

goto :eof

;Erfolge
;Achievements
;...
;===
"category=Gameplay"
"subcategory=Gameplay - Dunkelmond-Wahnsinn"
"group=Dämonenjäger"
"title=Guter Wurf" "text=Vernichtet in einem einzigen Zug 5 Diener mit einer Gleve" "XP=200" "EP=20"
"title=Gemeinsam einsam" "text=Kontrolliert einen Geläuterten Pariah mit 10 Angriff oder mehr." "XP=200" "EP=20"
"title=Auf Entzug" "text=Verursacht 10 Schaden mit dem Effekt von Il'gynoth" "level=1" "XP=100" "EP=10"
"title=Auf Entzug" "text=Verursacht 30 Schaden mit dem Effekt von Il'gynoth" "level=2" "XP=100" "EP=10"
"title=Auf Entzug" "text=Verursacht 100 Schaden mit dem Effekt von Il'gynoth" "level=3" "XP=500" "EP=20"
"group=Druide"
"title=BETRUG^^^!" "text=Erratet das Gewicht eurer nächsten Karte 10-mal richtig." "XP=200" "EP=20"
"title=Sonne, Mond ... und keine Sterne" "text=Wirkt 6 Sonnen oder Mondfinsternisse in einem einzigen Spiel." "XP=200" "EP=20"
"title=Verzweigt" "text=Ruft 20-mal Grauzweig herbei." "level=1" "XP=100" "EP=10"
"title=Verzweigt" "text=Ruft 100-mal Grauzweig herbei." "level=2" "XP=100" "EP=10"
"title=Verzweigt" "text=Ruft 200-mal Grauzweig herbei." "level=3" "XP=500" "EP=20"
"group=Jäger"
"title=Wir stehen und fallen zusammen" "text=Kontrolliert 3 identische Diener mit Todesröcheln." "XP=200" "EP=20"
"title=Werft mich^^^!" "text=Besiegt euren Gegner, indem ihr einen Diener auf ihn abfeuert." "XP=200" "EP=20"
"title=Panzergeneral" "text=Verursacht 50 Schaden mit dem Dunkelmondpanzer." "level=1" "XP=100" "EP=10"
"title=Panzergeneral" "text=Verursacht 150 Schaden mit dem Dunkelmondpanzer." "level=2" "XP=100" "EP=10"
"title=Panzergeneral" "text=Verursacht 500 Schaden mit dem Dunkelmondpanzer." "level=3" "XP=500" "EP=20"
"group=Magier"
"title=Totenmaske" "text=Verursacht tödlichen Schaden mit der Maske von C'Thun." "XP=200" "EP=20"
"title=Spiegelsaal" "text=Kontrolliert 4 Okkulte Beschwörerinnen gleichzeitig" "XP=200" "EP=20"
"title=Eure Zukunft ist umschattet" "text=Zieht 5 Karten mit Sayge" "level=1" "XP=100" "EP=10"
"title=Eure Zukunft ist umschattet" "text=Zieht 20 Karten mit Sayge" "level=2" "XP=100" "EP=10"
"title=Eure Zukunft ist umschattet" "text=Zieht 50 Karten mit Sayge" "level=3" "XP=500" "EP=20"
"group=Paladin"
"title=Ihr habt geläutet❔" "text=Stellt mit Hochexarchin Yrel 100 Leben wieder her." "XP=200" "EP=20"
"title=Yogg Champ" "text=Verursacht Tödlichen Schaden mit Oh mein Yogg^^^!" "XP=200" "EP=20"
"title=Lothraxions Ballonladen" "text=Verleiht 10 Rekruten der Silbernen Hand Gottesschild" "level=1" "XP=100" "EP=10"
"title=Lothraxions Ballonladen" "text=Verleiht 30 Rekruten der Silbernen Hand Gottesschild" "level=2" "XP=100" "EP=10"
"title=Lothraxions Ballonladen" "text=Verleiht 100 Rekruten der Silbernen Hand Gottesschild" "level=3" "XP=500" "EP=20"
"group=Priester"
"title=Spoiler^^^!" "text=Ruft einen Wahrsager mit 10 Angriff oder mehr herbei." "XP=200" "EP=20"
"title=Einer hat keinen Namen" "text=Stehlt gleichzeitig 3 oder mehr Verzauberungen der Namenlosen." "XP=200" "EP=20"
"title=Blut für den Blutgott" "text=Verbraucht als Priester 10 Leben, um Karten auszuspielen." "level=1" "XP=100" "EP=10"
"title=Blut für den Blutgott" "text=Verbraucht als Priester 30 Leben, um Karten auszuspielen." "level=2" "XP=100" "EP=10"
"title=Blut für den Blutgott" "text=Verbraucht als Priester 100 Leben, um Karten auszuspielen." "level=3" "XP=500" "EP=20"
"group=Schurke"
"title=Verbotenes Jutsu" "text=Ruft mit Schattenklon einen Diener herbei, der 10 oder mehr kostet." "XP=200" "EP=20"
"title=Myras instabile Kaiserin" "text=Zieht mit dem Kampfschrei einer einzigen Großkaiserin Shek'zara 5 Karten." "XP=200" "EP=20"
"title=ES IST SOOO FLAUSCHIG" "text=Verursacht 10 Schaden mit dem Combo-Effekt des Preisplünderers." "level=1" "XP=100" "EP=10"
"title=ES IST SOOO FLAUSCHIG" "text=Verursacht 30 Schaden mit dem Combo-Effekt des Preisplünderers." "level=2" "XP=100" "EP=10"
"title=ES IST SOOO FLAUSCHIG" "text=Verursacht 100 Schaden mit dem Combo-Effekt des Preisplünderers." "level=3" "XP=500" "EP=20"
"group=Schamane"
"title=Schlaghagel" "text=Verursacht in einem einzigen Zug 16 Schaden mit Heldenangriffen." "XP=200" "EP=20"
"title=Drehwurm" "text=Verwandelt mit einem einzigen Karussel 14 Diener gleichzeitg." "XP=200" "EP=20"
"title=Dunkelmond-Schreinerei" "text=Verstärkt 10 Totems mit Eys'or" "level=1" "XP=100" "EP=10"
"title=Dunkelmond-Schreinerei" "text=Verstärkt 30 Totems mit Eys'or" "level=2" "XP=100" "EP=10"
"title=Dunkelmond-Schreinerei" "text=Verstärkt 100 Totems mit Eys'or" "level=3" "XP=" "XP=500" "EP=20"
"group=Hexenmeister"
"title=Heilige Handgranate gesucht" "text=Spielt ein Dunkelmond-Kannchen aus, das (1) kostet." "XP=200" "EP=20"
"title=Mein Freund ist ganz vorn" "text=Zieht 2 Dämonen mit Freier Eintritt und verringert die Kosten von beiden auf (0)." "XP=200" "EP=20"
"title=Eskalierende Eskarpaden" "text=Vernichtet 5 Diener mit der Katastrophenkaskade." "level=1" "XP=100" "EP=10"
"title=Eskalierende Eskarpaden" "text=Vernichtet 15 Diener mit der Katastrophenkaskade." "level=2" "XP=100" "EP=10"
"title=Eskalierende Eskarpaden" "text=Vernichtet 50 Diener mit der Katastrophenkaskade." "level=3" "XP=500" "EP=20"
"group=Krieger"
"title=Gute Mine zum Bösen Spiel" "text=Vernichtet 5 Diener mit einem einzigen Minenfeld." "XP=200" "EP=20"
"title=Der Zeltenbrecher" "text=Spielt einen Zeltzerstörer aus, der (0) kostet." "XP=200" "EP=20"
"title=Trommelwirbel" "text=Löst 5 Schlagzeugsolos mit E.T.C., Gott des Metal aus." "level=1" "XP=100" "EP=10"
"title=Trommelwirbel" "text=Löst 15 Schlagzeugsolos mit E.T.C., Gott des Metal aus." "level=2" "XP=100" "EP=10"
"title=Trommelwirbel" "text=Löst 50 Schlagzeugsolos mit E.T.C., Gott des Metal aus." "level=3" "XP=500" "EP=20"
"group=Neutral"
"title=Gebt Euch der leere hin" "text=Spielt 15 verderbte Karten aus." "level=1" "XP=" "EP="
"title=Gebt Euch der leere hin" "text=Spielt ❔ verderbte Karten aus." "level=2" "XP=" "EP="
"title=Gebt Euch der leere hin" "text=Spielt ❔ verderbte Karten aus." "level=3" "XP=" "EP="
"title=Gebt Euch der leere hin" "text=Spielt ❔ verderbte Karten aus." "level=4" "XP=" "EP="
"title=Kostet nur den Verstand" "text=Spielt eine verderbte Karte aus, die (0) kostet." "level=1" "XP=" "EP="
"title=Kostet nur den Verstand" "text=Spielt ❔ verderbte Karte aus, die (0) kostet." "level=2" "XP=" "EP="
"title=Kostet nur den Verstand" "text=Spielt ❔ verderbte Karte aus, die (0) kostet." "level=3" "XP=" "EP="
"title=Kostet nur den Verstand" "text=Spielt ❔ verderbte Karte aus, die (0) kostet." "level=4" "XP=" "EP="
"title=Coulrophobie" "text=Füllt Eure Seite des Schlachtfelds mit Jahrmarktsclowns." "XP=200" "EP=20"
"title=Harmloser kleiner Nager" "text=Vernichtet 5 mit einem Dunkelmond-Kaninchen." "level=1" "XP=100" "EP=10"
"title=Harmloser kleiner Nager" "text=Vernichtet 10 mit einem Dunkelmond-Kaninchen." "level=2" "XP=100" "EP=10"
"title=Harmloser kleiner Nager" "text=Vernichtet 25 mit einem Dunkelmond-Kaninchen." "level=3" "XP=200" "EP=20"
"title=Exitus" "text=Besiegt Euren Gegner, der vorher volles Leben hatte, mit C'Thun dem Zerschlagenen." "XP=500" "EP=20"
"title=Die Toten sollen dienen" "text=Belebt 6 Diener gleichzeitig mit N'Zoth, Gott der Tiefen wieder." "XP=500" "EP=20"
"title=Gutes Rad ist teuer" "text=Dreht das Rad von Yogg-Saron" "level=1" "XP=100" "EP=10"
"title=Gutes Rad ist teuer" "text=Dreht das Rad von Yogg-Saron, um zu gewinnen." "level=2" "XP=200" "EP=20"
"title=Unglücksrad" "text=Löst 3 verschiedene Effekte des Rads von Yogg-Saron aus." "level=1" "XP=100" "EP=10"
"title=Unglücksrad" "text=Löst alle Effekte des Rads von Yogg-Saron aus." "level=2" "XP=200" "EP=20"
"title=Dermatologie" "text=Spielt ein Entsetzliches Geschwür mit 7 Angriff oder mehr aus." "level=1" "XP=100" "EP=10"
"title=Dermatologie" "text=Spielt ein Entsetzliches Geschwür mit 15 Angriff oder mehr aus." "level=2" "XP=200" "EP=20"
;Gameplay - Allgemein
;Klassen
;...
;Neutral
;...
;===
;...
;
;;Kategorie
;"title=" "text=" ["level="] ["XP="] "EP=" ["treasure="]

Edit: Da mich gerade jemand darauf angesprochen hatte:
Nein, das soll kein Necromancing sein, da dieses Thema eine Sammlung von HS-Software sein soll und meine neue Batch das thematisch halt exakt trifft. Und für diese eine Batch ein neues Thema „aufzumachen“, fände ich zu merkwürdig.

Edit2: Bugfixes: (Falls jemand weitere findet, bitte melden.)
(1) Korrektur „Stelht“ zu „Stehlt“.
(2) Die for-Schleife hat anscheinend Probleme mit „?“ in den Daten und ignoriert dadurch die set-Befehle, daher habe ich alle „?“ durch „:grey_question:“ ersetzt (und hoffe, dass das Forum dieses Unicode-Zeichen nicht weiter verändert).

2 Likes