# Allgemein Dieser Bogen für das Setting **Freude, schöner Götterfunke** unter dem Regelwerk **Icarus Adventure System** entstand als Communityprojekt in direkter Zusammenarbeit mit Donnerhaus. Das Projekt wurde inspiriert von Hitdice, die auch den Entwicklungsprozess in verschiedenen YouTube-Videos begleitet haben. - Donnerhaus: https://www.donnerhaus.eu/ - Icarus Adventure System: https://www.donnerhaus.eu/spiele/icarus/ - Freude schöner Götterfunke: https://www.donnerhaus.eu/spiele/freude/ - Hitdice: https://www.youtube.com/c/hitdice # Hilfe zum Sheet - Autor: https://github.com/Gorthian - Wiki: https://github.com/Gorthian/FSG_CharacterSheet_Roll20/wiki - Bugs & Features: https://github.com/Gorthian/FSG_CharacterSheet_Roll20/issues - Forum: https://github.com/Gorthian/FSG_CharacterSheet_Roll20/discussions # History ## 2022-02-07 - Version 1.3 veröffentlicht ## 2022-01-16 - Feature: Ergebnisse der Haerausfoderungen direkt auswerten ("Ja", "Ja, und", usw.) ## 2021-11-28 - Feature: Hoher Kontrast einstellbar ## 2021-11-23 - Bugfix: Reroll bei 5 Würfeln ## VLOG 2021-11-20 - Drittes Video mit Hitdice ## 2021-11-14 - Bugfix: Pfeile in Eingabefeldern in Chrome und Edge verbergen
758 lines
33 KiB
HTML
758 lines
33 KiB
HTML
<!--
|
|
EDITED by Gorthian
|
|
INSPIRED by Hitdice (https://www.youtube.com/c/Hitdice)
|
|
Version 1.3
|
|
Letzte Änderung 2022-02-07
|
|
|
|
GitHub https://github.com/Gorthian/FSG_CharacterSheet_Roll20
|
|
Wiki https://github.com/Gorthian/FSG_CharacterSheet_Roll20/wiki
|
|
//-->
|
|
|
|
<!-- Sheet //-->
|
|
<input type="checkbox" class="sheet-toggle-contrast sheet-hidden" name="attr_HighContrast" /> <!-- Verstecktes Hilfsfeld zum Wechseln des Kontrasts //-->
|
|
<div class="sheet-wrapper sheet-content sheet-fsg">
|
|
<div class="sheet-container sheet-status-effects">
|
|
<div class="sheet-title sheet-status-stress">
|
|
<img class="sheet-status-image" src="https://raw.githubusercontent.com/Gorthian/FSG_CharacterSheet_Roll20/main/images/status-icon.png" />
|
|
<br/><button type="action" class="sheet-minus" name="act_stress-minus"></button><input type="number" class="sheet-number" name="attr_stress" placeholder="0" /><button type="action" class="sheet-plus" name="act_stress-plus"></button>
|
|
<br/><span data-i18n="stress-u"></span>
|
|
</div>
|
|
<div class="sheet-title sheet-status-exhaustion">
|
|
<img class="sheet-status-image" src="https://raw.githubusercontent.com/Gorthian/FSG_CharacterSheet_Roll20/main/images/status-icon.png" />
|
|
<br/><button type="action" class="sheet-minus" name="act_exhaustion-minus"></button><input type="number" class="sheet-number" name="attr_exhaustion" placeholder="0" /><button type="action" class="sheet-plus" name="act_exhaustion-plus"></button>
|
|
<br/><span data-i18n="exhaustion-u"></span>
|
|
</div>
|
|
<div class="sheet-title sheet-status-pain">
|
|
<img class="sheet-status-image" src="https://raw.githubusercontent.com/Gorthian/FSG_CharacterSheet_Roll20/main/images/status-icon.png" />
|
|
<br/><button type="action" class="sheet-minus" name="act_pain-minus"></button><input type="number" class="sheet-number" name="attr_pain" placeholder="0" /><button type="action" class="sheet-plus" name="act_pain-plus"></button>
|
|
<br/><span data-i18n="pain-u"></span>
|
|
</div>
|
|
<div class="sheet-title sheet-status-hunger">
|
|
<img class="sheet-status-image" src="https://raw.githubusercontent.com/Gorthian/FSG_CharacterSheet_Roll20/main/images/status-icon.png" />
|
|
<br/><button type="action" class="sheet-minus" name="act_hunger-minus"></button><input type="number" class="sheet-number" name="attr_hunger" placeholder="0" /><button type="action" class="sheet-plus" name="act_hunger-plus"></button>
|
|
<br/><span data-i18n="hunger-u"></span>
|
|
</div>
|
|
<div class="sheet-title sheet-status-misc">
|
|
<img class="sheet-status-image" src="https://raw.githubusercontent.com/Gorthian/FSG_CharacterSheet_Roll20/main/images/status-icon.png" />
|
|
<br/><button type="action" class="sheet-minus" name="act_misc-minus"></button><input type="number" class="sheet-number" name="attr_misc" placeholder="0" /><button type="action" class="sheet-plus" name="act_misc-plus"></button>
|
|
<br/><span data-i18n="misc-u"></span>
|
|
</div>
|
|
<div class="sheet-title sheet-status-advantage">
|
|
<img class="sheet-status-image" src="https://raw.githubusercontent.com/Gorthian/FSG_CharacterSheet_Roll20/main/images/dis-advantage.png" />
|
|
<br/><button type="action" class="sheet-disadvantage" name="act_get-disadvantage"></button><input type="number" class="sheet-number" name="attr_advantage" placeholder="0" /><button type="action" class="sheet-advantage" name="act_get-advantage"></button>
|
|
<br/><span data-i18n="disadvantage-u"></span>/<span data-i18n="advantage-u"></span>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-container sheet-content">
|
|
<div class="sheet-general">
|
|
<div class="sheet-box sheet-name">
|
|
<span class="sheet-title">
|
|
<input type="text" class="sheet-text" name="attr_name" placeholder="Name" />
|
|
<input type="text" class="sheet-text" name="attr_class" placeholder="Klasse" />
|
|
</span>
|
|
</div>
|
|
<div class="sheet-box sheet-eat">
|
|
<span class="sheet-title" data-i18n="like-eating-u"></span>
|
|
<span>
|
|
<span data-i18n="tasty-u"></span> <input type="radio" name="attr_like-eating" value="1" />
|
|
<span data-i18n="spicey-u"></span> <input type="radio" name="attr_like-eating" value="2" />
|
|
<span data-i18n="sweet-u"></span> <input type="radio" name="attr_like-eating" value="3" />
|
|
</span>
|
|
</div>
|
|
<div class="sheet-box sheet-drink">
|
|
<span class="sheet-title" data-i18n="like-drinking-u"></span>
|
|
<span>
|
|
<span data-i18n="tea-u"></span> <input type="radio" name="attr_like-drinking" value="1" />
|
|
<span data-i18n="coffee-u"></span> <input type="radio" name="attr_like-drinking" value="2" />
|
|
<span data-i18n="beer-u"></span> <input type="radio" name="attr_like-drinking" value="3" />
|
|
</span>
|
|
</div>
|
|
<div class="sheet-box sheet-home">
|
|
<span class="sheet-title" data-i18n="home-religion-u"></span>
|
|
<input type="text" class="sheet-text" name="attr_home" placeholder="Heimat" />
|
|
<input type="text" class="sheet-text" name="attr_religion" placeholder="Religion" />
|
|
</div>
|
|
<div class="sheet-box sheet-languages">
|
|
<span class="sheet-title" data-i18n="languages-u"></span>
|
|
<fieldset class="repeating_languages">
|
|
<input type="text" class="sheet-text" name="attr_language" placeholder="Sprache" />
|
|
</fieldset>
|
|
</div>
|
|
<div class="sheet-box sheet-reserves">
|
|
<span class="sheet-title"><span data-i18n="reserves-u"></span> <span data-i18n="max-current-u"></span></span>
|
|
<span>
|
|
<img class="sheet-reserve-image" src="https://raw.githubusercontent.com/Gorthian/FSG_CharacterSheet_Roll20/main/images/health.png" />
|
|
<span class="sheet-reserve"><input class="sheet-number" type="number" name="attr_health_max" />/<input class="sheet-number" type="number" name="attr_health_current" /></span>
|
|
<img class="sheet-reserve-image" src="https://raw.githubusercontent.com/Gorthian/FSG_CharacterSheet_Roll20/main/images/stamina.png" />
|
|
<span class="sheet-reserve"><input class="sheet-number" type="number" name="attr_stamina_max" />/<input class="sheet-number" type="number" name="attr_stamina_current" /></span>
|
|
</span>
|
|
<span>
|
|
<img class="sheet-reserve-image" src="https://raw.githubusercontent.com/Gorthian/FSG_CharacterSheet_Roll20/main/images/moral.png" />
|
|
<span class="sheet-reserve"><input class="sheet-number" type="number" name="attr_moral_max" />/<input class="sheet-number" type="number" name="attr_moral_current" /></span>
|
|
<img class="sheet-reserve-image" src="https://raw.githubusercontent.com/Gorthian/FSG_CharacterSheet_Roll20/main/images/drama.png" />
|
|
<span class="sheet-reserve"><input class="sheet-number" type="number" name="attr_drama_max" />/<input class="sheet-number" type="number" name="attr_drama_current" /></span>
|
|
</span>
|
|
</div>
|
|
<div class="sheet-box sheet-attributes">
|
|
<span class="sheet-title" data-i18n="attributes-u"></span>
|
|
<span class="sheet-no-line-break">
|
|
<span class="sheet-attribute-label" data-i18n="strength-u"></span>
|
|
<span class="sheet-attribute"><input class="sheet-number" type="number" name="attr_strength" /></span>
|
|
<button type="action" class="sheet-dice1" name="act_use-as-attribute-strength" />
|
|
<button type="action" class="sheet-dice2" name="act_use-as-skill-strength" />
|
|
</span>
|
|
<span class="sheet-no-line-break">
|
|
<span class="sheet-attribute-label" data-i18n="intuition-u"></span>
|
|
<span class="sheet-attribute"><input class="sheet-number" type="number" name="attr_intuition" /></span>
|
|
<button type="action" class="sheet-dice1" name="act_use-as-attribute-intuition" />
|
|
<button type="action" class="sheet-dice2" name="act_use-as-skill-intuition" />
|
|
</span>
|
|
<span class="sheet-no-line-break">
|
|
<span class="sheet-attribute-label" data-i18n="dexterity-u"></span>
|
|
<span class="sheet-attribute"><input class="sheet-number" type="number" name="attr_dexterity" /></span>
|
|
<button type="action" class="sheet-dice1" name="act_use-as-attribute-dexterity" />
|
|
<button type="action" class="sheet-dice2" name="act_use-as-skill-dexterity" />
|
|
</span>
|
|
<span class="sheet-no-line-break">
|
|
<span class="sheet-attribute-label" data-i18n="intellect-u"></span>
|
|
<span class="sheet-attribute"><input class="sheet-number" type="number" name="attr_intellect" /></span>
|
|
<button type="action" class="sheet-dice1" name="act_use-as-attribute-intellect" />
|
|
<button type="action" class="sheet-dice2" name="act_use-as-skill-intellect" />
|
|
</span>
|
|
<span class="sheet-no-line-break">
|
|
<span class="sheet-attribute-label" data-i18n="speed-u"></span>
|
|
<span class="sheet-attribute"><input class="sheet-number" type="number" name="attr_speed" /></span>
|
|
<button type="action" class="sheet-dice1" name="act_use-as-attribute-speed" />
|
|
<button type="action" class="sheet-dice2" name="act_use-as-skill-speed" />
|
|
</span>
|
|
<span class="sheet-no-line-break">
|
|
<span class="sheet-attribute-label" data-i18n="empathy-u"></span>
|
|
<span class="sheet-attribute"><input class="sheet-number" type="number" name="attr_empathy" /></span>
|
|
<button type="action" class="sheet-dice1" name="act_use-as-attribute-empathy" />
|
|
<button type="action" class="sheet-dice2" name="act_use-as-skill-empathy" />
|
|
</span>
|
|
<span class="sheet-no-line-break">
|
|
<span class="sheet-attribute-label" data-i18n="perception-u"></span>
|
|
<span class="sheet-attribute"><input class="sheet-number" type="number" name="attr_perception" /></span>
|
|
<button type="action" class="sheet-dice1" name="act_use-as-attribute-perception" />
|
|
<button type="action" class="sheet-dice2" name="act_use-as-skill-perception" />
|
|
</span>
|
|
<span class="sheet-no-line-break">
|
|
<span class="sheet-attribute-label" data-i18n="ego-u"></span>
|
|
<span class="sheet-attribute"><input class="sheet-number" type="number" name="attr_ego" /></span>
|
|
<button type="action" class="sheet-dice1" name="act_use-as-attribute-ego" />
|
|
<button type="action" class="sheet-dice2" name="act_use-as-skill-ego" />
|
|
</span>
|
|
</div>
|
|
<div class="sheet-box sheet-skills">
|
|
<span class="sheet-title" data-i18n="skills-u"></span>
|
|
<fieldset class="repeating_skills">
|
|
<span class="sheet-no-line-break">
|
|
<span class="sheet-skill-label"><input class="sheet-text sheet-title" type="text" name="attr_skill_name" /></span>
|
|
<span class="sheet-skill"><input class="sheet-number" type="number" name="attr_skill_value" /></span>
|
|
<button type="action" class="sheet-dice2" name="act_set-active-skill" />
|
|
</span>
|
|
</fieldset>
|
|
</div>
|
|
<div class="sheet-box sheet-specials">
|
|
<fieldset class="repeating_specials">
|
|
<span class="sheet-title">
|
|
<input class="sheet-text sheet-title" type="text" name="attr_special_name" placeholder="Name der Spezialfähigkeit"/>
|
|
</span>
|
|
<textarea class="sheet-text" name="attr_special_description" value=""></textarea>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-inventory">
|
|
<div class="sheet-container sheet-weapons">
|
|
<div class="sheet-box">
|
|
<span class="sheet-title" data-i18n="weapons-u"></span>
|
|
</div>
|
|
<fieldset class="repeating_weapons">
|
|
<div class="sheet-item-weapons sheet-box">
|
|
<div class="sheet-item-bonus"><input class="sheet-number" type="number" name="attr_item_bonus" placeholder="0" /></div>
|
|
<div class="sheet-item-name sheet-title"><input class="sheet-text" type="text" name="attr_item_name" placeholder="Name" /></div>
|
|
<div class="sheet-item-sacrifice-value"><input class="sheet-number" type="number" name="attr_item_sacrifice_bonus" placeholder="0" /></div>
|
|
<div class="sheet-item-damage"><input class="sheet-number" type="number" name="attr_item_damage" placeholder="0" /></div>
|
|
<div class="sheet-item-range"><input class="sheet-number" type="number" name="attr_item_range_1" /><input class="sheet-number" type="number" name="attr_item_range_2" /><input class="sheet-number" type="number" name="attr_item_range_3" /><input class="sheet-number" type="number" name="attr_item_range_4" /></div>
|
|
<div class="sheet-item-description"><textarea class="sheet-text" name="attr_item_description" value="" placeholder="Beschreibung"></textarea></div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<div class="sheet-container sheet-armor">
|
|
<div class="sheet-box">
|
|
<span class="sheet-title" data-i18n="armor-u"></span>
|
|
</div>
|
|
<fieldset class="repeating_armor">
|
|
<div class="sheet-item-armor sheet-box">
|
|
<div class="sheet-item-bonus"><input class="sheet-number" type="number" name="attr_item_bonus" placeholder="0" /></div>
|
|
<div class="sheet-item-name sheet-title"><input class="sheet-text" type="text" name="attr_item_name" placeholder="Name" /></div>
|
|
<div class="sheet-item-sacrifice-value"><input class="sheet-number" type="number" name="attr_item_sacrifice_bonus" placeholder="0" /></div>
|
|
<div class="sheet-item-armor-value"><input class="sheet-number" type="number" name="attr_item_armor_value" placeholder="0" /></div>
|
|
<div class="sheet-item-empty"></div>
|
|
<div class="sheet-item-armor-points"><input class="sheet-number" type="number" name="attr_item_armor_points" placeholder="0" /></div>
|
|
<div class="sheet-item-description"><textarea class="sheet-text" name="attr_item_description" value="" placeholder="Beschreibung"></textarea></div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<div class="sheet-container sheet-items">
|
|
<div class="sheet-box">
|
|
<span class="sheet-title" data-i18n="items-u"></span>
|
|
</div>
|
|
<fieldset class="repeating_items">
|
|
<div class="sheet-item-items sheet-box">
|
|
<div class="sheet-item-bonus"><input class="sheet-number" type="number" name="attr_item_bonus" placeholder="0" /></div>
|
|
<div class="sheet-item-name sheet-title"><input class="sheet-text" type="text" name="attr_item_name" placeholder="Name" /></div>
|
|
<div class="sheet-item-sacrifice-value"><input class="sheet-number" type="number" name="attr_item_sacrifice_bonus" placeholder="0" /></div>
|
|
<div class="sheet-item-description"><textarea class="sheet-text" name="attr_item_description" value="" placeholder="Beschreibung"></textarea></div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-box sheet-sidebar">
|
|
<span class="sheet-title" data-i18n="challenge-u"></span>
|
|
<table>
|
|
<tr>
|
|
<td colspan="3">
|
|
<select class="sheet-fullwidth" name="attr_challenge_difficulty">
|
|
<option value="0" data-i18n="difficulty-0-u">0</option>
|
|
<option value="5" data-i18n="difficulty-5-u">5</option>
|
|
<option value="10" data-i18n="difficulty-10-u">10</option>
|
|
<option value="15" data-i18n="difficulty-15-u">15</option>
|
|
<option value="20" data-i18n="difficulty-20-u">20</option>
|
|
<option value="25" data-i18n="difficulty-25-u">25</option>
|
|
<option value="30" data-i18n="difficulty-30-u">30</option>
|
|
<option value="40" data-i18n="difficulty-40-u">40</option>
|
|
<option value="50" data-i18n="difficulty-50-u">50</option>
|
|
<option value="60" data-i18n="difficulty-60-u">60</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<span class="sheet-label" name="attr_challenge_attribute_name"></span>
|
|
</td>
|
|
<td class="sheet-align-right">
|
|
<span name="attr_challenge_attribute_value"></span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<span class="sheet-label" name="attr_challenge_skill_name"></span>
|
|
</td>
|
|
<td class="sheet-align-right">
|
|
<span name="attr_challenge_skill_value"></span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<span class="sheet-label" data-i18n="stress-u"></span>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" class="sheet-supress-effect" name="attr_supress_stress" /><span />
|
|
</td>
|
|
<td class="sheet-align-right">
|
|
<span name="attr_challenge_stress"></span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<span class="sheet-label" data-i18n="exhaustion-u"></span>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" class="sheet-supress-effect" name="attr_supress_exhaustion" /><span />
|
|
</td>
|
|
<td class="sheet-align-right">
|
|
<span name="attr_challenge_exhaustion"></span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<span class="sheet-label" data-i18n="pain-u"></span>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" class="sheet-supress-effect" name="attr_supress_pain" /><span />
|
|
</td>
|
|
<td class="sheet-align-right">
|
|
<span name="attr_challenge_pain"></span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<span class="sheet-label" data-i18n="hunger-u"></span>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" class="sheet-supress-effect" name="attr_supress_hunger" /><span />
|
|
</td>
|
|
<td class="sheet-align-right">
|
|
<span name="attr_challenge_hunger"></span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<span class="sheet-label" data-i18n="misc-u"></span>
|
|
</td>
|
|
<td>
|
|
<input type="checkbox" class="sheet-supress-effect" name="attr_supress_misc" /><span />
|
|
</td>
|
|
<td class="sheet-align-right">
|
|
<span name="attr_challenge_misc"></span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<span class="sheet-label" data-i18n="inventory-u"></span>
|
|
</td>
|
|
<td class="sheet-align-right">
|
|
<span class="sheet-attribute"><input type="number" class="sheet-number" name="attr_challenge_item_bonus" placeholder="0" /></span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<span class="sheet-no-line-break">
|
|
<span class="sheet-label" data-i18n="use-advantage-u"></span>
|
|
<select name="attr_challenge_use_advantages">
|
|
<option value="0" selected>0</option>
|
|
<option value="1">1</option>
|
|
<option value="2">2</option>
|
|
<option value="3">3</option>
|
|
</select>
|
|
</span>
|
|
</td>
|
|
<td class="sheet-align-right">
|
|
<span name="attr_challenge_advantages"></span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<span class="sheet-label" data-i18n="buy-bonus-dice-u"></span>
|
|
</td>
|
|
<td class="sheet-align-right" colspan="2">
|
|
<select name="attr_challenge_bonus_dices">
|
|
<option value="0" selected>0</option>
|
|
<option value="1">1</option>
|
|
<option value="2">2</option>
|
|
<option value="3">3</option>
|
|
<option value="4">4</option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3">
|
|
<hr/>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2">
|
|
<span class="sheet-label" data-i18n="pool-u"></span>
|
|
</td>
|
|
<td class="sheet-align-right">
|
|
<span class="sheet-label" name="attr_challenge_pool"></span>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table>
|
|
<tr>
|
|
<td class="sheet-width-50">
|
|
<span class="sheet-label" data-i18n="challenge-formula-u"></span>
|
|
</td>
|
|
<td>
|
|
<span class="sheet-label" name="attr_challenge_dices"></span>
|
|
<img src="https://raw.githubusercontent.com/Gorthian/FSG_CharacterSheet_Roll20/main/images/dice-1.png" width="20px"/> + <span class="sheet-label" name="attr_challenge_pool"></span>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<div style="height:100% !important; text-align: center; vertical-align: center;">
|
|
<button type="action" class="sheet-challenge" name="act_challenge"></button>
|
|
|
|
<button type="action" class="sheet-reroll" name="act_reroll"><span data-i18n="reroll-u"></span></button>
|
|
<select class="sheet-reroll" name="attr_challenge_reroll_dice">
|
|
<option value="1" selected>1</option>
|
|
<option value="2">2</option>
|
|
<option value="3">3</option>
|
|
<option value="4">4</option>
|
|
<option value="5">5</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-box sheet-who">
|
|
<span class="sheet-title" data-i18n="who-are-you-u"></span>
|
|
<span data-i18n="first-impression-u"></span>
|
|
<textarea class="sheet-text" name="attr_first-impression" value=""></textarea>
|
|
<span data-i18n="give-everything-u"></span>
|
|
<textarea class="sheet-text" name="attr_give-everything" value=""></textarea>
|
|
<span data-i18n="good-day-u"></span>
|
|
<textarea class="sheet-text" name="attr_good-day" value=""></textarea>
|
|
<span data-i18n="my-best-u"></span>
|
|
<textarea class="sheet-text" name="attr_my-best" value=""></textarea>
|
|
<span data-i18n="my-worst-u"></span>
|
|
<textarea class="sheet-text" name="attr_my-worst" value=""></textarea>
|
|
<span data-i18n="people-say-u"></span>
|
|
<textarea class="sheet-text" name="attr_people-say" value=""></textarea>
|
|
<span data-i18n="i-love-u"></span>
|
|
<textarea class="sheet-text" name="attr_i-love" value=""></textarea>
|
|
<span data-i18n="i-hate-u"></span>
|
|
<textarea class="sheet-text" name="attr_i-hate" value=""></textarea>
|
|
</div>
|
|
<div class="sheet-high-contrast sheet-title">
|
|
<span> Hoher Kontrast </span><input type="checkbox" class="sheet-toggle-contrast" name="attr_HighContrast" /> <!-- Hohen Kontrast de/aktivieren //-->
|
|
</div>
|
|
<div class="sheet-box sheet-footer">
|
|
Created by Gorthian | Inspired by Hitdice | Copyright by Donnerhaus
|
|
<br/>More Infos: https://github.com/Gorthian/FSG_CharacterSheet_Roll20
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Roll Templates //-->
|
|
<rolltemplate class="sheet-rolltemplate-challenge">
|
|
<div class="sheet-template-container">
|
|
<div class="sheet-template-header"><span data-i18n="challenge-u"></span></div>
|
|
<div class="sheet-template-row">
|
|
<div class="sheet-template-key"><span data-i18n="pool-u"></span>:</div>
|
|
<div class="sheet-template-value">{{pool}}</div>
|
|
</div>
|
|
<div class="sheet-template-row">
|
|
<div class="sheet-template-key"><span data-i18n="difficulty-u"></span>:</div>
|
|
<div class="sheet-template-value">{{difficulty}}</div>
|
|
</div>
|
|
{{#allprops() pool result difficulty level}}
|
|
<div class="sheet-template-row">
|
|
<div class="sheet-template-key"><span data-i18n="dice-u"></span> {{key}}:</div>
|
|
<div class="sheet-template-value">{{value}}</div>
|
|
</div>
|
|
{{/allprops() pool result difficulty level}}
|
|
<div class="sheet-template-row">
|
|
<div class="sheet-template-key"><span data-i18n="result-u"></span>:</div>
|
|
<div class="sheet-template-value">{{computed::result}}</div>
|
|
</div>
|
|
<div class="sheet-template-header">{{computed::level}}</div>
|
|
</div>
|
|
</rolltemplate>
|
|
<!-- Sheet Workers //-->
|
|
<script type="text/worker">
|
|
/********************************/
|
|
/* EVENTS */
|
|
/********************************/
|
|
|
|
/* Buttons für Statusänderungen */
|
|
const aStats = ["stress","exhaustion","pain","hunger","misc"];
|
|
aStats.forEach(function(value) {
|
|
on(`clicked:${value}-minus`, function() {reduceStatus(value)});
|
|
on(`clicked:${value}-plus`, function() {raiseStatus(value)});
|
|
on(`change:supress_${value}`, function() {recalcChallenge()});
|
|
});
|
|
on("clicked:get-disadvantage", function() {getDisadvantage()});
|
|
on("clicked:get-advantage", function() {getAdvantage()});
|
|
|
|
/* Buttons für Auswahl der aktiven Attribute und Fertigkeiten */
|
|
const aAttr = ["strength","intuition","dexterity","intellect","speed","empathy","perception","ego"];
|
|
aAttr.forEach(function(value) {
|
|
on(`clicked:use-as-attribute-${value}`, function() {setActiveAttribute(value)});
|
|
on(`clicked:use-as-skill-${value}`, function() {setAttributeAsActiveSkill(value)});
|
|
});
|
|
on("clicked:repeating_skills:set-active-skill", function() {setActiveSkill()});
|
|
|
|
on("sheet:opened change:challenge_use_advantages change:challenge_attribute_value change:challenge_skill_value change:challenge_item_bonus change:stress change:exhaustion change:pain change:hunger change:misc change:advantage change:challenge_bonus_dices", function () {
|
|
recalcChallenge();
|
|
});
|
|
|
|
on("clicked:challenge", function() {rollChallenge()});
|
|
on("clicked:reroll", function() {rerollChallenge()});
|
|
|
|
/********************************/
|
|
/* Funktionen */
|
|
/********************************/
|
|
|
|
function calcChallengeLevel(iLevel) {
|
|
let sLevel = ""
|
|
|
|
if (iLevel < -15) {sLevel = getTranslationByKey("challenge-level-0-u");} else //-16 und weniger -> Verboten
|
|
if (iLevel < -10) {sLevel = getTranslationByKey("challenge-level-1-u");} else //-11 bis -15 -> Nein, und
|
|
if (iLevel < -5) {sLevel = getTranslationByKey("challenge-level-2-u");} else //-6 bis -10 -> Nein
|
|
if (iLevel < 0) {sLevel = getTranslationByKey("challenge-level-3-u");} else //-1 bis -5 -> Nein, aber
|
|
if (iLevel < 10) {sLevel = getTranslationByKey("challenge-level-4-u");} else //0 bis 9 -> Ja, aber
|
|
if (iLevel < 20) {sLevel = getTranslationByKey("challenge-level-5-u");} else //10 bis 19 -> Ja
|
|
{sLevel = getTranslationByKey("challenge-level-6-u");} //20 und mehr -> Ja, und
|
|
|
|
return sLevel;
|
|
}
|
|
|
|
function rollChallenge()
|
|
{
|
|
console.log("rollChallenge");
|
|
getAttrs(["challenge_pool","challenge_dices","challenge_difficulty"], function (values){
|
|
let iChallengePool = values["challenge_pool"]||0;
|
|
let iChallengeDices = values["challenge_dices"]||1;
|
|
let iChallengeDifficulty = values["challenge_difficulty"]||15;
|
|
let iCounter = 1;
|
|
let iRollSum = iChallengePool;
|
|
let sRoll = "";
|
|
|
|
sRoll = "&{template:challenge} {{difficulty=@{challenge_difficulty}}} {{pool=@{challenge_pool}}} {{result=[[1d10]]}} {{level=[[1d10]]}}"
|
|
while (iCounter <= iChallengeDices) {
|
|
sRoll = sRoll + " {{" + iCounter + "=[[1d10]]}}"
|
|
iCounter = iCounter + 1;
|
|
}
|
|
|
|
startRoll(sRoll, (results) => {
|
|
let aAttributes = {};
|
|
let iLevel = 0;
|
|
let sLevel = "";
|
|
|
|
iCounter = iCounter - 1;
|
|
while (iCounter > 0)
|
|
{
|
|
iRollSum = iRollSum + results.results[iCounter].result;
|
|
aAttributes["challenge_roll_" + iCounter] = results.results[iCounter].result;
|
|
iCounter = iCounter - 1;
|
|
}
|
|
iLevel = iRollSum - iChallengeDifficulty;
|
|
sLevel = calcChallengeLevel(iLevel);
|
|
|
|
setAttrs(aAttributes);
|
|
|
|
finishRoll(
|
|
results.rollId, {
|
|
result: iRollSum,
|
|
level: sLevel
|
|
}
|
|
);
|
|
});
|
|
});
|
|
}
|
|
|
|
function rerollChallenge()
|
|
{
|
|
console.log("rerollChallenge")
|
|
getAttrs(["challenge_pool","challenge_dices","challenge_reroll_dice","challenge_roll_1","challenge_roll_2","challenge_roll_3","challenge_roll_4","challenge_roll_5","challenge_difficulty"], function (values){
|
|
let iChallengePool = values["challenge_pool"]||0;
|
|
let iChallengeRerollDice = values["challenge_reroll_dice"]||1;
|
|
let iChallengeDices = values["challenge_dices"]||1;
|
|
let iChallengeDice1 = values["challenge_roll_1"]||0;
|
|
let iChallengeDice2 = values["challenge_roll_2"]||0;
|
|
let iChallengeDice3 = values["challenge_roll_3"]||0;
|
|
let iChallengeDice4 = values["challenge_roll_4"]||0;
|
|
let iChallengeDice5 = values["challenge_roll_5"]||0;
|
|
let iChallengeDifficulty = values["challenge_difficulty"]||15;
|
|
let sRoll = "";
|
|
let iCounter = 1;
|
|
let iRollSum = iChallengePool;
|
|
|
|
sRoll = "&{template:challenge} {{difficulty=@{challenge_difficulty}}} {{pool=@{challenge_pool}}} {{result=[[1d10]]}} {{level=[[1d10]]}}"
|
|
|
|
while (iCounter <= iChallengeDices) {
|
|
if (iCounter == iChallengeRerollDice) {
|
|
sRoll = sRoll + " {{" + iCounter + "=[[1d10r<" + eval("iChallengeDice" + iChallengeRerollDice) + "]]}}"
|
|
} else {
|
|
sRoll = sRoll + " {{" + iCounter + "=" + eval("iChallengeDice" + iCounter) + "}}"
|
|
}
|
|
|
|
iCounter = iCounter + 1;
|
|
}
|
|
console.log(sRoll);
|
|
startRoll(sRoll, (results) => {
|
|
let aAttributes = {};
|
|
let iLevel = 0;
|
|
let sLevel = "";
|
|
|
|
iCounter = iCounter - 1;
|
|
while (iCounter > 0)
|
|
{
|
|
if (iCounter == iChallengeRerollDice) {
|
|
iRollSum = iRollSum + results.results[iCounter].result;
|
|
aAttributes["challenge_roll_" + iCounter] = results.results[iCounter].result;
|
|
} else {
|
|
iRollSum = iRollSum + eval("iChallengeDice" + iCounter);
|
|
aAttributes["challenge_roll_" + iCounter] = eval("iChallengeDice" + iCounter);
|
|
}
|
|
|
|
iCounter = iCounter - 1;
|
|
}
|
|
iLevel = iRollSum - iChallengeDifficulty;
|
|
sLevel = calcChallengeLevel(iLevel);
|
|
|
|
setAttrs(aAttributes);
|
|
|
|
finishRoll(
|
|
results.rollId, {
|
|
result: iRollSum,
|
|
level: sLevel
|
|
}
|
|
);
|
|
});
|
|
});
|
|
}
|
|
|
|
function setActiveSkill()
|
|
{
|
|
console.log("setActiveSkill");
|
|
getAttrs(["repeating_skills_skill_name","repeating_skills_skill_value"], function (values) {
|
|
let aAttributes = {};
|
|
let sSkillName = values["repeating_skills_skill_name"]||"";
|
|
let iSkillValue = values["repeating_skills_skill_value"]||0;
|
|
|
|
aAttributes["challenge_skill_name"] = sSkillName;
|
|
aAttributes["challenge_skill_value"] = iSkillValue;
|
|
setAttrs(aAttributes);
|
|
});
|
|
}
|
|
|
|
function setActiveAttribute(sAttribute)
|
|
{
|
|
console.log("setActiveAttribute");
|
|
getAttrs([sAttribute], function (values) {
|
|
let aAttributes = {};
|
|
let iAttributeValue = values[sAttribute]||0;
|
|
|
|
aAttributes["challenge_attribute_name"] = getTranslationByKey(sAttribute + "-u");
|
|
aAttributes["challenge_attribute_value"] = iAttributeValue;
|
|
setAttrs(aAttributes);
|
|
});
|
|
}
|
|
|
|
function setAttributeAsActiveSkill(sAttribute)
|
|
{
|
|
console.log("setAttributeAsActiveSkill");
|
|
getAttrs([sAttribute], function (values) {
|
|
let aAttributes = {};
|
|
let iAttributeValue = values[sAttribute]||0;
|
|
|
|
aAttributes["challenge_skill_name"] = getTranslationByKey(sAttribute + "-u");
|
|
aAttributes["challenge_skill_value"] = iAttributeValue;
|
|
setAttrs(aAttributes);
|
|
});
|
|
}
|
|
|
|
function recalcChallenge() {
|
|
console.log("recalcChallenge");
|
|
|
|
getAttrs(["challenge_bonus_dices","challenge_attribute_value","challenge_skill_value","challenge_use_advantages","challenge_item_bonus","stress","supress_stress","exhaustion","supress_exhaustion","pain","supress_pain","hunger","supress_hunger","misc","supress_misc","advantage"], function (values) {
|
|
let aAttributes = {};
|
|
let iChallengeBonusDices = parseInt(values["challenge_bonus_dices"])||0;
|
|
let iChallengeAttributeValue = parseInt(values["challenge_attribute_value"])||0;
|
|
let iChallengeSkillValue = parseInt(values["challenge_skill_value"])||0;
|
|
let iUseAdvantages = parseInt(values["challenge_use_advantages"])||0;
|
|
let iItemBonus = parseInt(values["challenge_item_bonus"])||0;
|
|
let iStress = parseInt(values["stress"])||0;
|
|
let sSupressStress = values["supress_stress"]||0;
|
|
let iExhaustion = parseInt(values["exhaustion"])||0;
|
|
let sSupressExhaustion = values["supress_exhaustion"]||0;
|
|
let iPain = parseInt(values["pain"])||0;
|
|
let sSupressPain = values["supress_pain"]||0;
|
|
let iHunger = parseInt(values["hunger"])||0;
|
|
let sSupressHunger = values["supress_hunger"]||0;
|
|
let iMisc = parseInt(values["misc"])||0;
|
|
let sSupressMisc = values["supress_misc"]||0;
|
|
let iAdvantages = parseInt(values["advantage"])||0;
|
|
let iChallengeAdvantages = 0;
|
|
let iChallengeStress = 0;
|
|
let iChallengeExhaustion = 0;
|
|
let iChallengePain = 0;
|
|
let iChallengeHunger = 0;
|
|
let iChallengeMisc = 0;
|
|
let iChallengePool = 0;
|
|
|
|
console.log("Supress Stress: " + sSupressStress);
|
|
|
|
if (iAdvantages < 0) {
|
|
iChallengeAdvantages = iAdvantages * 2;
|
|
} else {
|
|
iChallengeAdvantages = iUseAdvantages * 2;
|
|
}
|
|
if (sSupressStress == 0) {
|
|
iChallengeStress = iStress * -2;
|
|
}
|
|
if (sSupressExhaustion == 0) {
|
|
iChallengeExhaustion = iExhaustion * -2;
|
|
}
|
|
if (sSupressPain == 0) {
|
|
iChallengePain = iPain * -2;
|
|
}
|
|
if (sSupressHunger == 0) {
|
|
iChallengeHunger = iHunger * -2;
|
|
}
|
|
if (sSupressMisc == 0) {
|
|
iChallengeMisc = iMisc * -2;
|
|
}
|
|
|
|
iChallengePool = iChallengeAttributeValue + iChallengeSkillValue;
|
|
iChallengePool = iChallengePool + iChallengeAdvantages;
|
|
iChallengePool = iChallengePool + iChallengeStress + iChallengeExhaustion + iChallengePain + iChallengeHunger + iChallengeMisc;
|
|
iChallengePool = iChallengePool + iItemBonus;
|
|
iChallengePool = iChallengePool - (iChallengeBonusDices * 5);
|
|
|
|
while (iChallengePool < 0 && iChallengeBonusDices > 0) {
|
|
iChallengeBonusDices = iChallengeBonusDices - 1;
|
|
iChallengePool = iChallengePool + 5;
|
|
}
|
|
|
|
aAttributes["challenge_bonus_dices"] = iChallengeBonusDices;
|
|
aAttributes["challenge_dices"] = iChallengeBonusDices+1;
|
|
aAttributes["challenge_advantages"] = iChallengeAdvantages;
|
|
aAttributes["challenge_stress"] = iChallengeStress;
|
|
aAttributes["challenge_exhaustion"] = iChallengeExhaustion;
|
|
aAttributes["challenge_pain"] = iChallengePain;
|
|
aAttributes["challenge_hunger"] = iChallengeHunger;
|
|
aAttributes["challenge_misc"] = iChallengeMisc;
|
|
aAttributes["challenge_pool"] = iChallengePool;
|
|
setAttrs(aAttributes);
|
|
});
|
|
}
|
|
|
|
function getDisadvantage() {
|
|
console.log("getDisadvantage");
|
|
|
|
getAttrs(["advantage"], function (values) {
|
|
let aAttributes = {};
|
|
let iAdvantage = values["advantage"]||0;
|
|
iAdvantage=iAdvantage-1;
|
|
if (iAdvantage<-3) {iAdvantage=-3;}
|
|
aAttributes["advantage"] = iAdvantage;
|
|
console.log("resetAdvantage => "+iAdvantage);
|
|
setAttrs(aAttributes);
|
|
});
|
|
}
|
|
|
|
function getAdvantage() {
|
|
console.log("getAdvantage");
|
|
|
|
getAttrs(["advantage"], function (values) {
|
|
let aAttributes = {};
|
|
let iAdvantage = values["advantage"]||0;
|
|
iAdvantage=iAdvantage+1;
|
|
if (iAdvantage>3) {iAdvantage=3;}
|
|
aAttributes["advantage"] = iAdvantage;
|
|
console.log("resetAdvantage => "+iAdvantage);
|
|
setAttrs(aAttributes);
|
|
});
|
|
}
|
|
|
|
function reduceStatus(sStatus) {
|
|
console.log("reduceStatus: "+sStatus);
|
|
|
|
getAttrs([sStatus], function (values) {
|
|
let aAttributes = {};
|
|
let iStatus = values[sStatus]||0;
|
|
iStatus=iStatus-1;
|
|
if (iStatus<0) {iStatus=0;}
|
|
aAttributes[sStatus] = iStatus;
|
|
console.log("resetStatus => "+iStatus);
|
|
setAttrs(aAttributes);
|
|
});
|
|
}
|
|
|
|
function raiseStatus(sStatus) {
|
|
console.log("raiseStatus: "+sStatus);
|
|
|
|
getAttrs([sStatus], function (values) {
|
|
let aAttributes = {};
|
|
let iStatus = values[sStatus]||0;
|
|
iStatus=iStatus+1;
|
|
if (iStatus>3) {iStatus=3;}
|
|
aAttributes[sStatus] = iStatus;
|
|
console.log("resetStatus => "+iStatus);
|
|
setAttrs(aAttributes);
|
|
});
|
|
}
|
|
</script> |