MediaWiki:Kutschfahrt generator.js

Aus Werwolf Online

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
(function () {
    var inputField = document.createElement('input');
    inputField.type = 'text';
    inputField.value = '4_wf_k_123';
    inputField.id = 'textfield';
    var inputButton = document.createElement('input');
    inputButton.type = 'button';
    inputButton.value = 'Erzeuge Setting';
    inputButton.addEventListener('click', action);
    
    var inputDiv = document.getElementById('loadCustomJS');
    inputDiv.innerHTML = '';
    inputDiv.appendChild(inputField);
    inputDiv.appendChild(inputButton);
    
    // Code von Sareon
    function Karte(text) {
        this.text = text;
    }

    function Beruf(text) {
        this.text = text;
    }

    function Gesinnung(text) {
        this.text = text;
    }

    //Standard
    var Kelch = new Karte("Kelch");
    var Schluessel = new Karte("Schlüssel");
    var KofferDerKelche = new Karte("Koffer der Bruderschaft (Kelch)");
    var KofferDerSchluessel = new Karte("Koffer des Ordens (Schlüssel)");
    var Monokel = new Karte("Monokel");
    var Handschuhe = new Karte("Handschuhe");
    var Dolch = new Karte("Dolch");
    var Wurfmesser = new Karte("Wurfmesser");
    var Peitsche = new Karte("Peitsche");
    var ZerbrochenerSpiegle = new Karte("Zerbrochener Spiegel");
    var Giftring = new Karte("Giftring");
    var Freibrief = new Karte("Freibrief");
    var Mantel = new Karte("Mantel");
    //Foliant
    var Foliant = new Karte("Foliant");
    //Wappen
    var WappenDerLoge = new Karte("Wappen der Loge");
    //Tausch
    var Sextant = new Karte("Sextant");
    var SchwarzePerle = new Karte("Schwarze Perle");
    //ErwKampf
    var Besitzurkunde = new Karte("Besitzurkunde");
    var Duellpistole = new Karte("Duellpistole");
    var FlascheAbsinth = new Karte("Flasche Absinth");
    var StaehlerneMaske = new Karte("Stählerne Maske");
    //ErTausch
    var LetztesHemd = new Karte("Letztes Hemd");
    var Kristallkugel = new Karte("Kristallkugel");
    var Goldwaage = new Karte("Goldwaage");
    //ErwRest
    var Taschenuhr = new Karte("Taschenuhr");
    var Zylinder = new Karte("Zylinder");

    //Standard
    var Schlaeger = new Beruf("Schläger");
    var Grossmeister = new Beruf("Großmeister");
    var Leibwaechter = new Beruf("Leibwächter");
    var Doktor = new Beruf("Doktor");
    var VarPriester = new Beruf("Priester");
    var Duellant = new Beruf("Duellant");
    var Diplomat = new Beruf("Diplomat");
    var Hypnotiseur = new Beruf("Hypnotiseur");
    var Giftmischer = new Beruf("Giftmischer");
    //Kampf
    var VarMeuchler = new Beruf("Meuchler");
    var Spion = new Beruf("Spion");
    var Leibschlaechter = new Beruf("Leibschlächter");
    //Tausch
    var Hehler = new Beruf("Hehler");
    var Kaufmann = new Beruf("Kaufmann");
    //Rest
    var Wahrsager = new Beruf("Wahrsager");
    var Raecher = new Beruf("Rächer");
    //Übermächtig
    var Soeldner = new Beruf("Söldner");
    var Advokat = new Beruf("Advokat");
    var Illusionist = new Beruf("Illusionist");

    var Orden = new Gesinnung("Orden (sammelt Schlüssel)");
    var Bruderschaft = new Gesinnung("Bruderschaft (sammelt Kelche)");

    function generateGame(key) {
        //Key has to be P_XXXXXX_XXXX_XXX

        var splitted = key.split("_");

        if (splitted.length != 4) {
            document.getElementById("infoBox").innerHTML = "Key hat falsches Format.";
            return;
        }

        var spieler = parseInt(splitted[0]);

        var p1 = parseInt(splitted[3].substring(0, 1)) + 1;
        var p2 = parseInt(splitted[3].substring(1, 2)) + 1;
        var p3 = parseInt(splitted[3].substring(2, 3)) + 1;

        var check = checkCorrectness(spieler, p1, p2, p3);
        if (check != "") {
            document.getElementById("infoBox").innerHTML = check;
            return;
        }

        var move1 = p1 * p2;
        var move2 = p1 * p3;
        var move3 = p2 * p3;
        var pos = 0;

        var allKarten = [Kelch, Schluessel, Kelch, Schluessel, Kelch, Schluessel, Handschuhe, Dolch, Wurfmesser, Peitsche, ZerbrochenerSpiegle, Giftring, Freibrief, Mantel];

        if (splitted[1].indexOf("f") > -1) {
            allKarten.push(Foliant);
        }
        if (splitted[1].indexOf("w") > -1) {
            allKarten.push(WappenDerLoge);
        }
        if (splitted[1].indexOf("t") > -1) {
            allKarten.push(Sextant);
            allKarten.push(SchwarzePerle);
        }
        if (splitted[1].indexOf("k") > -1) {
            allKarten.push(Besitzurkunde);
            allKarten.push(Duellpistole);
            allKarten.push(FlascheAbsinth);
            allKarten.push(StaehlerneMaske);
        }
        if (splitted[1].indexOf("e") > -1) {
            allKarten.push(LetztesHemd);
            allKarten.push(Kristallkugel);
            allKarten.push(Goldwaage);
        }
        if (splitted[1].indexOf("r") > -1) {
            allKarten.push(Taschenuhr);
            allKarten.push(Zylinder);
        }

        var allBerufe = [Schlaeger, Grossmeister, Leibwaechter, Doktor, VarPriester, Duellant, Diplomat, Hypnotiseur, Giftmischer];

        if (splitted[2].indexOf("k") > -1) {
            allBerufe.push(VarMeuchler);
            allBerufe.push(Spion);
            allBerufe.push(Leibschlaechter);
        }
        if (splitted[2].indexOf("t") > -1) {
            allBerufe.push(Hehler);
            allBerufe.push(Kaufmann);
        }
        if (splitted[2].indexOf("r") > -1) {
            allBerufe.push(Wahrsager);
            allBerufe.push(Raecher);
        }
        if (splitted[2].indexOf("ü") > -1) {
            allBerufe.push(Soeldner);
            allBerufe.push(Advokat);
            allBerufe.push(Illusionist);
        }

        var allStarter = [KofferDerKelche, KofferDerSchluessel, Monokel];
        var allGesinnung = [];
        while (allStarter.length < spieler) {
            pos = (pos + move1) % allKarten.length;
            if (allKarten[pos] != Sextant && allKarten[pos] != Mantel) {
                allStarter.push(allKarten[pos]);
                allKarten.splice(pos, 1);
            }
        }

        for (var i = 1; i <= spieler / 2; i++) {
            allGesinnung.push(Orden);
            allGesinnung.push(Bruderschaft);
        }

        for (var i = 1; i <= 8; i++) {
            if (i <= spieler) {
                pos = (pos + move2) % allBerufe.length;
                var beruf = allBerufe[pos].text;
                allBerufe.splice(pos, 1);

                pos = (pos + move2) % allStarter.length;
                var starter = allStarter[pos].text;
                allStarter.splice(pos, 1);

                pos = (pos + move2) % allGesinnung.length;
                var gesinnung = allGesinnung[pos].text;
                allGesinnung.splice(pos, 1);

                var string = beruf + ", " + starter + ", " + gesinnung;

                document.getElementById("Spieler" + i).innerHTML = string;
            }
        }

        makeVisibleUntil("VSpieler", spieler, 8);

        var zaehler = 1;
        while (allKarten.length !== 0) {
            pos = (pos + move3) % allKarten.length;
            var karte = allKarten[pos].text;
            allKarten.splice(pos, 1);
            document.getElementById("Gegenstand" + zaehler).innerHTML = karte;
            zaehler++;
        }

        makeVisibleUntil("VGegenstand", zaehler - 1, 30);

        var zaehlerBerufe = 1;
        while (allBerufe.length !== 0) {
            pos = (pos + move2) % allBerufe.length;
            var beruf = allBerufe[pos].text;
            allBerufe.splice(pos, 1);
            document.getElementById("Beruf" + zaehlerBerufe).innerHTML = beruf;
            zaehlerBerufe++;
        }

        makeVisibleUntil("VBeruf", zaehlerBerufe - 1, 15);

        var startSpieler = ((pos + move1 + move2 + move3) % spieler) + 1;

        document.getElementById("infoBox").innerHTML = "Spoiler gefüllt! (" + (zaehler - 1) + " Gegenstände im Nachziehstapel und  " + (zaehlerBerufe - 1) + " Restberufe vorhanden) Es beginnt Spieler " + startSpieler;

    }

    function checkCorrectness(spieler, p1, p2, p3) {
        if (spieler % 1 != 0) {
            return "Der Key-Wert für Spieler ist keine Zahl.";
        } else if (spieler != 4 & spieler != 8 & spieler != 6) {
            return "Spielerzahl von " + spieler + " unmöglich."
        } else if (p1 % 1 != 0 | p2 % 1 != 0 | p3 % 1 != 0) {
            return "Der Key-Wert am Schluss ist keine dreistellige Zahl.";
        } else {
            return ""
        }
    }

    function makeVisibleUntil(name, until, max) {
        for (var index = 1; index <= until; index++) {
            document.getElementById(name + index).style.display = 'block';
        }
        for (var index = until + 1; index <= max; index++) {
            document.getElementById(name + index).style.display = 'none';
        }
    }

    function action() {
        var key = document.getElementById('textfield').value;
        generateGame(key);

    }
})();