(extension version) (line) 5e Library, Version 0.1 \( Requires Signed Math Library 0.3 \) . (line) %% %% Character Property Predicates %% (interface ($Character is level $Level)) (interface ($Character has $Ability score $Score)) (interface ($Character has proficiency in $Skill)) (interface ($Character has expertise in $Skill)) %% %% Game Mechanics Predicates %% (interface (roll $Result)) (interface (ability score $Modifier)) (interface (proficiency bonus at level $ProficencyBonus)) (interface (skill $Ability)) (interface ($Modifier)) (interface (check ability $Result)) (interface (check ability $Result)) (interface (check skill $Result)) (interface (check skill $Result)) (interface (check skill $Result)) (interface (check skill $Result)) %% Roll Dice (roll 0 d $ into []) (roll 1 d $X into [$Y]) (random from 1 to $X into $Y) (roll $X d $Y into [$H|$T]) (roll 1 d $Y into [$H]) ($X minus 1 into $Z) (roll $Z d $Y into $T) %% Ability Score Modifiers (ability score 0 has modifier [- 5]) (ability score 1 has modifier [- 5]) (ability score 2 has modifier [- 4]) (ability score 3 has modifier [- 4]) (ability score 4 has modifier [- 3]) (ability score 5 has modifier [- 3]) (ability score 6 has modifier [- 2]) (ability score 7 has modifier [- 2]) (ability score 8 has modifier [- 1]) (ability score 9 has modifier [- 1]) (ability score 10 has modifier [+ 0]) (ability score 11 has modifier [+ 0]) (ability score 12 has modifier [+ 1]) (ability score 13 has modifier [+ 1]) (ability score 14 has modifier [+ 2]) (ability score 15 has modifier [+ 2]) (ability score 16 has modifier [+ 3]) (ability score 17 has modifier [+ 3]) (ability score 18 has modifier [+ 4]) (ability score 19 has modifier [+ 4]) (ability score 20 has modifier [+ 5]) (ability score 21 has modifier [+ 5]) (ability score 22 has modifier [+ 6]) (ability score 23 has modifier [+ 6]) (ability score 24 has modifier [+ 7]) (ability score 25 has modifier [+ 7]) (ability score 26 has modifier [+ 8]) (ability score 27 has modifier [+ 8]) (ability score 28 has modifier [+ 9]) (ability score 29 has modifier [+ 9]) (ability score 30 has modifier [+ 10]) (ability score $ has modifier [+ 10]) %% Proicieny Bonus (proficiency bonus at level 1 is 2) (proficiency bonus at level 2 is 2) (proficiency bonus at level 3 is 2) (proficiency bonus at level 4 is 2) (proficiency bonus at level 5 is 3) (proficiency bonus at level 6 is 3) (proficiency bonus at level 7 is 3) (proficiency bonus at level 8 is 3) (proficiency bonus at level 9 is 4) (proficiency bonus at level 10 is 4) (proficiency bonus at level 11 is 4) (proficiency bonus at level 12 is 4) (proficiency bonus at level 13 is 5) (proficiency bonus at level 14 is 5) (proficiency bonus at level 15 is 5) (proficiency bonus at level 16 is 5) (proficiency bonus at level 17 is 6) (proficiency bonus at level 18 is 6) (proficiency bonus at level 19 is 6) (proficiency bonus at level 20 is 6) %% Default Skill Abilities (skill @athletics has default ability @strength) (skill @acrobatics has default ability @dexterity) (skill @sleight-of-hand has default ability @dexterity) (skill @stealth has default ability @dexterity) (skill @arcana has default ability @intelligence) (skill @history has default ability @intelligence) (skill @investigation has default ability @intelligence) (skill @nature has default ability @intelligence) (skill @religion has default ability @intelligence) (skill @animal-handling has default ability @wisdom) (skill @insight has default ability @wisdom) (skill @medicine has default ability @wisdom) (skill @perception has default ability @wisdom) (skill @survival has default ability @wisdom) (skill @deception has default ability @charisma) (skill @intimidation has default ability @charisma) (skill @performance has default ability @charisma) (skill @persuasion has default ability @charisma) %% Access Character Ability Score Modifier ($Character has $Ability score modifier $Modifier) ($Character has $Ability score $Score) (ability score $Score has modifier $Modifier) %% Access Character Proficiency Bonus ($Character has proficiency bonus $ProficencyBonus) ($Character is level $Level) (proficiency bonus at level $Level is $ProficencyBonus) %% Ability Checks with (Dis)Advantage (check ability $Ability with @advantage for $Character into $Result) ($Character has $Ability score modifier $Modifier) (roll 2 d 20 into $Rolls) (signed max $Rolls into $Roll) (signed $Roll plus $Modifier into $Result) (check ability $Ability with @disadvantage for $Character into $Result) ($Character has $Ability score modifier $Modifier) (roll 2 d 20 into $Rolls) (signed min $Rolls into $Roll) (signed $Roll plus $Modifier into $Result) (check ability $Ability with $AdvantageList for $Character into $Result) ~(empty $AdvantageList) (if) (@advantage is one of $AdvantageList) (then) (if) (@disadvantage is one of $AdvantageList) (then) (check ability $Ability with [] for $Character into $Result) (else) (check ability $Ability with @advantage for $Character into $Result) (endif) (else) (if) (@disadvantage is one of $AdvantageList) (then) (check ability $Ability with @disadvantage for $Character into $Result) (else) (check ability $Ability with [] for $Character into $Result) (endif) (endif) (check ability $Ability with $ for $Character into $Result) ($Character has $Ability score modifier $Modifier) (roll 1 d 20 into [$Roll]) (signed $Roll plus $Modifier into $Result) %% Ability Checks (check ability $Ability for $Character into $Result) (check ability $Ability with [] for $Character into $Result) %% Skill Checks using Specified Ability with (Dis)Advantage (check skill $Skill using $Ability with $AdvantageList for $Character into $Result) (check ability $Ability with $AdvantageList for $Character into $AbilityCheck) ($Character has proficiency bonus $ProficiencyBonus) (if) ($Character has expertise in $Skill) (then) ($Multiplier = 2) (elseif) ($Character has proficiency in $Skill) (then) ($Multiplier = 1) (else) ($Multiplier = 0) (endif) ($ProficiencyBonus times $Multiplier into $Modifier) (signed $AbilityCheck plus $Modifier into $Result) %% Skill Checks Using Specified Ability (check skill $Skill using $Ability for $Character into $Result) (check skill $Skill using $Ability with [] for $Character into $Result) %% Skill Checks with (Dis)Advantage (check skill $Skill with $AdvantageList for $Character into $Result) (skill $Skill has default ability $Ability) (check skill $Skill using $Ability with $AdvantageList for $Character into $Result) %% Skill Checks (check skill $Skill for $Character into $Result) (check skill $Skill with [] for $Character into $Result)