mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-30 11:42:29 +00:00
3823 lines
150 KiB
HTML
3823 lines
150 KiB
HTML
<div style="font-family:Tahoma">
|
||
<div style="font-family:Tahoma">
|
||
<input type="radio" name="attr_tab1" class="sheet-tab sheet-tab1" value="1" title="Background" checked="checked" /><span title="Front"></span>
|
||
<input type="radio" name="attr_tab1" class="sheet-tab sheet-tab2" value="2" title="Skills" /><span title="Back"></span>
|
||
<div class="sheet-tab-content sheet-tab1"><!--- Tab 1 start -->
|
||
<input type="text" style="display:none" name="attr_setupDone" value="0" />
|
||
<div class='sheet-2colrow'>
|
||
|
||
<div class="sheet-col" style="width:32%;margin-right:5px">
|
||
<div class="sheet-logo">
|
||
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="sheet-col" style="width:66%">
|
||
<table class="sheet-info_table">
|
||
<tr>
|
||
<td class="sheet-info_labels"><b>Ryū</b></td><td><input class="sheet-text_input sheet-info_input" type="text" name="attr__ryu" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-info_labels">Family</td><td><input class="sheet-text_input sheet-info_input" type="text" name="attr__family" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-info_labels">Name</td><td><input class="sheet-text_input sheet-info_input" type="text" name="attr_character_name" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-info_labels">(ML) Title</td><td><input class="sheet-text_input sheet-info_input" type="text" name="attr__title" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td style="width:18%" class="sheet-info_labels">Primary Cover</td><td style="width:80%"><input class="sheet-text_input sheet-info_input" type="text" name="attr__name" /></td>
|
||
</tr>
|
||
</table>
|
||
|
||
</div>
|
||
</div>
|
||
<br />
|
||
<div>
|
||
|
||
<table class="sheet-table_center padded">
|
||
<tr class="first">
|
||
<th class="first"></th>
|
||
<th ><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=INT}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_int}[INT]]]}} {{crit=[[[[18]]+@{cur_int}]]}} {{fumble1=[[[[3]]+@{cur_int}]]}} {{fumble2=[[[[4]]+@{cur_int}]]}} {{fumble3=[[[[5]]+@{cur_int}]]}}">INT</button></th>
|
||
<th><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=Will}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_will}[Will]]]}} {{crit=[[[[18]]+@{cur_will}]]}} {{fumble1=[[[[3]]+@{cur_will}]]}} {{fumble2=[[[[4]]+@{cur_will}]]}} {{fumble3=[[[[5]]+@{cur_will}]]}}">WILL</button></th>
|
||
<th><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=PRE}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_pre}[PRE]]]}} {{crit=[[[[18]]+@{cur_pre}]]}} {{fumble1=[[[[3]]+@{cur_pre}]]}} {{fumble2=[[[[4]]+@{cur_pre}]]}} {{fumble3=[[[[5]]+@{cur_pre}]]}}">PRE</button></th>
|
||
<th><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=AES}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_aes}[AES]]]}} {{crit=[[[[18]]+@{cur_aes}]]}} {{fumble1=[[[[3]]+@{cur_aes}]]}} {{fumble2=[[[[4]]+@{cur_aes}]]}} {{fumble3=[[[[5]]+@{cur_aes}]]}}">AES</button></th>
|
||
<th><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=PIE}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_pie}[PIE]]]}} {{crit=[[[[18]]+@{cur_pie}]]}} {{fumble1=[[[[3]]+@{cur_pie}]]}} {{fumble2=[[[[4]]+@{cur_pie}]]}} {{fumble3=[[[[5]]+@{cur_pie}]]}}">PIE</button></th>
|
||
<th><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=KAO}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_kao}[KAO]]]}} {{crit=[[[[18]]+@{cur_kao}]]}} {{fumble1=[[[[3]]+@{cur_kao}]]}} {{fumble2=[[[[4]]+@{cur_kao}]]}} {{fumble3=[[[[5]]+@{cur_kao}]]}}">KAO</button></th>
|
||
<th><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=STR}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_str}[STR]]]}} {{crit=[[[[18]]+@{cur_str}]]}} {{fumble1=[[[[3]]+@{cur_str}]]}} {{fumble2=[[[[4]]+@{cur_str}]]}} {{fumble3=[[[[5]]+@{cur_str}]]}}">STR</button></th>
|
||
<th><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=CON}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_con}[CON]]]}} {{crit=[[[[18]]+@{cur_con}]]}} {{fumble1=[[[[3]]+@{cur_con}]]}} {{fumble2=[[[[4]]+@{cur_con}]]}} {{fumble3=[[[[5]]+@{cur_con}]]}}">CON</button></th>
|
||
<th><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=BODY}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_body}[BODY]]]}} {{crit=[[[[18]]+@{cur_body}]]}} {{fumble1=[[[[3]]+@{cur_body}]]}} {{fumble2=[[[[4]]+@{cur_body}]]}} {{fumble3=[[[[5]]+@{cur_body}]]}}">BODY</button></th>
|
||
<th><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=REF}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_ref}[REF]]]}} {{crit=[[[[18]]+@{cur_ref}]]}} {{fumble1=[[[[3]]+@{cur_ref}]]}} {{fumble2=[[[[4]]+@{cur_ref}]]}} {{fumble3=[[[[5]]+@{cur_ref}]]}}">REF</button></th>
|
||
<th><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=DEX}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_dex}[DEX]]]}} {{crit=[[[[18]]+@{cur_dex}]]}} {{fumble1=[[[[3]]+@{cur_dex}]]}} {{fumble2=[[[[4]]+@{cur_dex}]]}} {{fumble3=[[[[5]]+@{cur_dex}]]}}">DEX</button></th>
|
||
<th><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=TECH}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_tech}[TECH]]]}} {{crit=[[[[18]]+@{cur_tech}]]}} {{fumble1=[[[[3]]+@{cur_tech}]]}} {{fumble2=[[[[4]]+@{cur_tech}]]}} {{fumble3=[[[[5]]+@{cur_tech}]]}}">TECH</button></th>
|
||
<th class="last"><button class="sheet-new_roll" type="roll" value="&{template:StatRoll} {{name=@{character_name}}} {{stat=MOVE}} {{ActionTotal=[[[[3d6]][Roll]+@{cur_move}[MOVE]]]}} {{crit=[[[[18]]+@{cur_move}]]}} {{fumble1=[[[[3]]+@{cur_move}]]}} {{fumble2=[[[[4]]+@{cur_move}]]}} {{fumble3=[[[[5]]+@{cur_move}]]}}">MOVE</button></th>
|
||
</tr>
|
||
<tr>
|
||
<td class="first">Base</td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_int" /></td>
|
||
<td class="sheet-td_inputs"> <input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_will" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_pre" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_aes" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_pie" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_kao" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_str" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_con" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_body" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_ref" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_dex" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_tech" /></td>
|
||
<td class="sheet-td_inputs last"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_move" /></td>
|
||
</tr>
|
||
<tr class="last">
|
||
<td class="first">Modifier</td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_int_mod" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_will_mod" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_pre_mod" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_aes_mod" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_pie_mod" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_kao_mod" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_str_mod" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_con_mod" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_body_mod" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_ref_mod" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_dex_mod" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_tech_mod" /></td>
|
||
<td class="sheet-td_inputs last"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_move_mod" /></td>
|
||
</tr>
|
||
<tr class="last">
|
||
<td class="first">Current</td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_int" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_will" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_pre" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_aes" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_pie" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_kao" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_str" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_con" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_body" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_ref" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_dex" /></td>
|
||
<td class="sheet-td_inputs"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_tech" /></td>
|
||
<td class="sheet-td_inputs last"><input type="text" class="sheet-char_inputs sheet-text_input" readonly value="0" name="attr_cur_move" /></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<br />
|
||
<div>
|
||
<table class="sheet-table_center padded">
|
||
<tr class="first">
|
||
<th class="first">SD</th><th>REC</th><th>END</th><th>STUN</th><th>HITS</th><th>RUN</th><th>SPRINT</th><th>LEAP</th><th>RES</th><th class="last">HONOR</th>
|
||
</tr>
|
||
<tr class="last">
|
||
<td class="sheet-td_inputs first"><input type="text" readonly class="sheet-char_inputs sheet-text_input" value="0" name="attr_base_sd" /></td>
|
||
<td class="sheet-td_inputs "><input type="text" readonly class="sheet-char_inputs sheet-text_input" value="0" name="attr_base_rec" /></td>
|
||
<td class="sheet-td_inputs "><input type="text" readonly class="sheet-char_inputs sheet-text_input" value="0" name="attr_base_end" /></td>
|
||
<td class="sheet-td_inputs "><input type="text" readonly class="sheet-char_inputs sheet-text_input" value="0" name="attr_base_stun" /></td>
|
||
<td class="sheet-td_inputs "><input type="text" readonly class="sheet-char_inputs sheet-text_input" value="0" name="attr_base_hits" /></td>
|
||
<td class="sheet-td_inputs "><input type="text" readonly class="sheet-char_inputs sheet-text_input" value="0" name="attr_base_run" /></td>
|
||
<td class="sheet-td_inputs "><input type="text" readonly class="sheet-char_inputs sheet-text_input" value="0" name="attr_base_sprint" /></td>
|
||
<td class="sheet-td_inputs "><input type="text" readonly class="sheet-char_inputs sheet-text_input" value="0" name="attr_base_leap" /></td>
|
||
<td class="sheet-td_inputs "><input type="text" readonly class="sheet-char_inputs sheet-text_input" value="0" name="attr_base_res" /></td>
|
||
<td class="sheet-td_inputs last"><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_base_honor" /></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<br />
|
||
|
||
<br />
|
||
<div class="sheet-cdiv">
|
||
<span class="sheet-cpto_header" style="inline-block">Packages</span><input class="sheet-HideConfig" type="checkbox" checked="checked" name="attr_is_config"><span class="sheet-is-config"><span style="font-family: "pictos"">y</span></span>
|
||
<div class="sheet-config" style="border-style: dotted ; border-color: gray ; padding: 5px ; background-color: white ; background-image: none">
|
||
|
||
<br />
|
||
<div class='sheet-3colrow'>
|
||
<div class='sheet-col' style="">
|
||
<span class="sheet-cpto_header">Caste Packages</span>
|
||
<input type="checkbox" style="display:none" class="sheet-showKuge" name="attr_addKuge" value="0" />
|
||
<div class="sheet-Kuge">
|
||
<input type="checkbox" class="sheet-showKuge" name="attr_addKuge" value="0" />Add Kuge
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showBuke" name="attr_addBuke" value="0" />
|
||
<div class="sheet-Buke">
|
||
<input type="checkbox" class="sheet-showBuke" name="attr_addBuke" value="0" />Add Buke
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showBonge" name="attr_addBonge" value="0" />
|
||
<div class="sheet-Bonge">
|
||
<input type="checkbox" class="sheet-showBonge" name="attr_addBonge" value="0" />Add Bonge
|
||
</div>
|
||
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showhinen" name="attr_addHinin" value="0" />
|
||
<div class="sheet-hinen">
|
||
<input type="checkbox" class="sheet-showhinen" name="attr_addHinin" value="0" />Add Hinen
|
||
</div>
|
||
</div>
|
||
|
||
<div class='sheet-col' style="">
|
||
<span class="sheet-cpto_header">Occupation Packages</span>
|
||
<input type="checkbox" style="display:none" class="sheet-showShokunin" name="attr_addShokunin" value="0" />
|
||
<div class="sheet-Shokunin">
|
||
<input type="checkbox" class="sheet-showShokunin" name="attr_addShokunin" value="0" />Add Shokunin
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showAshigaru" name="attr_addAshigaru" value="0" />
|
||
<div class="sheet-Ashigaru">
|
||
<input type="checkbox" class="sheet-showAshigaru" name="attr_addAshigaru" value="0" />Add Ashigaru
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showAkuto" name="attr_addAkuto" value="0" />
|
||
<div class="sheet-Akuto">
|
||
<input type="checkbox" class="sheet-showAkuto" name="attr_addAkuto" value="0" />Add Akutô
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showSo" name="attr_addSo" value="0" />
|
||
<div class="sheet-Akuto">
|
||
<input type="checkbox" class="sheet-showSo" name="attr_addSo" value="0" />Add Sô
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showKugeCourtier" name="attr_addKugeCourtier" value="0" />
|
||
<div class="sheet-KugeCourtier">
|
||
<input type="checkbox" class="sheet-showKugeCourtier" name="attr_addKugeCourtier" value="0" />Add Kuge Courtier
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showSamCourtier" name="attr_addSamCourtier" value="0" />
|
||
<div class="sheet-SamCourtier">
|
||
<input type="checkbox" class="sheet-showSamCourtier" name="attr_addSamCourtier" value="0" />Add Samurai Courtier
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showExecutioner" name="attr_addExecutioner" value="0" />
|
||
<div class="sheet-Executioner">
|
||
<input type="checkbox" class="sheet-showExecutioner" name="attr_addExecutioner" value="0" />Add Executioner
|
||
</div>
|
||
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showFarmer" name="attr_addFarmer" value="0" />
|
||
<div class="sheet-Farmer">
|
||
<input type="checkbox" class="sheet-showFarmer" name="attr_addFarmer" value="0" />Add Farmer
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showKensei" name="attr_addKensei" value="0" />
|
||
<div class="sheet-Kensei">
|
||
<input type="checkbox" class="sheet-showKensei" name="attr_addKensei" value="0" />Add Kensei
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showBudoka" name="attr_addBudoka" value="0" />
|
||
<div class="sheet-Budoka">
|
||
<input type="checkbox" class="sheet-showBudoka" name="attr_addBudoka" value="0" />Add Budôka
|
||
</div>
|
||
</div>
|
||
|
||
<div class='sheet-col' style="">
|
||
<span class="sheet-cpto_header"> </span>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showWako" name="attr_addWako" value="0" />
|
||
<div class="sheet-Wako">
|
||
<input type="checkbox" class="sheet-showWako" name="attr_addWako" value="0" />Add Wakô
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showDoshin" name="attr_addDoshin" value="0" />
|
||
<div class="sheet-Doshin">
|
||
<input type="checkbox" class="sheet-showDoshin" name="attr_addDoshin" value="0" />Add Dôshin/Yoriki
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showRonin" name="attr_addRonin" value="0" />
|
||
<div class="sheet-Ronin">
|
||
<input type="checkbox" class="sheet-showRonin" name="attr_addRonin" value="0" />Add Ronin
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showSamurai" name="attr_addSamurai" value="0" />
|
||
<div class="sheet-Samurai">
|
||
<input type="checkbox" class="sheet-showSamurai" name="attr_addSamurai" value="0" />Add Samurai
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showShinobi" name="attr_addShinobi" value="0" />
|
||
<div class="sheet-Shinobi">
|
||
<input type="checkbox" class="sheet-showShinobi" name="attr_addShinobi" value="0" />Add Shinobi
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showYamabushi" name="attr_addYamabushi" value="0" />
|
||
<div class="sheet-Yamabushi">
|
||
<input type="checkbox" class="sheet-showYamabushi" name="attr_addYamabushi" value="0" />Add Yamabushi
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showSohei" name="attr_addSohei" value="0" />
|
||
<div class="sheet-Sohei">
|
||
<input type="checkbox" class="sheet-showSohei" name="attr_addSohei" value="0" />Add Sohei
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showSumotori" name="attr_addSumotori" value="0" />
|
||
<div class="sheet-Sumotori">
|
||
<input type="checkbox" class="sheet-showSumotori" name="attr_addSumotori" value="0" />Add Sumotori
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showNusubito" name="attr_addNusubito" value="0" />
|
||
<div class="sheet-Nusubito">
|
||
<input type="checkbox" class="sheet-showNusubito" name="attr_addNusubito" value="0" />Add Nusubito
|
||
</div>
|
||
|
||
<input type="checkbox" style="display:none" class="sheet-showBushi" name="attr_addBushi" value="0" />
|
||
<div class="sheet-Bushi">
|
||
<input type="checkbox" class="sheet-showBushi" name="attr_addBushi" value="0" />Add Bushi
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<br />
|
||
<!-- Start Complications / Perks Talents -->
|
||
<div class='sheet-2colrow' style="border: 1px solid black;padding: 5px;">
|
||
<div class='sheet-col' style="margin-right:5px">
|
||
<span class="sheet-cpto_header">Complications</span>
|
||
|
||
<fieldset class="repeating_complications">
|
||
<input type="text" value="0" class="sheet-compPerk_inputs sheet-text_input" name="attr_score" />
|
||
<input type="text" class="sheet-text_input sheet-comp-input" name="attr_complication" />
|
||
</fieldset>
|
||
<input type="text" value="0" class="sheet-compPerk_inputs sheet-text_input" name="attr_comp_total" /><span>Total</span>
|
||
</div>
|
||
<div class='sheet-col' style="margin-right:5px">
|
||
<div class="sheet-cpto_header">
|
||
<span>Cost</span><span class="sheet-pto">Perks</span>
|
||
</div>
|
||
<fieldset class="repeating_perks">
|
||
|
||
<input type="text" value="0" class="sheet-compPerk_inputs sheet-text_input" name="attr_cost" />
|
||
<input type="text" class="sheet-text_input sheet-comp-input" name="attr_perk"/>
|
||
</fieldset>
|
||
<input type="text" value="0" class="sheet-compPerk_inputs sheet-text_input" name="attr_perks_total" /><span>Total</span>
|
||
<br />
|
||
<br />
|
||
<div class="sheet-cpto_header">
|
||
<span>Cost</span><span class="sheet-pto">Talents / Okuden</span>
|
||
</div>
|
||
<fieldset class="repeating_talents">
|
||
|
||
<input type="text" value="0" class="sheet-compPerk_inputs sheet-text_input" name="attr_cost" />
|
||
<input type="text" class="sheet-text_input sheet-comp-input" name="attr_talent"/>
|
||
</fieldset>
|
||
<input type="text" value="0" class="sheet-compPerk_inputs sheet-text_input" name="attr_talents_total" /><span>Total</span>
|
||
</div>
|
||
|
||
</div>
|
||
<br />
|
||
|
||
<!-- End Complications / Perks Talents -->
|
||
<!---------------Skill Start -------->
|
||
<div class='sheet-2colrow' style="border:1px solid black;padding: 5px;margin-right:4px;min-height:400px">
|
||
<span class="sheet-cpto_header">Skills</span>
|
||
<div style="float:right;">Skill Mod<input type="text" value="0" class="sheet-char_inputs sheet-text_input" name="attr_skill_mods" /></div>
|
||
<br />
|
||
<br />
|
||
|
||
|
||
<div style="border-right:1px solid black;padding: 5px;margin-right:4px;min-height:400px" class='sheet-col'>
|
||
<!-- Forbidden Skills Start--------------->
|
||
<span class="sheet-cpto_header">Forbidden Skills</span>
|
||
<br />
|
||
<span>Skill</span>
|
||
<span style="margin-left:192px">Score</span>
|
||
<span style="margin-left:11px">Stat</span>
|
||
<span style="margin-left:21px">AV</span>
|
||
<fieldset class="repeating_ForbiddenSkills">
|
||
<div>
|
||
|
||
|
||
<div class="sheet-skill_values">
|
||
|
||
<div>
|
||
<input type="text" class="sheet-text_input sheet-skillName" name="attr_skill_name" />
|
||
</div>
|
||
<div>
|
||
|
||
<input type="text" value="0" class="sheet-char_inputs sheet-text_input" style="margin-right:5px" name="attr_skill_score" />
|
||
</div>
|
||
<div>
|
||
<select style="margin-bottom:0px;width:60px;font-size:x-small" name="attr_stat">
|
||
<option value="0" selected></option>
|
||
<option value="@{cur_int}">INT</option>
|
||
<option value="@{cur_will}">WILL</option>
|
||
<option value="@{cur_pre}">PRE</option>
|
||
<option value="@{cur_aes}">AES</option>
|
||
<option value="@{cur_pie}">PIE</option>
|
||
<option value="@{cur_kao}">KAO</option>
|
||
<option value="@{cur_str}">STR</option>
|
||
<option value="@{cur_con}">CON</option>
|
||
<option value="@{cur_body}">BODY</option>
|
||
<option value="@{cur_ref}">REF</option>
|
||
<option value="@{cur_dex}">DEX</option>
|
||
<option value="@{cur_tech}">TECH</option>
|
||
<option value="@{cur_move}">MOVE</option>
|
||
</select>
|
||
</div>
|
||
<div >
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" disabled value="@{skill_score}+@{stat}" name="attr_av" />
|
||
</div>
|
||
<button type="roll" value="&{template:SkillRoll} {{name=@{character_name}}} {{Skill=@{skill_name}}} {{AV=[[@{av}]]}} {{ActionTotal=[[[[3d6]][Roll]+@{av}[AV]+@{skill_mods}[Mods]]]}} {{crit=[[[[18]]+@{av}+@{skill_mods}]]}} {{fumble1=[[[[3]]+@{av}+@{skill_mods}]]}} {{fumble2=[[[[4]]+@{av}+@{skill_mods}]]}} {{fumble3=[[[[5]]+@{av}+@{skill_mods}]]}}" ></button>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
<!-- Forbidden Skills End--------------->
|
||
<!-- Classical Arts Start--------------->
|
||
<br />
|
||
<br />
|
||
<span class="sheet-cpto_header">Classical Arts</span>
|
||
<br />
|
||
<span>Skill</span>
|
||
<span style="margin-left:192px">Score</span>
|
||
<span style="margin-left:11px">Stat</span>
|
||
<span style="margin-left:21px">AV</span>
|
||
<fieldset class="repeating_ClassicalSkills">
|
||
<div>
|
||
|
||
|
||
<div class="sheet-skill_values">
|
||
|
||
<div>
|
||
<input type="text" class="sheet-text_input sheet-skillName" name="attr_skill_name" />
|
||
</div>
|
||
<div>
|
||
|
||
<input type="text" value="0" class="sheet-char_inputs sheet-text_input" style="margin-right:5px" name="attr_skill_score" />
|
||
</div>
|
||
<div>
|
||
<select style="margin-bottom:0px;width:60px;font-size:x-small" name="attr_stat">
|
||
<option value="0" selected></option>
|
||
<option value="@{cur_int}">INT</option>
|
||
<option value="@{cur_will}">WILL</option>
|
||
<option value="@{cur_pre}">PRE</option>
|
||
<option value="@{cur_aes}">AES</option>
|
||
<option value="@{cur_pie}">PIE</option>
|
||
<option value="@{cur_kao}">KAO</option>
|
||
<option value="@{cur_str}">STR</option>
|
||
<option value="@{cur_con}">CON</option>
|
||
<option value="@{cur_body}">BODY</option>
|
||
<option value="@{cur_ref}">REF</option>
|
||
<option value="@{cur_dex}">DEX</option>
|
||
<option value="@{cur_tech}">TECH</option>
|
||
<option value="@{cur_move}">MOVE</option>
|
||
</select>
|
||
</div>
|
||
<div >
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" disabled value="@{skill_score}+@{stat}" name="attr_av" />
|
||
</div>
|
||
<button type="roll" value="&{template:SkillRoll} {{name=@{character_name}}} {{Skill=@{skill_name}}} {{AV=[[@{av}]]}} {{ActionTotal=[[[[3d6]][Roll]+@{av}[AV]+@{skill_mods}[Mods]]]}} {{crit=[[[[18]]+@{av}+@{skill_mods}]]}} {{fumble1=[[[[3]]+@{av}+@{skill_mods}]]}} {{fumble2=[[[[4]]+@{av}+@{skill_mods}]]}} {{fumble3=[[[[5]]+@{av}+@{skill_mods}]]}}" ></button>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
<!-- Classical Arts Skills End--------------->
|
||
<!-- Martial Skills Start--------------->
|
||
<br />
|
||
<br />
|
||
<span class="sheet-cpto_header">Martial Arts</span>
|
||
<br />
|
||
<span>Skill</span>
|
||
<span style="margin-left:192px">Score</span>
|
||
<span style="margin-left:11px">Stat</span>
|
||
<span style="margin-left:21px">AV</span>
|
||
<fieldset class="repeating_MartialSkills">
|
||
<div>
|
||
|
||
|
||
<div class="sheet-skill_values">
|
||
|
||
<div>
|
||
<input type="text" class="sheet-text_input sheet-skillName" name="attr_skill_name" />
|
||
</div>
|
||
<div>
|
||
|
||
<input type="text" value="0" class="sheet-char_inputs sheet-text_input" style="margin-right:5px" name="attr_skill_score" />
|
||
</div>
|
||
<div>
|
||
<select style="margin-bottom:0px;width:60px;font-size:x-small" name="attr_stat">
|
||
<option value="0" selected></option>
|
||
<option value="@{cur_int}">INT</option>
|
||
<option value="@{cur_will}">WILL</option>
|
||
<option value="@{cur_pre}">PRE</option>
|
||
<option value="@{cur_aes}">AES</option>
|
||
<option value="@{cur_pie}">PIE</option>
|
||
<option value="@{cur_kao}">KAO</option>
|
||
<option value="@{cur_str}">STR</option>
|
||
<option value="@{cur_con}">CON</option>
|
||
<option value="@{cur_body}">BODY</option>
|
||
<option value="@{cur_ref}">REF</option>
|
||
<option value="@{cur_dex}">DEX</option>
|
||
<option value="@{cur_tech}">TECH</option>
|
||
<option value="@{cur_move}">MOVE</option>
|
||
</select>
|
||
</div>
|
||
<div >
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" disabled value="@{skill_score}+@{stat}" name="attr_av" />
|
||
</div>
|
||
<button type="roll" value="&{template:SkillRoll} {{name=@{character_name}}} {{Skill=@{skill_name}}} {{AV=[[@{av}]]}} {{ActionTotal=[[[[3d6]][Roll]+@{av}[AV]+@{skill_mods}[Mods]]]}} {{crit=[[[[18]]+@{av}+@{skill_mods}]]}} {{fumble1=[[[[3]]+@{av}+@{skill_mods}]]}} {{fumble2=[[[[4]]+@{av}+@{skill_mods}]]}} {{fumble3=[[[[5]]+@{av}+@{skill_mods}]]}}" ></button>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
<!-- Martial Skills End--------------->
|
||
<!-- Magical Arts Start--------------->
|
||
<br />
|
||
<br />
|
||
<span class="sheet-cpto_header">Magical Arts</span>
|
||
<br />
|
||
<span>Skill</span>
|
||
<span style="margin-left:192px">Score</span>
|
||
<span style="margin-left:11px">Stat</span>
|
||
<span style="margin-left:21px">AV</span>
|
||
<fieldset class="repeating_MagicalSkills">
|
||
<div>
|
||
|
||
|
||
<div class="sheet-skill_values">
|
||
|
||
<div>
|
||
<input type="text" class="sheet-text_input sheet-skillName" name="attr_skill_name" />
|
||
</div>
|
||
<div>
|
||
|
||
<input type="text" value="0" class="sheet-char_inputs sheet-text_input" style="margin-right:5px" name="attr_skill_score" />
|
||
</div>
|
||
<div>
|
||
<select style="margin-bottom:0px;width:60px;font-size:x-small" name="attr_stat">
|
||
<option value="0" selected></option>
|
||
<option value="@{cur_int}">INT</option>
|
||
<option value="@{cur_will}">WILL</option>
|
||
<option value="@{cur_pre}">PRE</option>
|
||
<option value="@{cur_aes}">AES</option>
|
||
<option value="@{cur_pie}">PIE</option>
|
||
<option value="@{cur_kao}">KAO</option>
|
||
<option value="@{cur_str}">STR</option>
|
||
<option value="@{cur_con}">CON</option>
|
||
<option value="@{cur_body}">BODY</option>
|
||
<option value="@{cur_ref}">REF</option>
|
||
<option value="@{cur_dex}">DEX</option>
|
||
<option value="@{cur_tech}">TECH</option>
|
||
<option value="@{cur_move}">MOVE</option>
|
||
</select>
|
||
</div>
|
||
<div >
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" disabled value="@{skill_score}+@{stat}" name="attr_av" />
|
||
</div>
|
||
<button type="roll" value="&{template:SkillRoll} {{name=@{character_name}}} {{Skill=@{skill_name}}} {{AV=[[@{av}]]}} {{ActionTotal=[[[[3d6]][Roll]+@{av}[AV]+@{skill_mods}[Mods]]]}} {{crit=[[[[18]]+@{av}+@{skill_mods}]]}} {{fumble1=[[[[3]]+@{av}+@{skill_mods}]]}} {{fumble2=[[[[4]]+@{av}+@{skill_mods}]]}} {{fumble3=[[[[5]]+@{av}+@{skill_mods}]]}}" ></button>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
<!-- Magical Arts Skills End--------------->
|
||
|
||
|
||
</div>
|
||
<!-- col end --->
|
||
<div style="border-left:1px solid black;padding: 5px;margin-right:4px;min-height:400px" class='sheet-col'>
|
||
<!-- Practical Arts Start--------------->
|
||
<span class="sheet-cpto_header">Practical Arts</span>
|
||
<br />
|
||
<span>Skill</span>
|
||
<span style="margin-left:192px">Score</span>
|
||
<span style="margin-left:11px">Stat</span>
|
||
<span style="margin-left:21px">AV</span>
|
||
<fieldset class="repeating_PracticalSkills">
|
||
<div>
|
||
|
||
|
||
<div class="sheet-skill_values">
|
||
|
||
<div>
|
||
<input type="text" class="sheet-text_input sheet-skillName" name="attr_skill_name" />
|
||
</div>
|
||
<div>
|
||
|
||
<input type="text" value="0" class="sheet-char_inputs sheet-text_input" style="margin-right:5px" name="attr_skill_score" />
|
||
</div>
|
||
<div>
|
||
<select style="margin-bottom:0px;width:60px;font-size:x-small" name="attr_stat">
|
||
<option value="0" selected></option>
|
||
<option value="@{cur_int}">INT</option>
|
||
<option value="@{cur_will}">WILL</option>
|
||
<option value="@{cur_pre}">PRE</option>
|
||
<option value="@{cur_aes}">AES</option>
|
||
<option value="@{cur_pie}">PIE</option>
|
||
<option value="@{cur_kao}">KAO</option>
|
||
<option value="@{cur_str}">STR</option>
|
||
<option value="@{cur_con}">CON</option>
|
||
<option value="@{cur_body}">BODY</option>
|
||
<option value="@{cur_ref}">REF</option>
|
||
<option value="@{cur_dex}">DEX</option>
|
||
<option value="@{cur_tech}">TECH</option>
|
||
<option value="@{cur_move}">MOVE</option>
|
||
</select>
|
||
</div>
|
||
<div >
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" disabled value="@{skill_score}+@{stat}" name="attr_av" />
|
||
</div>
|
||
<button type="roll" value="&{template:SkillRoll} {{name=@{character_name}}} {{Skill=@{skill_name}}} {{AV=[[@{av}]]}} {{ActionTotal=[[[[3d6]][Roll]+@{av}[AV]+@{skill_mods}[Mods]]]}} {{crit=[[[[18]]+@{av}+@{skill_mods}]]}} {{fumble1=[[[[3]]+@{av}+@{skill_mods}]]}} {{fumble2=[[[[4]]+@{av}+@{skill_mods}]]}} {{fumble3=[[[[5]]+@{av}+@{skill_mods}]]}}" ></button>
|
||
</div>
|
||
</div>
|
||
</fieldset>
|
||
<!-- Practical Skills End--------------->
|
||
</div>
|
||
|
||
|
||
</div>
|
||
<!---------------SKill End ---------->
|
||
<br />
|
||
<div>
|
||
<div class='sheet-2colrow'>
|
||
<div style="border:1px solid black;padding: 5px;margin-right:4px;min-height:400px;width:70%" class='sheet-col'>
|
||
<span class="sheet-cpto_header" style="text-align: center;width: 100%;display: inline-block">Combat</span>
|
||
<br />
|
||
<br />
|
||
<div class='sheet-2colrow'>
|
||
<div class='sheet-col'style="width:37%">
|
||
<div class="sheet-skill_values">
|
||
<span>Roll</span>
|
||
<select style="margin-bottom:0px;width:100px;" name="attr_loc_dice">
|
||
<option selected value="3d6">3d6</option>
|
||
<option selected value="2d6+6">2d6+6</option>
|
||
<option selected value="2d6+1">2d6+1</option>
|
||
</select>
|
||
<button value="&{template:HitLocation} {{name=@{character_name}}} {{Location=[[@{loc_dice}]]}} {{side=[[1d2]]}}" type="roll"></button>
|
||
</div>
|
||
<table class="sheet-hit-location">
|
||
<tr><th>Location</th><th>Effect</th><th>DEF</th><th>Mod.</th></tr>
|
||
<tr style="background-color:#ba6f3f"><td>Head</td><td> x2 </td><td><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_head_def" /></td><td><span>–6</span></td></tr>
|
||
<tr><td>Neck</td><td>x1½ </td><td><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_neck_def" /></td><td><span>–6</span></td></tr>
|
||
<tr style="background-color:#ba6f3f"><td>Hands/forepaws*</td><td>x½ </td><td><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_hands_def" /></td><td><span>–4</span></td></tr>
|
||
<tr><td>Arms/forelimb*</td><td>x½ </td><td><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_arms_def" /></td><td><span>–3</span></td></tr>
|
||
<tr style="background-color:#ba6f3f"><td>Shoulders*x1</td><td>x1 </td><td><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_shoulders_def" /></td><td><span>–3</span></td></tr>
|
||
<tr><td>Chest</td><td>x1 </td><td><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_chest_def" /></td><td><span>–1</span></td></tr>
|
||
<tr style="background-color:#ba6f3f"><td>Stomach</td><td>x1½</td><td><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_stomach_def" /></td><td><span>–5</span></td></tr>
|
||
<tr><td>Vitals</td><td>x1½ </td><td><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_vitals_armor" /></td><td><span>–6</span></td></tr>
|
||
<tr style="background-color:#ba6f3f"><td>Thighs*</td><td>x1 </td><td><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_thighs_def" /></td><td><span>–3</span></td></tr>
|
||
<tr><td>Legs/hindlimb*</td><td>x½ </td><td><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_legs_def" /></td><td><span>–4</span></td></tr>
|
||
<tr style="background-color:#ba6f3f"><td>Feet/hindpaws*</td><td>x½ </td><td><input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_feet_def" /></td><td><span>–4</span></td></tr>
|
||
</table>
|
||
<div>
|
||
<span title="If not using locations">Armor</span>
|
||
<input type="text" class="sheet-text_input" style="width: 100px" name="attr_armor_type">
|
||
<span>DEF.</span>
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_basic_armor_def" />
|
||
</div>
|
||
<br />
|
||
<br />
|
||
</div>
|
||
<div class='sheet-col' style="width:56%">
|
||
<div>
|
||
<span>Basic Action Summary</span>
|
||
<div class="sheet-action-table">
|
||
<table>
|
||
<tr><th>Actions</th><th>Notes</th></tr>
|
||
<tr style="background-color:#ba6f3f"><td>Attack</td><td>Make Attack (optionally, add modifiers); autofire attacks count as one Action. Kicks do +1d6 at –1 to hit</td></tr>
|
||
<tr><td>Block</td><td>Stops any one attack with a successful Defensive Roll vs the Attacker’s Attack roll. You attack first next Phase </td></tr>
|
||
<tr style="background-color:#ba6f3f"><td>Dodge</td><td>this Phase — adds +3 DV, but you cannot attack</td></tr>
|
||
<tr><td>Get Up</td><td>Get up from being prone</td></tr>
|
||
<tr style="background-color:#ba6f3f"><td>Grab</td><td> –2 to perform; grab target or gadget; –3 Defense for both</td></tr>
|
||
<tr><td>Move </td><td>Move up to your full Move score and perform one other action, except Run or Sprint.</td></tr>
|
||
<tr style="background-color:#ba6f3f"><td>Run </td><td>Move up to your full Combat Move (a Run).</td></tr>
|
||
<tr><td>Sprint</td><td> Move up to your full Non Combat Move at _ DEX, 0 REF</td></tr>
|
||
<tr style="background-color:#ba6f3f"><td>Other Action</td><td>Any single action not otherwise specified, such as reloading a bow, mounting a horse, changing weapons, using a skill, etc.</td></tr>
|
||
<tr><td>Throw</td><td>Throw one object (–4 if object not made for throwing).</td></tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
<div style="background-color:#ba6f3f;padding:10px 5px 5px 5px;margin-bottom:5px">
|
||
<div style="text-align:center;margin-bottom:10px">
|
||
<span >
|
||
<span style="color:#3f2615">End.</span>
|
||
<input type="text" readonly="" class="sheet-combat_inputs sheet-text_input" name="attr_base_end">
|
||
-
|
||
<input type="text" value="0" class="sheet-combat_inputs sheet-text_input" name="attr_end_loss">
|
||
=
|
||
<input type="text" value="0" class="sheet-combat_inputs sheet-text_input" readonly name="attr_cur_end">
|
||
</span>
|
||
<span>
|
||
<span style="color:#3f2615;margin-left:10px">Stun</span>
|
||
<input type="text" readonly="" class="sheet-combat_inputs sheet-text_input" name="attr_base_stun">
|
||
-
|
||
<input type="text" value="0" class="sheet-combat_inputs sheet-text_input" name="attr_stun_damage">
|
||
=
|
||
<input type="text" value="0" class="sheet-combat_inputs sheet-text_input" readonly name="attr_cur_stun">
|
||
</span>
|
||
<span>
|
||
<span style="color:#3f2615;margin-left:10px">Hits</span>
|
||
<input type="text" readonly="" class="sheet-combat_inputs sheet-text_input" name="attr_base_hits">
|
||
-
|
||
<input type="text" value="0" class="sheet-combat_inputs sheet-text_input" name="attr_hits_damage">
|
||
=
|
||
<input type="text" value="0" class="sheet-combat_inputs sheet-text_input" readonly name="attr_cur_hits">
|
||
<input type="text" readonly="" class="sheet-combat_inputs sheet-text_input" style="border-bottom:none;width:100px;color:#3f2615" value="" readonly name="attr_impairment">
|
||
<input type="text" style="display:none" value="0" readonly name="attr_imp_value">
|
||
</span>
|
||
</div>
|
||
</div>
|
||
<div style="background-color:#ba6f3f;padding:10px 5px 5px 5px">
|
||
<div style="text-align:center;margin-bottom:10px">
|
||
<span>
|
||
<span>Initiative</span>
|
||
<button style="display:inline block" type="roll" value="/em @{character_name} Rolls Initiative [[3d6+@{cur_ref}+?{Skill Score|0} &{tracker}]]"></button>
|
||
</span>
|
||
<span style="margin-left:10px;color:#3f2615">Ref. Mod.</span><input type="text" class="sheet-combat_inputs sheet-text_input" value="0" name="attr_ref_mod" />
|
||
<span style="margin-left:10px;color:#3f2615">Dex. Mod.</span><input type="text" class="sheet-combat_inputs sheet-text_input" value="0" name="attr_dex_mod" />
|
||
<span style="margin-left:10px;color:#3f2615">Other Mods.</span><input type="text" class="sheet-combat_inputs sheet-text_input" value="0" name="attr_other_mods" />
|
||
</div>
|
||
</div>
|
||
<br />
|
||
<br />
|
||
<div >
|
||
<span class="sheet-cpto_header">Melee</span>
|
||
<br />
|
||
<span style="margin-left:0">Type</span>
|
||
<span style="margin-left:76px">Skill</span>
|
||
<span style="margin-left:35px">Score</span>
|
||
<span style="margin-left:-1px">STR</span>
|
||
<span style="margin-left:-2px">WA</span>
|
||
<span style="margin-left:4px">AV</span>
|
||
<span style="margin-left:39px">DC</span>
|
||
<span style="margin-left:8px">DC+</span>
|
||
<span style="margin-left:29px">DV</span>
|
||
<span style="margin-left:37px">End</span>
|
||
<span style="margin-left:5px">Rng.</span>
|
||
|
||
<fieldset class="repeating_melee" >
|
||
<div class="sheet-skill_values sheet-wpn-fontSz">
|
||
<input type="text" style="width:91px" class="sheet-text_input" name="attr_meleeName" />
|
||
|
||
<select style="margin-bottom:0px; width:86px; font-size:x-small" name="attr_skill_name">
|
||
<option value="Atemi-waza">Atemi-waza</option>
|
||
<option value="Axes">Axes</option>
|
||
<option value="Chains">Chains</option>
|
||
<option value="Fans">Fans</option>
|
||
<option value="Firearms">Firearms</option>
|
||
<option value="Flails">Flails</option>
|
||
<option value="Jitte">Jitte</option>
|
||
<option value="Kama">Kama</option>
|
||
<option value="Knives">Knives</option>
|
||
<option value="Nets">Nets</option>
|
||
<option value="Pipe">Pipe</option>
|
||
<option value="Polearms">Polearms</option>
|
||
<option value="Swords">Swords</option>
|
||
<option value="Two swords">Two swords</option>
|
||
<option value="Other">Other</option>
|
||
</select>
|
||
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_skill" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_min_str" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_wa" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" readonly name="attr_av" />
|
||
<button type="roll" value="&{template:ActionRoll} {{name=@{character_name}}} {{action=Attacks}}{{Weapon=@{meleeName}}} {{Skill=@{skill_name}}} {{AV=[[@{av}]]}} {{mods=@{other_mods}}} {{ActionTotal=[[[[3d6]][Roll]+@{av}[AV]+@{other_mods}[Mods]]]}} {{crit=[[[[18]]+@{av}+@{other_mods}]]}} {{fumble1=[[[[3]]+@{av}+@{other_mods}]]}} {{fumble2=[[[[4]]+@{av}+@{other_mods}]]}} {{fumble3=[[[[5]]+@{av}+@{other_mods}]]}}" ></button>
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_dc" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_dcMod" />
|
||
<button type="roll" value="&{template:Damage} {{name=@{character_name}}} {{Weapon=@{meleeName}}} {{Damage=[[[[@{dc}+@{dcMod}]]d6]]}} {{MaxDamage=[[[[@{dc}+@{dcMod}]]*6]]}} "></button>
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" readonly name="attr_dv" />
|
||
<button type="roll" value="&{template:ActionRoll} {{Weapon=@{meleeName}}} {{name=@{character_name}}} {{Skill=@{skill_name}}} {{action=Defends}} {{DV=[[@{dv}]]}} {{mods=@{other_mods}}} {{ActionTotal=[[[[3d6]][Roll]+@{dv}[DV]+@{other_mods}[Mods]]]}} {{crit=[[[[18]]+@{av}+@{other_mods}]]}} {{fumble1=[[[[3]]+@{av}+@{other_mods}]]}} {{fumble2=[[[[4]]+@{av}+@{other_mods}]]}} {{fumble3=[[[[5]]+@{av}+@{other_mods}]]}}" ></button>
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" readonly name="attr_end" />
|
||
<select type="text" style="margin-bottom:0px;width:40px;font-size:x-small" name="attr_rng" >
|
||
<option value="S" selected>S</option>
|
||
<option value="M" >M</option>
|
||
<option value="L" >L</option>
|
||
</select>
|
||
|
||
|
||
</div>
|
||
</fieldset>
|
||
</div>
|
||
<br />
|
||
<span class="sheet-cpto_header">Bows</span>
|
||
<br />
|
||
<span style="margin-left:0">Type</span>
|
||
<span title="Archery" style="margin-left:59px">Score</span>
|
||
<!--<span style="margin-left:-1px">STR</span>-->
|
||
<span style="margin-left:11px">Arrow</span>
|
||
<span style="margin-left:19px">WA</span>
|
||
<span style="margin-left:6px">AV</span>
|
||
<span style="margin-left:39px">DC</span>
|
||
<!--<span style="margin-left:34px">DV</span>-->
|
||
<span style="margin-left:41px">Rof</span>
|
||
<span style="margin-left:3px">End</span>
|
||
<span style="margin-left:11px">Rng.</span>
|
||
<span style="margin-left:11px">Notes</span>
|
||
|
||
|
||
<fieldset class="repeating_bows" >
|
||
<div class="sheet-skill_values sheet-wpn-fontSz">
|
||
<!--<input type="text" style="width:100px" class="sheet-text_input" name="attr_missleName" />-->
|
||
<select style="margin-bottom:0px; width:81px; font-size:x-small" value="Hankyû" name="attr_bow_type">
|
||
<option selected value="Hankyû">Hankyû</option>
|
||
<option value="YumiMR3">Yumi MR3</option>
|
||
<option value="YumiMR4">Yumi MR4</option>
|
||
<option value="YumiMR5">Yumi MR5</option>
|
||
<option value="YumiMR6">Yumi MR6</option>
|
||
<option value="YumiMR7">Yumi MR7</option>
|
||
</select>
|
||
|
||
|
||
<input style="display:none" value="Archery" name="attr_skill_name">
|
||
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" title="Archery" value="0" name="attr_score" />
|
||
<!--<input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_min_str" />-->
|
||
<select style="margin-bottom:0px; width:78px; font-size:x-small" name="attr_arrow_type">
|
||
<option value="Yanagi-ha" selected>Yanagi-ha</option>
|
||
<option value="Karimata">Karimata</option>
|
||
<option value="Hikime">Hikime</option>
|
||
<option value="Togari-ya">Togari-ya</option>
|
||
<option value="Watakushi">Watakushi</option>
|
||
<option value="Ki-hoko">Ki-hoko</option>
|
||
<option value="Kuri-ya">Kuri-ya</option>
|
||
<option value="Makagoya">Makagoya</option>
|
||
<option value="Matoya">Matoya</option>
|
||
</select>
|
||
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" readonly value="-1" name="attr_wa" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" readonly name="attr_av" />
|
||
<button type="roll" value="&{template:ActionRoll} {{name=@{character_name}}} {{action=Attacks}} {{Weapon=@{bow_type}}} {{Skill=@{skill_name}}} {{AV=[[@{av}]]}} {{mods=@{other_mods}}} {{ActionTotal=[[[[3d6]][Roll]+@{av}[AV]+@{other_mods}[Mods]]]}} {{crit=[[[[18]]+@{av}+@{other_mods}]]}} {{fumble1=[[[[3]]+@{av}+@{other_mods}]]}} {{fumble2=[[[[4]]+@{av}+@{other_mods}]]}} {{fumble3=[[[[5]]+@{av}+@{other_mods}]]}} " ></button>
|
||
|
||
<!--<input type="text" style="display:none" value="3" name="attr_basedc" />-->
|
||
<input type="text" style="display:none" value="3" name="attr_arrow_dcmod" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="3" name="attr_dc" />
|
||
<button type="roll" value="&{template:Damage} {{name=@{character_name}}} {{Weapon=@{bow_type}}} {{Damage=[[@{dc}d6]]}} {{MaxDamage=[[@{dc}*6]]}}"></button>
|
||
<!-- <input type="text" class="sheet-char_inputs sheet-text_input" value="0" readonly name="attr_dv" />
|
||
<button type="roll" ></button>-->
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="1/2" readonly name="attr_rof" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" readonly name="attr_end" />
|
||
<input type="text" class="sheet-text_input" style="width:50px" value="60M" name="attr_range" />
|
||
<input type="text" class="sheet-text_input" style="width:98px" value="Willow-leaf" name="attr_notes" />
|
||
|
||
|
||
</div>
|
||
</fieldset>
|
||
|
||
<br />
|
||
<span class="sheet-cpto_header">Other Missle</span>
|
||
<br />
|
||
<span style="margin-left:0">Type</span>
|
||
<span style="margin-left:76px">Skill</span>
|
||
<span style="margin-left:43px">Score</span>
|
||
<span style="margin-left:-1px">STR</span>
|
||
<span style="margin-left:-1px">WA</span>
|
||
<span style="margin-left:9px">AV</span>
|
||
<span style="margin-left:39px">DC</span>
|
||
<span style="margin-left:2px">DC+</span>
|
||
<span style="margin-left:26px">End</span>
|
||
<span style="margin-left:4px">Rng. & Notes</span>
|
||
|
||
<fieldset class="repeating_missle" >
|
||
<div class="sheet-skill_values sheet-wpn-fontSz">
|
||
<input type="text" style="width:100px" class="sheet-text_input" name="attr_missleName" />
|
||
|
||
<select style="margin-bottom:0px; width:86px; font-size:x-small" name="attr_skill_name">
|
||
<option value="Throwing">Throwing</option>
|
||
<option value="Firearms">Firearms</option>
|
||
</select>
|
||
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_skill" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_min_str" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_wa" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" readonly name="attr_av" />
|
||
<button type="roll" value="&{template:ActionRoll} {{name=@{character_name}}} {{action=Attacks}} {{Weapon=@{missleName}}} {{Skill=@{skill_name}}} {{AV=[[@{av}]]}} {{ActionTotal=[[[[3d6]][Roll]+@{av}[AV]+@{other_mods}[Mods]]]}} {{crit=[[[[18]]+@{av}+@{other_mods}]]}} {{fumble1=[[[[3]]+@{av}+@{other_mods}]]}} {{fumble2=[[[[4]]+@{av}+@{other_mods}]]}} {{fumble3=[[[[5]]+@{av}+@{other_mods}]]}}" ></button>
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_dc" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" name="attr_dcMod" />
|
||
<button type="roll" value="&{template:Damage} {{name=@{character_name}}} {{Weapon=@{missleName}}} {{Damage=[[[[@{dc}+@{dcMod}]]d6]]}} {{MaxDamage=[[[[@{dc}+@{dcMod}]]*6]]}} "></button>
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="0" readonly name="attr_end" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" value="" style="width:100px;" name="attr_rngNotes" />
|
||
|
||
|
||
</div>
|
||
</fieldset>
|
||
<br />
|
||
|
||
|
||
</div>
|
||
<div style="border:1px solid black;padding: 5px;margin-right:4px;min-height:907px;width:25%" class='sheet-col'>
|
||
<div >
|
||
<span class="sheet-cpto_header" style="text-align: center;width: 100%;display: inline-bloc">Equipment</span>
|
||
<br />
|
||
<br />
|
||
<p style="font-weight:bold; display:inline-block">*</p>
|
||
<p style="font-weight:bold; width:73%; display:inline-block;margin-left:13px">Item</p>
|
||
<p style="font-weight:bold;text-align:center;width: 10% ;display:inline-block">Wt.</p>
|
||
|
||
<fieldset class="repeating_equipment" style="margin-top:-20px;">
|
||
<input type="checkbox" value="1" name="attr_carried"/>
|
||
<input class="sheet-text_input sheet-eqpText" style="width: 75% ;" type="text" name="attr_equipment_type"/>
|
||
<input class="sheet-text_input sheet-char_inputs" type="text" name="attr_equipment_weight"/>
|
||
</fieldset>
|
||
<br />
|
||
<div>
|
||
<span>Max Carry</span>
|
||
<input class="sheet-text_input sheet-char_inputs" type="text" name="attr_carry_max"/>
|
||
<span style="margin-left:8px">Total</span>
|
||
<input class="sheet-text_input sheet-char_inputs" type="text" name="attr_carry_total"/>
|
||
</div>
|
||
<span>*Carried or Worn</span>
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><!-- Tab 1 end -->
|
||
<div class="sheet-tab-content sheet-tab2"> <!--- Tab 2 start -->
|
||
<div class='sheet-2colrow'>
|
||
<div class="sheet-col" style="width:35%">
|
||
<div style="display:inline-block;width:100%;height:139px;border: 1px solid black">
|
||
|
||
</div>
|
||
</div>
|
||
<div class="sheet-col" style="width:60%">
|
||
<table class="sheet-info_table">
|
||
<tr>
|
||
<td class="sheet-info_labels"><b>Ryū</b></td><td><input class="sheet-text_input sheet-info_input" type="text" name="attr__ryu" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-info_labels">Master</td><td><input class="sheet-text_input sheet-info_input" type="text" name="attr__master" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-info_labels">Home Province</td><td><input class="sheet-text_input sheet-info_input" type="text" name="attr_character_home" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="sheet-info_labels">(ML) Position</td><td><input class="sheet-text_input sheet-info_input" type="text" name="attr__position" /></td>
|
||
</tr>
|
||
<tr>
|
||
<td style="width:18%" class="sheet-info_labels">Duties</td><td style="width:80%"><input class="sheet-text_input sheet-info_input" type="text" name="attr__duties" /></td>
|
||
</tr>
|
||
</table>
|
||
|
||
</div>
|
||
</div>
|
||
<br />
|
||
<div class='sheet-2colrow'>
|
||
<div style="border:1px solid black;padding: 5px;margin-right:4px;min-height:400px;width:70%" class='sheet-col'>
|
||
<span class="sheet-cpto_header" style="text-align: center;width: 100%;display: inline-bloc">CHARACTER BACKGROUND / HISTORY</span>
|
||
<textarea name="attr_background" style="min-height:200px;width:95%">
|
||
</textarea>
|
||
<br />
|
||
<br />
|
||
<span class="sheet-cpto_header" style="text-align: center;width: 100%;display: inline-bloc">CHARACTER REPUTATION, RENOWN & HONOR</span>
|
||
<br />
|
||
<span style="margin-left:0">Event</span>
|
||
<span style="margin-left:62px">When Occurred</span>
|
||
<span style="margin-left:0px">Outcome/reputation gained</span>
|
||
|
||
<fieldset class="repeating_repRenownHonor" >
|
||
<div class="sheet-skill_values sheet-wpn-fontSz">
|
||
<input type="text" style="width:100px" class="sheet-text_input" name="attr_event" />
|
||
<input type="text" style="width:100px" class="sheet-text_input" name="attr_when" />
|
||
<input type="text" style="width:355px" class="sheet-text_input" name="attr_honor" />
|
||
|
||
</div>
|
||
</fieldset>
|
||
|
||
<br />
|
||
<br />
|
||
<span class="sheet-cpto_header" style="text-align: center;width: 100%;display: inline-bloc">PRAYERS</span>
|
||
<br />
|
||
<span style="margin-left:0">Prayer</span>
|
||
<span style="margin-left:62px">LoS</span>
|
||
<span style="margin-left:0px">Notes</span>
|
||
|
||
<fieldset class="repeating_prayers" >
|
||
<div class="sheet-skill_values sheet-wpn-fontSz">
|
||
<input type="text" style="width:100px" class="sheet-text_input" name="attr_prayer" />
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" name="attr_los" />
|
||
<input type="text" style="width:428px" class="sheet-text_input" name="attr_notes" />
|
||
|
||
</div>
|
||
</fieldset>
|
||
<br />
|
||
<br />
|
||
<span class="sheet-cpto_header" style="text-align: center;width: 100%;display: inline-bloc">NOTABLE PERSONALITIES</span>
|
||
<br />
|
||
<span style="margin-left:0">Name</span>
|
||
<span style="margin-left:0px">Notes</span>
|
||
|
||
<fieldset class="repeating_personalites" >
|
||
<div class="sheet-skill_values sheet-wpn-fontSz">
|
||
<input type="text" style="width:100px" class="sheet-text_input" name="attr_name" />
|
||
<input type="text" style="width:456px" class="sheet-text_input" name="attr_notes" />
|
||
|
||
</div>
|
||
</fieldset>
|
||
|
||
<br />
|
||
<br />
|
||
<span class="sheet-cpto_header" style="text-align: center;width: 100%;display: inline-bloc">GOOD / BAD KARMA</span>
|
||
<br />
|
||
<span style="margin-left:0">Pts.</span>
|
||
<span style="margin-left:3px">Good/Bad</span>
|
||
<span style="margin-left:0px">Event</span>
|
||
|
||
<fieldset class="repeating_karma" >
|
||
<div class="sheet-skill_values sheet-wpn-fontSz">
|
||
<input type="text" class="sheet-char_inputs sheet-text_input" name="attr_pts" />
|
||
<select style="margin-bottom:0px;width:65px" class="sheet-wpn-fontSz" name="attr_goodBad">
|
||
<option value="Good" selected>Good</option>
|
||
<option value="Good" >Bad</option>
|
||
</select>
|
||
<input type="text" style="width:464px" class="sheet-text_input" name="attr_event" />
|
||
|
||
</div>
|
||
</fieldset>
|
||
|
||
<br />
|
||
<br />
|
||
<span class="sheet-cpto_header" style="text-align: center;width: 100%;display: inline-bloc">GOALS</span>
|
||
<br />
|
||
<span style="margin-left:0">Done?</span>
|
||
<span style="margin-left:10px">Goal</span>
|
||
|
||
<fieldset class="repeating_goals" >
|
||
<div class="sheet-skill_values sheet-wpn-fontSz">
|
||
<input type="checkbox" class="sheet-char_inputs sheet-text_input" style="margin-left:6px" name="attr_done" />
|
||
<input type="text" style="margin-left:22px;width:503px" class="sheet-text_input" name="attr_goal" />
|
||
|
||
</div>
|
||
</fieldset>
|
||
|
||
|
||
|
||
</div>
|
||
<div style="border:1px solid black;padding: 5px;margin-right:4px;min-height:907px;width:25%" class='sheet-col'>
|
||
|
||
|
||
|
||
<span class="sheet-cpto_header" style="text-align: center;width: 100%;display: inline-bloc">Allies & Enemies</span>
|
||
<br />
|
||
|
||
<fieldset class="repeating_alliesEnemies" >
|
||
<div class="sheet-skill_values sheet-wpn-fontSz">
|
||
<input type="text" style="width:96%" class="sheet-text_input" name="attr_note" />
|
||
</div>
|
||
</fieldset>
|
||
<br />
|
||
<br />
|
||
<span class="sheet-cpto_header" style="text-align: center;width: 100%;display: inline-bloc">Contacts</span>
|
||
<br />
|
||
|
||
<fieldset class="repeating_alliesEnemies" >
|
||
<div class="sheet-skill_values sheet-wpn-fontSz">
|
||
<input type="text" style="width:96%" class="sheet-text_input" name="attr_contacts" />
|
||
</div>
|
||
</fieldset>
|
||
<br />
|
||
<br />
|
||
|
||
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div><!-- Tab 2 end -->
|
||
|
||
</div>
|
||
<script type="text/worker">
|
||
|
||
function getId(){
|
||
const sattrs = {};
|
||
const createdIDs = [];
|
||
var retId = 0;
|
||
if (createdIDs.length==0){
|
||
retId = generateRowID();
|
||
createdIDs.push(retId);
|
||
}
|
||
var checkit = true;
|
||
while (checkit==true) {
|
||
let newID = generateRowID();
|
||
console.log("Newid "+newID);
|
||
if (!createdIDs.includes(newID)) {
|
||
newrowid = newID;
|
||
console.log("newrowid "+newID);
|
||
createdIDs.push(newrowid);
|
||
checkit=false;
|
||
}
|
||
}
|
||
retId = newrowid;
|
||
|
||
|
||
return retId;
|
||
}
|
||
|
||
|
||
|
||
function incSkill(section,skill,value,stat){
|
||
getSectionIDs(section, function(idArray) {
|
||
console.log("wtf "+section+" !!!!!!!!!!!!!!!!!!!!!!!");
|
||
var found = false;
|
||
if (idArray.length > 0) {
|
||
var fields = [];
|
||
_.each(idArray, function(currentID) {
|
||
fields.push(section+"_" + currentID + "_skill_name");
|
||
fields.push(section+"_" + currentID + "_skill_score");
|
||
});
|
||
getAttrs(fields, function(values) {
|
||
var update = {};
|
||
_.each(idArray, function(currentID, i) {
|
||
var curSkill = values[section+"_" + idArray[i] + "_skill_name"];
|
||
var curScore = parseInt(values[section+"_" + idArray[i] + "_skill_score"]);
|
||
if (curSkill === skill){
|
||
update[section+"_"+idArray[i]+"_skill_score"] = curScore+parseInt(value);
|
||
found = true;
|
||
}
|
||
});
|
||
if (found) {
|
||
console.log(skill+" update !!!!!!!!!!!");
|
||
setAttrs(update);
|
||
} else {
|
||
console.log(skill+""+section+" add !!!!!!!!!!!");
|
||
addSkill(section,skill,value,stat);
|
||
}
|
||
});
|
||
}
|
||
else{
|
||
addSkill(section,skill,value,stat);
|
||
}
|
||
|
||
|
||
});
|
||
}
|
||
|
||
|
||
|
||
|
||
function addSkill(section,skillName,skillScore,stat){
|
||
var id=getId();
|
||
var setObj = {};
|
||
setObj[section+"_"+id+'_skill_name']=skillName;
|
||
setAttrs(setObj);
|
||
setObj[section+"_"+id+'_skill_score']=skillScore;
|
||
setAttrs(setObj);
|
||
setObj[section+"_"+id+'_stat']=stat;
|
||
setAttrs(setObj);
|
||
}
|
||
|
||
|
||
function addPerk(section,perk,cost){
|
||
var id=getId();
|
||
var setObj = {};
|
||
setObj[section+id+'_perk']=perk;
|
||
setAttrs(setObj);
|
||
setObj[section+id+'_cost']=cost;
|
||
setAttrs(setObj);
|
||
}
|
||
|
||
|
||
function addComp(section,complication,score){
|
||
var id=getId();
|
||
var setObj = {};
|
||
setObj[section+id+'_complication']=complication;
|
||
setAttrs(setObj);
|
||
setObj[section+id+'_score']=score;
|
||
setAttrs(setObj);
|
||
}
|
||
|
||
function addTalent(section,talent,cost){
|
||
var id=getId();
|
||
var setObj = {};
|
||
setObj[section+id+'_talent']=talent;
|
||
setAttrs(setObj);
|
||
setObj[section+id+'_cost']=cost;
|
||
setAttrs(setObj);
|
||
}
|
||
|
||
|
||
function addEqp(section,item,wt){
|
||
var id=getId();
|
||
var setObj = {};
|
||
setObj[section+id+'_equipment_type']=item;
|
||
setObj[section+id+'_equipment_weight']=wt;
|
||
setAttrs(setObj);
|
||
}
|
||
|
||
function setChar(stat,value){
|
||
var setObj = {};
|
||
setObj[stat]=value;
|
||
setAttrs(setObj,{quiet: false});
|
||
}
|
||
|
||
|
||
|
||
function addKuge(){
|
||
//skills
|
||
addSkill("repeating_PracticalSkills","Bureaucracy","3","@{cur_pre}");
|
||
addSkill("repeating_PracticalSkills","High Society","3","@{cur_pre}");
|
||
addSkill("repeating_PracticalSkills","Calligraphy","3","@{cur_aes}");
|
||
|
||
//perks
|
||
addPerk("repeating_perks_","Membership: ML 4 in Imperial Court.","16");
|
||
|
||
//Complications
|
||
addComp("repeating_complications_","Vow: Fealty to Imperial Court, risk bodily harm (Frequent,Extreme) ","-20");
|
||
|
||
//equipment
|
||
addEqp("repeating_Equipment_","Courtly robes (Abv Avg)","3");
|
||
addEqp("repeating_Equipment_","belt (obi) (Abv Avg)","0.5");
|
||
addEqp("repeating_Equipment_","loincloths (fundoshi) (Abv Avg)","0.2");
|
||
addEqp("repeating_Equipment_","loincloths (fundoshi) (Abv Avg)","0.2");
|
||
addEqp("repeating_Equipment_","kuge-style eboshi (lacquered cap) (Abv Avg)","0.5");
|
||
addEqp("repeating_Equipment_","folding fan (Abv Avg)","0.1");
|
||
addEqp("repeating_Equipment_","parasol (Abv Avg)","0");
|
||
addEqp("repeating_Equipment_","socks(Abv Avg)","0.1");
|
||
addEqp("repeating_Equipment_","socks(Abv Avg)","0.1");
|
||
addEqp("repeating_Equipment_","sandals(Abv Avg)","0.1");
|
||
addEqp("repeating_Equipment_","sandals(Abv Avg)","0.1");
|
||
addEqp("repeating_Equipment_","clogs (geta) (Abv Avg)","0.5");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function addBuke(){
|
||
//skills
|
||
addSkill("repeating_PracticalSkills","Archery or Firearms (player’s choice)","2","@{cur_ref}");
|
||
addSkill("repeating_PracticalSkills","Armory or Bowyer (player’s choice)","1","@{cur_tech}");
|
||
addSkill("repeating_PracticalSkills","Calligraphy","2","@{cur_aes}");
|
||
addSkill("repeating_PracticalSkills","Heraldry","2","@{cur_int}");
|
||
addSkill("repeating_MartialSkills","Knives","2","@{cur_ref}");
|
||
addSkill("repeating_MartialSkills","Polearms (choose specialty)","2","@{cur_ref}");
|
||
addSkill("repeating_PracticalSkills","Riding","2","@{cur_dex}");
|
||
addSkill("repeating_MartialSkills","Swords","2","@{cur_ref}");
|
||
|
||
|
||
|
||
|
||
//perks
|
||
//None
|
||
|
||
//Complications
|
||
addComp("repeating_complications_","Code of Honor: Bushidô, risk life and limb (Frequent, Extreme). ","-25");
|
||
|
||
//equipment
|
||
addEqp("repeating_Equipment_","Kimono (Avg)","2");
|
||
addEqp("repeating_Equipment_","belt (obi) (Avg)","0.5");
|
||
addEqp("repeating_Equipment_","cloth trousers (hakama) (Avg)","1");
|
||
addEqp("repeating_Equipment_","jacket (haori) (Avg)","1");
|
||
addEqp("repeating_Equipment_","loincloth (fundoshi) (Avg)","0.2");
|
||
addEqp("repeating_Equipment_","umbrella (kesa) or raincoat (mino; made of straw) (Avg)","0");
|
||
addEqp("repeating_Equipment_","socks(Avg)","0.1");
|
||
addEqp("repeating_Equipment_","socks(Avg)","0.1");
|
||
addEqp("repeating_Equipment_","sandals (waraji)(Avg)","0.1");
|
||
addEqp("repeating_Equipment_","1 pair clogs (geta)(Avg)","0.5");
|
||
addEqp("repeating_Equipment_","Katana(Avg)","2");
|
||
addEqp("repeating_Equipment_","Wakizashi(Avg)","1");
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
|
||
|
||
|
||
}
|
||
|
||
function addBonge(){
|
||
//skills
|
||
addSkill("repeating_PracticalSkills","Choice of Farming or Fishing","2","@{cur_int}");
|
||
addSkill("repeating_PracticalSkills","Dance: Popular Dance","2","@{cur_dex}");
|
||
addSkill("repeating_PracticalSkills","Shogi or Go","2","@{cur_int}");
|
||
|
||
|
||
//perks
|
||
//None
|
||
|
||
//Complications
|
||
addComp("repeating_complications_","Oppressed: Bonge caste (Constant, Minor)","-4");
|
||
addComp("repeating_complications_","Poverty: Poor, bonge (Frequent, Minor)","-2");
|
||
|
||
|
||
//equipment
|
||
addEqp("repeating_Equipment_","Kimono (Blw Avg)","2");
|
||
addEqp("repeating_Equipment_","belt (obi) (Blw Avg)","0.5");
|
||
addEqp("repeating_Equipment_","commoner trousers (kobakama) (Blw Avg)","1");
|
||
addEqp("repeating_Equipment_","loincloth (fundoshi) (Blw Avg)","0.2");
|
||
addEqp("repeating_Equipment_","socks(Blw Avg)","0.1");
|
||
addEqp("repeating_Equipment_","sandals (waraji)(Blw Avg)","0.1");
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function addHinin(){
|
||
//skills
|
||
addSkill("repeating_PracticalSkills","One craft skill (choice)","3","@{cur_tech}");
|
||
addSkill("repeating_PracticalSkills","Dance (Popular Dance)","2","@{cur_dex}");
|
||
addSkill("repeating_PracticalSkills","Shogi or Go","2","@{cur_int}");
|
||
|
||
|
||
//perks
|
||
//None
|
||
|
||
//Complications
|
||
addComp("repeating_complications_","Oppressed: Hinin, outcast (Constant, Minor)","-6");
|
||
addComp("repeating_complications_","Poverty: Dirt broke, hinin (Frequent, Minor)","-4");
|
||
|
||
|
||
//equipment
|
||
addEqp("repeating_Equipment_","Kimono (Poor)","2");
|
||
addEqp("repeating_Equipment_","belt (obi) (Poor)","0.5");
|
||
addEqp("repeating_Equipment_","commoner trousers (kobakama) (Poor)","1");
|
||
addEqp("repeating_Equipment_","loincloth (fundoshi) (Poor)","0.2");
|
||
addEqp("repeating_Equipment_","socks(Poor)","0.1");
|
||
addEqp("repeating_Equipment_","sandals (waraji)(Poor)","0.1");
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function addSojo(){
|
||
|
||
|
||
setChar("int","3");
|
||
setChar("will","4");
|
||
setChar("pre","3");
|
||
setChar("aes","4");
|
||
setChar("pie","4");
|
||
setChar("kao","3");
|
||
setChar("str","2");
|
||
setChar("con","2");
|
||
setChar("body","3");
|
||
setChar("Tech","3");
|
||
setChar("ref","3");
|
||
setChar("dex","3");
|
||
setChar("move","3");
|
||
|
||
setAttrs({base_honor:"30"});
|
||
|
||
incSkill("repeating_practicalskills","Buddhism",3,"@{cur_int}");
|
||
incSkill("repeating_practicalskills","Bureaucracy",2,"@{cur_pre}");
|
||
addSkill("repeating_ClassicalSkills","Classical Arts (choice)","2","@{cur_aes}");
|
||
addSkill("repeating_ClassicalSkills","Classical Arts (choice)","2","@{cur_aes}");
|
||
addSkill("repeating_practicalskills","Language (Chinese)","3","@{cur_int}");
|
||
incSkill("repeating_ClassicalSkills","Classical Literature (Chinese)","3","@{cur_aes}");
|
||
incSkill("repeating_practicalskills","Diplomacy","3","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Leadership","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Oratory","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Rhetoric","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Teaching","2","@{cur_pre}");
|
||
|
||
addComp("repeating_complications_","Honest: Risk bodily harm (Const, Maj) ","-5");
|
||
addComp("repeating_complications_","Poverty: poor (Const, Min)","-4");
|
||
addComp("repeating_complications_","Public Figure: Head of temple (Const,Maj)","-12");
|
||
addComp("repeating_complications_","Vow: Buddhist priestly vows, risk life & limb (Const, Maj)","-15");
|
||
|
||
addPerk("repeating_perks_","Membership: ML 5 in sect","15");
|
||
addPerk("repeating_perks_","Renown","3");
|
||
|
||
addTalent("repeating_talents_","Mystic (Bukkyô)","5");
|
||
|
||
addEqp("repeating_Equipment_","Buddhist robes and kesa (Above average)","1");
|
||
addEqp("repeating_Equipment_","Buddhist robes and kesa (Above average)","1");
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
function addShokunin(){
|
||
|
||
|
||
setAttrs({int:"3",will:"3",pre:"2",aes:"3",pie:"3",kao:"2",str:"3",con:"3",body:"3",tech:"5",ref:"3",dex:"4",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"20"});
|
||
|
||
addSkill("repeating_ClassicalSkills","Classical Art","2","@{cur_aes}");
|
||
addSkill("repeating_practicalskills","Practical Skill","2","@{cur_int}");
|
||
addSkill("repeating_practicalskills","Practical Skill","2","@{cur_int}");
|
||
addSkill("repeating_practicalskills","Business","2","@{cur_int}");
|
||
addSkill("repeating_practicalskills","Streetwise","2","@{cur_pre}");
|
||
addSkill("repeating_practicalskills","Trading","2","@{cur_pre}");
|
||
|
||
|
||
addComp("repeating_complications_","Public Figure: Local artisan (Frequent, Minor)","-3");
|
||
|
||
addPerk("repeating_perks_","Contact: Local merchant","2");
|
||
addPerk("repeating_perks_","Renown (Local artisan)" ,"1");
|
||
|
||
addTalent("repeating_talents_","Craftsman","3");
|
||
|
||
addEqp("repeating_Equipment_","artisan/craftsman’s kit","0");
|
||
addEqp("repeating_Equipment_","Cloth apron","0");
|
||
addEqp("repeating_Equipment_","Wrapping cloth","0");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function addAshigaru(){
|
||
|
||
|
||
setAttrs({int:"2",will:"3",pre:"3",aes:"2",pie:"3",kao:"3",str:"4",con:"3",body:"4",tech:"3",ref:"4",dex:"4",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"30"});
|
||
|
||
incSkill("repeating_practicalskills","Expert (Clan officers)","2","@{cur_int}");
|
||
incSkill("repeating_martialskills","Firearms","3","@{cur_ref}");
|
||
incSkill("repeating_MartialSkills","Forced march","3","@{cur_con}");
|
||
incSkill("repeating_practicalskills","Gambling","1","@{cur_tech}");
|
||
incSkill("repeating_practicalskills","Heraldry","1","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","Polearm(Lances)","3","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Local Expert (Home Province)","2","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","Strategy (Battles)","1","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","Swords","2","@{cur_ref}");
|
||
|
||
|
||
addComp("repeating_complications_","Coward (minor)","-1");
|
||
addComp("repeating_complications_","Vow: Fealty to a daimyô, risk bodily harm (Infrequent,Extreme)","-10");
|
||
|
||
addPerk("repeating_perks_","ML 1 in samurai clan ","3");
|
||
|
||
|
||
addEqp("repeating_Equipment_","Lance (yari)","1.5");
|
||
addEqp("repeating_Equipment_","katana or wakizashi","0");
|
||
addEqp("repeating_Equipment_","sword cleaning kit","1");
|
||
addEqp("repeating_Equipment_","Bamboo water bottle","1");
|
||
addEqp("repeating_Equipment_","Jingasa, steel, munition Def:12 Loc:3-4","12");
|
||
addEqp("repeating_Equipment_","Dô: folding DEF:6 Loc:10-12","2");
|
||
addEqp("repeating_Equipment_","Kote: Kote: full splint, no mail DEF:6 Loc:7-8","5");
|
||
addEqp("repeating_Equipment_","Haidate: Kote: full splint, no mail DEF:6 Loc:13-14 attacks at -1 Move","8");
|
||
addEqp("repeating_Equipment_","Suneate: Kote: full splint, no mail DEF:6 Loc:14-16 attacks at -1 Move ","12");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function addAkuto(){
|
||
|
||
|
||
setAttrs({int:"3",will:"3",pre:"4",aes:"2",pie:"2",kao:"2",str:"4",con:"3",body:"4",tech:"3",ref:"4",dex:"3",move:"3"},{quiet: false});
|
||
setAttrs({base_honor:"20"});
|
||
|
||
|
||
|
||
addPerk("repeating_perks_","ML 3 in criminal gang","6");
|
||
|
||
addComp("repeating_complications_","Enemy: Local authorities (more powerful, limited area, capture)","-10");
|
||
addComp("repeating_complications_","Lecherous: Risk bodily harm (frequent, major)","-8");
|
||
|
||
|
||
incSkill("repeating_practicalskills","Athletics","1","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Climbing","1","@{cur_dex}");
|
||
incSkill("repeating_ForbiddenSkills","Disguise","1","@{cur_tech}");
|
||
incSkill("repeating_practicalskills","Interrogation","1","@{cur_tech}");
|
||
incSkill("repeating_MartialSkills","Knives","2","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Local Expert (operating area)","3","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Persuasion (intimidation)","3","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Streetwise","3","@{cur_pre}");
|
||
incSkill("repeating_MartialSkills","Polearm(Lances)","2","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Stealth","1","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Survival","2","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","Swords","2","@{cur_ref}");
|
||
|
||
|
||
addEqp("repeating_Equipment_","Lance (yari) or Katana","0");
|
||
addEqp("repeating_Equipment_","provision bag","0.1");
|
||
addEqp("repeating_Equipment_","traveler’s rations (3 day’s worth)","0");
|
||
addEqp("repeating_Equipment_","Bamboo water bottle","1");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function addSo(){
|
||
|
||
|
||
setAttrs({int:"3",will:"4",pre:"3",aes:"3",pie:"5",kao:"3",str:"2",con:"3",body:"2",tech:"3",ref:"3",dex:"3",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"30"});
|
||
|
||
|
||
|
||
addPerk("repeating_perks_","ML 2 in Buddhist sect ","3");
|
||
addPerk("repeating_perks_","Renown: Local priest","1");
|
||
|
||
addTalent("repeating_talents_","Mystic (Bukkyô)","5");
|
||
|
||
addComp("repeating_complications_","Poverty: poor (Constant, Minor) ","-4");
|
||
addComp("repeating_complications_","Public Figure: Buddhist priest (frequent, major) ","-7");
|
||
addComp("repeating_complications_","Vow: Buddhist priestly vows, risk life & limb (constant, major)","-15");
|
||
|
||
|
||
|
||
incSkill("repeating_practicalskills","Buddhism","3","@{cur_int}");
|
||
incSkill("repeating_ClassicalSkills","Calligraphy","3","@{cur_aes}");
|
||
incSkill("repeating_ClassicalSkills","Classical Art (choice)","2","@{cur_aes}");
|
||
incSkill("repeating_ClassicalSkills","Classical Art (choice)","2","@{cur_aes}");
|
||
incSkill("repeating_ClassicalSkills","Classical Literature (Chinese)","3","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Diplomacy","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Language: (Chinese inc kanji)","2","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Meditation","2","@{cur_will}");
|
||
incSkill("repeating_practicalskills","Oratory","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Persuasion","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Rhetoric","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Teaching","2","@{cur_pre}");
|
||
|
||
|
||
|
||
addEqp("repeating_Equipment_","Buddhist robes and kesa (Average)","1");
|
||
addEqp("repeating_Equipment_","Buddhist robes and kesa (Average)","1");
|
||
|
||
addEqp("repeating_Equipment_"," 'seven-ring' staff","2");
|
||
addEqp("repeating_Equipment_","Buddhist rosary.","0.1");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
function KugeCourtier(){
|
||
|
||
console.log("adding Kuge Courtier !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"3",will:"3",pre:"4",aes:"3",pie:"3",kao:"4",str:"3",con:"3",body:"3",tech:"2",ref:"3",dex:"3",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"40"});
|
||
|
||
|
||
addPerk("repeating_perks_","Contact (Major daimyô) ,","7");
|
||
addPerk("repeating_perks_","Debt Owed (by minor court official)","5");
|
||
addPerk("repeating_perks_","ML in Imperial Court ","8");
|
||
|
||
|
||
addComp("repeating_complications_","Public Figure: Kuge (frequent, extreme) ,","-20");
|
||
addComp("repeating_complications_","Sense of Duty: to Emperor (freq, maj)","-5");
|
||
|
||
|
||
|
||
incSkill("repeating_practicalskills","Bureaucracy","3","@{cur_pre}");
|
||
incSkill("repeating_ClassicalSkills","Bribery","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Diplomacy","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Flattery","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","High Society","2","@{cur_pre}");
|
||
incSkill("repeating_ClassicalSkills","Classical Art (choice)","2","@{cur_aes}");
|
||
incSkill("repeating_ClassicalSkills","Classical Art (choice)","2","@{cur_aes}");
|
||
|
||
|
||
addEqp("repeating_Equipment_","Tachi (ceremonial sword)","2");
|
||
addEqp("repeating_Equipment_","Tanto","0.5");
|
||
addEqp("repeating_Equipment_","ceremonial court robe (Above Average)","1");
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
function SamCourtier(){
|
||
|
||
console.log("adding Sam Courtier !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"3",will:"3",pre:"4",aes:"3",pie:"3",kao:"4",str:"3",con:"3",body:"3",tech:"2",ref:"3",dex:"3",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"40"});
|
||
|
||
|
||
addPerk("repeating_perks_","Contact (Major daimyô)","7");
|
||
addPerk("repeating_perks_","Debt Owed (by minor court official)","5");
|
||
addPerk("repeating_perks_","ML 6 in samurai clan","18");
|
||
addPerk("repeating_perks_","Renown: Known far andwide","6");
|
||
|
||
|
||
|
||
addComp("repeating_complications_","Public Figure: High-ranking court official (Frequent, Major)","-10");
|
||
addComp("repeating_complications_","Public Figure: Buddhist priest (frequent, major) ","-7");
|
||
addComp("repeating_complications_","Vow: Fealty to daimyô, risk life & limb (Frequent, Extreme)","-25");
|
||
|
||
|
||
|
||
incSkill("repeating_practicalskills","Bureaucracy","2","@{cur_pre}");
|
||
incSkill("repeating_ClassicalSkills","Bribery","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Diplomacy","1","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Flattery","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","High Society","2","@{cur_pre}");
|
||
|
||
|
||
addEqp("repeating_Equipment_","Tachi (ceremonial sword)","2");
|
||
addEqp("repeating_Equipment_","court vest (kataginu)","1");
|
||
addEqp("repeating_Equipment_","Kabuto: special shape (court cap) DEF:12 Locs:3–5","12");
|
||
addEqp("repeating_Equipment_","Dô: clamshell, shotproof DEF:16 Loc:10-12 -1 Move","48");
|
||
addEqp("repeating_Equipment_","Kote: plates and mail DEF:11 Loc:7-8","5");
|
||
addEqp("repeating_Equipment_","Sode: lames, sparse lacing DEF:11 Loc:9 attacks at -1 Move","3");
|
||
addEqp("repeating_Equipment_","Haidate: splint and mail DEF:12 Loc:13-14 attacks at -1 Move","8");
|
||
addEqp("repeating_Equipment_","Suneate: splint and mail DEF:12 Loc:14-16 attacks at -1 Move ","12");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function Executioner(){
|
||
|
||
console.log("adding Executioner !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"2",will:"3",pre:"3",aes:"3",pie:"3",kao:"2",str:"4",con:"3",body:"3",tech:"3",ref:"4",dex:"3",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"30"});
|
||
|
||
|
||
addPerk("repeating_perks_","ML 1 in samurai clan.","2");
|
||
|
||
addComp("repeating_complications_","Public Figure: High-ranking court official (Frequent, Major)","-10");
|
||
|
||
incSkill("repeating_MartialSkills","Binding","4","@{cur_tech}");
|
||
incSkill("repeating_practicalskills","Interogation","3","@{cur_tech}");
|
||
incSkill("repeating_MartialSkills","Jujutsu","2","@{cur_ref}");
|
||
incSkill("repeating_MartialSkills","Knives","2","@{cur_ref}");
|
||
incSkill("repeating_MartialSkills","Polearms (Lances)","3","@{cur_ref}");
|
||
incSkill("repeating_MartialSkills","Swords","3","@{cur_ref}");
|
||
|
||
|
||
|
||
addEqp("repeating_Equipment_","Lance (yari),","1.5");
|
||
addEqp("repeating_Equipment_","cloth headband","0");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
function Farmer(){
|
||
|
||
|
||
setAttrs({int:"2",will:"2",pre:"3",aes:"3",pie:"3",kao:"3",str:"3",con:"4",body:"3",tech:"4",ref:"3",dex:"4",move:"3"},{quiet: false});
|
||
|
||
//attr_base_honor
|
||
setAttrs({base_honor:"30"});
|
||
|
||
|
||
addPerk("repeating_perks_","ML 2 in farming village","2");
|
||
|
||
addComp("repeating_complications_","Coward: avoids danger whenever possible (frequent, minor)","-3");
|
||
addComp("repeating_complications_","Poverty: poor (constant, minor) ","-4");
|
||
|
||
|
||
incSkill("repeating_practicalskills","Farming","3","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Folklore","2","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Herbalism or Survival","2","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Hunting","2","@{cur_tech}");
|
||
incSkill("repeating_MartialSkills","Polearms (Staves)","2","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Silkworm Raising or Sake Brewing","2","@{cur_int}");
|
||
|
||
|
||
addEqp("repeating_Equipment_","Bô or tantô","0");
|
||
addEqp("repeating_Equipment_","wrapping cloth","0");
|
||
addEqp("repeating_Equipment_","Bamboo water bottle","1");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function Kensei(){
|
||
|
||
console.log("adding Kensei !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"2",will:"4",pre:"3",aes:"3",pie:"3",kao:"3",str:"3",con:"3",body:"3",tech:"3",ref:"4",dex:"3",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"30"});
|
||
|
||
|
||
addPerk("repeating_perks_","Renown: Expert swordsman","4");
|
||
|
||
addTalent("repeating_talents_","Danger Sense ","20");
|
||
|
||
|
||
addComp("repeating_complications_","Code of Honor: The Way of the Sword, risk life and limb (frequent, extreme) ","-25");
|
||
addComp("repeating_complications_","Public Figure: expert swordsman (frequent, minor)","-3");
|
||
addComp("repeating_complications_","Vow: to perfect your skill, risk life and limb (frequent, major)","-12");
|
||
|
||
incSkill("repeating_practicalskills","Focus Ki","3","@{cur_will}");
|
||
incSkill("repeating_MartialSkills","Iai-jutsu","3","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Meditation","2","@{cur_will}");
|
||
incSkill("repeating_practicalskills","Sword Polishing","2","@{cur_tech}");
|
||
incSkill("repeating_MartialSkills","Swords","3","@{cur_ref}");
|
||
incSkill("repeating_MartialSkills","Two Swords or Arrow Cutting","3","@{cur_ref}");
|
||
|
||
|
||
addEqp("repeating_Equipment_","Sword bag,","0");
|
||
addEqp("repeating_Equipment_","Sword Cleaning kit","0");
|
||
addEqp("repeating_Equipment_","sleeve-tying cord","0");
|
||
addEqp("repeating_Equipment_","10 sheets of paper","0");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function Budoka(){
|
||
|
||
console.log("adding Budoka !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"3",will:"3",pre:"3",aes:"3",pie:"2",kao:"3",str:"3",con:"3",body:"3",tech:"2",ref:"4",dex:"4",move:"4"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"30"});
|
||
|
||
|
||
addPerk("repeating_perks_","ML 3 in a martial ryû","6");
|
||
|
||
|
||
|
||
addComp("repeating_complications_","Oppressed: Bonge (const,min)","-5");
|
||
addComp("repeating_complications_","Vow: loyalty to ryû soke, risk bodily harm (freq, maj) ","-7");
|
||
|
||
incSkill("repeating_MartialSkills","Atemi-waza or Ju-jutsu","4","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Acrobatics","3","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Focus Ki","3","@{cur_will}");
|
||
incSkill("repeating_practicalskills","Meditation","3","@{cur_will}");
|
||
incSkill("repeating_MartialSkills","one weapon bugei","3","@{cur_ref}");
|
||
|
||
|
||
|
||
addEqp("repeating_Equipment_","Atemi-waza id skill taken","0");
|
||
addEqp("repeating_Equipment_","weapon","0");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
function Wako(){
|
||
|
||
console.log("adding Wako !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"3",will:"3",pre:"3",aes:"3",pie:"3",kao:"2",str:"4",con:"4",body:"3",tech:"2",ref:"3",dex:"4",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"30"});
|
||
|
||
|
||
addPerk("repeating_perks_","ML 3 in pirate gang","6");
|
||
|
||
|
||
|
||
addComp("repeating_complications_","Enemies: most samurai clans (more powerful, province, marked for death)","-25");
|
||
|
||
incSkill("repeating_MartialSkills","Atemi-waza or Ju-jutsu","2","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Boating","2","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Climbing","2","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Gambling","2","@{cur_tech}");
|
||
incSkill("repeating_MartialSkills","Knives","2","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Navigation","2","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Persuasion","2","@{cur_pre}");
|
||
incSkill("repeating_MartialSkills","Polearms (choice)","2","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Sailing","3","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Stealth","1","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Streetwise","3","@{cur_pre}");
|
||
incSkill("repeating_MartialSkills","Swords","2","@{cur_ref}");
|
||
incSkill("repeating_MartialSkills","Throwing","1","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Trading","2","@{cur_pre}");
|
||
|
||
|
||
|
||
addEqp("repeating_Equipment_","Yari (lance) or hoko","0");
|
||
addEqp("repeating_Equipment_","wakizashi or tantô,","0");
|
||
addEqp("repeating_Equipment_","provision bag","0");
|
||
addEqp("repeating_Equipment_","ashigaru-style kote DEF:6 Loc:7-8","1");
|
||
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function Doshin(){
|
||
|
||
console.log("adding Doshin !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"2",will:"3",pre:"3",aes:"3",pie:"3",kao:"3",str:"3",con:"3",body:"3",tech:"3",ref:"4",dex:"4",move:"4"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"30"});
|
||
|
||
|
||
addPerk("repeating_perks_","Contact: Shop owner ","2");
|
||
addPerk("repeating_perks_","ML 2 in samurai clan (6) Yoriki should have ML 3 (9)","6");
|
||
|
||
|
||
addComp("repeating_complications_","Vow: Fealty to magistrate or daimyô, risk life & limb (infreq, extr)","-20");
|
||
|
||
|
||
incSkill("repeating_MartialSkills","Binding","3","@{cur_tech}");
|
||
incSkill("repeating_practicalskills","Deduction","2","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Interrogation","2","@{cur_tech}");
|
||
incSkill("repeating_MartialSkills","Jitte","3","@{cur_ref}");
|
||
|
||
incSkill("repeating_practicalskills","Local Expert (Town)","2","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Perception","2","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","Polearms (Mancatchers)","3","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Perception","1","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Streetwise","1","@{cur_pre}");
|
||
incSkill("repeating_MartialSkills","Swords","3","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Tracking","2","@{cur_int}");
|
||
|
||
|
||
addEqp("repeating_Equipment_","sasumata or sodegarami;","2");
|
||
addEqp("repeating_Equipment_","Yoriki—mail tunic/sleeves (Loc: 6–12; KD 10) and jingasa (Loc: 3–5; KD 7)","0");
|
||
addEqp("repeating_Equipment_","Yoriki— Jitte","0.5");
|
||
addEqp("repeating_Equipment_","Yoriki— Riding Horse","0");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function Ronin(){
|
||
|
||
console.log("adding Ronin !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"2",will:"3",pre:"3",aes:"3",pie:"3",kao:"2",str:"3",con:"4",body:"3",tech:"3",ref:"4",dex:"4",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"20"});
|
||
|
||
addComp("repeating_complications_","Bad Reputation: rônin, always recognized (const, maj) ","-12");
|
||
addComp("repeating_complications_","Poverty: poor (freq, min) ","-5");
|
||
|
||
|
||
incSkill("repeating_martialskills","Polearms: (Glaives or Lances)","2","@{cur_ref}");
|
||
incSkill("repeating_MartialSkills","Swords","3","@{cur_ref}");
|
||
incSkill("repeating_MartialSkills","Archery or Firearms ","2","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Riding","2","@{cur_dex}");
|
||
|
||
addTalent("repeating_talents_","Any one 5-point okuden","5");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
function Samurai(){
|
||
|
||
console.log("adding SSamurai !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"2",will:"3",pre:"3",aes:"3",pie:"3",kao:"3",str:"4",con:"3",body:"3",tech:"2",ref:"4",dex:"4",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"30"});
|
||
|
||
|
||
addPerk("repeating_perks_","Contact: as appropriate","4");
|
||
addPerk("repeating_perks_","ML 2 in samurai clan","6");
|
||
|
||
addComp("repeating_complications_","Vow: Fealty to daimyô, risk life & limb (Frequent, Extreme)","-25");
|
||
|
||
incSkill("repeating_MartialSkills","Archery or Firearms ","2","@{cur_ref}");
|
||
incSkill("repeating_ClassicalSkills","Classical Art (choose)","2","@{cur_pre}");
|
||
incSkill("repeating_ClassicalSkills","Classical Art (choose)","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Climbing","1","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Expert (Clan history)","1","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Focus Ki","1","@{cur_will}");
|
||
incSkill("repeating_MartialSkills","Ju-jutsu or Knives","2","@{cur_ref}");
|
||
incSkill("repeating_martialskills","Polearms: (Glaives or Lances)","2","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Riding","2","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Scouting or Strategy (choose)","2","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Scouting or Strategy (choose)","2","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","Swords","1","@{cur_ref}");
|
||
|
||
|
||
addTalent("repeating_talents_","Any one 5-point okuden","5");
|
||
|
||
|
||
addEqp("repeating_Equipment_","yari wt 1.5 or naginata wt 3","3");
|
||
addEqp("repeating_Equipment_","Yumi","2.5");
|
||
addEqp("repeating_Equipment_","calligraphy set","0");
|
||
addEqp("repeating_Equipment_","Riding horse (if ML5+)","0");
|
||
addEqp("repeating_Equipment_","8-plate kabuto DEF:12 Locs:3–5","12");
|
||
addEqp("repeating_Equipment_","Dô: clamshell DEF:12 Loc:10-12 -1 Move","24");
|
||
addEqp("repeating_Equipment_","Kote: plates and mail DEF:11 Loc:7-8","5");
|
||
addEqp("repeating_Equipment_","Sode: lames, sparse lacing DEF:11 Loc:9 attacks at -1 Move","3");
|
||
addEqp("repeating_Equipment_","Haidate: splint and mail DEF:12 Loc:13-14 attacks at -1 Move","8");
|
||
addEqp("repeating_Equipment_","Suneate: splint and mail DEF:12 Loc:14-16 attacks at -1 Move ","12");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function Shinobi(){
|
||
|
||
console.log("adding Shinobi !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"3",will:"3",pre:"3",aes:"2",pie:"2",kao:"2",str:"3",con:"3",body:"3",tech:"3",ref:"4",dex:"5",move:"4"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"20"});
|
||
|
||
|
||
addPerk("repeating_perks_","Contact: Buddhist temple abbot ","4");
|
||
addPerk("repeating_perks_","ML 3 in shinobi clan","3");
|
||
|
||
addComp("repeating_complications_","Code of Honor: shinobi code, risk death (freq, extr)","-25");
|
||
addComp("repeating_complications_","Secret Identity: living a normal life (freq, extr)","-15");
|
||
|
||
incSkill("repeating_practicalskills","Acrobatics","3","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Language:shinobi clan dialect","3","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Meditation","3","@{cur_will}");
|
||
incSkill("repeating_ForbiddenSkills","Ninjutsu","4","@{cur_dex}");
|
||
incSkill("repeating_MartialSkills","Ninpô Taijutsu","3","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Scouting","3","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Stealth","3","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Survival","3","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","Swords","3","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Tracking","3","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","bugei (martial skills)","3","@{cur_ref}");
|
||
incSkill("repeating_MartialSkills","bugei (martial skills)","3","@{cur_ref}");
|
||
|
||
|
||
addTalent("repeating_talents_","Night Vision","3");
|
||
addTalent("repeating_talents_","Ambidexterity","3");
|
||
|
||
addEqp("repeating_Equipment_","9 shuriken","0");
|
||
addEqp("repeating_Equipment_","hinobigatana (ninja sword)","2");
|
||
addEqp("repeating_Equipment_","nekode or any one weapon","0");
|
||
addEqp("repeating_Equipment_","Ninja garb","0");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function Yamabushi(){
|
||
|
||
console.log("adding Yamabushi !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"3",will:"3",pre:"3",aes:"3",pie:"4",kao:"3",str:"3",con:"4",body:"3",tech:"2",ref:"3",dex:"3",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"30"});
|
||
|
||
|
||
addPerk("repeating_perks_","Contacts: as appropriate","4");
|
||
addPerk("repeating_perks_","ML 2 in Shugendô sect","4");
|
||
addPerk("repeating_perks_","Renown: Yamabushi priest","2");
|
||
|
||
addComp("repeating_complications_","Distinctive Features: yamabushi (conc, min)","-2");
|
||
addComp("repeating_complications_","Vow: yamabushi priestly vows, risk life & limb (const, maj)","-15");
|
||
|
||
incSkill("repeating_MartialSkills","Axes or Polearms: (choice)","3","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Meditation","3","@{cur_will}");
|
||
incSkill("repeating_practicalskills","Rhetoric","2","@{cur_pre}");
|
||
incSkill("repeating_MagicalSkills","Shugendô","4","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Survival","2","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","Swords","3","@{cur_ref}");
|
||
|
||
|
||
addEqp("repeating_Equipment_","Bô (staff),","0");
|
||
addEqp("repeating_Equipment_","Katana","2");
|
||
addEqp("repeating_Equipment_","backpack","0");
|
||
addEqp("repeating_Equipment_","yamabushi robes","0");
|
||
addEqp("repeating_Equipment_","peaked cap","0");
|
||
addEqp("repeating_Equipment_","conch shell horn,","0");
|
||
addEqp("repeating_Equipment_","bamboo water bottle.","0");
|
||
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
function Sohei(){
|
||
|
||
console.log("adding Sohei !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"3",will:"3",pre:"3",aes:"2",pie:"3",kao:"3",str:"4",con:"3",body:"3",tech:"2",ref:"4",dex:"4",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"30"});
|
||
|
||
|
||
addPerk("repeating_perks_","ML 2 in Buddhist sect","6");
|
||
|
||
addComp("repeating_complications_","Religious Impurity: minor transgression, -1 PIE mod (frequent, minor)","-3");
|
||
addComp("repeating_complications_","Vow: Buddhist priestly vows, risk life & limb (frequent, minor)","-5");
|
||
|
||
incSkill("repeating_practicalskills","Buddhism","1","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Meditation","2","@{cur_will}");
|
||
incSkill("repeating_MartialSkills","Polearms: (Glaives)","3","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Streetwise","2","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Survival","2","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","Swords","3","@{cur_ref}");
|
||
|
||
|
||
|
||
addEqp("repeating_Equipment_","Buddhist robes,","0");
|
||
addEqp("repeating_Equipment_","Katana or naginata","2");
|
||
addEqp("repeating_Equipment_","8-plate kabuto DEF:12 Locs:3–5","12");
|
||
addEqp("repeating_Equipment_","Dô: clamshell DEF:12 Loc:10-12 -1 Move","24");
|
||
addEqp("repeating_Equipment_","Kote: plates and mail DEF:11 Loc:7-8","5");
|
||
addEqp("repeating_Equipment_","Sode: lames, sparse lacing DEF:11 Loc:9 attacks at -1 Move","3");
|
||
addEqp("repeating_Equipment_","Haidate: splint and mail DEF:12 Loc:13-14 attacks at -1 Move","8");
|
||
addEqp("repeating_Equipment_","Suneate: splint and mail DEF:12 Loc:14-16 attacks at -1 Move ","12");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function Sumotori(){
|
||
|
||
console.log("adding Sumotori !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"2",will:"3",pre:"3",aes:"2",pie:"3",kao:"4",str:"3",con:"3",body:"4",tech:"2",ref:"4",dex:"4",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"20"});
|
||
|
||
|
||
addPerk("repeating_perks_","ML 3 in sumô stable","6");
|
||
|
||
addComp("repeating_complications_","Overweight: obese (freq,min)","-4");
|
||
addComp("repeating_complications_","Public Figure: local sumôtori (freq,maj) (-7),","-7");
|
||
|
||
|
||
incSkill("repeating_ClassicalSkills","Calligraphy","3","@{cur_aes}");
|
||
incSkill("repeating_practicalskills","Gambling","1","@{cur_tech}");
|
||
incSkill("repeating_practicalskills","High Society or Streetwise","3","@{cur_pre}");
|
||
incSkill("repeating_practicalskills","Meditation","2","@{cur_will}");
|
||
incSkill("repeating_practicalskills","Persuasion","2","@{cur_pre}");
|
||
incSkill("repeating_MartialSkills","Sumai","3","@{cur_ref}");
|
||
|
||
|
||
addEqp("repeating_Equipment_","Ceremonial rope belt,","0");
|
||
addEqp("repeating_Equipment_","decorative kimono (Above-average)","2");
|
||
addEqp("repeating_Equipment_","folding fan","0");
|
||
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function Nusubito(){
|
||
|
||
console.log("adding Nusubito !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"3",will:"3",pre:"3",aes:"3",pie:"2",kao:"2",str:"3",con:"3",body:"3",tech:"4",ref:"3",dex:"4",move:"4"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"20"});
|
||
|
||
|
||
addPerk("repeating_perks_","ML 2 in village/community","4");
|
||
|
||
addComp("repeating_complications_","Enemy: local authorities (more powerful, town, capture)","-7");
|
||
|
||
incSkill("repeating_practicalskills","Climbing","2","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Contortionist","2","@{cur_dex}");
|
||
incSkill("repeating_MartialSkills","Knives","2","@{cur_ref}");
|
||
incSkill("repeating_forbiddenskills","Lockpicking","2","@{cur_tech}");
|
||
incSkill("repeating_practicalskills","Stealth","2","@{cur_dex}");
|
||
incSkill("repeating_practicalskills","Streetwise","2","@{cur_pre}");
|
||
|
||
addEqp("repeating_Equipment_","Dark kimono","0");
|
||
addEqp("repeating_Equipment_","bonge-style trousers","0");
|
||
addEqp("repeating_Equipment_","tanto","0");
|
||
addEqp("repeating_Equipment_","Lockpick kit","0");
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
function Bushi(){
|
||
|
||
console.log("adding Bushi !!!!!!!!!!!!!!!!!");
|
||
setAttrs({int:"2",will:"3",pre:"3",aes:"2",pie:"3",kao:"3",str:"4",con:"4",body:"3",tech:"2",ref:"4",dex:"4",move:"3"},{quiet: false});
|
||
|
||
setAttrs({base_honor:"30"});
|
||
|
||
|
||
addPerk("repeating_perks_","ML 2 in samurai clan","6");
|
||
|
||
addComp("repeating_complications_","Vow: Fealty to daimyô, risk life & limb (Frequent, Extreme)","-25");
|
||
|
||
|
||
|
||
incSkill("repeating_MartialSkills","Archery","2","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Armoring or Bowyer","2","@{cur_tech}");
|
||
incSkill("repeating_practicalskills","Expert: Samurai clan (or employer)","3","@{cur_int}");
|
||
incSkill("repeating_practicalskills","Focus Ki","2","@{cur_will}");
|
||
incSkill("repeating_MartialSkills","Forced March","3","@{cur_con}");
|
||
incSkill("repeating_practicalskills","Heraldry","1","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","Ju-jutsu or Sumai","2","@{cur_ref}");
|
||
incSkill("repeating_martialskills","Polearms: (Glaives or Lances)","2","@{cur_ref}");
|
||
incSkill("repeating_practicalskills","Scouting or Riding","2","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","Swords","2","@{cur_ref}");
|
||
incSkill("repeating_MartialSkills","Strategy (choose)","2","@{cur_int}");
|
||
incSkill("repeating_MartialSkills","Throwing","1","@{cur_ref}");
|
||
|
||
|
||
addTalent("repeating_talents_","Any one 5-point okuden","5");
|
||
|
||
|
||
addEqp("repeating_Equipment_","yari wt 1.5 or naginata wt 3","3");
|
||
addEqp("repeating_Equipment_","Yumi","2.5");
|
||
addEqp("repeating_Equipment_","Katana (nonbuke only)","2");
|
||
addEqp("repeating_Equipment_","Samurai armor below delete if not appropriate","2");
|
||
addEqp("repeating_Equipment_","if not appropriate not appropriate","0");
|
||
addEqp("repeating_Equipment_","8-plate kabuto DEF:12 Locs:3–5","12");
|
||
addEqp("repeating_Equipment_","Dô: clamshell DEF:12 Loc:10-12 -1 Move","24");
|
||
addEqp("repeating_Equipment_","Kote: plates and mail DEF:11 Loc:7-8","5");
|
||
addEqp("repeating_Equipment_","Sode: lames, sparse lacing DEF:11 Loc:9 attacks at -1 Move","3");
|
||
addEqp("repeating_Equipment_","Haidate: splint and mail DEF:12 Loc:13-14 attacks at -1 Move","8");
|
||
addEqp("repeating_Equipment_","Suneate: splint and mail DEF:12 Loc:14-16 attacks at -1 Move ","12");
|
||
addEqp("repeating_Equipment_","ashigaru armor below delete","0");
|
||
addEqp("repeating_Equipment_","if not appropriate not appropriate","0");
|
||
addEqp("repeating_Equipment_","Jingasa, steel, munition Def:12 Loc:3-4","12");
|
||
addEqp("repeating_Equipment_","Dô: folding DEF:6 Loc:10-12","2");
|
||
addEqp("repeating_Equipment_","Kote: Kote: full splint, no mail DEF:6 Loc:7-8","5");
|
||
addEqp("repeating_Equipment_","Haidate: Kote: full splint, no mail DEF:6 Loc:13-14 attacks at -1 Move","8");
|
||
addEqp("repeating_Equipment_","Suneate: Kote: full splint, no mail DEF:6 Loc:14-16 attacks at -1 Move ","12");
|
||
|
||
TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
|
||
|
||
}
|
||
|
||
|
||
on("change:addKuge", function(){
|
||
addKuge();
|
||
|
||
});
|
||
|
||
on("change:addBuke", function(){
|
||
addBuke();
|
||
|
||
});
|
||
|
||
on("change:addBonge", function(){
|
||
addBonge();
|
||
|
||
});
|
||
|
||
|
||
on("change:addHinin", function(){
|
||
addHinin();
|
||
|
||
});
|
||
|
||
on("change:addShokunin", function(){
|
||
addShokunin();
|
||
|
||
});
|
||
|
||
on("change:addAshigaru", function(){
|
||
addAshigaru();
|
||
});
|
||
|
||
on("change:addAkuto", function(){
|
||
addAkuto();
|
||
});
|
||
|
||
on("change:addSo", function(){
|
||
addSo();
|
||
});
|
||
|
||
|
||
on("change:addKugeCourtier", function(){
|
||
console.log("add Kuge Courtier !!!!!!!!!!!!!!!!!");
|
||
KugeCourtier();
|
||
});
|
||
|
||
on("change:addSamCourtier", function(){
|
||
console.log("add Kuge Courtier !!!!!!!!!!!!!!!!!");
|
||
SamCourtier();
|
||
});
|
||
|
||
//Executioner
|
||
on("change:addExecutioner", function(){
|
||
console.log("add Executioner !!!!!!!!!!!!!!!!!");
|
||
Executioner();
|
||
});
|
||
|
||
on("change:addFarmer", function(){
|
||
console.log("add Farmer !!!!!!!!!!!!!!!!!");
|
||
Farmer();
|
||
});
|
||
|
||
on("change:addKensei", function(){
|
||
console.log("add Kensei !!!!!!!!!!!!!!!!!");
|
||
Kensei();
|
||
});
|
||
|
||
|
||
on("change:addBudoka", function(){
|
||
console.log("add Budoka !!!!!!!!!!!!!!!!!");
|
||
Budoka();
|
||
});
|
||
|
||
on("change:addWako", function(){
|
||
console.log("add Wako !!!!!!!!!!!!!!!!!");
|
||
Wako();
|
||
});
|
||
|
||
on("change:addDoshin", function(){
|
||
console.log("add Doshin !!!!!!!!!!!!!!!!!");
|
||
Doshin();
|
||
});
|
||
|
||
|
||
on("change:addRonin", function(){
|
||
console.log("add Ronin !!!!!!!!!!!!!!!!!");
|
||
Ronin();
|
||
});
|
||
|
||
on("change:addSamurai", function(){
|
||
console.log("add Samurai !!!!!!!!!!!!!!!!!");
|
||
Samurai();
|
||
});
|
||
|
||
on("change:addShinobi", function(){
|
||
console.log("add Shinobi !!!!!!!!!!!!!!!!!");
|
||
Shinobi();
|
||
});
|
||
|
||
on("change:addYamabushi", function(){
|
||
console.log("add Yamabushi !!!!!!!!!!!!!!!!!");
|
||
Yamabushi();
|
||
});
|
||
|
||
on("change:addSohei", function(){
|
||
console.log("add Sohei !!!!!!!!!!!!!!!!!");
|
||
Sohei();
|
||
});
|
||
|
||
on("change:addSumotori", function(){
|
||
console.log("add Sumotori !!!!!!!!!!!!!!!!!");
|
||
Sumotori();
|
||
});
|
||
|
||
on("change:addNusubito", function(){
|
||
console.log("add Nusubito !!!!!!!!!!!!!!!!!");
|
||
Nusubito();
|
||
});
|
||
|
||
on("change:addBushi", function(){
|
||
console.log("add Bushi !!!!!!!!!!!!!!!!!");
|
||
Bushi();
|
||
});
|
||
|
||
|
||
on('sheet:opened',function(){
|
||
|
||
getAttrs(["setupDone"], function(pvalue) {
|
||
|
||
var SetupDone=parseInt(pvalue.setupDone);
|
||
if (SetupDone==0){
|
||
addSkill("repeating_PracticalSkills","Athletics","2","@{cur_dex}");
|
||
addSkill("repeating_PracticalSkills","Buddhism","2","@{cur_int}");
|
||
addSkill("repeating_PracticalSkills","Climbing","2","@{cur_dex}");
|
||
addSkill("repeating_PracticalSkills","Concentration","2","@{cur_int}");
|
||
addSkill("repeating_PracticalSkills","Confucianism","2","@{cur_int}");
|
||
addSkill("repeating_PracticalSkills","Conversation","2","@{cur_pre}");
|
||
addSkill("repeating_PracticalSkills","Dance (...)","2","@{cur_dex}");
|
||
addSkill("repeating_PracticalSkills","Deduction","2","@{cur_int}");
|
||
addSkill("repeating_PracticalSkills","Evade","2","@{cur_dex}");
|
||
addSkill("repeating_PracticalSkills","Folklore","2","@{cur_int}");
|
||
addSkill("repeating_PracticalSkills","General Knowledge","2","@{cur_int}");
|
||
addSkill("repeating_PracticalSkills","Language (native language)","2","@{cur_int}");
|
||
addSkill("repeating_PracticalSkills","Local Expert (home village/town)","2","@{cur_int}");
|
||
addSkill("repeating_PracticalSkills","Perception","2","@{cur_int}");
|
||
addSkill("repeating_PracticalSkills","Shintô","2","@{cur_int}");
|
||
addSkill("repeating_PracticalSkills","Stealth","2","@{cur_dex}");
|
||
addSkill("repeating_PracticalSkills","Teaching","2","@{cur_pre}");
|
||
|
||
|
||
setAttrs({setupDone:"1"});
|
||
}
|
||
});
|
||
|
||
});
|
||
|
||
|
||
|
||
|
||
|
||
on("change:repeating_bows:score change:repeating_bows:wa", function() {
|
||
getAttrs(["repeating_bows_score","repeating_bows_wa","cur_ref"], function(values) {
|
||
console.log(JSON.stringify(values));
|
||
var score = parseInt(values.repeating_bows_score);
|
||
var ref = parseInt(values.cur_ref);
|
||
console.log("score "+score);
|
||
var wa = parseInt(values.repeating_bows_wa);
|
||
console.log("wa "+wa);
|
||
setAttrs({repeating_bows_av:score+wa+ref});
|
||
|
||
});
|
||
});
|
||
|
||
|
||
|
||
|
||
|
||
function getArrow(arrow_type){
|
||
var dc =0;
|
||
var str = 0;
|
||
var wa = -1;
|
||
var rmod = "";
|
||
var notes = "Willow-leaf";
|
||
if (arrow_type=="Karimata"){
|
||
dc =1;
|
||
str = 0;
|
||
wa = -2;
|
||
notes = "Forked arrow";
|
||
}
|
||
else if (arrow_type=="Hikime"){
|
||
dc =0;
|
||
str = 0;
|
||
wa = 0;
|
||
notes = "Whistling/signal arrow";
|
||
}
|
||
else if (arrow_type=="Togari-ya"){
|
||
dc =-1;
|
||
str = 0;
|
||
wa = 0;
|
||
notes = "AP; Pointed head"
|
||
}
|
||
else if (arrow_type=="Watakushi"){
|
||
dc =1;
|
||
str = 0;
|
||
wa = 0; r
|
||
rmod = "-R";
|
||
notes = "flesh-tearer";
|
||
}
|
||
else if (arrow_type=="Ki-hoko"){
|
||
dc =0;
|
||
str =1;
|
||
wa = 0;
|
||
rmod = "-R";
|
||
notes = "flesh-tearer";
|
||
}
|
||
else if (arrow_type=="Kuri-ya"){
|
||
dc =-1;
|
||
str = 0;
|
||
wa = 1;
|
||
rmod = "+R";
|
||
notes = "Dog hunting";
|
||
}
|
||
else if (arrow_type=="Makagoya"){
|
||
dc =0;
|
||
str = 0;
|
||
wa = 0;
|
||
notes = "Hunting arrow";
|
||
|
||
}
|
||
else if (arrow_type=="Matoya"){
|
||
dc =0;
|
||
str = 0;
|
||
wa = -1;
|
||
rmod = "-R";
|
||
notes = "Stun; blunt arrow";
|
||
}
|
||
return {dc:dc,str:str,wa:wa,rmod:rmod,notes:notes};
|
||
}
|
||
|
||
on("change:repeating_bows:arrow_type change:repeating_bows:bow_type", function() {
|
||
getAttrs(["repeating_bows_arrow_type","repeating_bows_bow_type","repeating_bows_basedc","repeating_bows_wa","cur_str"], function(values) {
|
||
var arrowtype = values.repeating_bows_arrow_type;
|
||
var bowtype = values.repeating_bows_bow_type;
|
||
var dc = 0;
|
||
var arrowStats = getArrow(arrowtype);
|
||
|
||
//do range
|
||
|
||
if (bowtype=="Hankyû"){
|
||
range="60M"
|
||
if (arrowStats.rmod=="-R"){
|
||
range="30M";
|
||
}
|
||
else if (arrowStats.rmod=="+R" ){
|
||
range="90M";
|
||
}
|
||
dc = 3+arrowStats.dc;
|
||
}
|
||
else if (bowtype=="YumiMR3"){
|
||
range="90M"
|
||
dc = 3+arrowStats.dc;
|
||
if (arrowStats.rmod=="-R"){
|
||
range="60M";
|
||
}
|
||
else if (arrowStats.rmod=="+R" ){
|
||
range="120M";
|
||
}
|
||
|
||
}
|
||
else if (bowtype=="YumiMR4"){
|
||
range="120M"
|
||
dc = 4+arrowStats.dc;
|
||
if (arrowStats.rmod=="-R"){
|
||
range="80M";
|
||
}
|
||
else if (arrowStats.rmod=="+R" ){
|
||
range="160M";
|
||
}
|
||
}
|
||
else if (bowtype=="YumiMR5"){
|
||
range="150M"
|
||
dc = 5+arrowStats.dc;
|
||
if (arrowStats.rmod=="-R"){
|
||
range="100";
|
||
}
|
||
else if (arrowStats.rmod=="+R" ){
|
||
range="200M";
|
||
}
|
||
}
|
||
else if (bowtype=="YumiMR6"){
|
||
range="180M"
|
||
dc = 6+arrowStats.dc;
|
||
if (arrowStats.rmod=="-R"){
|
||
range="120M";
|
||
}
|
||
else if (arrowStats.rmod=="+R" ){
|
||
range="240M";
|
||
}
|
||
}
|
||
else if (bowtype=="YumiMR7"){
|
||
dc = 7+arrowStats.dc;
|
||
range="210M"
|
||
if (arrowStats.rmod=="-R"){
|
||
range="140M";
|
||
}
|
||
else if (arrowStats.rmod=="+R" ){
|
||
range="180M";
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
console.log("wa "+dc);
|
||
setAttrs({repeating_bows_dc:dc,repeating_bows_wa:arrowStats.wa,repeating_bows_range:range,repeating_bows_notes:arrowStats.notes})
|
||
});
|
||
});
|
||
|
||
|
||
|
||
function resetWpnAVDV(section,setDV){
|
||
getSectionIDs(section, function(idArray) {
|
||
if (idArray.length > 0) {
|
||
|
||
_.each(idArray, function(currentID, i) {
|
||
getAttrs([section+"_" + currentID + "_skill",section+"_" + currentID + "_wa",section+"_" + currentID + "_min_str","cur_str","cur_ref","cur_dex"], function(values) {
|
||
console.log("array "+idArray);
|
||
console.log("values "+values);
|
||
var cur_dex = parseInt(values.cur_dex);
|
||
console.log("cur dex "+cur_dex);
|
||
var cur_ref = parseInt(values.cur_ref);
|
||
console.log("cur ref "+cur_ref);
|
||
var cur_str = parseInt(values.cur_str);
|
||
console.log("cur str "+cur_str);
|
||
var wa = parseInt(values[section+"_" + idArray[i] + "_wa"]);
|
||
console.log("wa "+wa);
|
||
var skill = parseInt(values[section+"_" + idArray[i] + "_skill"]);
|
||
console.log("skill "+skill);
|
||
var min_str = parseInt(values[section+"_" + idArray[i] + "_min_str"]);
|
||
console.log("min_str "+min_str);
|
||
|
||
var mod= cur_str-min_str;
|
||
console.log("cur_Ref!!!!!!!!!!!!!!! "+cur_ref);
|
||
console.log("MOD!!!!!!!!!!!!!!! "+mod);
|
||
cur_ref += mod;
|
||
cur_dex += mod;
|
||
|
||
|
||
var av = skill+cur_ref+wa;
|
||
var dv = skill+cur_dex;
|
||
console.log("AV!!!!!!!!!!!!!!! "+av);
|
||
|
||
|
||
var endLoss = Math.floor(min_str/2,0);
|
||
console.log("endLoss "+endLoss);
|
||
if (cur_str > min_str ){
|
||
endLoss -= Math.floor((cur_str-min_str,0)/2);
|
||
}
|
||
if (endLoss < 1){
|
||
endLoss = 1;
|
||
}
|
||
//damage mod
|
||
|
||
if (setDV===true){
|
||
setAttrs({
|
||
[section+"_"+currentID+"_av"]:av,
|
||
[section+"_"+currentID+"_dv"]:dv,
|
||
[section+"_"+currentID+"_dcMod"]:mod,
|
||
[section+"_"+currentID+"_end"]:endLoss,
|
||
});
|
||
} else if (setDV===false){
|
||
setAttrs({
|
||
[section+"_"+currentID+"_av"]:av,
|
||
[section+"_"+currentID+"_dcMod"]:mod,
|
||
[section+"_"+currentID+"_end"]:endLoss,
|
||
});
|
||
|
||
}
|
||
|
||
|
||
});
|
||
});
|
||
}
|
||
|
||
});
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
on("change:stun_damage change:base_stun", function() {
|
||
getAttrs(["stun_damage","base_stun"], function(values) {
|
||
var stun_damage = parseInt(values.stun_damage);
|
||
var base_stun = parseInt(values.base_stun);
|
||
var cur_stun = base_stun-stun_damage;
|
||
setAttrs({cur_stun:cur_stun});
|
||
|
||
|
||
});
|
||
});
|
||
|
||
on("change:hits_damage change:base_hits", function() {
|
||
getAttrs(["hits_damage","base_hits"], function(values) {
|
||
var hits_damage = parseInt(values.hits_damage);
|
||
var base_hits = parseInt(values.base_hits);
|
||
var cur_hits = base_hits-hits_damage;
|
||
var impairment = "";
|
||
var imp_value = 0;
|
||
var val1 = Math.floor(base_hits/4);
|
||
var val2 = Math.floor(base_hits/2);
|
||
console.log("val1 "+val1);
|
||
console.log("val2"+val2);
|
||
|
||
|
||
|
||
if (cur_hits <= val1){
|
||
var impairment ="Impaired -4"
|
||
var imp_value = -4;
|
||
}
|
||
else if (cur_hits <= val2){
|
||
var impairment ="Impaired -2"
|
||
var imp_value = -2;
|
||
}
|
||
|
||
console.log("hits_damage "+hits_damage);
|
||
console.log("base_hits"+base_hits);
|
||
console.log("cur_hits "+cur_hits);
|
||
console.log("impairment "+impairment);
|
||
console.log("imp_value "+imp_value);
|
||
|
||
setAttrs({impairment:impairment,imp_value:imp_value,cur_hits:cur_hits});
|
||
|
||
|
||
|
||
});
|
||
});
|
||
|
||
|
||
|
||
|
||
on("change:cur_dex change:cur_ref change:cur_str ", function() {
|
||
getAttrs(["cur_con","cur_str"], function(values) {
|
||
console.log("RESET!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
|
||
resetWpnAVDV("repeating_melee",true);
|
||
resetWpnAVDV("repeating_missle",false);
|
||
resetWpnAVDV("repeating_bows",false);
|
||
});
|
||
});
|
||
|
||
|
||
on("change:int", function() {
|
||
getAttrs([], function(values) {
|
||
|
||
console.log("INT CHANGED !!!!!!!!!!!!!!!!!!!!!!!!");
|
||
|
||
|
||
});
|
||
});
|
||
|
||
|
||
on("change:int change:int_mod change:imp_value", function() {
|
||
getAttrs(["int","int_mod","imp_value"], function(values) {
|
||
var base_int = parseInt(values.int);
|
||
var int_mod = parseInt(values.int_mod);
|
||
var imp_value = parseInt(values.int_mod);
|
||
console.log("INT CHANGED !!!!!!!!!!!!!!!!!!!!!!!!");
|
||
setAttrs({cur_int:base_int+int_mod+imp_value});
|
||
|
||
});
|
||
});
|
||
|
||
|
||
on("change:will change:will_mod change:imp_value", function() {
|
||
getAttrs(["will","will_mod","imp_value"], function(values) {
|
||
var base_will = parseInt(values.will);
|
||
var will_mod = parseInt(values.will_mod);
|
||
var imp_value = parseInt(values.imp_value);
|
||
setAttrs({cur_will:base_will+will_mod+imp_value});
|
||
|
||
});
|
||
});
|
||
|
||
on("change:pre change:pre_mod change:imp_value", function() {
|
||
getAttrs(["pre","pre_mod","imp_value"], function(values) {
|
||
var base_pre = parseInt(values.pre);
|
||
var pre_mod = parseInt(values.pre_mod);
|
||
var imp_value = parseInt(values.imp_value);
|
||
setAttrs({cur_pre:base_pre+pre_mod+imp_value});
|
||
|
||
});
|
||
});
|
||
|
||
on("change:aes change:aes_mod change:imp_value", function() {
|
||
getAttrs(["aes","aes_mod","imp_value"], function(values) {
|
||
var base_aes = parseInt(values.aes);
|
||
var aes_mod = parseInt(values.aes_mod);
|
||
var imp_value = parseInt(values.imp_value);
|
||
setAttrs({cur_aes:base_aes+aes_mod+imp_value});
|
||
|
||
});
|
||
});
|
||
|
||
on("change:pie change:pie_mod change:imp_value", function() {
|
||
getAttrs(["pie","pie_mod","imp_value"], function(values) {
|
||
var base_pie = parseInt(values.pie);
|
||
var pie_mod = parseInt(values.pie_mod);
|
||
var imp_value = parseInt(values.imp_value);
|
||
setAttrs({cur_pie:base_pie+pie_mod+imp_value});
|
||
|
||
});
|
||
});
|
||
|
||
on("change:kao change:kao_mod change:imp_value", function() {
|
||
getAttrs(["kao","kao_mod","imp_value"], function(values) {
|
||
var base_kao = parseInt(values.kao);
|
||
var kao_mod = parseInt(values.kao_mod);
|
||
var imp_value = parseInt(values.imp_value);
|
||
setAttrs({cur_kao:base_kao+kao_mod+imp_value});
|
||
|
||
});
|
||
});
|
||
|
||
|
||
|
||
on("change:str change:str_mod change:imp_value", function() {
|
||
getAttrs(["str","str_mod","imp_value"], function(values) {
|
||
var base_str = parseInt(values.str);
|
||
var str_mod = parseInt(values.str_mod);
|
||
var imp_value = parseInt(values.imp_value);
|
||
setAttrs({cur_str:base_str+str_mod+imp_value});
|
||
|
||
});
|
||
});
|
||
|
||
on("change:con change:con_mod change:imp_value", function() {
|
||
getAttrs(["con","con_mod","imp_value"], function(values) {
|
||
var base_con = parseInt(values.con);
|
||
var con_mod = parseInt(values.con_mod);
|
||
var imp_value = parseInt(values.imp_value);
|
||
setAttrs({cur_con:base_con+con_mod+imp_value});
|
||
|
||
});
|
||
});
|
||
|
||
on("change:body change:body_mod change:imp_value", function() {
|
||
getAttrs(["body","body_mod","imp_value"], function(values) {
|
||
var base_body = parseInt(values.body);
|
||
var body_mod = parseInt(values.body_mod);
|
||
var imp_value = parseInt(values.imp_value);
|
||
setAttrs({cur_body:base_body+body_mod+imp_value});
|
||
|
||
});
|
||
});
|
||
|
||
on("change:ref change:ref_mod change:imp_value", function() {
|
||
getAttrs(["ref","ref_mod","imp_value"], function(values) {
|
||
var base_ref = parseInt(values.ref);
|
||
var ref_mod = parseInt(values.ref_mod);
|
||
var imp_value = parseInt(values.imp_value);
|
||
setAttrs({cur_ref:base_ref+ref_mod+imp_value});
|
||
|
||
});
|
||
});
|
||
|
||
on("change:dex change:dex_mod change:imp_value", function() {
|
||
getAttrs(["dex","dex_mod","imp_value"], function(values) {
|
||
var base_dex = parseInt(values.dex);
|
||
var dex_mod = parseInt(values.dex_mod);
|
||
var imp_value = parseInt(values.imp_value);
|
||
setAttrs({cur_dex:base_dex+dex_mod+imp_value});
|
||
|
||
});
|
||
});
|
||
|
||
on("change:tech change:tech_mod change:imp_value", function() {
|
||
getAttrs(["tech","tech_mod","imp_value"], function(values) {
|
||
var base_tech = parseInt(values.tech);
|
||
var tech_mod = parseInt(values.tech_mod);
|
||
var imp_value = parseInt(values.imp_value);
|
||
|
||
setAttrs({cur_tech:base_tech+tech_mod+imp_value});
|
||
});
|
||
});
|
||
|
||
on("change:move change:move_mod change:imp_value", function() {
|
||
getAttrs(["move","move_mod","imp_value"], function(values) {
|
||
var base_move = parseInt(values.move);
|
||
var move_mod = parseInt(values.move_mod);
|
||
var imp_value = parseInt(values.imp_value);
|
||
setAttrs({cur_move:base_move+move_mod+imp_value});
|
||
|
||
});
|
||
});
|
||
|
||
|
||
on("change:repeating_melee:min_str change:repeating_melee:wa change:repeating_melee:skill change:repeating_melee:dc", function() {
|
||
getAttrs(["repeating_melee_dc","repeating_melee_min_str","cur_ref","cur_dex","cur_str","repeating_melee_skill","repeating_melee_wa"], function(values) {
|
||
|
||
var cur_dex = parseInt(values.cur_dex);
|
||
console.log("cur dex "+cur_dex);
|
||
var cur_ref = parseInt(values.cur_ref);
|
||
console.log("cur ref "+cur_ref);
|
||
var cur_str = parseInt(values.cur_str);
|
||
console.log("cur str "+cur_str);
|
||
var wa = parseInt(values.repeating_melee_wa);
|
||
console.log("wa "+wa);
|
||
var dc = parseInt(values.repeating_melee_dc);
|
||
|
||
var skill = parseInt(values.repeating_melee_skill);
|
||
console.log("skill "+skill);
|
||
|
||
var min_str = parseInt(values.repeating_melee_min_str);
|
||
console.log("min_str "+min_str);
|
||
var mod= cur_str-min_str;
|
||
cur_ref += mod;
|
||
cur_dex += mod;
|
||
|
||
var endLoss = Math.floor(min_str/2,0);
|
||
if (cur_str > min_str ){
|
||
endLoss -= Math.floor((cur_str-min_str,0)/2);
|
||
}
|
||
if (endLoss < 1){
|
||
endLoss = 1;
|
||
}
|
||
|
||
var av = skill+cur_ref+wa;
|
||
var dv = skill+cur_dex;
|
||
|
||
console.log("av "+av);
|
||
console.log("dv "+dv);
|
||
|
||
|
||
//damage mod
|
||
var damMod=mod;
|
||
|
||
if (damMod>dc*2){
|
||
damMod=dc;
|
||
}
|
||
|
||
|
||
setAttrs({repeating_melee_av:av,repeating_melee_dv:dv,repeating_melee_dcMod:damMod,repeating_melee_end:endLoss});
|
||
});
|
||
});
|
||
|
||
|
||
on("change:repeating_missle:min_str change:repeating_missle:wa change:repeating_missle:skill", function() {
|
||
getAttrs(["repeating_missle_dc","repeating_missle_min_str","cur_ref","cur_str","repeating_missle_skill","repeating_missle_wa","repeating_missle_skill_name"], function(values) {
|
||
|
||
|
||
var cur_ref = parseInt(values.cur_ref);
|
||
var cur_str = parseInt(values.cur_str);
|
||
var wa = parseInt(values.repeating_missle_wa);
|
||
var dc = parseInt(values.repeating_missle_dc);
|
||
|
||
var skill = parseInt(values.repeating_missle_skill);
|
||
var min_str = parseInt(values.repeating_missle_min_str);
|
||
|
||
var mod= cur_str-min_str;
|
||
cur_ref += mod;
|
||
|
||
|
||
var endLoss = Math.floor(min_str/2,0);
|
||
if (cur_str > min_str ){
|
||
endLoss -= Math.floor((cur_str-min_str,0)/2);
|
||
}
|
||
if (endLoss < 1){
|
||
endLoss = 1;
|
||
}
|
||
|
||
var av = skill+cur_ref+wa;
|
||
var damMod = 0;
|
||
if (values.repeating_missle_skill_name=="Throwing"){
|
||
damMod=mod;
|
||
|
||
if (damMod>dc*2){
|
||
damMod=dc;
|
||
}
|
||
}
|
||
|
||
|
||
setAttrs({repeating_missle_av:av,repeating_missle_dcMod:damMod,repeating_missle_end:endLoss});
|
||
});
|
||
});
|
||
|
||
|
||
on("change:cur_str", function() {
|
||
getAttrs(["cur_str"], function(values) {
|
||
var cur_str = parseFloat(values.cur_str);
|
||
var max =9;
|
||
|
||
if (cur_str==1.0){
|
||
max = 12;
|
||
}
|
||
else if (cur_str==2.0){
|
||
max = 18;
|
||
}
|
||
else if (cur_str==3.0){
|
||
max = 25;
|
||
}
|
||
else if (cur_str==4.0){
|
||
max = 36;
|
||
}
|
||
else if (cur_str==5.0){
|
||
max = 50;
|
||
}
|
||
else if (cur_str==6.0){
|
||
max = 72;
|
||
}
|
||
else if (cur_str==7.0){
|
||
max = 100;
|
||
}
|
||
else if (cur_str==8.0){
|
||
max = 144;
|
||
}
|
||
else if (cur_str==9.0){
|
||
max = 200;
|
||
}
|
||
else if (cur_str==10.0){
|
||
max = 288;
|
||
}
|
||
|
||
|
||
setAttrs({carry_max:max});
|
||
});
|
||
});
|
||
|
||
|
||
on("change:cur_con change:cur_str", function() {
|
||
getAttrs(["cur_con","cur_str"], function(values) {
|
||
var cur_con = parseInt(values.cur_con);
|
||
var cur_str = parseInt(values.cur_str);
|
||
setAttrs({base_sd:cur_con*2,base_end:cur_con*10,base_rec:cur_con+cur_str});
|
||
});
|
||
});
|
||
on("change:cur_body", function() {
|
||
getAttrs(["cur_body","imp_value"], function(values) {
|
||
var cur_body = parseInt(values.cur_body);
|
||
var imp_value = parseInt(values.imp_value);
|
||
if (imp_value!=0){
|
||
cur_body=cur_body+Math.abs(imp_value);
|
||
}
|
||
setAttrs({base_stun:cur_body*5,base_hits:cur_body*5});
|
||
});
|
||
});
|
||
on("change:cur_move ", function() {
|
||
getAttrs(["cur_move"], function(values) {
|
||
var cur_move = parseInt(values.cur_move);
|
||
setAttrs({base_run:cur_move*2,base_sprint:cur_move*3,base_leap:cur_move});
|
||
});
|
||
});
|
||
on("change:cur_will", function() {
|
||
getAttrs(["cur_will"], function(values) {
|
||
var cur_will = parseInt(values.cur_will);
|
||
setAttrs({base_res:cur_will*3});
|
||
});
|
||
});
|
||
|
||
|
||
|
||
|
||
/* ---- BEGIN: TheAaronSheet.js ---- */
|
||
// Github: https://github.com/shdwjk/TheAaronSheet/blob/master/TheAaronSheet.js
|
||
// By: The Aaron, Arcane Scriptomancer
|
||
// Contact: https://app.roll20.net/users/104025/the-aaron
|
||
|
||
var TAS = TAS || (function(){
|
||
'use strict';
|
||
|
||
var version = '0.2.4',
|
||
lastUpdate = 1457098091,
|
||
|
||
loggingSettings = {
|
||
debug: {
|
||
key: 'debug',
|
||
title: 'DEBUG',
|
||
color: {
|
||
bgLabel: '#7732A2',
|
||
label: '#F2EF40',
|
||
bgText: '#FFFEB7',
|
||
text: '#7732A2'
|
||
}
|
||
},
|
||
error: {
|
||
key: 'error',
|
||
title: 'Error',
|
||
color: {
|
||
bgLabel: '#C11713',
|
||
label: 'white',
|
||
bgText: '#C11713',
|
||
text: 'white'
|
||
}
|
||
},
|
||
warn: {
|
||
key: 'warn',
|
||
title: 'Warning',
|
||
color: {
|
||
bgLabel: '#F29140',
|
||
label: 'white',
|
||
bgText: '#FFD8B7',
|
||
text: 'black'
|
||
}
|
||
},
|
||
info: {
|
||
key: 'info',
|
||
title: 'Info',
|
||
color: {
|
||
bgLabel: '#413FA9',
|
||
label: 'white',
|
||
bgText: '#B3B2EB',
|
||
text: 'black'
|
||
}
|
||
},
|
||
notice: {
|
||
key: 'notice',
|
||
title: 'Notice',
|
||
color: {
|
||
bgLabel: '#33C133',
|
||
label: 'white',
|
||
bgText: '#ADF1AD',
|
||
text: 'black'
|
||
}
|
||
},
|
||
log: {
|
||
key: 'log',
|
||
title: 'Log',
|
||
color: {
|
||
bgLabel: '#f2f240',
|
||
label: 'black',
|
||
bgText: '#ffff90',
|
||
text: 'black'
|
||
}
|
||
},
|
||
callstack: {
|
||
key: 'TAS',
|
||
title: 'function',
|
||
color: {
|
||
bgLabel: '#413FA9',
|
||
label: 'white',
|
||
bgText: '#B3B2EB',
|
||
text: 'black'
|
||
}
|
||
},
|
||
callstack_async: {
|
||
key: 'TAS',
|
||
title: 'ASYNC CALL',
|
||
color: {
|
||
bgLabel: '#413FA9',
|
||
label: 'white',
|
||
bgText: '#413FA9',
|
||
text: 'white'
|
||
}
|
||
},
|
||
TAS: {
|
||
key: 'TAS',
|
||
title: 'TAS',
|
||
color: {
|
||
bgLabel: 'grey',
|
||
label: 'black;background:linear-gradient(#304352,#d7d2cc,#d7d2cc,#d7d2cc,#304352)',
|
||
bgText: 'grey',
|
||
text: 'black;background:linear-gradient(#304352,#d7d2cc,#d7d2cc,#d7d2cc,#304352)'
|
||
}
|
||
}
|
||
},
|
||
|
||
|
||
config = {
|
||
debugMode: false,
|
||
logging: {
|
||
log: true,
|
||
notice: true,
|
||
info: true,
|
||
warn: true,
|
||
error: true,
|
||
debug: false
|
||
}
|
||
},
|
||
|
||
callstackRegistry = [],
|
||
queuedUpdates = {}, //< Used for delaying saves till the last momment.
|
||
|
||
complexType = function(o){
|
||
switch(typeof o){
|
||
case 'string':
|
||
return 'string';
|
||
case 'boolean':
|
||
return 'boolean';
|
||
case 'number':
|
||
return (_.isNaN(o) ? 'NaN' : (o.toString().match(/\./) ? 'decimal' : 'integer'));
|
||
case 'function':
|
||
return 'function: '+(o.name ? o.name+'()' : '(anonymous)');
|
||
case 'object':
|
||
return (_.isArray(o) ? 'array' : (_.isArguments(o) ? 'arguments' : ( _.isNull(o) ? 'null' : 'object')));
|
||
default:
|
||
return typeof o;
|
||
}
|
||
},
|
||
|
||
dataLogger = function(primaryLogger,secondaryLogger,data){
|
||
_.each(data,function(m){
|
||
var type = complexType(m);
|
||
switch(type){
|
||
case 'string':
|
||
primaryLogger(m);
|
||
break;
|
||
case 'undefined':
|
||
case 'null':
|
||
case 'NaN':
|
||
primaryLogger('['+type+']');
|
||
break;
|
||
case 'number':
|
||
case 'not a number':
|
||
case 'integer':
|
||
case 'decimal':
|
||
case 'boolean':
|
||
primaryLogger('['+type+']: '+m);
|
||
break;
|
||
default:
|
||
primaryLogger('['+type+']:=========================================');
|
||
secondaryLogger(m);
|
||
primaryLogger('=========================================================');
|
||
break;
|
||
}
|
||
});
|
||
},
|
||
|
||
|
||
colorLog = function(options){
|
||
var coloredLoggerFunction,
|
||
key = options.key,
|
||
label = options.title || 'TAS',
|
||
lBGColor = (options.color && options.color.bgLabel) || 'blue',
|
||
lTxtColor = (options.color && options.color.label) || 'white',
|
||
mBGColor = (options.color && options.color.bgText) || 'blue',
|
||
mTxtColor = (options.color && options.color.text) || 'white';
|
||
|
||
coloredLoggerFunction = function(message){
|
||
console.log(
|
||
'%c '+label+': %c '+message + ' ',
|
||
'background-color: '+lBGColor+';color: '+lTxtColor+'; font-weight:bold;',
|
||
'background-color: '+mBGColor+';color: '+mTxtColor+';'
|
||
);
|
||
};
|
||
return function(){
|
||
if('TAS'===key || config.logging[key]){
|
||
dataLogger(coloredLoggerFunction,function(m){console.log(m);},_.toArray(arguments));
|
||
}
|
||
};
|
||
},
|
||
|
||
logDebug = colorLog(loggingSettings.debug),
|
||
logError = colorLog(loggingSettings.error),
|
||
logWarn = colorLog(loggingSettings.warn),
|
||
logInfo = colorLog(loggingSettings.info),
|
||
logNotice = colorLog(loggingSettings.notice),
|
||
logLog = colorLog(loggingSettings.log),
|
||
log = colorLog(loggingSettings.TAS),
|
||
logCS = colorLog(loggingSettings.callstack),
|
||
logCSA = colorLog(loggingSettings.callstack_async),
|
||
|
||
registerCallstack = function(callstack,label){
|
||
var idx=_.findIndex(callstackRegistry,function(o){
|
||
return (_.difference(o.stack,callstack).length === _.difference(callstack,o.stack).length) &&
|
||
_.difference(o.stack,callstack).length === 0 &&
|
||
o.label === label;
|
||
});
|
||
if(-1 === idx){
|
||
idx=callstackRegistry.length;
|
||
callstackRegistry.push({
|
||
stack: callstack,
|
||
label: label
|
||
});
|
||
}
|
||
return idx;
|
||
},
|
||
|
||
setConfigOption = function(options){
|
||
var newconf =_.defaults(options,config);
|
||
newconf.logging=_.defaults(
|
||
(options && options.logging)||{},
|
||
config.logging
|
||
);
|
||
config=newconf;
|
||
},
|
||
|
||
debugMode = function(){
|
||
config.logging.debug=true;
|
||
config.debugMode = true;
|
||
},
|
||
|
||
getCallstack = function(){
|
||
var e = new Error('dummy'),
|
||
stack = _.map(_.rest(e.stack.replace(/^[^\(]+?[\n$]/gm, '')
|
||
.replace(/^\s+at\s+/gm, '')
|
||
.replace(/^Object.<anonymous>\s*\(/gm, '{anonymous}()@')
|
||
.split('\n')),function(l){
|
||
return l.replace(/\s+.*$/,'');
|
||
});
|
||
return stack;
|
||
},
|
||
logCallstackSub = function(cs){
|
||
var matches, csa;
|
||
_.find(cs,function(line){
|
||
matches = line.match(/TAS_CALLSTACK_(\d+)/);
|
||
if(matches){
|
||
csa=callstackRegistry[matches[1]];
|
||
logCSA( '===================='+(csa.label ? '> '+csa.label+' <' : '')+'====================');
|
||
logCallstackSub(csa.stack);
|
||
return true;
|
||
}
|
||
logCS(line);
|
||
return false;
|
||
});
|
||
},
|
||
logCallstack = function(){
|
||
var cs;
|
||
if(config.debugMode){
|
||
cs = getCallstack();
|
||
cs.shift();
|
||
log('==============================> CALLSTACK <==============================');
|
||
logCallstackSub(cs);
|
||
log('=========================================================================');
|
||
}
|
||
},
|
||
|
||
|
||
wrapCallback = function (label, callback, context){
|
||
var callstack;
|
||
if('function' === typeof label){
|
||
context=callback;
|
||
callback=label;
|
||
label=undefined;
|
||
}
|
||
if(!config.debugMode){
|
||
return (function(cb,ctx){
|
||
return function(){
|
||
cb.apply(ctx||{},arguments);
|
||
};
|
||
}(callback,context));
|
||
}
|
||
|
||
callstack = getCallstack();
|
||
callstack.shift();
|
||
|
||
return (function(cb,ctx,cs,lbl){
|
||
var ctxref=registerCallstack(cs,lbl);
|
||
|
||
/*jshint -W054 */
|
||
return new Function('cb','ctx','TASlog',
|
||
"return function TAS_CALLSTACK_"+ctxref+"(){"+
|
||
"TASlog('Entering: '+(cb.name||'(anonymous function)'));"+
|
||
"cb.apply(ctx||{},arguments);"+
|
||
"TASlog('Exiting: '+(cb.name||'(anonymous function)'));"+
|
||
"};")(cb,ctx,log);
|
||
/*jshint +W054 */
|
||
}(callback,context,callstack,label));
|
||
},
|
||
|
||
|
||
prepareUpdate = function( attribute, value ){
|
||
queuedUpdates[attribute]=value;
|
||
},
|
||
|
||
applyQueuedUpdates = function() {
|
||
setAttrs(queuedUpdates);
|
||
queuedUpdates = {};
|
||
},
|
||
|
||
namesFromArgs = function(args,base){
|
||
return _.chain(args)
|
||
.reduce(function(memo,attr){
|
||
if('string' === typeof attr) {
|
||
memo.push(attr);
|
||
} else if(_.isArray(args) || _.isArguments(args)){
|
||
memo = namesFromArgs(attr,memo);
|
||
}
|
||
return memo;
|
||
},(_.isArray(base) && base) || [])
|
||
.uniq()
|
||
.value();
|
||
},
|
||
|
||
addId = function(obj,value){
|
||
Object.defineProperty(obj,'id',{
|
||
value: value,
|
||
writeable: false,
|
||
enumerable: false
|
||
});
|
||
},
|
||
|
||
addProp = function(obj,prop,value,fullname){
|
||
(function(){
|
||
var pname=(_.contains(['S','F','I','D'],prop) ? '_'+prop : prop),
|
||
full_pname = fullname || prop,
|
||
pvalue=value;
|
||
|
||
_.each(['S','I','F'],function(p){
|
||
if( !_.has(obj,p)){
|
||
Object.defineProperty(obj, p, {
|
||
value: {},
|
||
enumerable: false,
|
||
readonly: true
|
||
});
|
||
}
|
||
});
|
||
if( !_.has(obj,'D')){
|
||
Object.defineProperty(obj, 'D', {
|
||
value: _.reduce(_.range(10),function(m,d){
|
||
Object.defineProperty(m, d, {
|
||
value: {},
|
||
enumerable: true,
|
||
readonly: true
|
||
});
|
||
return m;
|
||
},{}),
|
||
enumerable: false,
|
||
readonly: true
|
||
});
|
||
}
|
||
|
||
|
||
// Raw value
|
||
Object.defineProperty(obj, pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
if(v!==pvalue) {
|
||
pvalue=v;
|
||
prepareUpdate(full_pname,v);
|
||
}
|
||
},
|
||
get: function(){
|
||
return pvalue;
|
||
}
|
||
});
|
||
|
||
// string value
|
||
Object.defineProperty(obj.S, pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
var val=v.toString();
|
||
if(val !== pvalue) {
|
||
pvalue=val;
|
||
prepareUpdate(full_pname,val);
|
||
}
|
||
},
|
||
get: function(){
|
||
return pvalue.toString();
|
||
}
|
||
});
|
||
|
||
// int value
|
||
Object.defineProperty(obj.I, pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
var val=parseInt(v,10) || 0;
|
||
if(val !== pvalue){
|
||
pvalue=val;
|
||
prepareUpdate(full_pname,val);
|
||
}
|
||
},
|
||
get: function(){
|
||
return parseInt(pvalue,10) || 0;
|
||
}
|
||
});
|
||
|
||
// float value
|
||
Object.defineProperty(obj.F, pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
var val=parseFloat(v) || 0;
|
||
if(val !== pvalue) {
|
||
pvalue=val;
|
||
prepareUpdate(full_pname,val);
|
||
}
|
||
},
|
||
get: function(){
|
||
return parseFloat(pvalue) || 0;
|
||
}
|
||
});
|
||
_.each(_.range(10),function(d){
|
||
Object.defineProperty(obj.D[d], pname, {
|
||
enumerable: true,
|
||
set: function(v){
|
||
var val=(parseFloat(v) || 0).toFixed(d);
|
||
if(val !== pvalue){
|
||
pvalue=val;
|
||
prepareUpdate(full_pname,val);
|
||
}
|
||
},
|
||
get: function(){
|
||
return (parseFloat(pvalue) || 0).toFixed(d);
|
||
}
|
||
});
|
||
});
|
||
|
||
}());
|
||
},
|
||
|
||
repeating = function( section ) {
|
||
return (function(s){
|
||
var sectionName = s,
|
||
attrNames = [],
|
||
fieldNames = [],
|
||
operations = [],
|
||
after = [],
|
||
|
||
repAttrs = function TAS_Repeating_Attrs(){
|
||
attrNames = namesFromArgs(arguments,attrNames);
|
||
return this;
|
||
},
|
||
repFields = function TAS_Repeating_Fields(){
|
||
fieldNames = namesFromArgs(arguments,fieldNames);
|
||
return this;
|
||
},
|
||
repReduce = function TAS_Repeating_Reduce(func, initial, final, context) {
|
||
operations.push({
|
||
type: 'reduce',
|
||
func: (func && _.isFunction(func) && func) || _.noop,
|
||
memo: (_.isUndefined(initial) && 0) || initial,
|
||
final: (final && _.isFunction(final) && final) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repMap = function TAS_Repeating_Map(func, final, context) {
|
||
operations.push({
|
||
type: 'map',
|
||
func: (func && _.isFunction(func) && func) || _.noop,
|
||
final: (final && _.isFunction(final) && final) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repEach = function TAS_Repeating_Each(func, final, context) {
|
||
operations.push({
|
||
type: 'each',
|
||
func: (func && _.isFunction(func) && func) || _.noop,
|
||
final: (final && _.isFunction(final) && final) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repTap = function TAS_Repeating_Tap(final, context) {
|
||
operations.push({
|
||
type: 'tap',
|
||
final: (final && _.isFunction(final) && final) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repAfter = function TAS_Repeating_After(callback,context) {
|
||
after.push({
|
||
callback: (callback && _.isFunction(callback) && callback) || _.noop,
|
||
context: context || {}
|
||
});
|
||
return this;
|
||
},
|
||
repExecute = function TAS_Repeating_Execute(callback,context){
|
||
var rowSet = {},
|
||
attrSet = {},
|
||
fieldIds = [],
|
||
fullFieldNames = [];
|
||
|
||
repAfter(callback,context);
|
||
|
||
// call each operation per row.
|
||
// call each operation's final
|
||
getSectionIDs("repeating_"+sectionName,function(ids){
|
||
fieldIds = ids;
|
||
fullFieldNames = _.reduce(fieldIds,function(memo,id){
|
||
return memo.concat(_.map(fieldNames,function(name){
|
||
return 'repeating_'+sectionName+'_'+id+'_'+name;
|
||
}));
|
||
},[]);
|
||
getAttrs( _.uniq(attrNames.concat(fullFieldNames)), function(values){
|
||
_.each(attrNames,function(aname){
|
||
if(values.hasOwnProperty(aname)){
|
||
addProp(attrSet,aname,values[aname]);
|
||
}
|
||
});
|
||
|
||
rowSet = _.reduce(fieldIds,function(memo,id){
|
||
var r={};
|
||
addId(r,id);
|
||
_.each(fieldNames,function(name){
|
||
var fn = 'repeating_'+sectionName+'_'+id+'_'+name;
|
||
addProp(r,name,values[fn],fn);
|
||
});
|
||
|
||
memo[id]=r;
|
||
|
||
return memo;
|
||
},{});
|
||
|
||
_.each(operations,function(op){
|
||
var res;
|
||
switch(op.type){
|
||
case 'tap':
|
||
_.bind(op.final,op.context,rowSet,attrSet)();
|
||
break;
|
||
|
||
case 'each':
|
||
_.each(rowSet,function(r){
|
||
_.bind(op.func,op.context,r,attrSet,r.id,rowSet)();
|
||
});
|
||
_.bind(op.final,op.context,rowSet,attrSet)();
|
||
break;
|
||
|
||
case 'map':
|
||
res = _.map(rowSet,function(r){
|
||
return _.bind(op.func,op.context,r,attrSet,r.id,rowSet)();
|
||
});
|
||
_.bind(op.final,op.context,res,rowSet,attrSet)();
|
||
break;
|
||
|
||
case 'reduce':
|
||
res = op.memo;
|
||
_.each(rowSet,function(r){
|
||
res = _.bind(op.func,op.context,res,r,attrSet,r.id,rowSet)();
|
||
});
|
||
_.bind(op.final,op.context,res,rowSet,attrSet)();
|
||
break;
|
||
}
|
||
});
|
||
|
||
// finalize attrs
|
||
applyQueuedUpdates();
|
||
_.each(after,function(op){
|
||
_.bind(op.callback,op.context)();
|
||
});
|
||
});
|
||
});
|
||
};
|
||
|
||
return {
|
||
attrs: repAttrs,
|
||
attr: repAttrs,
|
||
|
||
column: repFields,
|
||
columns: repFields,
|
||
field: repFields,
|
||
fields: repFields,
|
||
|
||
reduce: repReduce,
|
||
inject: repReduce,
|
||
foldl: repReduce,
|
||
|
||
map: repMap,
|
||
collect: repMap,
|
||
|
||
each: repEach,
|
||
forEach: repEach,
|
||
|
||
tap: repTap,
|
||
'do': repTap,
|
||
|
||
after: repAfter,
|
||
last: repAfter,
|
||
done: repAfter,
|
||
|
||
execute: repExecute,
|
||
go: repExecute,
|
||
run: repExecute
|
||
};
|
||
}(section));
|
||
},
|
||
|
||
|
||
repeatingSimpleSum = function(section, field, destination){
|
||
repeating(section)
|
||
.attr(destination)
|
||
.field(field)
|
||
.reduce(function(m,r){
|
||
return m + (r.F[field]);
|
||
},0,function(t,r,a){
|
||
a.S[destination]=t;
|
||
})
|
||
.execute();
|
||
};
|
||
|
||
|
||
|
||
return {
|
||
/* Repeating Sections */
|
||
repeatingSimpleSum: repeatingSimpleSum,
|
||
repeating: repeating,
|
||
|
||
/* Configuration */
|
||
config: setConfigOption,
|
||
|
||
/* Debugging */
|
||
callback: wrapCallback,
|
||
callstack: logCallstack,
|
||
debugMode: debugMode,
|
||
_fn: wrapCallback,
|
||
|
||
/* Logging */
|
||
debug: logDebug,
|
||
error: logError,
|
||
warn: logWarn,
|
||
info: logInfo,
|
||
notice: logNotice,
|
||
log: logLog
|
||
};
|
||
}());
|
||
|
||
on('change:repeating_equipment remove:repeating_equipment',function(){
|
||
//TAS.repeatingSimpleSum('equipment','equipment_weight','carry_total');
|
||
TAS.repeating("equipment")
|
||
.attr("carry_total")
|
||
.field("equipment_weight","carried")
|
||
.reduce(function(m,r){
|
||
|
||
console.log("carried "+(r.F["carried"]));
|
||
if ( (r.F["carried"]) == 1){
|
||
return m + (r.F["equipment_weight"]);
|
||
} else{
|
||
return m;
|
||
}
|
||
|
||
|
||
},0,function(t,r,a){
|
||
a.S["carry_total"]=t;
|
||
})
|
||
.execute();
|
||
});
|
||
|
||
on('change:repeating_complications remove:repeating_complications',function(){
|
||
TAS.repeatingSimpleSum('complications','score','comp_total');
|
||
});
|
||
|
||
on('change:repeating_perks remove:repeating_perks',function(){
|
||
TAS.repeatingSimpleSum('perks','cost','perks_total');
|
||
});
|
||
|
||
on('change:repeating_talents remove:repeating_talents',function(){
|
||
TAS.repeatingSimpleSum('talents','cost','talents_total');
|
||
});
|
||
|
||
|
||
|
||
|
||
</script>
|
||
<rolltemplate class="sheet-rolltemplate-ActionRoll">
|
||
<br />
|
||
<br />
|
||
<div><b>{{name}}</b></div>
|
||
<div>{{action}} With</div>
|
||
<div>{{Weapon}} using {{Skill}}</div>
|
||
<div>Action Total: {{ActionTotal}}</div>
|
||
{{#rollTotal() ActionTotal crit}}
|
||
<div class="sheet-special">Critical Success</div>
|
||
{{/rollTotal() ActionTotal crit}}
|
||
{{#rollTotal() ActionTotal fumble1}}
|
||
<div class="sheet-special">Break Weapon</div>
|
||
{{/rollTotal() ActionTotal fumble1}}
|
||
{{#rollTotal() ActionTotal fumble2}}
|
||
<div class="sheet-special">Drop Weapon</div>
|
||
{{/rollTotal() ActionTotal fumble2}}
|
||
{{#rollTotal() ActionTotal fumble3}}
|
||
<div class="sheet-special">Loose Next Attack</div>
|
||
{{/rollTotal() ActionTotal fumble3}}
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
</rolltemplate>
|
||
|
||
|
||
<rolltemplate class="sheet-rolltemplate-SkillRoll">
|
||
<br />
|
||
<br />
|
||
<div><b>{{name}}</b></div>
|
||
<div>rolls</div>
|
||
<div>{{Skill}}</div>
|
||
<div>Action Total: {{ActionTotal}}</div>
|
||
{{#rollTotal() ActionTotal crit}}
|
||
<div class="sheet-special">Critical Success</div>
|
||
{{/rollTotal() ActionTotal crit}}
|
||
{{#rollTotal() ActionTotal fumble1}}
|
||
<div class="sheet-special">Break Weapon</div>
|
||
{{/rollTotal() ActionTotal fumble1}}
|
||
{{#rollTotal() ActionTotal fumble2}}
|
||
<div class="sheet-special">Drop Weapon</div>
|
||
{{/rollTotal() ActionTotal fumble2}}
|
||
{{#rollTotal() ActionTotal fumble3}}
|
||
<div class="sheet-special">Loose Next Attack</div>
|
||
{{/rollTotal() ActionTotal fumble3}}
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
</rolltemplate>
|
||
|
||
|
||
|
||
<rolltemplate class="sheet-rolltemplate-StatRoll">
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<div><b>{{name}}</b></div>
|
||
<div>Rolls {{stat}}</div>
|
||
<div>Action Total: {{ActionTotal}}</div>
|
||
{{#rollTotal() ActionTotal crit}}
|
||
<div class="sheet-special">Critical Success</div>
|
||
{{/rollTotal() ActionTotal crit}}
|
||
{{#rollTotal() ActionTotal fumble1}}
|
||
<div class="sheet-special">Critical Failure (3)</div>
|
||
{{/rollTotal() ActionTotal fumble1}}
|
||
{{#rollTotal() ActionTotal fumble2}}
|
||
<div class="sheet-special">Critical Failure (4)</div>
|
||
{{/rollTotal() ActionTotal fumble2}}
|
||
{{#rollTotal() ActionTotal fumble3}}
|
||
<div class="sheet-special">Critical Failure (5)</div>
|
||
{{/rollTotal() ActionTotal fumble3}}
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
</rolltemplate>
|
||
|
||
|
||
<rolltemplate class="sheet-rolltemplate-Damage">
|
||
<br />
|
||
<br />
|
||
<div><b>{{name}}</b></div>
|
||
<div>Rolls Damage for </div>
|
||
<div>{{Weapon}}</div>
|
||
<div>Damage: {{Damage}}</div>
|
||
<div>Max. Damage: {{MaxDamage}}</div>
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
</rolltemplate>
|
||
|
||
<rolltemplate class="sheet-rolltemplate-HitLocation">
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<div>{{name}} Rolls</div>
|
||
<div>Hit Location</div>
|
||
|
||
{{#rollBetween() Location 3 4}}
|
||
<div>Head ({{Location}})</div>
|
||
{{/rollBetween() Location 3 4}}
|
||
{{#rollTotal() Location 5}}
|
||
<div>Neck ({{Location}})</div>
|
||
{{/rollTotal() Location 5}}
|
||
{{#rollTotal() Location 6}}
|
||
<div>
|
||
{{#rollBetween() side 1 3}}
|
||
Left ({{side}})
|
||
{{/rollBetween() side 1 3}}
|
||
{{#rollBetween() side 4 6}}
|
||
Right ({{side}})
|
||
{{/rollBetween() side 4 6}}
|
||
Arm/Forepaw ({{Location}})
|
||
</div>
|
||
{{/rollTotal() Location 6}}
|
||
{{#rollBetween() Location 7 8}}
|
||
<div>
|
||
{{#rollBetween() side 1 3}}
|
||
Left ({{side}})
|
||
{{/rollBetween() side 1 3}}
|
||
{{#rollBetween() side 4 6}}
|
||
Right ({{side}})
|
||
{{/rollBetween() side 4 6}}
|
||
arm/Forelimb ({{Location}})
|
||
</div>
|
||
{{/rollBetween() Location 7 8}}
|
||
{{#rollTotal() Location 9}}
|
||
<div>
|
||
{{#rollBetween() side 1 3}}
|
||
Left ({{side}})
|
||
{{/rollBetween() side 1 3}}
|
||
{{#rollBetween() side 4 6}}
|
||
Right ({{side}})
|
||
{{/rollBetween() side 4 6}}
|
||
Shoulder ({{Location}})
|
||
</div>
|
||
|
||
{{/rollTotal() Location 9}}
|
||
{{#rollBetween() Location 10 11}}
|
||
<div>Chest ({{Location}})</div>
|
||
{{/rollBetween() Location 10 11}}
|
||
{{#rollTotal() Location 12}}
|
||
<div>Stomach ({{Location}})</div>
|
||
{{/rollTotal() Location 12}}
|
||
{{#rollTotal() Location 13}}
|
||
<div>Vitals ({{Location}})</div>
|
||
{{/rollTotal() Location 13}}
|
||
{{#rollTotal() Location 14}}
|
||
<div>
|
||
{{#rollBetween() side 1 3}}
|
||
Left ({{side}})
|
||
{{/rollBetween() side 1 3}}
|
||
{{#rollBetween() side 4 6}}
|
||
Right ({{side}})
|
||
{{/rollBetween() side 4 6}}
|
||
Thigh ({{Location}})
|
||
</div>
|
||
|
||
{{/rollTotal() Location 14}}
|
||
{{#rollBetween() Location 15 16}}
|
||
<div>
|
||
{{#rollBetween() side 1 3}}
|
||
Left ({{side}})
|
||
{{/rollBetween() side 1 3}}
|
||
{{#rollBetween() side 4 6}}
|
||
Right ({{side}})
|
||
{{/rollBetween() side 4 6}}
|
||
Leg/ hind limb ({{Location}})
|
||
</div>
|
||
{{/rollBetween() Location 15 16}}
|
||
{{#rollBetween() Location 17 18}}
|
||
<div>
|
||
{{#rollBetween() side 1 3}}
|
||
Left ({{side}})
|
||
{{/rollBetween() side 1 3}}
|
||
{{#rollBetween() side 4 6}}
|
||
Right ({{side}})
|
||
{{/rollBetween() side 4 6}}
|
||
Leg/ hind limb ({{Location}})
|
||
</div>
|
||
{{/rollBetween() Location 17 18}}
|
||
<br />
|
||
<br />
|
||
<br />
|
||
<br />
|
||
|
||
|
||
</rolltemplate>
|
||
|
||
|
||
|
||
|
||
|