mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
325 lines
15 KiB
HTML
325 lines
15 KiB
HTML
<div class="character-sheet">
|
|
<div class="row">
|
|
<div class="col-12 center">
|
|
<img class="logo" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Omerta/Images/logo-black.png" alt="">
|
|
<img class="logo logo--dark-mode" src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Omerta/Images/logo.png" alt="">
|
|
<br>
|
|
<h1 class="hr-title">
|
|
<span data-i18n="character-sheet">Karta postaci</span>
|
|
</h1>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-4">
|
|
<div class="title-box">
|
|
<h2 data-i18n="wounds">Rany</h2>
|
|
<div class="title-box__row">
|
|
<label><span data-i18n="level">Poziom</span> 1</label>
|
|
<input class="title-box__input-padding" type="text" name="attr_wounds_1">
|
|
<input class="title-box__input-checkbox" type="checkbox" name="attr_wounds_1_check">
|
|
</div>
|
|
<div class="title-box__row">
|
|
<label><span data-i18n="level">Poziom</span> 2</label>
|
|
<input class="title-box__input-padding" type="text" name="attr_wounds_2">
|
|
<input class="title-box__input-checkbox" type="checkbox" name="attr_wounds_2_check">
|
|
</div>
|
|
<div class="title-box__row">
|
|
<label><span data-i18n="level">Poziom</span> 3</label>
|
|
<input class="title-box__input-padding" type="text" name="attr_wounds_3">
|
|
<input class="title-box__input-checkbox" type="checkbox" name="attr_wounds_3_check">
|
|
</div>
|
|
</div>
|
|
<div class="title-box">
|
|
<h2 data-i18n="traumas">Traumy</h2>
|
|
<div class="title-box__row">
|
|
<label><span data-i18n="level">Poziom</span> 1</label>
|
|
<input class="title-box__input-padding" type="text" name="attr_trauma_1">
|
|
<input class="title-box__input-checkbox" type="checkbox" name="attr_trauma_1_check">
|
|
</div>
|
|
<div class="title-box__row">
|
|
<label><span data-i18n="level">Poziom</span> 2</label>
|
|
<input class="title-box__input-padding" type="text" name="attr_trauma_2">
|
|
<input class="title-box__input-checkbox" type="checkbox" name="attr_trauma_2_check">
|
|
</div>
|
|
<div class="title-box__row">
|
|
<label><span data-i18n="level">Poziom</span> 3</label>
|
|
<input class="title-box__input-padding" type="text" name="attr_trauma_3">
|
|
<input class="title-box__input-checkbox" type="checkbox" name="attr_trauma_3_check">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="title-box">
|
|
<h2 data-i18n="respect">Szacunek</h2>
|
|
<div class="title-box__row-checkboxes title-box__row-checkboxes--with-label">
|
|
<label data-i18n="arouses-admiration">Budzi podziw</label>
|
|
<input type="checkbox" name="attr_respect_level" value="10" class="title-box__row-checkbox--red">
|
|
<input type="checkbox" name="attr_respect_level" value="9" class="title-box__row-checkbox--red">
|
|
<input type="checkbox" name="attr_respect_level" value="8" class="title-box__row-checkbox--red">
|
|
<input type="checkbox" name="attr_respect_level" value="7" class="title-box__row-checkbox--red">
|
|
<input type="checkbox" name="attr_respect_level" value="6">
|
|
<input type="checkbox" name="attr_respect_level" value="5">
|
|
<input type="checkbox" name="attr_respect_level" value="4">
|
|
<input type="checkbox" name="attr_respect_level" value="3">
|
|
<input type="checkbox" name="attr_respect_level" value="2">
|
|
<input type="checkbox" name="attr_respect_level" value="1">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="title-box">
|
|
<h2 data-i18n="stress">Stres</h2>
|
|
<div class="title-box__row-checkboxes">
|
|
<input type="checkbox" name="attr_stress_level" value="10">
|
|
<input type="checkbox" name="attr_stress_level" value="9">
|
|
<input type="checkbox" name="attr_stress_level" value="8">
|
|
<input type="checkbox" name="attr_stress_level" value="7">
|
|
<input type="checkbox" name="attr_stress_level" value="6">
|
|
<input type="checkbox" name="attr_stress_level" value="5">
|
|
<input type="checkbox" name="attr_stress_level" value="4">
|
|
<input type="checkbox" name="attr_stress_level" value="3">
|
|
<input type="checkbox" name="attr_stress_level" value="2">
|
|
<input type="checkbox" name="attr_stress_level" value="1">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-8">
|
|
|
|
<div class="character-details-box">
|
|
<div class="character-details-box__label">
|
|
<label data-i18n="name">Imię i nazwisko</label>
|
|
<input type="text" name="attr_character_name" title="@{character_name}" spellcheck="false">
|
|
</div>
|
|
<div class="character-details-box__label">
|
|
<label data-i18n="archetype">Archetyp</label>
|
|
<input type="text" name="attr_archetype" title="@{archetype}" spellcheck="false">
|
|
</div>
|
|
<div class="character-details-box__label">
|
|
<label data-i18n="nickname">Ksywa</label>
|
|
<input type="text" name="attr_nickname" title="@{nickname}" spellcheck="false">
|
|
</div>
|
|
<div class="character-details-box__label">
|
|
<label data-i18n="origin">Pochodzenie</label>
|
|
<input type="text" name="attr_origin" title="@{origin}" spellcheck="false">
|
|
</div>
|
|
<div class="character-details-box__label">
|
|
<label data-i18n="age">Wiek</label>
|
|
<input type="text" name="attr_age" title="@{age}" spellcheck="false">
|
|
</div>
|
|
<div class="character-details-box__label">
|
|
<label data-i18n="career">Kariera</label>
|
|
<input type="text" name="attr_career" title="@{career}" spellcheck="false">
|
|
</div>
|
|
</div>
|
|
|
|
<br>
|
|
<h2 class="hr-subtitle">
|
|
<span data-i18n="attributes">Atrybuty</span>
|
|
</h2>
|
|
<div class="attributes-container">
|
|
<div class="attributes-container__box">
|
|
<input type="number" name="attr_efficiency" value="0">
|
|
<button type="action" name="act_roll" value='&{template:omerta} {{baseRoll=[[1d6 + @{efficiency} + ?{@{summodifier}|0}]] }} {{roll-name=^{efficiency}}}' data-attribute="efficiency" data-i18n="efficiency">Sprawność</button>
|
|
</div>
|
|
<div class="attributes-container__box">
|
|
<input type="number" name="attr_charisma" value="0">
|
|
<button type="action" name="act_roll" value='&{template:omerta} {{baseRoll=[[1d6 + @{charisma} + ?{@{summodifier}|0}]] }} {{roll-name=^{charisma}}}' data-attribute="charisma" data-i18n="charisma">Charyzma</button>
|
|
</div>
|
|
<div class="attributes-container__box">
|
|
<input type="number" name="attr_senses" value="0">
|
|
<button type="action" name="act_roll" value='&{template:omerta} {{baseRoll=[[1d6 + @{senses} + ?{@{summodifier}|0}]] }} {{roll-name=^{senses}}}' data-attribute="senses" data-i18n="senses">Zmysły</button>
|
|
</div>
|
|
<div class="attributes-container__box">
|
|
<input type="number" name="attr_psyche" value="0">
|
|
<button type="action" name="act_roll" value='&{template:omerta} {{baseRoll=[[1d6 + @{psyche} + ?{@{summodifier}|0}]] }} {{roll-name=^{psyche}}}' data-attribute="psyche" data-i18n="psyche">Psychika</button>
|
|
</div>
|
|
<div class="attributes-container__box">
|
|
<input type="number" name="attr_mind" value="0">
|
|
<button type="action" name="act_roll" value='&{template:omerta} {{baseRoll=[[1d6 + @{mind} + ?{@{summodifier}|0}]] }} {{roll-name=^{mind}}}' data-attribute="mind" data-i18n="mind">Rozum</button>
|
|
</div>
|
|
</div>
|
|
<div class="row row--margin">
|
|
<div class="col-6">
|
|
<div class="title-box">
|
|
<h2 data-i18n="advantages">Zalety</h2>
|
|
<div>
|
|
<textarea name="attr_advantages" id="" cols="30" rows="6" spellcheck="false"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-6" style="padding-right: 0;">
|
|
<div class="title-box">
|
|
<h2 data-i18n="disadvantages">Wady</h2>
|
|
<div>
|
|
<textarea name="attr_disadvantages" id="" cols="30" rows="6" spellcheck="false"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="title-box">
|
|
<h2 data-i18n="moves">Ruchy</h2>
|
|
<div class="row row--textarea-box">
|
|
<div class="col-6">
|
|
<textarea name="attr_moves1" id="" cols="30" rows="6" spellcheck="false"></textarea>
|
|
</div>
|
|
<div class="col-6">
|
|
<textarea name="attr_moves2" id="" cols="30" rows="6" spellcheck="false"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row row--col-no-padding">
|
|
<div class="col-6">
|
|
<div class="title-box">
|
|
<h2 data-i18n="description-color">Opis, koloryt</h2>
|
|
<textarea name="attr_description" id="" cols="30" rows="6" spellcheck="false"></textarea>
|
|
</div>
|
|
</div>
|
|
<div class="col-6">
|
|
<div class="title-box">
|
|
<h2 data-i18n="equipment">Ekwipunek</h2>
|
|
<textarea name="attr_eq" id="" cols="30" rows="6" spellcheck="false"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="title-box">
|
|
<h2 data-i18n="notes">Notatki</h2>
|
|
<textarea name="attr_notes" id="" cols="30" rows="6" spellcheck="false"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<rolltemplate class="sheet-rolltemplate-omerta">
|
|
<div class="template-wrap">
|
|
<div class="template-header">
|
|
{{#character_name}}
|
|
{{#character_id}}[{{character_name}}](https://journal.roll20.net/character/{{character_id}}){{/character_id}}
|
|
{{^character_id}}{{character_name}}{{/character_id}}
|
|
{{/character_name}}
|
|
</div>
|
|
|
|
<br>
|
|
|
|
<div class="template-subtitle">
|
|
{{roll-name}}
|
|
</div>
|
|
|
|
<div class="template-roll-results-title" data-i18n="action-result">Wynik akcji</div>
|
|
<div class="template-roll-results">
|
|
<div class="template-d6">{{baseRoll}}</div>
|
|
<div>vs</div>
|
|
<div class="template-d10">
|
|
{{computed::firstD10}}
|
|
{{#rollBetween() computed::firstD10 baseRoll 12}}
|
|
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Omerta/Images/circle-xmark-solid.svg" alt="">
|
|
{{/rollBetween() computed::firstD10 baseRoll 12}}
|
|
|
|
{{#rollGreater() baseRoll computed::firstD10}}
|
|
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Omerta/Images/circle-check-solid.svg" alt="">
|
|
{{/rollGreater() baseRoll computed::firstD10}}
|
|
</div>
|
|
<div class="template-d10">
|
|
{{computed::secondD10}}
|
|
{{#rollBetween() computed::secondD10 baseRoll 12}}
|
|
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Omerta/Images/circle-xmark-solid.svg" alt="">
|
|
{{/rollBetween() computed::secondD10 baseRoll 12}}
|
|
|
|
{{#rollGreater() baseRoll computed::secondD10}}
|
|
<img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Omerta/Images/circle-check-solid.svg" alt="">
|
|
{{/rollGreater() baseRoll computed::secondD10}}
|
|
</div>
|
|
</div>
|
|
|
|
{{#rollBetween() computed::success 2 2}}
|
|
<div class="template-roll-results-title green" data-i18n="success">Sukces</div>
|
|
{{/rollBetween() computed::success 2 2}}
|
|
|
|
{{#rollBetween() computed::success 1 1}}
|
|
<div class="template-roll-results-title blue" data-i18n="partial-success">Częściowy sukces</div>
|
|
{{/rollBetween() computed::success 1 1}}
|
|
|
|
{{#rollBetween() computed::success 0 0}}
|
|
<div class="template-roll-results-title red">
|
|
{{#rollGreater() stress_level baseRoll}}
|
|
<span data-i18n="nervous">Nerwowa</span>
|
|
{{/rollGreater() stress_level baseRoll}}
|
|
<span data-i18n="lose">Porażka</span>
|
|
</div>
|
|
{{/rollBetween() computed::success 0 0}}
|
|
|
|
{{#rollBetween() computed::swindle 1 1}}
|
|
<div class="template-roll-results-title swindle" data-i18n="swindle">Afera!</div>
|
|
{{/rollBetween() computed::swindle 1 1}}
|
|
|
|
</div>
|
|
</rolltemplate>
|
|
|
|
|
|
<script type="text/worker">
|
|
on("sheet:opened", function(eventInfo){
|
|
setAttrs({
|
|
summodifier: getTranslationByKey("summodifier"),
|
|
d10modifier: getTranslationByKey("d10modifier")
|
|
});
|
|
});
|
|
|
|
on('clicked:roll', async (event) => {
|
|
let rollBase = event.htmlAttributes.value + "{{character_name=@{character_name}}} {{character_id=@{character_id}}} {{firstD10=[[1d10]] }} {{secondD10=[[1d10]] }} {{modifierd10=[[?{@{d10modifier}|0}]]}} {{success=[[1d6]]}} {{swindle=[[1d6]]}} {{stress_level=[[@{stress_level}]]}}";
|
|
let rollResult = await startRoll(rollBase);
|
|
let computedValues = await calcComputedValues(rollResult);
|
|
|
|
finishRoll(
|
|
rollResult.rollId,
|
|
computedValues
|
|
);
|
|
});
|
|
|
|
const calcComputedValues = async (rollResult) => {
|
|
var results = rollResult.results;
|
|
var firstD10 = results.firstD10.result;
|
|
var secondD10 = results.secondD10.result;
|
|
var baseRoll = results.baseRoll.result;
|
|
var modifierd10 = results.modifierd10.result;
|
|
|
|
firstD10 += modifierd10;
|
|
secondD10 += modifierd10;
|
|
|
|
var success = 0;
|
|
if (baseRoll > firstD10) {
|
|
success += 1;
|
|
}
|
|
if (baseRoll > secondD10) {
|
|
success += 1;
|
|
}
|
|
|
|
var swindle = 0;
|
|
if (firstD10 == secondD10) {
|
|
swindle = 1;
|
|
}
|
|
|
|
var obj = {
|
|
success: success,
|
|
swindle: swindle,
|
|
firstD10: firstD10,
|
|
secondD10: secondD10
|
|
}
|
|
|
|
return obj;
|
|
};
|
|
</script>
|
|
|
|
|
|
|
|
|