Splittermond: Improving mana regeneration calculation (#4721)

* Adding button to directly calculate mana

* Fixed a spelling error

* Changed image color for better visibility

* Deleting debug info

* Restructuring mana cost calculation

* Adding updates

* Updated sheet.json
This commit is contained in:
ap3h3ad
2019-02-19 07:10:04 -06:00
committed by Cassie Levett
parent b922b49b3a
commit fe583f8d60
2 changed files with 78 additions and 62 deletions
+77 -61
View File
@@ -593,6 +593,7 @@
<td><input type=number style="width: 4em; font-weight: bold; background-color:#81BEF7; text-align: center" min=0 name="attr_fokus" value=0 readonly="true"></td>
<td><input type=number style="width: 4em; font-weight: bold; background-color:#81BEF7; text-align: center" min=0 name="attr_fokusmod" value=0></td>
<td><input type=hidden name="attr_hiddenfokus" value=0></td>
<td><input type=hidden name="attr_hiddensbm" value=0></td>
</tr>
<tr>
<td>Verteidigung</td>
@@ -1334,9 +1335,9 @@
<tr bgcolor="#81BEF7">
<td>Lebenspunkte</td>
<td align="center"><input type="number" value=0 name="attr_lebenspunkte_t" readonly="readonly" style="text-align: center; background-color:#81BEF7;" /></td>
<td align="center">K: <input type="number" name="attr_lebenspunkte_k" value=0 style="text-align: center; background-color:#81BEF7;" /></td>
<td align="center">E: <input type="number" name="attr_lebenspunkte_e" value=0 style="text-align: center; background-color:#81BEF7;" /></td>
<td align="center">V: <input type="number" name="attr_lebenspunkte_v" value=0 style="text-align: center; background-color:#81BEF7;" /></td>
<td align="center">K: <input type="number" name="attr_lebenspunkte_k" min=0 value=0 style="text-align: center; background-color:#81BEF7;" /></td>
<td align="center">E: <input type="number" name="attr_lebenspunkte_e" min=0 value=0 style="text-align: center; background-color:#81BEF7;" /></td>
<td align="center">V: <input type="number" name="attr_lebenspunkte_v" min=0 value=0 style="text-align: center; background-color:#81BEF7;" /></td>
</tr>
<tr>
<td>Schadensmodifikator</td>
@@ -1353,9 +1354,9 @@
<tr bgcolor="#81BEF7">
<td>Fokus</td>
<td align="center"><input type="number" name="attr_fokus_t" readonly="readonly" value=0 style="text-align: center; background-color:#81BEF7;" /></td>
<td align="center">K: <input type="number" name="attr_fokus_k" value=0 style="text-align: center; background-color:#81BEF7;" /></td>
<td align="center">E: <input type="number" name="attr_fokus_e" value=0 style="text-align: center; background-color:#81BEF7;" /></td>
<td align="center">V: <input type="number" name="attr_fokus_v" value=0 style="text-align: center; background-color:#81BEF7;" /></td>
<td align="center">K: <input type="number" name="attr_fokus_k" min=0 value=0 style="text-align: center; background-color:#81BEF7;" /></td>
<td align="center">E: <input type="number" name="attr_fokus_e" min=0 value=0 style="text-align: center; background-color:#81BEF7;" /></td>
<td align="center">V: <input type="number" name="attr_fokus_v" min=0 value=0 style="text-align: center; background-color:#81BEF7;" /></td>
</tr>
<tr>
<td>Splitterpunkte</td>
@@ -1373,7 +1374,7 @@
</tr>
<tr bgcolor="#81BEF7">
<td>Zauberpatzer</td>
<td align="center" bgcolor="#81BEF7"><button type=roll value="&{template:splittermond_patzer} {{charactername=@{character_name}}} {{naming=[[?{Zauber- oder Priesterpatzer?|Zauberpatzer, 1|Priesterpatzer, 0}]]}} {{charactername=@{character_name}}} {{result=[[2d10 + ?{Negative Erfolgsgrade|1} * ?{Fokuskosten|1}]]}} {{fk=[[?{Fokuskontrolle oder Nichts passiert?|------, 0|Fokuskontrolle, 1|Nichts passiert!, 2}]]}} {{sbm=[[?{Stabile Magie?|------, 0|Stabile Magie, 1}]]}} {{s1=[[1d6]]}} {{s2=[[2d6]]}} {{s3=[[2d10]]}} {{s4=[[3d10]]}} {{s5=[[4d10]]}} {{s6=[[5d10]]}} {{s7=[[7d10]]}} {{s8=[[10d10]]}}"></button></td>
<td align="center" bgcolor="#81BEF7"><button type=roll value="&{template:splittermond_patzer} {{charactername=@{character_name}}} {{naming=[[?{Zauber- oder Priesterpatzer?|Zauberpatzer, 1|Priesterpatzer, 0}]]}} {{charactername=@{character_name}}} {{result=[[2d10 + ?{Negative Erfolgsgrade|1} * ?{Fokuskosten|1}]]}} {{fk=[[?{Fokuskontrolle oder Nichts passiert?|------, 0|Fokuskontrolle, 1|Nichts passiert!, 2}]]}} {{sbm=[[@{hiddensbm}]]}} {{s1=[[1d6]]}} {{s2=[[2d6]]}} {{s3=[[2d10]]}} {{s4=[[3d10]]}} {{s5=[[4d10]]}} {{s6=[[5d10]]}} {{s7=[[7d10]]}} {{s8=[[10d10]]}}"></button></td>
</tr>
</table>
</td>
@@ -2052,9 +2053,13 @@
<div class="sheet-section sheet-section-Updates" style="background-color:#81BEF7;">
<h1>Letzte Updates</h1> <br/>
<h2>19.02.2019</h2>
<ul>
<li><i>Stabile Magie</i> wird jetzt automatisch beim Zauberpatzer ber&uuml;cksichtigt, wenn die St&auml;rke als solche eingetragen ist.</li>
</ul>
<h2>12.02.2019</h2>
<ul>
<li>Button zum direkten Abrechnen von Fokuskosten der Zauberleiste hinzugef&uuml;gt</li>
<li>Button zum direkten Abrechnen von Fokuskostenin der Zauberleiste hinzugef&uuml;gt</li>
</ul>
<h2>29.01.2019</h2>
<ul>
@@ -2070,15 +2075,6 @@
</ul>
<li>Formatierung / Gr&ouml;&szlig;e der Modifikatorliste angepasst</li>
</ul>
<h2>22.01.2019</h2>
<ul>
<li>"Zauberwirkung"-Zeile zur Zauberlist hinzugef&uuml;gt</li>
<li>Fokus und Schaden lassen sich jetzt auch <b>manuell</b> - also ohne das Interface rechts - direkt in den Textboxen anpassen</li>
</ul>
<h2>08.01.2019</h2>
<ul>
<li>Wei&szlig;-blau gestreiftes Design wurde global umgesetzt</li>
</ul>
</div>
<br/><p style="font-size:10px; text-align:center;">Mit Dank an alle begeisterten Splittermond-Spieler, die diesen Charakterbogen nutzen und mit ihrem Feedback für stetige Verbesserungen sorgen!</p>
</div>
@@ -3413,6 +3409,10 @@ on("change:repeating_staerken:staerkenwert change:repeating_staerken:staerke", f
hiddenlifereg: +staerkenwert
})
break;
case "stabile magie":
setAttrs({
hiddensbm: +staerkenwert
})
}
} else if (!(staerkenwert) && (staerke != "")) {
setAttrs({
@@ -3450,7 +3450,8 @@ on("remove:repeating_staerken", function(eventInfo) {
hiddensr: 0,
hiddenini: 0,
schemerzresistenz: 0,
hiddensplitterpunkte: 0
hiddensplitterpunkte: 0,
hiddensbm: 0
});
} else {
_.each(idarray, function(currentID, i) {
@@ -3468,7 +3469,7 @@ on("remove:repeating_staerken", function(eventInfo) {
});
on("change:stcopy2", function(eventInfo) {
getAttrs(["stcopy2", "stcopy1", "hiddenlp", "hiddenfokus", "hiddengsw", "hiddengw", "hiddenkw", "hiddensr", "hiddenini", "schmerzresistenz", "hiddensplitterpunkte", "hiddenfokreg", "hiddenlifereg"], function(v) {
getAttrs(["stcopy2", "stcopy1", "hiddenlp", "hiddenfokus", "hiddengsw", "hiddengw", "hiddenkw", "hiddensr", "hiddenini", "schmerzresistenz", "hiddensplitterpunkte", "hiddenfokreg", "hiddenlifereg", "hiddensbm"], function(v) {
var stcopytemp1 = v.stcopy1.toString().split(",");
var stcopytemp2 = v.stcopy2;
var countmatch = stcopytemp2.toString().match(/^\d+/g);
@@ -3526,6 +3527,10 @@ on("change:stcopy2", function(eventInfo) {
setAttrs({
hiddenlifereg: 0
});
} else if (temp[0].toLowerCase() == "stabile magie" && v.hiddensbm > 0) {
setAttrs({
hiddensbm: 0
});
}
}
}
@@ -4650,7 +4655,8 @@ on("change:startimport", function(f) {
hiddensr: 0,
hiddenini: 0,
schemerzresistenz: 0,
hiddensplitterpunkte: 0
hiddensplitterpunkte: 0,
hiddensbm: 0
});
getSectionIDs("repeating_staerken", function(idarray) {
for(var i=0; i < idarray.length; i++) {
@@ -6344,25 +6350,8 @@ on("change:fokusv change:fokuse change:fokusk change:fokuskzue", function(f) {
});
on("change:verschnaufpause change:ruhephase", function(f) {
getAttrs(["ruhephase", "fokus_k", "fokus_e"], function(v) {
if (v.ruhephase) {
let fokus_e = +v.fokus_e;
let fokus_k = +v.fokus_k;
setAttrs({
fokus_e: +fokus_e + +fokus_k,
fokus_k: 0
});
}
});
getAttrs(["fokus_k", "fokus_e", "fokus_v", "fokus_t", "lebenspunkte_k", "lebenspunkte_e", "lebenspunkte_v", "lebenspunkte_t", "regbonus", "verschnaufpause", "ruhephase", "konstitution", "willenskraft", "lebenspunkte", "fokus", "hiddenfokreg", "hiddenlifereg"], function(v) {
let fokus_t = +v.fokus_t;
let fokus_v = +v.fokus_v;
let fokus_e = +v.fokus_e;
let fokus_k = +v.fokus_k;
let lp_t = +v.lebenspunkte_t;
let lp_v = +v.lebenspunkte_v;
let lp_e = +v.lebenspunkte_e;
let lp_k = +v.lebenspunkte_k;
getAttrs(["ruhephase", "fokus_k", "fokus_e", "fokus_k", "fokus_e", "fokus_v", "fokus_t", "lebenspunkte_k", "lebenspunkte_e", "lebenspunkte_v", "lebenspunkte_t", "regbonus", "verschnaufpause", "ruhephase", "konstitution", "willenskraft", "lebenspunkte", "fokus", "hiddenfokreg", "hiddenlifereg"], function(v) {
let update = {};
let kon = +v.konstitution;
let wil = +v.willenskraft;
let lifereg = +v.hiddenlifereg;
@@ -6370,35 +6359,53 @@ on("change:verschnaufpause change:ruhephase", function(f) {
let regbonus = +v.regbonus;
let konbonus = 2;
let wilbonus = 2;
setAttrs({
lebenspunkte_t: +lp_t + +lp_e,
lebenspunkte_e: 0,
fokus_t: +fokus_t + fokus_e,
fokus_e: 0,
verschnaufpause: false
});
lp_t += +lp_e;
fokus_t += fokus_e;
if (v.ruhephase == true) {
update["fokus_t"] = +v.fokus_t;
update["fokus_v"] = +v.fokus_v;
update["fokus_e"] = +v.fokus_e;
update["fokus_k"] = +v.fokus_k;
update["lebenspunkte_t"] = +v.lebenspunkte_t;
update["lebenspunkte_v"] = +v.lebenspunkte_v;
update["lebenspunkte_e"] = +v.lebenspunkte_e;
update["lebenspunkte_k"] = +v.lebenspunkte_k;
if (v.ruhephase) {
let liferegtotal = 0;
let fokregtotal = 0;
if (lifereg == 1) {
konbonus = 3;
}
if (fokreg == 1) {
wilbonus = 3;
}
let lpges = Math.min(+lp_t + +regbonus + (+kon * +konbonus), (+v.lebenspunkte * 5 - +lp_k));
let lpv = Math.max(+lp_v - +regbonus - (+kon * +konbonus), 0);
let fokges = Math.min(+fokus_t + (+wil * +wilbonus), +v.fokus);
let fokv = Math.max(+fokus_v - (+wil * +wilbonus), 0);
setAttrs({
lebenspunkte_t: +lpges,
lebenspunkte_v: +lpv,
fokus_t: +fokges,
fokus_v: +fokv,
ruhephase: false,
regbonus: 0
});
update["fokus_e"] += update["fokus_k"];
update["fokus_k"] = 0;
update["lebenspunkte_e"] += update["lebenspunkte_k"];
update["lebenspunkte_k"] = 0;
liferegtotal = +regbonus + (+kon * +konbonus);
fokregtotal = +wil * +wilbonus;
if (update["lebenspunkte_t"] + +liferegtotal > (+v.lebenspunkte * 5)) {
liferegtotal = ((+v.lebenspunkte * 5) - update["lebenspunkte_t"]);
}
if (update["fokus_t"] + +fokregtotal > +v.fokus) {
fokregtotal = +v.fokus - update["fokus_t"];
}
if (liferegtotal > update["lebenspunkte_v"]) {
liferegtotal = update["lebenspunkte_v"];
}
if (fokregtotal > update["fokus_v"]) {
fokregtotal = update["fokus_v"];
}
update["lebenspunkte_t"] += +liferegtotal;
update["lebenspunkte_v"] -= +liferegtotal;
update["fokus_t"] += +fokregtotal;
update["fokus_v"] -= +fokregtotal;
}
update["fokus_t"] += update["fokus_e"];
update["fokus_e"] = 0;
update["lebenspunkte_t"] += update["lebenspunkte_e"];
update["lebenspunkte_e"] = 0;
update["ruhephase"] = false;
update["verschnaufpause"] = false;
setAttrs(update);
});
});
@@ -6522,5 +6529,14 @@ on("change:repeating_zauber:directcalc", function(f) {
});
});
on("change:hiddensbm", function(f) {
getAttrs(["hiddensbm"], function(v) {
if (+v.hiddensbm > 1) {
setAttrs({
hiddensbm: 1
});
}
});
});
</script>
+1 -1
View File
@@ -4,5 +4,5 @@
"authors": "Loki",
"roll20userid": "800624",
"preview": "SMExample.png",
"instructions": "This is the first CharacterSheet for the german RPG Splittermond. It's not very beautiful, but functional."
"instructions": "Splittermond is a (untranslated) german RPG, produced and maintained by the german Uhrwerk-Verlag. \n Learn more about it at the official [website](https://splittermond.de/). \n For issues, ideas, suggestions and critique reach out for me on [roll20](https://app.roll20.net/users/800624), [github](https://github.com/ap3h3ad) or [Drachenzwinge](https://www.drachenzwinge.de/forum/index.php?action=profile;u=8933)."
}