mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 19:52:29 +00:00
1384 lines
77 KiB
HTML
1384 lines
77 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: 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="@{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: 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-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: 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">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: 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" 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="0" /><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: 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="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: 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} {{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: 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 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: 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;" 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" /></td>
|
||
<td style="width:7%;"><input type="number" name="attr_quantity" title="@{repeating_equipment_$X_quantity}" min="0" value="0" /></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: 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 class="sheet-input-medium" type="text" name="attr_normal_load" title="@{normal_load} Enter the maximum amount for a normal load(default values based off of STR 8-11)." value="350" /><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(default values based off of STR 8-11)." value="700" /><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(default values based off of STR 8-11)." value="1050" /><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} Minimum amount for a max/encumbered load(default values based off of STR 8-11)." 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: 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}" 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: 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-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>
|
||
</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_2_current" title="@{spells_lvl_2_current}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_2_max" title="@{spells_lvl_2_max}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_3_current" title="@{spells_lvl_3_current}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_3_max" title="@{spells_lvl_3_max}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_4_current" title="@{spells_lvl_4_current}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_4_max" title="@{spells_lvl_4_max}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_5_current" title="@{spells_lvl_5_current}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_5_max" title="@{spells_lvl_5_max}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_6_current" title="@{spells_lvl_6_current}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_6_max" title="@{spells_lvl_6_max}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_7_current" title="@{spells_lvl_7_current}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_7_max" title="@{spells_lvl_7_max}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_8_current" title="@{spells_lvl_8_current}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_8_max" title="@{spells_lvl_8_max}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" name="attr_spells_lvl_9_current" title="@{spells_lvl_9_current}" value="0" style="width:3em;" /></td>
|
||
<td><input class="sheet-input-small" type="text" 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">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: 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">
|
||
<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: 105px;height: 20px; position: relative; top: 0; left: 0;margin: 0 -20px 0 -80px; 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: 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>
|
||
<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>2.28.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 {{#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}}
|
||
<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}}
|
||
|
||
{{#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 {{#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 color}}
|
||
<tr><td style="vertical-align:middle;"><span class="sheet-tcat">{{key}}</span></td><td>{{value}}</td></tr>
|
||
{{/allprops() name subtag color}}
|
||
</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.1',
|
||
lastUpdate = 1453794214,
|
||
|
||
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 momment.
|
||
|
||
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){
|
||
console.log(
|
||
'%c '+label+': %c '+message,
|
||
'background-color: '+lBGColor+';color: '+lTxtColor+'; font-weight:bold;',
|
||
'background-color: '+mBGColor+';color: '+mTxtColor+';'
|
||
);
|
||
};
|
||
return function(){
|
||
if('TAS'===key || config.logging[key]){
|
||
dataLogger(coloredLoggerFunction,function(m){console.log(m);},_.toArray(arguments));
|
||
}
|
||
};
|
||
},
|
||
|
||
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;
|
||
},
|
||
|
||
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);
|
||
return new Function('cb','ctx','TASlog',
|
||
"return function TAS_CALLSTACK_"+ctxref+"(){"+
|
||
"TASlog('Entering: '+(cb.name||'(anonymous function)'));"+
|
||
"cb.apply(ctx||{},arguments);"+
|
||
"TASlog('Exiting: '+(cb.name||'(anonymous function)'));"+
|
||
"};")(cb,ctx,log);
|
||
}(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,
|
||
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 = [],
|
||
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[destination]=t;
|
||
})
|
||
.execute();
|
||
};
|
||
|
||
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;');
|
||
|
||
|
||
return {
|
||
/* Repeating Sections */
|
||
repeatingSimpleSum: repeatingSimpleSum,
|
||
repeating: repeating,
|
||
|
||
/* Configuration */
|
||
config: setConfigOption,
|
||
|
||
/* Debugging */
|
||
callback: wrapCallback,
|
||
callstack: logCallstack,
|
||
debugMode: debugMode,
|
||
_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('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: (parseInt(values.pp) + parseInt(values.gp) + parseInt(values.ep) + parseInt(values.sp) + parseInt(values.cp)),
|
||
total_armor_weight: (parseInt(values.armor_weight)),
|
||
total_armor_cost: (parseInt(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 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: (parseInt(values.total_armor_weight) + parseInt(values.total_weapon_weight) + parseInt(values.total_coin_weight) + parseInt(values.total_equipment_weight)),
|
||
total_cost: (parseInt(values.total_armor_cost) + parseInt(values.total_weapon_cost) + parseInt(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>
|