mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-09-01 04:32:28 +00:00
1789 lines
96 KiB
HTML
1789 lines
96 KiB
HTML
<div class="sheet-useBackground">
|
||
<input type="checkbox" class="sheet-useBackground" style="display:none;" name="attr_background" value="1" checked />
|
||
<input type="checkbox" class="sheet-useBackground" style="display:none;" name="attr_background" value="2" />
|
||
<div class="sheet-background">
|
||
<div class="sheet-wrapper">
|
||
<div class="sheet-center" style="padding-top:10px;"><img src="https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/ADnD_1E/images/logo.png" /></div>
|
||
|
||
<div class="sheet-personal_attributes" style="margin:-40px 0 10px 0;">
|
||
<div class="sheet-header">PERSONAL ATTRIBUTES</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{personal_attributes-info-show}" name="attr_personal_attributes-info-show" value="1" style="opacity: 0;width: 230px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -200px; cursor: pointer; z-index: 1" checked="checked" /><span></span>
|
||
<table class="sheet-sect">
|
||
<tr>
|
||
<td>
|
||
<table>
|
||
<tr>
|
||
<td class="sheet-right">Name:</td>
|
||
<td colspan="3"><input type="text" class="sheet-input-large" name="attr_character_name" title="@{character_name}" placeholder="Character Name" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">Alignment:</td>
|
||
<td colspan="3"><input type="text" class="sheet-input-large" name="attr_Alignment" title="@{Alignment}" placeholder="Description" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">Class 1:</td>
|
||
<td><input type="text" class="sheet-input-large" name="attr_Class" title="@{Class}" placeholder="Class" /></td>
|
||
<td class="sheet-right">Lvl:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Level" title="@{Level}" value="0" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">Class 2:</td>
|
||
<td><input type="text" class="sheet-input-large" name="attr_SecondClass" title="@{SecondClass}" placeholder="2nd class" /></td>
|
||
<td class="sheet-right">Lvl:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Level_2" title="@{Level_2}" value="0" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">Class 3:</td>
|
||
<td><input type="text" class="sheet-input-large" name="attr_ThirdClass" title="@{ThirdClass}" placeholder="3rd class" /></td>
|
||
<td class="sheet-right">Lvl:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Level_3" title="@{Level_3}" value="0" /></td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
<td>
|
||
<table style="margin-top:20px;">
|
||
<tr>
|
||
<td class="sheet-right sheet-text-large" style="padding:10px 5px 10px 40px;">HP:</td>
|
||
<td><input type="text" class="sheet-box" name="attr_HitPoints" title="@{HitPoints}" value="0" /></td>
|
||
<td></td>
|
||
<td colspan="3" style="min-width: 14em; text-align: center;">
|
||
<span class="sheet-right sheet-text-large" style="padding: 10px 5px 10px 12px;">AC:</span>
|
||
<input type="text" class="sheet-box" name="attr_ArmorClass" title="@{ArmorClass}" value="0" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">HP Max:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_HitPoints_max" title="@{HitPoints|max}" value="0" /></td>
|
||
<td class="sheet-right">Armor:</td>
|
||
<td colspan="3" ><input type="text" class="sheet-input-large" name="attr_ArmorType" title="@{ArmorType}" style="width:100%;" placeholder="Description" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">Hit Dice:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_HitDice" title="@{HitDice}" value="1" /></td>
|
||
<td class="sheet-right">Shield:</td>
|
||
<td colspan="3"><input type="text" class="sheet-input-small" name="attr_ArmorShield" title="@{ArmorShield}" style="width:100%;"placeholder="Description" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td></td>
|
||
<td class="sheet-right">Wt:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_armor_weight" title="@{armor_weight}" value="0" /></td>
|
||
<td class="sheet-right">Cost:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_armor_cost" title="@{armor_cost}" value="0" /></td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
<td>
|
||
<table>
|
||
<tr>
|
||
<td class="sheet-right">Race:</td>
|
||
<td><input type="text" class="sheet-input-large" name="attr_Race" title="@{Race}" placeholder="Description" /></td>
|
||
<td class="sheet-right">XP:</td>
|
||
<td><input type="text" class="sheet-input-medium" name="attr_XP"title="@{XP}" value="0" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">Deity:</td>
|
||
<td><input type="text" class="sheet-input-large" name="attr_Deity"title="@{Deity}" placeholder="Description" /></td>
|
||
<td></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">Gender:</td>
|
||
<td><input type="text" class="sheet-input-medium" name="attr_Gender" title="@{Gender}" placeholder="N/A" /></td>
|
||
<td class="sheet-right">Age:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Age" title="@{Age}" value="0" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">Ht:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Height" title="@{Height}" value="0" /></td>
|
||
<td class="sheet-right">Wt:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Weight" title="@{Weight}" value="0" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">Eyes:</td>
|
||
<td><input type="text" class="sheet-input-medium" name="attr_Eyes" title="@{Eyes}" placeholder="Color" /></td>
|
||
<td class="sheet-right">Hair:</td>
|
||
<td><input type="text" class="sheet-input-medium" name="attr_Hair" title="@{Hair}" placeholder="Color" /></td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="2" style="white-space: nowrap;">Languages:
|
||
<input type="text" name="attr_languages" placeholder="languages known" style="width: 87%;">
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="sheet-abilities">
|
||
<div class="sheet-header">ABILITIES</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{abilities-info-show}" name="attr_abilities-info-show" value="1" style="opacity: 0;width: 115px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -85px; cursor: pointer; z-index: 1" checked="checked" /><span></span>
|
||
<table class="sheet-sect">
|
||
<tr>
|
||
<td class="sheet-center"><span class="sheet-text-large">STR</span></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Strength" title="@{Strength}" value="10" />
|
||
(<input type="text" name="attr_ExceptionalStrength" title="@{ExceptionalStrength}" value="0" min="0" max="100" style="width:2.5em;">)</td>
|
||
<td class="sheet-right">To Hit:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_MeleeBonus" title="@{MeleeBonus}" value="0" /></td>
|
||
<td class="sheet-right">DMG Bonus:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_DmgBonus" title="@{DmgBonus}" value="0" /></td>
|
||
<td class="sheet-right">Encumbrance:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_EncumbranceBonus" title="@{EncumbranceBonus}" value="0" /></td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="attr_MinorStrengthFeat-roll" title="%{selected|MinorStrengthFeat-roll}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Minor Strength Feat}} {{1d6 Roll=[[1d6cs<@{MinorStrengthFeat}cf>@{MinorStrengthFeat}]] }}" > Open Doors</button></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_MinorStrengthFeat" title="@{MinorStrengthFeat}" value="0" /></td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="attr_MajorStrengthFeat-roll" title="%{selected|MajorStrengthFeat-roll}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Major Strength Feat}} {{ Major STR Feat=[[1d100cs<@{MajorStrengthFeat}cf>@{MajorStrengthFeat} ]] %}}" > Bend Bars</button></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_MajorStrengthFeat" title="@{MajorStrengthFeat}" value="0" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-center"><span class="sheet-text-large">INT</span></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Intelligence" title="@{Intelligence}" value="10" />
|
||
(<input type="text" name="attr_ExceptionalIntelligence" title="@{ExceptionalIntelligence}" value="0" min="0" max="100" style="width:2.5em;">)</td>
|
||
<td class="sheet-right">Add. Lang:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_BonusLanguages" title="@{BonusLanguages}" value="0" /></td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="attr_KnowSpell-roll" title="%{selected|KnowSpell-roll}"value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Chance to Know Spell}} {{Roll=[[1d100cs>@{KnowSpell}cf<@{KnowSpell}]] %}}" > Know Spell</button></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_KnowSpell" title="@{KnowSpell}" value="0" /></td>
|
||
<td class="sheet-right">Min Spells:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_minSpells" title="@{minSpells}" value="0" /></td>
|
||
<td class="sheet-right">Max Spells:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_maxSpells" title="@{maxSpells}" value="0" /></td>
|
||
<td></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-center"><span class="sheet-text-large">WIS</span></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Wisdom" title="@{Wisdom}" value="10" />
|
||
(<input type="text" name="attr_ExceptionalWisdom" title="@{ExceptionalWisdom}" value="0" min="0" max="100" style="width:2.5em;">)</td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="attr_MentalSave-roll" title="%{selected|MentalSave-roll}"value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Mental Save}} {{Roll=[[1d20cs>@{MentalSaveBonus}cf<@{MentalSaveBonus}]]}}" > Mental Save</button></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_MentalSaveBonus" title="@{MentalSaveBonus}" value="0" /></td>
|
||
<td class="sheet-right">Spell Bonus:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_SpellBonus" title="@{SpellBonus}" value="0" /></td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="attr_SpellFailure-roll" title="%{selected|SpellFailure-roll}"value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Chance of Spell Failure}} {{Roll=[[1d100cs>@{SpellFailure}cf<@{SpellFailure}]] %}}" > Spell Fail</button></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_SpellFailure" title="@{SpellFailure}" value="0" /></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-center"><span class="sheet-text-large">DEX</span></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Dexterity" title="@{Dexterity}" value="10" />
|
||
(<input type="text" name="attr_ExceptionalDexterity" title="@{ExceptionalDexterity}" value="0" min="0" max="100" style="width:2.5em;">)</td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="attr_surprise-roll" title="%{selected|surprise-roll}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Surprise}} {{Roll=[[ 1d6 + @{SurpriseBonus}[BON] + ?{Modifier?|0}[MOD] ]]}}" > Surprise</button></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_SurpriseBonus" title="@{SurpriseBonus}" value="0" /></td>
|
||
<td class="sheet-right">Missile Hit:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_RangedBonus" title="@{RangedBonus}" value="0" /></td>
|
||
<td class="sheet-right">AC Bonus:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_ArmorBonus" title="@{ArmorBonus}" value="0" /></td>
|
||
<td class="sheet-right"><button class="sheet-button" style="margin-right:-50px;" type="roll" name="attr_init-roll" title="%{selected|init-roll}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Initiative!}} {{Roll=[[ 1d6 + @{SurpriseBonus}[BON] + ?{Modifier?|0}[MOD] ]]}}" > INITIATIVE</button></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-center"><span class="sheet-text-large">CON</span></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Constitution" title="@{Constitution}" value="10" />
|
||
(<input type="text" name="attr_ExceptionalConstitution" title="@{ExceptionalConstitution}" value="0" min="0" max="100" style="width:2.5em;">)</td>
|
||
<td class="sheet-right">HP Bonus:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_HitPointBonus" title="@{HitPointBonus}" value="0" /></td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="attr_SystemShock-roll" title="%{selected|SystemShock-roll}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=System Shock Survival}} {{ Roll=[[1d100cs<@{SystemShock}cf>@{SystemShock} ]] %}}" > Sys Shock</button></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_SystemShock" title="@{SystemShock}" value="0" /></td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="attr_ResurrectionSurvival-roll" title="%{selected|ResurrectionSurvival-roll}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Resurrection Survival}} {{Roll=[[ 1d100cs<@{ResurrectionSurvival}cf>@{ResurrectionSurvival} ]] %}}" > Res Survive</button></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_ResurrectionSurvival" title="@{ResurrectionSurvival}" value="0" /></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-center"><span class="sheet-text-large">CHA</span></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Charisma" title="@{Charisma}" value="10" />
|
||
(<input type="text" name="attr_ExceptionalCharisma" title="@{ExceptionalCharisma}" value="0" min="0" max="100" style="width:2.5em;">)</td>
|
||
<td class="sheet-right">Max Hench:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_MaximumHenchmen" title="@{MaximumHenchmen}" value="0" /></td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="attr_Loyalty-roll" title="%{selected|Loyalty-roll}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Loyalty}} {{Roll=[[ 1d100 + @{LoyaltyBonus}[BON] ]] %}}" > Loyalty</button></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_LoyaltyBonus" title="@{LoyaltyBonus}" value="0" /></td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="attr_reaction-roll" title="%{selected|reaction-roll}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Reaction}} {{Roll=[[ 1d100 + @{ReactionBonus}[BON] ]] %}}" > React</button></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_ReactionBonus" title="@{ReactionBonus}" value="0" /></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-center"><span class="sheet-text-large">COM</span></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Comeliness" title="@{Comeliness}" value="10" />
|
||
(<input type="text" name="attr_ExceptionalComeliness" title="@{ExceptionalComeliness}" value="0" min="0" max="100" style="width:2.5em;">)</td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
</tr>
|
||
</table>
|
||
<table class="sheet-sect sheet-border" style="margin-top:5px;">
|
||
<tr>
|
||
<td class="sheet-text-large sheet-right">Movement:</td>
|
||
<td></td>
|
||
<td></td>
|
||
<td class="sheet-right">Run <span class="sheet-text-small">(x10)</span>:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Movement_Run" title="@{Movement_Run}" value="(@{movement}*10)" disabled /></td>
|
||
<td class="sheet-right">Normal <span class="sheet-text-small">(x5)</span>:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Movement_Normal" title="@{Movement_Normal}" value="(@{movement}*5)" disabled /></td>
|
||
<td class="sheet-right">Crawl <span class="sheet-text-small">(1/2)</span>:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Movement_Crawl" title="@{Movement_Crawl}" value="(@{movement}*0.5)" disabled /></td>
|
||
</tr>
|
||
<tr>
|
||
<td></td>
|
||
<td class="sheet-right">Base:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Movement" title="@{Movement}" min="0" value="12" />
|
||
<input type="checkbox" name="attr_current_encumbrance" value="0" checked="checked" readonly="readonly" /></td>
|
||
<td class="sheet-right">Heavy <span class="sheet-text-small">(-3)</span>:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Movement_Heavy" title="@{Movement_Heavy}" value="(@{movement}-3)" disabled />
|
||
<input type="checkbox" name="attr_current_encumbrance" value="1" readonly="readonly" /></td>
|
||
<td class="sheet-right">Very Heavy <span class="sheet-text-small">(-6)</span>:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Movement_Load" title="@{Movement_Very_Heavy}" value="(@{movement}-6)" disabled />
|
||
<input type="checkbox" name="attr_current_encumbrance" value="2" readonly="readonly" /></td>
|
||
<td class="sheet-right">Max <span class="sheet-text-small">(-9)</span>:</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_Movement_Max" title="@{Movement_Max}" value="(@{movement}-9)" disabled />
|
||
<input type="checkbox" name="attr_current_encumbrance" value="3" readonly="readonly" /></td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
</div>
|
||
<div class="sheet-saves">
|
||
<div class="sheet-header">SAVES</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{saves-info-show}" name="attr_saves-info-show" value="1" style="opacity: 0;width: 90px;height: 20px; position: relative; top: 0; left: 0;margin: 0 -20px 0 -60px; cursor: pointer; z-index: 1" checked="checked" /><span></span>
|
||
<table class="sheet-sect sheet-center">
|
||
<tr>
|
||
<td colspan="2">Paralysis, Poison, and Death<br><button class="sheet-button" type="roll" value="/me must make a saving throw!
&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Saving Throw}} {{Paralysis, Poison, Death=[[?{Mod?|0}+1d20cs>@{SaveParalysisPoisonDeath}cf<@{SaveParalysisPoisonDeath}]]}} {{Mod Applied=?{Mod?|0}}}" name="roll_SaveParalysisPoisonDeath" title="%{selected|SaveParalysisPoisonDeath}"> Roll</button><input type="text" class="sheet-input-small" name="attr_SaveParalysisPoisonDeath" title="@{SaveParalysisPoisonDeath}" value="0" /></td>
|
||
<td colspan="2">Petrification, Polymorph<br><button class="sheet-button" type="roll" value="/me must make a saving throw!
&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Saving Throw}} {{Petrification, Polymorph=[[?{Mod?|0}+1d20cs>@{SavePetrificationPolymorph}cf<@{SavePetrificationPolymorph}]]}} {{Mod Applied=?{Mod?|0}}}" name="roll_SavePetrificationPolymorph" title="%{selected|SavePetrificationPolymorph}"> Roll</button><input type="text" class="sheet-input-small" name="attr_SavePetrificationPolymorph" title="@{SavePetrificationPolymorph}" value="0" /></td>
|
||
<td colspan="2">Rods, Staves, and Wands<br><button class="sheet-button" type="roll" value="/me must make a saving throw!
&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Saving Throw}} {{Rods, Staves, Wands=[[?{Mod?|0}+1d20cs>@{SaveRodsStavesWands}cf<@{SaveRodsStavesWands}]]}} {{Mod Applied=?{Mod?|0}}}" name="roll_SaveRodsStavesWands" title="%{selected|SaveRodsStavesWands}"> Roll</button><input type="text" class="sheet-input-small" name="attr_SaveRodsStavesWands" title="@{SaveRodsStavesWands}" value="0" /></td>
|
||
<td colspan="2">Breath Weapon<br><button class="sheet-button" type="roll" value="/me must make a saving throw!
&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Saving Throw}} {{Breath Weapons=[[?{Mod?|0}+1d20cs>@{SaveBreathWeapons}cf<@{SaveBreathWeapons}]]}} {{Mod Applied=?{Mod?|0}}}" name="roll_SaveBreathWeapons" title="%{selected|SaveBreathWeapons}"> Roll</button><input type="text" class="sheet-input-small" name="attr_SaveBreathWeapons" title="@{SaveBreathWeapons}" value="0" /></td>
|
||
<td colspan="2">Spells<br><button class="sheet-button" type="roll" value="/me must make a saving throw!
&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Saving Throw}} {{Spells=[[?{Mod?|0}+1d20cs>@{SaveSpells}cf<@{SaveSpells}]]}} {{Mod Applied=?{Mod?|0}}}" name="roll_SaveSpells" title="%{selected|SaveSpells}"> Roll</button><input type="text" class="sheet-input-small" name="attr_SaveSpells" title="@{SaveSpells}" value="0" /></td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
</div>
|
||
<div class="sheet-weapons">
|
||
<div class="sheet-header">WEAPONS</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{weapons-info-show}" name="attr_weapons-info-show" value="1" style="opacity: 0;width: 115px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -85px; cursor: pointer; z-index: 1" checked="checked" /><span></span>
|
||
<div class="sheet-sect">
|
||
<fieldset class="repeating_weapon">
|
||
<div class="sheet-sect sheet-border">
|
||
<table class="sheet-sect sheet-center" style="width:99%;">
|
||
<tr>
|
||
<td><button class="sheet-button" type="roll" name="attr_attack-roll" title="%{selected|repeating_weapon_$X_attack-roll}" value="@{macro-text}" > Roll </button></td>
|
||
<td style="width:22%;" colspan="2"><input type="text" name="attr_WeaponName" title="@{repeating_weapon_$X_WeaponName}" placeholder="Enter Weapon" style="width:100%;" /><br>Weapon</td>
|
||
<td style="width:11%;"><input type="text" class="sheet-input-small" name="attr_ToHitBonus" title="@{repeating_weapon_$X_ToHitBonus}" value="0" /><br>To-Hit Bonus</td>
|
||
<td colspan="2" style="width:11%;"><input type="text" class="sheet-input-small" name="attr_MagicBonus" title="@{repeating_weapon_$X_MagicBonus}" value="0" /><br>Magic Bonus</td>
|
||
<td colspan="2" style="width:11%;"><input type="text" class="sheet-input-small" name="attr_AttackDmgBonus" title="@{repeating_weapon_$X_AttackDmgBonus}" value="0" /><br>DMG Bonus</td><input type="hidden" name="attr_DmgBonus" value="0" />
|
||
<td>
|
||
<select name="attr_whisper_to-hit" style="width: 88%;height: 2em;margin: 4px 0 4px 0;">
|
||
<option value="
/w gm &{template:attacks} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=To Hit Armor Class}} {{ToHitAC-10to0=[[ @{THAC-10} ]]|[[ @{THAC-9} ]]|[[ @{THAC-8} ]]|[[ @{THAC-7} ]]|[[ @{THAC-6} ]]|[[ @{THAC-5} ]]|[[ @{THAC-4} ]]|[[ @{THAC-3} ]]|[[ @{THAC-2} ]]|[[ @{THAC-1} ]]|[[ @{THAC0} ]]}} {{ToHitAC1to10=[[ @{THAC0} ]]|[[ @{THAC1} ]]|[[ @{THAC2} ]]|[[ @{THAC3} ]]|[[ @{THAC4} ]]|[[ @{THAC5} ]]|[[ @{THAC6} ]]|[[ @{THAC7} ]]|[[ @{THAC8} ]]|[[ @{THAC9} ]]|[[ @{THAC10} ]] }}" selected="">Table</option>
|
||
<option value="
/w gm &{template:attacks} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=THACO}} {{ToHitAC-10to0=@{THAC0-10}|@{THAC0-9}|@{THAC0-8}|@{THAC0-7}|@{THAC0-6}|@{THAC0-5}|@{THAC0-4}|@{THAC0-3}|@{THAC0-2}|@{THAC0-1}|**@{THAC00}**}} {{ToHitAC1to10=**@{THAC00}**|@{THAC01}|@{THAC02}|@{THAC03}|@{THAC04}|@{THAC05}|@{THAC06}|@{THAC07}|@{THAC08}|@{THAC09}|@{THAC010} }}">THACO</option>
|
||
<option value=" ">no</option>
|
||
</select><br>
|
||
<b title="Include '/w gm to-hit AC table or THACO'?">/w gm?</b>
|
||
</td>
|
||
<td><textarea name="attr_macro-text" title="@{repeating_weapon_$X_macro-text}" class="sheet-macro-text" style="width:96%; margin:5px 0 0 0;">&{template:attacks} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=@{WeaponName}}} {{attack1=[[1d20 + @{ToHitBonus}[BON] + @{MagicBonus}[MAG] + ?{To Hit Modifier?|0}[MOD]) ]]}} {{damage1vsSM=[[@{DamageSmallMedium} + @{AttackDmgBonus}[BON] + @{MagicBonus}[MAG] + ?{Damage Modifier?|0}[MOD] ]]}} {{damage1vsL=[[@{DamageLarge} + @{AttackDmgBonus}[BON] + @{MagicBonus}[MAG] + ?{Damage Modifier?|0}[MOD] ]]}} {{WeaponNotes=@{WeaponNotes}}} @{whisper_to-hit}</textarea><br>Macro-Text</td>
|
||
</tr>
|
||
<tr>
|
||
<td><input type="text" class="sheet-input-small" name="attr_DamageSmallMedium" title="@{repeating_weapon_$X_DamageSmallMedium} e.g. '1d4'" value="0" /><br>DMG vs S/M</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_DamageLarge" title="@{repeating_weapon_$X_DamageLarge} e.g. '1d4+1'" value="0" /><br>DMG vs L</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_RateOfFire" title="@{repeating_weapon_$X_RateOfFire}" value="0" /><br>Rate of Fire</td>
|
||
<td><input type="text" class="sheet-input-medium" name="attr_Range" title="@{repeating_weapon_$X_Range}" value="0" /><br>Range S/M/L</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_quantity" title="@{repeating_weapon_$X_quantity}" min="0" value="0" /><br>Qty</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_weight" title="@{repeating_weapon_$X_weight}" min="0" value="0" /><br>Wt</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_WeaponSpeed" title="@{repeating_weapon_$X_WeaponSpeed}" value="0" /><br>Speed</td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_cost" title="@{repeating_weapon_$X_cost}" min="0" value="0" /><br>Cost</td>
|
||
<td colspan="3"><textarea class="sheet-weapons" name="attr_WeaponNotes" title="@{repeating_weapon_$X_WeaponNotes}" style="width:96%;" placeholder="Description"></textarea><br>Weapon Notes</td>
|
||
</tr>
|
||
</table>
|
||
<input type="hidden" name="attr_weapon_total_weight" value="0" />
|
||
<input type="hidden" name="attr_weapon_runningtotal" value="0" />
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="sheet-to_hit_AC">
|
||
<div class="sheet-header">TO HIT AC TABLE</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{to_hit_AC-info-show} Use the To Hit tables from the DMG to input values." name="attr_to_hit_AC-info-show" value="1" style="opacity: 0;width: 200px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -170px; cursor: pointer; z-index: 1" checked="checked" /><span></span>
|
||
<table class="sheet-sect sheet-center">
|
||
<tr class="sheet-to-hit">
|
||
<td>-10</td><td>-9</td><td>-8</td><td>-7</td><td>-6</td><td>-5</td><td>-4</td><td>-3</td><td>-2</td><td>-1</td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td>
|
||
</tr>
|
||
<tr class="sheet-to-hit-input">
|
||
<td><input type="text" name="attr_THAC-10" title="@{THAC-10}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC-9" title="@{THAC-9}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC-8" title="@{THAC-8}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC-7" title="@{THAC-7}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC-6" title="@{THAC-6}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC-5" title="@{THAC-5}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC-4" title="@{THAC-4}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC-3" title="@{THAC-3}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC-2" title="@{THAC-2}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC-1" title="@{THAC-1}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC0" title="@{THAC0}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC1" title="@{THAC1}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC2" title="@{THAC2}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC3" title="@{THAC3}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC4" title="@{THAC4}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC5" title="@{THAC5}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC6" title="@{THAC6}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC7" title="@{THAC7}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC8" title="@{THAC8}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC9" title="@{THAC9}" value="10" /></td>
|
||
<td><input type="text" name="attr_THAC10" title="@{THAC10}" value="10" /></td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
</div>
|
||
<div class="sheet-thac0">
|
||
<div class="sheet-header">THAC0</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{THAC0-show} enter THAC0 to auto-calc table (values are not based off of the To Hit tables from the DMG)" name="attr_THAC0-show" value="1" style="opacity: 0;width: 200px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -170px; cursor: pointer; z-index: 1" checked="checked" /><span></span>
|
||
<table class="sheet-sect sheet-center">
|
||
<tr class="sheet-to-hit">
|
||
<td>-10</td><td>-9</td><td>-8</td><td>-7</td><td>-6</td><td>-5</td><td>-4</td><td>-3</td><td>-2</td><td>-1</td><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td>
|
||
</tr>
|
||
<tr class="sheet-to-hit-input">
|
||
<td><input type="text" name="attr_THAC0-10" title="@{THAC0-10}" value="[[@{THAC00}+10]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC0-9" title="@{THAC0-9}" value="[[@{THAC00}+9]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC0-8" title="@{THAC0-8}" value="[[@{THAC00}+8]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC0-7" title="@{THAC0-7}" value="[[@{THAC00}+7]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC0-6" title="@{THAC0-6}" value="[[@{THAC00}+6]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC0-5" title="@{THAC0-5}" value="[[@{THAC00}+5]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC0-4" title="@{THAC0-4}" value="[[@{THAC00}+4]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC0-3" title="@{THAC0-3}" value="[[@{THAC00}+3]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC0-2" title="@{THAC0-2}" value="[[@{THAC00}+2]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC0-1" title="@{THAC0-1}" value="[[@{THAC00}+1]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC00" title="@{THAC00}" value="19" style="font-weight:bold; border: 1px solid black;" /></td>
|
||
<td><input type="text" name="attr_THAC01" title="@{THAC01}" value="[[@{THAC00}-1]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC02" title="@{THAC02}" value="[[@{THAC00}-2]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC03" title="@{THAC03}" value="[[@{THAC00}-3]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC04" title="@{THAC04}" value="[[@{THAC00}-4]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC05" title="@{THAC05}" value="[[@{THAC00}-5]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC06" title="@{THAC06}" value="[[@{THAC00}-6]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC07" title="@{THAC07}" value="[[@{THAC00}-7]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC08" title="@{THAC08}" value="[[@{THAC00}-8]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC09" title="@{THAC09}" value="[[@{THAC00}-9]]" min="2" max="20" disabled /></td>
|
||
<td><input type="text" name="attr_THAC010" title="@{THAC010}" value="[[@{THAC00}-10]]" min="2" max="20" disabled /></td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
</div>
|
||
<div class="sheet-thief_skills">
|
||
<div class="sheet-header">THIEF SKILLS</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{thief_skills-info-show}" name="attr_thief_skills-info-show" value="1" style="opacity: 0;width: 135px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -105px; cursor: pointer; z-index: 1" /><span></span>
|
||
<table class="sheet-sect">
|
||
<tr>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="roll_PickPockets" title="%{selected|PickPockets}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Ability Check}} {{Pick Pockets=[[1d100cs<@{PickPockets}cf>@{PickPockets}]] %}}"> Roll</button></td>
|
||
<td style="width: 47px;"><input type="text" name="attr_PickPockets" class="sheet-input-small" title="@{PickPockets}" value="0" /></td>
|
||
<td>Pick Pockets</td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="roll_MoveQuietly" title="%{selected|MoveQuietly}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Ability Check}} {{Move Quietly=[[1d100cs<@{MoveQuietly}cf>@{MoveQuietly}]] %}}"> Roll</button></td>
|
||
<td style="width: 47px;"><input type="text" name="attr_MoveQuietly" class="sheet-input-small" title="@{MoveQuietly}" value="0" /></td>
|
||
<td>Move Silently</td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="roll_ClimbWalls" title="%{selected|ClimbWalls}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Ability Check}} {{Climb Walls=[[1d100cs<@{ClimbWalls}cf>@{ClimbWalls}]] %}}"> Roll</button></td>
|
||
<td style="width: 47px;"><input type="text" name="attr_ClimbWalls" class="sheet-input-small" title="@{ClimbWalls}" value="0" /></td>
|
||
<td>Climb Walls</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="roll_OpenLocks" title="%{selected|OpenLocks}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Ability Check}} {{Open Locks=[[1d100cs<@{OpenLocks}cf>@{OpenLocks}]] %}}"> Roll</button></td>
|
||
<td><input type="text" name="attr_OpenLocks" class="sheet-input-small" title="@{OpenLocks}" value="0" /></td>
|
||
<td>Open Locks</td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="roll_HideInShadows" title="%{selected|HideInShadows}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Ability Check}} {{Hide In Shadows=[[1d100cs<@{HideInShadows}cf>@{HideInShadows}]] %}}"> Roll</button></td>
|
||
<td><input type="text" name="attr_HideInShadows" class="sheet-input-small" title="@{HideInShadows}" value="0" /></td>
|
||
<td>Hide In Shadows</td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="roll_ReadLanguages" title="%{selected|ReadLanguages}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Ability Check}} {{Read Languages=[[1d100cs<@{ReadLanguages}cf>@{ReadLanguages}]] %}}"> Roll</button></td>
|
||
<td><input type="text" name="attr_ReadLanguages" class="sheet-input-small" title="@{ReadLanguages}" value="0" /></td>
|
||
<td>Read Languages</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="roll_FindTraps" title="%{selected|FindTraps}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Ability Check}} {{Find/Remove Traps=[[1d100cs<@{FindTraps}cf>@{FindTraps}]] %}}"> Roll</button></td>
|
||
<td><input type="text" name="attr_FindTraps" class="sheet-input-small" title="@{FindTraps}" value="0" /></td>
|
||
<td>Find/Remove Traps</td>
|
||
<td class="sheet-right"><button class="sheet-button" type="roll" name="roll_HearNoise" title="%{selected|HearNoise}" value="&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Ability Check}} {{Hear Noise=[[1d100cs<@{HearNoise}cf>@{HearNoise}]] %}}"> Roll</button></td>
|
||
<td><input type="text" name="attr_HearNoise" class="sheet-input-small" title="@{HearNoise}" value="0" /></td>
|
||
<td>Hear Noise</td>
|
||
<td></td>
|
||
<td><input type="text" name="attr_Backstab" class="sheet-input-small" title="@{Backstab}" value="2" min="2" max="5" /></td>
|
||
<td>Backstab</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<hr>
|
||
</div>
|
||
<div class="sheet-wealth">
|
||
<div class="sheet-header">WEALTH</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{wealth-info-show}" name="attr_wealth-info-show" value="1" style="opacity: 0;width: 100px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -70px; cursor: pointer; z-index: 1" /><span></span>
|
||
<div class="sheet-sect">
|
||
<table class="sheet-sect sheet-center">
|
||
<tr>
|
||
<td style="width:20%;"><b class="sheet-text-large">Carried Coins:</b></td>
|
||
<td style="width:15%;">PP: <input type="text" class="sheet-input-medium" name="attr_pp" title="@{pp}" min="0" value="0" /></td>
|
||
<td style="width:15%;">GP: <input type="text" class="sheet-input-medium" name="attr_gp" title="@{gp}" min="0" value="0" /></td>
|
||
<td style="width:15%;">EP: <input type="text" class="sheet-input-medium" name="attr_ep" title="@{ep}" min="0" value="0" /></td>
|
||
<td style="width:15%;">SP: <input type="text" class="sheet-input-medium" name="attr_sp" title="@{sp}" min="0" value="0" /></td>
|
||
<td style="width:15%;">CP: <input type="text" class="sheet-input-medium" name="attr_cp" title="@{cp}" min="0" value="0" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td style="width:20%;"><b class="sheet-text-large">Total Coins:</b></td>
|
||
<td style="width:15%;">PP: <input type="text" class="sheet-input-medium" name="attr_pp-total" title="@{pp-total}" min="0" value="0" /></td>
|
||
<td style="width:15%;">GP: <input type="text" class="sheet-input-medium" name="attr_gp-total" title="@{gp-total}" min="0" value="0" /></td>
|
||
<td style="width:15%;">EP: <input type="text" class="sheet-input-medium" name="attr_ep-total" title="@{ep-total}" min="0" value="0" /></td>
|
||
<td style="width:15%;">SP: <input type="text" class="sheet-input-medium" name="attr_sp-total" title="@{sp-total}" min="0" value="0" /></td>
|
||
<td style="width:15%;">CP: <input type="text" class="sheet-input-medium" name="attr_cp-total" title="@{cp-total}" min="0" value="0" /></td>
|
||
</tr>
|
||
</table>
|
||
<div class="sheet-table">
|
||
<b style="margin-left:20px;">Wealth Notes</b>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{wealthNotes-show}" name="attr_wealthNotes-show" value="1" style="opacity: 0;width: 115px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -90px; cursor: pointer; z-index: 1" checked="checked" /><span></span>
|
||
<div class="sheet-table-row sheet-sect">
|
||
<textarea name="attr_wealthNotes" title="@{wealthNotes}" placeholder="Wealth Notes"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="sheet-equipment">
|
||
<div class="sheet-header">EQUIPMENT</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{equipment-info-show}" name="attr_equipment-info-show" value="1" style="opacity: 0;width: 125px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -95px; cursor: pointer; z-index: 1" /><span></span>
|
||
<div class="sheet-table sheet-sect sheet-repeating-fields">
|
||
<table class="sheet-sect sheet-center">
|
||
<tr>
|
||
<td style="width:4%;"></td>
|
||
<td style="width:38%;">Item/Description</td>
|
||
<td style="width:20%;">Location</td>
|
||
<td style="width:7%;">Carried?</td>
|
||
<td style="width:7%;">Qty</td>
|
||
<td style="width:1%;">/</td>
|
||
<td style="width:7%;">Max</td>
|
||
<td style="width:7%;">Wt</td>
|
||
<td style="width:10%;">Cost</td>
|
||
</tr>
|
||
</table>
|
||
<div class="sheet-sect">
|
||
<fieldset class="repeating_equipment">
|
||
<table class="sheet-sect sheet-center">
|
||
<tr>
|
||
<td style="width:4%;"><input type="checkbox" class="sheet-counted sheet-sect-show" title="@{repeating_equipment_$X_item-show}" name="attr_item-show" value="1" style="opacity:0; position:absolute; cursor:default; z-index: 1; width:0;" checked="checked" /><span></span></td>
|
||
<td style="width:38%;"><input type="text" name="attr_item" title="@{repeating_equipment_$X_item}" placeholder="Item/Description" /></td>
|
||
<td style="width:20%;"><input type="text" name="attr_location" title="@{repeating_equipment_$X_location}" placeholder="Location" /></td>
|
||
<td style="width:7%;"><input type="checkbox" name="attr_carried" title="@{repeating_equipment_$X_carried}" value="1" /></td>
|
||
<td style="width:7%;"><input type="text" name="attr_quantity" title="@{repeating_equipment_$X_quantity}" min="0" value="0" /></td>
|
||
<td style="width:1%;">/</td>
|
||
<td style="width:7%;"><input type="text" name="attr_quantity_max" title="@{repeating_equipment_$X_quantity|max}" value="1" /></td>
|
||
<td style="width:7%;"><input type="text" name="attr_weight" title="@{repeating_equipment_$X_weight}" value="0" /></td>
|
||
<td style="width:10%;"><input type="text" name="attr_cost" title="@{repeating_equipment_$X_cost}" value="0" /></td>
|
||
</tr>
|
||
</table>
|
||
<input type="hidden" name="attr_equipment_total_weight" value="0" />
|
||
<input type="hidden" name="attr_equipment_runningtotal" value="0" />
|
||
</fieldset>
|
||
</div>
|
||
<table class="sheet-sect">
|
||
<tr>
|
||
<td rowspan="5" style="width:74%; vertical-align:top;">
|
||
<div class="sheet-table sheet-left">
|
||
<b style="margin-left:20px;">Equipment Notes</b>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{itemNotes-show}" name="attr_itemNotes-show" value="1" style="opacity: 0;width: 135px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -105px; cursor: pointer; z-index: 1" checked="checked" /><span></span>
|
||
<div class="sheet-table-row sheet-sect">
|
||
<textarea name="attr_itemNotes" title="@{itemNotes}" placeholder="Equipment Notes"></textarea>
|
||
</div>
|
||
</div>
|
||
<table class="sheet-sect sheet-center">
|
||
<tr>
|
||
<td><b class="sheet-text-large">Carrying Capacity:</b></td>
|
||
<td><input type="text" class="sheet-input-medium" name="attr_normal_load" title="@{normal_load} Enter the maximum amount for a 'Normal load'(default 350gp based on STR 8-11. Add STR bonus if applicable.)" value="350" /><br>Normal
|
||
<input type="checkbox" name="attr_current_encumbrance" value="0" checked="checked" readonly="readonly" /></td>
|
||
<td><input type="text" class="sheet-input-medium" name="attr_heavy_load" title="@{heavy_load} Enter the maximum amount for a 'Heavy load'(default 700gp based on STR 8-11. Add STR bonus if applicable.)" value="700" /><br>Heavy
|
||
<input type="checkbox" name="attr_current_encumbrance" value="1" readonly="readonly" /></td>
|
||
<td><input type="text" class="sheet-input-medium" name="attr_very_heavy_load" title="@{very_heavy_load} Enter the maximum amount for a 'Very heavy load'(default 1050gp based on STR 8-11. Add STR bonus if applicable.)" value="1050" /><br>Very Heavy
|
||
<input type="checkbox" name="attr_current_encumbrance" value="2" readonly="readonly" /></td>
|
||
<td><input type="text" class="sheet-input-medium" name="attr_max_load" title="@{max_load} Minimum amount for a max/encumbered load(defaults to 'Very heavy load' + 1)." value="(@{very_heavy_load}+1)" disabled /><b class="sheet-text-large">+</b><br>Max
|
||
<input type="checkbox" name="attr_current_encumbrance" value="3" readonly="readonly" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="5">
|
||
Strength Encumbrance Bonus:
|
||
<input class="sheet-input-small" name="attr_EncumbranceBonus" title="@{EncumbranceBonus}" value="0" readonly=""> <b>hint:</b> increases carrying capacity limits.
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
</td>
|
||
<td style="width:10%;" class="sheet-right">Equipment:</td>
|
||
<td style="width:7%;"><input type="text" style="width:100%;" name="attr_total_equipment_weight" title="@{total_equipment_weight}" value="0" readonly="readonly" /></td>
|
||
<td style="width:10%;"><input type="text" style="width:100%;" name="attr_total_equipment_cost" title="@{total_equipment_cost}" value="0" readonly="readonly" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">Armor:</td>
|
||
<td><input type="text" style="width:100%;" name="attr_total_armor_weight" title="@{total_armor_weight}" value="0" readonly="readonly" /></td>
|
||
<td><input type="text" style="width:100%;" name="attr_total_armor_cost" title="@{total_armor_cost}" value="0" readonly="readonly" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">Weapons:</td>
|
||
<td><input type="text" style="width:100%;" name="attr_total_weapon_weight" title="@{total_weapon_weight}" value="0" readonly="readonly" /></td>
|
||
<td><input type="text" style="width:100%;" name="attr_total_weapon_cost" title="@{total_weapon_cost}" value="0" readonly="readonly" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">Coins:</td>
|
||
<td><input type="text" style="width:100%;" name="attr_total_coin_weight" title="@{total_coin_weight}" value="0" readonly="readonly" /></td>
|
||
<td class="sheet-center"><b> - - - </b></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-right">TOTALS:</td>
|
||
<td><input type="text" style="width:100%;" name="attr_total_weight" title="@{total_weight}" value="0" readonly="readonly" /></td>
|
||
<td><input type="text" style="width:100%;" name="attr_total_cost" title="@{total_cost}" value="0" readonly="readonly" /></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="sheet-special_abilities">
|
||
<div class="sheet-header">SPECIAL ABILITIES</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{special_abilities-info-show}" name="attr_special_abilities-info-show" value="1" style="opacity: 0;width: 180px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -150px; cursor: pointer; z-index: 1" /><span></span>
|
||
<div class="sheet-sect">
|
||
<fieldset class="repeating_ability">
|
||
<div class="sheet-sect sheet-border">
|
||
<table class="sheet-sect sheet-center" style="width:99%;">
|
||
<tr>
|
||
<td style="width:5%;"><button class="sheet-button" type="roll" name="attr_roll" title="%{repeating_ability_$X_roll}" value="@{macro-text}"></button></td>
|
||
<td style="width:22%;"><input type="text" name="attr_name" title="@{repeating_ability_$X_name}" placeholder="Ability Name" /><br>Name</td>
|
||
<td style="width:44%;"><textarea name="attr_short_description" title="@{repeating_ability_$X_short_description}" class="sheet-weapons" style="width:100%;" placeholder="Short Description"></textarea><br>Short Description</td>
|
||
<td style="width:8%;"><input type="text" name="attr_current" title="@{repeating_ability_$X_current}" value="0" class="sheet-input-small" /><br>Cur</td>
|
||
<td style="width:1%;">/<br>/</td>
|
||
<td style="width:8%;"><input type="text" name="attr_current_max" title="@{repeating_ability_$X_current|max}" value="0" class="sheet-input-small" /><br>Max</td>
|
||
<!--attr_max kept as hidden attribute in order migrate attribute data to-->
|
||
<input type="hidden" name="attr_max" value="1">
|
||
<td style="width:10%;"><textarea name="attr_macro-text" title="@{repeating_ability_$X_macro-text}" class="sheet-macro-text" style="width:90%; height:1em;" >&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Special Ability: @{name}}} {{=@{short_description}}}</textarea><br>Macro-Text</td>
|
||
</tr>
|
||
</table>
|
||
<b style="margin-left:20px;">Ability Description</b>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{repeating_ability_$X_description-show}" name="attr_description-show" value="1" style="opacity: 0;width: 160px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -135px; cursor: pointer; z-index: 1" /><span></span>
|
||
<div class="sheet-table sheet-sect">
|
||
<div class="sheet-table-row sheet-center sheet-sect">
|
||
<textarea name="attr_description" title="@{repeating_ability_$X_description}" placeholder="Ability Description"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
<div class="sheet-table">
|
||
<b style="margin-left:20px;">Special Abilities Notes</b>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{Special_AbilitiesNotes-show}" name="attr_Special_AbilitiesNotes-show" value="1" style="opacity: 0;width: 180px;height: 20px;position: relative;top: 0;left: 0;margin: 0 -20px 0 -150px; cursor: pointer; z-index: 1" /><span></span>
|
||
<div class="sheet-table-row sheet-sect">
|
||
<textarea name="attr_Special_AbilitiesNotes" title="@{Special_AbilitiesNotes}" placeholder="Special Abilities Notes"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="sheet-nonweapon_proficiencies">
|
||
<div class="sheet-header">NON WEAPON PROFICIENCIES</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{nonweapon_proficiencies-info-show}" name="attr_nonweapon_proficiencies-info-show" value="1" style="opacity: 0;width: 275px;height: 20px;position: relative;top: 0;left: 0;margin: 0px -20px 0 -245px;cursor: pointer;z-index: 1;" /><span></span>
|
||
<div class="sheet-sect">
|
||
<fieldset class="repeating_nonweaponproficiencies">
|
||
<div class="sheet-sect sheet-border">
|
||
<table class="sheet-sect sheet-center" style="width:99%;">
|
||
<tr>
|
||
<td style="width:5%;"><button class="sheet-button" type="roll" name="attr_roll" title="%{repeating_nonweaponproficiencies_$X_roll}" value="@{macro-text}"></button></td>
|
||
<td style="width:20%; padding-right:20px;"><input type="text" style="width:100%;" name="attr_name" title="@{repeating_nonweaponproficiencies_$X_name}" placeholder="Proficiency Name" /><br>Proficiency</td>
|
||
<td class="sheet-right">Attribute:</td>
|
||
<td class="sheet-left" style="padding-left:5px;">
|
||
<select name="attr_rAttribute" style="width: 7em; vertical-align: text-bottom; margin-top: -5px;">
|
||
<option value="0" selected="">None</option>
|
||
<option value="@{Strength}">Strength</option>
|
||
<option value="@{Dexterity}">Dexterity</option>
|
||
<option value="@{Constitution}">Constitution</option>
|
||
<option value="@{Intelligence}">Intelligence</option>
|
||
<option value="@{Wisdom}">Wisdom</option>
|
||
<option value="@{Charisma}">Charisma</option>
|
||
</select>
|
||
</td>
|
||
<td><textarea name="attr_short_description" title="@{repeating_nonweaponproficiencies_$X_short_description}" class="sheet-weapons" style="width:90%;" placeholder="Short Description"></textarea><br>Short Description</td>
|
||
<td><input type="number" name="attr_rSlots" title="@{repeating_nonweaponproficiencies_$X_rSlots}" value="0" class="sheet-input-small" style="margin-bottom: 6px;"/><br>Slots</td>
|
||
<td>/<br><span style="opacity: 0;margin: 2px;">/</span></td>
|
||
<td><input type="number" name="attr_rModifier" title="@{repeating_nonweaponproficiencies_$X_rmodifier}" value="0" class="sheet-input-small" style="margin-bottom: 6px;"/><br>Modifier</td>
|
||
<td>
|
||
<textarea name="attr_macro-text" title="@{repeating_nonweaponproficiencies_$X_macro-text}" class="sheet-macro-text" style="width:90%; height:1em;">&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Non Weapon Proficiency: @{name}}} {{Proficiency Check=[[ 1d20 + [[@{rmodifier}]][MOD] + [[?{Additional modifier?|0}]][MOD] ]] vs [[ @{rAttribute}[ATTR] ]]}}{{freetext=@{short_description}}}</textarea>
|
||
<br>Macro-Text
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<b style="margin-left:20px;">Non Weapon Proficiency Description</b>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{repeating_nonweaponproficiencies_$X_description-show}" name="attr_description-show" value="1" style="opacity: 0;width: 275px;height: 20px;position: relative;top: 0;left: 0;margin: 0px -20px 0 -245px;cursor: pointer;z-index: 1;" /><span></span>
|
||
<div class="sheet-table sheet-sect">
|
||
<div class="sheet-table-row sheet-center sheet-sect">
|
||
<textarea name="attr_description" title="@{repeating_nonweaponproficiencies_$X_description}" placeholder="Ability Description" ></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="sheet-spells">
|
||
<div class="sheet-header">SPELLS</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{spells-info-show}" name="attr_spells-info-show" value="1" style="opacity: 0;width: 90px;height: 20px; position: relative; top: 0; left: 0;margin: 0 -20px 0 -60px; cursor: pointer; z-index: 1" /><span></span>
|
||
<div class="sheet-sect">
|
||
<table class="sheet-sect sheet-center">
|
||
<tr>
|
||
<td colspan="2">Cur / Max</td>
|
||
<td colspan="2">Cur / Max</td>
|
||
<td colspan="2">Cur / Max</td>
|
||
<td colspan="2">Cur / Max</td>
|
||
<td colspan="2">Cur / Max</td>
|
||
<td colspan="2">Cur / Max</td>
|
||
<td colspan="2">Cur / Max</td>
|
||
<td colspan="2">Cur / Max</td>
|
||
<td colspan="2">Cur / Max</td>
|
||
<td colspan="2">Cur / Max</td>
|
||
</tr>
|
||
<tr>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_0_current" title="@{spells_lvl_0_current}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_0_max" title="@{spells_lvl_0_max}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_1_current" title="@{spells_lvl_1_current}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_1_max" title="@{spells_lvl_1_max}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_2_current" title="@{spells_lvl_2_current}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_2_max" title="@{spells_lvl_2_max}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_3_current" title="@{spells_lvl_3_current}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_3_max" title="@{spells_lvl_3_max}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_4_current" title="@{spells_lvl_4_current}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_4_max" title="@{spells_lvl_4_max}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_5_current" title="@{spells_lvl_5_current}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_5_max" title="@{spells_lvl_5_max}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_6_current" title="@{spells_lvl_6_current}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_6_max" title="@{spells_lvl_6_max}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_7_current" title="@{spells_lvl_7_current}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_7_max" title="@{spells_lvl_7_max}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_8_current" title="@{spells_lvl_8_current}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_8_max" title="@{spells_lvl_8_max}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_9_current" title="@{spells_lvl_9_current}" value="0" style="width:3em;" /></td>
|
||
<td><input type="text" class="sheet-input-small" name="attr_spells_lvl_9_max" title="@{spells_lvl_9_max}" value="0" style="width:3em;" /></td>
|
||
</tr>
|
||
<tr class="sheet-to-hit">
|
||
<td colspan="2">Cantrips</td>
|
||
<td colspan="2">1st</td>
|
||
<td colspan="2">2nd</td>
|
||
<td colspan="2">3rd</td>
|
||
<td colspan="2">4th</td>
|
||
<td colspan="2">5th</td>
|
||
<td colspan="2">6th</td>
|
||
<td colspan="2">7th</td>
|
||
<td colspan="2">8th</td>
|
||
<td colspan="2">9th</td>
|
||
</tr>
|
||
</table>
|
||
<br>
|
||
<div class="sheet-spell-tabs">
|
||
<input type="radio" class="sheet-tab-hidden sheet-tab" name="attr_spell_tabs" value="0"><span class="sheet-tab">Cantrips</span>
|
||
<input type="radio" class="sheet-tab-hidden sheet-tab" name="attr_spell_tabs" value="1"><span class="sheet-tab">1st</span>
|
||
<input type="radio" class="sheet-tab-hidden sheet-tab" name="attr_spell_tabs" value="2"><span class="sheet-tab">2nd</span>
|
||
<input type="radio" class="sheet-tab-hidden sheet-tab" name="attr_spell_tabs" value="3"><span class="sheet-tab">3rd</span>
|
||
<input type="radio" class="sheet-tab-hidden sheet-tab" name="attr_spell_tabs" value="4"><span class="sheet-tab">4th</span>
|
||
<input type="radio" class="sheet-tab-hidden sheet-tab" name="attr_spell_tabs" value="5"><span class="sheet-tab">5th</span>
|
||
<input type="radio" class="sheet-tab-hidden sheet-tab" name="attr_spell_tabs" value="6"><span class="sheet-tab">6th</span>
|
||
<input type="radio" class="sheet-tab-hidden sheet-tab" name="attr_spell_tabs" value="7"><span class="sheet-tab">7th</span>
|
||
<input type="radio" class="sheet-tab-hidden sheet-tab" name="attr_spell_tabs" value="8"><span class="sheet-tab">8th</span>
|
||
<input type="radio" class="sheet-tab-hidden sheet-tab" name="attr_spell_tabs" value="9"><span class="sheet-tab">9th</span>
|
||
<input type="radio" class="sheet-tab-hidden sheet-tab" name="attr_spell_tabs" value="-1"><span class="sheet-tab">All</span>
|
||
</div>
|
||
<div class="sheet-sect">
|
||
<fieldset class="repeating_spells">
|
||
<input type="hidden" class="sheet-toggle-show" name="attr_spell_show" value="1">
|
||
<div class="sheet-spell-display sheet-sect sheet-border">
|
||
<div class="sheet-table sheet-center" style="width:99%;">
|
||
<div class="sheet-table-row">
|
||
<span class="sheet-input-sm"><button class="sheet-button" type="roll" name="attr_roll" title="%{selected|repeating_spells_$X_roll}" value="@{macro-text}"></button></span>
|
||
<span class="sheet-input-sm"><input type="text" name="attr_memorized" title="@{repeating_spells_$X_memorized}" style="width: 100% ; height: 1.8em" value="0"><br>#Mem</span>
|
||
<span class="sheet-input-sm1">
|
||
<select name="attr_level" class="sheet-input-select" title="@{repeating_spells_$X_level}">
|
||
<option selected>?</option>
|
||
<option>0</option>
|
||
<option>1</option>
|
||
<option>2</option>
|
||
<option>3</option>
|
||
<option>4</option>
|
||
<option>5</option>
|
||
<option>6</option>
|
||
<option>7</option>
|
||
<option>8</option>
|
||
<option>9</option>
|
||
</select>
|
||
<br>Lvl
|
||
</span>
|
||
<span class="sheet-input-long"><input type="text" name="attr_name" title="@{repeating_spells_$X_name}" style="width:100%; height:1.8em;" placeholder="Spell Name" /><br>Name</span>
|
||
<span class="sheet-input-med1"><input type="text" name="attr_school" title="@{repeating_spells_$X_school}" style="width:100%; height:1.8em;" value="N/A" /><br>School</span>
|
||
<span class="sheet-input-med1"><input type="text" name="attr_range" title="@{repeating_spells_$X_range}" style="width:100%; height:1.8em;" value="N/A" /><br>Range</span>
|
||
<span class="sheet-input-med1"><input type="text" name="attr_duration" title="@{repeating_spells_$X_duration}" style="width:100%; height:1.8em;" value="N/A" /><br>Duration</span>
|
||
<span class="sheet-input-med1"><input type="text" name="attr_aoe" title="@{repeating_spells_$X_aoe}" style="width:100%; height:1.8em;" value="N/A" /><br>Area</span>
|
||
<span class="sheet-input-med"><input type="text" name="attr_components" title="@{repeating_spells_$X_components}" style="width:100%; height:1.8em;" value="N/A" /><br>Comp</span>
|
||
<span class="sheet-input-sm"><input type="text" name="attr_ct" title="@{repeating_spells_$X_ct}" style="width:100%; height:1.8em;" value="N/A" /><br>CT</span>
|
||
<span class="sheet-input-med"><input type="text" name="attr_save" title="@{repeating_spells_$X_save}" style="width:100%; height:1.8em;" value="N/A" /><br>Save</span>
|
||
<span class="sheet-input"><textarea name="attr_macro-text" class="sheet-macro-text-short" title="@{repeating_spells_$X_macro-text}">&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Casts: @{name}}} {{Range:=@{range}}} {{Duration:=@{duration}}} {{AOE:=@{aoe}}} {{Save:=@{save}}}</textarea><br><span style="white-space: nowrap;">Macro-Text</span></span>
|
||
</div>
|
||
</div>
|
||
<b style="margin-left:20px;">Spell Description</b>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{repeating_spells_$X_description-show}" name="attr_description-show" value="1" style="opacity: 0;width: 140px;height: 20px; position: relative; top: 0; left: 0;margin: 0 -20px 0 -115px; cursor: pointer; z-index: 1" /><span></span>
|
||
<div class="sheet-table sheet-sect">
|
||
<div class="sheet-table-row sheet-center sheet-sect">
|
||
<textarea name="attr_description" title="@{repeating_spells_$X_description}" placeholder="Spell Description" ></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<div class="sheet-table-row" style="margin-top: 1em;">
|
||
<b style="margin-left:20px;">Spells Notes</b>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{spellsNotes-show}" name="attr_spellsNotes-show" value="1" style="opacity: 0;width: 140px;height: 20px; position: relative; top: 0; left: 0;margin: 0 -20px 0 -115px; cursor: pointer; z-index: 1" /><span></span>
|
||
<div class="sheet-table sheet-sect">
|
||
<div class="sheet-table-row sheet-center sheet-sect">
|
||
<textarea name="attr_spellsNotes" title="@{spellsNotes}" placeholder="Spells Notes"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<div class="sheet-notes">
|
||
<div class="sheet-header">NOTES</div>
|
||
<input type="checkbox" class="sheet-sect-show" title="@{notes-info-show}" name="attr_notes-info-show" value="1" style="opacity: 0;width: 90px;height: 20px; position: relative; top: 0; left: 0;margin: 0 -20px 0 -60px; cursor: pointer; z-index: 1" /><span></span>
|
||
<div class="sheet-sect">
|
||
<div class="sheet-table">
|
||
<div class="sheet-table-row sheet-center">
|
||
<textarea name="attr_Notes" title="@{Notes}" placeholder="Misc Notes"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
</div>
|
||
<h4>Settings</h4>
|
||
<div class="sheet-options sheet-text-small">
|
||
<span style="margin-right: 2em;">
|
||
Background:
|
||
<input type="radio" class="sheet-useBackground" name="attr_background" value="1" title="No background image." checked="">Off
|
||
<input type="radio" class="sheet-useBackground" name="attr_background" value="2" title="Enable background image.">On
|
||
</span>
|
||
<span>
|
||
Roll Template Color:
|
||
<select name="attr_color_option" title="@{color_option}" style="width: 8em;">
|
||
<option value="black" selected>black</option>
|
||
<option value="grey">grey</option>
|
||
<option value="darkgrey">darkgrey</option>
|
||
<option value="white">white</option>
|
||
<option value="red">red</option>
|
||
<option value="darkred">darkred</option>
|
||
<option value="orange">orange</option>
|
||
<option value="darkorange">darkorange</option>
|
||
<option value="yellow">yellow</option>
|
||
<option value="darkyellow">darkyellow</option>
|
||
<option value="green">green</option>
|
||
<option value="darkgreen">darkgreen</option>
|
||
<option value="blue">blue</option>
|
||
<option value="darkblue">darkblue</option>
|
||
<option value="purple">purple</option>
|
||
<option value="darkpurple">darkpurple</option>
|
||
</select>
|
||
</span>
|
||
<span style="margin-left: 2em;">Recalc: <input name="attr_recalc1" type="checkbox" title="RECALC" style="width: 1.25em;"></span>
|
||
</div>
|
||
<div class="sheet-footer sheet-text-small">
|
||
<div class="sheet-data">
|
||
<span class="sheet-data sheet-center">Questions/feedback?:
|
||
<button type="roll" class="sheet-button" style="line-height: 1em;margin-top: -5px;" value="https://app.roll20.net/forum/category/277980">
|
||
<span>https://app.roll20.net/forum/category/277980</span>
|
||
</button>
|
||
</span>
|
||
</div>
|
||
<div class="sheet-data" style="float: right; margin-top: -1.5em;">
|
||
<span class="sheet-data sheet-center">Original Author: Adam Ness | Contributions by: Vince & Community. |
|
||
<span>sheet v.<input name="attr_sheet_version" type="text" value="0" class="sheet-version" style="margin: -5px 0 0 -5px;" readonly /><i>9/6/20'</i></span>
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="sheet-roll_templates">
|
||
<!-- Attack Roll Template -->
|
||
<rolltemplate class="sheet-rolltemplate-attacks">
|
||
<table class="sheet-rolltemplate-attacks {{#color}}color-{{color}}{{/color}}">
|
||
{{#name}}<tr><th>{{name}}</th></tr>{{/name}}
|
||
{{#subtag}}<tr><td class="sheet-subheader">{{subtag}}</td></tr>{{/subtag}}
|
||
|
||
{{#attack1}}<tr><td><span class="sheet-tcat">Attack = </span>{{attack1}}</td></tr>{{/attack1}}
|
||
{{#damage1vsSM}}<tr><td><span class="sheet-tcat">Damage vs S/M = </span>{{damage1vsSM}}</td></tr>{{/damage1vsSM}}
|
||
{{#damage1vsL}}<tr><td><span class="sheet-tcat">Damage vs L = </span>{{damage1vsL}}</td></tr>{{/damage1vsL}}
|
||
|
||
{{#attack2}}<tr><td><span class="sheet-tcat">Attack 2 = </span>{{attack2}}</td></tr>{{/attack2}}
|
||
{{#damage2vsSM}}<tr><td><span class="sheet-tcat">Damage vs S/M = </span>{{damage2vsSM}}</td></tr>{{/damage2vsSM}}
|
||
{{#damage2vsL}}<tr><td><span class="sheet-tcat">Damage vs L = </span>{{damage2vsL}}</td></tr>{{/damage2vsL}}
|
||
|
||
{{#attack3}}<tr><td><span class="sheet-tcat">Attack 3 = </span>{{attack3}}</td></tr>{{/attack3}}
|
||
{{#damage3vsSM}}<tr><td><span class="sheet-tcat">Damage vs S/M = </span>{{damage3vsSM}}</td></tr>{{/damage3vsSM}}
|
||
{{#damage3vsL}}<tr><td><span class="sheet-tcat">Damage vs L = </span>{{damage3vsL}}</td></tr>{{/damage3vsL}}
|
||
|
||
{{#attack4}}<tr><td><span class="sheet-tcat">Attack 4 = </span>{{attack4}}</td></tr>{{/attack4}}
|
||
{{#damage4vsSM}}<tr><td><span class="sheet-tcat">Damage vs S/M = </span>{{damage4vsSM}}</td></tr>{{/damage4vsSM}}
|
||
{{#damage4vsL}}<tr><td><span class="sheet-tcat">Damage vs L = </span>{{damage4vsL}}</td></tr>{{/damage4vsL}}
|
||
|
||
{{#ToHitAC-10to0}}<tr><td class="sheet-ToHit">-10|-9|-8|-7|-6|-5|-4|-3|-2|-1| **0**<br>{{ToHitAC-10to0}}</td></tr>{{/ToHitAC-10to0}}
|
||
{{#ToHitAC1to10}}<tr><td class="sheet-ToHit"> **0**| 1| 2| 3| 4| 5| 6| 7| 8| 9|10<br>{{ToHitAC1to10}}</td></tr>{{/ToHitAC1to10}}
|
||
|
||
{{#allprops() name subtag color attack1 attack2 attack3 attack4 damage1vsSM damage2vsSM damage3vsSM damage4vsSM damage1vsL damage2vsL damage3vsL damage4vsL ToHitAC-10to0 ToHitAC1to10 WeaponNotes freetext}}
|
||
<tr><td><span class="sheet-tcat">{{key}} = </span>{{value}}</td></tr>
|
||
{{/allprops() name subtag color attack1 attack2 attack3 attack4 damage1vsSM damage2vsSM damage3vsSM damage4vsSM damage1vsL damage2vsL damage3vsL damage4vsL ToHitAC-10to0 ToHitAC1to10 WeaponNotes freetext}}
|
||
|
||
{{#WeaponNotes}}<tr><td class="sheet-text">**Notes:** {{WeaponNotes}}</td></tr>{{/WeaponNotes}}
|
||
{{#freetext}}<tr><td colspan="2" class="sheet-text">{{freetext}}</td></tr>{{/freetext}}
|
||
|
||
</table>
|
||
</rolltemplate>
|
||
<!-- General Roll Template -->
|
||
<rolltemplate class="sheet-rolltemplate-general">
|
||
<table class="sheet-rolltemplate-general {{#color}}color-{{color}}{{/color}}">
|
||
{{#name}}<tr><th colspan="2">{{name}}</th></tr>{{/name}}
|
||
{{#subtag}}<tr><td colspan="2" class="sheet-subheader">{{subtag}}</td></tr>{{/subtag}}
|
||
|
||
{{#allprops() name subtag freetext color}}
|
||
<tr><td style="vertical-align:middle;"><span class="sheet-tcat">{{key}}</span></td><td>{{value}}</td></tr>
|
||
{{/allprops() name subtag freetext color}}
|
||
|
||
{{#freetext}}<tr><td colspan="2" class="sheet-text">{{freetext}}</td></tr>{{/freetext}}
|
||
|
||
</table>
|
||
</rolltemplate>
|
||
</div>
|
||
|
||
<script type="text/worker">
|
||
/* ---- BEGIN: TheAaronSheet.js ---- */
|
||
// Github: https://github.com/shdwjk/TheAaronSheet/blob/master/TheAaronSheet.js
|
||
// By: The Aaron, Arcane Scriptomancer
|
||
// Contact: https://app.roll20.net/users/104025/the-aaron
|
||
|
||
var TAS = TAS || (function(){
|
||
'use strict';
|
||
|
||
var version = '0.2.5',
|
||
lastUpdate = 1504710542,
|
||
|
||
loggingSettings = {
|
||
debug: {
|
||
key: 'debug',
|
||
title: 'DEBUG',
|
||
color: {
|
||
bgLabel: '#7732A2',
|
||
label: '#F2EF40',
|
||
bgText: '#FFFEB7',
|
||
text: '#7732A2'
|
||
}
|
||
},
|
||
error: {
|
||
key: 'error',
|
||
title: 'Error',
|
||
color: {
|
||
bgLabel: '#C11713',
|
||
label: 'white',
|
||
bgText: '#C11713',
|
||
text: 'white'
|
||
}
|
||
},
|
||
warn: {
|
||
key: 'warn',
|
||
title: 'Warning',
|
||
color: {
|
||
bgLabel: '#F29140',
|
||
label: 'white',
|
||
bgText: '#FFD8B7',
|
||
text: 'black'
|
||
}
|
||
},
|
||
info: {
|
||
key: 'info',
|
||
title: 'Info',
|
||
color: {
|
||
bgLabel: '#413FA9',
|
||
label: 'white',
|
||
bgText: '#B3B2EB',
|
||
text: 'black'
|
||
}
|
||
},
|
||
notice: {
|
||
key: 'notice',
|
||
title: 'Notice',
|
||
color: {
|
||
bgLabel: '#33C133',
|
||
label: 'white',
|
||
bgText: '#ADF1AD',
|
||
text: 'black'
|
||
}
|
||
},
|
||
log: {
|
||
key: 'log',
|
||
title: 'Log',
|
||
color: {
|
||
bgLabel: '#f2f240',
|
||
label: 'black',
|
||
bgText: '#ffff90',
|
||
text: 'black'
|
||
}
|
||
},
|
||
callstack: {
|
||
key: 'TAS',
|
||
title: 'function',
|
||
color: {
|
||
bgLabel: '#413FA9',
|
||
label: 'white',
|
||
bgText: '#B3B2EB',
|
||
text: 'black'
|
||
}
|
||
},
|
||
callstack_async: {
|
||
key: 'TAS',
|
||
title: 'ASYNC CALL',
|
||
color: {
|
||
bgLabel: '#413FA9',
|
||
label: 'white',
|
||
bgText: '#413FA9',
|
||
text: 'white'
|
||
}
|
||
},
|
||
TAS: {
|
||
key: 'TAS',
|
||
title: 'TAS',
|
||
color: {
|
||
bgLabel: 'grey',
|
||
label: 'black;background:linear-gradient(#304352,#d7d2cc,#d7d2cc,#d7d2cc,#304352)',
|
||
bgText: 'grey',
|
||
text: 'black;background:linear-gradient(#304352,#d7d2cc,#d7d2cc,#d7d2cc,#304352)'
|
||
}
|
||
}
|
||
},
|
||
|
||
|
||
config = {
|
||
debugMode: false,
|
||
logging: {
|
||
log: true,
|
||
notice: true,
|
||
info: true,
|
||
warn: true,
|
||
error: true,
|
||
debug: false
|
||
}
|
||
},
|
||
|
||
callstackRegistry = [],
|
||
queuedUpdates = {}, //< Used for delaying saves till the last moment.
|
||
|
||
complexType = function(o){
|
||
switch(typeof o){
|
||
case 'string':
|
||
return 'string';
|
||
case 'boolean':
|
||
return 'boolean';
|
||
case 'number':
|
||
return (_.isNaN(o) ? 'NaN' : (o.toString().match(/\./) ? 'decimal' : 'integer'));
|
||
case 'function':
|
||
return 'function: '+(o.name ? o.name+'()' : '(anonymous)');
|
||
case 'object':
|
||
return (_.isArray(o) ? 'array' : (_.isArguments(o) ? 'arguments' : ( _.isNull(o) ? 'null' : 'object')));
|
||
default:
|
||
return typeof o;
|
||
}
|
||
},
|
||
|
||
dataLogger = function(primaryLogger,secondaryLogger,data){
|
||
_.each(data,function(m){
|
||
var type = complexType(m);
|
||
switch(type){
|
||
case 'string':
|
||
primaryLogger(m);
|
||
break;
|
||
case 'undefined':
|
||
case 'null':
|
||
case 'NaN':
|
||
primaryLogger('['+type+']');
|
||
break;
|
||
case 'number':
|
||
case 'not a number':
|
||
case 'integer':
|
||
case 'decimal':
|
||
case 'boolean':
|
||
primaryLogger('['+type+']: '+m);
|
||
break;
|
||
default:
|
||
primaryLogger('['+type+']:=========================================');
|
||
secondaryLogger(m);
|
||
primaryLogger('=========================================================');
|
||
break;
|
||
}
|
||
});
|
||
},
|
||
|
||
|
||
colorLog = function(options){
|
||
var coloredLoggerFunction,
|
||
key = options.key,
|
||
label = options.title || 'TAS',
|
||
lBGColor = (options.color && options.color.bgLabel) || 'blue',
|
||
lTxtColor = (options.color && options.color.label) || 'white',
|
||
mBGColor = (options.color && options.color.bgText) || 'blue',
|
||
mTxtColor = (options.color && options.color.text) || 'white';
|
||
|
||
coloredLoggerFunction = function(message){
|
||
/* eslint-disable no-console */
|
||
console.log(
|
||
'%c '+label+': %c '+message + ' ',
|
||
'background-color: '+lBGColor+';color: '+lTxtColor+'; font-weight:bold;',
|
||
'background-color: '+mBGColor+';color: '+mTxtColor+';'
|
||
);
|
||
/* eslint-enable no-console */
|
||
};
|
||
return function(){
|
||
if('TAS'===key || config.logging[key]){
|
||
/* eslint-disable no-console */
|
||
dataLogger(coloredLoggerFunction,function(m){console.log(m);},_.toArray(arguments));
|
||
/* eslint-enable no-console */
|
||
}
|
||
};
|
||
},
|
||
|
||
logDebug = colorLog(loggingSettings.debug),
|
||
logError = colorLog(loggingSettings.error),
|
||
logWarn = colorLog(loggingSettings.warn),
|
||
logInfo = colorLog(loggingSettings.info),
|
||
logNotice = colorLog(loggingSettings.notice),
|
||
logLog = colorLog(loggingSettings.log),
|
||
log = colorLog(loggingSettings.TAS),
|
||
logCS = colorLog(loggingSettings.callstack),
|
||
logCSA = colorLog(loggingSettings.callstack_async),
|
||
|
||
registerCallstack = function(callstack,label){
|
||
var idx=_.findIndex(callstackRegistry,function(o){
|
||
return (_.difference(o.stack,callstack).length === _.difference(callstack,o.stack).length) &&
|
||
_.difference(o.stack,callstack).length === 0 &&
|
||
o.label === label;
|
||
});
|
||
if(-1 === idx){
|
||
idx=callstackRegistry.length;
|
||
callstackRegistry.push({
|
||
stack: callstack,
|
||
label: label
|
||
});
|
||
}
|
||
return idx;
|
||
},
|
||
|
||
setConfigOption = function(options){
|
||
var newconf =_.defaults(options,config);
|
||
newconf.logging=_.defaults(
|
||
(options && options.logging)||{},
|
||
config.logging
|
||
);
|
||
config=newconf;
|
||
},
|
||
|
||
isDebugMode = function(){
|
||
return config.debugMode;
|
||
},
|
||
|
||
debugMode = function(){
|
||
config.logging.debug=true;
|
||
config.debugMode = true;
|
||
},
|
||
|
||
getCallstack = function(){
|
||
var e = new Error('dummy'),
|
||
stack = _.map(_.rest(e.stack.replace(/^[^(]+?[\n$]/gm, '')
|
||
.replace(/^\s+at\s+/gm, '')
|
||
.replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@')
|
||
.split('\n')),function(l){
|
||
return l.replace(/\s+.*$/,'');
|
||
});
|
||
return stack;
|
||
},
|
||
logCallstackSub = function(cs){
|
||
var matches, csa;
|
||
_.find(cs,function(line){
|
||
matches = line.match(/TAS_CALLSTACK_(\d+)/);
|
||
if(matches){
|
||
csa=callstackRegistry[matches[1]];
|
||
logCSA( '===================='+(csa.label ? '> '+csa.label+' <' : '')+'====================');
|
||
logCallstackSub(csa.stack);
|
||
return true;
|
||
}
|
||
logCS(line);
|
||
return false;
|
||
});
|
||
},
|
||
logCallstack = function(){
|
||
var cs;
|
||
if(config.debugMode){
|
||
cs = getCallstack();
|
||
cs.shift();
|
||
log('==============================> CALLSTACK <==============================');
|
||
logCallstackSub(cs);
|
||
log('=========================================================================');
|
||
}
|
||
},
|
||
|
||
|
||
wrapCallback = function (label, callback, context){
|
||
var callstack;
|
||
if('function' === typeof label){
|
||
context=callback;
|
||
callback=label;
|
||
label=undefined;
|
||
}
|
||
if(!config.debugMode){
|
||
return (function(cb,ctx){
|
||
return function(){
|
||
cb.apply(ctx||{},arguments);
|
||
};
|
||
}(callback,context));
|
||
}
|
||
|
||
callstack = getCallstack();
|
||
callstack.shift();
|
||
|
||
return (function(cb,ctx,cs,lbl){
|
||
var ctxref=registerCallstack(cs,lbl);
|
||
|
||
/*jshint -W054 */
|
||
return new Function('cb','ctx','TASlog',
|
||
"return function TAS_CALLSTACK_"+ctxref+"(){"+
|
||
"var start,end;"+
|
||
"TASlog('Entering: '+(cb.name||'(anonymous function)'));"+
|
||
"start=_.now();"+
|
||
"cb.apply(ctx||{},arguments);"+
|
||
"end=_.now();"+
|
||
"TASlog('Exiting: '+(cb.name||'(anonymous function)')+' :: '+(end-start)+'ms elapsed');"+
|
||
"};")(cb,ctx,log);
|
||
/*jshint +W054 */
|
||
}(callback,context,callstack,label));
|
||
},
|
||
|
||
|
||
prepareUpdate = function( attribute, value ){
|
||
queuedUpdates[attribute]=value;
|
||
},
|
||
|
||
applyQueuedUpdates = function() {
|
||
setAttrs(queuedUpdates);
|
||
queuedUpdates = {};
|
||
},
|
||
|
||
namesFromArgs = function(args,base){
|
||
return _.chain(args)
|
||
.reduce(function(memo,attr){
|
||
if('string' === typeof attr) {
|
||
memo.push(attr);
|
||
} else if(_.isArray(args) || _.isArguments(args)){
|
||
memo = namesFromArgs(attr,memo);
|
||
}
|
||
return memo;
|
||
},(_.isArray(base) && base) || [])
|
||
.uniq()
|
||
.value();
|
||
},
|
||
|
||
addId = function(obj,value){
|
||
Object.defineProperty(obj,'id',{
|
||
value: value,
|
||
writable: false,
|
||
enumerable: false
|
||
});
|
||
},
|
||
|
||
addProp = function(obj,prop,value,fullname){
|
||
(function(){
|
||
var pname=(_.contains(['S','F','I','D'],prop) ? '_'+prop : prop),
|
||
full_pname = fullname || prop,
|
||
pvalue=value;
|
||
|
||
_.each(['S','I','F'],function(p){
|
||
if( !_.has(obj,p)){
|
||
Object.defineProperty(obj, p, {
|
||
value: {},
|
||
enumerable: false,
|
||
readonly: true
|
||
});
|
||
}
|
||
});
|
||
if( !_.has(obj,'D')){
|
||
Object.defineProperty(obj, 'D', {
|
||
value: _.reduce(_.range(10),function(m,d){
|
||
Object.defineProperty(m, d, {
|
||
value: {},
|
||
enumerable: true,
|
||
readonly: true
|
||
});
|
||
return m;
|
||
},{}),
|
||
enumerable: false,
|
||
readonly: true
|
||
});
|
||
}
|
||
|
||
|
||
// Raw value
|
||
Object.defineProperty(obj, pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
if(v!==pvalue) {
|
||
pvalue=v;
|
||
prepareUpdate(full_pname,v);
|
||
}
|
||
},
|
||
get: function(){
|
||
return pvalue;
|
||
}
|
||
});
|
||
|
||
// string value
|
||
Object.defineProperty(obj.S, pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
var val=v.toString();
|
||
if(val !== pvalue) {
|
||
pvalue=val;
|
||
prepareUpdate(full_pname,val);
|
||
}
|
||
},
|
||
get: function(){
|
||
return pvalue.toString();
|
||
}
|
||
});
|
||
|
||
// int value
|
||
Object.defineProperty(obj.I, pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
var val=parseInt(v,10) || 0;
|
||
if(val !== pvalue){
|
||
pvalue=val;
|
||
prepareUpdate(full_pname,val);
|
||
}
|
||
},
|
||
get: function(){
|
||
return parseInt(pvalue,10) || 0;
|
||
}
|
||
});
|
||
|
||
// float value
|
||
Object.defineProperty(obj.F, pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
var val=parseFloat(v) || 0;
|
||
if(val !== pvalue) {
|
||
pvalue=val;
|
||
prepareUpdate(full_pname,val);
|
||
}
|
||
},
|
||
get: function(){
|
||
return parseFloat(pvalue) || 0;
|
||
}
|
||
});
|
||
_.each(_.range(10),function(d){
|
||
Object.defineProperty(obj.D[d], pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
var val=(parseFloat(v) || 0).toFixed(d);
|
||
if(val !== pvalue){
|
||
pvalue=val;
|
||
prepareUpdate(full_pname,val);
|
||
}
|
||
},
|
||
get: function(){
|
||
return (parseFloat(pvalue) || 0).toFixed(d);
|
||
}
|
||
});
|
||
});
|
||
|
||
}());
|
||
},
|
||
|
||
repeating = function( section ) {
|
||
return (function(s){
|
||
var sectionName = s,
|
||
attrNames = [],
|
||
fieldNames = [],
|
||
operations = [],
|
||
after = [],
|
||
|
||
repAttrs = function TAS_Repeating_Attrs(){
|
||
attrNames = namesFromArgs(arguments,attrNames);
|
||
return this;
|
||
},
|
||
repFields = function TAS_Repeating_Fields(){
|
||
fieldNames = namesFromArgs(arguments,fieldNames);
|
||
return this;
|
||
},
|
||
repReduce = function TAS_Repeating_Reduce(func, initial, final, context) {
|
||
operations.push({
|
||
type: 'reduce',
|
||
func: (func && _.isFunction(func) && func) || _.noop,
|
||
memo: (_.isUndefined(initial) && 0) || initial,
|
||
final: (final && _.isFunction(final) && final) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repMap = function TAS_Repeating_Map(func, final, context) {
|
||
operations.push({
|
||
type: 'map',
|
||
func: (func && _.isFunction(func) && func) || _.noop,
|
||
final: (final && _.isFunction(final) && final) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repEach = function TAS_Repeating_Each(func, final, context) {
|
||
operations.push({
|
||
type: 'each',
|
||
func: (func && _.isFunction(func) && func) || _.noop,
|
||
final: (final && _.isFunction(final) && final) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repTap = function TAS_Repeating_Tap(final, context) {
|
||
operations.push({
|
||
type: 'tap',
|
||
final: (final && _.isFunction(final) && final) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repAfter = function TAS_Repeating_After(callback,context) {
|
||
after.push({
|
||
callback: (callback && _.isFunction(callback) && callback) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repExecute = function TAS_Repeating_Execute(callback,context){
|
||
var rowSet = {},
|
||
attrSet = {},
|
||
fieldIds = [],
|
||
fullFieldNames = [];
|
||
|
||
repAfter(callback,context);
|
||
|
||
// call each operation per row.
|
||
// call each operation's final
|
||
getSectionIDs("repeating_"+sectionName,function(ids){
|
||
fieldIds = ids;
|
||
fullFieldNames = _.reduce(fieldIds,function(memo,id){
|
||
return memo.concat(_.map(fieldNames,function(name){
|
||
return 'repeating_'+sectionName+'_'+id+'_'+name;
|
||
}));
|
||
},[]);
|
||
getAttrs( _.uniq(attrNames.concat(fullFieldNames)), function(values){
|
||
_.each(attrNames,function(aname){
|
||
if(values.hasOwnProperty(aname)){
|
||
addProp(attrSet,aname,values[aname]);
|
||
}
|
||
});
|
||
|
||
rowSet = _.reduce(fieldIds,function(memo,id){
|
||
var r={};
|
||
addId(r,id);
|
||
_.each(fieldNames,function(name){
|
||
var fn = 'repeating_'+sectionName+'_'+id+'_'+name;
|
||
addProp(r,name,values[fn],fn);
|
||
});
|
||
|
||
memo[id]=r;
|
||
|
||
return memo;
|
||
},{});
|
||
|
||
_.each(operations,function(op){
|
||
var res;
|
||
switch(op.type){
|
||
case 'tap':
|
||
_.bind(op.final,op.context,rowSet,attrSet)();
|
||
break;
|
||
|
||
case 'each':
|
||
_.each(rowSet,function(r){
|
||
_.bind(op.func,op.context,r,attrSet,r.id,rowSet)();
|
||
});
|
||
_.bind(op.final,op.context,rowSet,attrSet)();
|
||
break;
|
||
|
||
case 'map':
|
||
res = _.map(rowSet,function(r){
|
||
return _.bind(op.func,op.context,r,attrSet,r.id,rowSet)();
|
||
});
|
||
_.bind(op.final,op.context,res,rowSet,attrSet)();
|
||
break;
|
||
|
||
case 'reduce':
|
||
res = op.memo;
|
||
_.each(rowSet,function(r){
|
||
res = _.bind(op.func,op.context,res,r,attrSet,r.id,rowSet)();
|
||
});
|
||
_.bind(op.final,op.context,res,rowSet,attrSet)();
|
||
break;
|
||
}
|
||
});
|
||
|
||
// finalize attrs
|
||
applyQueuedUpdates();
|
||
_.each(after,function(op){
|
||
_.bind(op.callback,op.context)();
|
||
});
|
||
});
|
||
});
|
||
};
|
||
|
||
return {
|
||
attrs: repAttrs,
|
||
attr: repAttrs,
|
||
|
||
column: repFields,
|
||
columns: repFields,
|
||
field: repFields,
|
||
fields: repFields,
|
||
|
||
reduce: repReduce,
|
||
inject: repReduce,
|
||
foldl: repReduce,
|
||
|
||
map: repMap,
|
||
collect: repMap,
|
||
|
||
each: repEach,
|
||
forEach: repEach,
|
||
|
||
tap: repTap,
|
||
'do': repTap,
|
||
|
||
after: repAfter,
|
||
last: repAfter,
|
||
done: repAfter,
|
||
|
||
execute: repExecute,
|
||
go: repExecute,
|
||
run: repExecute
|
||
};
|
||
}(section));
|
||
},
|
||
|
||
|
||
repeatingSimpleSum = function(section, field, destination){
|
||
repeating(section)
|
||
.attr(destination)
|
||
.field(field)
|
||
.reduce(function(m,r){
|
||
return m + (r.F[field]);
|
||
},0,function(t,r,a){
|
||
a.S[destination]=t;
|
||
})
|
||
.execute();
|
||
};
|
||
|
||
/* eslint-disable no-console */
|
||
console.log('%c•.¸¸.•*´¨`*•.¸¸.•*´¨`*•.¸ The Aaron Sheet v'+version+' ¸.•*´¨`*•.¸¸.•*´¨`*•.¸¸.•','background: linear-gradient(to right,green,white,white,green); color:black;text-shadow: 0 0 8px white;');
|
||
console.log('%c•.¸¸.•*´¨`*•.¸¸.•*´¨`*•.¸ Last update: '+(new Date(lastUpdate*1000))+' ¸.•*´¨`*•.¸¸.•*´¨`*•.¸¸.•','background: linear-gradient(to right,green,white,white,green); color:black;text-shadow: 0 0 8px white;');
|
||
/* eslint-enable no-console */
|
||
|
||
|
||
return {
|
||
/* Repeating Sections */
|
||
repeatingSimpleSum: repeatingSimpleSum,
|
||
repeating: repeating,
|
||
|
||
/* Configuration */
|
||
config: setConfigOption,
|
||
|
||
/* Debugging */
|
||
callback: wrapCallback,
|
||
callstack: logCallstack,
|
||
debugMode: debugMode,
|
||
isDebugMode: isDebugMode,
|
||
_fn: wrapCallback,
|
||
|
||
/* Logging */
|
||
debug: logDebug,
|
||
error: logError,
|
||
warn: logWarn,
|
||
info: logInfo,
|
||
notice: logNotice,
|
||
log: logLog
|
||
};
|
||
}());
|
||
|
||
/* ---- END: TheAaronSheet.js ---- */
|
||
|
||
on('change:repeating_equipment remove:repeating_equipment', function(){
|
||
TAS.repeating('equipment')
|
||
.attrs('total_equipment_weight','total_equipment_cost')
|
||
.fields('item','quantity','weight','weightTotal','carried','equipment_totalweight','cost','equipment_runningtotal')
|
||
.reduce(function(m,r){
|
||
m.weightTotal=(r.F.weight*r.I.quantity);
|
||
if(r.carried === '1'){m.weight+=m.weightTotal;}
|
||
else{m.weight=m.weight;}
|
||
r.equipment_totalweight=m.weightTotal;
|
||
m.cost+=(r.F.cost*r.I.quantity);
|
||
r.D[2].equipment_runningtotal=m.cost;
|
||
return m;
|
||
|
||
},{weight:0,cost:0, desc: []},function(m,r,a){
|
||
a.total_equipment_weight=m.weight;
|
||
a.D[2].total_equipment_cost=m.cost;
|
||
console.log("===== Equipment Running Totals =====" + '\n' +"EquipmentWeightRunningTotal = " + m.weight + '\n' +"EquipmentCostRunningTotal = " + m.cost);
|
||
})
|
||
.execute();
|
||
});
|
||
|
||
on('change:repeating_weapon remove:repeating_weapon', function(){
|
||
TAS.repeating('weapon')
|
||
.attrs('total_weapon_weight','total_weapon_cost')
|
||
.fields('name','quantity','weight','weapon_totalweight','cost','weapon_runningtotal')
|
||
.reduce(function(m,r){
|
||
m.weight+=(r.F.weight*r.I.quantity);
|
||
r.D[2].weapon_totalweight=(r.F.weight*r.I.quantity);
|
||
m.cost+=(r.F.cost*r.I.quantity);
|
||
r.D[2].weapon_runningtotal=m.cost;
|
||
return m;
|
||
|
||
},{weight:0,cost:0, desc: []},function(m,r,a){
|
||
a.total_weapon_weight=m.weight;
|
||
a.D[2].total_weapon_cost=m.cost;
|
||
console.log("===== Weapon Running Totals =====" + '\n' +"WeaponWeightRunningTotal = " + m.weight + '\n' +"WeaponCostRunningTotal = " + m.cost);
|
||
})
|
||
.execute();
|
||
});
|
||
|
||
on('sheet:opened change:pp change:gp change:ep change:sp change:cp change:armor_weight change:armor_cost', function(){
|
||
getAttrs(['pp','gp','ep','sp','cp','armor_weight','armor_cost'], function(values){
|
||
setAttrs({
|
||
total_coin_weight: Math.round(((parseFloat(values.pp) + parseFloat(values.gp) + parseFloat(values.ep) + parseFloat(values.sp) + parseFloat(values.cp)))),
|
||
total_armor_weight: (parseFloat(values.armor_weight)),
|
||
total_armor_cost: (parseFloat(values["armor_cost"],10)).toFixed(2)
|
||
});
|
||
});
|
||
});
|
||
|
||
on('sheet:opened change:total_armor_weight change:total_weapon_weight change:total_coin_weight change:total_equipment_weight change:repeating_equipment remove:repeating_equipment change:repeating_weapon remove:repeating_weapon change:pp change:gp change:ep change:sp change:cp change:armor_weight change:armor_cost change:total_armor_cost change:total_weapon_cost change:total_equipment_cost', function(){
|
||
getAttrs(['total_armor_weight','total_weapon_weight','total_coin_weight','total_equipment_weight','total_armor_cost','total_weapon_cost','total_equipment_cost'], function(values){
|
||
setAttrs({
|
||
total_weight: Math.round(parseFloat(values.total_armor_weight) + parseFloat(values.total_weapon_weight) + parseFloat(values.total_coin_weight) + parseFloat(values.total_equipment_weight)),
|
||
total_cost: (parseFloat(values["total_armor_cost"],10) + parseFloat(values["total_weapon_cost"],10) + parseFloat(values["total_equipment_cost"],10)).toFixed(2)
|
||
});
|
||
});
|
||
});
|
||
|
||
/* check and set encumbrance */
|
||
on('sheet:opened change:normal_load change:heavy_load change:very_heavy_load change:max_load change:total_weight', function(){
|
||
getAttrs(['normal_load','heavy_load','very_heavy_load','max_load','total_weight'], function(values){
|
||
if(values.total_weight <= values.normal_load) {setAttrs({current_encumbrance:0}); console.log("===== Encumbrance is Normal =====");}
|
||
else if(values.total_weight > values.normal_load && values.total_weight <= values.heavy_load) {setAttrs({current_encumbrance:1}); console.log("===== Encumbrance is Heavy =====");}
|
||
else if(values.total_weight > values.heavy_load && values.total_weight <= values.very_heavy_load) {setAttrs({current_encumbrance:2}); console.log("===== Encumbrance is Very Heavy =====");}
|
||
else {setAttrs({current_encumbrance:3}); console.log("===== Encumbrance is Max =====");}
|
||
});
|
||
});
|
||
|
||
// Spell Tabs
|
||
on('change:spell_tabs', () => {
|
||
getSectionIDs('repeating_spells', idarray => {
|
||
const fieldnames = [];
|
||
idarray.forEach(id => {
|
||
fieldnames.push(`repeating_spells_${id}_level`);
|
||
});
|
||
getAttrs(['spell_tabs', ...fieldnames], v => {
|
||
const output = {};
|
||
const level = +v.spell_tabs||0;
|
||
idarray.forEach(id => {
|
||
const thislevel = +v[`repeating_spells_${id}_level`] || 0;
|
||
output[`repeating_spells_${id}_spell_show`] = (level === -1 || level === thislevel) ? 1 : 0;
|
||
});
|
||
setAttrs(output);
|
||
});
|
||
});
|
||
});
|
||
|
||
var Sheet = Sheet || (function() {
|
||
|
||
var version = 1.51,
|
||
Debug = false,
|
||
|
||
// copy DmgBonus value to AttackDmgBonus
|
||
dmgSwap = function() {
|
||
getSectionIDs("repeating_weapon", function(idarray) { //Get oldSectionID
|
||
var update={};
|
||
_.each(idarray, function(currentID, i) {
|
||
getAttrs(['repeating_weapon_' + currentID + '_DmgBonus'], function(v) { //Get oldAttribute from FieldID
|
||
update['repeating_weapon_' + currentID + '_AttackDmgBonus'] = v['repeating_weapon_' + currentID + '_DmgBonus']; //replaces old attribute value with new
|
||
setAttrs(update,{silent:true}); //Update
|
||
});
|
||
});
|
||
});
|
||
// replace all instances of @{DmgBonus} with @{AttackDmgBonus} in macro-text
|
||
var update = {}, attrs = [];
|
||
getSectionIDs("repeating_weapon", function(idarray) {
|
||
_.each(idarray, function(itemid) {
|
||
attrs.push("repeating_weapon_" + itemid + "_macro-text");
|
||
});
|
||
getAttrs(attrs, function(v) {
|
||
_.each(idarray, function(id) {
|
||
update["repeating_weapon_" + id + "_macro-text"] = v["repeating_weapon_" + id + "_macro-text"].replace(new RegExp('@{DmgBonus}', 'g'), '@{AttackDmgBonus}');
|
||
});
|
||
setAttrs(update,{silent:true});
|
||
});
|
||
});
|
||
},
|
||
// copy max value to current_max
|
||
maxSwap = function() {
|
||
getSectionIDs("repeating_ability", function(idarray) { //Get oldSectionID
|
||
var update={};
|
||
_.each(idarray, function(currentID, i) {
|
||
getAttrs(['repeating_ability_' + currentID + '_max'], function(v) { //Get oldAttribute from FieldID
|
||
update['repeating_ability_' + currentID + '_current_max'] = v['repeating_ability_' + currentID + '_max']; //replaces old attribute value with new
|
||
setAttrs(update,{silent:true}); //Update
|
||
});
|
||
});
|
||
});
|
||
},
|
||
|
||
//replace default macro-text of non weapon proficiencies ONLY IF they haven't been edited
|
||
nwpMacroUpdate = function() {
|
||
var update = {}, attrs = [];
|
||
getSectionIDs("repeating_nonweaponproficiencies", function(idarray) {
|
||
_.each(idarray, function(itemid) {
|
||
attrs.push("repeating_nonweaponproficiencies_" + itemid + "_macro-text");
|
||
});
|
||
getAttrs(attrs, function(v) {
|
||
_.each(idarray, function(id) {
|
||
update["repeating_nonweaponproficiencies_" + id + "_macro-text"] = v["repeating_nonweaponproficiencies_" + id + "_macro-text"].replace('&{template:general} {{name=@{character_name}}} {{subtag=Non Weapon Proficiency: @{name}}} {{=@{short_description}}}{{Success Amount=[[((@{rAttribute})+(@{rSlots}-1)-1d20)cs>1cf<-1]]}}',
|
||
'&{template:general} {{color=@{color_option}}} {{name=@{character_name}}} {{subtag=Non Weapon Proficiency: @{name}}} {{Proficiency Check=[[ 1d20 + [[@{rmodifier}]][MOD] + [[?{Additional modifier?|0}]][MOD] ]] vs [[ @{rAttribute}[ATTR] ]]}}{{freetext=@{short_description}}}');
|
||
});
|
||
console.log("nwpMacroUpdate check completed on: " +attrs);
|
||
setAttrs(update,{silent:true});
|
||
});
|
||
});
|
||
},
|
||
//add {{color=@{color}}} to repeating section macro-text
|
||
colorUpdate = function() {
|
||
//update repeating_weapon_
|
||
var updateWeapon = {}, attrsWeapon = [];
|
||
getSectionIDs("repeating_weapon", function(idarray) {
|
||
_.each(idarray, function(itemid) {
|
||
attrsWeapon.push("repeating_weapon_" + itemid + "_macro-text");
|
||
});
|
||
getAttrs(attrsWeapon, function(v) {
|
||
_.each(idarray, function(id) {
|
||
updateWeapon["repeating_weapon_" + id + "_macro-text"] = v["repeating_weapon_" + id + "_macro-text"].replace('&{template:attacks} {{name=@{character_name}}}',
|
||
'&{template:attacks} {{color=@{color_option}}} {{name=@{character_name}}}');
|
||
});
|
||
console.log("colorUpdate check completed on: " +attrsWeapon);
|
||
setAttrs(updateWeapon,{silent:true});
|
||
});
|
||
});
|
||
//update repeating_ability_
|
||
var updateAbility = {}, attrsAbility = [];
|
||
getSectionIDs("repeating_ability", function(idarray) {
|
||
_.each(idarray, function(itemid) {
|
||
attrsAbility.push("repeating_ability_" + itemid + "_macro-text");
|
||
});
|
||
getAttrs(attrsAbility, function(v) {
|
||
_.each(idarray, function(id) {
|
||
updateAbility["repeating_ability_" + id + "_macro-text"] = v["repeating_ability_" + id + "_macro-text"].replace('&{template:general} {{name=@{character_name}}}',
|
||
'&{template:general} {{color=@{color_option}}} {{name=@{character_name}}}');
|
||
});
|
||
console.log("colorUpdate check completed on: " +attrsAbility);
|
||
setAttrs(updateAbility,{silent:true});
|
||
});
|
||
});
|
||
|
||
//update repeating_spells_
|
||
var updateSpells = {}, attrsSpells = [];
|
||
getSectionIDs("repeating_spells", function(idarray) {
|
||
_.each(idarray, function(itemid) {
|
||
attrsSpells.push("repeating_spells_" + itemid + "_macro-text");
|
||
});
|
||
getAttrs(attrsSpells, function(v) {
|
||
_.each(idarray, function(id) {
|
||
updateSpells["repeating_spells_" + id + "_macro-text"] = v["repeating_spells_" + id + "_macro-text"].replace('&{template:general} {{name=@{character_name}}}',
|
||
'&{template:general} {{color=@{color_option}}} {{name=@{character_name}}}');
|
||
});
|
||
console.log("colorUpdate check completed on: " +attrsSpells);
|
||
setAttrs(updateSpells,{silent:true});
|
||
});
|
||
});
|
||
},
|
||
|
||
/* recalculateSheet */
|
||
recalculateSheet = function(oldversion) {
|
||
if (oldversion < 0.1) {
|
||
//call your functions here
|
||
dmgSwap();
|
||
}
|
||
if (oldversion < 1.2) {
|
||
maxSwap();
|
||
}
|
||
if (oldversion < 1.5) {
|
||
nwpMacroUpdate();
|
||
colorUpdate();
|
||
}
|
||
},
|
||
|
||
/* checkForUpdate looks at current version of page in
|
||
* sheet_version and compares to code Sheet.version calls
|
||
* recalulateSheet if versions don't match or if recalculate
|
||
* button was pressed. */
|
||
checkForUpdate = function() {
|
||
getAttrs(["sheet_version","sheet_forcesync","recalc1"],function(v){
|
||
var setter={},currVer=0,setAny=0,recalc=false;
|
||
currVer=parseFloat(v["sheet_version"],10)||0;
|
||
console.log("Current sheet data version:"+currVer+", Sheet code version:" + version );
|
||
|
||
if ( currVer!== version ) {
|
||
recalc=true;
|
||
setter["sheet_version"]= version;
|
||
setAny=1;
|
||
}
|
||
if (v["recalc1"] && v["recalc1"]!="0" ) {
|
||
currVer=-1;
|
||
recalc=true;
|
||
setter["recalc1"]=0;
|
||
setAny=1;
|
||
}
|
||
if (v["sheet_forcesync"] && v["sheet_forcesync"]!="0" ) {
|
||
currVer=-1;
|
||
recalc=true;
|
||
setter["sheet_forcesync"]=0;
|
||
setAny=1;
|
||
}
|
||
if (setAny) {
|
||
setAttrs( setter);
|
||
}
|
||
if (recalc) {
|
||
recalculateSheet(currVer);
|
||
}
|
||
});
|
||
};
|
||
return {
|
||
version:version,
|
||
checkForUpdate:checkForUpdate,
|
||
dmgSwap:dmgSwap,
|
||
maxSwap:maxSwap,
|
||
nwpMacroUpdate:nwpMacroUpdate,
|
||
colorUpdate:colorUpdate
|
||
};
|
||
}());
|
||
|
||
//sheet
|
||
on("sheet:opened",function() {Sheet.checkForUpdate();});
|
||
on("change:recalc1",function() {Sheet.checkForUpdate();});
|
||
console.log("...recalc checking for update");
|
||
|
||
</script> |