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:
+77
-61
@@ -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ücksichtigt, wenn die Stärke als solche eingetragen ist.</li>
|
||||
</ul>
|
||||
<h2>12.02.2019</h2>
|
||||
<ul>
|
||||
<li>Button zum direkten Abrechnen von Fokuskosten der Zauberleiste hinzugefügt</li>
|
||||
<li>Button zum direkten Abrechnen von Fokuskostenin der Zauberleiste hinzugefügt</li>
|
||||
</ul>
|
||||
<h2>29.01.2019</h2>
|
||||
<ul>
|
||||
@@ -2070,15 +2075,6 @@
|
||||
</ul>
|
||||
<li>Formatierung / Größe der Modifikatorliste angepasst</li>
|
||||
</ul>
|
||||
<h2>22.01.2019</h2>
|
||||
<ul>
|
||||
<li>"Zauberwirkung"-Zeile zur Zauberlist hinzugefü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ß-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>
|
||||
@@ -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)."
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user