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);
}
})();