· 6 years ago · Aug 12, 2019, 12:02 PM
1 <!-- WARHAMMER FANTASY ROLEPLAY 4th EDITION CHARACTER SHEET -->
2 <!-- Authors; Arioch1973, Alondaar, Havoc, Oxycutor, Realitor, Medieve -->
3 <!-- Version 1.7 -->
4
5<!-- Character Sheet Start -->
6
7
8 <!--- Header ---->
9 <div class="sheet-col" style="text-align:center; width:100%">
10 <img src="https://i.imgur.com/GWtPsPd.png" style="max-height: 75px;" />
11 </div>
12 <br><br>
13 <!-- for future, possible GM tabs
14 <input type='radio' name="attr_main_show" class="sheet-tab sheet-tabPC" value="1" checked/>
15<label class="sheet-tab" >PC</label>
16 <input type='radio' name="attr_main_show" class="sheet-tab sheet-tabGM" value="2" />
17<label class="sheet-tab" >GM</label>
18 <br>
19 <br>
20
21<div class="sheet-tab-content sheet-tabPC"> -->
22<div>
23 <input type='radio' name="attr_npc-show" class="sheet-tab sheet-tabMain" value="1" checked/>
24<label class="sheet-tab" >Main</label>
25<input type='radio' name="attr_npc-show" class="sheet-tab sheet-tabSkillsTalents" value="2" />
26<label class="sheet-tab" >Skills & Talents</label>
27 <input type='radio' name="attr_npc-show" class="sheet-tab sheet-tabGearMagic" value="3" />
28<label class="sheet-tab" >Gear & Magic</label>
29 <input type='radio' name="attr_npc-show" class="sheet-tab sheet-tabInformation" value="4" />
30<label class="sheet-tab" >Information</label>
31<input type='radio' name="attr_npc-show" class="sheet-tab sheet-tabExperience" value="5" />
32<label class="sheet-tab" >Experience</label>
33<input type='radio' name="attr_npc-show" class="sheet-arrow sheet-tabAll" style="width:30px" value="99" /><span></span>
34
35
36<div class="sheet-tab-content sheet-tabMain">
37<div class="sheet-wrapper">
38 <div class="sheet-col" style="text-align:center; width:100%">
39 </div>
40 <table>
41 <tr>
42 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Name" >Name</label>
43 </td>
44 <td style="text-align:center" COLSPAN=3><input type="text" name="attr_character_name" />
45 </td>
46 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Species" >Species</label>
47 </td>
48 <td style="text-align:center; width:15%"><input type="text" name="attr_character_Species" />
49 </td>
50 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Class">Class</label>
51 </td>
52 <td style="text-align:center; width:15%"><input type="text" name="attr_character_Class" />
53 </td>
54 </tr>
55 <tr>
56 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Career">Career</label>
57 </td>
58 <td style="text-align:center" COLSPAN=3><input type="text" name="attr_character_Career" />
59 </td>
60 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Career-tier" >Career Tier</label>
61 </td>
62 <td style="text-align:center" COLSPAN=3><input type="text" name="attr_character_CareerTier" />
63 </td>
64 </tr>
65 <tr>
66 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Career-Path" >Career Path</label>
67 </td>
68 <td style="text-align:center; width:15%" COLSPAN=5><input type="text" name="attr_character_CareerPath" />
69 </td>
70 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Status" >Status</label>
71 </td>
72 <td style="text-align:center; width:15%"><input type="text" name="attr_character_Status" />
73 </td>
74 </tr>
75 <tr>
76 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Age" >Age</label>
77 </td>
78 <td style="text-align:center; width:15%"><input type="text" name="attr_character_Age" />
79 </td>
80 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Height" >Height</label>
81 </td>
82 <td style="text-align:center; width:15%"><input type="text" name="attr_character_Height" />
83 </td>
84 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Hair" >Hair</label>
85 </td>
86 <td style="text-align:center; width:15%"><input type="text" name="attr_character_Hair" />
87 </td>
88 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Eyes">Eyes</label>
89 </td>
90 <td style="text-align:center; width:15%"><input type="text" name="attr_character_Eyes" />
91 </td>
92 </tr>
93 <tr>
94 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Nationality" >Nationality</label>
95 </td>
96 <td style="text-align:center; width:15%"><input type="text" name="attr_character_Nationality" />
97 </td>
98 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Birthplace" >Birthplace</label>
99 </td>
100 <td style="text-align:center; width:15%"><input type="text" name="attr_character_Birthplace" />
101 </td>
102 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Religion" >Religion</label>
103 </td>
104 <td style="text-align:center; width:15%"><input type="text" name="attr_character_Religion" />
105 </td>
106 <td style="text-align:Right; width:10%"><label style="text-align:Right" data-i18n="Star-sign" >Star Sign</label>
107 </td>
108 <td style="text-align:center; width:15%"><input type="text" name="attr_character_StarSign" />
109 </td>
110 </tr>
111 </table>
112
113<!-- Characteristics -->
114 <hr>
115
116 <div class="sheet-col sheet-tablealt" style="width:50%">
117 <div class="sheet-tablewrapper">
118 <table>
119 <tr>
120 <th COLSPAN=11><div class="sheet-bluelabel"><label style="text-align:center" data-i18n="CHARACTERISTICS">CHARACTERISTICS</label></div>
121 </th>
122 </tr>
123
124 <tr class="sheet-bluelabel">
125 <td style="text-align:center; width:16.5%">
126 </td>
127 <td style="text-align:left; width:8.3%"><button type="roll" name="roll_WS" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Weapon Skill}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Current_WS} ]]}}"><label class="labelbutton" style="text-align:center" data-i18n="WS">WS</label></button>
128 </td>
129 <td style="text-align:left; width:8.3%"><button type="roll" name="roll_BS" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Ballistic Skill}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Current_BS} ]]}}"> <label class="labelbutton" style="text-align:center" data-i18n="BS">BS</label></button>
130 </td>
131 <td style="text-align:center; width:8.3%"><button type="roll" name="roll_S" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Strength}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Current_S} ]]}}"><label class="labelbutton" style="text-align:center" data-i18n="S" >S</label></button>
132 </td>
133 <td style="text-align:center; width:8.3%"><button type="roll" name="roll_T" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Toughness}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Current_T} ]]}}"><label class="labelbutton" style="text-align:center" data-i18n="T" >T</label></button>
134 </td>
135 <td style="text-align:center; width:8.3%"><button type="roll" name="roll_I" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Initiative}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Current_I} ]]}}"><label class="labelbutton" style="text-align:center" data-i18n="I" >I</label></button>
136 </td>
137 <td style="text-align:center; width:8.3%"><button type="roll" name="roll_Ag" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Agility}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Current_Ag} ]]}}"><label class="labelbutton" style="text-align:center" data-i18n="Ag" >Ag</label></button>
138 </td>
139 <td style="text-align:center; width:8.3%"><button type="roll" name="roll_Dex" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Dexterity}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Current_Dex} ]]}}"><label class="labelbutton" style="text-align:center" data-i18n="Dex" >Dex</label></button>
140 </td>
141 <td style="text-align:center; width:8.3%"><button type="roll" name="roll_Int" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Intelligence}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Current_Int} ]]}}"><label class="labelbutton" style="text-align:center" data-i18n="Int" >Int</label></button>
142 </td>
143 <td style="text-align:center; width:8.3%"><button type="roll" name="roll_WP" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Willpower}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Current_WP} ]]}}"><label class="labelbutton" style="text-align:center" data-i18n="WP">WP</label></button>
144 </td>
145 <td style="text-align:center; width:8.3%"><button type="roll" name="roll_Fel" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Fellowship}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Current_FEL} ]]}}"><label class="labelbutton" style="text-align:center" data-i18n="Fel">Fel</label></button>
146 </td>
147 </tr>
148 <tr>
149
150 <td style="text-align:center; width:16.5%"><label style="text-align:center" data-i18n="Career" >Career</label>
151 </td>
152 <td style="text-align:left; width:8.3%"><input type="checkbox" value="1" name="attr_WS_CareerAdvance" /><span style="text-align:center"></span>
153 </td>
154 <td style="text-align:left; width:8.3%"><input type="checkbox" value="1" name="attr_BS_CareerAdvance" /><span style="text-align:center"></span>
155 </td>
156 <td style="text-align:left; width:8.3%"><input type="checkbox" value="1" name="attr_S_CareerAdvance" /><span style="text-align:center"></span>
157 </td>
158 <td style="text-align:left; width:8.3%"><input type="checkbox" value="1" name="attr_T_CareerAdvance" /><span style="text-align:center"></span>
159 </td>
160 <td style="text-align:left; width:8.3%"><input type="checkbox" value="1" name="attr_I_CareerAdvance" /><span style="text-align:center"></span>
161 </td>
162 <td style="text-align:left; width:8.3%"><input type="checkbox" value="1" name="attr_Ag_CareerAdvance" /><span style="text-align:center"></span>
163 </td>
164 <td style="text-align:left; width:8.3%"><input type="checkbox" value="1" name="attr_Dex_CareerAdvance" /><span style="text-align:center"></span>
165 </td>
166 <td style="text-align:left; width:8.3%"><input type="checkbox" value="1" name="attr_Int_CareerAdvance" /><span style="text-align:center"></span>
167 </td>
168 <td style="text-align:left; width:8.3%"><input type="checkbox" value="1" name="attr_WP_CareerAdvance" /><span style="text-align:center"></span>
169 </td>
170 <td style="text-align:left; width:8.3%"><input type="checkbox" value="1" name="attr_Fel_CareerAdvance" /><span style="text-align:center"></span>
171 </td>
172 </tr>
173 <tr>
174 <td style="text-align:center; width:16.5%"><label style="text-align:center" data-i18n="Initial" >Initial</label>
175 </td>
176 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_WS" style="text-align:center" value="0"/>
177 </td>
178 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_BS" style="text-align:center" value="0"/>
179 </td>
180 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_S" style="text-align:center" value="0"/>
181 </td>
182 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_T" style="text-align:center" value="0"/>
183 </td>
184 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_I" style="text-align:center" value="0"/>
185 </td>
186 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_Ag" style="text-align:center" value="0"/>
187 </td>
188 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_Dex" style="text-align:center" value="0"/>
189 </td>
190 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_Int" style="text-align:center" value="0"/>
191 </td>
192 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_WP" style="text-align:center" value="0"/>
193 </td>
194 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_Fel" style="text-align:center" value="0"/>
195 </td>
196 </tr>
197 <tr>
198 <td style="text-align:center; width:16.5%"><label style="text-align:center" data-i18n="Talents" >Talents</label>
199 </td>
200 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Talent_WS" style="text-align:center" value="0"/>
201 </td>
202 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Talent_BS" style="text-align:center" value="0"/>
203 </td>
204 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Talent_S" style="text-align:center" value="0"/>
205 </td>
206 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Talent_T" style="text-align:center" value="0"/>
207 </td>
208 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Talent_I" style="text-align:center" value="0"/>
209 </td>
210 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Talent_Ag" style="text-align:center" value="0"/>
211 </td>
212 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Talent_Dex" style="text-align:center" value="0"/>
213 </td>
214 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Talent_Int" style="text-align:center" value="0"/>
215 </td>
216 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Talent_WP" style="text-align:center" value="0"/>
217 </td>
218 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Talent_Fel" style="text-align:center" value="0"/>
219 </td>
220 </tr>
221 <tr>
222 <td style="text-align:center; width:16.5%"><label style="text-align:center" data-i18n="Advances" >Advances</label>
223 </td>
224 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Advances_WS" style="text-align:center" value="0"/>
225 </td>
226 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Advances_BS" style="text-align:center" value="0"/>
227 </td>
228 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Advances_S" style="text-align:center" value="0"/>
229 </td>
230 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Advances_T" style="text-align:center" value="0"/>
231 </td>
232 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Advances_I" style="text-align:center" value="0"/>
233 </td>
234 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Advances_Ag" style="text-align:center" value="0"/>
235 </td>
236 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Advances_Dex" style="text-align:center" value="0"/>
237 </td>
238 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Advances_Int" style="text-align:center" value="0"/>
239 </td>
240 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Advances_WP" style="text-align:center" value="0"/>
241 </td>
242 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Advances_Fel" style="text-align:center" value="0"/>
243 </td>
244 </tr>
245 <tr>
246 <td style="text-align:center; width:16.5%"><label style="text-align:center" data-i18n="Modifier" >Modifier</label>
247 </td>
248 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_WS" style="text-align:center" value="0"/>
249 </td>
250 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_BS" style="text-align:center" value="0"/>
251 </td>
252 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_S" style="text-align:center" value="0"/>
253 </td>
254 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_T" style="text-align:center" value="0"/>
255 </td>
256 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_I" style="text-align:center" value="0"/>
257 </td>
258 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_Ag" style="text-align:center" value="0"/>
259 </td>
260 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_Dex" style="text-align:center" value="0"/>
261 </td>
262 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_Int" style="text-align:center" value="0"/>
263 </td>
264 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_WP" style="text-align:center" value="0"/>
265 </td>
266 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_Fel" style="text-align:center" value="0"/>
267 </td>
268 </tr>
269 <tr>
270 <td style="text-align:center; width:16.5%"><label style="text-align:center" data-i18n="Current" >Current</label>
271 </td>
272 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_WS" style="text-align:center" disabled value="floor(@{Initial_WS} + @{Talent_WS} + @{Advances_WS} + @{Modifier_WS})"/>
273 </td>
274 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_BS" style="text-align:center" disabled value="floor(@{Initial_BS} + @{Talent_BS} + @{Advances_BS} + @{Modifier_BS})"/>
275 </td>
276 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_S" style="text-align:center" disabled value="floor(@{Initial_S} + @{Talent_S} + @{Advances_S} + @{Modifier_S})"/>
277 </td>
278 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_T" style="text-align:center" disabled value="floor(@{Initial_T} + @{Talent_T} + @{Advances_T} + @{Modifier_T})"/>
279 </td>
280 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_I" style="text-align:center" disabled value="floor(@{Initial_I} + @{Talent_I} + @{Advances_I} + @{Modifier_I})"/>
281 </td>
282 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_Ag" style="text-align:center" disabled value="floor(@{Initial_Ag} + @{Talent_Ag} + @{Advances_Ag} + @{Modifier_Ag})"/>
283 </td>
284 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_Dex" style="text-align:center" disabled value="floor(@{Initial_Dex} + @{Talent_Dex} + @{Advances_Dex} + @{Modifier_Dex})"/>
285 </td>
286 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_Int" style="text-align:center" disabled value="floor(@{Initial_Int} + @{Talent_Int} + @{Advances_Int} + @{Modifier_Int})"/>
287 </td>
288 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_WP" style="text-align:center" disabled value="floor(@{Initial_WP} + @{Talent_WP} + @{Advances_WP} + @{Modifier_WP})"/>
289 </td>
290 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_Fel" style="text-align:center" disabled value="floor(@{Initial_Fel} + @{Talent_Fel} + @{Advances_Fel} + @{Modifier_Fel})"/>
291 </td>
292 </tr>
293
294<!-- Characteristic Bonuses -->
295 <tr>
296 <th COLSPAN=11><label style="text-align:center" data-i18n="CHARACTERISTICS BONUSES">CHARACTERISTICS BONUSES</label>
297 </th>
298 </tr>
299 <tr>
300 <td style="text-align:center; width:16.5%"><label style="text-align:center" data-i18n="Initial" >Initial</label>
301 </td>
302 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_WSB" style="text-align:center" disabled value="floor((@{Initial_WS} + @{Talent_WS} + @{Advances_WS} + @{Modifier_WS})/10)"/>
303 </td>
304 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_BSB" style="text-align:center" disabled value="floor((@{Initial_BS} + @{Talent_BS} + @{Advances_BS} + @{Modifier_BS})/10)"/>
305 </td>
306 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_SB" style="text-align:center" disabled value="floor((@{Initial_S} + @{Talent_S} + @{Advances_S} + @{Modifier_S})/10)"/>
307 </td>
308 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_TB" style="text-align:center" disabled value="floor((@{Initial_T} + @{Talent_T} + @{Advances_T} + @{Modifier_T})/10)"/>
309 </td>
310 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_IB" style="text-align:center" disabled value="floor((@{Initial_I} + @{Talent_I} + @{Advances_I} + @{Modifier_I})/10)"/>
311 </td>
312 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_AgB" style="text-align:center" disabled value="floor((@{Initial_Ag} + @{Talent_Ag} + @{Advances_Ag} + @{Modifier_Ag})/10)"/>
313 </td>
314 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_DexB" style="text-align:center" disabled value="floor((@{Initial_Dex} + @{Talent_Dex} + @{Advances_Dex} + @{Modifier_Dex})/10)"/>
315 </td>
316 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_IntB" style="text-align:center" disabled value="floor((@{Initial_Int} + @{Talent_Int} + @{Advances_Int} + @{Modifier_Int})/10)"/>
317 </td>
318 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_WPB" style="text-align:center" disabled value="floor((@{Initial_WP} + @{Talent_WP} + @{Advances_WP} + @{Modifier_WP})/10)"/>
319 </td>
320 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Initial_FelB" style="text-align:center" disabled value="floor((@{Initial_Fel} + @{Talent_Fel} + @{Advances_Fel} + @{Modifier_Fel})/10)"/>
321 </td>
322 </tr>
323 <tr>
324 <td style="text-align:center; width:16.5%"><label style="text-align:center" data-i18n="Modifier" >Modifier</label>
325 </td>
326 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_WSB" style="text-align:center" value="0"/>
327 </td>
328 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_BSB" style="text-align:center" value="0"/>
329 </td>
330 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_SB" style="text-align:center" value="0"/>
331 </td>
332 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_TB" style="text-align:center" value="0"/>
333 </td>
334 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_IB" style="text-align:center" value="0"/>
335 </td>
336 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_AgB" style="text-align:center" value="0"/>
337 </td>
338 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_DexB" style="text-align:center" value="0"/>
339 </td>
340 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_IntB" style="text-align:center" value="0"/>
341 </td>
342 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_WPB" style="text-align:center" value="0"/>
343 </td>
344 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Modifier_FelB" style="text-align:center" value="0"/>
345 </td>
346 </tr>
347 <tr>
348 <td style="text-align:center; width:16.5%"><label style="text-align:center" data-i18n="Current" >Current</label>
349 </td>
350 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_WSB" style="text-align:center" disabled value="floor(@{Initial_WSB} + @{Modifier_WSB})"/>
351 </td>
352 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_BSB" style="text-align:center" disabled value="floor(@{Initial_BSB} + @{Modifier_BSB})"/>
353 </td>
354 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_SB" style="text-align:center" disabled value="floor(@{Initial_SB} + @{Modifier_SB})"/>
355 </td>
356 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_TB" style="text-align:center" disabled value="floor(@{Initial_TB} + @{Modifier_TB})"/>
357 </td>
358 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_IB" style="text-align:center" disabled value="floor(@{Initial_IB} + @{Modifier_IB})"/>
359 </td>
360 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_AgB" style="text-align:center" disabled value="floor(@{Initial_AgB} + @{Modifier_AgB})"/>
361 </td>
362 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_DexB" style="text-align:center" disabled value="floor(@{Initial_DexB} + @{Modifier_DexB})"/>
363 </td>
364 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_IntB" style="text-align:center" disabled value="floor(@{Initial_IntB} + @{Modifier_IntB})"/>
365 </td>
366 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_WPB" style="text-align:center" disabled value="floor(@{Initial_WPB} + @{Modifier_WPB})"/>
367 </td>
368 <td style="text-align:center; width:8.3%"><input type="number" name="attr_Current_FelB" style="text-align:center" disabled value="floor(@{Initial_FelB} + @{Modifier_FelB})"/>
369 </td>
370 </tr>
371 </table>
372 </div>
373 </div>
374
375<!-- Fate, Fortune, Resilience, Resolve, Experience -->
376 <div class="sheet-col" style="width:2%">
377 </div>
378 <div class="sheet-col" style="width:46%">
379 <div>
380 <table style="width:100%">
381 <tr>
382 <th COLSPAN=2><label style="text-align:center" data-i18n="FATE" >FATE</label>
383 </th>
384 <th >
385 </th>
386 <th COLSPAN=2><label style="text-align:center" data-i18n="RESILIENCE">RESILIENCE</label>
387 </th>
388 <th >
389 </th>
390 <th COLSPAN=2><label style="text-align:center" data-i18n="EXPERIENCE" >EXPERIENCE</label>
391 </th>
392 </tr>
393 <tr>
394 <td style="text-align:center; width:18%"><label style="text-align:center" data-i18n="Fate" >Fate</label>
395 </td>
396 <td style="text-align:center; width:14%"><input type="number" name="attr_character_Fate" style="text-align:center" value="0"/>
397 </td>
398 <td style="text-align:center; width:2%">
399 </td>
400 <td style="text-align:center; width:18%"><label style="text-align:center" data-i18n="Resilience" >Resilience</label>
401 </td>
402 <td style="text-align:center; width:14%"><input type="number" name="attr_character_Resilience" style="text-align:center" value="0"/>
403 </td>
404 <td style="text-align:center; width:2%">
405 </td>
406 <td style="text-align:center; width:12%"><label style="text-align:center" data-i18n="Total" >Total</label>
407 </td>
408 <td style="text-align:center; width:20%"><input type="number" name="attr_character_TotalExperience" style="text-align:center" value="0"/>
409 </td>
410 </tr>
411 <tr>
412 <td style="text-align:center; width:18%"><label style="text-align:center" data-i18n="Fortune">Fortune</label>
413 </td>
414 <td style="text-align:center; width:14%"><input type="number" name="attr_character_Fortune" style="text-align:center" value="0"/>
415 </td>
416 <td style="text-align:center; width:2%">
417 </td>
418 <td style="text-align:center; width:18%"><label style="text-align:center" data-i18n="Resolve">Resolve</label>
419 </td>
420 <td style="text-align:center; width:14%"><input type="number" name="attr_character_Resolve" style="text-align:center" value="0"/>
421 </td>
422 <td style="text-align:center; width:2%">
423 </td>
424 <td style="text-align:center; width:12%"><label style="text-align:center" data-i18n="Spent">Spent</label>
425 </td>
426 <td style="text-align:center; width:20%"><input type="number" name="attr_character_SpentExperience" style="text-align:center" value="0"/>
427 </td>
428 </tr>
429 <tr>
430 <td style="text-align:center; width:18%"><label style="text-align:center" data-i18n="Motivation">Motivation</label>
431 </td>
432 <td style="text-align:center; width:14%" COLSPAN=4><input type="text" name="attr_character_Motivation" style="text-align:center" value=""/>
433 </td>
434 <td style="text-align:center; width:2%">
435 </td>
436 <td style="text-align:center; width:12%"><label style="text-align:center" data-i18n="Left">Left</label>
437 </td>
438 <td style="text-align:center; width:20%"><input type="number" name="attr_character_LeftExperience" style="text-align:center" disabled value="floor(@{character_TotalExperience}-@{character_SpentExperience})"/>
439 </td>
440 </tr>
441 <tr>
442 <td style="text-align:center; width:2%">
443 </td>
444 </tr>
445 </table>
446
447<!-- Ambitiions -->
448 <table style="width:100%; text-align:left">
449 <hr>
450 <tr>
451 <th COLSPAN=2><label style="text-align:center" data-i18n="AMBITIONS" >AMBITIONS</label>
452 </th>
453 </tr>
454 <tr>
455 <td style="text-align:center; width:35%"><label style="text-align:left" data-i18n="Personal-Short-Term" >Personal Short Term</label>
456 </td>
457 <td style="text-align:center; width:65%" COLSPAN=4><input type="text" name="attr_character_ShortTermAmbition" style="text-align:center" value=""/>
458 </td>
459 </tr>
460 <tr>
461 <td style="text-align:center; width:35%"><label style="text-align:left" data-i18n="Personal-Long-Term">Personal Long Term</label>
462 </td>
463 <td style="text-align:center; width:65%" COLSPAN=4><input type="text" name="attr_character_LongTermAmbition" style="text-align:center" value=""/>
464 </td>
465 </tr>
466 <tr>
467 <td style="text-align:center; width:35%"><label style="text-align:leftr" data-i18n="Party-Short-Term">Party Short Term</label>
468 </td>
469 <td style="text-align:center; width:65%" COLSPAN=4><input type="text" name="attr_character_PartyShortAmbition" style="text-align:center" value=""/>
470 </td>
471 </tr>
472 <tr>
473 <td style="text-align:center; width:30%"><label style="text-align:leftr" data-i18n="Party-Long-Term">Party Long Term</label>
474 </td>
475 <td style="text-align:center; width:65%" COLSPAN=4><input type="text" name="attr_character_PartyLongAmbition" style="text-align:center" value=""/>
476 </td>
477 </tr>
478 </table>
479 </div>
480 </div>
481
482<!-- Movement and Encumbrance -->
483<br>
484
485<div class="sheet-col sheet-table" style="width:100%">
486 <div class="sheet-col sheet-table" style="width:25%">
487
488<!-- Movement -->
489 <div>
490 <table style="width:100%">
491 <tr>
492 <th COLSPAN=10><label style="text-align:center" data-i18n="MOVEMENT">MOVEMENT</label>
493 </th>
494 </tr>
495 <tr>
496 <td style="text-align:center; width:2%">
497 </td>
498 <td style="text-align:center; width:12%"><label style="text-align:center" data-i18n="MOVEMENT">Movement</label>
499 </td>
500 <td style="text-align:center; width:10%"><input type="number" name="attr_character_Movement" style="text-align:center" value="0"/>
501 </td>
502 <td style="text-align:center; width:2%">
503 </td>
504 <td style="text-align:center; width:12%"><label style="text-align:center" data-i18n="Walk" >Walk</label>
505 </td>
506 <td style="text-align:center; width:10%"><input type="number" name="attr_character_MovementWalk" style="text-align:center" value="0"/>
507 </td>
508 <td style="text-align:center; width:2%">
509 </td>
510 <td style="text-align:center; width:12%"><label style="text-align:center" data-i18n="Run" >Run</label>
511 </td>
512 <td style="text-align:center; width:10%"><input type="number" name="attr_character_MovementRun" style="text-align:center" value="0"/>
513 </td>
514 <td style="text-align:center; width:2%">
515 </td>
516 </tr>
517 </table><br>
518 <table style="width:100%">
519 <tr>
520 <th COLSPAN=10><label style="text-align:center" data-i18n="INITIATIVE" >INITIATIVE</label>
521 </th>
522 </tr>
523 <tr>
524 <td style="text-align:center; width:2%">
525 </td>
526 <td style="text-align:center; width:41%">
527 <select name="attr_combat_iniative_template" style="width:100%" class="sheet-input-selectbox" >
528 <option value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Initiative}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Current_I} ]]}}" data-i18n="I Test /No Tracker/">I Test (No Tracker)</option>
529 <option value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} Initiative} {{initiativeTest=[[ ?{Modifier?|0} + 1d10 + @{character_combatiniative_modifier} + @{Current_IB} &{tracker} ]]}} {{initiativeTestInitiativeBonus=[[ @{Current_IB} ]]}} {{initiativeTestTalents=[[ @{character_combatiniative_modifier} ]]}}" data-i18n="I Bonus">I Bonus</option>
530 <option value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} Initiative} {{initiativeTest=[[ ?{Modifier?|0} + 1d10 + @{character_combatiniative_modifier} + @{Current_IB} + @{Current_AgB} &{tracker} ]]}} {{initiativeTestInitiativeBonus=[[ @{Current_IB} ]]}} {{initiativeTestAgilityBonus=[[ @{Current_AgB} ]]}} {{initiativeTestTalents=[[ @{character_combatiniative_modifier} ]]}}" selected data-i18n="I+Ag Bonus">I+Ag Bonus</option>
531 </select>
532 </td>
533 <td style="text-align:center; width:2%">
534 </td>
535 <td style="text-align:center; width:10%"><input type="number" name="attr_character_combatiniative_modifier" style="text-align:center" value="0"/>
536 </td>
537 <td style="text-align:center; width:2%">
538 </td>
539 <td style="text-align:center; width:15%"><button type="roll" style="width:90%" name="roll_combatiniativetemplate" value="@{custom_roll_style}@{combat_iniative_template}"><label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label></button>
540 </td>
541 <td style="text-align:center; width:2%">
542 </td>
543 </tr>
544 </table>
545 </div>
546 </div>
547
548 <div class="sheet-col sheet-table" style="width:12%">
549 </div>
550
551<!-- Encumbrance -->
552
553 <div class="sheet-col sheet-table" style="width:48%">
554 <div>
555 <table style="width:100%">
556 <tr>
557 <th COLSPAN=12><label style="text-align:center" data-i18n="ENCUMBERANCE" >ENCUMBRANCE</label>
558 </th>
559 </tr>
560 <tr>
561 <td style="text-align:center; width:9%"><label style="text-align:center" data-i18n="Weapons" >Weapons</label>
562 </td>
563 <td style="text-align:center; width:2%">
564 </td>
565 <td style="text-align:center; width:9%"><label style="text-align:center" data-i18n="Armour" >Armour</label>
566 </td>
567 <td style="text-align:center; width:2%">
568 </td>
569 <td style="text-align:center; width:9%"><label style="text-align:center" data-i18n="Trappings" >Trappings</label>
570 </td>
571 <td style="text-align:center; width:2%">
572 </td>
573 <td style="text-align:center; width:9%"><label style="text-align:center" data-i18n="Total" >Total</label>
574 </td>
575 <td style="text-align:center; width:2%">
576 </td>
577 <td style="text-align:center; width:9%"><label style="text-align:center" data-i18n="Mod" >Mod</label>
578 </td>
579 <td style="text-align:center; width:2%">
580 </td>
581 <td style="text-align:center; width:15%"><label style="text-align:center" data-i18n="Max-Enc" >Max Enc.</label>
582 </td>
583 </tr>
584 <tr>
585 <td style="text-align:center; width:9%"><input type="number" name="attr_character_EncumbranceWeapons" style="text-align:center" value="0" readonly/>
586 </td>
587 <td style="text-align:center; width:2%">
588 </td>
589 <td style="text-align:center; width:9%"><input type="number" name="attr_character_EncumbranceArmour" style="text-align:center" value="0" readonly/>
590 </td>
591 <td style="text-align:center; width:2%">
592 </td>
593 <td style="text-align:center; width:9%"><input type="number" name="attr_character_EncumbranceTrappings" style="text-align:center" value="0" readonly/>
594 </td>
595 <td style="text-align:center; width:2%">
596 </td>
597 <td style="text-align:center; width:9%"><input type="number" name="attr_character_EncumbranceTotal" style="text-align:center" value="floor(@{character_EncumbranceWeapons}+@{character_EncumbranceArmour}+@{character_EncumbranceTrappings})" disabled />
598 </td>
599 <td style="text-align:center; width:2%">
600 </td>
601 <td style="text-align:center; width:9%"><input type="number" name="attr_character_EncumbranceMod" style="text-align:center" value="0" />
602 </td>
603 <td style="text-align:center; width:2%">
604 </td>
605 <td style="text-align:center; width:15%"><input type="number" name="attr_character_EncumbranceMax" style="text-align:center" value="floor(@{Current_SB}+@{Current_TB}+@{character_EncumbranceMod})"/ disabled>
606 </td>
607 </tr>
608 </table>
609 </div>
610 </div>
611</div>
612
613<!-- Wealth -->
614 <br><br>
615 <div class="sheet-col sheet-table" style="width:100%">
616 <div class="sheet-col" style="width:38%">
617 <table style="width:100%">
618 <tr>
619 <th COLSPAN=3><label style="text-align:center" data-i18n="WEALTH" >WEALTH</label>
620 </th>
621 </tr>
622 <tr>
623 <td style="text-align:center; width:33%"><label style="text-align:center" data-i18n="Gold Crowns" >Gold Crowns</label><img src="https://i.imgur.com/Iaa05PB.png" style="width:25px; height:25px">
624 </td>
625 <td style="text-align:center; width:33%"><label style="text-align:center" data-i18n="Silver Shillings" >Silver Shillings</label><img src="https://i.imgur.com/YGifBnd.png" style="width:22px; height:22px">
626 </td>
627 <td style="text-align:center; width:33%"><label style="text-align:center" data-i18n="Brass Pennies" >Brass Pennies</label><img src="https://i.imgur.com/3VrFgnG.png" style="width:19px; height:19px">
628 </td>
629 </tr>
630 <tr>
631 <td style="text-align:center; width:33%"><input type="number" name="attr_character_Gold" style="text-align:center; font-size:0.9em;" value="0"/>
632 </td>
633 <td style="text-align:center; width:33%"><input type="number" name="attr_character_Silver" style="text-align:center; font-size:0.9em;" value="0"/>
634 </td>
635 <td style="text-align:center; width:33%"><input type="number" name="attr_character_Brass" style="text-align:center; font-size:0.9em;" value="0"/>
636 </td>
637 </tr>
638 <tr>
639 <td style="text-align:center; width:33%"><label style="text-align:center;" data-i18n="Total" >Total</label>
640 </td>
641 <td style="text-align:center; width:33%"><input type="number" name="attr_character_TotalWealth" style="text-align:Right" value="floor(@{character_Brass} + floor(12*@{character_Silver}) + floor(240*@{character_Gold}))" disabled />
642 </td>
643 <td style="text-align:left; width:33%"><label style="text-align:left; font-size:0.8em;" >d (1GC=20/-=240d)</label>
644 </td>
645 </tr>
646 </table>
647 <!--
648 <tr>
649 <th><label style="text-align:center; font-size:0.8em;">1GC = 20/- = 240d</label></th>
650 </tr>
651 -->
652 </div>
653 <div class="sheet-col " style="width:2%">
654 </div>
655
656<!-- Wounds -->
657 <div class="sheet-col" style="width:58%">
658 <table style="width:100%">
659 <tr>
660 <th COLSPAN=8><label style="text-align:center" data-i18n="WOUNDS" >WOUNDS</label>
661 </th>
662 </tr>
663 <tr>
664 <td style="text-align:center; width:10%">
665 <select name="attr_Wounds_SB_Opt" style="width:100%" class="sheet-input-selectbox">
666 <option value="@{Current_SB}*3" >SBx3</option>
667 <option value="@{Current_SB}*2" >SBx2</option>
668 <option value="@{Current_SB}" selected >SB</option>
669 <option value="0"><b>-</b></option>
670 </select>
671 </td>
672 <td style="text-align:center; width:10%">
673 <select name="attr_Wounds_TB_Opt" style="width:100%" class="sheet-input-selectbox" >
674 <option value="@{Current_TB}*3" >TBx3</option>
675 <option value="@{Current_TB}*2" selected >TBx2</option>
676 <option value="@{Current_TB}" >TB</option>
677 <option value="0"><b>-</b></option>
678 </select>
679 </td>
680 <td style="text-align:center; width:10%">
681 <select name="attr_Wounds_WPB_Opt" style="width:100%" class="sheet-input-selectbox" >
682 <option value="@{Current_WPB}*3" >WPBx3</option>
683 <option value="@{Current_WPB}*2" >WPBx2</option>
684 <option value="@{Current_WPB}" selected >WPB</option>
685 <option value="0"><b>-</b></option>
686 </select>
687 </td>
688<!-- Hardy Option -->
689 <td style="text-align:center; width:15%">
690 <select name="attr_Wounds_Hardy_Opt" style="width:100%" class="sheet-input-selectbox" >
691 <option value="0" selected data-i18n="Hardy">Hardy</option>
692 <option value="@{Current_TB}" data-i18n="Hardy-1"><b>Hardy:1</b></option>
693 <option value="@{Current_TB}*2" data-i18n="Hardy-2"><b>Hardy:2</b></option>
694 <option value="@{Current_TB}*3" data-i18n="Hardy-3"><b>Hardy:3</b></option>
695 <option value="@{Current_TB}*4" data-i18n="Hardy-4"><b>Hardy:4</b></option>
696 <option value="@{Current_TB}*5" data-i18n="Hardy-5"><b>Hardy:5</b></option>
697 <option value="@{Current_TB}*6" data-i18n="Hardy-6"><b>Hardy:6</b></option>
698 <option value="@{Current_TB}*7" data-i18n="Hardy-7"><b>Hardy:7</b></option>
699 <option value="@{Current_TB}*8" data-i18n="Hardy-8"><b>Hardy:8</b></option>
700 <option value="@{Current_TB}*9" data-i18n="Hardy-9"><b>Hardy:9</b></option>
701 <option value="@{Current_TB}*10" data-i18n="Hardy-10"><b>Hardy:10</b></option>
702 </select>
703 </td>
704
705<!-- Wound Size Option -->
706 <td style="text-align:center; width:20%">
707 <select name="attr_Wounds_Size_Opt" style="width:100%" class="sheet-input-selectbox" >
708 <option type="hidden" value="floor((1)+@{Wounds_Mod}+@{Wounds_Hardy})" data-i18n="Tiny"><b>Tiny</b></option>
709 <option type="hidden" value="floor((@{Wounds_TB})+@{Wounds_Mod}+@{Wounds_Hardy})" data-i18n="Little"><b>Little</b></option>
710 <option type="hidden" value="floor(((@{Wounds_TB}+@{Wounds_WPB})*1)+@{Wounds_Mod}+@{Wounds_Hardy})" data-i18n="Small"><b>Small</b></option>
711 <option type="hidden" value="floor(((@{Wounds_SB}+@{Wounds_TB}+@{Wounds_WPB})*1)+@{Wounds_Mod}+@{Wounds_Hardy})" selected data-i18n="Average"><b>Average</b></option>
712 <option type="hidden" value="floor(((@{Wounds_SB}+@{Wounds_TB}+@{Wounds_WPB})*2)+@{Wounds_Mod}+@{Wounds_Hardy})" data-i18n="Large" ><b>Large</b></option>
713 <option type="hidden" value="floor(((@{Wounds_SB}+@{Wounds_TB}+@{Wounds_WPB})*4)+@{Wounds_Mod}+@{Wounds_Hardy})" data-i18n="Enormous" ><b>Enormous</b></option>
714 <option type="hidden" value="floor(((@{Wounds_SB}+@{Wounds_TB}+@{Wounds_WPB})*8)+@{Wounds_Mod}+@{Wounds_Hardy})" data-i18n="Monstrous" ><b>Monstrous</b></option>
715 </select>
716 </td>
717 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Mod" >Mod</label>
718 </td>
719 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Current" >Current</label>
720 </td>
721 <td style="text-align:center; width:1%">
722 </td>
723 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Maximum" >Maximum</label>
724 </td>
725 </tr>
726 <tr>
727 <td style="text-align:center; width:10%"><input type="number" name="attr_Wounds_SB" style="text-align:center" value="floor(@{Wounds_SB_Opt})" disabled />
728 </td>
729 <td style="text-align:center; width:10%"><input type="number" name="attr_Wounds_TB" style="text-align:center" value="floor(@{Wounds_TB_Opt})" disabled />
730 </td>
731 <td style="text-align:center; width:10%"><input type="number" name="attr_Wounds_WPB" style="text-align:center" value="floor(@{Wounds_WPB_Opt})" disabled />
732 </td>
733 <td style="text-align:center; width:15%"><input type="number" name="attr_Wounds_Hardy" style="text-align:center" value="floor(@{Wounds_Hardy_Opt})" disabled />
734 </td>
735 <td style="text-align:center; width:20%"><input type="number" name="attr_Wounds_Size" style="text-align:center" value="floor(@{Wounds_Size_Opt})" disabled />
736 </td>
737 <td style="text-align:center; width:10%"><input type="number" name="attr_Wounds_Mod" style="text-align:center" value="0" />
738 </td>
739 <td style="text-align:center; width:10%"><input type="number" name="attr_Wounds" id="CurrentWounds" style="text-align:center" value="0"/>
740 </td>
741 <td style="text-align:center; width:1%">
742 </td>
743 <td style="text-align:center; width:10%"><input type="number" name="attr_Wounds_max" style="text-align:center" value="@{Wounds_hidden}" disabled />
744 </td>
745 </tr>
746 </table>
747 <input type="hidden" name="attr_Wounds_hidden" style="text-align:center" value="0" />
748 </div>
749</div>
750</div>
751</div>
752
753
754<div class="sheet-tab-content sheet-tabSkillsTalents">
755<div class="sheet-wrapper">
756
757
758<!-- Basic Skills -->
759 <br>
760 <div class="sheet-col sheet-tablealt" style="width:48%">
761 <div class="sheet-tablewrapper" style="width: 95%">
762 <table style="width:100%">
763 <tr>
764 <th COLSPAN=9><div class="sheet-bluelabel"><label style="text-align:center" data-i18n="BASIC SKILLS" >BASIC SKILLS</label></div>
765 </th>
766 </tr>
767 <tr>
768 <td style="text-align:center; width:42%"><label style="text-align:left" data-i18n="Name" >Name</label>
769 </td>
770 <td style="text-align:center; width:8%">
771 </td>
772 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Char." >Char.</label>
773 </td>
774 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Adv." >Adv.</label>
775 </td>
776 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Mod." >Mod.</label>
777 </td>
778 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Total" >Total</label>
779 </td>
780 <td style="text-align:center; width:10%">
781 </td>
782
783 </tr>
784
785<!-- Art Skill -->
786 <tr>
787 <td style="width:42%;text-align:left"><i><span data-i18n="Art" >Art</span></i>
788 </td>
789 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_ArtCareerSkill" /><span></span>
790 </td>
791 <td style="width:10%">
792 <select name="attr_Art_char" style="width:100%" class="sheet-input-selectbox" >
793 <option value="@{Current_WS}" data-i18n="WS-p" >(WS)</option>
794 <option value="@{Current_BS}" data-i18n="BS-p" >(BS)</option>
795 <option value="@{Current_S}" data-i18n="S-p" >(S)</option>
796 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
797 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
798 <option value="@{Current_Ag}" data-i18n="Ag-p" >(Ag)</option>
799 <option value="@{Current_Dex}" selected data-i18n="Dex-p">(Dex)</option>
800 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
801 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
802 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
803 </select>
804 </td>
805 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Art_adv" value="0" />
806 </td>
807 <td style="width:10%">
808 <input type="number" style="text-align:center;" name="attr_Art_mod" value="0" />
809 </td>
810 <td style="width:10%">
811 <input class="cursorbutton" type="number" name="attr_Art" style="text-align:center;" value="floor(@{Art_char}+@{Art_adv}+@{Art_mod})" disabled="true"/>
812 </td>
813 <td style="width:10%">
814 <button type="roll" style="width:90%" name="roll_Art" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Art}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Art} ]]}}">
815 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
816 </button>
817 </td>
818 </tr>
819
820 <tr>
821 <td style="width:42%;text-align:left"><span data-i18n="Athletics">Athletics</span>
822 </td>
823 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_AthleticsCareerSkill" /><span></span>
824 </td>
825 <td style="width:10%">
826 <select name="attr_Athletics_char" style="width:100%" class="sheet-input-selectbox" >
827 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
828 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
829 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
830 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
831 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
832 <option value="@{Current_Ag}" selected data-i18n="Ag-p">(Ag)</option>
833 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
834 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
835 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
836 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
837 </select>
838 </td>
839 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Athletics_adv" value="0" />
840 </td>
841 <td style="width:10%">
842 <input type="number" style="text-align:center;" name="attr_Athletics_mod" value="0" />
843 </td>
844 <td style="width:10%">
845 <input type="number" name="attr_Athletics" style="text-align:center;" value="floor(@{Athletics_char}+@{Athletics_adv}+@{Athletics_mod})" disabled="true"/>
846 </td>
847 <td style="width:10%">
848 <button type="roll" style="width:90%" name="roll_Athletics" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Athletics}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Athletics} ]]}}">
849 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
850 </button>
851 </td>
852 </tr>
853
854 <tr>
855 <td style="width:42%;text-align:left" data-i18n="Bribery">Bribery</td>
856 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_BriberyCareerSkill" /><span></span>
857 </td>
858 <td style="width:10%">
859 <select name="attr_Bribery_char" style="width:100%" class="sheet-input-selectbox" >
860 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
861 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
862 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
863 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
864 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
865 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
866 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
867 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
868 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
869 <option value="@{Current_Fel}" selected data-i18n="Fel-p">(Fel)</option>
870 </select>
871 </td>
872 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Bribery_adv" value="0" />
873 </td>
874 <td style="width:10%">
875 <input type="number" style="text-align:center;" name="attr_Bribery_mod" value="0" />
876 </td>
877 <td style="width:10%">
878 <input type="number" name="attr_Bribery" style="text-align:center;" value="floor(@{Bribery_char}+@{Bribery_adv}+@{Bribery_mod})" disabled="true"/>
879 </td>
880 <td style="width:10%">
881 <button type="roll" style="width:90%" name="roll_Bribery" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Bribery}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Bribery} ]]}}">
882 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
883 </button>
884 </td>
885 </tr>
886
887 <tr>
888 <td style="width:42%;text-align:left" data-i18n="Charm" >Charm</td>
889 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_CharmCareerSkill" /><span></span>
890 </td>
891 <td style="width:10%">
892 <select name="attr_Charm_char" style="width:100%" class="sheet-input-selectbox" >
893 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
894 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
895 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
896 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
897 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
898 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
899 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
900 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
901 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
902 <option value="@{Current_Fel}" selected data-i18n="Fel-p">(Fel)</option>
903 </select>
904 </td>
905 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Charm_adv" value="0" />
906 </td>
907 <td style="width:10%">
908 <input type="number" style="text-align:center;" name="attr_Charm_mod" value="0" />
909 </td>
910 <td style="width:10%">
911 <input type="number" name="attr_Charm" style="text-align:center;" value="floor(@{Charm_char}+@{Charm_adv}+@{Charm_mod})" disabled="true"/>
912 </td>
913 <td style="width:10%">
914 <button type="roll" style="width:90%" name="roll_Charm" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Charm}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Charm} ]]}}">
915 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
916 </button>
917 </td>
918 </tr>
919
920 <tr>
921 <td style="width:42%;text-align:left" data-i18n="Charm-Animal">Charm Animal</td>
922 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_CharmAnimalCareerSkill" /><span></span>
923 </td>
924 <td style="width:10%">
925 <select name="attr_CharmAnimal_char" style="width:100%" class="sheet-input-selectbox" >
926 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
927 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
928 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
929 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
930 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
931 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
932 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
933 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
934 <option value="@{Current_WP}" selected data-i18n="WP-p">(WP)</option>
935 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
936 </select>
937 </td>
938 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_CharmAnimal_adv" value="0" />
939 </td>
940 <td style="width:10%">
941 <input type="number" style="text-align:center;" name="attr_CharmAnimal_mod" value="0" />
942 </td>
943 <td style="width:10%">
944 <input type="number" name="attr_CharmAnimal" style="text-align:center;" value="floor(@{CharmAnimal_char}+@{CharmAnimal_adv}+@{CharmAnimal_mod})" disabled="true"/>
945 </td>
946 <td style="width:10%">
947 <button type="roll" style="width:90%" name="roll_CharmAnimal" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Charm Animal}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{CharmAnimal} ]]}}">
948 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
949 </button>
950 </td>
951 </tr>
952
953 <tr>
954 <td style="width:42%;text-align:left" data-i18n="Climb" >Climb</td>
955 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_ClimbCareerSkill" /><span></span>
956 </td>
957 <td style="width:10%">
958 <select name="attr_Climb_char" style="width:100%" class="sheet-input-selectbox" >
959 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
960 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
961 <option value="@{Current_S}" selected data-i18n="S-p">(S)</option>
962 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
963 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
964 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
965 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
966 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
967 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
968 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
969 </select>
970 </td>
971 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Climb_adv" value="0" />
972 </td>
973 <td style="width:10%">
974 <input type="number" style="text-align:center;" name="attr_Climb_mod" value="0" />
975 </td>
976 <td style="width:10%">
977 <input type="number" name="attr_Climb" style="text-align:center;" value="floor(@{Climb_char}+@{Climb_adv}+@{Climb_mod})" disabled="true"/>
978 </td>
979 <td style="width:10%">
980 <button type="roll" style="width:90%" name="roll_Climb" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Climb}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Climb} ]]}}">
981 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
982 </button>
983 </td>
984 </tr>
985
986 <tr>
987 <td style="width:42%;text-align:left" data-i18n="Cool">Cool</td>
988 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_CoolCareerSkill" /><span></span>
989 </td>
990 <td style="width:10%">
991 <select name="attr_Cool_char" style="width:100%" class="sheet-input-selectbox" >
992 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
993 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
994 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
995 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
996 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
997 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
998 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
999 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1000 <option value="@{Current_WP}" selected data-i18n="WP-p">(WP)</option>
1001 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1002 </select>
1003 </td>
1004 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Cool_adv" value="0" />
1005 </td>
1006 <td style="width:10%">
1007 <input type="number" style="text-align:center;" name="attr_Cool_mod" value="0" />
1008 </td>
1009 <td style="width:10%">
1010 <input type="number" name="attr_Cool" style="text-align:center;" value="floor(@{Cool_char}+@{Cool_adv}+@{Cool_mod})" disabled="true"/>
1011 </td>
1012 <td style="width:10%">
1013 <button type="roll" style="width:90%" name="roll_Cool" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Cool}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Cool} ]]}}">
1014 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1015 </button>
1016 </td>
1017 </tr>
1018
1019 <tr>
1020 <td style="width:42%;text-align:left" data-i18n="Consume Alcohol" >Consume Alcohol</td>
1021 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_ConsumeAlcoholCareerSkill" /><span></span>
1022 </td>
1023 <td style="width:10%">
1024 <select name="attr_ConsumeAlcohol_char" style="width:100%" class="sheet-input-selectbox" >
1025 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1026 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1027 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1028 <option value="@{Current_T}" selected data-i18n="T-p">(T)</option>
1029 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1030 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1031 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1032 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1033 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1034 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1035 </select>
1036 </td>
1037 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_ConsumeAlcohol_adv" value="0" />
1038 </td>
1039 <td style="width:10%">
1040 <input type="number" style="text-align:center;" name="attr_ConsumeAlcohol_mod" value="0" />
1041 </td>
1042 <td style="width:10%">
1043 <input type="number" name="attr_ConsumeAlcohol" style="text-align:center;" value="floor(@{ConsumeAlcohol_char}+@{ConsumeAlcohol_adv}+@{ConsumeAlcohol_mod})" disabled="true"/>
1044 </td>
1045 <td style="width:10%">
1046 <button type="roll" style="width:90%" name="roll_ConsumeAlcohol" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Consume Alcohol}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{ConsumeAlcohol} ]]}}">
1047 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1048 </button>
1049 </td>
1050 </tr>
1051 <tr>
1052 <td style="width:42%;text-align:left" data-i18n="Dodge" >Dodge
1053 </td>
1054 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_DodgeCareerSkill" /><span></span>
1055 </td>
1056 <td style="width:10%">
1057 <select name="attr_Dodge_char" style="width:100%" class="sheet-input-selectbox" >
1058 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1059 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1060 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1061 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1062 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1063 <option value="@{Current_Ag}" selected data-i18n="Ag-p">(Ag)</option>
1064 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1065 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1066 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1067 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1068 </select>
1069 </td>
1070 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Dodge_adv" value="0" />
1071 </td>
1072 <td style="width:10%">
1073 <input type="number" style="text-align:center;" name="attr_Dodge_mod" value="0" />
1074 </td>
1075 <td style="width:10%">
1076 <input type="number" name="attr_Dodge" style="text-align:center;" value="floor(@{Dodge_char}+@{Dodge_adv}+@{Dodge_mod})" disabled="true"/>
1077 </td>
1078 <td style="width:10%">
1079 <button type="roll" style="width:90%" name="roll_Dodge" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Dodge}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Dodge} ]]}}">
1080 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1081 </button>
1082 </td>
1083 </tr>
1084
1085 <tr>
1086 <td style="width:42%;text-align:left" data-i18n="Drive" >Drive</td>
1087 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_DriveCareerSkill" /><span></span>
1088 </td>
1089 <td style="width:10%">
1090 <select name="attr_Drive_char" style="width:100%" class="sheet-input-selectbox" >
1091 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1092 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1093 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1094 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1095 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1096 <option value="@{Current_Ag}" selected data-i18n="Ag-p">(Ag)</option>
1097 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1098 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1099 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1100 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1101 </select>
1102 </td>
1103 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Drive_adv" value="0" />
1104 </td>
1105 <td style="width:10%">
1106 <input type="number" style="text-align:center;" name="attr_Drive_mod" value="0" />
1107 </td>
1108 <td style="width:10%">
1109 <input type="number" name="attr_Drive" style="text-align:center;" value="floor(@{Drive_char}+@{Drive_adv}+@{Drive_mod})" disabled="true"/>
1110 </td>
1111 <td style="width:10%">
1112 <button type="roll" style="width:90%" name="roll_Drive" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Drive}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Drive} ]]}}">
1113 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1114 </button>
1115 </td>
1116 </tr>
1117
1118 <tr>
1119 <td style="width:42%;text-align:left" data-i18n="Endurance" >Endurance</td>
1120 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_EnduranceCareerSkill" /><span></span>
1121 </td>
1122 <td style="width:10%">
1123 <select name="attr_Endurance_char" style="width:100%" class="sheet-input-selectbox" >
1124 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1125 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1126 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1127 <option value="@{Current_T}" selected data-i18n="T-p">(T)</option>
1128 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1129 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1130 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1131 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1132 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1133 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1134 </select>
1135 </td>
1136 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Endurance_adv" value="0" />
1137 </td>
1138 <td style="width:10%">
1139 <input type="number" style="text-align:center;" name="attr_Endurance_mod" value="0" />
1140 </td>
1141 <td style="width:10%">
1142 <input type="number" name="attr_Endurance" style="text-align:center;" value="floor(@{Endurance_char}+@{Endurance_adv}+@{Endurance_mod})" disabled="true"/>
1143 </td>
1144 <td style="width:10%">
1145 <button type="roll" style="width:90%" name="roll_Endurance" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Endurance}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Endurance} ]]}}">
1146 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1147 </button>
1148 </td>
1149 </tr>
1150
1151 <tr>
1152 <td style="width:42%;text-align:left"><i><span data-i18n="Entertain" >Entertain</span></i></td>
1153 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_EntertainCareerSkill" /><span></span>
1154 </td>
1155 <td style="width:10%">
1156 <select name="attr_Entertain_char" style="width:100%" class="sheet-input-selectbox" >
1157 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1158 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1159 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1160 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1161 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1162 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1163 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1164 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1165 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1166 <option value="@{Current_Fel}" selected data-i18n="Fel-p">(Fel)</option>
1167 </select>
1168 </td>
1169 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Entertain_adv" value="0" />
1170 </td>
1171 <td style="width:10%">
1172 <input type="number" style="text-align:center;" name="attr_Entertain_mod" value="0" />
1173 </td>
1174 <td style="width:10%">
1175 <input type="number" name="attr_Entertain" style="text-align:center;" value="floor(@{Entertain_char}+@{Entertain_adv}+@{Entertain_mod})" disabled="true"/>
1176 </td>
1177 <td style="width:10%">
1178 <button type="roll" style="width:90%" name="roll_Entertain" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Entertain}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Entertain} ]]}}">
1179 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1180 </button>
1181 </td>
1182 </tr>
1183
1184 <tr>
1185 <td style="width:42%;text-align:left" data-i18n="Gamble">Gamble</td>
1186 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_GambleCareerSkill" /><span></span>
1187 </td>
1188 <td style="width:10%">
1189 <select name="attr_Gamble_char" style="width:100%" class="sheet-input-selectbox" >
1190 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1191 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1192 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1193 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1194 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1195 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1196 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1197 <option value="@{Current_Int}" selected data-i18n="Int-p">(Int)</option>
1198 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1199 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1200 </select>
1201 </td>
1202 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Gamble_adv" value="0" />
1203 </td>
1204 <td style="width:10%">
1205 <input type="number" style="text-align:center;" name="attr_Gamble_mod" value="0" />
1206 </td>
1207 <td style="width:10%">
1208 <input type="number" name="attr_Gamble" style="text-align:center;" value="floor(@{Gamble_char}+@{Gamble_adv}+@{Gamble_mod})" disabled="true"/>
1209 </td>
1210 <td style="width:10%">
1211 <button type="roll" style="width:90%" name="roll_Gamble" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Gamble}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Gamble} ]]}}">
1212 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1213 </button>
1214 </td>
1215 </tr>
1216
1217 <tr>
1218 <td style="width:42%;text-align:left" data-i18n="Gossip" >Gossip</td>
1219 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_GossipCareerSkill" /><span></span>
1220 </td>
1221 <td style="width:10%">
1222 <select name="attr_Gossip_char" style="width:100%" class="sheet-input-selectbox" >
1223 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1224 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1225 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1226 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1227 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1228 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1229 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1230 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1231 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1232 <option value="@{Current_Fel}" selected data-i18n="Fel-p">(Fel)</option>
1233 </select>
1234 </td>
1235 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Gossip_adv" value="0" />
1236 </td>
1237 <td style="width:10%">
1238 <input type="number" style="text-align:center;" name="attr_Gossip_mod" value="0" />
1239 </td>
1240 <td style="width:10%">
1241 <input type="number" name="attr_Gossip" style="text-align:center;" value="floor(@{Gossip_char}+@{Gossip_adv}+@{Gossip_mod})" disabled="true"/>
1242 </td>
1243 <td style="width:10%">
1244 <button type="roll" style="width:90%" name="roll_Gossip" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Gossip}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Gossip} ]]}}">
1245 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1246 </button>
1247 </td>
1248 </tr>
1249
1250 <tr>
1251 <td style="width:42%;text-align:left" data-i18n="Haggle" >Haggle</td>
1252 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_HaggleCareerSkill" /><span></span>
1253 </td>
1254 <td style="width:10%">
1255 <select name="attr_Haggle_char" style="width:100%" class="sheet-input-selectbox" >
1256 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1257 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1258 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1259 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1260 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1261 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1262 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1263 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1264 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1265 <option value="@{Current_Fel}" selected data-i18n="Fel-p">(Fel)</option>
1266 </select>
1267 </td>
1268 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Haggle_adv" value="0" />
1269 </td>
1270 <td style="width:10%">
1271 <input type="number" style="text-align:center;" name="attr_Haggle_mod" value="0" />
1272 </td>
1273 <td style="width:10%">
1274 <input type="number" name="attr_Haggle" style="text-align:center;" value="floor(@{Haggle_char}+@{Haggle_adv}+@{Haggle_mod})" disabled="true"/>
1275 </td>
1276 <td style="width:10%">
1277 <button type="roll" style="width:90%" name="roll_Haggle" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Haggle}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Haggle} ]]}}">
1278 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1279 </button>
1280 </td>
1281 </tr>
1282
1283 <tr>
1284 <td style="width:42%;text-align:left" data-i18n="Intimidate" >Intimidate</td>
1285 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_IntimidateCareerSkill" /><span></span>
1286 </td>
1287 <td style="width:10%">
1288 <select name="attr_Intimidate_char" style="width:100%" class="sheet-input-selectbox" >
1289 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1290 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1291 <option value="@{Current_S}" selected data-i18n="S-p">(S)</option>
1292 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1293 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1294 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1295 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1296 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1297 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1298 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1299 </select>
1300 </td>
1301 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Intimidate_adv" value="0" />
1302 </td>
1303 <td style="width:10%">
1304 <input type="number" style="text-align:center;" name="attr_Intimidate_mod" value="0" />
1305 </td>
1306 <td style="width:10%">
1307 <input type="number" name="attr_Intimidate" style="text-align:center;" value="floor(@{Intimidate_char}+@{Intimidate_adv}+@{Intimidate_mod})" disabled="true"/>
1308 </td>
1309 <td style="width:10%">
1310 <button type="roll" style="width:90%" name="roll_Intimidate" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Intimidate}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Intimidate} ]]}}">
1311 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1312 </button>
1313 </td>
1314 </tr>
1315
1316 <tr>
1317 <td style="width:42%;text-align:left" data-i18n="Intuition">Intuition</td>
1318 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_IntutitionCareerSkill" /><span></span>
1319 </td>
1320 <td style="width:10%">
1321 <select name="attr_Intuition_char" style="width:100%" class="sheet-input-selectbox" >
1322 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1323 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1324 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1325 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1326 <option value="@{Current_I}" selected data-i18n="I-p">(I)</option>
1327 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1328 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1329 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1330 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1331 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1332 </select>
1333 </td>
1334 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Intuition_adv" value="0" />
1335 </td>
1336 <td style="width:10%">
1337 <input type="number" style="text-align:center;" name="attr_Intuition_mod" value="0" />
1338 </td>
1339 <td style="width:10%">
1340 <input type="number" name="attr_Intuition" style="text-align:center;" value="floor(@{Intuition_char}+@{Intuition_adv}+@{Intuition_mod})" disabled="true"/>
1341 </td>
1342 <td style="width:10%">
1343 <button type="roll" style="width:90%" name="roll_Intuition" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Intuition}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Intuition} ]]}}">
1344 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1345 </button>
1346 </td>
1347 </tr>
1348
1349 <tr>
1350 <td style="width:42%;text-align:left" data-i18n="Leadership">Leadership</td>
1351 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_LeadershipCareerSkill" /><span></span>
1352 </td>
1353 <td style="width:10%">
1354 <select name="attr_Leadership_char" style="width:100%" class="sheet-input-selectbox" >
1355 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1356 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1357 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1358 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1359 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1360 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1361 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1362 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1363 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1364 <option value="@{Current_Fel}" selected data-i18n="Fel-p">(Fel)</option>
1365 </select>
1366 </td>
1367 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Leadership_adv" value="0" />
1368 </td>
1369 <td style="width:10%">
1370 <input type="number" style="text-align:center;" name="attr_Leadership_mod" value="0" />
1371 </td>
1372 <td style="width:10%">
1373 <input type="number" name="attr_Leadership" style="text-align:center;" value="floor(@{Leadership_char}+@{Leadership_adv}+@{Leadership_mod})" disabled="true"/>
1374 </td>
1375 <td style="width:10%">
1376 <button type="roll" style="width:90%" name="roll_Leadership" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Leadership}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Leadership} ]]}}">
1377 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1378 </button>
1379 </td>
1380 </tr>
1381
1382 <tr>
1383 <td style="width:42%;text-align:left" data-i18n="Navigation" >Navigation</td>
1384 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_NavigationCareerSkill" /><span></span>
1385 </td>
1386 <td style="width:10%">
1387 <select name="attr_Navigation_char" style="width:100%" class="sheet-input-selectbox" >
1388 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1389 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1390 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1391 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1392 <option value="@{Current_I}" selected data-i18n="I-p">(I)</option>
1393 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1394 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1395 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1396 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1397 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1398 </select>
1399 </td>
1400 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Navigation_adv" value="0" />
1401 </td>
1402 <td style="width:10%">
1403 <input type="number" style="text-align:center;" name="attr_Navigation_mod" value="0" />
1404 </td>
1405 <td style="width:10%">
1406 <input type="number" name="attr_Navigation" style="text-align:center;" value="floor(@{Navigation_char}+@{Navigation_adv}+@{Navigation_mod})" disabled="true"/>
1407 </td>
1408 <td style="width:10%">
1409 <button type="roll" style="width:90%" name="roll_Navigation" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Navigation}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Navigation} ]]}}">
1410 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1411 </button>
1412 </td>
1413 </tr>
1414
1415 <tr>
1416 <td style="width:42%;text-align:left" data-i18n="Outdoor-Survival" >Outdoor Survival</td>
1417 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_OutdoorSurvivalCareerSkill" /><span></span>
1418 </td>
1419 <td style="width:10%">
1420 <select name="attr_OutdoorSurvival_char" style="width:100%" class="sheet-input-selectbox" >
1421 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1422 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1423 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1424 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1425 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1426 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1427 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1428 <option value="@{Current_Int}" selected data-i18n="Int-p">(Int)</option>
1429 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1430 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1431 </select>
1432 </td>
1433 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_OutdoorSurvival_adv" value="0" />
1434 </td>
1435 <td style="width:10%">
1436 <input type="number" style="text-align:center;" name="attr_OutdoorSurvival_mod" value="0" />
1437 </td>
1438 <td style="width:10%">
1439 <input type="number" name="attr_OutdoorSurvival" style="text-align:center;" value="floor(@{OutdoorSurvival_char}+@{OutdoorSurvival_adv}+@{OutdoorSurvival_mod})" disabled="true"/>
1440 </td>
1441 <td style="width:10%">
1442 <button type="roll" style="width:90%" name="roll_OutdoorSurvival" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Outdoor Survival}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{OutdoorSurvival} ]]}}">
1443 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1444 </button>
1445 </td>
1446 </tr>
1447
1448 <tr>
1449 <td style="width:42%;text-align:left" data-i18n="Perception" >Perception</td>
1450 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_PerceptionCareerSkill" /><span></span>
1451 </td>
1452 <td style="width:10%">
1453 <select name="attr_Perception_char" style="width:100%" class="sheet-input-selectbox" >
1454 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1455 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1456 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1457 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1458 <option value="@{Current_I}" selected data-i18n="I-p">(I)</option>
1459 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1460 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1461 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1462 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1463 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1464 </select>
1465 </td>
1466 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Perception_adv" value="0" />
1467 </td>
1468 <td style="width:10%">
1469 <input type="number" style="text-align:center;" name="attr_Perception_mod" value="0" />
1470 </td>
1471 <td style="width:10%">
1472 <input type="number" name="attr_Perception" style="text-align:center;" value="floor(@{Perception_char}+@{Perception_adv}+@{Perception_mod})" disabled="true"/>
1473 </td>
1474 <td style="width:10%">
1475 <button type="roll" style="width:90%" name="roll_Perception" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Perception}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Perception} ]]}}">
1476 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1477 </button>
1478 </td>
1479 </tr>
1480
1481 <tr>
1482 <td style="width:42%;text-align:left"><i><span data-i18n="Ride" >Ride</span></i></td>
1483 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_RideCareerSkill" /><span></span>
1484 </td>
1485 <td style="width:10%">
1486 <select name="attr_Ride_char" style="width:100%" class="sheet-input-selectbox" >
1487 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1488 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1489 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1490 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1491 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1492 <option value="@{Current_Ag}" selected data-i18n="Ag-p">(Ag)</option>
1493 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1494 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1495 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1496 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1497 </select>
1498 </td>
1499 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Ride_adv" value="0" />
1500 </td>
1501 <td style="width:10%">
1502 <input type="number" style="text-align:center;" name="attr_Ride_mod" value="0" />
1503 </td>
1504 <td style="width:10%">
1505 <input type="number" name="attr_Row" style="text-align:center;" value="floor(@{Row_char}+@{Row_adv}+@{Row_mod})" disabled="true"/>
1506 </td>
1507 <td style="width:10%">
1508 <button type="roll" style="width:90%" name="roll_Ride" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Ride}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Ride} ]]}}">
1509 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1510 </button>
1511 </td>
1512 </tr>
1513
1514 <tr>
1515 <td style="width:42%;text-align:left" data-i18n="Row" >Row</td>
1516 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_RowCareerSkill" /><span></span>
1517 </td>
1518 <td style="width:10%">
1519 <select name="attr_Row_char" style="width:100%" class="sheet-input-selectbox" >
1520 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1521 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1522 <option value="@{Current_S}" selected data-i18n="S-p">(S)</option>
1523 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1524 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1525 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1526 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1527 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1528 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1529 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1530 </select>
1531 </td>
1532 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Row_adv" value="0" />
1533 </td>
1534 <td style="width:10%">
1535 <input type="number" style="text-align:center;" name="attr_Row_mod" value="0" />
1536 </td>
1537 <td style="width:10%">
1538 <input type="number" name="attr_Row" style="text-align:center;" value="floor(@{Row_char}+@{Row_adv}+@{Row_mod})" disabled="true"/>
1539 </td>
1540 <td style="width:10%">
1541 <button type="roll" style="width:90%" name="roll_Row" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Row}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Row} ]]}}">
1542 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1543 </button>
1544 </td>
1545 </tr>
1546
1547 <tr>
1548 <td style="width:42%;text-align:left"><i><span data-i18n="Stealth">Stealth</span></i></td>
1549 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_StealthCareerSkill" /><span></span>
1550 </td>
1551 <td style="width:10%">
1552 <select name="attr_Stealth_char" style="width:100%" class="sheet-input-selectbox" >
1553 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1554 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1555 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1556 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1557 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1558 <option value="@{Current_Ag}" selected data-i18n="Ag-p">(Ag)</option>
1559 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1560 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1561 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1562 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1563 </select>
1564 </td>
1565 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Stealth_adv" value="0" />
1566 </td>
1567 <td style="width:10%">
1568 <input type="number" style="text-align:center;" name="attr_Stealth_mod" value="0" />
1569 </td>
1570 <td style="width:10%">
1571 <input type="number" name="attr_Stealth" style="text-align:center;" value="floor(@{Stealth_char}+@{Stealth_adv}+@{Stealth_mod})" disabled="true"/>
1572 </td>
1573 <td style="width:10%">
1574 <button type="roll" name="roll_Stealth" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Stealth}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Stealth} ]]}}">
1575 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1576 </button>
1577 </td>
1578 </tr>
1579 </table>
1580
1581 </div> <!--- Hackery --->
1582
1583 </div>
1584
1585<!-- Middle Separation -->
1586
1587<!-- Melee Specialisations -->
1588<div class="sheet-col sheet-table" style="width:48%">
1589 <div class="sheet-tablewrapper" style="width: 95%">
1590 <div class="sheet-col sheet-tablealt">
1591 <table style="width:100%">
1592 <tr>
1593 <th COLSPAN=9><div class="sheet-bluelabel"><label style="text-align:center" data-i18n="MELEE-SPECIALISATIONS-(BASIC)" >MELEE SPECIALISATIONS (BASIC)</label></div>
1594 </th>
1595 </tr>
1596 <tr>
1597 <td style="text-align:center; width:42%"><label style="text-align:left" data-i18n="Name" >Name</label>
1598 </td>
1599 <td style="text-align:center; width:8%">
1600 </td>
1601 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Char." >Char.</label>
1602 </td>
1603 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Adv." >Adv.</label>
1604 </td>
1605 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Mod." >Mod.</label>
1606 </td>
1607 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Total" >Total</label>
1608 </td>
1609 <td style="text-align:center; width:10%">
1610 </td>
1611 </tr>
1612 <tr>
1613 <td style="width:42%;text-align:left" data-i18n="Melee-i-Basic"><i>Melee</i> (Basic)
1614 </td>
1615 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_MeleeBasicCareerSkill" /><span></span>
1616 </td>
1617 <td style="width:10%">
1618 <select name="attr_MeleeBasic_char" style="width:100%" class="sheet-input-selectbox" >
1619 <option value="@{Current_WS}" selected data-i18n="WS-p">(WS)</option>
1620 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1621 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1622 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1623 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1624 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1625 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1626 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1627 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1628 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1629 </select>
1630 </td>
1631 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_MeleeBasic_adv" value="0" />
1632 </td>
1633 <td style="width:10%">
1634 <input type="number" style="text-align:center;" name="attr_MeleeBasic_mod" value="0" />
1635 </td>
1636 <td style="width:10%">
1637 <input type="number" name="attr_MeleeBasic" style="text-align:center;" value="floor(@{MeleeBasic_char}+@{MeleeBasic_adv}+@{MeleeBasic_mod})" disabled="true"/>
1638 </td>
1639 <td style="width:10%">
1640 <button type="roll" name="roll_MeleeBasic" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Melee (Basic)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{MeleeBasic} ]]}}">
1641 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1642 </button>
1643 </td>
1644 </tr>
1645 <tr>
1646 <td style="width:42%;text-align:left" data-i18n="Melee-i-Brawling" ><i>Melee</i> (Brawling)</td>
1647 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_MeleeBrawlingCareerSkill" /><span></span>
1648 </td>
1649 <td style="width:10%">
1650 <select name="attr_MeleeBrawling_char" style="width:100%" class="sheet-input-selectbox" >
1651 <option value="@{Current_WS}" selected data-i18n="WS-p">(WS)</option>
1652 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1653 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1654 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1655 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1656 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1657 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1658 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1659 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1660 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1661 </select>
1662 </td>
1663 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_MeleeBrawling_adv" value="0" />
1664 </td>
1665 <td style="width:10%">
1666 <input type="number" style="text-align:center;" name="attr_MeleeBrawling_mod" value="0" />
1667 </td>
1668 <td style="width:10%">
1669 <input type="number" name="attr_MeleeBrawling" style="text-align:center;" value="floor(@{MeleeBrawling_char}+@{MeleeBrawling_adv}+@{MeleeBrawling_mod})" disabled="true"/>
1670 </td>
1671 <td style="width:10%">
1672 <button type="roll" style="width:90%" name="roll_MeleeBrawling" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Melee (Brawling)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{MeleeBrawling} ]]}}">
1673 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1674 </button>
1675 </td>
1676 </tr>
1677 <tr>
1678 <td style="width:42%;text-align:left" data-i18n="Melee-i-Cavalry" ><i>Melee</i> (Cavalry)</td>
1679 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_MeleeCavalryCareerSkill" /><span></span>
1680 </td>
1681 <td style="width:10%">
1682 <select name="attr_MeleeCavalry_char" style="width:100%" class="sheet-input-selectbox" >
1683 <option value="@{Current_WS}" selected data-i18n="WS-p">(WS)</option>
1684 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1685 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1686 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1687 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1688 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1689 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1690 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1691 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1692 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1693 </select>
1694 </td>
1695 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_MeleeCavalry_adv" value="0" />
1696 </td>
1697 <td style="width:10%">
1698 <input type="number" style="text-align:center;" name="attr_MeleeCavalry_mod" value="0" />
1699 </td>
1700 <td style="width:10%">
1701 <input type="number" name="attr_MeleeCavalry" style="text-align:center;" value="floor(@{MeleeCavalry_char}+@{MeleeCavalry_adv}+@{MeleeCavalry_mod})" disabled="true"/>
1702 </td>
1703 <td style="width:10%">
1704 <button type="roll" style="width:90%" name="roll_MeleeCavalry" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Melee (Cavalry)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{MeleeCavalry} ]]}}">
1705 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1706 </button>
1707 </td>
1708 </tr>
1709 <tr>
1710 <td style="width:42%;text-align:left" data-i18n="Melee-i-Fencing" ><i>Melee</i> (Fencing)</td>
1711 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_MeleeFencingCareerSkill" /><span></span>
1712 </td>
1713 <td style="width:10%">
1714 <select name="attr_MeleeFencing_char" style="width:100%" class="sheet-input-selectbox" >
1715 <option value="@{Current_WS}" selected data-i18n="WS-p">(WS)</option>
1716 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1717 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1718 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1719 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1720 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1721 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1722 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1723 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1724 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1725 </select>
1726 </td>
1727 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_MeleeFencing_adv" value="0" />
1728 </td>
1729 <td style="width:10%">
1730 <input type="number" style="text-align:center;" name="attr_MeleeFencing_mod" value="0" />
1731 </td>
1732 <td style="width:10%">
1733 <input type="number" name="attr_MeleeFencing" style="text-align:center;" value="floor(@{MeleeFencing_char}+@{MeleeFencing_adv}+@{MeleeFencing_mod})" disabled="true"/>
1734 </td>
1735 <td style="width:10%">
1736 <button type="roll" style="width:90%" name="roll_MeleeFencing" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Melee (Fencing)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{MeleeFencing} ]]}}">
1737 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1738 </button>
1739 </td>
1740 </tr>
1741 <tr>
1742 <td style="width:42%;text-align:left" data-i18n="Melee-i-Flail" ><i>Melee</i> (Flail)</td>
1743 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_MeleeFlailCareerSkill" /><span></span>
1744 </td>
1745 <td style="width:10%">
1746 <select name="attr_MeleeFlail_char" style="width:100%" class="sheet-input-selectbox" >
1747 <option value="@{Current_WS}" selected data-i18n="WS-p">(WS)</option>
1748 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1749 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1750 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1751 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1752 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1753 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1754 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1755 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1756 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1757 </select>
1758 </td>
1759 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_MeleeFlail_adv" value="0" />
1760 </td>
1761 <td style="width:10%">
1762 <input type="number" style="text-align:center;" name="attr_MeleeFlail_mod" value="0" />
1763 </td>
1764 <td style="width:10%">
1765 <input type="number" name="attr_MeleeFlail" style="text-align:center;" value="floor(@{MeleeFlail_char}+@{MeleeFlail_adv}+@{MeleeFlail_mod})" disabled="true"/>
1766 </td>
1767 <td style="width:10%">
1768 <button type="roll" style="width:90%" name="roll_MeleeFlail" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Melee (Flail)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{MeleeFlail} ]]}}">
1769 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1770 </button>
1771 </td>
1772 </tr>
1773 <tr>
1774 <td style="width:42%;text-align:left" data-i18n="Melee-i-Parry" ><i>Melee</i> (Parry)</td>
1775 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_MeleeParryCareerSkill" /><span></span>
1776 </td>
1777 <td style="width:10%">
1778 <select name="attr_MeleeParry_char" style="width:100%" class="sheet-input-selectbox" >
1779 <option value="@{Current_WS}" selected data-i18n="WS-p">(WS)</option>
1780 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1781 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1782 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1783 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1784 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1785 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1786 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1787 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1788 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1789 </select>
1790 </td>
1791 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_MeleeParry_adv" value="0" />
1792 </td>
1793 <td style="width:10%">
1794 <input type="number" style="text-align:center;" name="attr_MeleeParry_mod" value="0" />
1795 </td>
1796 <td style="width:10%">
1797 <input type="number" name="attr_MeleeParry" style="text-align:center;" value="floor(@{MeleeParry_char}+@{MeleeParry_adv}+@{MeleeParry_mod})" disabled="true"/>
1798 </td>
1799 <td style="width:10%">
1800 <button type="roll" style="width:90%" name="roll_MeleeParry" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Melee (Parry)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{MeleeParry} ]]}}">
1801 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1802 </button>
1803 </td>
1804 </tr>
1805 <tr>
1806 <td style="width:42%;text-align:left" data-i18n="Melee-i-Pole-Arm" ><i>Melee</i> (Pole-Arm)</td>
1807 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_MeleePolearmCareerSkill" /><span></span>
1808 </td>
1809 <td style="width:10%">
1810 <select name="attr_MeleePoleArm_char" style="width:100%" class="sheet-input-selectbox" >
1811 <option value="@{Current_WS}" selected data-i18n="WS-p">(WS)</option>
1812 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1813 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1814 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1815 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1816 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1817 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1818 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1819 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1820 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1821 </select>
1822 </td>
1823 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_MeleePoleArm_adv" value="0" />
1824 </td>
1825 <td style="width:10%">
1826 <input type="number" style="text-align:center;" name="attr_MeleePoleArm_mod" value="0" />
1827 </td>
1828 <td style="width:10%">
1829 <input type="number" name="attr_MeleePoleArm" style="text-align:center;" value="floor(@{MeleePoleArm_char}+@{MeleePoleArm_adv}+@{MeleePoleArm_mod})" disabled="true"/>
1830 </td>
1831 <td style="width:10%">
1832 <button type="roll" style="width:90%" name="roll_MeleePoleArm" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Melee (Pole-Arm)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{MeleePoleArm} ]]}}">
1833 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1834 </button>
1835 </td>
1836 </tr>
1837 <tr>
1838 <td style="width:42%;text-align:left" data-i18n="Melee-i-2H" ><i>Melee</i> (Two-Handed)</td>
1839 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_MeleeTwohandedCareerSkill" /><span></span>
1840 </td>
1841 <td style="width:10%">
1842 <select name="attr_MeleeTwoHanded_char" style="width:100%" class="sheet-input-selectbox" >
1843 <option value="@{Current_WS}" selected data-i18n="WS-p">(WS)</option>
1844 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
1845 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1846 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1847 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1848 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1849 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1850 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1851 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1852 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1853 </select>
1854 </td>
1855 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_MeleeTwoHanded_adv" value="0" />
1856 </td>
1857 <td style="width:10%">
1858 <input type="number" style="text-align:center;" name="attr_MeleeTwoHanded_mod" value="0" />
1859 </td>
1860 <td style="width:10%">
1861 <input type="number" name="attr_MeleeTwoHanded" style="text-align:center;" value="floor(@{MeleeTwoHanded_char}+@{MeleeTwoHanded_adv}+@{MeleeTwoHanded_mod})" disabled="true"/>
1862 </td>
1863 <td style="width:10%">
1864 <button type="roll" style="width:90%" name="roll_MeleeTwoHanded" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Melee (Two-Handed)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{MeleeTwoHanded} ]]}}">
1865 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1866 </button>
1867 </td>
1868 </tr>
1869
1870<!-- Ranged Specialisations -->
1871 <tr><th COLSPAN=9><label style="text-align:center"> </label></th></tr>
1872 <tr>
1873 <th COLSPAN=8><div class="sheet-bluelabel"><label style="text-align:center" data-i18n="RANGED-SPECIAlZATION-ADVANCED" >RANGED SPECIALISATIONS (ADVANCED)</label></div>
1874 </th>
1875 </tr>
1876 <tr>
1877 <td style="text-align:center; width:42%"><label style="text-align:left" data-i18n="Name" >Name</label>
1878 </td>
1879 <td style="text-align:center; width:8%">
1880 </td>
1881 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Char." >Char.</label>
1882 </td>
1883 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Adv." >Adv.</label>
1884 </td>
1885 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Mod." >Mod.</label>
1886 </td>
1887 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Total" >Total</label>
1888 </td>
1889 <td style="text-align:center; width:10%">
1890 </td>
1891 </tr>
1892 <tr>
1893 <td style="width:42%;text-align:left" data-i18n="Ranged-i-Blackpowder"><i>Ranged</i> (Blackpowder)</td>
1894 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_RangedBlackpowderCareerSkill" /><span></span>
1895 </td>
1896 <td style="width:10%">
1897 <select name="attr_RangedBlackpowder_char" style="width:100%" class="sheet-input-selectbox" >
1898 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1899 <option value="@{Current_BS}" selected data-i18n="BS-p">(BS)</option>
1900 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1901 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1902 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1903 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1904 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1905 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1906 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1907 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1908 </select>
1909 </td>
1910 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_RangedBlackpowder_adv" value="0" />
1911 </td>
1912 <td style="width:10%">
1913 <input type="number" style="text-align:center;" name="attr_RangedBlackpowder_mod" value="0" />
1914 </td>
1915 <td style="width:10%">
1916 <input type="number" name="attr_RangedBlackpowder" style="text-align:center;" value="floor(@{RangedBlackpowder_char}+@{RangedBlackpowder_adv}+@{RangedBlackpowder_mod})" disabled="true"/>
1917 </td>
1918 <td style="width:10%">
1919 <button type="roll" style="width:90%" name="roll_RangedBlackpowder" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Ranged (Blackpowder)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{RangedBlackpowder} ]]}}">
1920 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1921 </button>
1922 </td>
1923 </tr>
1924
1925 <tr>
1926 <td style="width:42%;text-align:left" data-i18n="Ranged-i-Bow" ><i>Ranged</i> (Bow)</td>
1927 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_RangedBowCareerSkill" /><span></span>
1928 </td>
1929 <td style="width:10%">
1930 <select name="attr_RangedBow_char" style="width:100%" class="sheet-input-selectbox" >
1931 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1932 <option value="@{Current_BS}" selected data-i18n="BS-p">(BS)</option>
1933 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1934 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1935 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1936 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1937 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1938 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1939 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1940 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1941 </select>
1942 </td>
1943 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_RangedBow_adv" value="0" />
1944 </td>
1945 <td style="width:10%">
1946 <input type="number" style="text-align:center;" name="attr_RangedBow_mod" value="0" />
1947 </td>
1948 <td style="width:10%">
1949 <input type="number" name="attr_RangedBow" style="text-align:center;" value="floor(@{RangedBow_char}+@{RangedBow_adv}+@{RangedBow_mod})" disabled="true"/>
1950 </td>
1951 <td style="width:10%">
1952 <button type="roll" style="width:90%" name="roll_RangedBow" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Ranged (Bow)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{RangedBow} ]]}}">
1953 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1954 </button>
1955 </td>
1956 </tr>
1957
1958 <tr>
1959 <td style="width:42%;text-align:left" data-i18n="Ranged-i-Crossbow" ><i>Ranged</i> (Crossbow) †</td>
1960 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_RangedCrossbowCareerSkill" /><span></span>
1961 </td>
1962 <td style="width:10%">
1963 <select name="attr_RangedCrossBow_char" style="width:100%" class="sheet-input-selectbox" >
1964 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1965 <option value="@{Current_BS}" selected data-i18n="BS-p">(BS)</option>
1966 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
1967 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
1968 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
1969 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
1970 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
1971 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
1972 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
1973 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
1974 </select>
1975 </td>
1976 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_RangedCrossBow_adv" value="0" />
1977 </td>
1978 <td style="width:10%">
1979 <input type="number" style="text-align:center;" name="attr_RangedCrossBow_mod" value="0" />
1980 </td>
1981 <td style="width:10%">
1982 <input type="number" name="attr_RangedCrossBow" style="text-align:center;" value="floor(@{RangedCrossBow_char}+@{RangedCrossBow_adv}+@{RangedCrossBow_mod})" disabled="true"/>
1983 </td>
1984 <td style="width:10%">
1985 <button type="roll" style="width:90%" name="roll_RangedCrossBow" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Ranged (Crossbow)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{RangedCrossBow} ]]}}">
1986 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
1987 </button>
1988 </td>
1989 </tr>
1990
1991 <tr>
1992 <td style="width:42%;text-align:left" data-i18n="Ranged-i-Engineering" ><i>Ranged</i> (Engineering)</td>
1993 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_RangedEngineeringCareerSkill" /><span></span>
1994 </td>
1995 <td style="width:10%">
1996 <select name="attr_RangedEngineering_char" style="width:100%" class="sheet-input-selectbox" >
1997 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
1998 <option value="@{Current_BS}" selected data-i18n="BS-p">(BS)</option>
1999 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
2000 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
2001 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
2002 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
2003 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
2004 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
2005 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
2006 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
2007 </select>
2008 </td>
2009 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_RangedEngineering_adv" value="0" />
2010 </td>
2011 <td style="width:10%">
2012 <input type="number" style="text-align:center;" name="attr_RangedEngineering_mod" value="0" />
2013 </td>
2014 <td style="width:10%">
2015 <input type="number" name="attr_RangedEngineering" style="text-align:center;" value="floor(@{RangedEngineering_char}+@{RangedEngineering_adv}+@{RangedEngineering_mod})" disabled="true"/>
2016 </td>
2017 <td style="width:10%">
2018 <button type="roll" style="width:90%" name="roll_RangedEngineering" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Ranged (Engineering)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{RangedEngineering} ]]}}">
2019 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
2020 </button>
2021 </td>
2022 </tr>
2023
2024 <tr>
2025 <td style="width:42%;text-align:left" data-i18n="Ranged-i-Entangling" ><i>Ranged</i> (Entangling)</td>
2026 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_RangedEntanglingCareerSkill" /><span></span>
2027 </td>
2028 <td style="width:10%">
2029 <select name="attr_RangedEntangling_char" style="width:100%" class="sheet-input-selectbox" >
2030 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
2031 <option value="@{Current_BS}" selected data-i18n="BS-p">(BS)</option>
2032 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
2033 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
2034 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
2035 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
2036 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
2037 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
2038 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
2039 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
2040 </select>
2041 </td>
2042 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_RangedEntangling_adv" value="0" />
2043 </td>
2044 <td style="width:10%">
2045 <input type="number" style="text-align:center;" name="attr_RangedEntangling_mod" value="0" />
2046 </td>
2047 <td style="width:10%">
2048 <input type="number" name="attr_RangedEntangling" style="text-align:center;" value="floor(@{RangedEntangling_char}+@{RangedEntangling_adv}+@{RangedEntangling_mod})" disabled="true"/>
2049 </td>
2050 <td style="width:10%">
2051 <button type="roll" style="width:90%" name="roll_RangedEntangling" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Ranged (Engtangling)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{RangedEngtangling} ]]}}">
2052 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
2053 </button>
2054 </td>
2055 </tr>
2056
2057 <tr>
2058 <td style="width:42%;text-align:left" data-i18n="Ranged-i-Explosives"><i>Ranged</i> (Explosives)</td>
2059 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_RangedExplosivesCareerSkill" /><span></span>
2060 </td>
2061 <td style="width:10%">
2062 <select name="attr_RangedExplosives_char" style="width:100%" class="sheet-input-selectbox" >
2063 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
2064 <option value="@{Current_BS}" selected data-i18n="BS-p">(BS)</option>
2065 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
2066 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
2067 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
2068 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
2069 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
2070 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
2071 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
2072 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
2073 </select>
2074 </td>
2075 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_RangedExplosives_adv" value="0" />
2076 </td>
2077 <td style="width:10%">
2078 <input type="number" style="text-align:center;" name="attr_RangedExplosives_mod" value="0" />
2079 </td>
2080 <td style="width:10%">
2081 <input type="number" name="attr_RangedExplosives" style="text-align:center;" value="floor(@{RangedExplosives_char}+@{RangedExplosives_adv}+@{RangedExplosives_mod})" disabled="true"/>
2082 </td>
2083 <td style="width:10%">
2084 <button type="roll" style="width:90%" name="roll_RangedExplosives" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Ranged (Explosives)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{RangedExplosives} ]]}}">
2085 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
2086 </button>
2087 </td>
2088 </tr>
2089
2090 <tr>
2091 <td style="width:42%;text-align:left" data-i18n="Ranged-i-Sling" ><i>Ranged</i> (Sling)</td>
2092 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_RangedSlingCareerSkill" /><span></span>
2093 </td>
2094 <td style="width:10%">
2095 <select name="attr_RangedSling_char" style="width:100%" class="sheet-input-selectbox" >
2096 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
2097 <option value="@{Current_BS}" selected data-i18n="BS-p">(BS)</option>
2098 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
2099 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
2100 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
2101 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
2102 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
2103 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
2104 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
2105 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
2106 </select>
2107 </td>
2108 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_RangedSling_adv" value="0" />
2109 </td>
2110 <td style="width:10%">
2111 <input type="number" style="text-align:center;" name="attr_RangedSling_mod" value="0" />
2112 </td>
2113 <td style="width:10%">
2114 <input type="number" name="attr_RangedSling" style="text-align:center;" value="floor(@{RangedSling_char}+@{RangedSling_adv}+@{RangedSling_mod})" disabled="true"/>
2115 </td>
2116 <td style="width:10%">
2117 <button type="roll" style="width:90%" name="roll_RangedSling" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Ranged (Sling)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{RangedSling} ]]}}">
2118 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
2119 </button>
2120 </td>
2121 </tr>
2122
2123 <tr>
2124 <td style="width:42%;text-align:left" data-i18n="Ranged-i-Throwing" ><i>Ranged</i> (Throwing) †</td>
2125 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_RangedThrowingCareerSkill" /><span></span>
2126 </td>
2127 <td style="width:10%">
2128 <select name="attr_RangedThrowing_char" style="width:100%" class="sheet-input-selectbox" >
2129 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
2130 <option value="@{Current_BS}" selected data-i18n="BS-p">(BS)</option>
2131 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
2132 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
2133 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
2134 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
2135 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
2136 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
2137 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
2138 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
2139 </select>
2140 </td>
2141 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_RangedThrowing_adv" value="0" />
2142 </td>
2143 <td style="width:10%">
2144 <input type="number" style="text-align:center;" name="attr_RangedThrowing_mod" value="0" />
2145 </td>
2146 <td style="width:10%">
2147 <input type="number" name="attr_RangedThrowing" style="text-align:center;" value="floor(@{RangedThrowing_char}+@{RangedThrowing_adv}+@{RangedThrowing_mod})" disabled="true"/>
2148 </td>
2149 <td style="width:10%">
2150 <button type="roll" style="width:90%" name="roll_RangedThrowing" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Ranged (Throwing)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{RangedThrowing} ]]}}">
2151 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
2152 </button>
2153 </td>
2154 </tr>
2155 </table>
2156 </div> <!-- table wrapper --->
2157
2158<!-- Magic, Blessing ans Miracles -->
2159 <label style="text-align:center; font-size:0.8em;" data-i18n="Magic-Notice" >†= Can be used untrained but loses all Qualities and keeps the Flaws</label>
2160 <table class="tablealt" style="width:100%">
2161 <tr>
2162 <th COLSPAN=8><div class="sheet-bluelabel"><label style="text-align:center" data-i18n="MAGIC-BLESSINGS-AND-MIRACLES-ADVANCED" >MAGIC, BLESSINGS AND MIRACLES (ADVANCED)</label></div>
2163 </th>
2164 </tr>
2165 <tr>
2166 <td style="text-align:center; width:42%"><label style="text-align:left" data-i18n="Name" >Name</label>
2167 </td>
2168 <td style="text-align:center; width:8%">
2169 </td>
2170 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Char." >Char.</label>
2171 </td>
2172 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Adv." >Adv.</label>
2173 </td>
2174 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Mod." >Mod.</label>
2175 </td>
2176 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Total" >Total</label>
2177 </td>
2178 <td style="text-align:center; width:10%">
2179 </td>
2180 </tr>
2181
2182<!-- Language Magick -->
2183 <tr>
2184 <td style="width:42%;text-align:left" data-i18n="Language-i-Magick-p" ><i>Language</i> (Magick)</td>
2185 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_LanguageMagickCareerSkill" /><span></span>
2186 </td>
2187 <td style="width:10%">
2188 <select name="attr_LanguageMagick_char" style="width:100%" class="sheet-input-selectbox" >
2189 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
2190 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
2191 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
2192 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
2193 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
2194 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
2195 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
2196 <option value="@{Current_Int}" selected data-i18n="Int-p">(Int)</option>
2197 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
2198 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
2199 </select>
2200 </td>
2201 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_LanguageMagick_adv" value="0" />
2202 </td>
2203 <td style="width:10%">
2204 <input type="number" style="text-align:center;" name="attr_LanguageMagick_mod" value="0" />
2205 </td>
2206 <td style="width:10%">
2207 <input type="number" name="attr_LanguageMagick" style="text-align:center;" value="floor(@{LanguageMagick_char}+@{LanguageMagick_adv}+@{LanguageMagick_mod})" disabled="true"/>
2208 </td>
2209 <td style="width:10%">
2210 <button type="roll" style="width:90%" name="roll_LanguageMagick" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Language (Magick)}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{LanguageMagick} ]]}}">
2211 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
2212 </button>
2213 </td>
2214 </tr>
2215<!-- Pray Skill -->
2216 <tr>
2217 <td style="width:42%;text-align:left" data-i18n="Pray" >Pray</td>
2218 <td style="width:8%;text-align:left"><input type="checkbox" value="1" name="attr_PrayCareerSkill" /><span></span>
2219 </td>
2220 <td style="width:10%">
2221 <select name="attr_Pray_char" style="width:100%" class="sheet-input-selectbox" >
2222 <option value="@{Current_WS}" data-i18n="WS-p">(WS)</option>
2223 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
2224 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
2225 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
2226 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
2227 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
2228 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
2229 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
2230 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
2231 <option value="@{Current_Fel}" selected data-i18n="Fel-p">(Fel)</option>
2232 </select>
2233 </td>
2234 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_Pray_adv" value="0" />
2235 </td>
2236 <td style="width:10%">
2237 <input type="number" style="text-align:center;" name="attr_Pray_mod" value="0" />
2238 </td>
2239 <td style="width:10%">
2240 <input type="number" name="attr_Pray" style="text-align:center;" value="floor(@{Pray_char}+@{Pray_adv}+@{Pray_mod})" disabled="true"/>
2241 </td>
2242 <td style="width:10%">
2243 <button type="roll" style="width:90%" name="roll_Pray" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=Pray}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{Pray} ]]}}">
2244 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
2245 </button>
2246 </td>
2247 </tr>
2248 </table>
2249
2250 </div>
2251</div>
2252
2253<!-- Grouped and Advanced Skills -->
2254<hr>
2255<div class="sheet-col sheet-table" style="width:48%">
2256 <table style="text-align:center; width:100%">
2257 <tr>
2258 <th COLSPAN=10><label style="text-align:center" data-i18n="GROUPED-&-ADVANCED-SKILLS" >GROUPED & ADVANCED SKILLS</label>
2259 </th>
2260 </tr>
2261 <tr>
2262 <td style="text-align:center; width:42%"><label style="text-align:left" data-i18n="Name" >Name</label>
2263 </td>
2264 <td style="text-align:center; width:8%">
2265 </td>
2266 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Char." >Char.</label>
2267 </td>
2268 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Adv." >Adv.</label>
2269 </td>
2270 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Mod." >Mod.</label>
2271 </td>
2272 <td style="text-align:center; width:10%"><label style="text-align:center" data-i18n="Total" >Total</label>
2273 </td>
2274 <td style="text-align:center; width:10%">
2275 </td>
2276 </tr>
2277 </table>
2278 <fieldset class="repeating_advancedskills" name="attr_repeating_advancedskills">
2279 <table style="width:100%">
2280 <tr>
2281 <td style="width:42%;text-align:left"><input class="sheet-baseinfo" type="text" name="attr_CustomSkillName" />
2282 </td>
2283 <td style="width:8%"><input type="checkbox" value="1" name="attr_CustomCareerSkill" /><span></span>
2284 </td>
2285 <td style="width:10%">
2286 <select name="attr_CustomSkill_char" style="width:100%" class="sheet-input-selectbox" >
2287 <option value="@{Current_WS}" selected data-i18n="WS-p">(WS)</option>
2288 <option value="@{Current_BS}" data-i18n="BS-p">(BS)</option>
2289 <option value="@{Current_S}" data-i18n="S-p">(S)</option>
2290 <option value="@{Current_T}" data-i18n="T-p">(T)</option>
2291 <option value="@{Current_I}" data-i18n="I-p">(I)</option>
2292 <option value="@{Current_Ag}" data-i18n="Ag-p">(Ag)</option>
2293 <option value="@{Current_Dex}" data-i18n="Dex-p">(Dex)</option>
2294 <option value="@{Current_Int}" data-i18n="Int-p">(Int)</option>
2295 <option value="@{Current_WP}" data-i18n="WP-p">(WP)</option>
2296 <option value="@{Current_Fel}" data-i18n="Fel-p">(Fel)</option>
2297 </select>
2298 </td>
2299 <td style="width:10%"><input type="number" style="text-align:center;" name="attr_CustomSkill_adv" value="1" />
2300 </td>
2301 <td style="width:10%">
2302 <input type="number" style="text-align:center;" name="attr_CustomSkill_mod" value="0" />
2303 </td>
2304 <td style="width:10%">
2305 <input type="number" name="attr_CustomSkill" style="text-align:center;" value="floor(@{CustomSkill_char}+@{CustomSkill_adv}+@{CustomSkill_mod})" disabled="true"/>
2306 </td>
2307 <td style="width:10%">
2308 <button type="roll" name="roll_CustomSkill" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=@{CustomSkillName}}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{CustomSkill} ]]}}">
2309 <label class="labelbutton" style="text-align:center" data-i18n="Roll">Roll</label>
2310 </button>
2311 </td>
2312 </tr>
2313 </table>
2314 </fieldset>
2315 <br>
2316</div>
2317
2318<!-- Talents -->
2319 <div class="sheet-col sheet-table" style="width:48%">
2320 <h4 data-i18n="Talents" >Talents</h4>
2321 <table style="width:100%">
2322 <fieldset class="repeating_talents" name="repeating_talents">
2323 <div style="width:100%">
2324 <div class="sheet-item" style="width:72%"><input type="text" placeholder="Name" name="attr_TalentName" />
2325 </div>
2326 <div class="sheet-item" style="width:8%"><input type="number" style="text-align:center" value="1" name="attr_TalentNumber" />
2327 </div>
2328 <div class="sheet-item" style="width:8%"><button type="roll" style="width:90%" name="roll_TalentDisplay" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=@{TalentName}}} {{talent=@{TalentName}}} {{talentdescription=@{TalentDesc}}}">I</button>
2329 </div>
2330 <input type="checkbox" class="sheet-arrow" name="attr_TalentDescHide"/><span></span>
2331 <div class="sheet-body">
2332 <textarea name="attr_Talentdesc" placeholder="Description" style="width:90%; height:50px"></textarea>
2333 </div>
2334 </div>
2335 </fieldset>
2336 </table>
2337 </div>
2338
2339</div>
2340</div>
2341
2342
2343
2344<div class="sheet-tab-content sheet-tabGearMagic">
2345<div class="sheet-wrapper">
2346 <br>
2347
2348<!-- Middle Section; Armour and Armour Points-->
2349<table>
2350
2351
2352<!-- Armour -->
2353 <td class="sheet-col" style="width:60%">
2354 <div class="sheet-col" style="width:100%">
2355 <h4 data-i18n="Armour" >ARMOUR</h4>
2356 <div class="sheet-col" style="width:100%; text-align:left">
2357 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="Head" >Head</label>
2358 </div>
2359 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="R.Arm" >R.Arm</label>
2360 </div>
2361 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="L.Arm" >L.Arm</label>
2362 </div>
2363 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="Body" >Body</label>
2364 </div>
2365 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="R.Leg" >R.Leg</label>
2366 </div>
2367 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="L.Leg">L.Leg</label>
2368 </div>
2369 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="Shield">Shield</label>
2370 </div>
2371 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="AP" >AP</label>
2372 </div>
2373 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="Enc." >Enc.</label>
2374 </div>
2375 <div class="sheet-col" style="width:10%; ">
2376 </div>
2377 </div>
2378 <fieldset class="repeating_armor" name="attr_repeating_armor">
2379 <div style="width:100%; text-align:left">
2380 <div class="sheet-col" style="width:9%;"><input type="checkbox" value="1" name="attr_ArmourHead" /><span></span>
2381 </div>
2382 <div class="sheet-col" style="width:9%;"><input type="checkbox" value="1" name="attr_ArmourRArm" /><span></span>
2383 </div>
2384 <div class="sheet-col" style="width:9%;"><input type="checkbox" value="1" name="attr_ArmourLArm" /><span></span>
2385 </div>
2386 <div class="sheet-col" style="width:9%;"><input type="checkbox" value="1" name="attr_ArmourBody" /><span></span>
2387 </div>
2388 <div class="sheet-col" style="width:9%;"><input type="checkbox" value="1" name="attr_ArmourRLeg" /><span></span>
2389 </div>
2390 <div class="sheet-col" style="width:9%;"><input type="checkbox" value="1" name="attr_ArmourLLeg" /><span></span>
2391 </div>
2392 <div class="sheet-col" style="width:9%;"><input type="checkbox" value="1" name="attr_ArmourShield" /><span></span>
2393 </div>
2394 <div class="sheet-col" style="width:10%;"><input type="number" value="0" style="text-align:center" name="attr_ArmourPoints" />
2395 </div>
2396 <div class="sheet-col" style="width:10%;"><input type="number" value="0" style="text-align:center"name="attr_ArmourEnc" />
2397 </div>
2398 <div class="sheet-item" style="width:8%"><button type="roll" style="width:90%" name="roll_ArmorDisplay" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=@{ArmourName}}} {{talentdescription=@{ArmourDesc}}}">I</button>
2399 </div>
2400 </div>
2401 <div style="width:100%; text-align:left">
2402 <div class="sheet-col" style="width:40%;">
2403 <input type="text" placeholder="Name" name="attr_ArmourName" />
2404 </div>
2405 <div class="sheet-col" style="width:47.5%;">
2406 <input type="text" placeholder="Qualities/Flaws" name="attr_ArmourQualities" />
2407 </div>
2408 <input type="checkbox" class="sheet-arrow" style="" name="attr_ArmourDescHide"/>
2409
2410 <span></span>
2411 <div class="sheet-body">
2412 <textarea name="attr_Armourdesc" placeholder="Description" style="width:90%; height:50px"></textarea>
2413 </div>
2414 </div>
2415 </fieldset>
2416 </div>
2417 </td>
2418
2419<!-- Armour Points -->
2420 <td class="sheet-col" style="width:40%">
2421 <div class="sheet-col" style="width:100%">
2422 <table class="sheet-armortable" style="width:100%;margin-left:10px; background-size:176px 314px;">
2423 <tr>
2424 <th COLSPAN=10><label style="text-align:center" data-i18n="ARMOUR-POINTS" >ARMOUR POINTS</label>
2425 </th>
2426 </tr>
2427 <tr>
2428 <td style="width:10%">
2429 </td>
2430 <td style="width:10%">
2431 </td>
2432 <td style="width:10%">
2433 </td>
2434 <td style="width:10%">
2435 </td>
2436 <td style="width:10%">
2437 </td>
2438 <td style="width:10%">
2439 </td>
2440 <td style="width:10%">
2441 </td>
2442 <td style="width:10%">
2443 </td>
2444 <td style="width:10%">
2445 </td>
2446 <td style="width:10%">
2447 </td>
2448 </tr>
2449 <tr>
2450 <td COLSPAN=4>
2451 </td>
2452 <td COLSPAN=2><br>01-09<br>
2453 <input type="number" value="0" style="text-align:center;height:50px;width:50px;font-size:24px" name="attr_ArmourAPHead" readonly/><br>
2454 <label style="text-align:center" data-i18n="Head" >Head</label>
2455 </td>
2456 <td COLSPAN=4>
2457 </td>
2458 </tr>
2459 <tr>
2460 <td COLSPAN=1>
2461 </td>
2462 <td COLSPAN=3>25-44<br>
2463 <input type="number" value="0" style="text-align:center;height:50px;width:50px;font-size:24px" name="attr_ArmourAPRightArm" readonly/><br>
2464 <label style="text-align:center" data-i18n="Right Arm" >Right Arm</label><br>
2465 (or primary arm)
2466 </td>
2467 <td COLSPAN=2><br>45-79<br>
2468 <input type="number" value="0" style="text-align:center;height:50px;width:50px;font-size:24px" name="attr_ArmourAPBody" readonly/><br>
2469 <label style="text-align:center" data-i18n="Body" >Body</label>
2470 </td>
2471 <td COLSPAN=3>10-24<br>
2472 <input type="number" value="0" style="text-align:center;height:50px;width:50px;font-size:24px" name="attr_ArmourAPLeftArm" readonly/><br>
2473 <label style="text-align:center" data-i18n="Left Arm" >Left Arm</label><br>
2474 (or secondary arm)
2475 </td>
2476 <td COLSPAN=1>
2477 </td>
2478 </tr>
2479 <tr>
2480 <td class="sheet-armorshield" COLSPAN=2><br><br>
2481 <input type="number" value="0" style="text-align:center;height:50px;width:50px;font-size:24px" name="attr_ArmourAPShield" readonly/><br>
2482 <label style="text-align:center" data-i18n="Shield" >Shield</label>
2483 </td>
2484 <td COLSPAN=1>
2485 </td>
2486 <td COLSPAN=2><br>90-00<br>
2487 <input type="number" value="0" style="text-align:center;height:50px;width:50px;font-size:24px" name="attr_ArmourAPRightLeg" readonly/><br>
2488 <label style="text-align:center" data-i18n="Right Leg" >Right Leg</label>
2489 </td>
2490 <td COLSPAN=1>
2491 </td>
2492 <td COLSPAN=2><br>80-89<br>
2493 <input type="number" value="0" style="text-align:center;height:50px;width:50px;font-size:24px" name="attr_ArmourAPLeftLeg" readonly/><br>
2494 <label style="text-align:center" data-i18n="Leg Left" >Left Leg</label>
2495 </td>
2496 <td COLSPAN=3>
2497 </td>
2498 </tr>
2499 </table>
2500 </div>
2501 </td>
2502</table>
2503
2504<!-- Weapons -->
2505 <hr>
2506 <div style="width:100%">
2507 <h4 data-i18n="WEAPONS" >WEAPONS</h4>
2508 <div class="sheet-col" style="width:100%; text-align:left">
2509 <div class="sheet-col" style="width:25%;"><label style="text-align:left" data-i18n="Name">Name</label>
2510 </div>
2511 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="Group" >Group</label>
2512 </div>
2513 <div class="sheet-col" style="width:5%; margin:-2px; "><label style="text-align:center" data-i18n="Enc." >Enc.</label>
2514 </div>
2515 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="Range/Reach" >Range/Reach</label>
2516 </div>
2517 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="Damage" >Damage</label>
2518 </div>
2519 <div class="sheet-col" style="width:25%; margin:-2px; "><label style="text-align:left" data-i18n="Qualities" >Qualities</label>
2520 </div>
2521 </div>
2522 <fieldset class="repeating_weapons" name="attr_repeating_weapons">
2523 <div style="width:100%; text-align:left">
2524 <div class="sheet-col" style="width:25%;"><input type="text" name="attr_WeaponName" />
2525 </div>
2526 <div class="sheet-col" style="width:10%; margin:-2px; ">
2527 <select name="attr_WeaponGroup" style="width:100%" class="sheet-input-selectbox" >
2528 <option value="@{MeleeBasic}" selected data-i18n="Melee-Basic">Melee (Basic)</option>
2529 <option value="@{MeleeBrawling}" data-i18n="Melee-Brawling">Melee (Brawling)</option>
2530 <option value="@{MeleeCavalry}" data-i18n="Melee-Cavalry">Melee (Cavalry)</option>
2531 <option value="@{MeleeFencing}" data-i18n="Melee-Fencing">Melee (Fencing)</option>
2532 <option value="@{MeleeFlail}" data-i18n="Melee-Flail">Melee (Flail)</option>
2533 <option value="@{MeleeParry}" data-i18n="Melee-Parry">Melee (Parry)</option>
2534 <option value="@{MeleePoleArm}" data-i18n="Melee-Pole-Arm">Melee (Pole-Arm)</option>
2535 <option value="@{MeleeTwoHanded}" data-i18n="Melee-2H">Melee (Two-Handed)</option>
2536 <option value="@{RangedBlackpowder}" data-i18n="Ranged-Blackpowder">Ranged (Blackpowder)</option>
2537 <option value="@{RangedBow}" data-i18n="Ranged-Bow">Ranged (Bow)</option>
2538 <option value="@{RangedCrossbow}" data-i18n="Ranged-Crossbow">Ranged (Crossbow)</option>
2539 <option value="@{RangedEngineering}" data-i18n="Ranged-Engineering">Ranged (Engineering)</option>
2540 <option value="@{RangedEntangling}" data-i18n="Ranged-Entangling">Ranged (Entangling)</option>
2541 <option value="@{RangedExplosives}" data-i18n="Ranged-Explosives">Ranged (Explosives)</option>
2542 <option value="@{RangedSling}" data-i18n="Ranged-Sling">Ranged (Sling)</option>
2543 <option value="@{RangedThrowing}" data-i18n="Ranged-Throwing">Ranged (Throwing)</option>
2544 <option value="@{Current_WS}" data-i18n="Weapon-Skill">Weapon Skill</option>
2545 <option value="@{Current_BS}" data-i18n="Ballistic-Skill">Ballistic Skill</option>
2546 </select>
2547 </div>
2548 <div class="sheet-col" style="width:5%; margin:-2px; "><input type="text" style="text-align:center" name="attr_WeaponEnc" />
2549 </div>
2550 <div class="sheet-col" style="width:10%; margin:-2px; "><input type="text" style="text-align:center" name="attr_WeaponRange" />
2551 </div>
2552 <div class="sheet-col" style="width:10%; margin:-2px; "><input type="text" style="text-align:center" name="attr_WeaponDamage" />
2553 </div>
2554 <div class="sheet-col" style="width:25%; margin:-2px; "><input type="text" name="attr_WeaponQualities" />
2555 </div>
2556 <div class="sheet-col" style="width:5%; margin:-2px; "><button type="roll" name="roll_WeaponDamage" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=@{WeaponName}}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{WeaponGroup} ]]}} {{weapon=@{WeaponName}}} {{range=@{WeaponRange}}} {{damage=@{WeaponDamage}}} {{qualities=@{WeaponQualities}}} {{description=@{Weapondesc}}} {{hitlocation=1}} ]]"><label class="labelbutton" style="text-align:center">Roll</label></button>
2557 </div>
2558 <div class="sheet-item" style="width:5%;text-align:center"><input type="checkbox" name="attr_WeaponHeld" value="1" checked style="text-align:center" /><span></span>
2559 </div>
2560 <div class="sheet-body">
2561 <textarea name="attr_Trappingdesc" placeholder="Description" style="width:90%; height:50px"></textarea>
2562 </div>
2563 <input type="checkbox" class="sheet-arrow" name="attr_WeaponDescHide"/><span></span>
2564 <div class="sheet-body">
2565 <textarea name="attr_Weapondesc" style="width:90%; height:50px"></textarea>
2566 </div>
2567 </div>
2568 </fieldset>
2569 </div>
2570
2571<!-- Spells and Prayers -->
2572 <hr>
2573 <div style="width:100%">
2574 <h4 data-i18n="SPELLS-AND-PRAYERS" >SPELLS AND PRAYERS</h4>
2575 <div class="sheet-wrapper" style="width:100%; text-align:center">
2576 <table>
2577 <tr>
2578 <td class="sheet-col" style="width:14%">
2579 </td>
2580 <td class="sheet-col" style="width:27%"><label data-i18n="Extended-Channeling-SL" >Extended Channelling SL</label>
2581 </td>
2582 <td class="sheet-col" style="width:5%;"><input type="number" style="text-align:center;" name="attr_ExtendedChannellingSl" value="0">
2583 </td>
2584
2585 <td class="sheet-col" style="width:19%">
2586 </td>
2587
2588 <td class="sheet-col" style="width:14%"><label data-i18n="Sin-Points" >Sin Points</label>
2589 </td>
2590 <td class="sheet-col" style="width:5%"><input type="number" style="text-align:center;" name="attr_SinPoints" value="0" />
2591 </td>
2592 <td class="sheet-col" style="width:14%">
2593 </td>
2594 </tr>
2595 </table>
2596 </div>
2597 <div class="sheet-col" style="width:100%; text-align:left">
2598 <div class="sheet-col" style="width:20%;"><label style="text-align:left" data-i18n="Name" >Name</label>
2599 </div>
2600 <div class="sheet-col" style="width:10%;"><label style="text-align:center" data-i18n="Type" >Type</label>
2601 </div>
2602 <div class="sheet-col" style="width:5%; margin:-2px; "><label style="text-align:center" data-i18n="CN" >CN</label>
2603 </div>
2604 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="Range" >Range</label>
2605 </div>
2606 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="Target" >Target</label>
2607 </div>
2608 <div class="sheet-col" style="width:10%; margin:-2px; "><label style="text-align:center" data-i18n="Duration" >Duration</label>
2609 </div>
2610 <div class="sheet-col" style="width:25%; margin:-2px; "><label style="text-align:left" data-i18n="Effect" >Effect</label>
2611 </div>
2612 </div>
2613 <fieldset class="repeating_spells" name="attr_repeating_spells">
2614 <div style="width:100%; text-align:left">
2615 <div class="sheet-col" style="width:20%;"><input type="text" name="attr_Spell" />
2616 </div>
2617 <div class="sheet-col" style="width:10%; margin:-2px; ">
2618 <select name="attr_SpellType" style="width:100%" class="sheet-input-selectbox" >
2619 <option value="@{LanguageMagick}" selected><label data-i18n="Arcane" >Arcane</label></option>
2620 <option value="@{Pray}"><label data-i18n="Divine" >Divine</label></option>
2621 </select>
2622 </div>
2623 <div class="sheet-col" style="width:5%; margin:-2px; "><input type="text" style="text-align:center" name="attr_SpellCN" />
2624 </div>
2625 <div class="sheet-col" style="width:10%; margin:-2px; ">
2626 <!-- Spell Range -->
2627 <select name="attr_SpellRange" type="number" style="width:100%" class="sheet-input-selectbox" >
2628 <option value="[[@{Current_WP}]] Yards" selected><label data-i18n="Willpower-Yards">Willpower Yards</label></option>
2629 <option value="[[@{Current_WPB}]] Yards"><label data-i18n="Willpower-Bonus-Yards">Willpower Bonus Yards</label></option>
2630 <option value="[[@{Current_WPB}]] Miles"><label data-i18n="Willpower-Bonus-Miles">Willpower Bonus Miles</label></option>
2631 <option value="1 Yard"><label data-i18n="1-Yard">1 Yard</label></option>
2632 <option value="You"><label data-i18n="You">You</label></option>
2633 <option value="Touch"><label data-i18n="Touch">Touch</label></option>
2634 <option value="Special"><label data-i18n="Special">Special</label></option>
2635 <option value="[[@{Current_I}]] Yards" selected><label data-i18n="Initiative-Yards">Initiative Yards</label></option>
2636 <option value="[[@{Current_IB}]] Miles" selected><label data-i18n="Initiative-Bonus-Miles">Initiative Bonus Miles</label></option>
2637 <option value="[[@{Current_IntB}]] Yards" selected><label data-i18n="Intelligence-Bonus-Yards">Intelligence Bonus Yards</label></option>
2638 <option value="[[@{Current_Fel}]] Yards" selected><label data-i18n="Fellowship-Yards">Fellowship Yards</label></option>
2639 <option value="[[@{Current_FelB}]] Yards" selected><label data-i18n="Fellowship-Bonus-Yards">Fellowship Bonus Yards</label></option>
2640 <option value="6 Yards" selected><label data-i18n="6-Yards">6 Yards</label></option>
2641 </select>
2642 </div>
2643 <div class="sheet-col" style="width:10%; margin:-2px; "><input type="text" style="text-align:center" name="attr_SpellTarget" />
2644 </div>
2645 <div class="sheet-col" style="width:10%; margin:-2px; "><input type="text" style="text-align:center" name="attr_SpellDuration" />
2646 </div>
2647 <div class="sheet-col" style="width:25%; margin:-2px; "><input type="text" name="attr_SpellEffect" />
2648 </div>
2649 <div class="sheet-col" style="width:5%; margin:-2px; "><button type="roll" name="cast_spell_info" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=@{Spell}}} {{dice=[[ @{custom_roll_criticals} ]]}} {{against=[[ ?{Modifier?|0}+@{SpellType} ]]}} {{spell=@{Spell}}} {{cn=@{SpellCN}}} {{range=@{SpellRange}}} {{target=@{SpellTarget}}} {{duration=@{SpellDuration}}} {{effect=@{SpellEffect}}} {{description=@{Spelldesc}}} {{hitlocation=1}} {{description=@{Spelldesc}}} {{channelling=@{ExtendedChannellingSl}}}"><label class="labelbutton" style="text-align:center">Roll</label></button>
2650 </div>
2651 <input type="checkbox" class="sheet-arrow" style="" name="attr_SpellDescHide"/><span></span>
2652 <div class="sheet-body">
2653 <textarea name="attr_Spelldesc" placeholder="Description" style="width:90%; height:50px"></textarea>
2654 </div>
2655 </div>
2656 </fieldset>
2657 </div>
2658
2659<!-- INJURIES, AFFLICTIONS, PSYCHOLOGY AND MUTATIONS -->
2660 <hr>
2661 <h4 data-i18n="INJURIES-AFFLICTIONS-PYSCHOLOGY-&-MUTATIONS" >INJURIES, AFFLICTIONS, PSYCHOLOGY AND MUTATIONS</h4>
2662 <!-- Corruption -->
2663 <div class="sheet-wrapper" style="width:100%; text-align:center;">
2664 <table>
2665 <tr>
2666 <td style="width:10%">
2667 </td>
2668
2669 <td style="text-align:left; width:20%"><label style="text-align:left" data-i18n="Current-Corruption" >Current Corruption</label>
2670 </td>
2671 <td style="text-align:left; width:5%"><input type="number" name="attr_corruption" style="text-align:center" value="0" />
2672 </td>
2673
2674 <td style="width:5%">
2675 </td>
2676
2677 <td style="text-align:left; width:15%"><label style="text-align:left" data-i18n="Max-Corruption" >Max Corruption</label>
2678 </td>
2679 <td style="text-align:left; width:5%"><input type="number" name="attr_maxcorruption" style="text-align:center" value="floor(@{Current_TB}+@{Current_WPB}+@{corruptionmod})" disabled/>
2680 </td>
2681
2682 <td style="width:10%">
2683 </td>
2684
2685 <td style="text-align:left; width:10"><label style="text-align:left" data-i18n="Modifier" >Modifier</label>
2686 </td>
2687 <td style="text-align:left; width:5%"><input type="number" name="attr_corruptionmod" style="text-align:center" value="0" />
2688 </td>
2689
2690 <td style="width:15%">
2691 </td>
2692 </tr>
2693 </table>
2694 </div>
2695 <div class="sheet-wrapper" style="width:100%">
2696 <div style="width:100%; text-align:left;">
2697 <div class="sheet-col" style="width:32%"><label style="text-align:left" data-i18n="Name" >Name</label>
2698 </div>
2699 <div class="sheet-col" style="width:38%"><label style="text-align:left" data-i18n="Effect" >Effect</label>
2700 </div>
2701 <div class="sheet-col" style="width:20%"><label style="text-align:center" data-i18n="Time" >Time</label>
2702 </div>
2703 </div>
2704 <fieldset class="repeating_afflictions" name="repeating_afflicitons">
2705 <div style="width 100%; text-align:left;">
2706 <div class="sheet-col" style="width:32%"><input type="text" placeholder="Affliction Name" name="attr_afflictionname" />
2707 </div>
2708 <div class="sheet-col" style="width:38%"><input type="text" placeholder="Affliction Effect" style="text-align:left" name="attr_afflictioneffect" />
2709 </div>
2710 <div class="sheet-col" style="width:20%"><input type="text" placeholder="Affliction Heal Time" style="text-align:center" name="attr_afflictionhealtime">
2711 </div>
2712
2713 <div class="sheet-item" style="width:5%"><button type="roll" style="width:90%" name="roll_AfflicitonDisplay" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=@{afflictionname}}} {{afflictiondescription=@{Afflicitondesc}}} {{afflictionEffect=@{afflictioneffect}}} {{afflictionTime=@{afflictionhealtime}}}">I</button></div>
2714 <input type="checkbox" class="sheet-arrow" style="" name="attr_AfflicitonDescHide"/><span></span>
2715 <div class="sheet-body">
2716 <textarea name="attr_Afflicitondesc" placeholder="Description" style="width:90%; height:50px"></textarea>
2717 </div>
2718 </div>
2719 </fieldset>
2720 </div>
2721
2722<!-- Trappings -->
2723 <hr>
2724 <div style="width:100%">
2725 <div class="sheet-wrapper" style="width:100%; text-align:left;">
2726 <h4 data-i18n="TRAPPINGS">TRAPPINGS</h4>
2727 <div style="width:100%">
2728 <div class="sheet-col" style="width:82%"><label style="text-align:left" data-i18n="Name" >Name</label>
2729 </div>
2730 <div class="sheet-col" style="width:5%"><label style="text-align:left" data-i18n="Enc" >Enc</label>
2731 </div>
2732 <div class="sheet-col" style="width:8%"><label style="text-align:center"></label>
2733 </div>
2734 </div>
2735 <fieldset class="repeating_trappings" name="repeating_trappings">
2736 <div style="width:100%">
2737 <div class="sheet-item" style="width:77%"><input type="text" placeholder="" name="attr_TrappingName" /></div>
2738 <div class="sheet-item" style="width:5%"><input type="number" style="text-align:center" value="0" name="attr_TrappingWeight" /></div>
2739 <div class="sheet-item" style="width:8%;text-align:center"><input type="checkbox" name="attr_TrappingHeld" value="1" checked style="text-align:center" /><span></span></div>
2740 <div class="sheet-item" style="width:5%"><button type="roll" style="width:90%" name="roll_TrappingDisplay" value="@{custom_roll_style}&{template:wfrp4} {{name=@{character_name}}} {{title=@{TrappingName}}} {{talentdescription=@{TrappingDesc}}}">I</button></div>
2741 <input type="checkbox" class="sheet-arrow" name="attr_TrappingDescHide"/><span></span>
2742 <div class="sheet-body">
2743 <textarea name="attr_Trappingdesc" placeholder="Description" style="width:90%; height:50px"></textarea>
2744 </div>
2745 </div>
2746 </fieldset>
2747
2748 </div>
2749 <div class="sheet-col" style="width:2%">
2750 </div>
2751 </div>
2752
2753</div>
2754</div>
2755
2756
2757<div class="sheet-tab-content sheet-tabInformation">
2758<div class="sheet-wrapper">
2759 <br>
2760 <div>
2761 <div class="sheet-col" style="width:48%; " >
2762 <h4 data-i18n="ROLLS" >ROLLS</h4>
2763 <select name="attr_custom_roll_style" style="width:70%" class="sheet-input-selectbox" >
2764 <option value="" selected data-i18n="Public">Public</option>
2765 <option value="/w gm" data-i18n="Whisper GM">Whisper GM</option>
2766 </select>
2767 </div>
2768 <div class="sheet-col" style="width:2%; ">
2769 </div>
2770 <div class="sheet-col" style="width:48%; " >
2771 <h4 data-i18n="CRITICALS" >CRITICALS</h4>
2772 <select name="attr_custom_roll_criticals" style="width:70%" class="sheet-input-selectbox" >
2773 <option value="1d100cs11cs22cs33cs44cs55cs66cs77cs88cs99" selected data-i18n="Normal Criticals" >Normal Criticals</option>
2774 <option value="1d100cs01cs11cs22cs33cs44cs55cs66cs77cs88cs99cf100" data-i18n="Criticals on 1, fumbles on 00">Criticals on 1, fumbles on 00</option>
2775 <option value="1d100cs01cs11cs22cs33cs44cs55cs66cs77cs88cf96cf97cf98cf99cf100" data-i18n="Criticals on 1, fumbles on 96-00">Criticals on 1, fumbles on 96-00</option>
2776 <option value="1d100cs01cs02cs03cs04cs05cs11cs22cs33cs44cs55cs66cs77cs88cf96cf97cf98cf99cf100" data-i18n="Criticals on 1-5, fumbles on 96-00">Criticals on 1-5, fumbles on 96-00</option>
2777 </select>
2778 </div>
2779 </div>
2780<!-- Notes -->
2781 <br>
2782 <div>
2783 <div class="sheet-col" style="width:48%; " >
2784 <h4 data-i18n="PERSONALITY" >PERSONALITY</h4>
2785 <textarea name="attr_Personality" style="width:90%; height:100px" ></textarea>
2786 </div>
2787 <div class="sheet-col" style="width:2%; ">
2788 </div>
2789 <div class="sheet-col" style="width:48%; " >
2790 <h4 data-i18n="APPEARANCE" >APPEARANCE</h4>
2791 <textarea name="attr_Appearance" style="width:90%; height:100px" ></textarea>
2792 </div>
2793 </div>
2794<!-- Personality -->
2795 <hr>
2796 <div>
2797 <div class="sheet-col" style="width:48%; ">
2798 <h4 data-i18n="CONTACTS/FRIENDS">CONTACTS/FRIENDS</h4>
2799 <textarea name="attr_Contacts" style="width:90%; height:100px" ></textarea>
2800 </div>
2801 <div class="sheet-col" style="width:2%; ">
2802 </div>
2803 <div class="sheet-col" style="width:48%; " >
2804 <h4 data-i18n="ENEMIES">ENEMIES</h4>
2805 <textarea name="attr_Enemies" style="width:90%; height:100px" ></textarea>
2806 </div>
2807 </div>
2808 <hr>
2809 <div>
2810 <div class="sheet-col" style="width:99%; " >
2811 <h4 data-i18n="HISTORY" >HISTORY</h4>
2812 <textarea name="attr_History" style="width:90%; height:150px" ></textarea>
2813 </div>
2814 </div>
2815 <hr>
2816 <div>
2817 <div class="sheet-col" style="width:99%; ">
2818 <h4 data-i18n="NOTES" >NOTES</h4>
2819 <textarea name="attr_Notes" style="width:90%; height:150px" ></textarea>
2820 </div>
2821 </div>
2822 <hr>
2823 <div class="sheet-col" style="text-align:center; width:100%; font-size:12px;">
2824 </div>
2825 <hr>
2826
2827</div>
2828</div>
2829
2830<div class="sheet-tab-content sheet-tabExperience">
2831<div class="sheet-wrapper">
2832 <br>
2833 <h4 data-i18n="Experience-Points">Experience Points</h4>
2834 <table style="margin-left:auto;margin-right:auto; text-align:center">
2835 <tr>
2836 <td><label style="text-align:center; height:auto;" data-i18n="Total-XP">Total XP</label>
2837 </td>
2838 <td><label style="text-align:center; height:auto;" data-i18n="Spent-XP">Spent XP</label>
2839 </td>
2840 <td><label style="text-align:center; height:auto" data-i18n="Left-XP">Left XP</label>
2841 </td>
2842 </tr>
2843 <tr>
2844 <td style="width:120px;"><input style="width:100px; text-align:center" type="number" name="attr_character_TotalExperience" value="0" />
2845 </td>
2846 <td style="width:120px;"><input style="width:100px; text-align:center" type="number" name="attr_character_SpentExperience" value="0" />
2847 </td>
2848 <td style="width:120px;"><input style="width:100px; text-align:center"type="number" name="attr_character_LeftExperience" disabled value="floor(@{character_TotalExperience}-@{character_SpentExperience})" />
2849 </td>
2850 </tr>
2851 </table>
2852 <br>
2853 <label data-i18n="Advancements-Taken-Calculated-p">Advancements Taken (Calculated):</label>
2854 <fieldset class="repeating_advancements">
2855 <table style="width:100%">
2856 <tr>
2857 <td style="width:25%"><input type="text" placeholder="Advancement Name" name="attr_advancement1" /></td>
2858 <td style="width:5%"><input type="number" placeholder="Cost" value="0" name="attr_advancement1xp" /></td>
2859 <td style="width:5%"></td>
2860 <td style="width:25%"><input type="text" placeholder="Advancement Name" name="attr_advancement2" /></td>
2861 <td style="width:5%"><input type="number" placeholder="Cost" value="0" name="attr_advancement2xp" /></td>
2862 <td style="width:5%"></td>
2863 <td style="width:25%"><input type="text" placeholder="Advancement Name" name="attr_advancement3" /></td>
2864 <td style="width:5%"><input type="number" placeholder="Cost" value="0" name="attr_advancement3xp" /></td>
2865 </tr>
2866 </table>
2867 </fieldset>
2868 </div>
2869
2870</div>
2871</div>
2872
2873<!-- possible NPC Sheet
2874<div class="sheet-tab-content sheet-tabGM">
2875 <input type='radio' name="attr_gm_show" class="sheet-tab sheet-tabNPC" value="1" checked />
2876<label class="sheet-tab" >NPC</label>
2877
2878</div> -->
2879
2880<br><br>
2881<!-- Rolltemplate wfrp4 -->
2882 <rolltemplate class="sheet-rolltemplate-wfrp4">
2883 <table>
2884 <th style="text-align:center; width:10%"><div class="sheet-rollcharacter">{{name}}</div>
2885 <div class="sheet-rolltitle">{{title}}</div>
2886 </th>
2887 <tr>
2888 <td style="text-align:left; width:10%">
2889 {{#dice}}
2890 <b>Rolled: </b> {{dice}} <b>vs</b> {{against}}
2891
2892 <!-- Success Result -->
2893 <br>**Result:**
2894 {{#rollWasCrit() dice}}
2895 {{#rollLess() dice against}}
2896 <b><i style="color:#3FB315;">Critical</i></b>
2897 {{/rollLess() dice against}}
2898 {{#rollGreater() dice against}}
2899 <b><i style="color:#cc6633;">Fumbling</i></b>
2900 {{/rollGreater() dice against}}
2901 {{/rollWasCrit() dice}}
2902 {{#rollWasFumble() dice}}
2903 <b><i style="color:#cc6633;">Fumbling</i></b>
2904 {{/rollWasFumble() dice}}
2905 {{#rollLess() dice against}}
2906 <b><i style="color:#3FB315;">Success</i></b><br>
2907 {{/rollLess() dice against}}
2908 {{#rollTotal() dice against}}
2909 <b><i style="color:#3FB315;">Success</i></b><br>
2910 {{/rollTotal() dice against}}
2911 {{#rollGreater() dice against}}
2912 <b><i style="color:#cc6633;">Failure</i></b><br>
2913 {{/rollGreater() dice against}}
2914 {{/dice}}
2915<!-- Spell Description -->
2916 {{#description}}
2917 <br><b>Description: </b> <i>{{description}}</i><br>
2918 {{/description}}
2919<!-- Weapon Stats -->
2920 {{#weapon}}
2921 <br><b>Weapon:</b> {{weapon}}<br>
2922 <b>Range/Reach:</b> {{range}}<br>
2923 <b>Dmg:</b> {{damage}}
2924 {{/weapon}}
2925<!-- Spell Stats 1st Part -->
2926 {{#spell}}
2927 <br><b>Spell:</b> {{spell}}<br>
2928 <b>CN:</b> {{cn}}
2929 {{/spell}}
2930<!-- Success Level -->
2931{{#rollBetween() against 90 99}}
2932 {{#rollTotal() dice 100}}–1{{/rollTotal() dice 100}}
2933 {{#rollBetween() dice against 99}}
2934 {{#^rollTotal() dice against}}<b>SL: </b>–0{{/^rollTotal() dice against}}
2935 {{/rollBetween() dice against 99}}
2936 {{#rollBetween() dice 90 against}}<b>SL: </b>+0{{/rollBetween() dice 90 against}}
2937 {{#rollBetween() dice 80 89}}<b>SL: </b>+1{{/rollBetween() dice 80 89}}
2938 {{#rollBetween() dice 70 79}}<b>SL: </b>+2{{/rollBetween() dice 70 79}}
2939 {{#rollBetween() dice 60 69}}<b>SL: </b>+3{{/rollBetween() dice 60 69}}
2940 {{#rollBetween() dice 50 59}}<b>SL: </b>+4{{/rollBetween() dice 50 59}}
2941 {{#rollBetween() dice 40 49}}<b>SL: </b>+5{{/rollBetween() dice 40 49}}
2942 {{#rollBetween() dice 30 39}}<b>SL: </b>+6{{/rollBetween() dice 30 39}}
2943 {{#rollBetween() dice 20 29}}<b>SL: </b>+7{{/rollBetween() dice 20 29}}
2944 {{#rollBetween() dice 10 19}}<b>SL: </b>+8{{/rollBetween() dice 10 19}}
2945 {{#rollBetween() dice 1 9}}<b>SL: </b>+9{{/rollBetween() dice 1 9}}
2946{{/rollBetween() against 90 99}}
2947{{#rollBetween() against 80 89}}
2948 {{#rollTotal() dice 100}}<b>SL: </b>–2{{/rollTotal() dice 100}}
2949 {{#rollBetween() dice 90 99}}<b>SL: </b>–1{{/rollBetween() dice 90 99}}
2950 {{#rollBetween() dice against 89}}
2951 {{#^rollTotal() dice against}}<b>SL: </b>–0{{/^rollTotal() dice against}}
2952 {{/rollBetween() dice against 89}}
2953 {{#rollBetween() dice 80 against}}<b>SL: </b>+0{{/rollBetween() dice 80 against}}
2954 {{#rollBetween() dice 70 79}}<b>SL: </b>+1{{/rollBetween() dice 70 79}}
2955 {{#rollBetween() dice 60 69}}<b>SL: </b>+2{{/rollBetween() dice 60 69}}
2956 {{#rollBetween() dice 50 59}}<b>SL: </b>+3{{/rollBetween() dice 50 59}}
2957 {{#rollBetween() dice 40 49}}<b>SL: </b>+4{{/rollBetween() dice 40 49}}
2958 {{#rollBetween() dice 30 39}}<b>SL: </b>+5{{/rollBetween() dice 30 39}}
2959 {{#rollBetween() dice 20 29}}<b>SL: </b>+6{{/rollBetween() dice 20 29}}
2960 {{#rollBetween() dice 10 19}}<b>SL: </b>+7{{/rollBetween() dice 10 19}}
2961 {{#rollBetween() dice 1 9}}<b>SL: </b>+8{{/rollBetween() dice 1 9}}
2962{{/rollBetween() against 80 89}}
2963{{#rollBetween() against 70 79}}
2964 {{#rollTotal() dice 100}}<b>SL: </b>–3{{/rollTotal() dice 100}}
2965 {{#rollBetween() dice 90 99}}<b>SL: </b>–2{{/rollBetween() dice 90 99}}
2966 {{#rollBetween() dice 80 89}}<b>SL: </b>–1{{/rollBetween() dice 80 89}}
2967 {{#rollBetween() dice against 79}}
2968 {{#^rollTotal() dice against}}<b>SL: </b>–0{{/^rollTotal() dice against}}
2969 {{/rollBetween() dice against 79}}
2970 {{#rollBetween() dice 70 against}}<b>SL: </b>+0{{/rollBetween() dice 70 against}}
2971 {{#rollBetween() dice 60 69}}<b>SL: </b>+1{{/rollBetween() dice 60 69}}
2972 {{#rollBetween() dice 50 59}}<b>SL: </b>+2{{/rollBetween() dice 50 59}}
2973 {{#rollBetween() dice 40 49}}<b>SL: </b>+3{{/rollBetween() dice 40 49}}
2974 {{#rollBetween() dice 30 39}}<b>SL: </b>+4{{/rollBetween() dice 30 39}}
2975 {{#rollBetween() dice 20 29}}<b>SL: </b>+5{{/rollBetween() dice 20 29}}
2976 {{#rollBetween() dice 10 19}}<b>SL: </b>+6{{/rollBetween() dice 10 19}}
2977 {{#rollBetween() dice 1 9}}+7{{/rollBetween() dice 1 9}}
2978{{/rollBetween() against 70 79}}
2979{{#rollBetween() against 60 69}}
2980 {{#rollTotal() dice 100}}–4{{/rollTotal() dice 100}}
2981 {{#rollBetween() dice 90 99}}<b>SL: </b>–3{{/rollBetween() dice 90 99}}
2982 {{#rollBetween() dice 80 89}}<b>SL: </b>–2{{/rollBetween() dice 80 89}}
2983 {{#rollBetween() dice 70 79}}<b>SL: </b>–1{{/rollBetween() dice 70 79}}
2984 {{#rollBetween() dice against 69}}
2985 {{#^rollTotal() dice against}}<b>SL: </b>–0{{/^rollTotal() dice against}}
2986 {{/rollBetween() dice against 69}}
2987 {{#rollBetween() dice 60 against}}<b>SL: </b>+0{{/rollBetween() dice 60 against}}
2988 {{#rollBetween() dice 50 59}}<b>SL: </b>+1{{/rollBetween() dice 50 59}}
2989 {{#rollBetween() dice 40 49}}<b>SL: </b>+2{{/rollBetween() dice 40 49}}
2990 {{#rollBetween() dice 30 39}}<b>SL: </b>+3{{/rollBetween() dice 30 39}}
2991 {{#rollBetween() dice 20 29}}<b>SL: </b>+4{{/rollBetween() dice 20 29}}
2992 {{#rollBetween() dice 10 19}}<b>SL: </b>+5{{/rollBetween() dice 10 19}}
2993 {{#rollBetween() dice 1 9}}<b>SL: </b>+6{{/rollBetween() dice 1 9}}
2994{{/rollBetween() against 60 69}}
2995{{#rollBetween() against 50 59}}
2996 {{#rollTotal() dice 100}}<b>SL: </b>–5{{/rollTotal() dice 100}}
2997 {{#rollBetween() dice 90 99}}<b>SL: </b>–4{{/rollBetween() dice 90 99}}
2998 {{#rollBetween() dice 80 89}}<b>SL: </b>–3{{/rollBetween() dice 80 89}}
2999 {{#rollBetween() dice 70 79}}<b>SL: </b>–2{{/rollBetween() dice 70 79}}
3000 {{#rollBetween() dice 60 69}}<b>SL: </b>–1{{/rollBetween() dice 60 69}}
3001 {{#rollBetween() dice against 59}}
3002 {{#^rollTotal() dice against}}<b>SL: </b>–0{{/^rollTotal() dice against}}
3003 {{/rollBetween() dice against 59}}
3004 {{#rollBetween() dice 50 against}}<b>SL: </b>+0{{/rollBetween() dice 50 against}}
3005 {{#rollBetween() dice 40 49}}<b>SL: </b>+1{{/rollBetween() dice 40 49}}
3006 {{#rollBetween() dice 30 39}}<b>SL: </b>+2{{/rollBetween() dice 30 39}}
3007 {{#rollBetween() dice 20 29}}<b>SL: </b>+3{{/rollBetween() dice 20 29}}
3008 {{#rollBetween() dice 10 19}}<b>SL: </b>+4{{/rollBetween() dice 10 19}}
3009 {{#rollBetween() dice 1 9}}<b>SL: </b>+5{{/rollBetween() dice 1 9}}
3010{{/rollBetween() against 50 59}}
3011{{#rollBetween() against 40 49}}
3012 {{#rollTotal() dice 100}}–6{{/rollTotal() dice 100}}
3013 {{#rollBetween() dice 90 99}}<b>SL: </b>–5{{/rollBetween() dice 90 99}}
3014 {{#rollBetween() dice 80 89}}<b>SL: </b>–4{{/rollBetween() dice 80 89}}
3015 {{#rollBetween() dice 70 79}}<b>SL: </b>–3{{/rollBetween() dice 70 79}}
3016 {{#rollBetween() dice 60 69}}<b>SL: </b>–2{{/rollBetween() dice 60 69}}
3017 {{#rollBetween() dice 50 59}}<b>SL: </b>–1{{/rollBetween() dice 50 59}}
3018 {{#rollBetween() dice against 49}}
3019 {{#^rollTotal() dice against}}<b>SL: </b>–0{{/^rollTotal() dice against}}
3020 {{/rollBetween() dice against 49}}
3021 {{#rollBetween() dice 40 against}}<b>SL: </b>+0{{/rollBetween() dice 40 against}}
3022 {{#rollBetween() dice 30 39}}<b>SL: </b>+1{{/rollBetween() dice 30 39}}
3023 {{#rollBetween() dice 20 29}}<b>SL: </b>+2{{/rollBetween() dice 20 29}}
3024 {{#rollBetween() dice 10 19}}<b>SL: </b>+3{{/rollBetween() dice 10 19}}
3025 {{#rollBetween() dice 1 9}}<b>SL: </b>+4{{/rollBetween() dice 1 9}}
3026{{/rollBetween() against 40 49}}
3027{{#rollBetween() against 30 39}}
3028 {{#rollTotal() dice 100}}-7{{/rollTotal() dice 100}}
3029 {{#rollBetween() dice 90 99}}<b>SL: </b>–6{{/rollBetween() dice 90 99}}
3030 {{#rollBetween() dice 80 89}}<b>SL: </b>–5{{/rollBetween() dice 80 89}}
3031 {{#rollBetween() dice 70 79}}<b>SL: </b>–4{{/rollBetween() dice 70 79}}
3032 {{#rollBetween() dice 60 69}}<b>SL: </b>–3{{/rollBetween() dice 60 69}}
3033 {{#rollBetween() dice 50 59}}<b>SL: </b>–2{{/rollBetween() dice 50 59}}
3034 {{#rollBetween() dice 40 49}}<b>SL: </b>–1{{/rollBetween() dice 40 49}}
3035 {{#rollBetween() dice against 39}}
3036 {{#^rollTotal() dice against}}<b>SL: </b>–0{{/^rollTotal() dice against}}
3037 {{/rollBetween() dice against 39}}
3038 {{#rollBetween() dice 30 against}}<b>SL: </b>+0{{/rollBetween() dice 30 against}}
3039 {{#rollBetween() dice 20 29}}<b>SL: </b>+1{{/rollBetween() dice 20 29}}
3040 {{#rollBetween() dice 10 19}}<b>SL: </b>+2{{/rollBetween() dice 10 19}}
3041 {{#rollBetween() dice 1 9}}<b>SL: </b>+3{{/rollBetween() dice 1 9}}
3042{{/rollBetween() against 30 39}}
3043{{#rollBetween() against 20 29}}
3044 {{#rollTotal() dice 100}}–8{{/rollTotal() dice 100}}
3045 {{#rollBetween() dice 90 99}}<b>SL: </b>–7{{/rollBetween() dice 90 99}}
3046 {{#rollBetween() dice 80 89}}<b>SL: </b>–6{{/rollBetween() dice 80 89}}
3047 {{#rollBetween() dice 70 79}}<b>SL: </b>–5{{/rollBetween() dice 70 79}}
3048 {{#rollBetween() dice 60 69}}<b>SL: </b>–4{{/rollBetween() dice 60 69}}
3049 {{#rollBetween() dice 50 59}}<b>SL: </b>–3{{/rollBetween() dice 50 59}}
3050 {{#rollBetween() dice 40 49}}<b>SL: </b>–2{{/rollBetween() dice 40 49}}
3051 {{#rollBetween() dice 30 39}}<b>SL: </b>–1{{/rollBetween() dice 30 39}}
3052 {{#rollBetween() dice against 29}}
3053 {{#^rollTotal() dice against}}<b>SL: </b>–0{{/^rollTotal() dice against}}
3054 {{/rollBetween() dice against 29}}
3055 {{#rollBetween() dice 20 against}}<b>SL: </b>+0{{/rollBetween() dice 20 against}}
3056 {{#rollBetween() dice 10 19}}<b>SL: </b>+1{{/rollBetween() dice 10 19}}
3057 {{#rollBetween() dice 1 9}}<b>SL: </b>+2{{/rollBetween() dice 1 9}}
3058{{/rollBetween() against 20 29}}
3059{{#rollBetween() against 10 19}}
3060 {{#rollTotal() dice 100}}<b>SL: </b>–9{{/rollTotal() dice 100}}
3061 {{#rollBetween() dice 90 99}}<b>SL: </b>–8{{/rollBetween() dice 90 99}}
3062 {{#rollBetween() dice 80 89}}<b>SL: </b>–7{{/rollBetween() dice 80 89}}
3063 {{#rollBetween() dice 70 79}}<b>SL: </b>–6{{/rollBetween() dice 70 79}}
3064 {{#rollBetween() dice 60 69}}<b>SL: </b>–5{{/rollBetween() dice 60 69}}
3065 {{#rollBetween() dice 50 59}}<b>SL: </b>–4{{/rollBetween() dice 50 59}}
3066 {{#rollBetween() dice 40 49}}<b>SL: </b>–3{{/rollBetween() dice 40 49}}
3067 {{#rollBetween() dice 30 39}}<b>SL: </b>–2{{/rollBetween() dice 30 39}}
3068 {{#rollBetween() dice 20 29}}<b>SL: </b>–1{{/rollBetween() dice 20 29}}
3069 {{#rollBetween() dice against 19}}
3070 {{#^rollTotal() dice against}}<b>SL: </b>–0{{/^rollTotal() dice against}}
3071 {{/rollBetween() dice against 19}}
3072 {{#rollBetween() dice 10 against}}<b>SL: </b>+0{{/rollBetween() dice 10 against}}
3073 {{#rollBetween() dice 1 9}}<b>SL: </b>+1{{/rollBetween() dice 1 9}}
3074{{/rollBetween() against 10 19}}
3075{{#rollBetween() against 1 9}}
3076 {{#rollTotal() dice 100}}<b>SL: </b>–10{{/rollTotal() dice 100}}
3077 {{#rollBetween() dice 90 99}}<b>SL: </b>–9{{/rollBetween() dice 90 99}}
3078 {{#rollBetween() dice 80 89}}<b>SL: </b>–8{{/rollBetween() dice 80 89}}
3079 {{#rollBetween() dice 70 79}}<b>SL: </b>–7{{/rollBetween() dice 70 79}}
3080 {{#rollBetween() dice 60 69}}<b>SL: </b>–6{{/rollBetween() dice 60 69}}
3081 {{#rollBetween() dice 50 59}}<b>SL: </b>–5{{/rollBetween() dice 50 59}}
3082 {{#rollBetween() dice 40 49}}<b>SL: </b>–4{{/rollBetween() dice 40 49}}
3083 {{#rollBetween() dice 30 39}}<b>SL: </b>–3{{/rollBetween() dice 30 39}}
3084 {{#rollBetween() dice 20 29}}<b>SL: </b>–2{{/rollBetween() dice 20 29}}
3085 {{#rollBetween() dice 10 19}}<b>SL: </b>–1{{/rollBetween() dice 10 19}}
3086 {{#rollBetween() dice against 9}}
3087 {{#^rollTotal() dice against}}<b>SL: </b>–0{{/^rollTotal() dice against}}
3088 {{/rollBetween() dice against 9}}
3089 {{#rollBetween() dice 1 against}}<b>SL: </b>+0{{/rollBetween() dice 1 against}}
3090{{/rollBetween() against 1 9}}
3091
3092{{#rollBetween() against 100 109}}
3093 {{#rollBetween() dice 96 99}}<b>SL: </b>-1{{/rollBetween() dice 96 99}}
3094 {{#rollBetween() dice 90 95}}<b>SL: </b>+1{{/rollBetween() dice 90 95}}
3095 {{#rollBetween() dice 80 89}}<b>SL: </b>+2{{/rollBetween() dice 80 89}}
3096 {{#rollBetween() dice 70 79}}<b>SL: </b>+3{{/rollBetween() dice 70 79}}
3097 {{#rollBetween() dice 60 69}}<b>SL: </b>+4{{/rollBetween() dice 60 69}}
3098 {{#rollBetween() dice 50 59}}<b>SL: </b>+5{{/rollBetween() dice 50 59}}
3099 {{#rollBetween() dice 40 49}}<b>SL: </b>+6{{/rollBetween() dice 40 49}}
3100 {{#rollBetween() dice 30 39}}<b>SL: </b>+7{{/rollBetween() dice 30 39}}
3101 {{#rollBetween() dice 20 29}}<b>SL: </b>+8{{/rollBetween() dice 20 29}}
3102 {{#rollBetween() dice 10 19}}<b>SL: </b>+9{{/rollBetween() dice 10 19}}
3103 {{#rollBetween() dice 1 9}}<b>SL: </b>+10{{/rollBetween() dice 1 9}}
3104{{/rollBetween() against 100 109}}
3105
3106{{#rollBetween() against 110 119}}
3107 {{#rollBetween() dice 96 99}}<b>SL: </b>-1{{/rollBetween() dice 96 99}}
3108 {{#rollBetween() dice 90 95}}<b>SL: </b>+2{{/rollBetween() dice 90 95}}
3109 {{#rollBetween() dice 80 89}}<b>SL: </b>+3{{/rollBetween() dice 80 89}}
3110 {{#rollBetween() dice 70 79}}<b>SL: </b>+4{{/rollBetween() dice 70 79}}
3111 {{#rollBetween() dice 60 69}}<b>SL: </b>+5{{/rollBetween() dice 60 69}}
3112 {{#rollBetween() dice 50 59}}<b>SL: </b>+6{{/rollBetween() dice 50 59}}
3113 {{#rollBetween() dice 40 49}}<b>SL: </b>+7{{/rollBetween() dice 40 49}}
3114 {{#rollBetween() dice 30 39}}<b>SL: </b>+8{{/rollBetween() dice 30 39}}
3115 {{#rollBetween() dice 20 29}}<b>SL: </b>+9{{/rollBetween() dice 20 29}}
3116 {{#rollBetween() dice 10 19}}<b>SL: </b>+10{{/rollBetween() dice 10 19}}
3117 {{#rollBetween() dice 1 9}}<b>SL: </b>+10{{/rollBetween() dice 1 9}}
3118{{/rollBetween() against 110 119}}
3119
3120{{#rollBetween() against 120 129}}
3121 {{#rollBetween() dice 96 99}}<b>SL: </b>-1{{/rollBetween() dice 96 99}}
3122 {{#rollBetween() dice 90 95}}<b>SL: </b>+3{{/rollBetween() dice 90 95}}
3123 {{#rollBetween() dice 80 89}}<b>SL: </b>+4{{/rollBetween() dice 80 89}}
3124 {{#rollBetween() dice 70 79}}<b>SL: </b>+5{{/rollBetween() dice 70 79}}
3125 {{#rollBetween() dice 60 69}}<b>SL: </b>+6{{/rollBetween() dice 60 69}}
3126 {{#rollBetween() dice 50 59}}<b>SL: </b>+7{{/rollBetween() dice 50 59}}
3127 {{#rollBetween() dice 40 49}}<b>SL: </b>+8{{/rollBetween() dice 40 49}}
3128 {{#rollBetween() dice 30 39}}<b>SL: </b>+9{{/rollBetween() dice 30 39}}
3129 {{#rollBetween() dice 20 29}}<b>SL: </b>+10{{/rollBetween() dice 20 29}}
3130 {{#rollBetween() dice 10 19}}<b>SL: </b>+11{{/rollBetween() dice 10 19}}
3131 {{#rollBetween() dice 03 09}}<b>SL: </b>+11{{/rollBetween() dice 03 09}}
3132 {{#rollBetween() dice 01 02}}<b>SL: </b>+12{{/rollBetween() dice 01 02}}
3133{{/rollBetween() against 120 129}}
3134
3135{{#rollBetween() against 130 139}}
3136 {{#rollBetween() dice 96 99}}<b>SL: </b>-1{{/rollBetween() dice 96 99}}
3137 {{#rollBetween() dice 90 95}}<b>SL: </b>+4{{/rollBetween() dice 90 95}}
3138 {{#rollBetween() dice 80 89}}<b>SL: </b>+5{{/rollBetween() dice 80 89}}
3139 {{#rollBetween() dice 70 79}}<b>SL: </b>+6{{/rollBetween() dice 70 79}}
3140 {{#rollBetween() dice 60 69}}<b>SL: </b>+7{{/rollBetween() dice 60 69}}
3141 {{#rollBetween() dice 50 59}}<b>SL: </b>+8{{/rollBetween() dice 50 59}}
3142 {{#rollBetween() dice 40 49}}<b>SL: </b>+9{{/rollBetween() dice 40 49}}
3143 {{#rollBetween() dice 30 39}}<b>SL: </b>+10{{/rollBetween() dice 30 39}}
3144 {{#rollBetween() dice 20 29}}<b>SL: </b>+11{{/rollBetween() dice 20 29}}
3145 {{#rollBetween() dice 10 19}}<b>SL: </b>+12{{/rollBetween() dice 10 19}}
3146 {{#rollBetween() dice 04 09}}<b>SL: </b>+12{{/rollBetween() dice 04 09}}
3147 {{#rollBetween() dice 01 03}}<b>SL: </b>+13{{/rollBetween() dice 01 03}}
3148{{/rollBetween() against 130 139}}
3149
3150{{#rollBetween() against 140 149}}
3151 {{#rollBetween() dice 96 99}}<b>SL: </b>-1{{/rollBetween() dice 96 99}}
3152 {{#rollBetween() dice 90 95}}<b>SL: </b>+5{{/rollBetween() dice 90 95}}
3153 {{#rollBetween() dice 80 89}}<b>SL: </b>+6{{/rollBetween() dice 80 89}}
3154 {{#rollBetween() dice 70 79}}<b>SL: </b>+7{{/rollBetween() dice 70 79}}
3155 {{#rollBetween() dice 60 69}}<b>SL: </b>+8{{/rollBetween() dice 60 69}}
3156 {{#rollBetween() dice 50 59}}<b>SL: </b>+9{{/rollBetween() dice 50 59}}
3157 {{#rollBetween() dice 40 49}}<b>SL: </b>+10{{/rollBetween() dice 40 49}}
3158 {{#rollBetween() dice 30 39}}<b>SL: </b>+11{{/rollBetween() dice 30 39}}
3159 {{#rollBetween() dice 20 29}}<b>SL: </b>+12{{/rollBetween() dice 20 29}}
3160 {{#rollBetween() dice 10 19}}<b>SL: </b>+13{{/rollBetween() dice 10 19}}
3161 {{#rollBetween() dice 05 09}}<b>SL: </b>+13{{/rollBetween() dice 05 09}}
3162 {{#rollBetween() dice 01 04}}<b>SL: </b>+14{{/rollBetween() dice 01 04}}
3163{{/rollBetween() against 140 149}}
3164
3165{{#rollBetween() against 150 159}}
3166 {{#rollBetween() dice 96 99}}<b>SL: </b>-1{{/rollBetween() dice 96 99}}
3167 {{#rollBetween() dice 90 95}}<b>SL: </b>+6{{/rollBetween() dice 90 95}}
3168 {{#rollBetween() dice 80 89}}<b>SL: </b>+7{{/rollBetween() dice 80 89}}
3169 {{#rollBetween() dice 70 79}}<b>SL: </b>+8{{/rollBetween() dice 70 79}}
3170 {{#rollBetween() dice 60 69}}<b>SL: </b>+9{{/rollBetween() dice 60 69}}
3171 {{#rollBetween() dice 50 59}}<b>SL: </b>+10{{/rollBetween() dice 50 59}}
3172 {{#rollBetween() dice 40 49}}<b>SL: </b>+11{{/rollBetween() dice 40 49}}
3173 {{#rollBetween() dice 30 39}}<b>SL: </b>+12{{/rollBetween() dice 30 39}}
3174 {{#rollBetween() dice 20 29}}<b>SL: </b>+13{{/rollBetween() dice 20 29}}
3175 {{#rollBetween() dice 10 19}}<b>SL: </b>+14{{/rollBetween() dice 10 19}}
3176 {{#rollBetween() dice 06 09}}<b>SL: </b>+14{{/rollBetween() dice 06 09}}
3177 {{#rollBetween() dice 01 05}}<b>SL: </b>+15{{/rollBetween() dice 01 05}}
3178{{/rollBetween() against 150 159}}
3179
3180{{#rollBetween() against 160 169}}
3181 {{#rollBetween() dice 96 99}}<b>SL: </b>-1{{/rollBetween() dice 96 99}}
3182 {{#rollBetween() dice 90 95}}<b>SL: </b>+7{{/rollBetween() dice 90 95}}
3183 {{#rollBetween() dice 80 89}}<b>SL: </b>+8{{/rollBetween() dice 80 89}}
3184 {{#rollBetween() dice 70 79}}<b>SL: </b>+9{{/rollBetween() dice 70 79}}
3185 {{#rollBetween() dice 60 69}}<b>SL: </b>+10{{/rollBetween() dice 60 69}}
3186 {{#rollBetween() dice 50 59}}<b>SL: </b>+11{{/rollBetween() dice 50 59}}
3187 {{#rollBetween() dice 40 49}}<b>SL: </b>+12{{/rollBetween() dice 40 49}}
3188 {{#rollBetween() dice 30 39}}<b>SL: </b>+13{{/rollBetween() dice 30 39}}
3189 {{#rollBetween() dice 20 29}}<b>SL: </b>+14{{/rollBetween() dice 20 29}}
3190 {{#rollBetween() dice 10 19}}<b>SL: </b>+15{{/rollBetween() dice 10 19}}
3191 {{#rollBetween() dice 07 09}}<b>SL: </b>+15{{/rollBetween() dice 07 09}}
3192 {{#rollBetween() dice 01 06}}<b>SL: </b>+16{{/rollBetween() dice 01 06}}
3193{{/rollBetween() against 160 169}}
3194
3195{{#rollBetween() against 170 179}}
3196 {{#rollBetween() dice 96 99}}<b>SL: </b>-1{{/rollBetween() dice 96 99}}
3197 {{#rollBetween() dice 90 95}}<b>SL: </b>+8{{/rollBetween() dice 90 95}}
3198 {{#rollBetween() dice 80 89}}<b>SL: </b>+9{{/rollBetween() dice 80 89}}
3199 {{#rollBetween() dice 70 79}}<b>SL: </b>+10{{/rollBetween() dice 70 79}}
3200 {{#rollBetween() dice 60 69}}<b>SL: </b>+11{{/rollBetween() dice 60 69}}
3201 {{#rollBetween() dice 50 59}}<b>SL: </b>+12{{/rollBetween() dice 50 59}}
3202 {{#rollBetween() dice 40 49}}<b>SL: </b>+13{{/rollBetween() dice 40 49}}
3203 {{#rollBetween() dice 30 39}}<b>SL: </b>+14{{/rollBetween() dice 30 39}}
3204 {{#rollBetween() dice 20 29}}<b>SL: </b>+15{{/rollBetween() dice 20 29}}
3205 {{#rollBetween() dice 10 19}}<b>SL: </b>+16{{/rollBetween() dice 10 19}}
3206 {{#rollBetween() dice 08 09}}<b>SL: </b>+16{{/rollBetween() dice 08 09}}
3207 {{#rollBetween() dice 01 07}}<b>SL: </b>+17{{/rollBetween() dice 01 07}}
3208{{/rollBetween() against 170 179}}
3209
3210{{#rollBetween() against 180 189}}
3211 {{#rollBetween() dice 96 99}}<b>SL: </b>-1{{/rollBetween() dice 96 99}}
3212 {{#rollBetween() dice 90 95}}<b>SL: </b>+9{{/rollBetween() dice 90 95}}
3213 {{#rollBetween() dice 80 89}}<b>SL: </b>+10{{/rollBetween() dice 80 89}}
3214 {{#rollBetween() dice 70 79}}<b>SL: </b>+11{{/rollBetween() dice 70 79}}
3215 {{#rollBetween() dice 60 69}}<b>SL: </b>+12{{/rollBetween() dice 60 69}}
3216 {{#rollBetween() dice 50 59}}<b>SL: </b>+13{{/rollBetween() dice 50 59}}
3217 {{#rollBetween() dice 40 49}}<b>SL: </b>+14{{/rollBetween() dice 40 49}}
3218 {{#rollBetween() dice 30 39}}<b>SL: </b>+15{{/rollBetween() dice 30 39}}
3219 {{#rollBetween() dice 20 29}}<b>SL: </b>+16{{/rollBetween() dice 20 29}}
3220 {{#rollBetween() dice 10 19}}<b>SL: </b>+17{{/rollBetween() dice 10 19}}
3221 {{#rollTotal() dice 09}}<b>SL: </b>+17{{/rollTotal() dice 09}}
3222 {{#rollBetween() dice 01 08}}<b>SL: </b>+18{{/rollBetween() dice 01 08}}
3223{{/rollBetween() against 180 189}}
3224
3225{{#rollBetween() against 190 199}}
3226 {{#rollBetween() dice 96 99}}<b>SL: </b>-1{{/rollBetween() dice 96 99}}
3227 {{#rollBetween() dice 90 95}}<b>SL: </b>+10{{/rollBetween() dice 90 95}}
3228 {{#rollBetween() dice 80 89}}<b>SL: </b>+11{{/rollBetween() dice 80 89}}
3229 {{#rollBetween() dice 70 79}}<b>SL: </b>+12{{/rollBetween() dice 70 79}}
3230 {{#rollBetween() dice 60 69}}<b>SL: </b>+13{{/rollBetween() dice 60 69}}
3231 {{#rollBetween() dice 50 59}}<b>SL: </b>+14{{/rollBetween() dice 50 59}}
3232 {{#rollBetween() dice 40 49}}<b>SL: </b>+15{{/rollBetween() dice 40 49}}
3233 {{#rollBetween() dice 30 39}}<b>SL: </b>+16{{/rollBetween() dice 30 39}}
3234 {{#rollBetween() dice 20 29}}<b>SL: </b>+17{{/rollBetween() dice 20 29}}
3235 {{#rollBetween() dice 10 19}}<b>SL: </b>+18{{/rollBetween() dice 10 19}}
3236 {{#rollLess() against 198}}
3237 {{#rollTotal() dice 09}}<b>SL: </b>+18{{/rollTotal() dice 09}}
3238 {{#rollBetween() dice 01 08}}<b>SL: </b>+19{{/rollBetween() dice 01 08}}
3239 {{/rollLess() against 198}}
3240 {{#rollTotal() against 199}} <b>SL: </b>+19 {{/rollTotal() against 199}}
3241{{/rollBetween() against 190 199}}
3242
3243{{#rollGreater() against 200}}
3244 <b>SL: </b>+20 <i style="font-size:0.8em;">max calculated value</i>
3245{{/rollGreater() against 200}}
3246
3247<!-- Extended Channelling SL -->
3248{{#channelling}}
3249 <b>Channelling SL:</b> {{channelling}}
3250{{/channelling}}
3251
3252<!-- Hit Location -->
3253 {{#hitlocation}}
3254 <br>
3255 <!-- Head -->
3256 {{#rollTotal() dice 10}}
3257 <b>Hit Location:</b> <i>Head</i>
3258 {{/rollTotal() dice 10}}
3259 {{#rollTotal() dice 20}}
3260 <b>Hit Location:</b> <i>Head</i>
3261 {{/rollTotal() dice 20}}
3262 {{#rollTotal() dice 30}}
3263 <b>Hit Location:</b> <i>Head</i>
3264 {{/rollTotal() dice 30}}
3265 {{#rollTotal() dice 40}}
3266 <b>Hit Location:</b> <i>Head</i>
3267 {{/rollTotal() dice 40}}
3268 {{#rollTotal() dice 50}}
3269 <b>Hit Location:</b> <i>Head</i>
3270 {{/rollTotal() dice 50}}
3271 {{#rollTotal() dice 60}}
3272 <b>Hit Location:</b> <i>Head</i>
3273 {{/rollTotal() dice 60}}
3274 {{#rollTotal() dice 70}}
3275 <b>Hit Location:</b> <i>Head</i>
3276 {{/rollTotal() dice 70}}
3277 {{#rollTotal() dice 80}}
3278 <b>Hit Location:</b> <i>Head</i>
3279 {{/rollTotal() dice 80}}
3280 {{#rollTotal() dice 90}}
3281 <b>Hit Location:</b> <i>Head</i>
3282 {{/rollTotal() dice 90}}
3283
3284 <!-- Left Arm -->
3285 {{#rollTotal() dice 01}}
3286 <b>Hit Location:</b> <i>Left Arm</i>
3287 {{/rollTotal() dice 01}}
3288 {{#rollTotal() dice 11}}
3289 <b>Hit Location:</b> <i>Left Arm</i>
3290 {{/rollTotal() dice 11}}
3291 {{#rollTotal() dice 21}}
3292 <b>Hit Location:</b> <i>Left Arm</i>
3293 {{/rollTotal() dice 21}}
3294 {{#rollTotal() dice 31}}
3295 <b>Hit Location:</b> <i>Left Arm</i>
3296 {{/rollTotal() dice 31}}
3297 {{#rollTotal() dice 41}}
3298 <b>Hit Location:</b> <i>Left Arm</i>
3299 {{/rollTotal() dice 41}}
3300 {{#rollTotal() dice 51}}
3301 <b>Hit Location:</b> <i>Left Arm</i>
3302 {{/rollTotal() dice 51}}
3303 {{#rollTotal() dice 61}}
3304 <b>Hit Location:</b> <i>Left Arm</i>
3305 {{/rollTotal() dice 61}}
3306 {{#rollTotal() dice 71}}
3307 <b>Hit Location:</b> <i>Left Arm</i>
3308 {{/rollTotal() dice 71}}
3309 {{#rollTotal() dice 81}}
3310 <b>Hit Location:</b> <i>Left Arm</i>
3311 {{/rollTotal() dice 81}}
3312 {{#rollTotal() dice 91}}
3313 <b>Hit Location:</b> <i>Left Arm</i>
3314 {{/rollTotal() dice 91}}
3315 {{#rollTotal() dice 02}}
3316 <b>Hit Location:</b> <i>Left Arm</i>
3317 {{/rollTotal() dice 02}}
3318 {{#rollTotal() dice 12}}
3319 <b>Hit Location:</b> <i>Left Arm</i>
3320 {{/rollTotal() dice 12}}
3321 {{#rollTotal() dice 22}}
3322 <b>Hit Location:</b> <i>Left Arm</i>
3323 {{/rollTotal() dice 22}}
3324 {{#rollTotal() dice 32}}
3325 <b>Hit Location:</b> <i>Left Arm</i>
3326 {{/rollTotal() dice 32}}
3327 {{#rollTotal() dice 42}}
3328 <b>Hit Location:</b> <i>Left Arm</i>
3329 {{/rollTotal() dice 42}}
3330
3331 <!-- Right Arm -->
3332 {{#rollTotal() dice 52}}
3333 <b>Hit Location:</b> <i>Right Arm</i>
3334 {{/rollTotal() dice 52}}
3335 {{#rollTotal() dice 62}}
3336 <b>Hit Location:</b> <i>Right Arm</i>
3337 {{/rollTotal() dice 62}}
3338 {{#rollTotal() dice 72}}
3339 <b>Hit Location:</b> <i>Right Arm</i>
3340 {{/rollTotal() dice 72}}
3341 {{#rollTotal() dice 82}}
3342 <b>Hit Location:</b> <i>Right Arm</i>
3343 {{/rollTotal() dice 82}}
3344 {{#rollTotal() dice 92}}
3345 <b>Hit Location:</b> <i>Right Arm</i>
3346 {{/rollTotal() dice 92}}
3347 {{#rollTotal() dice 03}}
3348 <b>Hit Location:</b> <i>Right Arm</i>
3349 {{/rollTotal() dice 03}}
3350 {{#rollTotal() dice 13}}
3351 <b>Hit Location:</b> <i>Right Arm</i>
3352 {{/rollTotal() dice 13}}
3353 {{#rollTotal() dice 23}}
3354 <b>Hit Location:</b> <i>Right Arm</i>
3355 {{/rollTotal() dice 23}}
3356 {{#rollTotal() dice 33}}
3357 <b>Hit Location:</b> <i>Right Arm</i>
3358 {{/rollTotal() dice 33}}
3359 {{#rollTotal() dice 43}}
3360 <b>Hit Location:</b> <i>Right Arm</i>
3361 {{/rollTotal() dice 43}}
3362 {{#rollTotal() dice 53}}
3363 <b>Hit Location:</b> <i>Right Arm</i>
3364 {{/rollTotal() dice 53}}
3365 {{#rollTotal() dice 63}}
3366 <b>Hit Location:</b> <i>Right Arm</i>
3367 {{/rollTotal() dice 63}}
3368 {{#rollTotal() dice 73}}
3369 <b>Hit Location:</b> <i>Right Arm</i>
3370 {{/rollTotal() dice 73}}
3371 {{#rollTotal() dice 83}}
3372 <b>Hit Location:</b> <i>Right Arm</i>
3373 {{/rollTotal() dice 83}}
3374 {{#rollTotal() dice 93}}
3375 <b>Hit Location:</b> <i>Right Arm</i>
3376 {{/rollTotal() dice 93}}
3377 {{#rollTotal() dice 04}}
3378 <b>Hit Location:</b> <i>Right Arm</i>
3379 {{/rollTotal() dice 04}}
3380 {{#rollTotal() dice 14}}
3381 <b>Hit Location:</b> <i>Right Arm</i>
3382 {{/rollTotal() dice 14}}
3383 {{#rollTotal() dice 24}}
3384 <b>Hit Location:</b> <i>Right Arm</i>
3385 {{/rollTotal() dice 24}}
3386 {{#rollTotal() dice 34}}
3387 <b>Hit Location:</b> <i>Right Arm</i>
3388 {{/rollTotal() dice 34}}
3389 {{#rollTotal() dice 44}}
3390 <b>Hit Location:</b> <i>Right Arm</i>
3391 {{/rollTotal() dice 44}}
3392
3393 <!-- Body -->
3394 {{#rollTotal() dice 54}}
3395 <b>Hit Location:</b> <i>Body</i>
3396 {{/rollTotal() dice 54}}
3397 {{#rollTotal() dice 64}}
3398 <b>Hit Location:</b> <i>Body</i>
3399 {{/rollTotal() dice 64}}
3400 {{#rollTotal() dice 74}}
3401 <b>Hit Location:</b> <i>Body</i>
3402 {{/rollTotal() dice 74}}
3403 {{#rollTotal() dice 84}}
3404 <b>Hit Location:</b> <i>Body</i>
3405 {{/rollTotal() dice 84}}
3406 {{#rollTotal() dice 94}}
3407 <b>Hit Location:</b> <i>Body</i>
3408 {{/rollTotal() dice 94}}
3409 {{#rollTotal() dice 05}}
3410 <b>Hit Location:</b> <i>Body</i>
3411 {{/rollTotal() dice 05}}
3412 {{#rollTotal() dice 15}}
3413 <b>Hit Location:</b> <i>Body</i>
3414 {{/rollTotal() dice 15}}
3415 {{#rollTotal() dice 25}}
3416 <b>Hit Location:</b> <i>Body</i>
3417 {{/rollTotal() dice 25}}
3418 {{#rollTotal() dice 35}}
3419 <b>Hit Location:</b> <i>Body</i>
3420 {{/rollTotal() dice 35}}
3421 {{#rollTotal() dice 45}}
3422 <b>Hit Location:</b> <i>Body</i>
3423 {{/rollTotal() dice 45}}
3424 {{#rollTotal() dice 55}}
3425 <b>Hit Location:</b> <i>Body</i>
3426 {{/rollTotal() dice 55}}
3427 {{#rollTotal() dice 65}}
3428 <b>Hit Location:</b> <i>Body</i>
3429 {{/rollTotal() dice 65}}
3430 {{#rollTotal() dice 75}}
3431 <b>Hit Location:</b> <i>Body</i>
3432 {{/rollTotal() dice 75}}
3433 {{#rollTotal() dice 85}}
3434 <b>Hit Location:</b> <i>Body</i>
3435 {{/rollTotal() dice 85}}
3436 {{#rollTotal() dice 95}}
3437 <b>Hit Location:</b> <i>Body</i>
3438 {{/rollTotal() dice 95}}
3439 {{#rollTotal() dice 06}}
3440 <b>Hit Location:</b> <i>Body</i>
3441 {{/rollTotal() dice 06}}
3442 {{#rollTotal() dice 16}}
3443 <b>Hit Location:</b> <i>Body</i>
3444 {{/rollTotal() dice 16}}
3445 {{#rollTotal() dice 26}}
3446 <b>Hit Location:</b> <i>Body</i>
3447 {{/rollTotal() dice 26}}
3448 {{#rollTotal() dice 36}}
3449 <b>Hit Location:</b> <i>Body</i>
3450 {{/rollTotal() dice 36}}
3451 {{#rollTotal() dice 46}}
3452 <b>Hit Location:</b> <i>Body</i>
3453 {{/rollTotal() dice 46}}
3454 {{#rollTotal() dice 56}}
3455 <b>Hit Location:</b> <i>Body</i>
3456 {{/rollTotal() dice 56}}
3457 {{#rollTotal() dice 66}}
3458 <b>Hit Location:</b> <i>Body</i>
3459 {{/rollTotal() dice 66}}
3460 {{#rollTotal() dice 76}}
3461 <b>Hit Location:</b> <i>Body</i>
3462 {{/rollTotal() dice 76}}
3463 {{#rollTotal() dice 86}}
3464 <b>Hit Location:</b> <i>Body</i>
3465 {{/rollTotal() dice 86}}
3466 {{#rollTotal() dice 96}}
3467 <b>Hit Location:</b> <i>Body</i>
3468 {{/rollTotal() dice 96}}
3469 {{#rollTotal() dice 07}}
3470 <b>Hit Location:</b> <i>Body</i>
3471 {{/rollTotal() dice 07}}
3472 {{#rollTotal() dice 17}}
3473 <b>Hit Location:</b> <i>Body</i>
3474 {{/rollTotal() dice 17}}
3475 {{#rollTotal() dice 27}}
3476 <b>Hit Location:</b> <i>Body</i>
3477 {{/rollTotal() dice 27}}
3478 {{#rollTotal() dice 37}}
3479 <b>Hit Location:</b> <i>Body</i>
3480 {{/rollTotal() dice 37}}
3481 {{#rollTotal() dice 47}}
3482 <b>Hit Location:</b> <i>Body</i>
3483 {{/rollTotal() dice 47}}
3484 {{#rollTotal() dice 57}}
3485 <b>Hit Location:</b> <i>Body</i>
3486 {{/rollTotal() dice 57}}
3487 {{#rollTotal() dice 67}}
3488 <b>Hit Location:</b> <i>Body</i>
3489 {{/rollTotal() dice 67}}
3490 {{#rollTotal() dice 77}}
3491 <b>Hit Location:</b> <i>Body</i>
3492 {{/rollTotal() dice 77}}
3493 {{#rollTotal() dice 87}}
3494 <b>Hit Location:</b> <i>Body</i>
3495 {{/rollTotal() dice 87}}
3496 {{#rollTotal() dice 97}}
3497 <b>Hit Location:</b> <i>Body</i>
3498 {{/rollTotal() dice 97}}
3499
3500 <!-- Left Leg -->
3501 {{#rollTotal() dice 08}}
3502 <b>Hit Location:</b> <i>Left Leg</i>
3503 {{/rollTotal() dice 08}}
3504 {{#rollTotal() dice 18}}
3505 <b>Hit Location:</b> <i>Left Leg</i>
3506 {{/rollTotal() dice 18}}
3507 {{#rollTotal() dice 28}}
3508 <b>Hit Location:</b> <i>Left Leg</i>
3509 {{/rollTotal() dice 28}}
3510 {{#rollTotal() dice 38}}
3511 <b>Hit Location:</b> <i>Left Leg</i>
3512 {{/rollTotal() dice 38}}
3513 {{#rollTotal() dice 48}}
3514 <b>Hit Location:</b> <i>Left Leg</i>
3515 {{/rollTotal() dice 48}}
3516 {{#rollTotal() dice 58}}
3517 <b>Hit Location:</b> <i>Left Leg</i>
3518 {{/rollTotal() dice 58}}
3519 {{#rollTotal() dice 68}}
3520 <b>Hit Location:</b> <i>Left Leg</i>
3521 {{/rollTotal() dice 68}}
3522 {{#rollTotal() dice 78}}
3523 <b>Hit Location:</b> <i>Left Leg</i>
3524 {{/rollTotal() dice 78}}
3525 {{#rollTotal() dice 88}}
3526 <b>Hit Location:</b> <i>Left Leg</i>
3527 {{/rollTotal() dice 88}}
3528 {{#rollTotal() dice 98}}
3529 <b>Hit Location:</b> <i>Left Leg</i>
3530 {{/rollTotal() dice 98}}
3531
3532 <!-- Right Leg -->
3533 {{#rollTotal() dice 09}}
3534 <b>Hit Location:</b> <i>Right Leg</i>
3535 {{/rollTotal() dice 09}}
3536 {{#rollTotal() dice 19}}
3537 <b>Hit Location:</b> <i>Right Leg</i>
3538 {{/rollTotal() dice 19}}
3539 {{#rollTotal() dice 29}}
3540 <b>Hit Location:</b> <i>Right Leg</i>
3541 {{/rollTotal() dice 29}}
3542 {{#rollTotal() dice 39}}
3543 <b>Hit Location:</b> <i>Right Leg</i>
3544 {{/rollTotal() dice 39}}
3545 {{#rollTotal() dice 49}}
3546 <b>Hit Location:</b> <i>Right Leg</i>
3547 {{/rollTotal() dice 49}}
3548 {{#rollTotal() dice 59}}
3549 <b>Hit Location:</b> <i>Right Leg</i>
3550 {{/rollTotal() dice 59}}
3551 {{#rollTotal() dice 69}}
3552 <b>Hit Location:</b> <i>Right Leg</i>
3553 {{/rollTotal() dice 69}}
3554 {{#rollTotal() dice 79}}
3555 <b>Hit Location:</b> <i>Right Leg</i>
3556 {{/rollTotal() dice 79}}
3557 {{#rollTotal() dice 89}}
3558 <b>Hit Location:</b> <i>Right Leg</i>
3559 {{/rollTotal() dice 89}}
3560 {{#rollTotal() dice 99}}
3561 <b>Hit Location:</b> <i>Right Leg</i>
3562 {{/rollTotal() dice 99}}
3563 {{#rollTotal() dice 100}}
3564 <b>Hit Location:</b> <i>Right Leg</i>
3565 {{/rollTotal() dice 100}}
3566 {{/hitlocation}}
3567
3568<!-- Weapon Stats -->
3569 {{#weapon}}
3570 <br>
3571 <!-- Weapon Qualities/Flaws -->
3572 <b>Qualities/Flaws:</b> {{qualities}}
3573 {{/weapon}}
3574<!-- Spell Stats 2nd part -->
3575 {{#spell}}
3576 <br><b>Range:</b> {{range}}<br>
3577 <b>Target:</b> {{target}}<br>
3578 <b>Duration:</b> {{duration}}<br>
3579 <b>Effect:</b> {{effect}}
3580 {{/spell}}
3581<!-- Talent Description -->
3582 {{#talentdescription}}
3583 <b>Description: </b><i>{{talentdescription}}</i>
3584 {{/talentdescription}}
3585<!-- Affliction Description -->
3586 {{#afflictionEffect}}
3587 <b>Effect: </b><i>{{afflictionEffect}}</i><br>
3588 <b>Time: </b><i>{{afflictionTime}}</i><br>
3589 <b>Description: </b><i>{{afflictiondescription}}</i>
3590 {{/afflictionEffect}}
3591<!-- Affliction Description -->
3592 {{#initiativeTest}}
3593 <b>Initiative Bonus: </b><i>{{initiativeTestInitiativeBonus}}</i><br>
3594 {{#initiativeTestAgilityBonus}}
3595 <b>Agility Bonus: </b><i>{{initiativeTestAgilityBonus}}</i><br>
3596 {{/initiativeTestAgilityBonus}}
3597 <b>Talents: </b><i>{{initiativeTestTalents}}</i><br>
3598 <b>Test: </b>{{initiativeTest}}
3599 {{/initiativeTest}}
3600 </td>
3601 </tr>
3602 </table>
3603 </rolltemplate>
3604
3605<!-- Script Worker - Alondaar -->
3606<script type="text/worker">
3607/* ---- BEGIN: TheAaronSheet.js ---- */
3608// Github: https://github.com/shdwjk/TheAaronSheet/blob/master/TheAaronSheet.js
3609// By: The Aaron, Arcane Scriptomancer
3610// Contact: https://app.roll20.net/users/104025/the-aaron
3611
3612var TAS = TAS || (function(){
3613 'use strict';
3614
3615 var version = '0.2.5',
3616 lastUpdate = 1504710542,
3617
3618 loggingSettings = {
3619 debug: {
3620 key: 'debug',
3621 title: 'DEBUG',
3622 color: {
3623 bgLabel: '#7732A2',
3624 label: '#F2EF40',
3625 bgText: '#FFFEB7',
3626 text: '#7732A2'
3627 }
3628 },
3629 error: {
3630 key: 'error',
3631 title: 'Error',
3632 color: {
3633 bgLabel: '#C11713',
3634 label: 'white',
3635 bgText: '#C11713',
3636 text: 'white'
3637 }
3638 },
3639 warn: {
3640 key: 'warn',
3641 title: 'Warning',
3642 color: {
3643 bgLabel: '#F29140',
3644 label: 'white',
3645 bgText: '#FFD8B7',
3646 text: 'black'
3647 }
3648 },
3649 info: {
3650 key: 'info',
3651 title: 'Info',
3652 color: {
3653 bgLabel: '#413FA9',
3654 label: 'white',
3655 bgText: '#B3B2EB',
3656 text: 'black'
3657 }
3658 },
3659 notice: {
3660 key: 'notice',
3661 title: 'Notice',
3662 color: {
3663 bgLabel: '#33C133',
3664 label: 'white',
3665 bgText: '#ADF1AD',
3666 text: 'black'
3667 }
3668 },
3669 log: {
3670 key: 'log',
3671 title: 'Log',
3672 color: {
3673 bgLabel: '#f2f240',
3674 label: 'black',
3675 bgText: '#ffff90',
3676 text: 'black'
3677 }
3678 },
3679 callstack: {
3680 key: 'TAS',
3681 title: 'function',
3682 color: {
3683 bgLabel: '#413FA9',
3684 label: 'white',
3685 bgText: '#B3B2EB',
3686 text: 'black'
3687 }
3688 },
3689 callstack_async: {
3690 key: 'TAS',
3691 title: 'ASYNC CALL',
3692 color: {
3693 bgLabel: '#413FA9',
3694 label: 'white',
3695 bgText: '#413FA9',
3696 text: 'white'
3697 }
3698 },
3699 TAS: {
3700 key: 'TAS',
3701 title: 'TAS',
3702 color: {
3703 bgLabel: 'grey',
3704 label: 'black;background:linear-gradient(#304352,#d7d2cc,#d7d2cc,#d7d2cc,#304352)',
3705 bgText: 'grey',
3706 text: 'black;background:linear-gradient(#304352,#d7d2cc,#d7d2cc,#d7d2cc,#304352)'
3707 }
3708 }
3709 },
3710
3711
3712 config = {
3713 debugMode: false,
3714 logging: {
3715 log: true,
3716 notice: true,
3717 info: true,
3718 warn: true,
3719 error: true,
3720 debug: false
3721 }
3722 },
3723
3724 callstackRegistry = [],
3725 queuedUpdates = {}, //< Used for delaying saves till the last moment.
3726
3727 complexType = function(o){
3728 switch(typeof o){
3729 case 'string':
3730 return 'string';
3731 case 'boolean':
3732 return 'boolean';
3733 case 'number':
3734 return (_.isNaN(o) ? 'NaN' : (o.toString().match(/\./) ? 'decimal' : 'integer'));
3735 case 'function':
3736 return 'function: '+(o.name ? o.name+'()' : '(anonymous)');
3737 case 'object':
3738 return (_.isArray(o) ? 'array' : (_.isArguments(o) ? 'arguments' : ( _.isNull(o) ? 'null' : 'object')));
3739 default:
3740 return typeof o;
3741 }
3742 },
3743
3744 dataLogger = function(primaryLogger,secondaryLogger,data){
3745 _.each(data,function(m){
3746 var type = complexType(m);
3747 switch(type){
3748 case 'string':
3749 primaryLogger(m);
3750 break;
3751 case 'undefined':
3752 case 'null':
3753 case 'NaN':
3754 primaryLogger('['+type+']');
3755 break;
3756 case 'number':
3757 case 'not a number':
3758 case 'integer':
3759 case 'decimal':
3760 case 'boolean':
3761 primaryLogger('['+type+']: '+m);
3762 break;
3763 default:
3764 primaryLogger('['+type+']:=========================================');
3765 secondaryLogger(m);
3766 primaryLogger('=========================================================');
3767 break;
3768 }
3769 });
3770 },
3771
3772
3773 colorLog = function(options){
3774 var coloredLoggerFunction,
3775 key = options.key,
3776 label = options.title || 'TAS',
3777 lBGColor = (options.color && options.color.bgLabel) || 'blue',
3778 lTxtColor = (options.color && options.color.label) || 'white',
3779 mBGColor = (options.color && options.color.bgText) || 'blue',
3780 mTxtColor = (options.color && options.color.text) || 'white';
3781
3782 coloredLoggerFunction = function(message){
3783 /* eslint-disable no-console */
3784 console.log(
3785 '%c '+label+': %c '+message + ' ',
3786 'background-color: '+lBGColor+';color: '+lTxtColor+'; font-weight:bold;',
3787 'background-color: '+mBGColor+';color: '+mTxtColor+';'
3788 );
3789 /* eslint-enable no-console */
3790 };
3791 return function(){
3792 if('TAS'===key || config.logging[key]){
3793 /* eslint-disable no-console */
3794 dataLogger(coloredLoggerFunction,function(m){console.log(m);},_.toArray(arguments));
3795 /* eslint-enable no-console */
3796 }
3797 };
3798 },
3799
3800 logDebug = colorLog(loggingSettings.debug),
3801 logError = colorLog(loggingSettings.error),
3802 logWarn = colorLog(loggingSettings.warn),
3803 logInfo = colorLog(loggingSettings.info),
3804 logNotice = colorLog(loggingSettings.notice),
3805 logLog = colorLog(loggingSettings.log),
3806 log = colorLog(loggingSettings.TAS),
3807 logCS = colorLog(loggingSettings.callstack),
3808 logCSA = colorLog(loggingSettings.callstack_async),
3809
3810 registerCallstack = function(callstack,label){
3811 var idx=_.findIndex(callstackRegistry,function(o){
3812 return (_.difference(o.stack,callstack).length === _.difference(callstack,o.stack).length) &&
3813 _.difference(o.stack,callstack).length === 0 &&
3814 o.label === label;
3815 });
3816 if(-1 === idx){
3817 idx=callstackRegistry.length;
3818 callstackRegistry.push({
3819 stack: callstack,
3820 label: label
3821 });
3822 }
3823 return idx;
3824 },
3825
3826 setConfigOption = function(options){
3827 var newconf =_.defaults(options,config);
3828 newconf.logging=_.defaults(
3829 (options && options.logging)||{},
3830 config.logging
3831 );
3832 config=newconf;
3833 },
3834
3835 isDebugMode = function(){
3836 return config.debugMode;
3837 },
3838
3839 debugMode = function(){
3840 config.logging.debug=true;
3841 config.debugMode = true;
3842 },
3843
3844 getCallstack = function(){
3845 var e = new Error('dummy'),
3846 stack = _.map(_.rest(e.stack.replace(/^[^(]+?[\n$]/gm, '')
3847 .replace(/^\s+at\s+/gm, '')
3848 .replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@')
3849 .split('\n')),function(l){
3850 return l.replace(/\s+.*$/,'');
3851 });
3852 return stack;
3853 },
3854 logCallstackSub = function(cs){
3855 var matches, csa;
3856 _.find(cs,function(line){
3857 matches = line.match(/TAS_CALLSTACK_(\d+)/);
3858 if(matches){
3859 csa=callstackRegistry[matches[1]];
3860 logCSA( '===================='+(csa.label ? '> '+csa.label+' <' : '')+'====================');
3861 logCallstackSub(csa.stack);
3862 return true;
3863 }
3864 logCS(line);
3865 return false;
3866 });
3867 },
3868 logCallstack = function(){
3869 var cs;
3870 if(config.debugMode){
3871 cs = getCallstack();
3872 cs.shift();
3873 log('==============================> CALLSTACK <==============================');
3874 logCallstackSub(cs);
3875 log('=========================================================================');
3876 }
3877 },
3878
3879
3880 wrapCallback = function (label, callback, context){
3881 var callstack;
3882 if('function' === typeof label){
3883 context=callback;
3884 callback=label;
3885 label=undefined;
3886 }
3887 if(!config.debugMode){
3888 return (function(cb,ctx){
3889 return function(){
3890 cb.apply(ctx||{},arguments);
3891 };
3892 }(callback,context));
3893 }
3894
3895 callstack = getCallstack();
3896 callstack.shift();
3897
3898 return (function(cb,ctx,cs,lbl){
3899 var ctxref=registerCallstack(cs,lbl);
3900
3901 /*jshint -W054 */
3902 return new Function('cb','ctx','TASlog',
3903 "return function TAS_CALLSTACK_"+ctxref+"(){"+
3904 "var start,end;"+
3905 "TASlog('Entering: '+(cb.name||'(anonymous function)'));"+
3906 "start=_.now();"+
3907 "cb.apply(ctx||{},arguments);"+
3908 "end=_.now();"+
3909 "TASlog('Exiting: '+(cb.name||'(anonymous function)')+' :: '+(end-start)+'ms elapsed');"+
3910 "};")(cb,ctx,log);
3911 /*jshint +W054 */
3912 }(callback,context,callstack,label));
3913 },
3914
3915
3916 prepareUpdate = function( attribute, value ){
3917 queuedUpdates[attribute]=value;
3918 },
3919
3920 applyQueuedUpdates = function() {
3921 setAttrs(queuedUpdates);
3922 queuedUpdates = {};
3923 },
3924
3925 namesFromArgs = function(args,base){
3926 return _.chain(args)
3927 .reduce(function(memo,attr){
3928 if('string' === typeof attr) {
3929 memo.push(attr);
3930 } else if(_.isArray(args) || _.isArguments(args)){
3931 memo = namesFromArgs(attr,memo);
3932 }
3933 return memo;
3934 },(_.isArray(base) && base) || [])
3935 .uniq()
3936 .value();
3937 },
3938
3939 addId = function(obj,value){
3940 Object.defineProperty(obj,'id',{
3941 value: value,
3942 writable: false,
3943 enumerable: false
3944 });
3945 },
3946
3947 addProp = function(obj,prop,value,fullname){
3948 (function(){
3949 var pname=(_.contains(['S','F','I','D'],prop) ? '_'+prop : prop),
3950 full_pname = fullname || prop,
3951 pvalue=value;
3952
3953 _.each(['S','I','F'],function(p){
3954 if( !_.has(obj,p)){
3955 Object.defineProperty(obj, p, {
3956 value: {},
3957 enumerable: false,
3958 readonly: true
3959 });
3960 }
3961 });
3962 if( !_.has(obj,'D')){
3963 Object.defineProperty(obj, 'D', {
3964 value: _.reduce(_.range(10),function(m,d){
3965 Object.defineProperty(m, d, {
3966 value: {},
3967 enumerable: true,
3968 readonly: true
3969 });
3970 return m;
3971 },{}),
3972 enumerable: false,
3973 readonly: true
3974 });
3975 }
3976
3977
3978 // Raw value
3979 Object.defineProperty(obj, pname, {
3980 enumerable: true,
3981 set: function(v){
3982 if(v!==pvalue) {
3983 pvalue=v;
3984 prepareUpdate(full_pname,v);
3985 }
3986 },
3987 get: function(){
3988 return pvalue;
3989 }
3990 });
3991
3992 // string value
3993 Object.defineProperty(obj.S, pname, {
3994 enumerable: true,
3995 set: function(v){
3996 var val=v.toString();
3997 if(val !== pvalue) {
3998 pvalue=val;
3999 prepareUpdate(full_pname,val);
4000 }
4001 },
4002 get: function(){
4003 return pvalue.toString();
4004 }
4005 });
4006
4007 // int value
4008 Object.defineProperty(obj.I, pname, {
4009 enumerable: true,
4010 set: function(v){
4011 var val=parseInt(v,10) || 0;
4012 if(val !== pvalue){
4013 pvalue=val;
4014 prepareUpdate(full_pname,val);
4015 }
4016 },
4017 get: function(){
4018 return parseInt(pvalue,10) || 0;
4019 }
4020 });
4021
4022 // float value
4023 Object.defineProperty(obj.F, pname, {
4024 enumerable: true,
4025 set: function(v){
4026 var val=parseFloat(v) || 0;
4027 if(val !== pvalue) {
4028 pvalue=val;
4029 prepareUpdate(full_pname,val);
4030 }
4031 },
4032 get: function(){
4033 return parseFloat(pvalue) || 0;
4034 }
4035 });
4036 _.each(_.range(10),function(d){
4037 Object.defineProperty(obj.D[d], pname, {
4038 enumerable: true,
4039 set: function(v){
4040 var val=(parseFloat(v) || 0).toFixed(d);
4041 if(val !== pvalue){
4042 pvalue=val;
4043 prepareUpdate(full_pname,val);
4044 }
4045 },
4046 get: function(){
4047 return (parseFloat(pvalue) || 0).toFixed(d);
4048 }
4049 });
4050 });
4051
4052 }());
4053 },
4054
4055 repeating = function( section ) {
4056 return (function(s){
4057 var sectionName = s,
4058 attrNames = [],
4059 fieldNames = [],
4060 operations = [],
4061 after = [],
4062
4063 repAttrs = function TAS_Repeating_Attrs(){
4064 attrNames = namesFromArgs(arguments,attrNames);
4065 return this;
4066 },
4067 repFields = function TAS_Repeating_Fields(){
4068 fieldNames = namesFromArgs(arguments,fieldNames);
4069 return this;
4070 },
4071 repReduce = function TAS_Repeating_Reduce(func, initial, final, context) {
4072 operations.push({
4073 type: 'reduce',
4074 func: (func && _.isFunction(func) && func) || _.noop,
4075 memo: (_.isUndefined(initial) && 0) || initial,
4076 final: (final && _.isFunction(final) && final) || _.noop,
4077 context: context || {}
4078 });
4079 return this;
4080 },
4081 repMap = function TAS_Repeating_Map(func, final, context) {
4082 operations.push({
4083 type: 'map',
4084 func: (func && _.isFunction(func) && func) || _.noop,
4085 final: (final && _.isFunction(final) && final) || _.noop,
4086 context: context || {}
4087 });
4088 return this;
4089 },
4090 repEach = function TAS_Repeating_Each(func, final, context) {
4091 operations.push({
4092 type: 'each',
4093 func: (func && _.isFunction(func) && func) || _.noop,
4094 final: (final && _.isFunction(final) && final) || _.noop,
4095 context: context || {}
4096 });
4097 return this;
4098 },
4099 repTap = function TAS_Repeating_Tap(final, context) {
4100 operations.push({
4101 type: 'tap',
4102 final: (final && _.isFunction(final) && final) || _.noop,
4103 context: context || {}
4104 });
4105 return this;
4106 },
4107 repAfter = function TAS_Repeating_After(callback,context) {
4108 after.push({
4109 callback: (callback && _.isFunction(callback) && callback) || _.noop,
4110 context: context || {}
4111 });
4112 return this;
4113 },
4114 repExecute = function TAS_Repeating_Execute(callback,context){
4115 var rowSet = {},
4116 attrSet = {},
4117 fieldIds = [],
4118 fullFieldNames = [];
4119
4120 repAfter(callback,context);
4121
4122 // call each operation per row.
4123 // call each operation's final
4124 getSectionIDs("repeating_"+sectionName,function(ids){
4125 fieldIds = ids;
4126 fullFieldNames = _.reduce(fieldIds,function(memo,id){
4127 return memo.concat(_.map(fieldNames,function(name){
4128 return 'repeating_'+sectionName+'_'+id+'_'+name;
4129 }));
4130 },[]);
4131 getAttrs( _.uniq(attrNames.concat(fullFieldNames)), function(values){
4132 _.each(attrNames,function(aname){
4133 if(values.hasOwnProperty(aname)){
4134 addProp(attrSet,aname,values[aname]);
4135 }
4136 });
4137
4138 rowSet = _.reduce(fieldIds,function(memo,id){
4139 var r={};
4140 addId(r,id);
4141 _.each(fieldNames,function(name){
4142 var fn = 'repeating_'+sectionName+'_'+id+'_'+name;
4143 addProp(r,name,values[fn],fn);
4144 });
4145
4146 memo[id]=r;
4147
4148 return memo;
4149 },{});
4150
4151 _.each(operations,function(op){
4152 var res;
4153 switch(op.type){
4154 case 'tap':
4155 _.bind(op.final,op.context,rowSet,attrSet)();
4156 break;
4157
4158 case 'each':
4159 _.each(rowSet,function(r){
4160 _.bind(op.func,op.context,r,attrSet,r.id,rowSet)();
4161 });
4162 _.bind(op.final,op.context,rowSet,attrSet)();
4163 break;
4164
4165 case 'map':
4166 res = _.map(rowSet,function(r){
4167 return _.bind(op.func,op.context,r,attrSet,r.id,rowSet)();
4168 });
4169 _.bind(op.final,op.context,res,rowSet,attrSet)();
4170 break;
4171
4172 case 'reduce':
4173 res = op.memo;
4174 _.each(rowSet,function(r){
4175 res = _.bind(op.func,op.context,res,r,attrSet,r.id,rowSet)();
4176 });
4177 _.bind(op.final,op.context,res,rowSet,attrSet)();
4178 break;
4179 }
4180 });
4181
4182 // finalize attrs
4183 applyQueuedUpdates();
4184 _.each(after,function(op){
4185 _.bind(op.callback,op.context)();
4186 });
4187 });
4188 });
4189 };
4190
4191 return {
4192 attrs: repAttrs,
4193 attr: repAttrs,
4194
4195 column: repFields,
4196 columns: repFields,
4197 field: repFields,
4198 fields: repFields,
4199
4200 reduce: repReduce,
4201 inject: repReduce,
4202 foldl: repReduce,
4203
4204 map: repMap,
4205 collect: repMap,
4206
4207 each: repEach,
4208 forEach: repEach,
4209
4210 tap: repTap,
4211 'do': repTap,
4212
4213 after: repAfter,
4214 last: repAfter,
4215 done: repAfter,
4216
4217 execute: repExecute,
4218 go: repExecute,
4219 run: repExecute
4220 };
4221 }(section));
4222 },
4223
4224
4225 repeatingSimpleSum = function(section, field, destination){
4226 repeating(section)
4227 .attr(destination)
4228 .field(field)
4229 .reduce(function(m,r){
4230 return m + (r.F[field]);
4231 },0,function(t,r,a){
4232 a.S[destination]=t;
4233 })
4234 .execute();
4235 };
4236
4237 /* eslint-disable no-console */
4238 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;');
4239 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;');
4240 /* eslint-enable no-console */
4241
4242
4243 return {
4244 /* Repeating Sections */
4245 repeatingSimpleSum: repeatingSimpleSum,
4246 repeating: repeating,
4247
4248 /* Configuration */
4249 config: setConfigOption,
4250
4251 /* Debugging */
4252 callback: wrapCallback,
4253 callstack: logCallstack,
4254 debugMode: debugMode,
4255 isDebugMode: isDebugMode,
4256 _fn: wrapCallback,
4257
4258 /* Logging */
4259 debug: logDebug,
4260 error: logError,
4261 warn: logWarn,
4262 info: logInfo,
4263 notice: logNotice,
4264 log: logLog
4265 };
4266}());
4267
4268/* ---- END: TheAaronSheet.js ---- */
4269
4270
4271var SWUtils = SWUtils || (function () {
4272 'use strict';
4273 /* for interaction with ExExp, and some basic utils that have nothing to do with Pathfinder rules. */
4274 /** Determines if string can be evaluated to a number
4275 * ensures: no macro calls, dropdowns, or keep highest/lowest more than 1
4276 * allows: floor, abs, kh1, kl1, ceil, round, max, min
4277 *@param {string} preeval string to examine
4278 *@returns {bool} true if string will evaluate to a number.
4279 */
4280 var validNumericStr = function (preeval) {
4281 var anyIllegal = preeval.match(/\||\?|&|\{|\}|k[h,l][^1]/);
4282 if (anyIllegal) {
4283 return false;
4284 }
4285 anyIllegal = preeval.replace(/floor|ceil|round|abs|max|min|kh1|kl1/g, '');
4286 anyIllegal = anyIllegal.match(/[a-zA-Z]/);
4287 if (anyIllegal) {
4288 return false;
4289 }
4290 return true;
4291 },
4292 /** searches a string for @{attribute} and replaces those with their values, passes result to the callback
4293 * if error then passes null
4294 * @param {string} stringToSearch = string containing one or more @{fieldname}
4295 * @param {function(string)} callback when done passes resultant string to callback
4296 */
4297 findAndReplaceFields = function (stringToSearch, callback) {
4298 var fieldnames ;
4299 if (typeof callback !== "function") {
4300 return;
4301 }
4302 if (!stringToSearch) {
4303 callback(null);
4304 return;
4305 }
4306 try {
4307 stringToSearch = stringToSearch.split("selected|").join("");
4308 stringToSearch = stringToSearch.split("target|").join("");
4309 fieldnames = stringToSearch.match(/\@\{[^}]+\}/g);
4310 if (!fieldnames) {
4311 callback(stringToSearch);
4312 return;
4313 }
4314 fieldnames=fieldnames.sort();
4315 fieldnames = _.uniq(fieldnames,true);
4316 fieldnames = _.map(fieldnames,function(field){
4317 return field.slice(2,-1);
4318 });
4319 getAttrs(fieldnames, function (values) {
4320 var evalstr = stringToSearch, innermatches=null,initialsplit;
4321 try {
4322 _.each(fieldnames,function(field){
4323 //evalstr = evalstr.replace( new RegExp(escapeForRegExp('@{'+field+'}'),'g'), values[field]);
4324 initialsplit = evalstr.split('@{'+field+'}');
4325 evalstr = initialsplit.join(values[field]);
4326 });
4327 innermatches=evalstr.match(/\@\{[^}]+\}/g);
4328 } catch (err2) {
4329 TAS.error("findAndReplaceFields", err2);
4330 evalstr = null;
4331 } finally {
4332 if (innermatches) {
4333 findAndReplaceFields(evalstr,callback);
4334 } else {
4335 callback(evalstr);
4336 }
4337 }
4338 });
4339 } catch (err) {
4340 TAS.error("findAndReplaceFields", err);
4341 callback(null);
4342 }
4343 },
4344 /** Replaces kl1 and kh1 with min and max
4345 * example: replaces {x,y}kh1 with min(x,y)
4346 * @param {string} str the string to search
4347 * @returns {string} the resultant string after performing the replace
4348 */
4349 convertKL1KH1toMinMax = function (str) {
4350 var matches;
4351 //TAS.debug("at convertKL1KH1toMinMax for "+str) ;
4352 if (str) {
4353 matches = str.match(/(\{[^}]+\})(kh1|kl1)(?!.*\1)/g);
4354 //TAS.debug("matches are:",matches);
4355 if (matches && matches.length > 0) {
4356 str = _.reduce(matches, function (memo, match) {
4357 var isMin = /kl1$/.test(match),
4358 isMax = /kh1$/.test(match),
4359 newFunc = isMin ? "min" : (isMax ? "max" : ""),
4360 newMatch = match.slice(1, match.length - 4),
4361 replaceStr = newFunc + "(" + newMatch + ")";
4362 return memo.replace(match, replaceStr);
4363 }, str);
4364 }
4365 }
4366 return str;
4367 },
4368 /** Reads in the string, evaluates it to a single number, passes that number to a callback
4369 * calls callback with: the number, 0 (if exprStr empty), or null if an error is encountered
4370 *@param {string} exprStr A string containing a mathematical expression, possibly containing references to fields such as @{myfield}
4371 *@param {function(Number)} callback a function taking one parameter - could be int or float
4372 */
4373 evaluateExpression = function (exprStr, callback) {
4374 var bmatches1 = 0, bmatches2 = 0, pmatches1 = 0, pmatches2 = 0, smatches1 = 0, smatches2 = 0;
4375 if (typeof callback !== "function") {
4376 return;
4377 }
4378 if (exprStr === "" || exprStr === null || exprStr === undefined) {
4379 callback(0);
4380 return;
4381 }
4382 //verify that same number of parenthesis exists
4383 bmatches1 = (exprStr.match(/\(/g) || []).length;
4384 bmatches2 = (exprStr.match(/\)/g) || []).length;
4385 pmatches1 = (exprStr.match(/\{/g) || []).length;
4386 pmatches2 = (exprStr.match(/\}/g) || []).length;
4387 smatches1 = (exprStr.match(/\[/g) || []).length;
4388 smatches2 = (exprStr.match(/\]/g) || []).length;
4389 if (bmatches1 !== bmatches2 || pmatches1 !== pmatches2 || smatches1 !== smatches2) {
4390 TAS.warn("evaluateExpression: Mismatched brackets, cannot evaluate:" + exprStr);
4391 callback(null);
4392 return;
4393 }
4394
4395 findAndReplaceFields(exprStr, function (replacedStr) {
4396 var evaluated,
4397 newexprStr;
4398 //TAS.debug("search and replace of " + exprStr + " resulted in " + replacedStr);
4399 if (replacedStr === null || replacedStr === undefined) {
4400 callback(null);
4401 return;
4402 }
4403 try {
4404 replacedStr = replacedStr.replace(/\s+/g, '').replace(/\[\[/g, "(").replace(/\]\]/g, ")").replace(/\[/g, "(").replace(/\]/g, ")");
4405 newexprStr = convertKL1KH1toMinMax(replacedStr);
4406 //TAS.debug("replacedStr is now "+newexprStr);
4407 if (newexprStr !== replacedStr) {
4408 replacedStr = newexprStr;
4409 }
4410 if (!isNaN(Number(replacedStr)) && isFinite(replacedStr)) {
4411 evaluated = parseFloat(replacedStr);
4412 if (!isNaN(evaluated)) {
4413 callback(evaluated);
4414 return;
4415 }
4416 }
4417 if (typeof replacedStr !== "undefined" && replacedStr !== null && validNumericStr(replacedStr)) {
4418 evaluated = ExExp.handleExpression(replacedStr);
4419 if (!isNaN(evaluated)) {
4420 callback(evaluated);
4421 } else {
4422 TAS.warn("cannot evaluate this to number: " + exprStr +" came back with " + replacedStr);
4423 callback(null);
4424 }
4425 } else {
4426 TAS.warn("cannot evaluate this to number: " + exprStr+" came back with " + replacedStr);
4427 callback(null);
4428 }
4429 } catch (err3) {
4430 TAS.error("error trying to convert to number:" + err3);
4431 callback(null);
4432 }
4433 });
4434 },
4435 /** evaluateAndSetNumber
4436 * Examines the string in readField, and tests to see if it is a number
4437 * if it's a number immediately write it to writeField.
4438 * if not, then replace any @{field} references with numbers, and then evaluate it
4439 * as a mathematical expression till we find a number.
4440 *
4441 * note this is NOT recursive, you can't point one field of
4442 *
4443 * @param {string} readField= field to read containing string to parse
4444 * @param {string} writeField= field to write to
4445 * @param {number} defaultVal= optional, default to set if we cannot evaluate the field. If not supplied assume 0
4446 * @param {function} callback - function(newval, oldval, ischanged)
4447 * @param {bool} silently if true set new val with {silent:true}
4448 * @param {bool} dontSetErrorFlag if true and we could not evaluate, then set attribute named writeField+"_error" to 1
4449 * @param {function} errcallback call if there was an error parsing string function(newval, oldval, ischanged)
4450 */
4451 evaluateAndSetNumber = function (readField, writeField, defaultVal, callback, silently, errcallback) {
4452 var
4453 done = function (a, b, c,currError) {
4454 var donesetter={};
4455 if (currError){
4456 donesetter[writeField+'_error']=0;
4457 setAttrs(donesetter,{silent:true});
4458 }
4459 if (typeof callback === "function") {
4460 callback(a, b, c);
4461 }
4462 },
4463 errordone = function(a,b,c,currError){
4464 var donesetter={};
4465 //TAS.debug("leaving set of "+ writeField+" with old:"+b+", new:"+c+" is changed:"+ c+" and curreerror:"+currError);
4466 if (!currError){
4467 donesetter[writeField+'_error']=1;
4468 setAttrs(donesetter,{silent:true});
4469 }
4470 if (typeof errcallback === "function") {
4471 errcallback(a, b, c);
4472 } else if (typeof callback === "function") {
4473 callback(a, b, c);
4474 }
4475 };
4476 getAttrs([readField, writeField, writeField+"_error"], function (values) {
4477 var setter = {},
4478 params = {},
4479 trueDefault=0,
4480 currVal=0,
4481 isError=0,
4482 currError=0,
4483 isChanged=false,
4484 value=0;
4485 try {
4486 if (silently){params.silent=true;}
4487 currError= parseInt(values[writeField+"_error"],10)||0;
4488 trueDefault = defaultVal || 0;
4489 currVal = parseInt(values[writeField], 10);
4490 value = Number(values[readField]);
4491 //check for blank
4492 if (typeof values[readField] === "undefined" || !values[readField] || values[readField]===null || values[readField]==="" ) {
4493 //if value of readField is blank then set to defaultval.
4494 value = trueDefault;
4495 if (currVal !== value || isNaN(currVal)) {
4496 setter[writeField] = value;
4497 setAttrs(setter, params, function () {
4498 done(value, currVal, true,currError);
4499 });
4500 } else {
4501 done(value, currVal, false,currError);
4502 }
4503 } else if (!isNaN(value)) {
4504 //check for number
4505 if (currVal !== value) {
4506 setter[writeField] = value;
4507 setAttrs(setter, params, function () {
4508 done(value, currVal, true);
4509 });
4510 } else {
4511 done(value, currVal, false,currError);
4512 }
4513 } else {
4514 //pass to evaluateExpression
4515 evaluateExpression(values[readField], function (value2) {
4516 try {
4517 if (value2 === null || value2===undefined || isNaN(value2)) {
4518 isError=1;
4519 value2=trueDefault;
4520 //TAS.debug("setting "+ writeField+" to " +value2);
4521 }
4522 if (isNaN(currVal) || currVal !== value2) {
4523 setter[writeField] = value2;
4524 }
4525 if (_.size(setter)>0){
4526 isChanged=true;
4527 }
4528 } catch (err2) {
4529 TAS.error("SWUtils.evaluateAndSetNumber error after call to evaluateExpression ", err2);
4530 isError=1;
4531 } finally {
4532 setAttrs(setter, params, function () {
4533 if (!isError){
4534 done(value2, currVal, isChanged,currError);
4535 } else {
4536 errordone(value2,currVal,isChanged,currError);
4537 }
4538 });
4539
4540 }
4541 });
4542 }
4543 } catch (err) {
4544 TAS.error("SWUtils.evaluateAndSetNumber", err);
4545 setter[writeField+'_error']=1;
4546 setAttrs(setter,{silent:true},function(){errordone(value, currVal, false,currError);});
4547 }
4548 });
4549 },
4550 /** Reads dropdown value, determines attribute referenced, gets that attribute value, passes it to callback.
4551 * similar to evaluateAndSetNumber but uses a synchronus function to perform search and replace, and assumes the string is only one value not an expression.
4552 * necessary because some dropdowns have other text in the dropdowns, so we can't use the dropdown value exactly as is.
4553 * called by setDropdownValue
4554 * @param {string} readField the attribute name of dropdown we are looking at
4555 * @param {function} synchrousFindAttributeFunc reads in the value of the dropdown field, and returns the exact name of the attribute to look up (since some dropdowns have other text in value)
4556 * @param {function(int)} callback pass the value the dropdown selection represents
4557 * exceptions: if readField is not found pass in "", if readField is 0 or starts with 0 pass in 0.
4558 */
4559 getDropdownValue = function (readField, synchrousFindAttributeFunc, callback) {
4560 if (!readField || (callback && typeof callback !== "function") || typeof synchrousFindAttributeFunc !== "function") {
4561 return;
4562 }
4563 getAttrs([readField], function (values) {
4564 var fieldToFind = values[readField],
4565 foundField = "";
4566 if (typeof fieldToFind === "undefined" || fieldToFind === null) {
4567 callback("");
4568 } else if (fieldToFind === "0" || fieldToFind === 0 || fieldToFind.indexOf("0") === 0) {
4569 //select = none
4570 callback(0);
4571 } else {
4572 foundField = synchrousFindAttributeFunc(fieldToFind);
4573 getAttrs([foundField], function (v) {
4574 var valueOf = parseInt(v[foundField], 10) || 0;
4575 callback(valueOf, foundField);
4576 });
4577 }
4578 });
4579 },
4580 /** Looks at a dropdown value, and sets writeField(s) with the number to which selected option refers.
4581 * calls getDropdownValue
4582 * @param {string} readField the dropdown field
4583 * @param {string_or_Array} writeFields Field(s) to write the value to
4584 * @param {function} synchrousFindAttributeFunc takes value of @readField and says what the lookup field is.
4585 * @param {function(int)} callback (optional) if we need to update the field, call this function
4586 * with the value we set as the only parameter.
4587 * @param {bool} silently if true call setAttrs with {silent:true}
4588 */
4589 setDropdownValue = function (readField, writeFields, synchrousFindAttributeFunc, callback, silently) {
4590 var done = function (newval, currval, changed) {
4591 if (typeof callback === "function") {
4592 callback(newval, currval, changed);
4593 }
4594 };
4595 SWUtils.getDropdownValue(readField, synchrousFindAttributeFunc, function (valueOf) {
4596 var params = {};
4597 if (silently) {params.silent=true;}
4598 if (Array.isArray(writeFields) && writeFields.length === 1) {
4599 writeFields = writeFields[0];
4600 }
4601 if (typeof writeFields === "string") {
4602 getAttrs([writeFields], function (v) {
4603 var currValue = parseInt(v[writeFields], 10),
4604 setter = {};
4605 //TAS.debug("setDropdownValue, readField:" + readField + ", currValue:" + currValue + ", newValue:" + valueOf);
4606 if (currValue !== valueOf || isNaN(currValue)) {
4607 setter[writeFields] = valueOf;
4608 setAttrs(setter, params, function () {
4609 done(valueOf, currValue, true);
4610 });
4611 } else {
4612 done(valueOf, currValue, false);
4613 }
4614 });
4615 } else if (Array.isArray(writeFields)) {
4616 getAttrs(writeFields, function (v) {
4617 var i = 0,
4618 setter = {};
4619 for (i = 0; i < writeFields.length; i++) {
4620 if (parseInt(v[writeFields[i]], 10) !== valueOf) {
4621 setter[writeFields[i]] = valueOf;
4622 }
4623 }
4624 if (_.size(setter) > 0) {
4625 setAttrs(setter, params, function () {
4626 done(valueOf, 0, true);
4627 });
4628 } else {
4629 done(valueOf, 0, false);
4630 }
4631 });
4632 }
4633 });
4634 },
4635 /** getRowTotal return newvalue, currentvalue, allvalues in callback. Summed up floats and round total to int.
4636 * THIS IS PROBABLY SLOWER THAN DOING IT YOURSELF, just wrote to make things simpler.
4637 * @param {Array} fields array of field names to be added up, EXCEPT the first field which is ignored (at index 0) which is the total current value
4638 * @param {number} bonus a number that is added to the other fields.
4639 * @param {Array} penalties array of fieldnames whose values are to be subtracted from the total
4640 * @param {boolean} totalIsFloat true if we should not round the total to int.
4641 * @param {function(number,number)} callback call this with: new total, current total
4642 * @param {function} errorCallback call if error attempting to add.
4643 */
4644 getRowTotal = function (fields, bonus, penalties, totalIsFloat, callback, errorCallback) {
4645 var readFields;
4646 if (typeof callback !== "function" || typeof errorCallback !== "function") {
4647 return;
4648 }
4649 try {
4650 if (!fields || (!Array.isArray(fields)) || fields.length === 0) {
4651 return;
4652 }
4653 if (penalties && Array.isArray(penalties) && penalties.length > 0) {
4654 readFields = fields.concat(penalties);
4655 } else {
4656 readFields = fields;
4657 }
4658 } catch (err2) {
4659 TAS.error("SWUtils.getRowTotal catastrophic error: ", err2);
4660 errorCallback();
4661 return;
4662 }
4663 getAttrs(readFields, function (v) {
4664 var currValue = totalIsFloat ? parseFloat(v[fields[0]]) : parseInt(v[fields[0]], 10),
4665 newValue = 0,
4666 penalty = 0,
4667 i; //, setter = {}
4668 try {
4669 //remember start at 1
4670 for (i = 1; i < fields.length; i++) {
4671 newValue += parseFloat(v[fields[i]]) || 0;
4672 }
4673 if (bonus && !isNaN(parseInt(bonus, 10))) {
4674 newValue += parseFloat(bonus);
4675 }
4676 if (penalties) {
4677 for (i = 0; i < penalties.length; i++) {
4678 penalty += parseFloat(v[penalties[i]]) || 0;
4679 }
4680 newValue -= penalty;
4681 }
4682 if (!totalIsFloat) {
4683 newValue = Math.floor(newValue);
4684 }
4685 callback(newValue, currValue);
4686 } catch (err) {
4687 TAS.error("SWUtils.getRowTotal", err);
4688 errorCallback();
4689 }
4690 });
4691 },
4692 /** Adds up numbers and puts it in the first field of the fields array.
4693 * All numbers are added up as FLOATS, and then FLOOR is used to round the sum down
4694 * @param {Array} fields array of field names to be added up, EXCEPT the first field. fields[0] MUST be the total field
4695 * @param {number} bonus a number that is added to the other fields.
4696 * @param {Array} penalties array of fieldnames whose values are to be subtracted from the total
4697 * @param {boolean} totalIsFloat true if we should not round the total to int.
4698 * @param {function(number,number)} callback optional call this with two values: the new total, old total
4699 * @param {bool} silently if true call setAttrs with {silent:true}
4700 */
4701 updateRowTotal = function (fields, bonus, penalties, totalIsFloat, callback, silently) {
4702 var done = function () {
4703 if (typeof callback === "function") {
4704 callback();
4705 }
4706 };
4707 getRowTotal(fields, bonus, penalties, totalIsFloat, function (newValue, currValue) {
4708 var setter = {},
4709 params = {};
4710 try {
4711 if (newValue !== currValue) {
4712 setter[fields[0]] = newValue;
4713 }
4714 } catch (err) {
4715 TAS.error("PFUtilsAsync.updateRowTotal", err);
4716 } finally {
4717 if (_.size(setter) > 0) {
4718 if (silently) {
4719 params.silent=true;
4720 }
4721 setAttrs(setter, params, done);
4722 } else {
4723 done();
4724 }
4725 }
4726 }, done);
4727 },
4728 /** Escapes special chars for regex
4729 *@param {string} str the string to examine
4730 *@param {boolean} escapeSpaces if we should replace any space with \s* (caller can use it for matching purposes)
4731 *@returns {string} resultant string after search and replace
4732 */
4733 escapeForRegExp = function (str, escapeSpaces) {
4734 var regexEscapes = /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|\~\!\@\#]/g,
4735 tempstr ='';
4736 if (str) {
4737 tempstr = str.replace(regexEscapes, "\\$&");
4738 if (escapeSpaces){
4739 //replace space plus multiple spaces with non escaped 0 or * space.
4740 tempstr = tempstr.replace(/\t+|\s+/g,'\\s*');
4741 }
4742 }
4743 return tempstr;
4744 },
4745 /** Escapes special chars for macros - to create sub queries - this is not used currently
4746 *@param {string} str the string to examine
4747 *@returns {string} resultant string after search and replace
4748 */
4749 escapeForMacroCall = function (str) {
4750 var macroCallEscapes = [ [/\{\{/g, '{{'],
4751 [/\}\}/g, '}}'],
4752 [/\(/g, '('],
4753 [/\)/g, ')'],
4754 [/\,/g, ','],
4755 [/\?/g, '?'],
4756 [/'/g, '''],
4757 [/"/g, '"'],
4758 [/\=/g, '='] ];
4759 if (str) {
4760 return _.reduce(macroCallEscapes, function (currStr, pair) {
4761 return currStr.replace(pair[0], pair[1]);
4762 }, str);
4763 }
4764 return "";
4765 },
4766 /** Escapes '{{' for passing to a rolltemplate
4767 *@param {string} str the string to examine
4768 *@returns {string} resultant string after search and replace
4769 */
4770 escapeForRollTemplate = function (str) {
4771 if (!str){return str;}
4772 return str.replace(/\{\{/g, '{{');
4773 },
4774 /** escapes string so it can be used in the name section of another link button
4775 *if it finds [name](link) in a string it will remove the [ and ] and the (link)
4776 * replaces [ and ] with escaped versions everywhere else.
4777 *@param {string] str the string we want to use inside a link button
4778 *@returns {string} safe to use new name for button
4779 */
4780 escapeForChatLinkButton = function(str){
4781 var markdownLinkreg=/^([^\[]*?)\[([^\]]*?)\]\(([^\)]*?)\)(.*)$/,
4782 retstr="", matches;
4783 if (!str){return str;}
4784 matches = markdownLinkreg.exec(str);
4785 if(matches){
4786 if (matches[1]){
4787 retstr+=matches[1];
4788 }
4789 if(matches[2]){
4790 retstr += matches[2];
4791 }
4792 if (matches[4]){
4793 retstr += matches[4];
4794 }
4795 } else {
4796 retstr = str;
4797 }
4798 retstr = retstr.replace(/\[/g,'[').replace(/\]/g,']');
4799 return retstr;
4800 },
4801 /** returns id portion of a source Attribute or repeating row attribute name
4802 * @param {string} sourceAttribute from eventInfo object
4803 * @returns {string} the id portion of string, or blank.
4804 */
4805 getRowId = function (sourceAttribute) {
4806 if (!sourceAttribute) { return ""; }
4807 var strs = sourceAttribute.split('_');
4808 if (strs && _.size(strs) >= 4) {
4809 return strs[2];
4810 }
4811 return "";
4812 },
4813 getAttributeName = function (source) {
4814 if (!source) { return ""; }
4815 var itemId = getRowId(source), attrib = "";
4816 if (itemId) {
4817 attrib = source.substring(source.indexOf(itemId) + itemId.length + 1, source.length);
4818 }
4819 return attrib;
4820 },
4821 /** getRepeatingIDStr - if id is not empty, then returns the ID with an underscore on the right. else returns empty string
4822 * this is used so the same function can be written for loops from getIDs or direct from the event with no ID
4823 *@param {string} id the id of the row or blank
4824 *@returns {string} id_ or blank
4825 */
4826 getRepeatingIDStr = function (id) {
4827 var idStr = "";
4828 if (!(id === null || id === undefined)) {
4829 idStr = id + "_";
4830 }
4831 return idStr;
4832 },
4833 /** Append values of multiple arrays of strings together to return one NEW array of strings that is the cartesian product.
4834 * @example cartesianAppend(["a","b"],["c","d"], ["e","f"]);
4835 * // returns ["ace","acf","ade","adf","bce","bcf","bde","bdf"]
4836 * @example cartesianAppend(["pre_"] , ["a","b","c"], ["_post"] );
4837 * //returns ["pre_a_post","pre_b_post","pre_c_post"]
4838 * @param {Array} [...] Arrays of strings
4839 * @returns {Array} of all values in other arrays
4840 */
4841 cartesianAppend = function () {
4842 return _.reduce(arguments, function (a, b) {
4843 return _.flatten(_.map(a, function (x) {
4844 return _.map(b, function (y) {
4845 return String(x) + String(y);
4846 });
4847 }), true);
4848 }, [[]]);
4849 },
4850 /** Concatenates cartesian product of all arrays together returns one flattened NEW array.
4851 * @param {Array} [...] Arrays
4852 * @returns {Array} cartesian product of all arrays (concatenated nothing else)
4853 */
4854 cartesianProduct = function () {
4855 return _.reduce(arguments, function (a, b) {
4856 return _.flatten(_.map(a, function (x) {
4857 return _.map(b, function (y) {
4858 return x.concat([y]);
4859 });
4860 }), true);
4861 }, [[]]);
4862 },
4863 /** trimBoth removes spaces at beginning and end of string, or of each string in an array.
4864 * performs a deep match, so if array is of arrays, will call trim on every string.
4865 * if object is not an array or string, just return object.
4866 * therefore, non immutable objects are not cloned and array will contain links to them.
4867 *@param {Array or string} val string or array of strings
4868 *@returns {Array or string} same object type as passed in
4869 */
4870 trimBoth = function(val){
4871 if (Array.isArray(val)){
4872 return _.map(val,trimBoth);
4873 }
4874 if (typeof val === 'string') {
4875 return val.replace(/^\s*|\s*$/g,'');
4876 }
4877 return val;
4878 }
4879 ;
4880 return {
4881 cartesianAppend: cartesianAppend,
4882 cartesianProduct: cartesianProduct,
4883 convertKL1KH1toMinMax: convertKL1KH1toMinMax,
4884 escapeForRegExp: escapeForRegExp,
4885 escapeForRollTemplate: escapeForRollTemplate,
4886 searchAndReplaceFields: findAndReplaceFields,
4887 findAndReplaceFields: findAndReplaceFields,
4888 evaluateExpression: evaluateExpression,
4889 getRowId: getRowId,
4890 getAttributeName: getAttributeName,
4891 evaluateAndSetNumber: evaluateAndSetNumber,
4892 escapeForChatLinkButton: escapeForChatLinkButton,
4893 getDropdownValue: getDropdownValue,
4894 setDropdownValue: setDropdownValue,
4895 getRowTotal: getRowTotal,
4896 updateRowTotal: updateRowTotal,
4897 getRepeatingIDStr: getRepeatingIDStr,
4898 validNumericStr: validNumericStr,
4899 trimBoth: trimBoth
4900 };
4901}());
4902
4903//calculate current wounds//
4904
4905
4906//calculate armor points //
4907on('change:repeating_armor', function(){
4908 TAS.repeating('armor')
4909 .attrs('ArmourAPHead','ArmourAPRightArm','ArmourAPLeftArm','ArmourAPBody','ArmourAPRightLeg','ArmourAPLeftLeg','ArmourAPShield','Current_TB')
4910 .fields('ArmourHead','ArmourRArm','ArmourLArm','ArmourBody','ArmourRLeg','ArmourLLeg','ArmourShield','ArmourPoints')
4911 .reduce(function(m,r){
4912 m.totalheadAP += (r.I.ArmourHead*r.I.ArmourPoints);
4913 m.totalRArmAP += (r.I.ArmourRArm*r.I.ArmourPoints);
4914 m.totalLArmAP += (r.I.ArmourLArm*r.I.ArmourPoints);
4915 m.totalBodyAP += (r.I.ArmourBody*r.I.ArmourPoints);
4916 m.totalRLegAP += (r.I.ArmourRLeg*r.I.ArmourPoints);
4917 m.totalLLegAP += (r.I.ArmourLLeg*r.I.ArmourPoints);
4918 m.totalShieldAP += (r.I.ArmourShield*r.I.ArmourPoints);
4919 return m;
4920 },{totalheadAP:0,totalRArmAP:0,totalLArmAP:0,totalBodyAP:0,totalRLegAP:0,totalLLegAP:0,totalShieldAP:0},function(m,r,a){
4921 a.I.ArmourAPHead = m.totalheadAP;
4922 a.I.ArmourAPRightArm = m.totalRArmAP;
4923 a.I.ArmourAPLeftArm = m.totalLArmAP;
4924 a.I.ArmourAPBody = m.totalBodyAP;
4925 a.I.ArmourAPRightLeg = m.totalRLegAP;
4926 a.I.ArmourAPLeftLeg = m.totalLLegAP;
4927 a.I.ArmourAPShield = m.totalShieldAP;
4928 })
4929 .execute();
4930
4931 TAS.repeatingSimpleSum('armor','ArmourEnc','character_EncumbranceArmour');
4932});
4933
4934 //Update Trappings Enc
4935on('change:repeating_trappings', function(){
4936 TAS.repeating('trappings')
4937 .attrs('character_EncumbranceTrappings')
4938 .fields('TrappingHeld','TrappingWeight')
4939 .reduce(function(m,r){
4940 m.totalheld += (r.I.TrappingHeld*r.I.TrappingWeight);
4941 return m;
4942 },{totalheld:0},function(m,r,a){
4943 a.I.character_EncumbranceTrappings = m.totalheld;
4944 })
4945 .execute();
4946});
4947
4948//Update Weapon Enc
4949on('change:repeating_weapons', function(){
4950 TAS.repeating('weapons')
4951 .attrs('character_EncumbranceWeapons')
4952 .fields('WeaponHeld','WeaponEnc')
4953 .reduce(function(m,r){
4954 m.totalheld += (r.I.WeaponHeld*r.I.WeaponEnc);
4955 return m;
4956 },{totalheld:0},function(m,r,a){
4957 a.I.character_EncumbranceWeapons = m.totalheld;
4958 })
4959 .execute();
4960});
4961
4962 on('change:repeating_advancements', function(){
4963 TAS.repeating('advancements') //< set the repeating group we are using
4964 .attrs('character_SpentExperience') //< specify we want access to the total_weight attribute
4965 .fields('advancement1xp', 'advancement2xp', 'advancement3xp') //< specify we want the item and weight repeating fields
4966 .reduce(function(memo,row,attrSet,id,rowSet)
4967 {
4968 memo.total += row.I.advancement1xp;
4969 memo.total += row.I.advancement2xp;
4970 memo.total += row.I.advancement3xp;
4971 return memo;
4972 },{total: 0},function(memo,rowSet,attrSet)
4973 {
4974 attrSet.I.character_SpentExperience = memo.total;
4975 })
4976 .execute();
4977});
4978
4979
4980
4981 on('change:Wounds_SB_Opt change:Wounds_TB_Opt change:Wounds_WPB_Opt change:Current_SB change:Current_TB change:Current_WPB change:Wounds_Size_Opt change:Wounds_Hardy_Opt change:Wounds_Mod', function(){
4982 getAttrs(["Wounds_Size", "Wounds_hidden"], function(value)
4983 {
4984 setAttrs({Wounds_hidden: 0});
4985 setAttrs({Wounds_hidden: value.Wounds_Size});
4986 });
4987});
4988
4989</script>