From b5854827bf435540f6defcc4aaeaa53d4c8dcbc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Macek?= <32328962+AdrTru@users.noreply.github.com> Date: Sun, 22 Nov 2020 00:26:24 +0100 Subject: [PATCH] Update sheet.html update for NPC sheet --- Draci_Doupe_PPP/sheet.html | 570 +++++++++++++++++++++++++++++-------- 1 file changed, 458 insertions(+), 112 deletions(-) diff --git a/Draci_Doupe_PPP/sheet.html b/Draci_Doupe_PPP/sheet.html index 6a3855af1a..ff42f2c4c7 100644 --- a/Draci_Doupe_PPP/sheet.html +++ b/Draci_Doupe_PPP/sheet.html @@ -7,81 +7,194 @@
-
+ +
-
-
+ +
+
+
-
-
+ +
+ +
+
+ +
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ + + -5 +
+ +
+ + + -5 + + +
+ +
+ + + -5 + + +
+ +
+ + + -5 + + +
+ +
+ + + -5 + + +
+ +
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+
+
+ +
+
+
+ +
+
- + - +
- + - + +
+
+
- +
- + +
+ +
+ + + +
+
+ + + + + + +
+
+ + + + + + + +
+
+ + + + + + + +
+
+ + + + + + + +
+
+ +
+ + + + +
+ + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
@@ -176,25 +289,17 @@
- +
OZ
- +
bez
- +
střel.
-
0
0
0
@@ -212,6 +317,7 @@ +
@@ -553,13 +659,56 @@ + + + +
+
+ +
+
+
+
Věk
+ +
+
+
Rozměry
+ +
+
+
Výška
+ +
+
+
Váha
+ +
+
+
Oči
+ +
+
+
Kůže
+ +
+
+
Vlasy
+ +
+
+
- - - -
- +
+ Vzhled
+ +
+ +
+ Příběh/Pozadí
+ +
+
@@ -644,12 +793,12 @@ - - - - - - + + + + + + @@ -662,12 +811,12 @@ - - + + - + @@ -679,7 +828,7 @@ - + @@ -694,6 +843,25 @@ + + + + + + + + + + + + + + + + + + +
@@ -721,12 +889,16 @@
{{Result}}
-
{{#ozvolba}} - {{#rollTotal() ozvolba 0}} + oprava za úkryt +1 až +4{{/rollTotal() ozvolba 0}} - {{/ozvolba}}
- - + {{#rollTotal() ozvolba 0}}
+ oprava za úkryt +1 až +4}}
{{/rollTotal() ozvolba 0}} + {{/ozvolba}} + {{#vyrazeny}} + {{#^rollTotal() vyrazeny 0}}
Vyřazený:
výsledné zranění * + {{#rollGreater() vyrazeny 9}}9{{/rollGreater() vyrazeny 9}} + {{#^rollGreater() vyrazeny 9}}{{vyrazeny}}{{/^rollGreater() vyrazeny 9}} +
{{/^rollTotal() vyrazeny 0}} + {{/vyrazeny}} + @@ -773,6 +945,56 @@ + +
+ {{#rollLess() int 9}} +
{{Result}}
+
{{name}}
+
+
+ {{#rollGreater() Result mod}} nechce bojovat {{/rollGreater() Result mod}} + {{#^rollGreater() Result mod}} útočí {{/^rollGreater() Result mod}} + {{/rollLess() int 9}} + {{#^rollLess() int 9}}Bojovnost
Nestvůra je moc inteligentní{{/^rollLess() int 9}} +
+
+ + +
+ +
+

+ {{#tvt}}{{#rollTotal() tvt 0}}střel. {{/rollTotal() tvt 0}}{{#rollTotal() tvt 1}}tvt {{/rollTotal() tvt 1}}{{/tvt}} + {{name}} +

+ - {{zbran}} +
+
+ {{Result}}
+útoč.
{{utocnost}}
+ {{#rollTotal() vyrazen 1}} +
+
+ Vyřazená postava nemůže útočit +
+ {{/rollTotal() vyrazen 1}} +
+
+
+ + +
+ +
+

{{name}}

+
+
{{Result}}
+
+ {{#vyrazeny}} + {{#^rollTotal() vyrazeny 0}}
Vyřazený?:
výsledné zranění * {{vyrazeny}}
{{/^rollTotal() vyrazeny 0}} + {{/vyrazeny}} +
+
+ @@ -916,10 +1138,25 @@ var update_bonus = function (attr) { }); }; +var update_npcbonus = function (attr) { + const tab_bonus = [-5,-5,-4,-4,-3,-3,-2,-2,-1,-1,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10]; + getAttrs([attr], function(values) { + var stat_base = int(values[attr]); +/* console.log("hodnota "+stat_base);*/ + var _base = Math.min(32, Math.max(1, stat_base)); + var _stat_bonus = tab_bonus[_base]; + var _update = {}; + _update[attr + "_mod"] = _stat_bonus; + _update[attr] = _base; + setAttrs(_update); + }); +}; + var update_nosnost = function () { getAttrs(["sil_mod"], function(v) { var _nosnost = 210 + 30 * ( int(v.sil_mod) + 5); setAttrs({ nosnost: _nosnost }); + }); }; @@ -949,6 +1186,10 @@ var update_pohyblivost = function () { }; var setZbran = function(_zbran) { + if( typeof(_zbran) == "undefined" || _zbran == "-1" ){ + setAttrs({zbran:"tvt1"}); + return null; + }; getAttrs([_zbran, _zbran+"_uc", _zbran+"_uto", _zbran+"_oz", _zbran+"_2h",_zbran+"_maly",_zbran+"_stredni",_zbran+"_velky","rasa","velikost", "zbroj1_use","zbroj1_stit","zbroj1_oc","zbroj2_use","zbroj2_stit","zbroj2_oc","zbroj3_use","zbroj3_stit","zbroj3_oc"], function(values) { var rasa = values["rasa"]; @@ -1146,7 +1387,30 @@ on("clicked:showpc_vybava", function(eventinfo) { console.log("values 2"); setAttrs({pc_page: "2"}); }); +on("clicked:showpc_pozn", function(eventinfo) { + console.log("values 3"); + setAttrs({pc_page: "3"}); +}); +on("clicked:npc_hp", function(eventinfo) { +// console.log("počítám životaschopnost"); + getAttrs(["npc_zivotasch","npc_odl_mod"], function(values) { + var ziv = int(values.npc_zivotasch); + var mod = int(values.npc_odl_mod); + var celkem = 0; + var i; + for (i = 0; i < ziv; i++) { + var hod = Math.max(1,Math.ceil(Math.random() * 8) + mod); + celkem = celkem + hod; + }; + setAttrs({npc_hit_points_max: celkem}); + setAttrs({npc_hit_points: celkem}); + var min = Math.max(1,1 + mod)*ziv; + var max = (8 + mod)*ziv; + var proc = Math.ceil((celkem - min)/(max-min) * 100); + console.log(""+ celkem +" -> "+min+" až "+max+" -> "+ proc+"%"); + }); +}); @@ -1156,13 +1420,24 @@ on("clicked:showpc_vybava", function(eventinfo) { }); }); +["npc_sil", "npc_int", "npc_chr", "npc_odl", "npc_obr"].forEach(stat => { + on(`change:${stat}`, () => { + update_npcbonus(stat); + }); +}); + /*---------------------------Výpočet POHYBLIVOSTI ----------------- */ -on("change:sil_mod change:obr_mod change:rasa", function() { +on("change:sil_mod change:obr_mod change:rasa change:nosnost", function() { update_pohyblivost(); }); - +on("change:poh_0 change:poh_1 change:poh_2 change:poh_3 change:nosnost", function() { + getAttrs(["nalozeni"], function(values) { + if(values.nalozeni == "-1") setAttrs({ nalozeni: 0 }); + }); +}); + /*--------- Presunuti výberu nalozeni do Statu Pohyblivosti----------------- */ @@ -1228,28 +1503,29 @@ on("change:hit_points change:odl", function() { }); on("change:bojeschopnost_mod", function() { - getAttrs(["bojeschopnost_mod","Nehybny_volba","Vyrazeny_volba"], function(values) { + getAttrs(["bojeschopnost_mod","nehybny_volba","vyrazeny_volba"], function(values) { if(values.bojeschopnost_mod.includes("X")){ - setAttrs({ "Nehybny_volba": 0 }); - setAttrs({ "Vyrazeny_volba": 1 }); - } else if(values.Vyrazeny_volba == 1) setAttrs({ "Vyrazeny_volba": 0 }); + setAttrs({ "nehybny_volba": 0 }); + setAttrs({ "vyrazeny_volba": 1 }); + } else if(values.vyrazeny_volba == 1) setAttrs({ "vyrazeny_volba": 0 }); }); }); -on("change:Vyrazeny_volba", function() { - getAttrs(["Nehybny_volba","Vyrazeny_volba"], function(values) { - if(values.Vyrazeny_volba == 1) setAttrs({ "Nehybny_volba": 0 }); +on("change:vyrazeny_volba", function() { + getAttrs(["nehybny_volba","vyrazeny_volba"], function(values) { + if(values.vyrazeny_volba == 1) setAttrs({ "nehybny_volba": 0 }); }); }); -on("change:Nehybny_volba", function() { - getAttrs(["Nehybny_volba","Vyrazeny_volba"], function(values) { - if(values.Nehybny_volba == 1) setAttrs({ "Vyrazeny_volba": 0 }); +on("change:nehybny_volba", function() { + getAttrs(["nehybny_volba","vyrazeny_volba"], function(values) { + if(values.nehybny_volba == 1) setAttrs({ "vyrazeny_volba": 0 }); }); }); + /* ********* zmena zbrane ******* */ -on("change:zbran change:zbroj1_use change:zbroj2_use change:zbroj3_use change:velikost", function() { +on("change:zbran change:zbroj1_use change:zbroj2_use change:zbroj3_use change:velikost", function() { getAttrs(["zbran"], function(values) { setZbran(values["zbran"]); }); @@ -1266,24 +1542,19 @@ on("change:zbran change:zbroj1_use change:zbroj2_use change:zbroj3_use change:v }); }); -/* -["_uc", "_uto", "_2h","_maly","_stredni","_velky"].forEach(stat => { - ["strel1", "strel2", "strel3", "strel4"].forEach(pos => { - on(`change:${pos}${stat}`, () => { - getAttrs(["zbran"], function(values) { - if(values["zbran"].includes(pos)) setZbran(values["zbran"]); - }); - }); - }); -}); - ******* OČ a UČ **********************************/ + /******* OČ a UČ **********************************/ on("change:sil_mod change:obr_mod change:pretizeni_mod change:bojeschopnost_mod change:boj_id change:boj_uc change:boj_uto change:boj_oz change:boj_oc change:boj_ocstit change:nehybny_volba change:vyrazeny_volba change:oz_volba", function() { var ids = ["boj_id","boj_jmeno","boj_uc","boj_uto","boj_oz","boj_tvt","boj_bez","boj_h2","boj_rod","boj_ocstit","boj_oc"]; getAttrs(["sil_mod","obr_mod","pretizeni_mod","bojeschopnost_mod","rasa","oz_volba","nehybny_volba","vyrazeny_volba", "boj_id","boj_jmeno","boj_uc","boj_uto","boj_oz","boj_tvt","boj_bez","boj_h2","boj_rod","boj_ocstit","boj_oc"], function(values) { // console.log("values " + values[_zbran+"_OZ"]); + + if( values.boj_id == "-1" ){ + setAttrs({zbran:"tvt1"}); + return null; + }; var UC = 0; var OC = 0; var UCopr = 0; @@ -1453,8 +1724,83 @@ on('change:vaha_celkem', function() { +on('change:npc_obr_mod change:npcboj1_ozv change:npcboj1_oz change:npcboj2_ozv change:npcboj2_oz change:npcboj3_ozv change:npcboj3_oz change:npczbroj1_use change:npczbroj1_oc change:npczbroj2_use change:npczbroj2_oc change:npczbroj3_use change:npczbroj3_oc change:npcboj_vyrazen change:npc_bojeschopnost_mod', function() { + getAttrs(["npc_obr_mod","npcboj1_ozv","npcboj1_oz","npcboj2_ozv","npcboj2_oz","npcboj3_ozv","npcboj3_oz","npczbroj1_use","npczbroj1_oc","npczbroj2_use","npczbroj2_oc","npczbroj3_use","npczbroj3_oc","npc_bojeschopnost_mod","npcboj_vyrazen"], v => { + var oc = Math.max(int(v.npczbroj1_use)*int(v.npczbroj1_oc),int(v.npczbroj3_use)*int(v.npczbroj3_oc)); + var stit = int(v.npczbroj2_use)*int(v.npczbroj2_oc); + var oz = 0; + var opr = 0; + + if(int(v.npcboj_vyrazen) == 1){ + opr = opr - (5 + int(v.npc_obr_mod)); + } else { + opr = int(v.npc_bojeschopnost_mod) + stit; + }; + + if(int(v.npcboj1_ozv) == 1) { oz = int(v.npcboj1_oz); + } else if(int(v.npcboj2_ozv) == 1) { oz = int(v.npcboj2_oz); + } else if(int(v.npcboj3_ozv) == 1) { oz = int(v.npcboj3_oz);}; + + setAttrs({"npcboj_oc": oc}); + setAttrs({"npcboj_opr": opr}); + setAttrs({"npcboj_oz": oz}); + }); +}); +on("change:npc_hit_points change:npc_odl", function() { + getAttrs(["npc_odl","npc_hit_points","npc_hit_points_max"], function(values) { + const odolnost = int(values.npc_odl); + var zivotu_max = int(values.npc_hit_points_max); + var tretina = Math.floor(zivotu_max/3); + var _bojeschopnost_mod = "-3"; + var vyrazeni = Math.floor(zivotu_max/4); + if (odolnost >= 17) { + _bojeschopnost_mod = "0"; + vyrazeni = 1; + } else if (odolnost >= 12) { + _bojeschopnost_mod = "-1"; + vyrazeni = Math.floor(zivotu_max/8); + } else if (odolnost >= 6) { + _bojeschopnost_mod = "-2"; + vyrazeni = Math.floor(zivotu_max/6); + } + + var bojeschopnost = "Mrtev (X)"; + var bojeschopnost_mod = "X"; + var outof = 0; + var zivotu = int(values.npc_hit_points); + if(zivotu <= 0) { + outof = 1; + } else if (zivotu <= vyrazeni) { + outof = 1; + bojeschopnost = "Vyřazen (X)"; + } else if (zivotu <= tretina) { + outof = 0; + bojeschopnost = "Zraněn ("+_bojeschopnost_mod+")"; + bojeschopnost_mod = _bojeschopnost_mod; + } else { + outof = 0; + bojeschopnost = ""; + bojeschopnost_mod = 0; + } + + setAttrs({ "npcboj_vyrazen": outof}); + setAttrs({ "npc_bojeschopnost": bojeschopnost }); + setAttrs({ "npc_bojeschopnost_mod": bojeschopnost_mod }); + setAttrs({ "npc_bojeschopnost_tretina_zivotu": tretina }); + setAttrs({ "npc_bojeschopnost_mez_vyrazeni": vyrazeni }); + setAttrs({ "npc_bojeschopnost_mod_vyrazeni": _bojeschopnost_mod }); + }); +}); + +on('change:npcboj1_tvt change:npcboj2_tvt change:npcboj3_tvt change:npc_sil_mod change:npc_obr_mod', function() { + getAttrs(["npcboj1_tvt","npcboj2_tvt","npcboj3_tvt","npc_sil_mod","npc_obr_mod"], v => { + if(int(v.npcboj1_tvt) == 0) {setAttrs({"npcboj1_mod": int(v.npc_obr_mod)});} else {setAttrs({"npcboj1_mod": int(v.npc_sil_mod)});}; + if(int(v.npcboj2_tvt) == 0) {setAttrs({"npcboj2_mod": int(v.npc_obr_mod)});} else {setAttrs({"npcboj2_mod": int(v.npc_sil_mod)});}; + if(int(v.npcboj3_tvt) == 0) {setAttrs({"npcboj3_mod": int(v.npc_obr_mod)});} else {setAttrs({"npcboj3_mod": int(v.npc_sil_mod)});}; + }); +});