Kategorien
MediaWiki:Kampfrechner.js
Hinweis
Nach dem Speichern sollte zunächst der Browser-Cache geleert werden, bevor man die Auswirkungen der Änderung sehen kann.
Nach dem Speichern sollte zunächst der Browser-Cache geleert werden, bevor man die Auswirkungen der Änderung sehen kann.
- Mozilla/Firefox/Safari: Strg + R (Mactaste + R bei Macintosh) drücken
- Konqueror: F5 drücken
- Opera: kompletten Cache unter Extras → Internetspuren löschen → Individuelle Auswahl leeren
- Internet Explorer: Strg + F5
/*********************************************/ /* Funktionen für den Kampfrechner */ /* Wird in MediaWiki:Common.js eingebunden */ /******************************************/ // Definiere Variablen für den Kampfrechner var global_lp_a, global_a_a, global_v_a, global_lp_v, global_a_v, global_v_v; var global_fightresult_1, global_fightresult_2, global_fightresult_3; var all_stats = new Array(); /** * Initialisiert den Kampfrechner */ function init_fightcalc() { fc = document.getElementById('Kampfrechner'); selectfield = document.createElement('select'); selectfield.setAttribute('name', 'npc'); selectfield.setAttribute('size', '1'); selectfield.setAttribute('onChange', 'changevalues(this)'); stats_raw = document.getElementById('Kampfrechner-Daten').innerHTML; var stats_raw_array = new Array(); stats_raw_array = stats_raw.split('\n'); var i = 0; var stats_raw = new Array(); var stats_row = new Array(); for (i=0;i<stats_raw_array.length;i++) { stats_raw = stats_raw_array[i]; stats_row = stats_raw.split(';'); if (stats_row.length != 3) continue; // unsaubere Lösung all_stats[all_stats.length] = stats_row; option_field = document.createElement('option'); option_field.setAttribute('value', i); option_field.innerHTML = stats_row[0]; selectfield.appendChild(option_field); } table = document.createElement('TABLE'); tr = document.createElement('TR'); td = document.createElement('TD'); td.setAttribute('colspan', '3'); select_text = document.createTextNode('Bei NPC-Kampf NPC auswählen: '); td.appendChild(select_text); td.appendChild(selectfield); tr.appendChild(td); table.appendChild(tr); tr = document.createElement('TR'); td = document.createElement('TD'); tr.appendChild(td); td = document.createElement('TH'); td.appendChild(document.createTextNode('Angreifer')); tr.appendChild(td); td = document.createElement('TH'); td.appendChild(document.createTextNode('Verteidiger')); tr.appendChild(td); table.appendChild(tr); // LP-Werte tr = document.createElement('TR'); td = document.createElement('TD'); td.appendChild(document.createTextNode('LP')); tr.appendChild(td); td = document.createElement('TD'); global_lp_a = document.createElement('INPUT'); global_lp_a.setAttribute('type', 'text'); td.appendChild(global_lp_a); tr.appendChild(td); td = document.createElement('TD'); global_lp_v = document.createElement('INPUT'); global_lp_v.setAttribute('type', 'text'); global_lp_v.setAttribute('id', 'lp_v'); td.appendChild(global_lp_v); tr.appendChild(td); table.appendChild(tr); // A-Werte tr = document.createElement('TR'); td = document.createElement('TD'); td.appendChild(document.createTextNode('A')); tr.appendChild(td); td = document.createElement('TD'); global_a_a = document.createElement('INPUT'); global_a_a.setAttribute('type', 'text'); td.appendChild(global_a_a); tr.appendChild(td); td = document.createElement('TD'); global_a_v = document.createElement('INPUT'); global_a_v.setAttribute('type', 'text'); global_a_v.setAttribute('id', 'a_v'); td.appendChild(global_a_v); tr.appendChild(td); table.appendChild(tr); // V-Werte tr = document.createElement('TR'); td = document.createElement('TD'); td.appendChild(document.createTextNode('V')); tr.appendChild(td); td = document.createElement('TD'); global_v_a = document.createElement('INPUT'); global_v_a.setAttribute('type', 'text'); td.appendChild(global_v_a); tr.appendChild(td); td = document.createElement('TD'); global_v_v = document.createElement('INPUT'); global_v_v.setAttribute('type', 'text'); global_v_v.setAttribute('id', 'v_v'); td.appendChild(global_v_v); tr.appendChild(td); table.appendChild(tr); tr = document.createElement('TR'); td = document.createElement('TD'); td.setAttribute('colspan', '3') td.style.textAlign = 'center'; inp = document.createElement('INPUT'); inp.setAttribute('type', 'submit'); inp.setAttribute('name', 'calc'); inp.setAttribute('value', 'Berechnen'); td.appendChild(inp); tr.appendChild(td); table.appendChild(tr); tr = document.createElement('TR'); td = document.createElement('TD'); td.setAttribute('colspan', '3') td.style.textAlign = 'center'; global_fightresult_1 = document.createTextNode('Werte eingeben und auf Berechnen klicken'); global_fightresult_2 = document.createTextNode(' '); global_fightresult_3 = document.createTextNode(' '); td.appendChild(global_fightresult_1); td.appendChild(document.createElement('BR')); td.appendChild(global_fightresult_2); td.appendChild(document.createElement('BR')); td.appendChild(global_fightresult_3); tr.appendChild(td); table.appendChild(tr); form = document.createElement('FORM'); form.setAttribute('action', '#') form.setAttribute('method', 'POST') form.setAttribute('name', 'fightcalc') form.onsubmit = calc_fight; form.appendChild(table); fc.appendChild(form); } /** * Berechnet Kampfergebnis */ function calc_fight() { dif_a = global_a_a.value - global_v_v.value; dif_v = global_a_v.value - global_v_a.value; if (dif_a < 1) dif_a = 1; if (dif_v < 1) dif_v = 1; fac_a = global_lp_v.value / dif_a; fac_v = global_lp_a.value / dif_v; if (fac_a > fac_v) { if ((global_a_a.value - global_v_v.value) > 0) lp_v = global_a_a.value - global_v_v.value; else lp_v = 1; end_v_lp = Math.floor(global_lp_v.value - fac_v * lp_v); global_fightresult_1.nodeValue = 'Verteidiger gewinnt mit ' + end_v_lp + ' LP'; if (((global_lp_a.value / dif_v) < 1) && ((global_lp_a.value / dif_v) < (global_lp_v.value / dif_a))) { global_fightresult_2.nodeValue = 'Der Angreifer stirbt schon nach einem Schlag'; global_fightresult_3.nodeValue = ' '; } else { global_fightresult_2.nodeValue = 'Der Angreifer benötigt ' + Math.ceil(global_lp_v.value / dif_a) + ' Schläge für Sieg'; global_fightresult_3.nodeValue = 'Der Angreifer verliert ' + String(dif_v) + ' LP pro Schlag'; } } else { if ((global_a_v.value - global_v_a.value) > 0) lp_a = global_a_v.value - global_v_a.value; else lp_a = 1; end_a_lp = Math.floor(global_lp_a.value - fac_a * lp_a); global_fightresult_1.nodeValue = 'Angreifer gewinnt mit ' + end_a_lp + ' LP'; global_fightresult_2.nodeValue = 'Minimale LP für Sieg: ' + String(global_lp_a.value - end_a_lp); global_fightresult_3.nodeValue = ' '; } return false; } /** * Ändert Werte im Kampfrechner bei neuer Gegnerauswahl */ function changevalues(select_field) { var number = select_field.options[select_field.options.selectedIndex].value; var stats = all_stats[number]; var v = document.getElementById('v_v'); var a = document.getElementById('a_v'); var lp = document.getElementById('lp_v'); v.setAttribute('value', '0'); a.setAttribute('value', stats[1]); lp.setAttribute('value', stats[2]); } // Starte init_fightcalc() nach Laden der Seite addOnloadHook(init_fightcalc);