mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-09-06 15:12:32 +00:00
Some Highlights 1. removed the preset attack buttons(no longer necessary) 2. drag/drop sheet rolls to the quick bar 3. In accordance to the latest Roll20 update, old ability macros will need to be updated to include "$X", where X is the row number of the repeating item 4. added more ability-based skills/info and gave them rolls 5. added Surprise and Initiative rolls (both rolls use @SurpriseBonus as modifier) 6. added editable macro-text for attacks (allows you to customize your macros) 7. added many new sections; 8. Movement: with auto-calc rates and current load indicators based off of carrying capacity vs total weight carried 9. Wealth: with coins total and carried 10. Equipment: repeating rows with auto-calc cost/weight. Armor, coins carried, and weapons costs/weight are included elsewhere and do not need to be included as equipment. 11. Sheet worker javascript was used for weight, cost, and encumbrance (thanks to Aaron's TAS script) 12. The encumbrance function sets a checkbox to the current load. Current load is determined by comparing the total weight carried to the amounts entered for a character's carrying capacities (normal, heavy, very heavy, and max). Currently these limits are entered by the sheet user. These limits may be automated in future updates. 13. Special Abilities: repeating rows w/roll and macro-text 14. Spells: repeating rows w/roll and macro-text 15. Notes 16. added Footer with sheet info 17. option to /w gm to-hit table info to the DM when making an attack 18. option to toggle a parchment background (void of coffee or Jolt Cola stains). ;-)
1081 lines
67 KiB
HTML
1081 lines
67 KiB
HTML
<div class="sheet-useBackground">
|
|
<input type="radio" class="sheet-useBackground" style="display:none;" name="attr_background" value="1" checked />
|
|
<input type="radio" 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://i.imgur.com/I7XAra9.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: 35px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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="@{character_Alignment}" value="" placeholder="Description" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="sheet-right">Class 1:</td>
|
|
<td><input type="text" class="sheet-input-large" name="attr_Class" title="@{character_Class}" placeholder="Class" /></td>
|
|
<td class="sheet-right">Lvl:</td>
|
|
<td><input type="number" class="sheet-input-small" name="attr_Level" title="@{character_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}" value="" placeholder="2nd class" /></td>
|
|
<td class="sheet-right">Lvl:</td>
|
|
<td><input type="number" 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}" value="" placeholder="3rd class" /></td>
|
|
<td class="sheet-right">Lvl:</td>
|
|
<td><input type="number" 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="number" class="sheet-box" name="attr_HitPoints" title="@{HitPoints}" value="0" /></td>
|
|
<td class="sheet-right sheet-text-large" style="padding:10px 5px 10px 55px">AC:</td>
|
|
<td colspan="3"><input type="number" 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}" value="" 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}" value="" 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}" value="" 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}" value="" 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}" value="" 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}" value="" placeholder="Color" /></td>
|
|
<td class="sheet-right">Hair:</td>
|
|
<td><input type="text" class="sheet-input-medium" name="attr_Hair" title="@{Hair}" value="" placeholder="Color" /></td>
|
|
</tr>
|
|
</table>
|
|
</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: 35px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;cursor: pointer;z-index: 1;" checked="checked" /><span></span>
|
|
<table class="sheet-sect">
|
|
<tr>
|
|
<td class="sheet-right"><span class="sheet-text-large">STR </span></td>
|
|
<td><input type="text" class="sheet-input-small" name="attr_Strength" title="@{Strength}" value="10" style="text-align:left; padding-left:9px;" /></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} {{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} {{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-right"><span class="sheet-text-large">INT </span></td>
|
|
<td><input type="number" class="sheet-input-small" name="attr_Intelligence" title="@{Intelligence}" value="10" /></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} {{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-right"><span class="sheet-text-large">WIS </span></td>
|
|
<td><input type="number" class="sheet-input-small" name="attr_Wisdom" title="@{Wisdom}" value="10" /></td>
|
|
<td class="sheet-right"><button class="sheet-button" type="roll" name="attr_MentalSave-roll" title="%{selected|MentalSave-roll}"value="&{template:general} {{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} {{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-right"><span class="sheet-text-large">DEX </span></td>
|
|
<td><input type="number" class="sheet-input-small" name="attr_dexterity" title="@{dexterity}" value="10" /></td>
|
|
<td class="sheet-right"><button class="sheet-button" type="roll" name="attr_surprise-roll" title="%{selected|surprise-roll}" value="&{template:general} {{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" type="roll" name="attr_init-roll" title="%{selected|init-roll}" value="&{template:general} {{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-right"><span class="sheet-text-large">CON </span></td>
|
|
<td><input type="number" class="sheet-input-small" name="attr_constitution" title="@{constitution}" value="10" /></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} {{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} {{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-right"><span class="sheet-text-large">CHA </span></td>
|
|
<td><input type="number" class="sheet-input-small" name="attr_Charisma" title="@{Charisma}" value="10" /></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} {{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} {{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>
|
|
</table>
|
|
<table class="sheet-sect sheet-border" style="margin-top:5px;">
|
|
<tr>
|
|
<td class="sheet-text-large sheet-center">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="number" 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: 35px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;cursor: pointer;z-index: 1;" checked="checked" /><span></span>
|
|
<table class="sheet-sect sheet-center">
|
|
<tr>
|
|
<td colspan="2">Rods, Staves, and Wands<br><button class="sheet-button" type="roll" value="/me must make a saving throw!
&{template:general} {{name=@{character_name}}} {{subtag=Saving Throw}} {{Rods, Staves, Wands=[[1d20cs>@{SaveRodsStavesWands}cf<@{SaveRodsStavesWands}]]}}" name="roll_SaveRodsStavesWands" title="%{selected|SaveRodsStavesWands}"> Roll</button><input type="number" 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} {{name=@{character_name}}} {{subtag=Saving Throw}} {{Breath Weapons=[[1d20cs>@{SaveBreathWeapons}cf<@{SaveBreathWeapons}]]}}" name="roll_SaveBreathWeapons" title="%{selected|SaveBreathWeapons}"> Roll</button><input type="number" class="sheet-input-small" name="attr_SaveBreathWeapons" title="@{SaveBreathWeapons}" value="0" /></td>
|
|
<td colspan="2">Paralysis, Poison, and Death<br><button class="sheet-button" type="roll" value="/me must make a saving throw!
&{template:general} {{name=@{character_name}}} {{subtag=Saving Throw}} {{Paralysis, Poison, Death=[[1d20cs>@{SaveParalysisPoisonDeath}cf<@{SaveParalysisPoisonDeath}]]}}" name="roll_SaveParalysisPoisonDeath" title="%{selected|SaveParalysisPoisonDeath}"> Roll</button><input type="number" 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} {{name=@{character_name}}} {{subtag=Saving Throw}} {{Petrification, Polymorph=[[1d20cs>@{SavePetrificationPolymorph}cf<@{SavePetrificationPolymorph}]]}}" name="roll_SavePetrificationPolymorph" title="%{selected|SavePetrificationPolymorph}"> Roll</button><input type="number" class="sheet-input-small" name="attr_SavePetrificationPolymorph" title="@{SavePetrificationPolymorph}" value="0" /></td>
|
|
<td colspan="2">Spells<br><button class="sheet-button" type="roll" value="/me must make a saving throw!
&{template:general} {{name=@{character_name}}} {{subtag=Saving Throw}} {{Spells=[[1d20cs>@{SaveSpells}cf<@{SaveSpells}]]}}" name="roll_SaveSpells" title="%{selected|SaveSpells}"> Roll</button><input type="number" 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: 35px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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" value="" style="width:100%;" /><br>Weapon</td>
|
|
<td style="width:11%;"><input class="sheet-input-small" type="text" name="attr_ToHitBonus" title="@{repeating_weapon_$X_ToHitBonus}" value="0" /><br>To-Hit Bonus</td>
|
|
<td colspan="2" style="width:11%;"><input class="sheet-input-small" type="text" name="attr_MagicBonus" title="@{repeating_weapon_$X_MagicBonus}" value="0" /><br>Magic Bonus</td>
|
|
<td colspan="2" style="width:11%;"><input class="sheet-input-small" type="text" name="attr_DmgBonus" title="@{repeating_weapon_$X_DmgBonus}" value="0" /><br>DMG Bonus</td>
|
|
<td><b title="Include '/w gm to-hit AC' table?">/w gm?</b><br>
|
|
<select name="attr_whisper_to-hit" style="width:100%; height:2em;">
|
|
<option value="/w gm &{template:attacks} {{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="">yes</option>
|
|
<option value=" ">no</option>
|
|
</select>
|
|
</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} {{name=@{character_name}}} {{subtag=@{WeaponName}}} {{attack1=[[1d20 + @{ToHitBonus}[BON] + @{MagicBonus}[MAG] + ?{To Hit Modifier?|0}[MOD]) ]]}} {{damage1vsSM=[[@{DamageSmallMedium} + @{DmgBonus}[BON] + @{MagicBonus}[MAG] + ?{Damage Modifier?|0}[MOD] ]]}} {{damage1vsL=[[@{DamageLarge} + @{DmgBonus}[BON] + @{MagicBonus}[MAG] + ?{Damage Modifier?|0}[MOD] ]]}} {{WeaponNotes=@{WeaponNotes}}} @{whisper_to-hit}</textarea><br>Macro-Text</td>
|
|
</tr>
|
|
<tr>
|
|
<td><input class="sheet-input-small" type="text" name="attr_DamageSmallMedium" title="@{repeating_weapon_$X_DamageSmallMedium}" value="0" /><br>DMG vs S/M</td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_DamageLarge" title="@{repeating_weapon_$X_DamageLarge}" value="0" /><br>DMG vs L</td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_RateOfFire" title="@{repeating_weapon_$X_RateOfFire}" value="0" /><br>Rate of Fire</td>
|
|
<td><input class="sheet-input-medium" type="text" name="attr_Range" title="@{repeating_weapon_$X_Range}" value="0" /><br>Range S/M/L</td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_quantity" title="@{repeating_weapon_$X_quantity}" min="0" value="1" /><br>Qty</td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_weight" title="@{repeating_weapon_$X_weight}" min="0" value="0" /><br>Wt</td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_WeaponSpeed" title="@{repeating_weapon_$X_WeaponSpeed}" value="0" /><br>Speed</td>
|
|
<td><input class="sheet-input-small" type="text" 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}" value="" 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 ARMOR CLASS </div>
|
|
<input type="checkbox" class="sheet-sect-show" title="@{to_hit_AC-info-show}" name="attr_to_hit_AC-info-show" value="1" style="opacity:0;width: 35px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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="00" /></td>
|
|
<td><input type="text" name="attr_THAC-9" title="@{THAC-9}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC-8" title="@{THAC-8}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC-7" title="@{THAC-7}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC-6" title="@{THAC-6}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC-5" title="@{THAC-5}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC-4" title="@{THAC-4}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC-3" title="@{THAC-3}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC-2" title="@{THAC-2}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC-1" title="@{THAC-1}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC0" title="@{THAC0}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC1" title="@{THAC1}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC2" title="@{THAC2}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC3" title="@{THAC3}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC4" title="@{THAC4}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC5" title="@{THAC5}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC6" title="@{THAC6}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC7" title="@{THAC7}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC8" title="@{THAC8}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC9" title="@{THAC9}" value="00" /></td>
|
|
<td><input type="text" name="attr_THAC10" title="@{THAC10}" value="00" /></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: 35px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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} {{name=@{character_name}}} {{subtag=Ability Check}} {{Pick Pockets=[[1d100cs<@{PickPockets}cf>@{PickPockets}]] %}}"> Roll</button></td>
|
|
<td style="width: 47px;"><input type="number" 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} {{name=@{character_name}}} {{subtag=Ability Check}} {{Move Quietly=[[1d100cs<@{MoveQuietly}cf>@{MoveQuietly}]] %}}"> Roll</button></td>
|
|
<td style="width: 47px;"><input type="number" 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} {{name=@{character_name}}} {{subtag=Ability Check}} {{Climb Walls=[[1d100cs<@{ClimbWalls}cf>@{ClimbWalls}]] %}}"> Roll</button></td>
|
|
<td style="width: 47px;"><input type="number" 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} {{name=@{character_name}}} {{subtag=Ability Check}} {{Open Locks=[[1d100cs<@{OpenLocks}cf>@{OpenLocks}]] %}}"> Roll</button></td>
|
|
<td><input type="number" 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} {{name=@{character_name}}} {{subtag=Ability Check}} {{Hide In Shadows=[[1d100cs<@{HideInShadows}cf>@{HideInShadows}]] %}}"> Roll</button></td>
|
|
<td><input type="number" 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} {{name=@{character_name}}} {{subtag=Ability Check}} {{Read Languages=[[1d100cs<@{ReadLanguages}cf>@{ReadLanguages}]] %}}"> Roll</button></td>
|
|
<td><input type="number" 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} {{name=@{character_name}}} {{subtag=Ability Check}} {{Find/Remove Traps=[[1d100cs<@{FindTraps}cf>@{FindTraps}]] %}}"> Roll</button></td>
|
|
<td><input type="number" 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} {{name=@{character_name}}} {{subtag=Ability Check}} {{Hear Noise=[[1d100cs<@{HearNoise}cf>@{HearNoise}]] %}}"> Roll</button></td>
|
|
<td><input type="number" name="attr_HearNoise" class="sheet-input-small" title="@{HearNoise}" value="0" /></td>
|
|
<td>Hear Noise</td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></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: 35px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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 class="sheet-input-medium" type="number" name="attr_pp" title="@{pp}" min="0" value="0" /></td>
|
|
<td style="width:15%;">GP: <input class="sheet-input-medium" type="number" name="attr_gp" title="@{gp}" min="0" value="0" /></td>
|
|
<td style="width:15%;">EP: <input class="sheet-input-medium" type="number" name="attr_ep" title="@{ep}" min="0" value="0" /></td>
|
|
<td style="width:15%;">SP: <input class="sheet-input-medium" type="number" name="attr_sp" title="@{sp}" min="0" value="0" /></td>
|
|
<td style="width:15%;">CP: <input class="sheet-input-medium" type="number" 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 class="sheet-input-medium" type="number" name="attr_pp-total" title="@{pp-total}" min="0" value="0" /></td>
|
|
<td style="width:15%;">GP: <input class="sheet-input-medium" type="number" name="attr_gp-total" title="@{gp-total}" min="0" value="0" /></td>
|
|
<td style="width:15%;">EP: <input class="sheet-input-medium" type="number" name="attr_ep-total" title="@{ep-total}" min="0" value="0" /></td>
|
|
<td style="width:15%;">SP: <input class="sheet-input-medium" type="number" name="attr_sp-total" title="@{sp-total}" min="0" value="0" /></td>
|
|
<td style="width:15%;">CP: <input class="sheet-input-medium" type="number" 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: 70px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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: 35px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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;" checked="checked" /><span></span></td>
|
|
<td style="width:38%;"><input style="width:100%;" type="text" name="attr_item" title="@{repeating_equipment_$X_item}" value="" placeholder="Item/Description" /></td>
|
|
<td style="width:20%;"><input style="width:100%;" type="text" name="attr_location" title="@{repeating_equipment_$X_location}" value="" placeholder="Location" /></td>
|
|
<td style="width:7%;"><input type="checkbox" name="attr_carried" title="@{repeating_equipment_$X_carried}" value="1" checked="checked" /></td>
|
|
<td style="width:7%;"><input type="number" name="attr_quantity" title="@{repeating_equipment_$X_quantity}" min="0" value="1" /></td>
|
|
<td style="width:1%;">/</td>
|
|
<td style="width:7%;"><input type="number" name="attr_quantity_max" title="@{repeating_equipment_$X_quantity_max}" min="0" value="1" /></td>
|
|
<td style="width:7%;"><input style="width:100%;" type="text" name="attr_weight" title="@{repeating_equipment_$X_weight}" value="0" /></td>
|
|
<td style="width:10%;"><input style="width:100%;" 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: 70px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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 class="sheet-input-medium" type="text" name="attr_normal_load" title="@{normal_load} Enter the maximum amount for a normal load." value="0" /><br>Normal
|
|
<input type="checkbox" name="attr_current_encumbrance" value="0" checked="checked" readonly="readonly" /></td>
|
|
<td><input class="sheet-input-medium" type="text" name="attr_heavy_load" title="@{heavy_load} Enter the maximum amount for a heavy load." value="0" /><br>Heavy
|
|
<input type="checkbox" name="attr_current_encumbrance" value="1" readonly="readonly" /></td>
|
|
<td><input class="sheet-input-medium" type="text" name="attr_very_heavy_load" title="@{very_heavy_load} Enter the maximum amount for a very heavy load." value="0" /><br>Very Heavy
|
|
<input type="checkbox" name="attr_current_encumbrance" value="2" readonly="readonly" /></td>
|
|
<td><input class="sheet-input-medium" type="text" name="attr_max_load" title="@{max_load} Enter the minimum amount for a max/encumbered load." 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>
|
|
</table>
|
|
</td>
|
|
<td style="width:10%;" class="sheet-right">Equipment:</td>
|
|
<td style="width:7%;"><input style="width:100%;" type="text" name="attr_total_equipment_weight" title="@{total_equipment_weight}" value="0" readonly="readonly" /></td>
|
|
<td style="width:10%;"><input style="width:100%;" type="text" name="attr_total_equipment_cost" title="@{total_equipment_cost}" value="0" readonly="readonly" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="sheet-right">Armor:</td>
|
|
<td><input style="width:100%;" type="text" name="attr_total_armor_weight" title="@{total_armor_weight}" value="0" readonly="readonly" /></td>
|
|
<td><input style="width:100%;" type="text" name="attr_total_armor_cost" title="@{total_armor_cost}" value="0" readonly="readonly" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="sheet-right">Weapons:</td>
|
|
<td><input style="width:100%;" type="text" name="attr_total_weapon_weight" title="@{total_weapon_weight}" value="0" readonly="readonly" /></td>
|
|
<td><input style="width:100%;" type="text" name="attr_total_weapon_cost" title="@{total_weapon_cost}" value="0" readonly="readonly" /></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="sheet-right">Coins:</td>
|
|
<td><input style="width:100%;" type="text" 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 style="width:100%;" type="text" name="attr_total_weight" title="@{total_weight}" value="0" readonly="readonly" /></td>
|
|
<td><input style="width:100%;" type="text" 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: 35px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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}" value="" placeholder="Ability Name" /><br>Name</td>
|
|
<td style="width:44%;"><textarea name="attr_short_description" title="@{repeating_ability_$X_short_description}" value="" 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_max" title="@{repeating_ability_$X_max}" value="0" class="sheet-input-small" /><br>Max</td>
|
|
<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} {{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: 70px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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: 70px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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-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: 35px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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>
|
|
</tr>
|
|
<tr>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_current" title="@{spells_lvl_1_current}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_max" title="@{spells_lvl_1_max}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_current" title="@{spells_lvl_1_current}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_max" title="@{spells_lvl_1_max}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_current" title="@{spells_lvl_1_current}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_max" title="@{spells_lvl_1_max}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_current" title="@{spells_lvl_1_current}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_max" title="@{spells_lvl_1_max}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_current" title="@{spells_lvl_1_current}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_max" title="@{spells_lvl_1_max}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_current" title="@{spells_lvl_1_current}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_max" title="@{spells_lvl_1_max}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_current" title="@{spells_lvl_1_current}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_max" title="@{spells_lvl_1_max}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_current" title="@{spells_lvl_1_current}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_max" title="@{spells_lvl_1_max}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_current" title="@{spells_lvl_1_current}" value="0" style="width:3em;" /></td>
|
|
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_1_max" title="@{spells_lvl_1_max}" value="0" style="width:3em;" /></td>
|
|
</tr>
|
|
<tr class="sheet-to-hit">
|
|
<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-sect">
|
|
<fieldset class="repeating_spells">
|
|
<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="%{selected|repeating_spells_$X_roll}" value="@{macro-text}"></button></td>
|
|
<td style="width:5%;"><input type="text" name="attr_level" title="@{repeating_spells_$X_level}" style="width:100%; height:1.8em;" value="0" /><br>Lvl</td>
|
|
<td style="width:20%;" colspan="2"><input type="text" name="attr_name" title="@{repeating_spells_$X_name}" style="width:100%; height:1.8em;" value="" placeholder="Spell Name" /><br>Name</td>
|
|
<td style="width:15%;" colspan="2"><input type="text" name="attr_school" title="@{repeating_spells_$X_school}" style="width:100%; height:1.8em;" value="N/A" /><br>School</td>
|
|
<td style="width:10%;"><input type="text" name="attr_range" title="@{repeating_spells_$X_range}" style="width:100%; height:1.8em;" value="N/A" /><br>Range</td>
|
|
<td style="width:10%;"><input type="text" name="attr_duration" title="@{repeating_spells_$X_duration}" style="width:100%; height:1.8em;" value="N/A" /><br>Duration</td>
|
|
<td style="width:10%;"><input type="text" name="attr_aoe" title="@{repeating_spells_$X_aoe}" style="width:100%; height:1.8em;" value="N/A" /><br>Area</td>
|
|
<td style="width:5%;"><input type="text" name="attr_components" title="@{repeating_spells_$X_components}" style="width:100%; height:1.8em;" value="N/A" /><br>Comp</td>
|
|
<td style="width:5%;"><input type="text" name="attr_ct" title="@{repeating_spells_$X_ct}" style="width:100%; height:1.8em;" value="N/A" /><br>CT</td>
|
|
<td style="width:5%;"><input type="text" name="attr_save" title="@{repeating_spells_$X_save}" style="width:100%; height:1.8em;" value="N/A" /><br>Save</td>
|
|
<td style="width:10%;"><textarea name="attr_macro-text" title="@{repeating_spells_$X_macro-text}" class="sheet-macro-text" style="width:90%; height:1em;" >&{template:general} {{name=@{character_name}}} {{subtag=Casts: @{name}}} {{Range:=@{range}}} {{Duration:=@{duration}}} {{AOE:=@{aoe}}} {{Save:=@{save}}}</textarea><br>Macro-Text</td>
|
|
</tr>
|
|
</table>
|
|
<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: 70px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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">
|
|
<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: 70px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;cursor: pointer;z-index: 1;" checked="checked" /><span></span>
|
|
<div class="sheet-table-row sheet-sect">
|
|
<textarea name="attr_spellsNotes" title="@{spellsNotes}" placeholder="Spells Notes"></textarea>
|
|
</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: 35px;height: 16px;position: relative;top: 0;left: 0;margin: -32px;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>
|
|
<div class="sheet-footer">
|
|
<div class="sheet-table sheet-text-small">
|
|
<div class="sheet-table-row">
|
|
<span class="sheet-data sheet-center">Original Author: Adam Ness | Contributions by: Vince, & Roll20 Community. | Version <i>1.13.16'</i></span>
|
|
</div>
|
|
<div class="sheet-table-row">
|
|
<span class="sheet-data sheet-center">Questions/feedback? Please use the Character Sheets forum:<input type="text" style="border:none; line-height:12px; width:256px;" value="https://app.roll20.net/forum/post/2791950/ad-and-d-1e-update-beta" /></span>
|
|
</div>
|
|
</div>
|
|
<div class="sheet-options sheet-text-small">
|
|
Background:
|
|
<input type="checkbox" class="sheet-useBackground" name="attr_background" value="1" title="No background image." checked="checked" />Off
|
|
<input type="checkbox" class="sheet-useBackground" name="attr_background" value="2" title="Enable background image." />On
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="sheet-roll_templates">
|
|
<!-- Attack Roll Template -->
|
|
<rolltemplate class="sheet-rolltemplate-attacks">
|
|
<table class="sheet-rolltemplate-attacks">
|
|
{{#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 attack1 attack2 attack3 attack4 damage1vsSM damage2vsSM damage3vsSM damage4vsSM damage1vsL damage2vsL damage3vsL damage4vsL ToHitAC-10to0 ToHitAC1to10 WeaponNotes}}
|
|
<tr><td><span class="sheet-tcat">{{key}} = </span>{{value}}</td></tr>
|
|
{{/allprops() name subtag attack1 attack2 attack3 attack4 damage1vsSM damage2vsSM damage3vsSM damage4vsSM damage1vsL damage2vsL damage3vsL damage4vsL ToHitAC-10to0 ToHitAC1to10 WeaponNotes}}
|
|
|
|
{{#WeaponNotes}}<tr><td class="sheet-text">**Notes:** {{WeaponNotes}}</td></tr>{{/WeaponNotes}}
|
|
</table>
|
|
</rolltemplate>
|
|
<!-- General Roll Template -->
|
|
<rolltemplate class="sheet-rolltemplate-general">
|
|
<table class="sheet-rolltemplate-general">
|
|
{{#name}}<tr><th colspan="2">{{name}}</th></tr>{{/name}}
|
|
{{#subtag}}<tr><td colspan="2" class="sheet-subheader">{{subtag}}</td></tr>{{/subtag}}
|
|
|
|
{{#allprops() name subtag}}
|
|
<tr><td style="vertical-align:middle;"><span class="sheet-tcat">{{key}}</span></td><td>{{value}}</td></tr>
|
|
{{/allprops() name subtag}}
|
|
</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.0',
|
|
lastUpdate = 1448523710,
|
|
|
|
queuedUpdates = {}, //< Used for delaying saves till the last moment.
|
|
|
|
log = function(){
|
|
_.each(arguments,function(m){
|
|
switch(typeof m){
|
|
case 'string':
|
|
console.log('<TAS> :: '+m);
|
|
break;
|
|
case 'number':
|
|
console.log('<TAS> :: [number]: '+m);
|
|
break;
|
|
default:
|
|
console.log('<TAS> :: ['+typeof m +']:');
|
|
console.log(m);
|
|
console.log('<TAS> :: =========================================================');
|
|
}
|
|
});
|
|
},
|
|
|
|
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,
|
|
writeable: 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){
|
|
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();
|
|
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;
|
|
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;
|
|
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);
|
|
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 = [],
|
|
|
|
repAttrs = function(){
|
|
attrNames = namesFromArgs(arguments,attrNames);
|
|
return this;
|
|
},
|
|
repFields = function(){
|
|
fieldNames = namesFromArgs(arguments,fieldNames);
|
|
return this;
|
|
},
|
|
repReduce = function(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(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(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(final, context) {
|
|
operations.push({
|
|
type: 'tap',
|
|
final: (final && _.isFunction(final) && final) || _.noop,
|
|
context: context || {}
|
|
});
|
|
return this;
|
|
},
|
|
repExecute = function(){
|
|
var rowSet = {},
|
|
attrSet = {},
|
|
fieldIds = [],
|
|
fullFieldNames = [];
|
|
|
|
// 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();
|
|
});
|
|
});
|
|
};
|
|
|
|
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,
|
|
|
|
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[destination]=t;
|
|
})
|
|
.execute();
|
|
};
|
|
|
|
console.log('-=> TheAaronSheet v'+version+' <=- ['+(new Date(lastUpdate*1000))+']');
|
|
|
|
return {
|
|
repeatingSimpleSum: repeatingSimpleSum,
|
|
repeating: repeating
|
|
};
|
|
}());
|
|
|
|
/* ---- END: TheAaronSheet.js ---- */
|
|
|
|
on('change:repeating_equipment:weight change:repeating_equipment:cost change:repeating_equipment:quantity change:repeating_equipment:carried remove:repeating_equipment', function(){
|
|
TAS.repeating('equipment')
|
|
.attrs('total_equipment_weight','total_equipment_cost')
|
|
.fields('item','quantity','weight','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;
|
|
m.desc.push(r.item+(r.I.quantity>1 ? ' (x'+r.S.quantity+')' : ''));
|
|
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:weight change:repeating_weapon:quantity change:repeating_weapon:cost 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;
|
|
m.desc.push(r.name+(r.I.quantity>1 ? ' (x'+r.S.quantity+')' : ''));
|
|
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('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: (+values.pp + +values.gp + +values.ep + +values.sp + +values.cp),
|
|
total_armor_weight: (+values.armor_weight),
|
|
total_armor_cost: Number(+values.armor_cost).toFixed(2)
|
|
});
|
|
});
|
|
});
|
|
|
|
on('change:total_armor_weight change:total_weapon_weight change:total_coin_weight change:total_equipment_weight change:repeating_equipment:weight change:repeating_equipment:cost change:repeating_equipment:quantity change:repeating_equipment:carried remove:repeating_equipment change:repeating_weapon:weight change:repeating_weapon:quantity change:repeating_weapon:cost 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: (+values.total_armor_weight + +values.total_weapon_weight + +values.total_coin_weight + +values.total_equipment_weight),
|
|
total_cost: Number(+values.total_armor_cost + +values.total_weapon_cost + +values.total_equipment_cost).toFixed(2)
|
|
});
|
|
});
|
|
});
|
|
|
|
/* check and set encumbrance */
|
|
on('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=====");}
|
|
});
|
|
});
|
|
|
|
</script> |