Files
roll20-character-sheets-tester/Miseries & Misfortunes/html/8_sheetworkers.js
T

1 line
19 KiB
JavaScript

function activateCombatModal(e){const a={show_combat_modal:1};return a["repeating_arms_"+e+"_arm_trigger"]=0,a.combat_roll_mod=0,getAttrs(["repeating_arms_"+e+"_arm"],t=>{a.combat_attack=t["repeating_arms_"+e+"_arm"],setAttrs(a,{silent:!0},()=>updateCombatModal())}),!0}function updateCombatModal(){return getAttrs(["combat_attack","combat_distance","combat_roll_mod","strength_mod","dexterity_mod","melee_to_hit_mod","musketry_to_hit_mod","combat_opponent_tn","melee_damage_mod","combat_shot"],t=>{const{combat_attack:e,combat_roll_mod:a,strength_mod:o,dexterity_mod:n,melee_to_hit_mod:r,musketry_to_hit_mod:l,combat_opponent_tn:i,melee_damage_mod:s,combat_shot:_}=t;let{combat_distance:d}=t;const m=weapons[e],{damage:g,name:c,type:p}=m,h="ranged"===p?roll_table.musketry:roll_table.melee;"melee"===p?d="melee":"melee"===d&&(d="short");const u="melee"===p?{}:m.range[d],b="melee"===p?o:n;var y="melee"===p?r:l,k="melee"===p?s:0;const v=parseInt(b,10)||0,f=parseInt(k,10)||0,w=parseInt(y,10)||0,A=parseInt(a,10)||0;var M=v+w+A;const C=S(),q=function(){if("melee"!==d)return"";var t=v+f,e=t<0?"":"+";return 0!==t?e+t:""}();t=g+q+" HP",k=S();const I=function(){let t=0;t="melee"===d?i:"shot"===_?u.shot:u.tough_shot;return t}();t={combat_roll_base_mod:b||0,combat_roll_base_type:h.mod.substring(0,3),combat_roll_lifepath_mod:y||0,combat_roll_mod_display:M,combat_roll_opponent_ability:"melee"===d?"DEFENSE":"",combat_distance:d,combat_short:"melee"===p?" ":" - "+m.range.short.distance,combat_medium:"melee"===p?" ":" - "+m.range.medium.distance,combat_long:"melee"===p?" ":" - "+m.range.long.distance,combat_initiative:m.initiative,combat_rank:function(){if(0===m.rank)return"any";if(1===m.rank)return"1";if(2===m.rank)return"1, 2";if(3===m.rank)return"1, 2, 3"}(),roll_name:c.toUpperCase(),roll_die:"d20",roll_tn:parseInt(I,10),roll_tn_display:I,roll_damage:k,roll_damage_display:t,roll_final:function(){var t="20n"===I,e=t?"":"+"+C;let a="&{template:attack}";a+=" {{roll=[[@{roll_die}"+e+"]]}}",t||(a+=" {{mod=[["+C+"]]}}");t?a+=" {{crit_none=true}}":"melee"===d?(t=b+w+A+20,a+=" {{crit_exact=true}} {{roll_max=[["+t+"]]}}"):a+=" {{crit_greater=true}}";return a+=function(){var t=" {{combat_damage=[["+g+q+"]]}}";return t}(),a+=" {{combat_distance="+d.charAt(0).toUpperCase()+d.slice(1)+"}}",a+=" {{roll_tn=[[@{roll_tn}]]}} {{roll_tn_display=[[@{roll_tn_display}]]}} {{die_type=@{roll_die}}} {{roll_name=@{roll_name}}} {{character_name=@{character_name}}}",a}()};return setAttrs(t,{silent:!0}),!0;function S(){let t=b+"["+h.mod+" mod]";return w&&!isNaN(w)&&0!==w&&(t=t+"+"+w+"[lifepath mod]"),A&&!isNaN(A)&&0!==A&&(t=t+"+"+A+"[other mod]"),t}}),!0}function closeCombatModal(){setAttrs({show_combat_modal:0,roll_mod:0},{silent:!0})}function activateRollModal(t){const e=getTrimmedAttribute(t);var a=roll_table[e];const o={show_roll_modal:1};return o.roll_name=a.name||e.toUpperCase(),o[t]=0,o.roll_mod=0,o.roll_type=a.type,"d20"===a.type?getAttrs([e],t=>{o.roll_die="d20",o.roll_die_base="d20",o.roll_tn=t[e],o.roll_tn_base=t[e],o.roll_tn_display=t[e],o.roll_final="&{template:skill} {{roll=[[@{roll_die}]]}} {{roll_tn=[[@{roll_tn_display}]]}} {{mod=[[@{roll_mod}]]}} {{die_type=@{roll_die}}} {{roll_name=@{roll_name}}} {{character_name=@{character_name}}}",setAttrs(o,{silent:!0})}):"skill"===a.type?getAttrs([e],t=>{t=t[e];o.roll_die=roll_step_die[t],o.roll_die_base=roll_step_die[t],o.roll_tn=roll_step_tn[t],o.roll_tn_base=roll_step_tn[t],o.roll_tn_display=roll_step_tn[t],o.roll_final="&{template:skill} {{roll=[[@{roll_die}]]}} {{roll_tn=[[@{roll_tn_display}]]}} {{mod=[[@{roll_mod}]]}} {{die_type=@{roll_die}}} {{roll_name=@{roll_name}}} {{character_name=@{character_name}}}",setAttrs(o,{silent:!0})}):"save"===a.type?getAttrs([e],t=>{o.roll_die="d20",o.roll_die_base="d20",o.roll_tn=t[e],o.roll_tn_base=t[e],o.roll_tn_display=t[e],o.roll_final="&{template:save} {{roll=[[@{roll_die}+@{roll_mod}[MOD]]]}} {{roll_tn=[[@{roll_tn_display}]]}} {{mod=[[@{roll_mod}]]}} {{die_type=@{roll_die}}} {{roll_name=@{roll_name}}} {{character_name=@{character_name}}}",setAttrs(o,{silent:!0})}):console.log("ERROR: ROLL MODAL SKILL DATA NOT FOUND"),!0}function closeRollModal(){setAttrs({show_roll_modal:0,roll_mod:0},{silent:!0})}function activateRepeatingRollModal(t){const e=t.split("_"),a=[e[0],e[1],e[2]].join("_"),o={show_roll_modal:1,roll_type:"skill"};return o[t]=0,o.roll_mod=0,getAttrs([a+"_skill_name",a+"_skill"],t=>{var e=t[a+"_skill"];return o.roll_name=t[a+"_skill_name"].toUpperCase(),o.roll_die=roll_step_die[e],o.roll_die_base=roll_step_die[e],o.roll_tn=roll_step_tn[e],o.roll_tn_base=roll_step_tn[e],o.roll_tn_display=roll_step_tn[e],o.roll_final="&{template:skill} {{roll=[[@{roll_die}]]}} {{roll_tn=[[@{roll_tn_display}]]}} {{mod=[[@{roll_mod}]]}} {{die_type=@{roll_die}}} {{roll_name=@{roll_name}}} {{character_name=@{character_name}}}",setAttrs(o,{silent:!0}),!0}),!0}function updateRollModal(){getAttrs(["roll_tn_base","roll_type","roll_mod","roll_die_base","tn_mod"],t=>{var{roll_tn_base:e,roll_type:a,roll_mod:o,roll_die_base:n,tn_mod:t}=t;const r={};e=parseInt(e,10),o=parseInt(o,10)||0,t=parseInt(t,10)||0;return"d20"===a?r.roll_tn_display=e+o:"skill"===a&&(o=boundStepValue(convert_tn_to_step(e,n)+o),r.roll_tn_display=roll_step_tn[o]+t,r.roll_die=roll_step_die[o]),setAttrs(r,{silent:!0}),!0})}function convert_tn_to_step(t,e){return 1===t&&"d10"===e?0:7===t?6:9===t?7:11===t?8:19===t?9:t}function activateWitsModal(t){var e=getTrimmedAttribute(t);const a={show_wits_modal:1};return a[t]=0,a.wits_roll_mod=0,a.roll_type=e,a.wits_distance="voice"===e?"speaking":"press",setAttrs(a,{silent:!0},()=>updateWitsModal()),!0}function updateWitsModal(){return getAttrs(["wits_attack","wits_distance","roll_type","wits_roll_mod","charisma_mod","intelligence_mod","voice_to_hit_mod","press_to_hit_mod","wits_opponent_tn","press_damage_mod","voice_damage_mod"],t=>{const{wits_attack:e,wits_distance:a,roll_type:o,wits_roll_mod:n,charisma_mod:r,intelligence_mod:l,voice_to_hit_mod:i,press_to_hit_mod:s,wits_opponent_tn:_,press_damage_mod:d,voice_damage_mod:m}=t,g=roll_table[o],c=wits_attacks[e],p=c[a],h="press"===a?l:r;var u="press"===a?s:i,b="press"===a?d:m,y=a.charAt(0).toUpperCase()+a.slice(1);const k=parseInt(h,10)||0,v=parseInt(b,10)||0,f=parseInt(u,10)||0,w=parseInt(n,10)||0;var A,M,C=k+f+w;const q=O(),I=(A=k+v,M=A<0?"":"+",0!==A?M+A:""),[S,R]=p.dmg.split("; ");t=function(){let t=S+I+" Will";R&&(t=t+" & "+R+I+" Reputation");return t}(),b=O();const W="intimate"===a?_:p.tn;t={wits_roll_base_mod:h||0,wits_roll_base_type:g.mod.substring(0,3),wits_roll_lifepath_mod:u||0,wits_roll_mod_display:C,wits_roll_opponent_ability:"intimate"===a?p.tn.toUpperCase():"",combat_distance:y,roll_name:c.name.toUpperCase(),roll_die:"d20",roll_tn:parseInt(W,10),roll_tn_display:W,roll_rof:c.rof,roll_damage:b,roll_damage_display:t,roll_final:function(){var t="20n"===W,e=t?"":q;let a="&{template:attack}";a+=" {{roll=[[@{roll_die}"+e+"]]}}",t||(a+=" {{mod=[["+q+"]]}}");return a+=t?" {{crit_none=true}}":" {{crit_greater=true}}",a+=function(){let t=" {{will_damage=[["+S+I+"]]}}";R&&(t=t+" {{reputation_damage=[["+R+I+"]]}}");return t}(),a+=" {{combat_distance=@{combat_distance}}} {{roll_tn=[[@{roll_tn}]]}} {{roll_tn_display=[[@{roll_tn_display}]]}} {{die_type=@{roll_die}}} {{roll_name=@{roll_name}}} {{character_name=@{character_name}}}",a}()};return setAttrs(t,{silent:!0}),!0;function O(){let t=h+"["+g.mod+" mod]";return f&&!isNaN(f)&&0!==f&&(t=t+"+"+f+"[lifepath mod]"),w&&!isNaN(w)&&0!==w&&(t=t+"+"+w+"[other mod]"),t}}),!0}function closeWitsModal(){setAttrs({show_wits_modal:0,roll_mod:0},{silent:!0})}function incrementRepeatingSkill(t){const e=t.sourceAttribute.split("_"),o=e[3],n=[e[0],e[1],e[2]].join("_");return getAttrs([n+"_skill"],t=>{const e=parseInt(t[n+"_skill"],10),a={};t=boundStepValue("up"===o?e+1:e-1);return a[n+"_skill"]=t,a[n+"_skill_tn"]=roll_step_tn[t],setAttrs(a,{silent:!0}),!0}),!0}function incrementSkill(t){const[o,n]=t.sourceAttribute.split("_");getAttrs([n],t=>{const e=parseInt(t[n],10),a={};t=boundStepValue("up"===o?e+1:e-1);a[n]=t,a[n+"_tn"]=roll_step_tn[t],setAttrs(a,{silent:!0})})}function updateArm(t,e){t=weapons[t];update={},update["repeating_arms_"+e+"_arm_name"]=t.name,update["repeating_arms_"+e+"_arm_damage"]=t.damage,update["repeating_arms_"+e+"_arm_initiative"]=t.initiative,setAttrs(update,{silent:!0})}function updateCombatArmor(t){var{newValue:t}=t;combat_armor_die="0d0",combat_armor_ablative=0,"helmet_gorget"===t?(combat_armor_die="1d3",combat_armor_ablative=5):"helmet_breastplate"===t?(combat_armor_die="1d3",combat_armor_ablative=4):"breastplate"===t?(combat_armor_die="1d3",combat_armor_ablative=3):"mail"===t?(combat_armor_die="1d2",combat_armor_ablative=4):"buff"===t?(combat_armor_die="1d1",combat_armor_ablative=10):"helmet"===t&&(combat_armor_die="1d1",combat_armor_ablative=1),update={combat_armor_die:combat_armor_die,combat_armor_ablative:combat_armor_ablative},setAttrs(update,{silent:!0})}function updateCombatStat(a){var t=a.split("_")[0];const o=a.slice(0,-4),n=roll_table[t].mod+"_mod";getAttrs([n,a],t=>{const e={};e[o]=parseInt(t[a],10)+parseInt(t[n],10),setAttrs(e,{silent:!0})})}function updateDefense(){getAttrs(["strength_mod","dexterity_mod","attack_defense_mod","defend_defense_mod"],t=>{var{strength_mod:e,dexterity_mod:a,attack_defense_mod:o,defend_defense_mod:t}=t,t={attack_defense:parseInt(e,10)+parseInt(o,10),defend_defense:parseInt(a,10)+parseInt(t,10)};setAttrs(t,{silent:!0})})}function updateModifier(t){const e={};var a=t.sourceAttribute,t=mod_table[t.newValue]||0;e[a+"_mod"]=t,setAttrs(e,{silent:!0}),"charisma"===a&&(updateCombatStat("voice_to_hit_mod"),updateCombatStat("voice_damage_mod")),"intelligence"===a&&(updateCombatStat("press_to_hit_mod"),updateCombatStat("press_damage_mod")),"strength"===a&&(updateCombatStat("melee_to_hit_mod"),updateCombatStat("melee_damage_mod"),updateDefense()),"dexterity"===a&&(updateCombatStat("musketry_to_hit_mod"),updateCombatStat("musketry_damage_mod"),updateDefense())}function updateReputationArmor(t){var{newValue:t}=t;reputation_armor_die="0d0",reputation_armor_ablative=0,"highest"===t?(reputation_armor_die="1d3",reputation_armor_ablative=5):"second"===t?(reputation_armor_die="1d2",reputation_armor_ablative=3):"lowest"===t&&(reputation_armor_ablative=1),update={reputation_armor_die:reputation_armor_die,reputation_armor_ablative:reputation_armor_ablative},setAttrs(update,{silent:!0})}on("change:trigger_strength change:trigger_intelligence change:trigger_wisdom change:trigger_dexterity change:trigger_constitution change:trigger_charisma change:trigger_nationality change:trigger_religion change:trigger_politics change:trigger_poison_plague change:trigger_terror change:trigger_chance change:trigger_artillery change:trigger_break change:trigger_improvise change:trigger_listen change:trigger_parley change:trigger_sang-froid change:trigger_search change:trigger_sneak change:trigger_traverse",t=>{activateRollModal(t.sourceAttribute),closeWitsModal(),closeCombatModal()}),on("change:repeating_lifepath-skills:trigger_skill change:repeating_language-skills:trigger_skill",t=>{activateRepeatingRollModal(t.sourceAttribute),closeWitsModal(),closeCombatModal()}),on("change:close_modal",t=>{closeRollModal(),closeWitsModal(),closeCombatModal()}),on("change:strength change:intelligence change:wisdom change:dexterity change:constitution change:charisma",t=>{updateModifier(t)}),on("change:roll_mod change:tn_mod",()=>{updateRollModal()}),on("change:down_nationality change:down_religion change:down_politics change:up_nationality change:up_religion change:up_politics change:up_break change:up_improvise change:up_listen change:up_parley change:up_sang-froid change:up_search change:up_sneak change:up_traverse change:down_break change:down_improvise change:down_listen change:down_parley change:down_sang-froid change:down_search change:down_sneak change:down_traverse",t=>{incrementSkill(t)}),on("change:repeating_lifepath-skills:up_skill change:repeating_lifepath-skills:down_skill change:repeating_language-skills:up_skill change:repeating_language-skills:down_skill",t=>{incrementRepeatingSkill(t)}),on("change:trigger_voice change:trigger_press",t=>{activateWitsModal(t.sourceAttribute),closeRollModal(),closeCombatModal()}),on("change:wits_attack change:wits_distance change:wits_roll_mod change:wits_opponent_tn",t=>{updateWitsModal()}),on("change:voice_to_hit_mod change:voice_damage_mod change:press_to_hit_mod change:press_damage_mod change:melee_to_hit_mod change:melee_damage_mod change:musketry_to_hit_mod change:musketry_damage_mod",t=>{updateCombatStat(t.sourceAttribute)}),on("change:defend_defense_mod change:attack_defense_mod",()=>{updateDefense()}),on("change:repeating_arms:arm",t=>{var e=t.sourceAttribute.split("_")[2];updateArm(t.newValue,e)}),on("change:repeating_arms:arm_trigger",t=>{activateCombatModal(t.sourceAttribute.split("_")[2]),closeRollModal(),closeWitsModal()}),on("change:combat_attack change:combat_distance change:combat_roll_mod change:combat_opponent_tn change:combat_shot",()=>{updateCombatModal()}),on("change:trigger_melee",()=>{var t={show_combat_modal:1,combat_attack:"fist",trigger_melee:0,combat_roll_mod:combat_roll_mod=0};setAttrs(t,{silent:!0},()=>updateCombatModal())}),on("change:trigger_musketry",()=>{var t={show_combat_modal:1,combat_attack:"pistol",trigger_musketry:0,combat_roll_mod:combat_roll_mod=0};setAttrs(t,{silent:!0},()=>updateCombatModal())}),on("change:reputation_armor",t=>{updateReputationArmor(t)}),on("change:combat_armor",t=>{updateCombatArmor(t)});const mod_table={3:-3,4:-2,5:-2,6:-1,7:-1,8:-1,9:0,10:0,11:0,12:0,13:1,14:1,15:1,16:2,17:2,18:3},roll_step_die={0:"d10",1:"d6",2:"d6",3:"d6",4:"d6",5:"d6",6:"d8",7:"d10",8:"d12",9:"d20"},roll_step_tn={0:1,1:1,2:2,3:3,4:4,5:5,6:7,7:9,8:11,9:19},roll_table={strength:{type:"d20"},intelligence:{type:"d20"},wisdom:{type:"d20"},dexterity:{type:"d20"},constitution:{type:"d20"},charisma:{type:"d20"},nationality:{type:"skill"},religion:{type:"skill"},politics:{type:"skill"},poison_plague:{type:"save",name:"POISON & PLAGUE"},terror:{type:"save"},chance:{type:"save"},artillery:{type:"save"},voice:{type:"wits",mod:"charisma"},press:{type:"wits",mod:"intelligence"},melee:{type:"combat",mod:"strength"},musketry:{type:"combat",mod:"dexterity"},break:{type:"skill"},improvise:{type:"skill"},listen:{type:"skill"},parley:{type:"skill"},"sang-froid":{type:"skill"},search:{type:"skill"},sneak:{type:"skill"},traverse:{type:"skill"}},weapons={cudgel:{name:"Cudgel",type:"melee",damage:"1d4",rank:1,initiative:"15th"},cutlass:{name:"Cutlass",type:"melee",damage:"1d6",rank:1,initiative:"14th"},fist:{name:"Fist",type:"melee",damage:"1d2",rank:1,initiative:"17th"},grenade:{name:"Grenade",type:"ranged",damage:"1d8",rank:0,initiative:"18th",range:{short:{distance:"5sq",shot:14,tough_shot:18},medium:{distance:"10sq",shot:16,tough_shot:20},long:{distance:"20sq",shot:18,tough_shot:"20n"}}},halberd:{name:"Halberd",type:"melee",damage:"1d6",rank:2,initiative:"7th"},harquebus:{name:"Harquebus",type:"ranged",damage:"1d6",rank:2,initiative:"2nd",range:{short:{distance:"50sq",shot:12,tough_shot:15},medium:{distance:"200sq",shot:15,tough_shot:19},long:{distance:"400sq",shot:17,tough_shot:"20n"}}},long_sword:{name:"Long Sword",type:"melee",damage:"1d8",rank:1,initiative:"10th"},musket:{name:"Musket",type:"ranged",damage:"2d4",rank:2,initiative:"4th",range:{short:{distance:"20sq",shot:12,tough_shot:16},medium:{distance:"100sq",shot:16,tough_shot:19},long:{distance:"200sq",shot:18,tough_shot:"20n"}}},mousqueton_ball:{name:"Mousqueton(ball)",type:"ranged",damage:"1d6+1",rank:2,initiative:"2nd",range:{short:{distance:"10sq",shot:14,tough_shot:16},medium:{distance:"50sq",shot:16,tough_shot:20},long:{distance:"100sq",shot:20,tough_shot:"20n"}}},mousqueton_shot:{name:"Mousqueton(shot)",type:"ranged",damage:"1d6+1",rank:2,initiative:"2nd",range:{short:{distance:"5sq",shot:10,tough_shot:15},medium:{distance:"10sq",shot:15,tough_shot:17},long:{distance:"20sq",shot:18,tough_shot:20}}},pike:{name:"Pike",type:"melee",damage:"1d6",rank:3,initiative:"6th"},poignard:{name:"Poignard",type:"melee",damage:"1d3",rank:1,initiative:"12th"},pistol:{name:"Pistol",type:"ranged",damage:"1d4",rank:2,initiative:"1st",range:{short:{distance:"5sq",shot:13,tough_shot:17},medium:{distance:"20sq",shot:15,tough_shot:19},long:{distance:"30sq",shot:17,tough_shot:"20n"}}},plug_bayonet:{name:"Plug Bayonet",type:"melee",damage:"1d4",rank:2,initiative:"8th"},rapier:{name:"Rapier",type:"melee",damage:"1d4",rank:1,initiative:"9th"},rifle:{name:"Rifle",type:"ranged",damage:"1d8",rank:2,initiative:"3rd",range:{short:{distance:"50sq",shot:12,tough_shot:14},medium:{distance:"200sq",shot:14,tough_shot:18},long:{distance:"400sq",shot:16,tough_shot:20}}},saber:{name:"Saber",type:"melee",damage:"2d3",rank:1,initiative:"11th"},thrown_knife:{name:"Thrown Knife",type:"ranged",damage:"1d3",rank:1,initiative:"16th",range:{short:{distance:"5sq",shot:13,tough_shot:17},medium:{distance:"10sq",shot:15,tough_shot:19},long:{distance:"20sq",shot:17,tough_shot:"20n"}}}},wits_attacks={accuse:{intimate:{tn:"Intelligence",dmg:"1d6"},speaking:{tn:12,dmg:"2d4"},shouting:{tn:16,dmg:"1d4"},press:{tn:12,dmg:"2d6; 1d6"},rof:"1 every 3 rounds",name:"Accuse"},beg_pardon:{intimate:{tn:"Charisma",dmg:"1d6"},speaking:{tn:9,dmg:"1d4"},shouting:{tn:18,dmg:"1d2"},press:{tn:16,dmg:"1d4"},rof:"1 every other round",name:"Beg Pardon"},bribe:{intimate:{tn:"Wisdom",dmg:"1d4"},speaking:{tn:14,dmg:"1d3"},shouting:{tn:19,dmg:"1d2"},press:{tn:20,dmg:"1d6"},rof:"Once per combat",name:"Bribe"},confess:{intimate:{tn:"Wisdom",dmg:"2d4"},speaking:{tn:14,dmg:"1d6"},shouting:{tn:20,dmg:"1d3"},press:{tn:16,dmg:"1d6; 1d8"},rof:"Once per combat",name:"Confess"},educate:{intimate:{tn:"Intelligence",dmg:"2d3"},speaking:{tn:16,dmg:"1d6"},shouting:{tn:"20n",dmg:"1d2"},press:{tn:18,dmg:"1d3"},rof:"1 every other round",name:"Educate"},flatter:{intimate:{tn:"Wisdom",dmg:"1d6"},speaking:{tn:13,dmg:"1d4"},shouting:{tn:18,dmg:"1d2"},press:{tn:14,dmg:"1d4"},rof:"Once per round",name:"Flatter"},implore:{intimate:{tn:"Wisdom",dmg:"2d3"},speaking:{tn:15,dmg:"1d6"},shouting:{tn:20,dmg:"1d2"},press:{tn:"20n",dmg:"1d8"},rof:"Once per round",name:"Implore"},insult:{intimate:{tn:"Intelligence",dmg:"1d4; 1d2-1"},speaking:{tn:11,dmg:"1d8; 1d2"},shouting:{tn:16,dmg:"1d6; 1d3"},press:{tn:9,dmg:"1d6; 1d6"},rof:"1 every other round",name:"Insult"},poison:{intimate:{tn:"Intelligence",dmg:"1d8"},speaking:{tn:15,dmg:"1d6"},shouting:{tn:20,dmg:"1d2"},press:{tn:10,dmg:"1d6; 1d6+1"},rof:"1 every other round",name:"Poison"},seduce:{intimate:{tn:"Charisma",dmg:"2d4"},speaking:{tn:14,dmg:"1d4"},shouting:{tn:19,dmg:"1d2"},press:{tn:"20n",dmg:"1d2"},rof:"1 every other round",name:"Seduce"},shame:{intimate:{tn:"Wisdom",dmg:"1d4"},speaking:{tn:12,dmg:"2d4"},shouting:{tn:17,dmg:"1d10"},press:{tn:16,dmg:"1d4; 1d6"},rof:"Once per round",name:"Shame"},threaten:{intimate:{tn:"Intelligence",dmg:"1d8+1"},speaking:{tn:15,dmg:"1d6"},shouting:{tn:20,dmg:"1d4"},press:{tn:15,dmg:"1d6"},rof:"1 every other round",name:"Threaten"}};function boundStepValue(t){return t=9<(t=t<0?0:t)?9:t}function getTrimmedAttribute(t){return t.substring(8)}