mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
427 lines
19 KiB
HTML
427 lines
19 KiB
HTML
|
|
<!--
|
|
CREATED by Gorthian
|
|
Version 1.2
|
|
Letzte Änderung 2025-06-04
|
|
GitHub https://github.com/Gorthian/Roll20_HORDE_CharacterSheet
|
|
Wiki
|
|
Bugs & Issues
|
|
|
|
-->
|
|
<!-- Globale Variablen-->
|
|
<!-- - Platz für globale Variablen, falls benötigt-->
|
|
<!--
|
|
********************************
|
|
* START horde.pug
|
|
********************************
|
|
-->
|
|
<!--
|
|
********************************
|
|
* START src/html/sheet.pug
|
|
********************************
|
|
|
|
-->
|
|
<div class="sheet-horde">
|
|
<!-- Die Checkkbox muss ganz oben stehen und versteckt sein. Bedient wird sie durch die Checkbox gleichen Namens weiter unten.-->
|
|
<input type="checkbox" value="npc" name="attr_is_npc" style="display: none !important;"/>
|
|
<div class="sheet-logo"><img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/HORDE/images/HORDE_Logo.png"/></div>
|
|
<div class="sheet-kopfzeile sheet-horde-zeile">
|
|
<div class="sheet-name"><span data-i18n="name"></span>
|
|
<input type="text" value="" name="attr_character_name"/>
|
|
</div>
|
|
<div class="sheet-lebenspunkte"><span data-i18n="lebenspunkte"></span>
|
|
<input type="number" value="50" name="attr_hp"/>
|
|
<input type="number" value="50" name="attr_hp_max"/>
|
|
</div>
|
|
<div class="sheet-klasse sheet-horde-pc-only"><span data-i18n="klasse"></span>
|
|
<input type="text" value="" name="attr_klasse"/>
|
|
</div>
|
|
<div class="sheet-npc"><span data-i18n="npc-bogen"></span>
|
|
<input type="checkbox" value="npc" name="attr_is_npc"/>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-attribute sheet-horde-zeile">
|
|
<!-- MIXIN : src/html/sheet.pug : attribut-->
|
|
<div class="sheet-attribut">
|
|
<h2 data-i18n="intelligenz"></h2>
|
|
<input class="sheet-d20" type="number" value="5" name="attr_intelligenz"/>
|
|
<div class="sheet-attribut-wert">
|
|
<button class="sheet-d20" type="action" name="act_probe-intelligenz"><img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/HORDE/images/d20.png"/></button>
|
|
</div>
|
|
<div class="sheet-attribut-bonus">
|
|
<input type="number" value="" name="attr_intelligenz_bonus"/>
|
|
</div><span data-i18n="bonus"> </span>
|
|
</div>
|
|
<!-- MIXIN : src/html/sheet.pug : attribut-->
|
|
<div class="sheet-attribut">
|
|
<h2 data-i18n="mut"></h2>
|
|
<input class="sheet-d20" type="number" value="5" name="attr_mut"/>
|
|
<div class="sheet-attribut-wert">
|
|
<button class="sheet-d20" type="action" name="act_probe-mut"><img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/HORDE/images/d20.png"/></button>
|
|
</div>
|
|
<div class="sheet-attribut-bonus">
|
|
<input type="number" value="" name="attr_mut_bonus"/>
|
|
</div><span data-i18n="bonus"> </span>
|
|
</div>
|
|
<!-- MIXIN : src/html/sheet.pug : attribut-->
|
|
<div class="sheet-attribut">
|
|
<h2 data-i18n="koerperkraft"></h2>
|
|
<input class="sheet-d20" type="number" value="5" name="attr_koerperkraft"/>
|
|
<div class="sheet-attribut-wert">
|
|
<button class="sheet-d20" type="action" name="act_probe-koerperkraft"><img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/HORDE/images/d20.png"/></button>
|
|
</div>
|
|
<div class="sheet-attribut-bonus">
|
|
<input type="number" value="" name="attr_koerperkraft_bonus"/>
|
|
</div><span data-i18n="bonus"> </span>
|
|
</div>
|
|
<!-- MIXIN : src/html/sheet.pug : attribut-->
|
|
<div class="sheet-attribut">
|
|
<h2 data-i18n="geschick"></h2>
|
|
<input class="sheet-d20" type="number" value="5" name="attr_geschick"/>
|
|
<div class="sheet-attribut-wert">
|
|
<button class="sheet-d20" type="action" name="act_probe-geschick"><img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/HORDE/images/d20.png"/></button>
|
|
</div>
|
|
<div class="sheet-attribut-bonus">
|
|
<input type="number" value="" name="attr_geschick_bonus"/>
|
|
</div><span data-i18n="bonus"> </span>
|
|
</div>
|
|
<!-- MIXIN : src/html/sheet.pug : attribut-->
|
|
<div class="sheet-attribut">
|
|
<h2 data-i18n="charisma"></h2>
|
|
<input class="sheet-d20" type="number" value="5" name="attr_charisma"/>
|
|
<div class="sheet-attribut-wert">
|
|
<button class="sheet-d20" type="action" name="act_probe-charisma"><img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/HORDE/images/d20.png"/></button>
|
|
</div>
|
|
<div class="sheet-attribut-bonus">
|
|
<input type="number" value="" name="attr_charisma_bonus"/>
|
|
</div><span data-i18n="bonus"> </span>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-inventar sheet-horde-zeile sheet-horde-npc-only">
|
|
<h2 data-i18n="angriff"></h2>
|
|
<!-- MIXIN : src/html/sheet.pug : waffe-->
|
|
<div class="sheet-waffe">
|
|
<div class="sheet-waffe-ort">
|
|
<label for="attr_linke-hand" data-i18n="linke-hand"></label>
|
|
</div>
|
|
<div class="sheet-waffe-name">
|
|
<input type="text" value="" name="attr_linke-hand" id="attr_linke-hand"/>
|
|
</div>
|
|
<div class="sheet-waffe-attribut"> </div>
|
|
<div class="sheet-waffe-schaden"> </div>
|
|
<div class="sheet-waffe-notiz">
|
|
<input type="text" value="" name="attr_linke-hand_notiz"/>
|
|
</div>
|
|
<div class="sheet-waffe-angriff">
|
|
<button class="sheet-d6" type="action" name="act_angriff-npc-linke-hand"><img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/HORDE/images/d6.png"/></button>
|
|
</div>
|
|
</div>
|
|
<!-- MIXIN : src/html/sheet.pug : waffe-->
|
|
<div class="sheet-waffe">
|
|
<div class="sheet-waffe-ort">
|
|
<label for="attr_rechte-hand" data-i18n="rechte-hand"></label>
|
|
</div>
|
|
<div class="sheet-waffe-name">
|
|
<input type="text" value="" name="attr_rechte-hand" id="attr_rechte-hand"/>
|
|
</div>
|
|
<div class="sheet-waffe-attribut"> </div>
|
|
<div class="sheet-waffe-schaden"> </div>
|
|
<div class="sheet-waffe-notiz">
|
|
<input type="text" value="" name="attr_rechte-hand_notiz"/>
|
|
</div>
|
|
<div class="sheet-waffe-angriff">
|
|
<button class="sheet-d6" type="action" name="act_angriff-npc-rechte-hand"><img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/HORDE/images/d6.png"/></button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-inventar sheet-horde-zeile sheet-horde-pc-only">
|
|
<h2 data-i18n="waffen"></h2>
|
|
<!-- MIXIN : src/html/sheet.pug : waffe-->
|
|
<div class="sheet-waffe">
|
|
<div class="sheet-waffe-ort">
|
|
<label for="attr_linke-hand" data-i18n="linke-hand"></label>
|
|
</div>
|
|
<div class="sheet-waffe-name">
|
|
<input type="text" value="Faust" name="attr_linke-hand" id="attr_linke-hand"/>
|
|
</div>
|
|
<div class="sheet-waffe-attribut">
|
|
<select name="attr_linke-hand_attribut">
|
|
<option value="intelligenz" data-i18n="intelligenz"></option>
|
|
<option value="mut" data-i18n="mut"></option>
|
|
<option value="koerperkraft" data-i18n="koerperkraft" selected="selected"></option>
|
|
<option value="geschick" data-i18n="geschick"></option>
|
|
<option value="charisma" data-i18n="charisma"></option>
|
|
</select>
|
|
</div>
|
|
<div class="sheet-waffe-schaden">
|
|
<input type="number" value="1" name="attr_linke-hand_schaden"/><span data-i18n="d6"></span>
|
|
</div>
|
|
<div class="sheet-waffe-notiz">
|
|
<input type="text" value="" name="attr_linke-hand_notiz"/>
|
|
</div>
|
|
<div class="sheet-waffe-angriff">
|
|
<button class="sheet-d6" type="action" name="act_angriff-linke-hand"><img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/HORDE/images/d6.png"/></button>
|
|
</div>
|
|
</div>
|
|
<!-- MIXIN : src/html/sheet.pug : waffe-->
|
|
<div class="sheet-waffe">
|
|
<div class="sheet-waffe-ort">
|
|
<label for="attr_rechte-hand" data-i18n="rechte-hand"></label>
|
|
</div>
|
|
<div class="sheet-waffe-name">
|
|
<input type="text" value="Faust" name="attr_rechte-hand" id="attr_rechte-hand"/>
|
|
</div>
|
|
<div class="sheet-waffe-attribut">
|
|
<select name="attr_rechte-hand_attribut">
|
|
<option value="intelligenz" data-i18n="intelligenz"></option>
|
|
<option value="mut" data-i18n="mut"></option>
|
|
<option value="koerperkraft" data-i18n="koerperkraft" selected="selected"></option>
|
|
<option value="geschick" data-i18n="geschick"></option>
|
|
<option value="charisma" data-i18n="charisma"></option>
|
|
</select>
|
|
</div>
|
|
<div class="sheet-waffe-schaden">
|
|
<input type="number" value="1" name="attr_rechte-hand_schaden"/><span data-i18n="d6"></span>
|
|
</div>
|
|
<div class="sheet-waffe-notiz">
|
|
<input type="text" value="" name="attr_rechte-hand_notiz"/>
|
|
</div>
|
|
<div class="sheet-waffe-angriff">
|
|
<button class="sheet-d6" type="action" name="act_angriff-rechte-hand"><img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/HORDE/images/d6.png"/></button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-staerken-schwaechen sheet-horde-zeile sheet-horde-pc-only">
|
|
<div class="sheet-staerken">
|
|
<h2 data-i18n="staerken"></h2>
|
|
<textarea name="attr_staerken"></textarea>
|
|
</div>
|
|
<div class="sheet-schwaechen">
|
|
<h2 data-i18n="schwaechen"></h2>
|
|
<textarea name="attr_schwaechen"></textarea>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-notizen sheet-horde-zeile">
|
|
<h2 data-i18n="notizen"></h2>
|
|
<textarea name="attr_notizen"></textarea>
|
|
</div>
|
|
<div class="sheet-vergangenheit sheet-horde-zeile sheet-horde-pc-only">
|
|
<h2 data-i18n="vergangenheit"></h2>
|
|
<textarea name="attr_vergangenheit"></textarea>
|
|
</div>
|
|
<div class="sheet-inventar sheet-horde-zeile sheet-horde-pc-only">
|
|
<h2 data-i18n="accessoirs"></h2>
|
|
<!-- MIXIN : src/html/sheet.pug : item-->
|
|
<div class="sheet-item">
|
|
<label for="attr_finger-1" data-i18n="finger-1"></label>
|
|
<input type="text" value="" id="attr_finger-1" name="attr_finger-1"/>
|
|
</div>
|
|
<!-- MIXIN : src/html/sheet.pug : item-->
|
|
<div class="sheet-item">
|
|
<label for="attr_finger-2" data-i18n="finger-2"></label>
|
|
<input type="text" value="" id="attr_finger-2" name="attr_finger-2"/>
|
|
</div>
|
|
<!-- MIXIN : src/html/sheet.pug : item-->
|
|
<div class="sheet-item">
|
|
<label for="attr_hals" data-i18n="hals"></label>
|
|
<input type="text" value="" id="attr_hals" name="attr_hals"/>
|
|
</div>
|
|
<!-- MIXIN : src/html/sheet.pug : item-->
|
|
<div class="sheet-item">
|
|
<label for="attr_ruecken" data-i18n="ruecken"></label>
|
|
<input type="text" value="" id="attr_ruecken" name="attr_ruecken"/>
|
|
</div>
|
|
<h2 data-i18n="rucksack"></h2>
|
|
<textarea name="attr_rucksack"></textarea>
|
|
</div>
|
|
</div>
|
|
<!--
|
|
********************************
|
|
* ENDE src/html/sheet.pug
|
|
********************************
|
|
-->
|
|
<!--
|
|
********************************
|
|
* START src/html/rolltemplates.pug
|
|
********************************
|
|
|
|
-->
|
|
<rolltemplate class="sheet-rolltemplate-attributsprobe">
|
|
<div class="sheet-template-container">
|
|
<div class="sheet-template-header">{{attribut}} gegen {{computed::schwierigkeit}}</div>
|
|
<div class="sheet-template-row">
|
|
<div class="sheet-template-column">Bonus : </div>
|
|
<div class="sheet-template-column">{{computed::bonus}}</div>
|
|
</div>
|
|
<div class="sheet-template-row">
|
|
<div class="sheet-template-column">Wurf: </div>
|
|
<div class="sheet-template-column">{{computed::wurf}}</div>
|
|
</div>
|
|
<div class="sheet-template-desc">{{computed::beschreibung}}</div>
|
|
</div>
|
|
</rolltemplate>
|
|
<rolltemplate class="sheet-rolltemplate-angriff">
|
|
<div class="sheet-template-container">
|
|
<div class="sheet-template-header">Angriff mit {{waffe}}</div>
|
|
<div class="sheet-template-row">
|
|
<div class="sheet-template-column">Attribut : </div>
|
|
<div class="sheet-template-column">{{attribut}}</div>
|
|
</div>
|
|
<div class="sheet-template-row">
|
|
<div class="sheet-template-column">Wurf: </div>
|
|
<div class="sheet-template-column">{{computed::wurf}}</div>
|
|
</div>{{#rollGreater() computed::fehlschlag 0}}
|
|
<div class="sheet-template-row">
|
|
<div class="sheet-template-column">Fehlschäge: </div>
|
|
<div class="sheet-template-column">{{computed::fehlschlag}}</div>
|
|
</div>{{/rollGreater() computed::fehlschlag 0}}
|
|
{{#rollGreater() computed::leichter_treffer 0}}
|
|
<div class="sheet-template-row">
|
|
<div class="sheet-template-column">Leichte Treffer: </div>
|
|
<div class="sheet-template-column">{{computed::leichter_treffer}}</div>
|
|
</div>{{/rollGreater() computed::leichter_treffer 0}}
|
|
{{#rollGreater() computed::mittlerer_treffer 0}}
|
|
<div class="sheet-template-row">
|
|
<div class="sheet-template-column">Mittlere Treffer: </div>
|
|
<div class="sheet-template-column">{{computed::mittlerer_treffer}}</div>
|
|
</div>{{/rollGreater() computed::mittlerer_treffer 0}}
|
|
{{#rollGreater() computed::kritischer_treffer 0}}
|
|
<div class="sheet-template-row">
|
|
<div class="sheet-template-column">Kritischer Treffer: </div>
|
|
<div class="sheet-template-column">{{computed::kritischer_treffer}}</div>
|
|
</div>{{/rollGreater() computed::kritischer_treffer 0}}
|
|
<div class="sheet-template-desc">{{notiz}}</div>
|
|
</div>
|
|
</rolltemplate>
|
|
<rolltemplate class="sheet-rolltemplate-angriff-npc">
|
|
<div class="sheet-template-container">
|
|
<div class="sheet-template-header">Angriff mit {{waffe}} </div>
|
|
<div class="sheet-template-row">{{#rollTotal() computed::wurf 1}}<b>Fehlschlag</b>{{/rollTotal() computed::wurf 1}}
|
|
{{#rollGreater() computed::wurf 1}}
|
|
<div class="sheet-template-column">Schaden: </div>
|
|
<div class="sheet-template-column">{{computed::wurf}} </div>{{/rollGreater() computed::wurf 1}}
|
|
</div>
|
|
<div class="sheet-template-desc">{{notiz}}</div>
|
|
</div>
|
|
</rolltemplate>
|
|
<!--
|
|
********************************
|
|
* ENDE src/html/rolltemplates.pug
|
|
********************************
|
|
-->
|
|
<!-- SHEET WORKERS-->
|
|
<script type="text/worker">function attributsprobe(attribut) {
|
|
// console.log("Starte Attributsprobe");
|
|
getAttrs([attribut,attribut+"_bonus"], function(values) {
|
|
let schwierigkeit = parseInt(values[attribut]||0);
|
|
let bonus = parseInt(values[attribut+"_bonus"]||0);
|
|
startRoll("&{template:attributsprobe} {{attribut="+getTranslationByKey(attribut)+"}} {{wurf=[[1d20]]}} {{schwierigkeit=[["+schwierigkeit+"]]}} {{bonus=[["+bonus+"]]}} {{beschreibung=[[0]]}}", (results) => {
|
|
const wurf = results.results.wurf.result
|
|
const schwierigkeit = results.results.schwierigkeit.result;
|
|
const bonus = results.results.bonus.result;
|
|
let ergebnis = schwierigkeit+bonus-wurf;
|
|
let beschreibung = "";
|
|
|
|
if (ergebnis < -10) {beschreibung = getTranslationByKey("info-katastrophaler_fehlschlag");} else
|
|
if (ergebnis < -5 && ergebnis > -11) {beschreibung = getTranslationByKey("info-unangenehmer_fehlschlag");} else
|
|
if (ergebnis < 0 && ergebnis > -6) {beschreibung = getTranslationByKey("info-einfacher_fehlschlag");} else
|
|
if (ergebnis == 0) {beschreibung = getTranslationByKey("info-erfolg");} else
|
|
if (ergebnis > 0 && ergebnis < 6) {beschreibung = getTranslationByKey("info-einfacher_erfolg");} else
|
|
if (ergebnis > 5 && ergebnis < 11) {beschreibung = getTranslationByKey("info-besonderer_erfolg");} else
|
|
if (ergebnis > 10) {beschreibung = getTranslationByKey("info-exzellenter_erfolg");}
|
|
// console.log(beschreibung);
|
|
|
|
finishRoll(
|
|
results.rollId,
|
|
{
|
|
wurf: wurf,
|
|
schwierigkeit: schwierigkeit,
|
|
bonus: bonus,
|
|
beschreibung: beschreibung
|
|
}
|
|
)
|
|
});
|
|
});
|
|
}
|
|
|
|
function angriff(waffe) {
|
|
// console.log("Starte Angriffs");
|
|
getAttrs([waffe,waffe+"_attribut",waffe+"_schaden",waffe+"_notiz"], function(values) {
|
|
let name = values[waffe]||"";
|
|
let attribut = values[waffe+"_attribut"]||"";
|
|
let schaden = parseInt(values[waffe+"_schaden"]||1);
|
|
let notiz = values[waffe+"_notiz"]||"";
|
|
|
|
startRoll("&{template:angriff} {{waffe="+name+"}} {{attribut="+getTranslationByKey(attribut)+"}} {{wurf=[["+schaden+"d6]]}} {{notiz="+notiz+"}} {{fehlschlag=[[0]]}} {{leichter_treffer=[[0]]}} {{mittlerer_treffer=[[0]]}} {{kritischer_treffer=[[0]]}}", (results) => {
|
|
const wuerfel = results.results.wurf.dice;
|
|
const wurf = results.results.wurf.dice.toString()
|
|
let fehlschlag = 0;
|
|
let leichter_treffer = 0;
|
|
let mittlerer_treffer = 0;
|
|
let kritischer_treffer = 0;
|
|
|
|
for (ergebnis of wuerfel) {
|
|
if (ergebnis == 1) fehlschlag = fehlschlag +1;
|
|
if (ergebnis == 2) leichter_treffer = leichter_treffer +1;
|
|
if (ergebnis == 3) leichter_treffer = leichter_treffer +1;
|
|
if (ergebnis == 4) mittlerer_treffer = mittlerer_treffer +1;
|
|
if (ergebnis == 5) mittlerer_treffer = mittlerer_treffer +1;
|
|
if (ergebnis == 6) kritischer_treffer = kritischer_treffer +1;
|
|
}
|
|
|
|
// console.log(fehlschlag+","+leichter_treffer+","+mittlerer_treffer+","+kritischer_treffer);
|
|
|
|
finishRoll(
|
|
results.rollId,
|
|
{
|
|
wurf: wurf,
|
|
fehlschlag: fehlschlag,
|
|
leichter_treffer: leichter_treffer,
|
|
mittlerer_treffer: mittlerer_treffer,
|
|
kritischer_treffer: kritischer_treffer
|
|
}
|
|
)
|
|
});
|
|
});
|
|
}
|
|
|
|
function angriff_npc(waffe) {
|
|
// console.log("Starte Angriffs");
|
|
getAttrs([waffe,waffe+"_notiz"], function(values) {
|
|
let name = values[waffe]||"";
|
|
let notiz = values[waffe+"_notiz"]||"";
|
|
|
|
startRoll("&{template:angriff-npc} {{waffe="+name+"}} {{wurf=[[1d6]]}} {{notiz="+notiz+"}}", (results) => {
|
|
const wuerfel = results.results.wurf.dice;
|
|
const wurf = results.results.wurf.dice;
|
|
|
|
finishRoll(
|
|
results.rollId,
|
|
{
|
|
wurf: wurf
|
|
}
|
|
)
|
|
});
|
|
});
|
|
}
|
|
|
|
['intelligenz', 'mut', 'koerperkraft', 'geschick', 'charisma'].forEach(attr => {
|
|
on(`clicked:probe-${attr}`, function() {
|
|
attributsprobe(attr);
|
|
});
|
|
});
|
|
|
|
['linke-hand', 'rechte-hand'].forEach(waffe => {
|
|
on(`clicked:angriff-${waffe}`, function() {
|
|
angriff(waffe);
|
|
});
|
|
on(`clicked:angriff-npc-${waffe}`, function() {
|
|
angriff_npc(waffe);
|
|
});
|
|
});
|
|
</script>
|
|
<!--
|
|
********************************
|
|
* ENDE horde.pug
|
|
********************************
|
|
--> |