mirror of
https://github.com/Nighthawk42/roll20-character-sheets.git
synced 2026-08-31 12:12:30 +00:00
327 lines
31 KiB
JavaScript
327 lines
31 KiB
JavaScript
/*jshint esversion: 11, laxcomma:true, eqeqeq:true*/
|
|
/*jshint -W014,-W084,-W030,-W033,-*/
|
|
//Sheet Variables
|
|
const sheetName = 'SCP';
|
|
const version = 1;
|
|
let debugMode = false;
|
|
const abilityScores = ['strength','health','perception','dexterity','fate','charisma','intelligence','willpower'];
|
|
const dieSizes = [8,10,12];
|
|
const baseRollText = `{{character_name=@{character_name}}} {{character_id=@{character_id}}} {{security_level=@{security_level}}}`;
|
|
const rollPlaceholders = (insert='',computeVal='computed value') => `@{template_start} ${insert} {{high_sides_1=[[0[${computeVal}]]]}} {{high_sides_2=[[0[${computeVal}]]]}} {{high_1=[[0[${computeVal}]]]}} {{high_2=[[0[${computeVal}]]]}} {{ones=[[0[${computeVal}]]]}} {{total=[[0[${computeVal}]]]}} {{finished=[[0[${computeVal}]]]}} {{display_results=true}} ${baseRollText}`;
|
|
const expCosts = {
|
|
d8:100,
|
|
d10:200,
|
|
d12:500
|
|
};
|
|
//Object that defines how the attributes affect each other
|
|
const repeatingSectionDetails = [
|
|
{section:'repeating_attack',fields:['weapon','stance','skill','x_damage','recoil','recoil_base']}
|
|
];
|
|
const cascades = {
|
|
/*template
|
|
attribute_name:{
|
|
name:'attribute_name',
|
|
defaultValue:'string or number',
|
|
type:'number or text',
|
|
affects:['array','of','attributes','affected'],
|
|
calculation:funcCall//Calculation for this attribute; optional property
|
|
}
|
|
*/
|
|
//available dice
|
|
available_d8:{
|
|
name:'available_d8',defaultValue:20,type:'number',affects:[],calculation:availableDice},
|
|
available_d10:{
|
|
name:'available_d10',defaultValue:4,type:'number',affects:[],calculation:availableDice},
|
|
available_d12:{
|
|
name:'available_d12',defaultValue:0,type:'number',affects:[],calculation:availableDice},
|
|
//purchased dice
|
|
purchased_d8:{
|
|
name:'purchased_d8',defaultValue:20,type:'number',affects:['available_d8'],calculation:purchasedDice},
|
|
purchased_d10:{
|
|
name:'purchased_d10',defaultValue:4,type:'number',affects:['available_d10'],calculation:purchasedDice},
|
|
purchased_d12:{
|
|
name:'purchased_d12',defaultValue:0,type:'number',affects:['available_d12'],calculation:purchasedDice},
|
|
//total dice
|
|
total_d8:{
|
|
name:'total_d8',defaultValue:20,type:'number',affects:['available_d8']},
|
|
total_d10:{
|
|
name:'total_d10',defaultValue:4,type:'number',affects:['available_d10']},
|
|
total_d12:{
|
|
name:'total_d12',defaultValue:0,type:'number',affects:['available_d12']},
|
|
|
|
//ability score dice
|
|
strength_d8:{name:'strength_d8',defaultValue:0,type:'number',affects:['purchased_d8'],triggeredFuncs:[verifyDiePurchase]},
|
|
strength_d10:{name:'strength_d10',defaultValue:0,type:'number',affects:['purchased_d10','melee_multiplier'],triggeredFuncs:[verifyDiePurchase]},
|
|
strength_d12:{name:'strength_d12',defaultValue:0,type:'number',affects:['purchased_d12','melee_multiplier','repeating_attack_$X_recoil'],triggeredFuncs:[verifyDiePurchase]},
|
|
health_d8:{name:'health_d8',defaultValue:0,type:'number',affects:['purchased_d8','hp_max'],triggeredFuncs:[verifyDiePurchase]},
|
|
health_d10:{name:'health_d10',defaultValue:0,type:'number',affects:['purchased_d10','hp_max'],triggeredFuncs:[verifyDiePurchase]},
|
|
health_d12:{name:'health_d12',defaultValue:0,type:'number',affects:['purchased_d12','hp_max'],triggeredFuncs:[verifyDiePurchase]},
|
|
perception_d8:{name:'perception_d8',defaultValue:0,type:'number',affects:['purchased_d8'],triggeredFuncs:[verifyDiePurchase]},
|
|
perception_d10:{name:'perception_d10',defaultValue:0,type:'number',affects:['purchased_d10','reaction_defense','ranged_multiplier'],triggeredFuncs:[verifyDiePurchase]},
|
|
perception_d12:{name:'perception_d12',defaultValue:0,type:'number',affects:['purchased_d12','ranged_multiplier'],triggeredFuncs:[verifyDiePurchase]},
|
|
dexterity_d8:{name:'dexterity_d8',defaultValue:0,type:'number',affects:['purchased_d8'],triggeredFuncs:[verifyDiePurchase]},
|
|
dexterity_d10:{name:'dexterity_d10',defaultValue:0,type:'number',affects:['purchased_d10'],triggeredFuncs:[verifyDiePurchase]},
|
|
dexterity_d12:{name:'dexterity_d12',defaultValue:0,type:'number',affects:['purchased_d12','reaction_defense','move_speed'],triggeredFuncs:[verifyDiePurchase]},
|
|
fate_d8:{name:'fate_d8',defaultValue:0,type:'number',affects:['purchased_d8'],triggeredFuncs:[verifyDiePurchase,startingReverence]},
|
|
fate_d10:{name:'fate_d10',defaultValue:0,type:'number',affects:['purchased_d10'],triggeredFuncs:[verifyDiePurchase,startingReverence]},
|
|
fate_d12:{name:'fate_d12',defaultValue:0,type:'number',affects:['purchased_d12'],triggeredFuncs:[verifyDiePurchase]},
|
|
charisma_d8:{name:'charisma_d8',defaultValue:0,type:'number',affects:['purchased_d8'],triggeredFuncs:[verifyDiePurchase]},
|
|
charisma_d10:{name:'charisma_d10',defaultValue:0,type:'number',affects:['purchased_d10'],triggeredFuncs:[verifyDiePurchase]},
|
|
charisma_d12:{name:'charisma_d12',defaultValue:0,type:'number',affects:['purchased_d12'],triggeredFuncs:[verifyDiePurchase]},
|
|
intelligence_d8:{name:'intelligence_d8',defaultValue:0,type:'number',affects:['purchased_d8'],triggeredFuncs:[verifyDiePurchase]},
|
|
intelligence_d10:{name:'intelligence_d10',defaultValue:0,type:'number',affects:['purchased_d10','reaction_defense'],triggeredFuncs:[verifyDiePurchase]},
|
|
intelligence_d12:{name:'intelligence_d12',defaultValue:0,type:'number',affects:['purchased_d12'],triggeredFuncs:[verifyDiePurchase]},
|
|
willpower_d8:{name:'willpower_d8',defaultValue:0,type:'number',affects:['purchased_d8'],triggeredFuncs:[verifyDiePurchase]},
|
|
willpower_d10:{name:'willpower_d10',defaultValue:0,type:'number',affects:['purchased_d10','exertion_max'],triggeredFuncs:[verifyDiePurchase]},
|
|
willpower_d12:{name:'willpower_d12',defaultValue:0,type:'number',affects:['purchased_d12'],triggeredFuncs:[verifyDiePurchase]},
|
|
|
|
//Exertion & Reverence
|
|
exertion:{name:'exertion',defaultValue:0,type:'number',affects:[],triggeredFuncs:[verifyExertion]},
|
|
exertion_max:{name:'exertion_max',defaultValue:0,type:'number',affects:['cognitive_resistance'],calculation:exertionCalc,triggeredFuncs:[verifyExertion]},
|
|
reverence:{name:'reverence',defaultValue:0,type:'number',affects:[],triggeredFuncs:[]},
|
|
|
|
//Appearance, Body type, and Reasoning
|
|
appearance:{name:'appearance',defaultValue:'average',type:'text',affects:['negotiation/persuade_mod','fashion/etiquette_mod','leadership_mod','disguise/blend_in_mod','intimidate/taunt_mod','showmanship_mod','resist_distress_mod']},
|
|
body_type:{name:'body_type',defaultValue:'average',type:'text',affects:['hp_max','reaction_defense']},
|
|
reasoning:{name:'reasoning',defaultValue:'scientific',type:'text',affects:['cognitive_resistance','resist_distress_mod','initiative_mod','intuition_mod','occult/scp_lore_mod']},
|
|
|
|
//hp
|
|
hp:{name:'hp',defaultValue:0,type:'number',affects:[]},
|
|
hp_max:{name:'hp_max',defaultValue:0,type:'number',affects:[],calculation:hpCalc},
|
|
|
|
//defenses
|
|
reaction_defense:{name:'reaction_defense',defaultValue:0,type:'number',affects:[],calculation:rdCalc},
|
|
cognitive_resistance:{name:'cognitive_resistance',defaultValue:0,type:'number',affects:[],calculation:cognitiveCalc},
|
|
move_speed:{name:'move_speed',defaultValue:0,type:'number',affects:[],calculation:moveCalc},
|
|
|
|
//damage multipliers
|
|
melee_multiplier:{name:'melee_multiplier',defaultValue:0,type:'number',affects:[],calculation:damageMultiplierCalc},
|
|
ranged_multiplier:{name:'ranged_multiplier',defaultValue:0,type:'number',affects:[],calculation:damageMultiplierCalc},
|
|
|
|
//Actions
|
|
//Attack skills
|
|
'melee_base_mod':{name:'melee_base_mod',defaultvalue:0,type:'number',affects:['melee_mod']},
|
|
'melee_mod':{name:'melee_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'melee_proficiency':{name:'melee_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'assault_rifle_base_mod':{name:'assault_rifle_base_mod',defaultvalue:0,type:'number',affects:['assault_rifle_mod']},
|
|
'assault_rifle_mod':{name:'assault_rifle_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'assault_rifle_proficiency':{name:'assault_rifle_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'handgun_base_mod':{name:'handgun_base_mod',defaultvalue:0,type:'number',affects:['handgun_mod']},
|
|
'handgun_mod':{name:'handgun_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'handgun_proficiency':{name:'handgun_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'heavy_artillery_base_mod':{name:'heavy_artillery_base_mod',defaultvalue:0,type:'number',affects:['heavy_artillery_mod']},
|
|
'heavy_artillery_mod':{name:'heavy_artillery_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'heavy_artillery_proficiency':{name:'heavy_artillery_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'hunting/sniper_rifle_base_mod':{name:'hunting/sniper_rifle_base_mod',defaultvalue:0,type:'number',affects:['hunting/sniper_rifle_mod']},
|
|
'hunting/sniper_rifle_mod':{name:'hunting/sniper_rifle_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'hunting/sniper_rifle_proficiency':{name:'hunting/sniper_rifle_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'shotgun_base_mod':{name:'shotgun_base_mod',defaultvalue:0,type:'number',affects:['shotgun_mod']},
|
|
'shotgun_mod':{name:'shotgun_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'shotgun_proficiency':{name:'shotgun_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'submachine_gun_base_mod':{name:'submachine_gun_base_mod',defaultvalue:0,type:'number',affects:['submachine_gun_mod']},
|
|
'submachine_gun_mod':{name:'submachine_gun_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'submachine_gun_proficiency':{name:'submachine_gun_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
//non attack skills
|
|
'acting/lie_base_mod':{name:'acting/lie_base_mod',defaultvalue:0,type:'number',affects:['acting/lie_mod']},
|
|
'acting/lie_mod':{name:'acting/lie_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'acting/lie_proficiency':{name:'acting/lie_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'art/music_base_mod':{name:'art/music_base_mod',defaultvalue:0,type:'number',affects:['art/music_mod']},
|
|
'art/music_mod':{name:'art/music_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'art/music_proficiency':{name:'art/music_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'break_free/escape_base_mod':{name:'break_free/escape_base_mod',defaultvalue:0,type:'number',affects:['break_free/escape_mod']},
|
|
'break_free/escape_mod':{name:'break_free/escape_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'break_free/escape_proficiency':{name:'break_free/escape_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'catch/throw_base_mod':{name:'catch/throw_base_mod',defaultvalue:0,type:'number',affects:['catch/throw_mod']},
|
|
'catch/throw_mod':{name:'catch/throw_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'catch/throw_proficiency':{name:'catch/throw_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'climb_base_mod':{name:'climb_base_mod',defaultvalue:0,type:'number',affects:['climb_mod']},
|
|
'climb_mod':{name:'climb_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'climb_proficiency':{name:'climb_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'disguise/blend_in_base_mod':{name:'disguise/blend_in_base_mod',defaultvalue:0,type:'number',affects:['disguise/blend_in_mod']},
|
|
'disguise/blend_in_mod':{name:'disguise/blend_in_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'disguise/blend_in_proficiency':{name:'disguise/blend_in_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'drive_base_mod':{name:'drive_base_mod',defaultvalue:0,type:'number',affects:['drive_mod']},
|
|
'drive_mod':{name:'drive_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'drive_proficiency':{name:'drive_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'lock-picking_base_mod':{name:'lock-picking_base_mod',defaultvalue:0,type:'number',affects:['lock-picking_mod']},
|
|
'lock-picking_mod':{name:'lock-picking_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'lock-picking_proficiency':{name:'lock-picking_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'pickpocket_base_mod':{name:'pickpocket_base_mod',defaultvalue:0,type:'number',affects:['pickpocket_mod']},
|
|
'pickpocket_mod':{name:'pickpocket_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'pickpocket_proficiency':{name:'pickpocket_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'pilot_base_mod':{name:'pilot_base_mod',defaultvalue:0,type:'number',affects:['pilot_mod']},
|
|
'pilot_mod':{name:'pilot_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'pilot_proficiency':{name:'pilot_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'stealth/hide_base_mod':{name:'stealth/hide_base_mod',defaultvalue:0,type:'number',affects:['stealth/hide_mod']},
|
|
'stealth/hide_mod':{name:'stealth/hide_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'stealth/hide_proficiency':{name:'stealth/hide_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'showmanship_base_mod':{name:'showmanship_base_mod',defaultvalue:0,type:'number',affects:['showmanship_mod']},
|
|
'showmanship_mod':{name:'showmanship_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'showmanship_proficiency':{name:'showmanship_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'swim_base_mod':{name:'swim_base_mod',defaultvalue:0,type:'number',affects:['swim_mod']},
|
|
'swim_mod':{name:'swim_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'swim_proficiency':{name:'swim_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'teaching_base_mod':{name:'teaching_base_mod',defaultvalue:0,type:'number',affects:['teaching_mod']},
|
|
'teaching_mod':{name:'teaching_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'teaching_proficiency':{name:'teaching_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'wrestle/disarm_base_mod':{name:'wrestle/disarm_base_mod',defaultvalue:0,type:'number',affects:['wrestle/disarm_mod']},
|
|
'wrestle/disarm_mod':{name:'wrestle/disarm_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'wrestle/disarm_proficiency':{name:'wrestle/disarm_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'writing_base_mod':{name:'writing_base_mod',defaultvalue:0,type:'number',affects:['writing_mod']},
|
|
'writing_mod':{name:'writing_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'writing_proficiency':{name:'writing_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
//knowledges
|
|
'anatomy/first_aid_base_mod':{name:'anatomy/first_aid_base_mod',defaultvalue:0,type:'number',affects:['anatomy/first_aid_mod']},
|
|
'anatomy/first_aid_mod':{name:'anatomy/first_aid_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'anatomy/first_aid_proficiency':{name:'anatomy/first_aid_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'ancient_languages_base_mod':{name:'ancient_languages_base_mod',defaultvalue:0,type:'number',affects:['ancient_languages_mod']},
|
|
'ancient_languages_mod':{name:'ancient_languages_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'ancient_languages_proficiency':{name:'ancient_languages_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'architecture_base_mod':{name:'architecture_base_mod',defaultvalue:0,type:'number',affects:['architecture_mod']},
|
|
'architecture_mod':{name:'architecture_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'architecture_proficiency':{name:'architecture_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'astronomy_base_mod':{name:'astronomy_base_mod',defaultvalue:0,type:'number',affects:['astronomy_mod']},
|
|
'astronomy_mod':{name:'astronomy_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'astronomy_proficiency':{name:'astronomy_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'caretaking/nurture_base_mod':{name:'caretaking/nurture_base_mod',defaultvalue:0,type:'number',affects:['caretaking/nurture_mod']},
|
|
'caretaking/nurture_mod':{name:'caretaking/nurture_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'caretaking/nurture_proficiency':{name:'caretaking/nurture_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'computer/hacking_base_mod':{name:'computer/hacking_base_mod',defaultvalue:0,type:'number',affects:['computer/hacking_mod']},
|
|
'computer/hacking_mod':{name:'computer/hacking_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'computer/hacking_proficiency':{name:'computer/hacking_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'cooking_base_mod':{name:'cooking_base_mod',defaultvalue:0,type:'number',affects:['cooking_mod']},
|
|
'cooking_mod':{name:'cooking_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'cooking_proficiency':{name:'cooking_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'demolitions_base_mod':{name:'demolitions_base_mod',defaultvalue:0,type:'number',affects:['demolitions_mod']},
|
|
'demolitions_mod':{name:'demolitions_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'demolitions_proficiency':{name:'demolitions_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'fashion/etiquette_base_mod':{name:'fashion/etiquette_base_mod',defaultvalue:0,type:'number',affects:['fashion/etiquette_mod']},
|
|
'fashion/etiquette_mod':{name:'fashion/etiquette_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'fashion/etiquette_proficiency':{name:'fashion/etiquette_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'gambling/gaming_base_mod':{name:'gambling/gaming_base_mod',defaultvalue:0,type:'number',affects:['gambling/gaming_mod']},
|
|
'gambling/gaming_mod':{name:'gambling/gaming_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'gambling/gaming_proficiency':{name:'gambling/gaming_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'general_knowledge_base_mod':{name:'general_knowledge_base_mod',defaultvalue:0,type:'number',affects:['general_knowledge_mod']},
|
|
'general_knowledge_mod':{name:'general_knowledge_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'general_knowledge_proficiency':{name:'general_knowledge_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'history/lore_base_mod':{name:'history/lore_base_mod',defaultvalue:0,type:'number',affects:['history/lore_mod']},
|
|
'history/lore_mod':{name:'history/lore_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'history/lore_proficiency':{name:'history/lore_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'identify_taste/smell_base_mod':{name:'identify_taste/smell_base_mod',defaultvalue:0,type:'number',affects:['identify_taste/smell_mod']},
|
|
'identify_taste/smell_mod':{name:'identify_taste/smell_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'identify_taste/smell_proficiency':{name:'identify_taste/smell_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'investigate_base_mod':{name:'investigate_base_mod',defaultvalue:0,type:'number',affects:['investigate_mod']},
|
|
'investigate_mod':{name:'investigate_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'investigate_proficiency':{name:'investigate_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'law/politics_base_mod':{name:'law/politics_base_mod',defaultvalue:0,type:'number',affects:['law/politics_mod']},
|
|
'law/politics_mod':{name:'law/politics_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'law/politics_proficiency':{name:'law/politics_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'mathematics_base_mod':{name:'mathematics_base_mod',defaultvalue:0,type:'number',affects:['mathematics_mod']},
|
|
'mathematics_mod':{name:'mathematics_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'mathematics_proficiency':{name:'mathematics_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'mechanics_base_mod':{name:'mechanics_base_mod',defaultvalue:0,type:'number',affects:['mechanics_mod']},
|
|
'mechanics_mod':{name:'mechanics_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'mechanics_proficiency':{name:'mechanics_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'navigate_base_mod':{name:'navigate_base_mod',defaultvalue:0,type:'number',affects:['navigate_mod']},
|
|
'navigate_mod':{name:'navigate_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'navigate_proficiency':{name:'navigate_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'occult/scp_lore_base_mod':{name:'occult/scp_lore_base_mod',defaultvalue:0,type:'number',affects:['occult/scp_lore_mod']},
|
|
'occult/scp_lore_mod':{name:'occult/scp_lore_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'occult/scp_lore_proficiency':{name:'occult/scp_lore_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'psychology_base_mod':{name:'psychology_base_mod',defaultvalue:0,type:'number',affects:['psychology_mod']},
|
|
'psychology_mod':{name:'psychology_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'psychology_proficiency':{name:'psychology_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'religion_base_mod':{name:'religion_base_mod',defaultvalue:0,type:'number',affects:['religion_mod']},
|
|
'religion_mod':{name:'religion_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'religion_proficiency':{name:'religion_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'research/internet_base_mod':{name:'research/internet_base_mod',defaultvalue:0,type:'number',affects:['research/internet_mod']},
|
|
'research/internet_mod':{name:'research/internet_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'research/internet_proficiency':{name:'research/internet_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'science/physics_base_mod':{name:'science/physics_base_mod',defaultvalue:0,type:'number',affects:['science/physics_mod']},
|
|
'science/physics_mod':{name:'science/physics_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'science/physics_proficiency':{name:'science/physics_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'survival/tracking_base_mod':{name:'survival/tracking_base_mod',defaultvalue:0,type:'number',affects:['survival/tracking_mod']},
|
|
'survival/tracking_mod':{name:'survival/tracking_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'survival/tracking_proficiency':{name:'survival/tracking_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'technology_base_mod':{name:'technology_base_mod',defaultvalue:0,type:'number',affects:['technology_mod']},
|
|
'technology_mod':{name:'technology_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'technology_proficiency':{name:'technology_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'visual_signals/sign_lang._base_mod':{name:'visual_signals/sign_lang._base_mod',defaultvalue:0,type:'number',affects:['visual_signals/sign_lang._mod']},
|
|
'visual_signals/sign_lang._mod':{name:'visual_signals/sign_lang._mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'visual_signals/sign_lang._proficiency':{name:'visual_signals/sign_lang._proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
//abilities
|
|
'awareness/reaction_proficiency':{name:'awareness/reaction_proficiency',defaultvalue:0,type:'number',affects:['reaction_defense']},
|
|
'dodge/block_base_mod':{name:'dodge/block_base_mod',defaultvalue:0,type:'number',affects:['dodge/block_mod']},
|
|
'dodge/block_mod':{name:'dodge/block_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'dodge/block_proficiency':{name:'dodge/block_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'animal_ken/tame_base_mod':{name:'animal_ken/tame_base_mod',defaultvalue:0,type:'number',affects:['animal_ken/tame_mod']},
|
|
'animal_ken/tame_mod':{name:'animal_ken/tame_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'animal_ken/tame_proficiency':{name:'animal_ken/tame_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'athletics_base_mod':{name:'athletics_base_mod',defaultvalue:0,type:'number',affects:['athletics_mod']},
|
|
'athletics_mod':{name:'athletics_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'athletics_proficiency':{name:'athletics_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'empathy_base_mod':{name:'empathy_base_mod',defaultvalue:0,type:'number',affects:['empathy_mod']},
|
|
'empathy_mod':{name:'empathy_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'empathy_proficiency':{name:'empathy_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'endurance_base_mod':{name:'endurance_base_mod',defaultvalue:0,type:'number',affects:['endurance_mod']},
|
|
'endurance_mod':{name:'endurance_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'endurance_proficiency':{name:'endurance_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'initiative_base_mod':{name:'initiative_base_mod',defaultvalue:0,type:'number',affects:['initiative_mod']},
|
|
'initiative_mod':{name:'initiative_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'initiative_proficiency':{name:'initiative_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'intimidate/taunt_base_mod':{name:'intimidate/taunt_base_mod',defaultvalue:0,type:'number',affects:['intimidate/taunt_mod']},
|
|
'intimidate/taunt_mod':{name:'intimidate/taunt_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'intimidate/taunt_proficiency':{name:'intimidate/taunt_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'intuition_base_mod':{name:'intuition_base_mod',defaultvalue:0,type:'number',affects:['intuition_mod']},
|
|
'intuition_mod':{name:'intuition_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'intuition_proficiency':{name:'intuition_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'jump_base_mod':{name:'jump_base_mod',defaultvalue:0,type:'number',affects:['jump_mod']},
|
|
'jump_mod':{name:'jump_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'jump_proficiency':{name:'jump_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'leadership_base_mod':{name:'leadership_base_mod',defaultvalue:0,type:'number',affects:['leadership_mod']},
|
|
'leadership_mod':{name:'leadership_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'leadership_proficiency':{name:'leadership_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'lift/push_base_mod':{name:'lift/push_base_mod',defaultvalue:0,type:'number',affects:['lift/push_mod']},
|
|
'lift/push_mod':{name:'lift/push_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'lift/push_proficiency':{name:'lift/push_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'negotiation/persuade_base_mod':{name:'negotiation/persuade_base_mod',defaultvalue:0,type:'number',affects:['negotiation/persuade_mod']},
|
|
'negotiation/persuade_mod':{name:'negotiation/persuade_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'negotiation/persuade_proficiency':{name:'negotiation/persuade_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'resist_ko/death_base_mod':{name:'resist_ko/death_base_mod',defaultvalue:0,type:'number',affects:['resist_ko/death_mod']},
|
|
'resist_ko/death_mod':{name:'resist_ko/death_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'resist_ko/death_proficiency':{name:'resist_ko/death_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'resist_distress_base_mod':{name:'resist_distress_base_mod',defaultvalue:0,type:'number',affects:['resist_distress_mod']},
|
|
'resist_distress_mod':{name:'resist_distress_mod',defaultvalue:0,type:'number',affects:[],calculation:actionModCalc},
|
|
'resist_distress_proficiency':{name:'resist_distress_proficiency',defaultvalue:0,type:'number',affects:[]},
|
|
'self-control_base_mod':{name:'self-control_base_mod',defaultvalue:0,type:'number',affects:['self-control_mod']},
|
|
'self-control_mod':{name:'self-control_mod',defaultvalue:0,type:'number',affects:['cognitive_resistance'],calculation:actionModCalc},
|
|
'self-control_proficiency':{name:'self-control_proficiency',defaultvalue:0,type:'number',affects:['cognitive_resistance']},
|
|
|
|
|
|
//Attack Attributes
|
|
repeating_attack_$X_recoil_base:{name:'repeating_attack_$X_recoil_base',defaultValue:0,type:'number',affects:['repeating_attack_$X_recoil']},
|
|
repeating_attack_$X_recoil:{name:'repeating_attack_$X_recoil',defaultValue:0,type:'number',affects:[],calculation:recoilCalc},
|
|
|
|
//Misc
|
|
security_level:{name:'security_level',defaultValue:1,type:'number',affects:[],triggeredFuncs:[styleSecurity]},
|
|
section:{name:'section',defaultValue:'all',type:'text',affects:[],triggeredFuncs:[sectionDisplay]}
|
|
};
|
|
const attributeChecks = abilityScores.reduce((m,attr)=>{
|
|
m[attr]=attr;
|
|
return m;
|
|
},{'melee':'dexterity','assault_rifle':'dexterity','handgun':'dexterity','*heavy_artillery':'dexterity','hunting/sniper_rifle':'dexterity','shotgun':'dexterity','submachine_gun':'dexterity','acting/lie':'charisma','art/music':'intelligence','break_free/escape':'strength','catch/throw':'dexterity','climb':'dexterity','disguise/blend_in':'charisma','drive':'dexterity','lock-picking':'dexterity','pickpocket':'charisma','*pilot':'intelligence','stealth/hide':'dexterity','showmanship':'charisma','swim':'dexterity','teaching':'intelligence','wrestle/disarm':'dexterity','writing':'intelligence','anatomy/first_aid':'intelligence','ancient_languages':'intelligence','architecture':'intelligence','astronomy':'intelligence','caretaking/nurture':'charisma','computer/hacking':'intelligence','cooking':'intelligence','demolitions':'intelligence','fashion/etiquette':'charisma','gambling/gaming':'fate','general_knowledge':'intelligence','history/lore':'intelligence','identify_taste/smell':'perception','investigate':'intelligence','law/politics':'intelligence','mathematics':'intelligence','mechanics':'intelligence','navigate':'intelligence','occult/scp_lore':'intelligence','psychology':'charisma','religion':'intelligence','research/internet':'intelligence','science/physics':'intelligence','survival/tracking':'perception','technology':'intelligence','visual_signals/sign_lang.':'intelligence','awareness/reaction':'perception','dodge/block':'dexterity','animal_ken/tame':'charisma','athletics':'dexterity','empathy':'charisma','endurance':'hth','initiative':'intelligence','intimidate/taunt':'charisma','intuition':'intelligence','jump':'dexterity','leadership':'charisma','lift/push':'strength','negotiation/persuade':'charisma','resist_ko/death':'fate','resist_distress':'willpower','self-control':'willpower','repeating_attack:roll':null,'reroll':null});
|
|
const repeatMonitor = [];
|
|
let toMonitor = Object.keys(cascades).reduce((m,k)=>{
|
|
if(!/repeating/.test(k)){
|
|
m.push(k);
|
|
}else{
|
|
k.replace(/(repeating_[^_]+?)_[^_]+?_(.+)/,(match,section,field)=>{
|
|
repeatMonitor.push(`${section}:${field}`);
|
|
});
|
|
}
|
|
return m;
|
|
},[]);
|
|
const baseGet = ['character_name',...toMonitor];
|
|
toMonitor = [...toMonitor,...repeatMonitor];
|
|
registerEventHandlers();
|
|
log(`Sheet Loaded`); |