Files
roll20-character-sheets-tester/IAS-Freude-schoener-Goetterfunken/fsg.html
T
Gorthian 14b66c43f5 Icarus Adventure System - Freude schöner Götterfunken
# 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
2022-02-07 12:30:55 +01:00

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" />&nbsp;
<button type="action" class="sheet-dice2" name="act_use-as-skill-strength" />&nbsp;
</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" />&nbsp;
<button type="action" class="sheet-dice2" name="act_use-as-skill-intuition" />&nbsp;
</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" />&nbsp;
<button type="action" class="sheet-dice2" name="act_use-as-skill-dexterity" />&nbsp;
</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" />&nbsp;
<button type="action" class="sheet-dice2" name="act_use-as-skill-intellect" />&nbsp;
</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" />&nbsp;
<button type="action" class="sheet-dice2" name="act_use-as-skill-speed" />&nbsp;
</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" />&nbsp;
<button type="action" class="sheet-dice2" name="act_use-as-skill-empathy" />&nbsp;
</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" />&nbsp;
<button type="action" class="sheet-dice2" name="act_use-as-skill-perception" />&nbsp;
</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" />&nbsp;
<button type="action" class="sheet-dice2" name="act_use-as-skill-ego" />&nbsp;
</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" />&nbsp;
</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>&nbsp;Hoher Kontrast&nbsp;</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>