Merge pull request #10078 from ap3h3ad/master

[Splittermond] Enabling automatic fumble rolls out of the rolltemplate
This commit is contained in:
Nic Bradley
2022-01-25 09:24:18 -08:00
committed by GitHub
2 changed files with 133 additions and 43 deletions
+11
View File
@@ -175,6 +175,17 @@
font-weight: 700;
}
.sheet-rolltemplate-splittermond_generic a[href*="show_patzertext"],
.sheet-rolltemplate-splittermond_generic a[href*="show_zauberpatzertext"],
.sheet-rolltemplate-splittermond_generic a[href*="show_patzertext"]:hover,
.sheet-rolltemplate-splittermond_generic a[href*="show_zauberpatzertext"]:hover,
.sheet-rolltemplate-splittermond_generic a[href*="show_patzertext"]:focus,
.sheet-rolltemplate-splittermond_generic a[href*="show_zauberpatzertext"]:focus {
background-color: #ad0000;
text-decoration: none;
outline: none;
}
.sheet-rolltemplate-splittermond_generic a[href^="!"]:hover,
.sheet-rolltemplate-splittermond_generic a[href^="~"]:hover,
.sheet-rolltemplate-splittermond_generic a[href^="!"]:focus,
+122 -43
View File
@@ -2,9 +2,9 @@
<img width="300"
src="https://imgsrv.roll20.net?src=https%3A//raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Splittermond/Splittermond.png"
style="display: inline;">
<!-- <img width="300"
<!-- <img width="300"
src="https://imgsrv.roll20.net?src=https%3A//raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Splittermond/Splittermond_w.png"
style="display: inline;"> -->
style="display: inline;">-->
<div style="display: inline-block; vertical-align: text-top;">
<span style="display: block;">Splittermond Charakterbogen f&uuml;r Roll20 (v. 2.1.0)</span>
<span>Entworfen und umgesetzt von Loki, Design von Andernath</span>
@@ -3139,6 +3139,9 @@
<div class="d--flex">
<b class="text--right mr--1">Zauberpatzer</b>
<button class="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>
<input type="hidden" name="attr_rollzauberpatzer" value="[Wirf!](~show_zauberpatzertext)" />
<button type="roll" name="roll_show_zauberpatzertext" style="display: none" value="@{zauberpatzertext}" class="btn ui-draggable"></button>
<input type="hidden" name="attr_zauberpatzertext" 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]]}}" />
</div>
</div>
</div>
@@ -4062,6 +4065,9 @@
<div class="d--flex d--flex--align-center">
<b class="text--right mr--1">Kampfpatzer</b>
<button class="button" type=roll value="&{template:splittermond_patzer} {{naming=[[2]]}} {{charactername=@{character_name}}} {{result=[[2d10]]}}"></button>
<input type="hidden" name="attr_rollpatzer" value="[Wirf!](~show_patzertext)" />
<button type="roll" name="roll_show_patzertext" style="display: none" value="@{patzertext}" class="btn ui-draggable"></button>
<input type="hidden" name="attr_patzertext" value="&{template:splittermond_patzer} {{naming=[[2]]}} {{charactername=@{character_name}}} {{result=[[2d10]]}}" />
</div>
</div>
</div>
@@ -5249,6 +5255,10 @@
<input type="checkbox" name="attr_updates" class="d--none" value="42" title="Updates" />
</label>
<h1 style="color: white;">Letzte Updates</h1> <br/>
<h2 style="color: white;">25.01.2022</h2>
<ul>
<li>Patzerw&uuml;rfe im Kampf (Kampffertigkeiten &amp; Zauber) k&ouml;nnen jetzt direkt aus dem Chat heraus gew&uuml;rfelt werden.</li>
</ul>
<h2 style="color: white;">21.11.2021</h2>
<ul>
<li>Die Systemanpassung <em>Wer blutet, stirbt</em> kann jetzt in den Einstellungen aktiviert werden.</li>
@@ -5260,11 +5270,6 @@
<li>In den Einstellungen kann man bei den Fertigkeiten jetzt zum alten 3-W&uuml;rfel-Design wechseln.</li>
<li>Kleinere Fehlerkorrekturen im Zusammenhang mit fehlerhaftem Chat-Output.</li>
</ul>
<h2 style="color: white;">11.10.2021</h2>
<ul>
<li>Die drei Aktive Abwehr-W&uuml;rfel im Kampf-Reiter funktionieren wieder wie gewohnt.</li>
<li>Einige kleinere Fehler im Zusammenhang mit fehlerhaften Schadensw&uuml;rfen bei Angriffen wurden behoben.</li>
</ul>
</div>
<p class="text--center">Mit Dank an alle begeisterten Splittermond-Spieler, die diesen Charakterbogen nutzen und mit ihrem Feedback f&uuml;r stetige Verbesserungen sorgen!</p>
@@ -5889,6 +5894,20 @@
{{/changer}}
</div>
</div>
{{#rollBetween() computed::success 1 1}}
{{#patzer}}
<div class="d--flex d--flex--align-baseline roll-message__fight">
<div class="d--flex__item--grow2 text--right">
{{#rollBetween() patzer 1 1}}
<span>Patzertabelle</span> {{rollpatzer}}
{{/rollBetween() patzer 1 1}}
{{#rollBetween() patzer 2 2}}
<span>Patzertabelle</span> {{rollzauberpatzer}}
{{/rollBetween() patzer 2 2}}
</div>
</div>
{{/patzer}}
{{/rollBetween() computed::success 1 1}}
<div class="roll-message__footer">
<span>Erfolgsgrade</span>
<span class="success-num">
@@ -6769,6 +6788,22 @@
{{/rollGreater() result 130}}
{{/rollBetween() naming 0 0}}
</td>
<!--{{#rollBetween() naming 1 1}}
<tr>
<td>Fokus: {{fokus}}</td>
</tr>
<tr>
<td>Neg. EG: {{computed:neg}}</td>
</tr>
{{/rollBetween() naming 1 1}}
{{#rollBetween() naming 0 0}}
<tr>
<td>Fokus: {{fokus}}</td>
</tr>
<tr>
<td>Neg. EG: {{computed:neg}}</td>
</tr>
{{/rollBetween() naming 0 0}} -->
</tr>
</table>
</rolltemplate>
@@ -10822,7 +10857,6 @@ on("clicked:ruhephase", function(f) {
if (fokreg == 2) {
wilbonus = 3;
}
console.log("konbonus: " + konbonus + ", lifereg: " + lifereg);
liferegtotal = +regbonus + (+kon * +konbonus);
fokregtotal = (+wil * +wilbonus);
update["lebenspunkte_t"] += +update["lebenspunkte_e"];
@@ -11531,7 +11565,7 @@ stats.forEach(function (stat) {
on("clicked:repeating_nahkampfwaffen:angriff clicked:repeating_nahkampfwaffen:aktiveabwehr", function(eventInfo) {
let modus = eventInfo.sourceAttribute.split("_")[3];
getAttrs(['repeating_nahkampfwaffen_gm', 'repeating_nahkampfwaffen_waffenname', 'repeating_nahkampfwaffen_damageroll', 'repeating_nahkampfwaffen_rolldamage', 'repeating_nahkampfwaffen_waffenwert', 'repeating_nahkampfwaffen_waffenmod', 'repeating_nahkampfwaffen_nahwaffenattrmod', 'repeating_nahkampfwaffen_angriffsbonus', 'repeating_nahkampfwaffen_kampffertigkeitenbonus', 'hiddenallfert', 'geblendet', 'erschoepft', 'schadensmod', 'dice_mod', 'repeating_nahkampfwaffen_waffendefensiv', 'verteidigung', 'gmroll'], function (values) {
getAttrs(['repeating_nahkampfwaffen_gm', 'repeating_nahkampfwaffen_waffenname', 'repeating_nahkampfwaffen_damageroll', 'repeating_nahkampfwaffen_rolldamage', 'repeating_nahkampfwaffen_waffenwert', 'repeating_nahkampfwaffen_waffenmod', 'repeating_nahkampfwaffen_nahwaffenattrmod', 'repeating_nahkampfwaffen_angriffsbonus', 'repeating_nahkampfwaffen_kampffertigkeitenbonus', 'hiddenallfert', 'geblendet', 'erschoepft', 'schadensmod', 'dice_mod', 'repeating_nahkampfwaffen_waffendefensiv', 'verteidigung', 'gmroll', 'rollpatzer'], function (values) {
let baseRoll = "";
let dice_mod = parseInt(values['dice_mod'], 10) || 0;
let wuerfel = getWuerfel(dice_mod);
@@ -11545,6 +11579,7 @@ on("clicked:repeating_nahkampfwaffen:angriff clicked:repeating_nahkampfwaffen:ak
let waffenmod = parseInt(values['repeating_nahkampfwaffen_waffenmod'], 10) || 0;
let damageroll = values['repeating_nahkampfwaffen_damageroll'];
let rolldamage = values['repeating_nahkampfwaffen_rolldamage'];
let rollpatzer = values['rollpatzer'];
let nahwaffenattrmod = parseInt(values['repeating_nahkampfwaffen_nahwaffenattrmod'], 10) || 0;
let angriffsbonus = parseInt(values['repeating_nahkampfwaffen_angriffsbonus'], 10) || 0;
let kampffertigkeitenbonus = parseInt(values['repeating_nahkampfwaffen_kampffertigkeitenbonus'], 10) || 0;
@@ -11565,10 +11600,10 @@ on("clicked:repeating_nahkampfwaffen:angriff clicked:repeating_nahkampfwaffen:ak
if (modus == "angriff") {
abilityroll += "&{template:splittermond_generic}";
baseRoll = `${abilityroll} {{name=${waffenname}}} {{Probe=[[ ${baseDice} + [[${sum}]] ]]}} {{damage=${rolldamage}}} {{charactername=@{character_name}}} {{mod=[[?{Situationsmodifikator|0}]]}} {{grossmeister=[[1d10]]}} {{erfolge=[[1]]}} ${wuerfel} {{mode=[[${mode}]]}} {{success=[[0]]}} {{dmgmalus=[[@{schadensmod}d1]]}} {{geblendet=[[@{geblendet}d1]]}} {{basiswert=[[${waffenwert}d1]]}} {{skillbonus=[[${waffenmod}]]}} {{angriffsbonus=[[${angriffsbonus}]]}} {{kampffertigkeitenbonus=[[${kampffertigkeitenbonus}]]}} {{erschoepft=[[@{erschoepft}d1]]}} {{bbeh=[[${bBeh}]]}} {{behinderung=[[${behinderung}]]}} {{grmmode=[[${grmmode}]]}} {{schwierigkeit=[[1d0 + ?{Schwierigkeit|15}]]}}`;
baseRoll = `${abilityroll} {{name=${waffenname}}} {{Probe=[[ ${baseDice} + [[${sum}]] ]]}} {{damage=${rolldamage}}} {{charactername=@{character_name}}} {{rollpatzer=${rollpatzer}}} {{mod=[[?{Situationsmodifikator|0}]]}} {{grossmeister=[[1d10]]}} {{erfolge=[[1]]}} ${wuerfel} {{mode=[[${mode}]]}} {{success=[[0]]}} {{dmgmalus=[[@{schadensmod}d1]]}} {{geblendet=[[@{geblendet}d1]]}} {{basiswert=[[${waffenwert}d1]]}} {{skillbonus=[[${waffenmod}]]}} {{angriffsbonus=[[${angriffsbonus}]]}} {{kampffertigkeitenbonus=[[${kampffertigkeitenbonus}]]}} {{erschoepft=[[@{erschoepft}d1]]}} {{bbeh=[[${bBeh}]]}} {{behinderung=[[${behinderung}]]}} {{grmmode=[[${grmmode}]]}} {{patzer=[[1]]}} {{schwierigkeit=[[1d0 + ?{Schwierigkeit|15}]]}}`;
} else if (modus == "aktiveabwehr") {
abilityroll += "&{template:splittermond_aktiveabwehr}";
baseRoll = `${abilityroll} {{waffenname=${waffenname}}} {{Probe=[[ ${baseDice} + [[${defsum}]] ]]}} {{verteidigung=[[${verteidigung}]]}} {{neuerwert=Verteidigung}} {{naming=Parade - ${waffenname}}} {{def=[[1d0 + ${waffendefensiv}]]}} {{charactername=@{character_name}}} {{mod=[[?{Situationsmodifikator|0}]]}} {{grossmeister=[[1d10]]}} {{erfolge=[[1]]}} ${wuerfel} {{standardwurf=$[[2]]}} {{mode=[[${mode}]]}} {{success=[[0]]}} {{dmgmalus=[[@{schadensmod}d1]]}} {{geblendet=[[@{geblendet}d1]]}} {{basiswert=[[${waffenwert}d1]]}} {{skillbonus=[[${waffenmod}]]}} {{kampffertigkeitenbonus=[[${kampffertigkeitenbonus}]]}} {{erschoepft=[[@{erschoepft}d1]]}} {{bbeh=[[${bBeh}]]}} {{behinderung=[[${behinderung}]]}} {{grmmode=[[${grmmode}]]}} {{schwierigkeit=[[1d0 + ?{Schwierigkeit|15}]]}} {{Ticks=[[3 @{initracker_input}]]}}`;
baseRoll = `${abilityroll} {{waffenname=${waffenname}}} {{Probe=[[ ${baseDice} + [[${defsum}]] ]]}} {{verteidigung=[[${verteidigung}]]}} {{neuerwert=Verteidigung}} {{naming=Parade - ${waffenname}}} {{def=[[1d0 + ${waffendefensiv}]]}} {{charactername=@{character_name}}} {{mod=[[?{Situationsmodifikator|0}]]}} {{grossmeister=[[1d10]]}} {{erfolge=[[1]]}} ${wuerfel} {{standardwurf=$[[2]]}} {{mode=[[${mode}]]}} {{success=[[0]]}} {{dmgmalus=[[@{schadensmod}d1]]}} {{geblendet=[[@{geblendet}d1]]}} {{basiswert=[[${waffenwert}d1]]}} {{skillbonus=[[${waffenmod}]]}} {{kampffertigkeitenbonus=[[${kampffertigkeitenbonus}]]}} {{erschoepft=[[@{erschoepft}d1]]}} {{bbeh=[[${bBeh}]]}} {{behinderung=[[${behinderung}]]}} {{grmmode=[[${grmmode}]]}} {{rollpatzer=${rollpatzer}}} {{schwierigkeit=[[1d0 + ?{Schwierigkeit|15}]]}} {{Ticks=[[3 @{initracker_input}]]}}`;
}
processRoll(baseRoll);
@@ -11578,7 +11613,7 @@ on("clicked:repeating_nahkampfwaffen:angriff clicked:repeating_nahkampfwaffen:ak
on("clicked:repeating_fernkampfwaffen:angriff", function(eventInfo) {
getAttrs(['repeating_fernkampfwaffen_gm', 'repeating_fernkampfwaffen_waffennamefern', 'repeating_fernkampfwaffen_damagerollfern', 'repeating_fernkampfwaffen_rolldamagefern', 'repeating_fernkampfwaffen_waffenwertfern', 'repeating_fernkampfwaffen_waffenmodfern', 'repeating_fernkampfwaffen_fernwaffenattrmod', 'repeating_fernkampfwaffen_angriffsbonus', 'repeating_fernkampfwaffen_kampffertigkeitenbonus', 'hiddenallfert', 'geblendet', 'erschoepft', 'schadensmod', 'dice_mod', 'gmroll'], function (values) {
getAttrs(['repeating_fernkampfwaffen_gm', 'repeating_fernkampfwaffen_waffennamefern', 'repeating_fernkampfwaffen_damagerollfern', 'repeating_fernkampfwaffen_rolldamagefern', 'repeating_fernkampfwaffen_waffenwertfern', 'repeating_fernkampfwaffen_waffenmodfern', 'repeating_fernkampfwaffen_fernwaffenattrmod', 'repeating_fernkampfwaffen_angriffsbonus', 'repeating_fernkampfwaffen_kampffertigkeitenbonus', 'hiddenallfert', 'geblendet', 'erschoepft', 'schadensmod', 'dice_mod', 'gmroll', 'rollpatzer'], function (values) {
let baseRoll = "";
let bBeh = 0;
let dice_mod = parseInt(values['dice_mod'], 10) || 0;
@@ -11592,6 +11627,7 @@ on("clicked:repeating_fernkampfwaffen:angriff", function(eventInfo) {
let waffenmod = parseInt(values['repeating_fernkampfwaffen_waffenmodfern'], 10) || 0;
let damageroll = values['repeating_fernkampfwaffen_damagerollfern'];
let rolldamage = values['repeating_fernkampfwaffen_rolldamagefern'];
let rollpatzer = values['rollpatzer'];
let fernwaffenattrmod = parseInt(values['repeating_fernkampfwaffen_fernwaffenattrmod'], 10) || 0;
let angriffsbonus = parseInt(values['repeating_fernkampfwaffen_angriffsbonus'], 10) || 0;
let kampffertigkeitenbonus = parseInt(values['repeating_fernkampfwaffen_kampffertigkeitenbonus'], 10) || 0;
@@ -11608,7 +11644,7 @@ on("clicked:repeating_fernkampfwaffen:angriff", function(eventInfo) {
}
abilityroll += "&{template:splittermond_generic}";
baseRoll = `${abilityroll} {{name=${waffenname}}} {{Probe=[[ ${baseDice} + [[${sum}]] ]]}} {{damage=${rolldamage}}} {{charactername=@{character_name}}} {{mod=[[?{Situationsmodifikator|0}]]}} {{grossmeister=[[1d10]]}} {{erfolge=[[1]]}} ${wuerfel} {{mode=[[${mode}]]}} {{success=[[0]]}} {{dmgmalus=[[@{schadensmod}d1]]}} {{geblendet=[[@{geblendet}d1]]}} {{basiswert=[[${waffenwert}d1]]}} {{skillbonus=[[${waffenmod}]]}} {{angriffsbonus=[[${angriffsbonus}]]}} {{kampffertigkeitenbonus=[[${kampffertigkeitenbonus}]]}} {{erschoepft=[[@{erschoepft}d1]]}} {{bbeh=[[${bBeh}]]}} {{behinderung=[[${behinderung}]]}} {{grmmode=[[${grmmode}]]}} {{schwierigkeit=[[1d0 + ?{Schwierigkeit|15}]]}}`;
baseRoll = `${abilityroll} {{name=${waffenname}}} {{Probe=[[ ${baseDice} + [[${sum}]] ]]}} {{damage=${rolldamage}}} {{charactername=@{character_name}}} {{mod=[[?{Situationsmodifikator|0}]]}} {{rollpatzer=${rollpatzer}}} {{grossmeister=[[1d10]]}} {{erfolge=[[1]]}} ${wuerfel} {{mode=[[${mode}]]}} {{success=[[0]]}} {{dmgmalus=[[@{schadensmod}d1]]}} {{geblendet=[[@{geblendet}d1]]}} {{basiswert=[[${waffenwert}d1]]}} {{skillbonus=[[${waffenmod}]]}} {{angriffsbonus=[[${angriffsbonus}]]}} {{kampffertigkeitenbonus=[[${kampffertigkeitenbonus}]]}} {{erschoepft=[[@{erschoepft}d1]]}} {{bbeh=[[${bBeh}]]}} {{behinderung=[[${behinderung}]]}} {{grmmode=[[${grmmode}]]}} {{patzer=[[1]]}} {{schwierigkeit=[[1d0 + ?{Schwierigkeit|15}]]}}`;
processRoll(baseRoll);
});
@@ -11617,7 +11653,7 @@ on("clicked:repeating_fernkampfwaffen:angriff", function(eventInfo) {
on("clicked:repeating_zauber:roll", function(eventInfo) {
getAttrs(['repeating_zauber_gm', 'repeating_zauber_zaubername', 'repeating_zauber_damagerollspell', 'repeating_zauber_rolldamagespell', 'repeating_zauber_zauberwert', 'repeating_zauber_zaubermod1', 'repeating_zauber_zaubermod2', 'repeating_zauber_hiddenmod', 'repeating_zauber_zauberattrmod', 'repeating_zauber_zauberkosten', 'repeating_zauber_spelldamagechanger', 'initracker_input', 'hiddenallfert', 'geblendet', 'erschoepft', 'schadensmod', 'dice_mod', 'glaubenskrise', 'repeating_zauber_zauberschwierigkeit', 'gmroll'], function (values) {
getAttrs(['repeating_zauber_gm', 'repeating_zauber_zaubername', 'repeating_zauber_damagerollspell', 'repeating_zauber_rolldamagespell', 'repeating_zauber_zauberwert', 'repeating_zauber_zaubermod1', 'repeating_zauber_zaubermod2', 'repeating_zauber_hiddenmod', 'repeating_zauber_zauberattrmod', 'repeating_zauber_zauberkosten', 'repeating_zauber_spelldamagechanger', 'initracker_input', 'hiddenallfert', 'geblendet', 'erschoepft', 'schadensmod', 'dice_mod', 'glaubenskrise', 'repeating_zauber_zauberschwierigkeit', 'gmroll', 'rollzauberpatzer'], function (values) {
let baseRoll = "";
let dice_mod = parseInt(values['dice_mod'], 10) || 0;
let wuerfel = getWuerfel(dice_mod);
@@ -11630,6 +11666,7 @@ on("clicked:repeating_zauber:roll", function(eventInfo) {
let zauberwert = parseInt(values['repeating_zauber_zauberwert'], 10) || 0;
let damagerollspell = values['repeating_zauber_damagerollspell'];
let rolldamagespell = values['repeating_zauber_rolldamagespell'];
let rollzauberpatzer = values['rollzauberpatzer'];
let spelldamagechanger = values['repeating_zauber_spelldamagechanger'];
let zaubermod1 = parseInt(values['repeating_zauber_zaubermod1'], 10) || 0;
let zaubermod2 = parseInt(values['repeating_zauber_zaubermod2'], 10) || 0;
@@ -11646,12 +11683,20 @@ on("clicked:repeating_zauber:roll", function(eventInfo) {
let zauberschwierigkeit = parseInt(values['repeating_zauber_zauberschwierigkeit'], 10) || 0;
let sum = +zauberwert + +zaubermod1 + +zaubermod2 + +hiddenmod + +zauberattrmod + +hiddenallfert - +geblendet - +glaubenskrise - +schadensmod;
if (zauberkosten.indexOf("K") > -1) {
if (zauberkosten.indexOf("V") > -1) {
zauberkosten = zauberkosten.substr(zauberkosten.indexOf("K") + 1, zauberkosten.indexOf("V") - 1);
} else {
zauberkosten = zauberkosten.substr(zauberkosten.indexOf("K") + 1);
}
}
if (gmroll == 0) {
abilityroll += "/w GM ";
}
abilityroll += "&{template:splittermond_generic}";
baseRoll = `${abilityroll} {{name=Zauber: ${zaubername}}} {{Probe=[[ ${baseDice} + [[${sum}]] ]]}} {{damage=${rolldamagespell}}} {{mod=[[?{Situationsmodifikator|0}]]}} {{grossmeister=[[1d10]]}} {{erfolge=[[1]]}} ${wuerfel} {{mode=[[${mode}]]}} {{success=[[0]]}} {{changer=${spelldamagechanger}}} {{damage=${rolldamagespell}}} {{charactername=@{character_name}}} {{dmgmalus=[[@{schadensmod}d1]]}} {{grmmode=[[${grmmode}]]}} {{basiswert=[[${zauberwert}d1]]}} {{erschoepft=[[@{erschoepft}d1]]}} {{geblendet=[[@{geblendet}d1]]}} {{schwierigkeit=[[1d0 + ?{Schwierigkeit|${zauberschwierigkeit}}]]}} {{Ticks=[[3+@{gesamttickplus}+@{benommen} @{initracker_input}]]}} {{fokus=${zauberkosten}}}`;
baseRoll = `${abilityroll} {{name=Zauber: ${zaubername}}} {{Probe=[[ ${baseDice} + [[${sum}]] ]]}} {{neg=[[0]]}} {{damage=${rolldamagespell}}} {{mod=[[?{Situationsmodifikator|0}]]}} {{grossmeister=[[1d10]]}} {{erfolge=[[1]]}} ${wuerfel} {{mode=[[${mode}]]}} {{success=[[0]]}} {{changer=${spelldamagechanger}}} {{damage=${rolldamagespell}}} {{charactername=@{character_name}}} {{dmgmalus=[[@{schadensmod}d1]]}} {{grmmode=[[${grmmode}]]}} {{basiswert=[[${zauberwert}d1]]}} {{erschoepft=[[@{erschoepft}d1]]}} {{geblendet=[[@{geblendet}d1]]}} {{schwierigkeit=[[1d0 + ?{Schwierigkeit|${zauberschwierigkeit}}]]}} {{Ticks=[[3+@{gesamttickplus}+@{benommen} @{initracker_input}]]}} {{rollzauberpatzer=${rollzauberpatzer}}} {{patzer=[[2]]}} {{fokus=${zauberkosten}}}`;
processRoll(baseRoll);
});
@@ -11789,7 +11834,7 @@ on("clicked:gw_nsc clicked:kw_nsc clicked:akrobatik_nsc", function(eventInfo) {
on("clicked:repeating_waffennsc:angriff clicked:repeating_waffennsc:aktiveabwehr", function(eventInfo) {
let modus = eventInfo.sourceAttribute.split("_")[3];
getAttrs(['repeating_waffennsc_waffennamensc', 'repeating_waffennsc_gm', 'repeating_waffennsc_waffendefensiv', 'repeating_waffennsc_damagerollnsc', 'repeating_nahkampfwaffen_waffenwertnsc', 'repeating_nahkampfwaffen_waffenwgsnsc', 'repeating_waffennsc_rolldamagensc', 'schadensmodnsc', 'dice_mod_nsc', 'verteidigungnsc', 'gmroll_nsc'], function (values) {
getAttrs(['repeating_waffennsc_waffennamensc', 'repeating_waffennsc_gm', 'repeating_waffennsc_waffendefensiv', 'repeating_waffennsc_damagerollnsc', 'repeating_nahkampfwaffen_waffenwertnsc', 'repeating_nahkampfwaffen_waffenwgsnsc', 'repeating_waffennsc_rolldamagensc', 'schadensmodnsc', 'dice_mod_nsc', 'verteidigungnsc', 'gmroll_nsc', 'rollpatzer'], function (values) {
let baseRoll = "";
let bBeh = 0;
let dice_mod = parseInt(values['dice_mod_nsc'], 10) || 0;
@@ -11805,6 +11850,7 @@ on("clicked:repeating_waffennsc:angriff clicked:repeating_waffennsc:aktiveabwehr
let waffenwert = parseInt(values['repeating_nahkampfwaffen_waffenwertnsc'], 10) || 0;
let damageroll = values['repeating_waffennsc_damagerollnsc'];
let rolldamage = values['repeating_waffennsc_rolldamagensc'];
let rollpatzer = values['rollpatzer'];
let schadensmod = parseInt(values['schadensmodnsc'], 10) || 0;
let verteidigung = parseInt(values['verteidigungnsc'], 10) || 0;
let behinderung = 0;
@@ -11817,10 +11863,10 @@ on("clicked:repeating_waffennsc:angriff clicked:repeating_waffennsc:aktiveabwehr
if (modus == "angriff") {
abilityroll += "&{template:splittermond_generic}";
baseRoll = `${abilityroll} {{name=Angriff: ${waffenname}}} {{Probe=[[ ${baseDice} + [[${sum}]] ]]}} {{damage=${rolldamage}}} {{charactername=@{namensc}}} {{mod=[[?{Situationsmodifikator|0}]]}} {{grossmeister=[[1d10]]}} {{erfolge=[[1]]}} ${wuerfel} {{mode=[[${mode}]]}} {{success=[[0]]}} {{dmgmalus=[[@{schadensmod}d1]]}} {{basiswert=[[${waffenwert}d1]]}} {{bbeh=[[${bBeh}]]}} {{behinderung=[[${behinderung}]]}} {{grmmode=[[${grmmode}]]}} {{schwierigkeit=[[1d0 + ?{Schwierigkeit|15}]]}} {{Ticks=[[${waffenwgs} @{initracker_input}]]}}`;
baseRoll = `${abilityroll} {{name=Angriff: ${waffenname}}} {{Probe=[[ ${baseDice} + [[${sum}]] ]]}} {{damage=${rolldamage}}} {{charactername=@{namensc}}} {{rollpatzer=${rollpatzer}}} {{mod=[[?{Situationsmodifikator|0}]]}} {{grossmeister=[[1d10]]}} {{erfolge=[[1]]}} ${wuerfel} {{mode=[[${mode}]]}} {{success=[[0]]}} {{dmgmalus=[[@{schadensmod}d1]]}} {{basiswert=[[${waffenwert}d1]]}} {{bbeh=[[${bBeh}]]}} {{behinderung=[[${behinderung}]]}} {{grmmode=[[${grmmode}]]}} {{schwierigkeit=[[1d0 + ?{Schwierigkeit|15}]]}} {{Ticks=[[${waffenwgs} @{initracker_input}]]}}`;
} else if (modus == "aktiveabwehr") {
abilityroll += "&{template:splittermond_aktiveabwehr}";
baseRoll = `${abilityroll} {{waffenname=${waffenname}}} {{Probe=[[ ${baseDice} + [[${defsum}]] ]]}} {{verteidigung=[[${verteidigung}]]}} {{neuerwert=Verteidigung}} {{naming=Parade - ${waffenname}}} {{def=[[1d0 + ${waffendefensiv}]]}} {{charactername=@{namensc}}} {{mod=[[?{Situationsmodifikator|0}]]}} {{grossmeister=[[1d10]]}} {{erfolge=[[1]]}} ${wuerfel} {{mode=[[${mode}]]}} {{success=[[0]]}} {{dmgmalus=[[@{schadensmod}d1]]}} {{geblendet=[[@{geblendet}d1]]}} {{basiswert=[[${waffenwert}d1]]}} {{bbeh=[[${bBeh}]]}} {{behinderung=[[${behinderung}]]}} {{grmmode=[[${grmmode}]]}} {{schwierigkeit=[[1d0 + ?{Schwierigkeit|15}]]}} {{Ticks=[[3 @{initracker_input}]]}}`;
baseRoll = `${abilityroll} {{waffenname=${waffenname}}} {{Probe=[[ ${baseDice} + [[${defsum}]] ]]}} {{verteidigung=[[${verteidigung}]]}} {{neuerwert=Verteidigung}} {{rollpatzer=${rollpatzer}}} {{naming=Parade - ${waffenname}}} {{def=[[1d0 + ${waffendefensiv}]]}} {{charactername=@{namensc}}} {{mod=[[?{Situationsmodifikator|0}]]}} {{grossmeister=[[1d10]]}} {{erfolge=[[1]]}} ${wuerfel} {{mode=[[${mode}]]}} {{success=[[0]]}} {{dmgmalus=[[@{schadensmod}d1]]}} {{geblendet=[[@{geblendet}d1]]}} {{basiswert=[[${waffenwert}d1]]}} {{bbeh=[[${bBeh}]]}} {{behinderung=[[${behinderung}]]}} {{grmmode=[[${grmmode}]]}} {{schwierigkeit=[[1d0 + ?{Schwierigkeit|15}]]}} {{Ticks=[[3 @{initracker_input}]]}}`;
}
processRoll(baseRoll);
@@ -12096,6 +12142,8 @@ on("clicked:nscimport", function(eventInfo) {
// Zauber
if (nscimport.search("Zauber") > -1) {
let spelltemp = "";
zauber = nscimport.substring(
nscimport.indexOf("Zauber") + 8,
nscimport.lastIndexOf("Merkmale")
@@ -12107,22 +12155,9 @@ on("clicked:nscimport", function(eventInfo) {
zauber = zauber.split("Meisterschaften")[0];
}
let spelltemp = "";
if (zauber.match(/[a-zA-Z]*\s\d+/g)) {
spelltemp = zauber.match(/[a-zA-Z]*\s\d+/g);
zauber = zauber.split(/[a-zA-Z]*\s\d+/g);
} else if (zauber.match(/[a-zA-Z]+\s[IV]+:/g)) {
spelltemp = zauber.match(/[a-zA-Z]+\s[IV]+:/g);
zauber = zauber.split(/[a-zA-Z]+\s[IV]+:/g);
}
let extractedspells = extractSpells(zauber);
zauber.splice(0,1);
for (var i = 0; i < zauber.length; i++) {
zauber[i] = spelltemp[i] + zauber[i];
}
nsc.zauber = zauber;
nsc.zauber = extractedspells;
}
// Fertigkeiten
@@ -12204,7 +12239,7 @@ function importNsc(nsc) {
let update = {};
let temp = "";
let ini = 0;
/*for (var i = 0; i < nsc.attributes.length; i++) {
for (var i = 0; i < nsc.attributes.length; i++) {
let attribute = vAttributes[i];
let value = nsc.attributes[i];
update[attribute] = +value;
@@ -12215,19 +12250,16 @@ function importNsc(nsc) {
}
});
nsc.fertigkeiten.forEach((fertigkeit) => {
console.log("Fertigkeit:" + fertigkeit);
let skill = fertigkeit.replace(/\s/g,'').match(/[a-zA-Zäöü]+/g) || "test";
let value = parseInt(fertigkeit.replace(/\s/g,'').match(/[\d]+/g), 10) || 0;
if(vSkills[skill]) {
skill = vSkills[skill];
}
console.log("skill:" + skill + ",value:" + value);
newRowId = generateRowID();
update['repeating_fertigkeitennsc_' + newRowId + '_fertigkeitnsc'] = skill;
update['repeating_fertigkeitennsc_' + newRowId + '_fertigkeitswertnsc'] = +value;
});
if (waffen.length > 0) {
console.log("Waffen: " + waffen);
for (var i = 0; i < waffen.length; i++) {
let aWaffen = waffen[i].split("|");
let name = aWaffen[0];
@@ -12244,7 +12276,6 @@ function importNsc(nsc) {
}
dmg2 = "d".concat(dmg2);
ini = aWaffen[4].split("-")[0];
console.log("Ini: " + ini);
let wgs = aWaffen[3];
let merkmale = aWaffen[5];
newRowId = generateRowID();
@@ -12258,7 +12289,7 @@ function importNsc(nsc) {
update['repeating_waffennsc_' + newRowId + '_waffenmerkmalensc'] = merkmale;
}
update['initiativensc'] = +ini;
}*/
}
setAttrs(update);
}
@@ -12301,14 +12332,11 @@ function getWeapons(waffen, merkmale) {
for (var i = 0; i < 999; i++) {
if (i < waffen.length) {
console.log("i: " + i + ", j: " + j);
if (i == j) {
console.log("Neue Waffe an Index " + j);
for (var k = i + 1; k < aMerkmale.length; k++) {
if ( (aMerkmale[k][0] - aMerkmale[k - 1][0]) > 2) {
let newIndex = aMerkmale[k - 1][0] + 1;
aWeapons.push(waffen.slice(j, newIndex).join("|"));
console.log("Wafen bisher: " + waffen.slice(j, newIndex).join("|"));
j = newIndex;
}
}
@@ -12318,8 +12346,59 @@ function getWeapons(waffen, merkmale) {
break;
}
}
}
function extractSpells(zauber) {
const magicschools = ["Bann", "Beherrschung", "Bewegung", "Erkenntnis", "Fels", "Feuer", "Heilung", "Illusion", "Kampf", "Licht", "Natur", "Schatten", "Schicksal", "Schutz", "Stärkung", "Tod", "Verwandlung", "Wasser", "Wind"];
const numerals = [0, 'I', 'II', 'III', 'IV', 'V'];
const numbers = [0, 1, 2, 3, 4, 5];
const searchedschools = new Array();
const foundschools = new Array();
const result = new Array();
console.log("aWeapons: " + aWeapons + ", Länge: " + aWeapons.length);
for (var i = 0; i < numerals.length; i++) {
if (zauber.search(numerals[i] + ":") > -1) {
/*console.log("Numeral gefunden: " + numerals[i]);
zauber.replaceAll(numerals[i], numbers[i]);*/
}
}
console.log("extracted spells: " + zauber);
for (var i = 0; i < magicschools.length; i++) {
let school = magicschools[i];
let index = zauber.search(school);
if (index > -1) {
let nextchar = zauber.charAt(index + school.length + 1);
if (numerals.includes(nextchar)) {
searchedschools.push(index);
}
}
}
for (var i = 0; i < searchedschools.length; i++) {
let index = searchedschools[i];
if (searchedschools[i+1] != null) {
let length = searchedschools[i+1] - index;
let result = zauber.substr(index, length);
if (result != "") {
foundschools.push(result);
}
} else {
let result = zauber.substr(index);
if (result != "") {
foundschools.push(result);
}
}
}
console.table(foundschools);
return result;
/*for (let i = 0; i < zauber.length; i++) {
}*/
}
</script>