From 3212fc506304d40062c23eab1d58b342116e8702 Mon Sep 17 00:00:00 2001 From: Timothy Stone Date: Fri, 28 Apr 2017 08:29:17 -0400 Subject: [PATCH 1/4] Paul 'Havoc' Stein WFRP2E character sheet --- WFRP2E-Havoc/README.md | 21 + WFRP2E-Havoc/sheet.json | 8 + WFRP2E-Havoc/splitArgs.js | 56 + WFRP2E-Havoc/wfrp2e-api.js | 1633 ++++++++++++++ WFRP2E-Havoc/wfrp2e-sheet.css | 1685 ++++++++++++++ WFRP2E-Havoc/wfrp2e-sheet.html | 3832 ++++++++++++++++++++++++++++++++ approved.yaml | 5 + 7 files changed, 7240 insertions(+) create mode 100644 WFRP2E-Havoc/README.md create mode 100644 WFRP2E-Havoc/sheet.json create mode 100644 WFRP2E-Havoc/splitArgs.js create mode 100644 WFRP2E-Havoc/wfrp2e-api.js create mode 100644 WFRP2E-Havoc/wfrp2e-sheet.css create mode 100644 WFRP2E-Havoc/wfrp2e-sheet.html diff --git a/WFRP2E-Havoc/README.md b/WFRP2E-Havoc/README.md new file mode 100644 index 0000000000..5534514bb0 --- /dev/null +++ b/WFRP2E-Havoc/README.md @@ -0,0 +1,21 @@ +# Warhammer Fantasy Roleplay 2e Character Sheet +version 0.1-Havoc + +Complete rewrite by Paul "Havoc" Stein! + +## API Scripting Required + +If you are a player, you enjoy the benefits of your GM's Pro account. If your GM does not have a Pro account, consider gifting him/her one. + +### Installing API scripts +As a Pro, do the following: +1. From the My Campaigns, select View Details. +2. From the View Details page, select API Scripts +3. For each script listed below, copy and paste the contents into a New Script window. + +Scripts +1. wfrp2e-api.js +2. splitArgs.js + +Please submit bugs and feature requests to https://github.com/timothystone/roll20-character-sheets. Pull requests are +welcome. diff --git a/WFRP2E-Havoc/sheet.json b/WFRP2E-Havoc/sheet.json new file mode 100644 index 0000000000..96b201486b --- /dev/null +++ b/WFRP2E-Havoc/sheet.json @@ -0,0 +1,8 @@ +{ + "html": "wfrp2e-sheet.html", + "css": "wfrp2e-sheet.css", + "authors": "Paul "Havoc" Stein", + "roll20userid": "55273", + "preview": "wfrp2e-preview-v0.1-havoc.png", + "instructions": "" +} diff --git a/WFRP2E-Havoc/splitArgs.js b/WFRP2E-Havoc/splitArgs.js new file mode 100644 index 0000000000..f9ba5e6d0f --- /dev/null +++ b/WFRP2E-Havoc/splitArgs.js @@ -0,0 +1,56 @@ +var bshields = bshields || {}; +bshields.splitArgs = (function() { + 'use strict'; + + var version = 1.1; + + function splitArgs(input, separator) { + var singleQuoteOpen = false, + doubleQuoteOpen = false, + tokenBuffer = [], + ret = [], + arr = input.split(''), + element, i, matches; + separator = separator || /\s/g; + + for (i = 0; i < arr.length; i++) { + element = arr[i]; + matches = element.match(separator); + if (element === '\'') { + if (!doubleQuoteOpen) { + singleQuoteOpen = !singleQuoteOpen; + continue; + } + } else if (element === '"') { + if (!singleQuoteOpen) { + doubleQuoteOpen = !doubleQuoteOpen; + continue; + } + } + + if (!singleQuoteOpen && !doubleQuoteOpen) { + if (matches) { + if (tokenBuffer && tokenBuffer.length > 0) { + ret.push(tokenBuffer.join('')); + tokenBuffer = []; + } + } else { + tokenBuffer.push(element); + } + } else if (singleQuoteOpen || doubleQuoteOpen) { + tokenBuffer.push(element); + } + } + if (tokenBuffer && tokenBuffer.length > 0) { + ret.push(tokenBuffer.join('')); + } + + return ret; + } + + return splitArgs; +}()); + +String.prototype.splitArgs = String.prototype.splitArgs || function(separator) { + return bshields.splitArgs(this, separator); +}; \ No newline at end of file diff --git a/WFRP2E-Havoc/wfrp2e-api.js b/WFRP2E-Havoc/wfrp2e-api.js new file mode 100644 index 0000000000..d24a7dfa8b --- /dev/null +++ b/WFRP2E-Havoc/wfrp2e-api.js @@ -0,0 +1,1633 @@ +//Properties + +var skillBackgroundImage = "http://i.imgur.com/Vqi7PFt.png"; +var parryBackgroundImage = "http://i.imgur.com/Vqi7PFt.png"; +var magicBackgroundImage = "http://i.imgur.com/Vqi7PFt.png"; +var combatBackgroundImage = "http://i.imgur.com/Vqi7PFt.png"; +var parryBackgroundImage = "http://i.imgur.com/Vqi7PFt.png"; +var initBackgroundImage = "http://i.imgur.com/Vqi7PFt.png"; + +var skillLineImage = "http://i.imgur.com/M0MBhn2.png"; +var parryLineImage = "http://i.imgur.com/M0MBhn2.png"; +var magicLineImage = "http://i.imgur.com/M0MBhn2.png"; +var combatLineImage = "http://i.imgur.com/M0MBhn2.png"; +var parryLineImage = "http://i.imgur.com/M0MBhn2.png"; +var initLineImage = "http://i.imgur.com/M0MBhn2.png"; + +var critSucCombat = 1; //set to 0 to turn off crit success +var critFailCombat = 96; //set to 101 to turn off crit failure + +var attackSymbol = "http://i.imgur.com/ncLRrhy.png"; +var shootSymbol = "http://i.imgur.com/fhnbmUs.png"; +var ulfricSymbol = "http://i.imgur.com/Sbr3wLn.png"; + +var critSucParry = 1; //set to 0 to turn off crit success +var critFailParry = 96; //set to 101 to turn off crit failure +var parrySymbol = "http://i.imgur.com/cdUERe3.png"; + +var critSucSkill = 1; //set to 0 to turn off crit success +var critFailSkill = 96; //set to 101 to turn off crit failure +var skillSymbol = "http://i.imgur.com/yDOLx2R.png"; + +var magicSymbol = "http://i.imgur.com/pusXx1U.png"; + +var initSymbol = "http://i.imgur.com/wQRmIcp.png"; + +var fortunePointBackground = "http://i.imgur.com/B8isZnB.png"; + +/// Templates + +var warhammerCombatTableTemplate = "" + +'' + +'' + +'' + +'' + + + '' + +'' + +'' + +'' + + + +'' + +'' + +'' + +'' + +'' + + +'' + +'' + +'' + + +'' + +'<>' + +'' + +'' + +'<>' + +'' + +'<>' + +'<>' + +'' + + +'
Attack Test<>
' + +'' + +'
<>
' + +'' + +'
Stat : <> %
Attack : <>
'; +var warhammerCombatSuccessTemplate = "Success!"; +var warhammerCombatCriticalSuccessTemplate = "Critical Success!"; +var warhammerCombatFailureTemplate = "Failure!"; +var warhammerCombatCriticalFailureTemplate = "Critical Failure!"; +var warhammerCombatDoSTemplate = "Degree of Success: <>"; +var warhammerCombatDoFTemplate = "Degree of Failure: <>"; +var warhammerCombatHitTemplate = '' + +'' + +'' + +'' + +'' + + '' + +'Hit Location : <> (<>)' + +'' + + '' + +'Damage Modifier : <>' + +'' + + '' + +'Damage : <> (<>)' + +'' + +'<>' + +'<>'; +var warhammerCombatImpactTemplate = '' + +'Damage Impact : <> (<>)' + +''; +var warhammerCombatUlfricFuryTemplate = '' + +'' + +'' + +'' + +'' + + + '' + +'' + +"ULFRIC'S FURY!" + +'' + + '' + +'Crit Confirm : <>' + +'' + +'<>'; +var warhammerCombatCriticalDamage = '' + +'Crit Damage : <> <>' + +'' + + '' + +'Total Damage : <>' + +''; +var warhammerCombatQualitiesTemplate = '' + +'' + +'' + +'' + +'' + + '' + +'Qualities : <>' + +''; +var warhammerCombatRetryTemplate = "Use Fortune Point!"; + +var warhammerCombatUlfricRetryTableTemplate = "" + + + +"" + + +'' + +'' + +'' + + + '' + +'' + +'' + +'' + + +'' + +'' + +'' + + +'' + +'' + +'' + + +'' + +'' + +'' + +'<>' + +'' + + +'
Ulfric's Fury Fortune Point
' + +'' + +'
<>
' + +'' + +'
Stat : <> %
Crit Confirm : <>
'; + + +var warhammerParryTableTemplate = "" + + +"" + + +'' + +'' + +'' + + + '' + +'' + +'' + +'' + + +'' + +'' + +'' + + '' + +'' + +'' + + +'' + +'' + +'' + + +'' + +'<>' + +'' + +'' + +'<>' + +'' + +'<>' + +'' + + +'
Parry Test<>
' + +'' + +'
<>
' + +'' + +'
Stat : <> %
Roll : <>
'; +var warhammerParrySuccessTemplate = "Success!"; +var warhammerParryCriticalSuccessTemplate = "Critical Success!"; +var warhammerParryFailureTemplate = "Failure!"; +var warhammerParryCriticalFailureTemplate = "Critical Failure!"; +var warhammerParryDoSTemplate = "Degree of Success: <>"; +var warhammerParryDoFTemplate = "Degree of Failure: <>"; +var warhammerParryRetryTemplate = "Use Fortune Point!"; + +var warhammerSkillTableTemplate = "" + +'' + +'' + +'' + +'' + + + '' + +'' + +'' + +'' + +'' + +'' + +'' + + '' + +'' + +'' + + +'' + +'' + +'' + + +'' + +'<>' + +'' + +'' + +'<>' + +'' + +'<>' + +'' + + +'
Simple Test<>
' + +'' + +'
<>
' + +'' + +'
Stat : <> %
Roll : <>
'; +var warhammerSkillSuccessTemplate = "Success!"; +var warhammerSkillCriticalSuccessTemplate = "Critical Success!"; +var warhammerSkillFailureTemplate = "Failure!"; +var warhammerSkillCriticalFailureTemplate = "Critical Failure!"; +var warhammerSkillDoSTemplate = "Degree of Success: <>"; +var warhammerSkillDoFTemplate = "Degree of Failure: <>"; +var warhammerSkillRetryTemplate = "Use Fortune Point!"; + +var warhammerMagicTableTemplate = "" + +'' + + +'' + +'' + +'' + + + '' + +'' + +'' + +'' + + +'' + +'' + +'' + + +'<>' + + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + + +'' + +'' + +'' + +'' + +"" + +'' + + +'' + +"" + +'' + + +'' + +'' + +'' + + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'' + +'<>' + +'' + +'<>' + +'' + + +'
Casting Roll
' + +'' + +'
<>
' + +'' + +'
Casting Number : <>
Magic Characteristic : <>
Magic Used : <>
Channel Used : <>
Additional Dice : <>
Modifier to Total : <>
Modifier to Dice : <>
Penalty for Armor : <>
Chaos Dice : <>
Using Dhar : <>
' + +'' + +'
Roll
<>
' + +'' + +'
Casting Number : <>
Total : <>
With Component (+<>) : <>
'; + +var warhammerMagicTextTemplate = '' + +"Description" + +'' + +'' + +"<>" + +'' + + +'' + +"Ingredients" + +'' + +'' + +"<>" + +'' + +'' + + +'' + +"Range" + +'' + +'' + +"<>" + +'' + +'' + + +'' + +"Casting Time" + +'' + +'' + +"<>" + +'' + +'' + + + +'' + +"Duration" + +'' + +'' + +"<>" + +'' + +'' + + +'' + +'' + +'' + +'' + +''; + +var warhammerMagicSuccessTemplate = "Success!"; +var warhammerMagicFailureTemplate = "Failure!"; + +var warhammerMagicDiceTemplate = "<> (<>) <>"; +var warhammerChaosDiceTemplate = "<> <>"; + +var warhammerMagicBadStuffTemplate = '' + +"BAD STUFF HAPPENS!
TZEENTCH'S CURSE / WRATH OF THE GODS!" + +'' + +'' + +'Bad Stuff Roll : <>' + +'' + +'<>'; +var warhammerMagicBadStuffDoublesTemplate = '' + +"DOUBLES!" + +''; + + +var warhammerInitiativeTableTemplate = "" + +'' + +'' + +'' + +'' + + + '' + +'' + +'' + +'' + + +'' + +'' + +'' + + +'' + +'' + +'' + + +'' + +'' + +'' + + +'' + +'' + +'' + + +'' + +'' + +'' + + +'' + +'' + +'' + + +'' + +'' + +'' + + +'' + + +'
Initiative Roll
' + +'' + +'
<>
' + +'' + +'
Agility : <> %
Additional Dice : <> (<>d10)
Modifier : <>
Roll : <>
' + +'' + +'
Total : <>
'; + +///Functions + +function WarhammerCombatDice(char, player, targetnum, mod, moddamage, impact, symbolTest, hidden, title, qualities, whoSent, retried, playerid, lastId) +{ + if (isNaN(symbolTest)) symbolTest = 0; + var addTitle = false; + if (title != null) + { + if (title != "") + { + addTitle = true; + } + } + + var addQualities = false; + if (qualities != null) + { + if (qualities != "") + { + addQualities = true; + } + } + + + if (impact != 0 && impact != 1) + { + impact = 0; + } + var target = Number(targetnum) + Number(mod); + var targetNumber = Number(target); + + if (targetNumber > 99) targetNumber = 99; + if (targetNumber < 1) targetNumber = 1; + + + var tableCreation = warhammerCombatTableTemplate; + if (addTitle == true) + { + tableCreation = tableCreation.replace("<>", title + " "); + } + else + { + tableCreation = tableCreation.replace("<>", "Custom Attack"); + } + tableCreation = tableCreation.replace("<>", targetNumber); + + if (symbolTest == 0) + { + tableCreation = tableCreation.replace("<>", attackSymbol); + } + else + { + tableCreation = tableCreation.replace("<>", shootSymbol); + } + + if (retried == true) + { + tableCreation = tableCreation.replace("<>", " (Fortune Point)"); + } + else + { + tableCreation = tableCreation.replace("<>", ""); + } + + var resulttemp = warhammerCombatFailureTemplate; + + var rollOne = randomInteger(10) - 1; + var rollTwo = randomInteger(10) - 1; + + var sum = (rollOne * 10) + rollTwo; + if (sum == 0) sum = 100; + var succ = false; + var color = "red"; + if (sum <= targetNumber) + { + succ = true; + color = "green"; + resulttemp = warhammerCombatSuccessTemplate; + } + if (sum <= critSucCombat) + { + resulttemp = warhammerCombatCriticalSuccessTemplate; + } + if (sum >= critFailCombat) + { + succ = false; + color = "red"; + resulttemp = warhammerCombatCriticalFailureTemplate; + } + + tableCreation = tableCreation.replace("<>", color); + tableCreation = tableCreation.replace("<>", sum); + + var MoS = 0; + if (sum > targetNumber) + { + MoS = sum - targetNumber; + } + else + { + MoS = targetNumber - sum; + } + + if (succ == true) + { + tableCreation = tableCreation.replace("<>", warhammerCombatDoSTemplate); + } + else + { + tableCreation = tableCreation.replace("<>", warhammerCombatDoFTemplate); + } + tableCreation = tableCreation.replace("<>", Math.floor(MoS/10)); + + tableCreation = tableCreation.replace("<>", resulttemp); + + if (succ == false) + { + if (retried == false) + { + tableCreation = tableCreation.replace("<>", warhammerCombatRetryTemplate); + if (addQualities == false) qualities = "None"; + if (addTitle == false) title = "Custom Attack"; + tableCreation = tableCreation.replace("<>", "!wardmgrollretryattack ;" + char + ";" + player + ";" + targetnum + ";" + mod + ";" + moddamage + ";" + impact + ";" + symbolTest + ";" + hidden + ";" + title + ";" + qualities + ";" + whoSent + ";" + true + ";" + playerid + ";" + lastId); + } + else + { + tableCreation = tableCreation.replace("<>", ""); + } + } + + if (succ == true) + { + tableCreation = tableCreation.replace("<>", warhammerCombatHitTemplate); + + var sum2 = (rollTwo * 10) + rollOne; + if (sum2 == 0) sum2 = 100; + + var locationHit = ""; + if (sum2 >= 91) + { + locationHit = "Left Leg"; + } + else if (sum2 >= 81) + { + locationHit = "Right Leg"; + } + else if (sum2 >= 56) + { + locationHit = "Body"; + } + else if (sum2 >= 36) + { + locationHit = "Left Arm"; + } + else if (sum2 >= 16) + { + locationHit = "Right Arm"; + } + else + { + locationHit = "Head"; + } + + tableCreation = tableCreation.replace("<>", locationHit); + tableCreation = tableCreation.replace("<>", sum2); + + + var damage1 = randomInteger(10); + var damage2 = -1; + if (impact == 1) + { + damage2 = randomInteger(10); + } + var main_damage = damage1; + if (damage2 > damage1) + { + main_damage = damage2; + } + + main_damage = main_damage + Number(moddamage); + + var ulric = false; + if (damage1 == 10 || damage2 == 10) + { + ulric = true; + } + + var tempdamage = damage1 + Number(moddamage); + + if (Number(moddamage) > 0) + { + tableCreation = tableCreation.replace("<>", "+<>"); + } + else if (Number(moddamage) < 0) + { + tableCreation = tableCreation.replace("<>", "-<>"); + } + + tableCreation = tableCreation.replace("<>", moddamage); + + tableCreation = tableCreation.replace("<>", tempdamage); + tableCreation = tableCreation.replace("<>", damage1); + + if (impact == 1) + { + tableCreation = tableCreation.replace("<>", warhammerCombatImpactTemplate); + + tempdamage = damage2 + Number(moddamage); + + tableCreation = tableCreation.replace("<>", tempdamage); + tableCreation = tableCreation.replace("<>", damage2); + } + else + { + tableCreation = tableCreation.replace("<>", ""); + } + + if (ulric == true) + { + tableCreation = tableCreation.replace("<>", warhammerCombatUlfricFuryTemplate); + + if(damage1 == 10) tableCreation = tableCreation.replace("<>", "green"); + else tableCreation = tableCreation.replace("<>", "black"); + + if(damage2 == 10) tableCreation = tableCreation.replace("<>", "green"); + else tableCreation = tableCreation.replace("<>", "black"); + + var rollConfirmCrit = randomInteger(100); + + var colorConfirm = "red"; + + if (rollConfirmCrit <= targetNumber) + { + colorConfirm = "green"; + + tableCreation = tableCreation.replace("<>", warhammerCombatCriticalDamage); + + var tempCritDamage = randomInteger(10); + var tempTotalCritDamage = tempCritDamage; + var rolledstr = "(" + tempCritDamage; + if (tempCritDamage == 10) rolledstr +="!"; + while(tempCritDamage == 10) + { + tempCritDamage = randomInteger(10); + tempTotalCritDamage = tempTotalCritDamage + tempCritDamage; + rolledstr += "," + tempCritDamage; + if (tempCritDamage == 10) rolledstr +="!"; + } + rolledstr += ")"; + main_damage = main_damage + tempTotalCritDamage; + + tableCreation = tableCreation.replace("<>", tempTotalCritDamage); + tableCreation = tableCreation.replace("<>", rolledstr); + tableCreation = tableCreation.replace("<>", main_damage); + } + else + { + tableCreation = tableCreation.replace("<>", warhammerCombatRetryTemplate); + tableCreation = tableCreation.replace("<>", "!wardmgrollretrycrit ;" + char + ";" + player + ";" + targetNumber + ";" + main_damage + ";" + hidden + ";" + whoSent + ";" + title + ";" + playerid + ";" + lastId); + } + + tableCreation = tableCreation.replace("<>", rollConfirmCrit); + tableCreation = tableCreation.replace("<>", colorConfirm); + } + else + { + tableCreation = tableCreation.replace("<>", ""); + tableCreation = tableCreation.replace("<>", "black"); + tableCreation = tableCreation.replace("<>", "black"); + } + } + + if (addQualities == true) + { + tableCreation = tableCreation.replace("<>", warhammerCombatQualitiesTemplate); + tableCreation = tableCreation.replace("<>", qualities); + } + else + { + tableCreation = tableCreation.replace("<>", ""); + } + + if (hidden==2) + { + var tempText = "/w " + whoSent + " "+tableCreation; + if (player==1) sendChat("player|"+char, tempText); + else sendChat("character|"+char, tempText); + } + if (hidden >= 1) tableCreation = "/w gm " + tableCreation; + if (player==1) sendChat("player|"+char, tableCreation); + else sendChat("character|"+char, tableCreation); + +}; + +function WarhammerCombatDiceRetryCrit(char, player, targetNumber, main_damage, hidden, whoSent, title) +{ + var tableCreation = warhammerCombatUlfricRetryTableTemplate; + var addTitle = false; + if (title != null) + { + if (title != "") + { + addTitle = true; + } + } + if (addTitle == true) + { + tableCreation = tableCreation.replace("<>", title + " "); + } + else + { + tableCreation = tableCreation.replace("<>", "Custom Attack"); + } + tableCreation = tableCreation.replace("<>", ulfricSymbol); + tableCreation = tableCreation.replace("<>", targetNumber); + var rollConfirmCrit = randomInteger(100); + main_damage = Number(main_damage); + var colorConfirm = "red"; + + if (rollConfirmCrit <= targetNumber) + { + colorConfirm = "green"; + + tableCreation = tableCreation.replace("<>", warhammerCombatCriticalDamage); + + var tempCritDamage = randomInteger(10); + var tempTotalCritDamage = tempCritDamage; + var rolledstr = "(" + tempCritDamage; + if (tempCritDamage == 10) rolledstr +="!"; + while(tempCritDamage == 10) + { + tempCritDamage = randomInteger(10); + tempTotalCritDamage = tempTotalCritDamage + tempCritDamage; + rolledstr += "," + tempCritDamage; + if (tempCritDamage == 10) rolledstr +="!"; + } + rolledstr += ")" + main_damage = main_damage + tempTotalCritDamage; + + tableCreation = tableCreation.replace("<>", tempTotalCritDamage); + tableCreation = tableCreation.replace("<>", rolledstr); + tableCreation = tableCreation.replace("<>", main_damage); + } + else + { + tableCreation = tableCreation.replace("<>", ""); + } + + tableCreation = tableCreation.replace("<>", rollConfirmCrit); + tableCreation = tableCreation.replace("<>", colorConfirm); + + if (hidden==2) + { + var tempText = "/w " + whoSent + " "+tableCreation; + if (player==1) sendChat("player|"+char, tempText); + else sendChat("character|"+char, tempText); + } + if (hidden >= 1) tableCreation = "/w gm " + tableCreation; + if (player==1) sendChat("player|"+char, tableCreation); + else sendChat("character|"+char, tableCreation); + +}; + +function WarhammerParryDice(char, player, targetnum, mod, hidden, title, whoSent, retried, playerid, lastId) +{ + var addTitle = false; + if (title != null) + { + if (title != "") + { + addTitle = true; + } + } + var target = Number(targetnum) + Number(mod); + var targetNumber = Number(target); + + if (targetNumber > 99) targetNumber = 99; + if (targetNumber < 1) targetNumber = 1; + + + var tableCreation = warhammerParryTableTemplate; + if (addTitle == true) + { + tableCreation = tableCreation.replace("<>", title + " "); + } + else + { + tableCreation = tableCreation.replace("<>", "Custom Parry"); + } + if ( Boolean(retried) == true) + { + tableCreation = tableCreation.replace("<>", " (Fortune's Point)"); + } + else + { + tableCreation = tableCreation.replace("<>", ""); + } + + tableCreation = tableCreation.replace("<>", targetNumber); + var resulttemp = warhammerParryFailureTemplate; + + var rollOne = randomInteger(10) - 1; + var rollTwo = randomInteger(10) - 1; + + var sum = (rollOne * 10) + rollTwo; + if (sum == 0) sum = 100; + var succ = false; + var color = "red"; + if (sum <= targetNumber) + { + succ = true; + color = "green"; + resulttemp = warhammerParrySuccessTemplate; + } + if (sum <= critSucParry) + { + resulttemp = warhammerParryCriticalSuccessTemplate; + } + if (sum >= critFailParry) + { + succ = false; + color = "red"; + resulttemp = warhammerParryCriticalFailureTemplate; + } + + tableCreation = tableCreation.replace("<>", color); + tableCreation = tableCreation.replace("<>", sum); + + var MoS = 0; + if (sum > targetNumber) + { + MoS = sum - targetNumber; + } + else + { + MoS = targetNumber - sum; + } + + if (succ == true) + { + tableCreation = tableCreation.replace("<>", warhammerParryDoSTemplate); + } + else + { + tableCreation = tableCreation.replace("<>", warhammerParryDoFTemplate); + } + tableCreation = tableCreation.replace("<>", Math.floor(MoS/10)); + + tableCreation = tableCreation.replace("<>", resulttemp); + + if (succ == false && Boolean(retried) == false) + { + tableCreation = tableCreation.replace("<>", warhammerParryRetryTemplate); + tableCreation = tableCreation.replace("<>", "!warparryrollretry ;" + char + ";" + player + ";" + targetnum + ";" + mod + ";" + hidden + ";" + title + ";" + whoSent + ";true" + ";" + playerid + ";" + lastId); + } + else + { + tableCreation = tableCreation.replace("<>", ""); + } + + if (hidden==2) + { + var tempText = "/w " + whoSent + " "+tableCreation; + if (player==1) sendChat("player|"+char, tempText); + else sendChat("character|"+char, tempText); + } + if (hidden >= 1) tableCreation = "/w gm " + tableCreation; + if (player==1) sendChat("player|"+char, tableCreation); + else sendChat("character|"+char, tableCreation); + +}; + +function WarhammerDice(char, player, targetnum, mod, hidden, title, whoSent, retried, playerid, lastId) +{ + var addTitle = false; + if (title != null) + { + if (title != "") + { + addTitle = true; + } + } + var target = Number(targetnum) + Number(mod); + var targetNumber = Number(target); + + if (targetNumber > 99) targetNumber = 99; + if (targetNumber < 1) targetNumber = 1; + + + var tableCreation = warhammerSkillTableTemplate; + if (addTitle == true) + { + tableCreation = tableCreation.replace("<>", title + " "); + } + else + { + tableCreation = tableCreation.replace("<>", "Custom Roll"); + } + if ( Boolean(retried) == true) + { + tableCreation = tableCreation.replace("<>", " (Fortune's Point)"); + } + else + { + tableCreation = tableCreation.replace("<>", ""); + } + tableCreation = tableCreation.replace("<>", targetNumber); + var resulttemp = warhammerSkillFailureTemplate; + + var rollOne = randomInteger(10) - 1; + var rollTwo = randomInteger(10) - 1; + + var sum = (rollOne * 10) + rollTwo; + if (sum == 0) sum = 100; + var succ = false; + var color = "red"; + if (sum <= targetNumber) + { + succ = true; + color = "green"; + resulttemp = warhammerSkillSuccessTemplate; + } + if (sum <= critSucSkill) + { + resulttemp = warhammerSkillCriticalSuccessTemplate; + } + if (sum >= critFailSkill) + { + succ = false; + color = "red"; + resulttemp = warhammerSkillCriticalFailureTemplate; + } + + tableCreation = tableCreation.replace("<>", color); + tableCreation = tableCreation.replace("<>", sum); + + var MoS = 0; + if (sum > targetNumber) + { + MoS = sum - targetNumber; + } + else + { + MoS = targetNumber - sum; + } + + if (succ == true) + { + tableCreation = tableCreation.replace("<>", warhammerSkillDoSTemplate); + } + else + { + tableCreation = tableCreation.replace("<>", warhammerSkillDoFTemplate); + } + tableCreation = tableCreation.replace("<>", Math.floor(MoS/10)); + + tableCreation = tableCreation.replace("<>", resulttemp); + + if (succ == false && retried == false) + { + tableCreation = tableCreation.replace("<>", warhammerSkillRetryTemplate); + tableCreation = tableCreation.replace("<>", "!warrollretry ;" + char + ";" + player + ";" + targetnum + ";" + mod + ";" + hidden + ";" + title + ";" + whoSent + ";true;" + playerid + ";" + lastId); + } + else + { + tableCreation = tableCreation.replace("<>", ""); + } + + if (hidden==2) + { + var tempText = "/w " + whoSent + " "+tableCreation; + if (player==1) sendChat("player|"+char, tempText); + else sendChat("character|"+char, tempText); + } + if (hidden >= 1) tableCreation = "/w gm " + tableCreation; + if (player==1) sendChat("player|"+char, tableCreation); + else sendChat("character|"+char, tableCreation); + +}; + +function WarhammerInitiative(char, player, agility, adddice, mod, hidden, name, whoSent) +{ + var addName = false; + if (name != null) + { + if (name != "") + { + addName = true; + } + } + + agility = Number(agility); + adddice = Number(adddice); + mod = Number(mod); + + if (adddice < 0) + { + adddice = 0; + } + + var tableCreation = warhammerInitiativeTableTemplate; + if (addName == true) + { + tableCreation = tableCreation.replace("<>", name); + } + else + { + tableCreation = tableCreation.replace("<>", "NPC"); + } + + tableCreation = tableCreation.replace("<>", agility); + + var initTotal = 0; + var initRoll = randomInteger(10); + initTotal += initRoll; + + tableCreation = tableCreation.replace("<>", initRoll); + var initSumAddSum = 0; + + if (adddice > 0) + { + for (i = 0; i < adddice; i++) + { + initSumAddSum += randomInteger(10); + } + } + + initTotal += initSumAddSum; + + tableCreation = tableCreation.replace("<>", adddice); + tableCreation = tableCreation.replace("<>", initSumAddSum); + + initTotal += mod; + tableCreation = tableCreation.replace("<>", mod); + + initTotal += agility; + tableCreation = tableCreation.replace("<>", initTotal); + + var turnorder; + if (Campaign().get("turnorder") == "") + { + turnorder = []; + } + else + turnorder = JSON.parse(Campaign().get("turnorder")); + + turnorder.push({ + id: "-1", + pr: initTotal, + custom: name + }); + + Campaign().set("turnorder", JSON.stringify(turnorder)); + + if (hidden==2) + { + var tempText = "/w " + whoSent + " "+tableCreation; + if (player==1) sendChat("player|"+char, tempText); + else sendChat("character|"+char, tempText); + } + if (hidden >= 1) tableCreation = "/w gm " + tableCreation; + if (player==1) sendChat("player|"+char, tableCreation); + else sendChat("character|"+char, tableCreation); + +}; + +function WarhammerMagicDice(char, player, magic, magicmax, channel, gooddice, modtototal, modtodice, armorpenal, chaosdice, dhar, componentvalue, hidden, spellnumber, includetext, spellname, spelldesc, spellcomponent, spelltime, spellduration, spellrange, spellimage, whoSent) +{ + if (!spellname) + { + spellname = "Custom Spell"; + } + if (!spelldesc) + { + spelldesc = "?"; + } + if (spelldesc == "") spelldesc = "?"; + + if (!spellcomponent) + { + spellcomponent = "?"; + } + if (spellcomponent == "") spellcomponent = "?"; + + if (!spellimage) + { + spellimage = magicSymbol; + } + + if (!spelltime) + { + spelltime = "?"; + } + if (spelltime == "") spelltime = "?"; + + if (!spellduration) + { + spellduration = "?"; + } + if (spellduration == "") spellduration = "?"; + + if (!spellrange) + { + spellrange = "?"; + } + if (spellrange == "") spellrange = "?"; + + dhar = Number(dhar); + if (dhar != 0 && dhar != 1) + { + dhar = 0; + } + + componentvalue = Number(componentvalue); + if (componentvalue < 0) + { + componentvalue = 0; + } + + magic = Number(magic); + if (magic < 1) magic = 1; + + magicmax = Number(magicmax); + if (magicmax < 0) magicmax = 1; + + if (magicmax < magic) magic = magicmax; + + if (channel != 1 && channel != 0) channel = 0; + if (includetext != 1 && includetext != 0) includetext = 0; + + modtototal = Number(modtototal); + modtodice = Number(modtodice); + armorpenal = Number(armorpenal); + gooddice = Number(gooddice); + if (gooddice < 0) gooddice = 0; + + chaosdice = Number(chaosdice); + if (chaosdice < 0) chaosdice = 0; + + spellnumber = Number(spellnumber); + if (spellnumber < 1) spellnumber = 1; + + var tableCreation = warhammerMagicTableTemplate; + + tableCreation = tableCreation.replace("<>", spellname); + tableCreation = tableCreation.replace("<>", spellimage); + + if (includetext == 1) + { + tableCreation = tableCreation.replace("<>", warhammerMagicTextTemplate); + tableCreation = tableCreation.replace("<>", spelldesc); + tableCreation = tableCreation.replace("<>", spellcomponent); + tableCreation = tableCreation.replace("<>", spellrange); + tableCreation = tableCreation.replace("<>", spelltime); + tableCreation = tableCreation.replace("<>", spellduration); + } + else + { + tableCreation = tableCreation.replace("<>", ""); + } + + tableCreation = tableCreation.replace("<>", spellnumber); + tableCreation = tableCreation.replace("<>", spellnumber); + tableCreation = tableCreation.replace("<>", magicmax); + tableCreation = tableCreation.replace("<>", magic); + tableCreation = tableCreation.replace("<>", gooddice); + + var channelstr = ""; + if (channel == 0) channelstr = "No"; + else channelstr = "Yes (+" + magicmax + ")"; + + tableCreation = tableCreation.replace("<>", channelstr); + tableCreation = tableCreation.replace("<>", modtototal); + tableCreation = tableCreation.replace("<>", modtodice); + tableCreation = tableCreation.replace("<>", armorpenal); + tableCreation = tableCreation.replace("<>", chaosdice); + if (dhar == 1) + { + tableCreation = tableCreation.replace("<>", "Yes"); + } + else + { + tableCreation = tableCreation.replace("<>", "No"); + } + + var diceResults = []; + var numberDice = gooddice + magic + dhar; + var rollSum = 0; + var lowestRoll = 0; + + for (var i = 0; i < numberDice; i++) + { + var roll = randomInteger(10); + diceResults.push(roll); + if (lowestRoll >= roll) lowestRoll = roll; + if (lowestRoll == 0) lowestRoll = roll; + rollSum += roll + modtodice; + tableCreation = tableCreation.replace("<>", warhammerMagicDiceTemplate); + tableCreation = tableCreation.replace("<>", (roll + modtodice)); + tableCreation = tableCreation.replace("<>", roll); + + if ((diceResults.length % 3) == 0) tableCreation = tableCreation.replace("<>", "
<>"); + } + + if (dhar == 1) + { + rollSum -= lowestRoll; + tableCreation = tableCreation.replace("<>", "
Dhar, not counting roll: " + lowestRoll.toString() + "<>"); + } + + if (chaosdice > 0) tableCreation = tableCreation.replace("<>", "
<>"); + + for (var i = 0; i < chaosdice; i++) + { + var roll = randomInteger(10); + diceResults.push(roll); + tableCreation = tableCreation.replace("<>", warhammerChaosDiceTemplate); + tableCreation = tableCreation.replace("<>", roll); + if (((i+1) % 3) == 0) tableCreation = tableCreation.replace("<>", "
<>"); + } + + tableCreation = tableCreation.replace("<>", ""); + + rollSum += armorpenal; + rollSum += modtototal; + if (channel == 1) rollSum += magicmax; + + var dup = false + if (diceResults.length > 1) + { + var sorted_arr = diceResults.slice().sort(); + for (var i = 0; i < diceResults.length - 1; i++) + { + if (sorted_arr[i + 1] == sorted_arr[i]) + { + dup = true; + break; + } + } + } + + if (dup == true) + { + tableCreation = tableCreation.replace("<>", warhammerMagicBadStuffTemplate); + var badroll = randomInteger(100); + tableCreation = tableCreation.replace("<>", badroll); + if ((badroll % 11) == 0) + { + tableCreation = tableCreation.replace("<>", warhammerMagicBadStuffDoublesTemplate); + } + else + { + tableCreation = tableCreation.replace("<>", ""); + } + } + else + { + tableCreation = tableCreation.replace("<>", ""); + } + + if (rollSum >= spellnumber) + { + tableCreation = tableCreation.replace("<>", warhammerMagicSuccessTemplate); + } + else + { + tableCreation = tableCreation.replace("<>", warhammerMagicFailureTemplate); + } + + tableCreation = tableCreation.replace("<>", rollSum); + + var sumcomponent = componentvalue + rollSum; + + tableCreation = tableCreation.replace("<>", componentvalue); + tableCreation = tableCreation.replace("<>", sumcomponent); + + if (hidden==2) + { + var tempText = "/w " + whoSent + " "+tableCreation; + if (player==1) sendChat("player|"+char, tempText); + else sendChat("character|"+char, tempText); + } + if (hidden >= 1) tableCreation = "/w gm " + tableCreation; + if (player==1) sendChat("player|"+char, tableCreation); + else sendChat("character|"+char, tableCreation); + +}; + +on("chat:message", function(msg) { + if ( msg.type != 'api' ) return; + var cmd = ""; + if (_.has(msg, 'inlinerolls')) { + cmd = _.chain(msg.inlinerolls) + .reduce(function(previous, current, index) { + previous['$[[' + index + ']]'] = current.results.total || 0; + return previous; + },{}) + .reduce(function(previous, current, index) { + return previous.replace(index, current); + }, msg.content) + .value(); + } else { + cmd = msg.content; + } + var cmd = cmd.toLowerCase().split(' '); + if ( cmd[0] == "!warroll" ) + { + var inputName = msg.who; + var list = findObjs( { + _type: "character", + name: inputName + }); + + var cmd2 = msg.content.split(' '); + var str = ""; + for (i = 4; i < cmd2.length; i++) + { + str = str + " " + cmd2[i]; + } + str = str.substring(1); + + var roll = 0; + if (isNaN(cmd[1]) == false) + { + roll = cmd[1]; + } + else + { + msg.inlinerolls + } + + if (_.has(state.WarhammerDiceStatus.playerDiceLastRoll, msg.playerid)) + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId = (Math.random() + 1).toString(36).substring(7);; + } + else + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid] = { LastRollId: (Math.random() + 1).toString(36).substring(7)} + } + + if (list.length == 0) + { + WarhammerDice( msg.playerid, 1, cmd[1], cmd[2], cmd[3], str, inputName, false, msg.playerid, state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId); + } + else + { + WarhammerDice( list[0].id, 0, cmd[1], cmd[2], cmd[3], str, inputName, false, msg.playerid, state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId); + } + } + else if ( cmd[0] == "!warmagicroll" ) + { + var inputName = msg.who; + var list = findObjs( { + _type: "character", + name: inputName + }); + + var cmd2 = msg.content.split(' '); + var str = ""; + for (i = 14; i < cmd2.length; i++) + { + str = str + " " + cmd2[i]; + } + str = str.substring(1); + + var spelldesc = str.splitArgs(); + + if (_.has(state.WarhammerDiceStatus.playerDiceLastRoll, msg.playerid)) + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId = (Math.random() + 1).toString(36).substring(7);; + } + else + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid] = { LastRollId: (Math.random() + 1).toString(36).substring(7)} + } + + var roll = 0; + if (isNaN(cmd[1]) == false) + { + roll = cmd[1]; + } + else + { + msg.inlinerolls + } + if (list.length == 0) + { + //magic, magicmax, channel, gooddice, modtototal, modtodice, armorpenal, chaosdice, dhar, componentvalue, hidden, spellnumber, spellname, spelldesc, spellcomponent, spelltime, spellduration, spellrange, spellimage, whoSent) + WarhammerMagicDice( msg.playerid, 1, cmd[1], cmd[2], cmd[3], cmd[4], cmd[5], cmd[6], cmd[7], cmd[8], cmd[9], cmd[10], cmd[11], cmd[12], cmd[13], spelldesc[0], spelldesc[1], spelldesc[2], spelldesc[3], spelldesc[4], spelldesc[5], spelldesc[6], inputName); + } + else + { + //magic, magicmax, channel, gooddice, modtototal, modtodice, armorpenal, chaosdice, dhar, componentvalue, hidden, spellnumber, spellname, spelldesc, spellcomponent, spelltime, spellduration, spellrange, spellimage, whoSent) + WarhammerMagicDice( list[0].id, 0, cmd[1], cmd[2], cmd[3], cmd[4], cmd[5], cmd[6], cmd[7], cmd[8], cmd[9], cmd[10], cmd[11], cmd[12], cmd[13], spelldesc[0], spelldesc[1], spelldesc[2], spelldesc[3], spelldesc[4], spelldesc[5], spelldesc[6], inputName); + } + } + else if ( cmd[0] == "!warinitroll" ) + { + var inputName = msg.who; + var list = findObjs( { + _type: "character", + name: inputName + }); + + var cmd2 = msg.content.split(' '); + var str = ""; + for (i = 5; i < cmd2.length; i++) + { + str = str + " " + cmd2[i]; + } + str = str.substring(1); + + + if (_.has(state.WarhammerDiceStatus.playerDiceLastRoll, msg.playerid)) + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId = (Math.random() + 1).toString(36).substring(7);; + } + else + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid] = { LastRollId: (Math.random() + 1).toString(36).substring(7)} + } + + var roll = 0; + if (isNaN(cmd[1]) == false) + { + roll = cmd[1]; + } + else + { + msg.inlinerolls + } + if (list.length == 0) + { + WarhammerInitiative( msg.playerid, 1, cmd[1], cmd[2], cmd[3], cmd[4], str, inputName); + } + else + { + WarhammerInitiative( list[0].id, 0, cmd[1], cmd[2], cmd[3], cmd[4], str, inputName); + } + } + else if ( cmd[0] == "!warparryroll" ) + { + var inputName = msg.who; + var list = findObjs( { + _type: "character", + name: inputName + }); + + var cmd2 = msg.content.split(' '); + var str = ""; + for (i = 4; i < cmd2.length; i++) + { + str = str + " " + cmd2[i]; + } + str = str.substring(1); + + if (_.has(state.WarhammerDiceStatus.playerDiceLastRoll, msg.playerid)) + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId = (Math.random() + 1).toString(36).substring(7);; + } + else + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid] = { LastRollId: (Math.random() + 1).toString(36).substring(7)} + } + var roll = 0; + if (isNaN(cmd[1]) == false) + { + roll = cmd[1]; + } + else + { + msg.inlinerolls + } + if (list.length == 0) + { + WarhammerParryDice( msg.playerid, 1, cmd[1], cmd[2], cmd[3], str, inputName, false, msg.playerid, state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId); + } + else + { + WarhammerParryDice( list[0].id, 0, cmd[1], cmd[2], cmd[3], str, inputName, false, msg.playerid, state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId); + } + } + else if ( cmd[0] == "!wardmgroll" ) + { + var inputName = msg.who; + var list = findObjs( { + _type: "character", + name: inputName + }); + + var cmd2 = msg.content.split(' '); + var str = ""; + for (i = 7; i < cmd2.length; i++) + { + str = str + " " + cmd2[i]; + } + str = str.substring(1); + + if (_.has(state.WarhammerDiceStatus.playerDiceLastRoll, msg.playerid)) + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId = (Math.random() + 1).toString(36).substring(7);; + } + else + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid] = { LastRollId: (Math.random() + 1).toString(36).substring(7)} + } + var attackNameAndQualities = str.splitArgs(); + + var roll = 0; + if (isNaN(cmd[1]) == false) + { + roll = cmd[1]; + } + else + { + msg.inlinerolls + } + if (list.length == 0) + { + WarhammerCombatDice( msg.playerid, 1, cmd[1], cmd[2], cmd[3], cmd[4], cmd[5], cmd[6], attackNameAndQualities[0], attackNameAndQualities[1], inputName, false, msg.playerid, state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId); + } + else + { + WarhammerCombatDice( list[0].id, 0, cmd[1], cmd[2], cmd[3], cmd[4], cmd[5], cmd[6], attackNameAndQualities[0], attackNameAndQualities[1], inputName, false, msg.playerid, state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId); + } + } + else if (cmd[0] == "!warrollretry" && _.has(state.WarhammerDiceStatus.playerDiceLastRoll, msg.playerid)) + { + var retryArgs = msg.content.splitArgs(";"); + if (retryArgs[9] == msg.playerid && state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId == retryArgs[10]) + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId = (Math.random() + 1).toString(36).substring(7); + WarhammerDice( retryArgs[1], retryArgs[2], retryArgs[3], retryArgs[4], retryArgs[5], retryArgs[6], retryArgs[7], retryArgs[8]); + } + } + else if (cmd[0] == "!wardmgrollretryattack" && _.has(state.WarhammerDiceStatus.playerDiceLastRoll, msg.playerid)) + { + var retryArgs = msg.content.splitArgs(";"); + if (retryArgs[13] == msg.playerid && state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId == retryArgs[14]) + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId = (Math.random() + 1).toString(36).substring(7); + WarhammerCombatDice( retryArgs[1], retryArgs[2], retryArgs[3], retryArgs[4], retryArgs[5], retryArgs[6], retryArgs[7], retryArgs[8], retryArgs[9], retryArgs[10], retryArgs[11], retryArgs[12]); + } + } + else if (cmd[0] == "!wardmgrollretrycrit" && _.has(state.WarhammerDiceStatus.playerDiceLastRoll, msg.playerid)) + { + var retryArgs = msg.content.splitArgs(";"); + if (retryArgs[8] == msg.playerid && state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId == retryArgs[9]) + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId = (Math.random() + 1).toString(36).substring(7); + WarhammerCombatDiceRetryCrit( retryArgs[1], retryArgs[2], retryArgs[3], retryArgs[4], retryArgs[5], retryArgs[6], retryArgs[7]); + } + } + else if (cmd[0] == "!warparryrollretry" && _.has(state.WarhammerDiceStatus.playerDiceLastRoll, msg.playerid)) + { + var retryArgs = msg.content.splitArgs(";"); + if (retryArgs[9] == msg.playerid && state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId == retryArgs[10]) + { + state.WarhammerDiceStatus.playerDiceLastRoll[msg.playerid].LastRollId = (Math.random() + 1).toString(36).substring(7); + WarhammerParryDice( retryArgs[1], retryArgs[2], retryArgs[3], retryArgs[4], retryArgs[5], retryArgs[6], retryArgs[7], retryArgs[8]); + } + } + + +}); + +on('ready',function() { + "use strict"; + + if( ! state.WarhammerDiceStatus ) { + state.WarhammerDiceStatus = { + playerDiceLastRoll: {} + }; + } + +}); \ No newline at end of file diff --git a/WFRP2E-Havoc/wfrp2e-sheet.css b/WFRP2E-Havoc/wfrp2e-sheet.css new file mode 100644 index 0000000000..798062f0f2 --- /dev/null +++ b/WFRP2E-Havoc/wfrp2e-sheet.css @@ -0,0 +1,1685 @@ +.charsheet div.sheet-clear { + clear:both; +} + +input.sheet-tab:not(:first-child)::before{ + border-left: none; +} + +div.sheet-tab-content{ + /* border: 1px solid #a8a8a8; + border-top-color: #000;*/ + margin: -20px 0 0 5px; + padding: 5px 5px 15px 5px; +} + +.charsheet h1,h3 { + text-align: center; +} + +.charsheet label { + display: inline; + width: 88px; + padding-bottom: 0px; +} + +.charsheet input { + display: inline; + width: 150px; +} + + +.charsheet { + cursor: url(http://i.imgur.com/FaqICyL.png), auto; + font-family: TimesNewRoman, "Times New Roman", Times, Baskerville, Georgia, serif; + background-color: white; + background-image:url(http://i.imgur.com/tvL2wH0.png); + background-size: 25%; + background-repeat: repeat; + border-style: solid; +border-width: 20px; +-moz-border-image: url(http://i.imgur.com/ONlmPf7.png) 25 repeat; +-webkit-border-image: url(http://i.imgur.com/ONlmPf7.png) 25 repeat; +-o-border-image: url(http://i.imgur.com/ONlmPf7.png) 25 repeat; +border-image: url(http://i.imgur.com/ONlmPf7.png) 25 repeat; +} + +.charsheet select { + width: 40px; + height: 20px; + margin:0px 0px 0px 0px; + padding: 0px 0px 0px 0px; +} +div.sheet-all{ + width: 100% +} + +div.sheet-bname { + width: 11%; +} +div.sheet-binput { + width: 20%; +} + +input.sheet-binput { + width: 100%; +} + +.charsheet h4{ + margin-top: 3px; +} + +div.sheet-attname{ +} +div.sheet-attdots{ + margin:0px 0px 0px 10px; + line-height: 22px; +} + +div.sheet-abiname{ + line-height: 20px; +} +div.sheet-abidots{ + margin:0px 0px 0px 5px; + line-height: 21px; +} + +div.sheet-inputname { + width: 145px; + padding-left: 10px; +} +div.sheet-inputdots { + width: 120px; + text-align: right; + line-height:28px; +} +input.sheet-checkStory + span::before{ + margin-right: 1px; + border: solid 1px #a8a8a8; + line-height: 14px; + text-align: center; + display: inline-block; + position: relative; + vertical-align: bottom; +} + +input.sheet-inputname{ + height: 20px; + width: 100%; +} + +div.sheet-spec{ + margin:0px 0px 0px -5px; + line-height: 20px; + width: 10%; +} +input.sheet-spec{ + height: 20px; + width: 100%; +} + +input.sheet-backname{ + height: 20px; + width: 66%; +} +input.sheet-othertraitname{ + height: 20px; + width: 150px; +} +div.sheet-back{ + margin:0px -10px 0px -10px; + line-height: 20px; +} + +/* Hide actual dot/checkbox */ +input[type="radio"], +input[type="checkbox"] { + opacity: 0; + width: 16px; + height: 16px; + position: relative; + left: 6px; + margin: -10px; + cursor: url(http://i.imgur.com/FaqICyL.png), auto; + z-index: 1; +} + + +/* Styles common to fake dot and checkbox */ +input[type="radio"] + span::before{ + margin-right: 1px; + border: solid 1px #a8a8a8; + line-height: 14px; + text-align: center; + display: inline-block; + vertical-align: middle; + + -moz-box-shadow: 0 0 2px #ccc; + -webkit-box-shadow: 0 0 2px #ccc; + box-shadow: 0 0 2px #ccc; + + background: #000000; +} + +input[type="checkbox"] + span::before { + margin-right: 1px; + border: solid 1px #a8a8a8; + line-height: 14px; + text-align: center; + display: inline-block; + vertical-align: middle; + + -moz-box-shadow: 0 0 2px #ccc; + -webkit-box-shadow: 0 0 2px #ccc; + box-shadow: 0 0 2px #ccc; + +} + +/* Fake dot */ +input[type="radio"] + span::before{ + content: ""; + width: 12px; + height: 12px; + + -moz-border-radius: 50%; + -webkit-border-radius: 50%; + border-radius: 50%; +} + +/* Fake checkbox */ +input[type="checkbox"] + span::before { + position:relative; + content: ""; + background-image:url(http://i.imgur.com/c8Cx2mg.png); + background-size: 100%; + background-repeat: no-repeat; + background-position: center; + opacity: 1; + width: 20px; + height: 20px; + font-size: 12px; + border:none; + + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +/* Styles unique to fake checkbox (checked) */ +input[type="checkbox"]:checked + span::before { + content: ""; + + border:none; + background-image:url(http://i.imgur.com/MOtYDyu.png); + background-size: 100%; + background-repeat: no-repeat; + background-position: center; + -moz-box-shadow: 0 0 2px transparent; + -webkit-box-shadow: 0 0 2px transparent; + box-shadow: 0 0 2px transparent; +} + +/* Remove dot from all radios _after_ selected one */ +input[type="radio"]:checked ~ input[type="radio"] + span::before { + content: ""; + background: #f6f6f6; + background: -moz-radial-gradient(#f6f6f6, #dfdfdf); + background: -webkit-radial-gradient(#f6f6f6, #dfdfdf); + background: -ms-radial-gradient(#f6f6f6, #dfdfdf); + background: -o-radial-gradient(#f6f6f6, #dfdfdf); + background: radial-gradient(#f6f6f6, #dfdfdf); +} + +input[type="checkbox"]:checked ~ input[type="checkbox"] + span::before { + background: #f6f6f6; + background: -moz-radial-gradient(#f6f6f6, #dfdfdf); + background: -webkit-radial-gradient(#f6f6f6, #dfdfdf); + background: -ms-radial-gradient(#f6f6f6, #dfdfdf); + background: -o-radial-gradient(#f6f6f6, #dfdfdf); + background: radial-gradient(#f6f6f6, #dfdfdf); +} +input[type=text], input[type=number] { + + /* Styles */ + border: 1px solid #4e3043; /* Fallback */ + border: 1px solid rgba(78,48,67, 0.8); + background: rgba(0,0,0,0.15); + border-radius: 2px; + box-shadow: + 0 1px 0 rgba(255,255,255,0.2), + inset 0 1px 1px rgba(0,0,0,0.1); + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -ms-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; + + /* Font styles */ + font-weight: bold; + color: black; + font-size: 13px; +} + +input[type=number]::-webkit-outer-spin-button, +input[type=number]::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + + +input[type=number] +{ + + text-align:center; + -moz-appearance:textfield; +} + +input[type=text], input[type=number], textarea +{ + cursor: url(http://i.imgur.com/pY2uaXd.png), auto; +} + +select:hover, button:hover, input[type=checkbox]:hover +{ + + cursor: url(http://i.imgur.com/OYpiryU.png) 10 10, auto; +} + + +select:disabled, button:disabled, input:disabled +{ + + cursor: url(http://i.imgur.com/B3IzNW1.png), auto; +} + + +textarea +{ + /* Styles */ + border: 1px solid #4e3043; /* Fallback */ + border: 1px solid rgba(78,48,67, 0.8); + background: rgba(0,0,0,0.15); + border-radius: 2px; + box-shadow: + 0 1px 0 rgba(255,255,255,0.2), + inset 0 1px 1px rgba(0,0,0,0.1); + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -ms-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; + + /* Font styles */ + font-weight: bold; + color: black; + font-size: 13px; +} + + select +{ + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + /* Styles */ + border: 1px solid #4e3043; /* Fallback */ + border: 1px solid rgba(78,48,67, 0.8); + background: rgba(0,0,0,0.15); + border-radius: 2px; + box-shadow: + 0 1px 0 rgba(255,255,255,0.2), + inset 0 1px 1px rgba(0,0,0,0.1); + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -ms-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; + + /* Font styles */ + font-weight: bold; + color: black; + font-size: 13px; + text-align:center; + text-align-last:center; +} + +select::-ms-expand { + display: none; +} + +input.sheet-picture-input +{ + background:white; + color: black; +} + +h4.sheet-health{ + line-height: 26px; + z-index: 0; + margin: 0px 0px 0px -5px; +} +div.sheet-health{ + padding: 0px 40px 0px 40px; +} +select.sheet-health{ + margin: 3px 0px 0px 0px; + float: right; +} +input[type="radio"].sheet-Hbut{ + padding: 0px 0px 0px 0px; + margin: 5px 8px 0px -15px; + float: right; +} +input.sheet-Hbut:checked + span::before { + opacity: 1; +} +input.sheet-Hbut:hover + span::before { + opacity: 1; +} +input.sheet-Hbut + span::before { + margin: 5px -7px 0px 0px; + width: 14px; + height: 14px; + font-size: 14px; + font-weight: bold; + opacity: .25; + float: right; + + -moz-border-radius: 0%; + -webkit-border-radius: 0%; + border-radius: 0%; + + background: #f6f6f6; + background: -moz-radial-gradient(#f6f6f6, #dfdfdf); + background: -webkit-radial-gradient(#f6f6f6, #dfdfdf); + background: -ms-radial-gradient(#f6f6f6, #dfdfdf); + background: -o-radial-gradient(#f6f6f6, #dfdfdf); + background: radial-gradient(#f6f6f6, #dfdfdf); +} +input.sheet-Hbut1 + span::before { + content: "-1"; +} +input.sheet-Hbut2 + span::before { + content: "-2"; +} +input.sheet-Hbut5 + span::before { + content: "-5"; +} +input.sheet-HbutI + span::before { + content: "?"; +} + +div.sheet-res{ + margin:0px 0px 0px 0px; + line-height: 20px; + font-weight: bold; + font-size: 14px; + text-align: left; +} +input.sheet-resspec{ + height: 20px; + width: 35%; + float: right; +} + +input.sheet-used+span::before { + content: "X"; + width: 12px; + height: 12px; + font-size: 12px; + + -moz-border-radius: 0%; + -webkit-border-radius: 0%; + border-radius: 0%; + + background: #f6f6f6; + background: -moz-radial-gradient(#f6f6f6, #dfdfdf); + background: -webkit-radial-gradient(#f6f6f6, #dfdfdf); + background: -ms-radial-gradient(#f6f6f6, #dfdfdf); + background: -o-radial-gradient(#f6f6f6, #dfdfdf); + background: radial-gradient(#f6f6f6, #dfdfdf); +} + +input.sheet-zero:checked + span::before { + opacity: 0; +} +input.sheet-zero:hover + span::before { + opacity: 1; +} +input.sheet-zero + span::before { + opacity: .25; + font-size: 12px; + content: "X"; + + background: #f6f6f6; + background: -moz-radial-gradient(#f6f6f6, #dfdfdf); + background: -webkit-radial-gradient(#f6f6f6, #dfdfdf); + background: -ms-radial-gradient(#f6f6f6, #dfdfdf); + background: -o-radial-gradient(#f6f6f6, #dfdfdf); + background: radial-gradient(#f6f6f6, #dfdfdf); +} + +div.sheet-name { + width: 100px; + padding-left: 10px; +} +div.sheet-dots { + width: 160px; + text-align: right; +} + +select.sheet-DP{ + margin: 0px 0px 1px 0px; + padding: 0px 0px 0px 0px; + width: 43%; +} +button.sheet-DP{ + height: 20px; + width: 8%; +} +input.sheet-DPspace{ + opacity: 0; + width: 23%; +} + +div.sheet-qdot { + margin: -95px 0px 0px -175px; + font-size:20px; +} + +select.sheet-wheel{ + width: 20px; + + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +select.sheet-top { margin-top:-60px; } +select.sheet-mid-eighth { margin-top: -45px; } +select.sheet-mid-quarter { margin-top: -20px; } +select.sheet-mid-three-eighth { margin-top: 17px; } +select.sheet-middle { margin-top: 60px; } + +select.sheet-middle-2 { margin-top: -58px; } +select.sheet-mid-five-eighth { margin-top: -13px; } +select.sheet-mid-three-quarter { margin-top: 27px; } +select.sheet-mid-seven-eighth { margin-top: 55px; } +select.sheet-bottom { margin-top: 68px; } + +select.sheet-left-1 { margin-left: 0px; } +select.sheet-left-2 { margin-left: -16px; } +select.sheet-left-3 { margin-left: -10px; } +select.sheet-left-4 { margin-left: -6px; } +select.sheet-left-5 { margin-left: -3px; } +select.sheet-left-6 { margin-left: -1px; } +select.sheet-left-7 { margin-left: -3px; } +select.sheet-left-8 { margin-left: -6px; } +select.sheet-left-9 { margin-left: -10px; } +select.sheet-left-10 { margin-left: -16px; } + + +div.sheet-forms{ + width: 118px; + text-align: center; +} +input.sheet-formdots{ + width: 122px; +} +input.sheet-formdots:checked + span::before { + background: #000000; +} +input.sheet-formdots + span::before{ + position: relative; + left: -50px; + + background: #f6f6f6; + background: -moz-radial-gradient(#f6f6f6, #dfdfdf); + background: -webkit-radial-gradient(#f6f6f6, #dfdfdf); + background: -ms-radial-gradient(#f6f6f6, #dfdfdf); + background: -o-radial-gradient(#f6f6f6, #dfdfdf); + background: radial-gradient(#f6f6f6, #dfdfdf); +} + +/* ******** Start code for tabs ******* */ +div.sheet-tab-content{ + display: none; +} +input.sheet-tabPrimary:checked ~ div.sheet-tabPrimary, +input.sheet-tabTalents:checked ~ div.sheet-tabTalents, +input.sheet-tabBackground:checked ~ div.sheet-tabBackground, +input.sheet-tabEquipment:checked ~ div.sheet-tabEquipment, +input.sheet-tabSpells:checked ~ div.sheet-tabSpells, +input.sheet-tabHenchmen:checked ~ div.sheet-tabHenchmen, +input.sheet-tabCombat:checked ~ div.sheet-tabCombat, +input.sheet-tabWeapons:checked ~ div.sheet-tabWeapons, +input.sheet-tabSkills:checked ~ div.sheet-tabSkills, +input.sheet-tabCareerHistory:checked ~ div.sheet-tabCareerHistory{ + display: block; +} + +/* Tables */ +div.sheet-table{ + width: 100%; + display: block; + font-size: 1.25em; + font-weight: bold; + text-align: center; +} +/* Gear Tab */ +div.sheet-gear{ + width:100%; + text-align: center; +} +textarea.sheet-gear { + height:650px; + width:95%; +} + +/* expanded backgrounds */ +div.sheet-ebackname{ +} +div.sheet-ebackdesc{ + width:100% +} +textarea.sheet-ebackdesc{ + width:100%; + height:105px; +} +div.sheet-ebacks{ + display: inline; +} +input.sheet-ebacks { + width: 37px; +} +input.sheet-ebacks:checked ~ div.sheet-ebacks{ + display: none; +} +input.sheet-ebacks:checked + span::before { + content: "Show"; + color: #a00; + + -moz-box-shadow: 0 0 2px transparent; + -webkit-box-shadow: 0 0 2px transparent; + box-shadow: 0 0 2px transparent; +} +input.sheet-ebacks + span::before { + width: 36px; + content: "Hide"; + position: relative; + left: -22px; + + background: #f6f6f6; + background: -moz-radial-gradient(#f6f6f6, #dfdfdf); + background: -webkit-radial-gradient(#f6f6f6, #dfdfdf); + background: -ms-radial-gradient(#f6f6f6, #dfdfdf); + background: -o-radial-gradient(#f6f6f6, #dfdfdf); + background: radial-gradient(#f6f6f6, #dfdfdf); +} + +/*rotes tab*/ +div.sheet-rotesph, +input.sheet-rotesph{ + width: 400px; +} + +/* experience tab*/ +div.sheet-XPdesc{ + width: 70%; +} +div.sheet-XPspent{ + width: 22%; + right: 0px; +} +div.sheet-XPcomp{ + width: 6%; +} +input.sheet-XPdesc{ + width: 70%; +} +input.sheet-XPspent{ + width: 21%; +} +input.sheet-XPcomp{ + width: 6%; +} + +input.sheet-XPcomp + span::before{ + background: #f6f6f6; + background: -moz-radial-gradient(#f6f6f6, #dfdfdf); + background: -webkit-radial-gradient(#f6f6f6, #dfdfdf); + background: -ms-radial-gradient(#f6f6f6, #dfdfdf); + background: -o-radial-gradient(#f6f6f6, #dfdfdf); + background: radial-gradient(#f6f6f6, #dfdfdf); +} + +input.sheet-Dice{ + width: 16%; +} + +div.sheet-APIRollButton { + display: none; +} + +div.sheet-APINoRollButton{ + display: inline; +} + +input.sheet-APIcheck:checked ~ div.sheet-APIRollButton { + display: inline; +} + +input.sheet-APIcheck:checked ~ div.sheet-APINoRollButton { + display: none; +} + +select.sheet-dots +{ + width:100px; + height:18px; + font-weight: bold; + font-size:14px; + color:#000000; + padding: 0px 0px 0px 0px; +} + + +input:checked + label { + background: #f6f6f6; + background: -moz-radial-gradient(#f6f6f6, #dfdfdf); + background: -webkit-radial-gradient(#f6f6f6, #dfdfdf); + background: -ms-radial-gradient(#f6f6f6, #dfdfdf); + background: -o-radial-gradient(#f6f6f6, #dfdfdf); + background: radial-gradient(#f6f6f6, #dfdfdf); + background-image:url(http://i.imgur.com/XFKkFVL.png); + background-size: 100% 100%; + color: white; + border-radius: 10px; + text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; +} + +label.sheet-tab{ + font-family: "Goudy Old Style", Garamond, "Big Caslon", "Times New Roman", serif; + text-align: center; + display: inline-block; + font-size: 14px; + background: transparent; + background-image:url(http://i.imgur.com/xiHjTBk.png); + background-size: 100% 100%; + color: black; + font-weight: bold; + border-radius: 10px; + line-height: 30px; + width: 14%; /*originally 87px*/ + height: 30px; /*originally 20px*/ + cursor: url(http://i.imgur.com/OYpiryU.png) 10 10, auto; + position: relative; + vertical-align: middle; + text-shadow: 4px 4px 5px rgba(150, 150, 150, 0.5); + margin-left: -12%; + text-indent: 10px; +} + +input.sheet-tab +{ + width: 14%; + height: 30px; + cursor: url(http://i.imgur.com/OYpiryU.png) 10 10, auto; + position: relative; + opacity: 0; + z-index: 9999; +} + + +select.sheet-wheel{ + width: 20px; + + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +select.sheet-top { margin-top:-60px; } +select.sheet-mid-eighth { margin-top: -45px; } +select.sheet-mid-quarter { margin-top: -20px; } +select.sheet-mid-three-eighth { margin-top: 17px; } +select.sheet-middle { margin-top: 60px; } + +select.sheet-middle-2 { margin-top: -58px; } +select.sheet-mid-five-eighth { margin-top: -13px; } +select.sheet-mid-three-quarter { margin-top: 27px; } +select.sheet-mid-seven-eighth { margin-top: 55px; } +select.sheet-bottom { margin-top: 68px; } + +select.sheet-left-1 { margin-left: 0px; } +select.sheet-left-2 { margin-left: -16px; } +select.sheet-left-3 { margin-left: -10px; } +select.sheet-left-4 { margin-left: -6px; } +select.sheet-left-5 { margin-left: -3px; } +select.sheet-left-6 { margin-left: -1px; } +select.sheet-left-7 { margin-left: -3px; } +select.sheet-left-8 { margin-left: -6px; } +select.sheet-left-9 { margin-left: -10px; } +select.sheet-left-10 { margin-left: -16px; } + +/* ======== Sheet-arrow to hide things========*/ +input.sheet-arrow2[type="checkbox"] { + + opacity: 0; + width: 25px; + height: 25px; + position: relative; + margin-bottom:-55px; + margin-left:-5px; + top: 0px; + left: 10px; + + cursor: url(http://i.imgur.com/xWcj86T.png) 10 10, auto; + z-index: 1; +} +/* -----Fake sheet-arrow checkbox----- */ + +input.sheet-arrow2[type="checkbox"] + span::before +{ + + background: url("http://i.imgur.com/0IZIz4n.png"); + background-size: 100%; + line-height: 14px; + text-align: center; + display: inline-block; + vertical-align: middle; + margin-bottom:-55px; + margin-left:-5px; + border-radius: 10px; + width: 25px; + height: 25px;/* + content: "ˇ"; + transform: rotate(-90deg);*/ +} + +input.sheet-arrow2[type="checkbox"]:hover + span::before +{ + + background: url("http://i.imgur.com/39o8cLG.png"); + background-size: 100%; + line-height: 14px; + text-align: center; + display: inline-block; + vertical-align: middle; + margin-bottom:-55px; + margin-left:-5px; + border-radius: 10px; + width: 25px; + height: 25px;/* + content: "ˇ"; + transform: rotate(-90deg);*/ +} + +input.sheet-arrow2[type="checkbox"]:checked + span::before { + background: url("http://i.imgur.com/BRsgwNU.png"); + background-size: 100%; + + width: 25px; + height: 25px; + margin-bottom:-55px; + margin-left:-5px; + /*content: "ˇ"; + transform: rotate(0deg);*/ +} + +div.sheet-body { + display: none; +} +div.sheet-body2 { + display: block; + height:40px; + background: url("http://i.imgur.com/VdGAir7.png"); + background-size: auto 100%; + background-position: left; + background-repeat: no-repeat; + text-align:center; +} +/* -----Hiding areas with sheet-arrow ----- */ + +input.sheet-arrow2 { + +} + +input.sheet-arrow2:checked ~ div.sheet-body { + display: block; +} +input.sheet-arrow2:checked ~ div.sheet-body2 { + display: none; +} + +/* ======== Sheet-arrow to hide things========*/ +input.sheet-arrow[type="checkbox"] { + + opacity: 0; + width: 25px; + height: 25px; + position: relative; + top: 0px; + left: 16px; + + cursor: url(http://i.imgur.com/xWcj86T.png) 10 10, auto; + z-index: 1; +} +/* -----Fake sheet-arrow checkbox----- */ + +input.sheet-arrow[type="checkbox"] + span::before +{ + background: url("http://i.imgur.com/0IZIz4n.png"); + background-size: 100%; + line-height: 14px; + text-align: center; + display: inline-block; + vertical-align: middle; + border-radius: 10px; + width: 25px; + height: 25px;/* + content: "ˇ"; + transform: rotate(-90deg);*/ +} +input.sheet-arrow[type="checkbox"]:hover + span::before +{ + background: url("http://i.imgur.com/39o8cLG.png"); + background-size: 100%; + line-height: 14px; + text-align: center; + display: inline-block; + vertical-align: middle; + border-radius: 10px; + + width: 25px; + height: 25px;/* + content: "ˇ"; + transform: rotate(-90deg);*/ +} + +input.sheet-arrow[type="checkbox"]:checked + span::before { + + background: url("http://i.imgur.com/BRsgwNU.png"); + background-size: 100%; + width: 25px; + height: 25px; + /*content: "ˇ"; + transform: rotate(0deg);*/ +} + +div.sheet-body { + display: none; +} +/* -----Hiding areas with sheet-arrow ----- */ + +input.sheet-arrow { + +} + +input.sheet-arrow:checked ~ div.sheet-body { + display: block; +} +/*-----radio boxes-----*/ + +span.sheet-text-h1{ + display: inline; + font-size: 2em; + margin-top: 0.67em; + margin-bottom: 0.67em; + margin-left: 0; + margin-right: 0; + font-weight: bold; + text-align: center; + width: 100% +} +span.sheet-text-h3{ + display: inline; + font-size: 1.5em; + margin-top: 0.83em; + margin-bottom: 0.83em; + margin-left: 0; + margin-right: 0; + font-weight: bold; + text-align: center; + width: 100% +} +span.sheet-text-h4{ + display: inline; + font-size: 1.0em; + margin-top: 0.83em; + margin-bottom: 0.83em; + margin-left: 0; + margin-right: 0; + font-weight: bold; + text-align: center; + width: 100% +} + +h1.sheet-header +{ + text-align: center; + background-image:url(http://i.imgur.com/2ehqX9K.png); + background-position:center; + background-repeat:no-repeat; + background-size: auto 100%; + text-shadow: -1px -1px 1px #fff, 1px 1px 1px #000; + margin-bottom:10px; + margin-top:10px; + color: white; + font-family: "Goudy Old Style", Garamond, "Big Caslon", "Times New Roman", serif; +} + +button.sheet-warhammernotext +{ + font-weight:bold; + font-family: "Goudy Old Style", Garamond, "Big Caslon", "Times New Roman", serif; + background-image:url(http://i.imgur.com/OkyPGF3.png); + min-height: 25px; + min-width: 25px; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + color:white; + vertical-align: middle; + background-color:transparent; + border: none; +} + +button.sheet-warhammernotext:before +{ + content: "" !important; + vertical-align: middle; +} + +button.sheet-warhammernotext:hover +{ + background-image:url(http://i.imgur.com/mLoPm0n.png); + -moz-background-size:100% 100%; +-webkit-background-size:100% 100%; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + vertical-align: middle; + border: none; + color:white; + background-color:transparent; +} + +button.sheet-warhammernotext:disabled +{ + background-image:url(http://i.imgur.com/9fDFoXo.png); + -moz-background-size:100% 100%; +-webkit-background-size:100% 100%; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + vertical-align: middle; + border: none; + color:white; + background-color:transparent; + +} +button.sheet-warhammernotext:active +{ + background-image:url(http://i.imgur.com/GVND4a3.png); + -moz-background-size:100% 100%; +-webkit-background-size:100% 100%; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + vertical-align: middle; + border: none; + color:white; + background-color:transparent; + +} + +button.sheet-warhammerlongtext +{ + font-weight:bold; + font-family: "Goudy Old Style", Garamond, "Big Caslon", "Times New Roman", serif; + background-image:url(http://i.imgur.com/vm6boPI.png); + min-height: 25px; + min-width: 25px; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + color:white; + vertical-align: middle; + background-color:transparent; + border: none; +} + +button.sheet-warhammerlongtext:before +{ + content: "" !important; + vertical-align: middle; +} + +button.sheet-warhammerlongtext:hover +{ + background-image:url(http://i.imgur.com/E2F6oDU.png); + -moz-background-size:100% 100%; +-webkit-background-size:100% 100%; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + vertical-align: middle; + border: none; + color:white; + background-color:transparent; +} + +button.sheet-warhammerlongtext:disabled +{ + background-image:url(http://i.imgur.com/c40J3Wx.png); + -moz-background-size:100% 100%; +-webkit-background-size:100% 100%; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + vertical-align: middle; + border: none; + color:white; + background-color:transparent; + +} +button.sheet-warhammerlongtext:active +{ + background-image:url(http://i.imgur.com/GgVs8Oe.png); + -moz-background-size:100% 100%; +-webkit-background-size:100% 100%; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + vertical-align: middle; + border: none; + color:white; + background-color:transparent; + +} + +.charsheet .repcontrol_add, +.charsheet .repcontrol_edit +{ + cursor: url(http://i.imgur.com/xWcj86T.png) 10 10, auto; + font-weight:bold; + font-family: "Goudy Old Style", Garamond, "Big Caslon", "Times New Roman", serif; + background-image:url(http://i.imgur.com/chkFE6f.png); + min-height: 25px; + min-width: 75px; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + color:white; + vertical-align: middle; + background-color:transparent; + border: none; +} + +.charsheet .repcontrol_add:before, +.charsheet .repcontrol_edit:before +{ + content: "" !important; + vertical-align: middle; +} + +.charsheet .repcontrol_add:hover, +.charsheet .repcontrol_edit:hover +{ + background-image:url(http://i.imgur.com/ElJ2FLI.png); + -moz-background-size:100% 100%; +-webkit-background-size:100% 100%; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + vertical-align: middle; + border: none; + color:white; + background-color:transparent; +} + +.charsheet .repcontrol_add:disabled, +.charsheet .repcontrol_edit:disabled +{ + background-image:url(http://i.imgur.com/SNxvcVL.png); + -moz-background-size:100% 100%; +-webkit-background-size:100% 100%; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + vertical-align: middle; + border: none; + color:white; + background-color:transparent; + +} +.charsheet .repcontrol_add:active, +.charsheet .repcontrol_edit:active +{ + background-image:url(http://i.imgur.com/MtiI7s7.png); + -moz-background-size:100% 100%; +-webkit-background-size:100% 100%; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + vertical-align: middle; + border: none; + color:white; + background-color:transparent; + +} +.charsheet .repcontrol_add:focus, +.charsheet .repcontrol_edit:focus, +.charsheet .repcontrol_move:focus +{ + outline:none; + +} + +.charsheet .repcontrol_move { + cursor: url(http://i.imgur.com/kw6l5Mk.png) 24 24, auto !important; + background-color: transparent; + background-image:url(http://i.imgur.com/QELak6s.png); + background-position:center; + background-repeat:no-repeat; + background-size: 100%; + border:none; + color: transparent; +} + +.charsheet .repcontrol_del +{ + cursor: url(http://i.imgur.com/xWcj86T.png) 10 10, auto; + background-color: transparent; + background-image:url(http://i.imgur.com/Dpc1OKV.png); + background-position:center; + background-repeat:no-repeat; + background-size: 100%; + color: transparent; + z-index:11; + position:absolute; + left:96%; + border:none; +} + +button.sheet-warhammer +{ + font-weight:bold; + font-family: "Goudy Old Style", Garamond, "Big Caslon", "Times New Roman", serif; + background-image:url(http://i.imgur.com/gpljc7M.png); + height: 35px; + width: 35px; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + color:white; + vertical-align: middle; + background-color:transparent; + border: none; +} + +button.sheet-warhammer:before +{ + content: "" !important; + vertical-align: middle; +} + +button.sheet-warhammer:hover +{ + background-image:url(http://i.imgur.com/7wekbC8.png); + -moz-background-size:100% 100%; +-webkit-background-size:100% 100%; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + vertical-align: middle; + border: none; + color:white; + background-color:transparent; +} + +button.sheet-warhammer:disabled +{ + background-image:url(http://i.imgur.com/xcYaX94.png); + -moz-background-size:100% 100%; +-webkit-background-size:100% 100%; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + vertical-align: middle; + border: none; + color:white; + background-color:transparent; + +} +button.sheet-warhammer:active +{ + background-image:url(http://i.imgur.com/i3Lv6fo.png); + -moz-background-size:100% 100%; +-webkit-background-size:100% 100%; +background-size:100% 100%; +background-position:center; + background-repeat: no-repeat; + vertical-align: middle; + border: none; + color:white; + background-color:transparent; + +} + +button.sheet-skill +{ + font-size:10px; + height:30px; + width:15% +} +button.sheet-simpledice +{ + font-size: 10px; + height:30px; + width:40px +} + +.sheet-img-center +{ + background-image:url(http://i.imgur.com/2jXkFLe.png); + background-size: 75%; + background-repeat: no-repeat; + background-position: center 250px; +} +.sheet-img-top +{ + background-image:url(http://i.imgur.com/Iur7VR7.png); + background-size: 50%; + background-repeat: no-repeat; + background-position: left 10px; + margin-right:0px; + margin-bottom:0px; + +} +.sheet-img-bottom +{ + background-image:url(http://i.imgur.com/0KvWUoM.png); + background-size: 50%; + background-repeat: no-repeat; + background-position: 101% 101%; + margin-right:-3px; + margin-bottom:-3px; + +} + +.sheet-main-textdiv +{ + + background-image:url(http://i.imgur.com/JnBHMsg.png); + background-size: auto 85%; + background-repeat: no-repeat; + background-position: center; + padding-bottom:10px; +} + +.sheet-main-divider +{ + margin-left:-5px; + margin-right:-5px; + margin-top: -5px; +border-style: solid; +border-width: 0px 51px 33px; +-moz-border-image: url(http://i.imgur.com/aKgzVZ7.png) 33 55 stretch; +-webkit-border-image: url(http://i.imgur.com/aKgzVZ7.png) 33 55 stretch; +-o-border-image: url(http://i.imgur.com/aKgzVZ7.png) 33 55 stretch; +border-image: url(http://i.imgur.com/aKgzVZ7.png) 33 55 fill stretch; +} + +.sheet-upper-div +{ + width:100%; + + background-image:url(http://i.imgur.com/jYsrnBj.png); + background-size: auto 50px; + background-repeat: repeat; + background-position: left; +} + +.sheet-img-warhammer +{ + height:25px; + text-align:center; + background-image:url(http://i.imgur.com/4A8TEBM.png); + background-size: 100%; + background-repeat: no-repeat; + background-position: center -7px; + padding-left:25px; + padding-right:25px; + padding-bottom:5px; + padding-top:5px; +} + +.sheet-bottom-divider +{ + position:relative; + left:-5px; + top:10px; + margin-right:-10px; + border-style: solid; +border-width: 0px 34px 50px; +-moz-border-image: url(http://i.imgur.com/TkZUL03.png) 45 60 repeat; +-webkit-border-image: url(http://i.imgur.com/TkZUL03.png) 45 60 repeat; +-o-border-image: url(http://i.imgur.com/TkZUL03.png) 45 60 repeat; +border-image: url(http://i.imgur.com/TkZUL03.png) 45 60 fill repeat; + +} + +input.sheet-input-parchment +{ + background: transparent; + background-image:url(http://i.imgur.com/7Jwz3iA.png); + background-position:bottom; + background-repeat:no-repeat; + background-size: 100% 100%; + color: black; + border:none; + text-indent:10px; + box-shadow:none; + +} + +input.sheet-input-parchment:hover +{ + background-image:url(http://i.imgur.com/an6jUq6.png); + +} +input.sheet-input-parchment:focus +{ + background-image:url(http://i.imgur.com/pdElVOY.png); + +} + +input.sheet-input-parchmentbox +{ + background: transparent; + background-image:url(http://i.imgur.com/NzYD0nZ.png); + background-position:center; + background-repeat:no-repeat; + background-size: 100% 100%; + color: black; + border:none; + box-shadow:none; + +} + +input.sheet-input-parchmentbox:hover +{ + background-color: rgba(255,255,255,0.50); + +} +input.sheet-input-parchmentbox:focus +{ + background-color: rgba(255,255,255,0.20); + background-image:url(http://i.imgur.com/oqnwG4y.png); + background-position:center; + background-repeat:no-repeat; + background-size: 100% 100%; + border:none; + box-shadow:none; + +} + + +select.sheet-input-parchmentbox +{ + background: transparent; + background-image:url(http://i.imgur.com/NzYD0nZ.png); + background-position:center; + background-repeat:no-repeat; + background-size: 100% 100%; + color: black; + border:none; + box-shadow:none; + +} + +select.sheet-input-parchmentbox:hover +{ + background-color: rgba(255,255,255,0.50); + +} +select.sheet-input-parchmentbox:focus +{ + background-image:url(http://i.imgur.com/oqnwG4y.png); + background-position:center; + background-repeat:no-repeat; + background-size: 100% 100%; + border:none; + box-shadow:none; + outline:none; + +} + +textarea.sheet-input-parchmentarea +{ + font-size:10px; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + background: transparent; + color: black; + box-shadow:none; + border-style: solid; +border-width: 10px; +-moz-border-image: url(http://i.imgur.com/M7liRTJ.png) 27 repeat; +-webkit-border-image: url(http://i.imgur.com/M7liRTJ.png) 27 repeat; +-o-border-image: url(hhttp://i.imgur.com/M7liRTJ.png) 27 repeat; +border-image: url(http://i.imgur.com/M7liRTJ.png) 27 fill repeat; +} + +textarea.sheet-input-parchmentarea:hover +{ + background-color: rgba(255,255,255,0.50); +} + +textarea.sheet-input-parchmentarea:focus +{ + background-color: rgba(255,255,255,0.25); +} + +input.sheet-input-parchmentboxback +{ + background-color: transparent; + background-image:url(http://i.imgur.com/Fkvxo6u.png); + background-position:center; + background-repeat:no-repeat; + background-size: 100% 100%; + height:35px; + padding:7px; + color: white; + border:none; + box-shadow:none; + + background-blend-mode: overlay; +} + +input.sheet-input-parchmentboxback:hover +{ + background-color: rgba(255,255,255,0.20); + +} +input.sheet-input-parchmentboxback:focus +{ + background-color: rgba(255,255,255,0.05); + +} + +input.sheet-input-parchmentboxbacksmall +{ + background-color: transparent; + background-image:url(http://i.imgur.com/RvHCz7D.png); + background-position:center; + background-repeat:no-repeat; + background-size: 100% 100%; + height:35px; + width:100%; + padding:7px; + color: white; + border:none; + box-shadow:none; + background-blend-mode: overlay; + +} + +input.sheet-input-parchmentboxbacksmall:hover +{ + background-color: rgba(255,255,255,0.20); + +} +input.sheet-input-parchmentboxbacksmall:focus +{ + background-color: rgba(255,255,255,0.05); + +} +input.sheet-input-parchmentboxbackarmor +{ + background-color: transparent; + background-image:url(http://i.imgur.com/D7ztepy.png); + background-position:center; + background-repeat:no-repeat; + background-size: 100% 100%; + background-blend-mode: overlay; + color: black; + border:none; + box-shadow:none; + +} + +input.sheet-input-parchmentboxbackarmor:hover +{ + background-color: rgba(255,255,255,0.20); + +} +input.sheet-input-parchmentboxbackarmor:focus +{ + background-color: rgba(255,255,255,0.05); + +} + +hr.sheet-warhammer-line +{ + height:5px; + margin-left:-10px; + margin-right:-7px; + background-image:url(http://i.imgur.com/IHzlYU4.png); + background-size: 100% 100%; + background-position:center; + background-repeat:repeat; + border:none; + background-color:transparent; +} + +button.sheet-custom-button-weaponsmagic +{ +background-size:100% 100%; +background-position:center; + height:27px; + width:70px; + background-repeat: no-repeat; + vertical-align: middle; + background-color:transparent; + border: none; +} + +button.sheet-custom-button-weaponsmagic:before +{ + content: "" !important; + vertical-align: middle; +} + +button.sheet-custom-button-weaponsmagic:focus +{ + outline:none; +} + +button.sheet-parry-button +{ + background-image:url(http://i.imgur.com/NPlZPnb.png); +} + + +button.sheet-parry-button:hover +{ + background-image:url(http://i.imgur.com/Ced0qd1.png); +} + +button.sheet-parry-button:disabled +{ + background-image:url(http://i.imgur.com/FnYcZDj.png); + +} + +button.sheet-parry-button:active +{ + background-image:url(http://i.imgur.com/6jrQIlf.png); + +} +button.sheet-ranged-button +{ + background-image:url(http://i.imgur.com/byFacCo.png); +} + +button.sheet-ranged-button:hover +{ + background-image:url(http://i.imgur.com/hOQMnws.png); +} + +button.sheet-ranged-button:disabled +{ + background-image:url(http://i.imgur.com/ahwfCXE.png); + +} + +button.sheet-ranged-button:active +{ + background-image:url(http://i.imgur.com/Owlbdk4.png); + +} +button.sheet-melee-button +{ + background-image:url(http://i.imgur.com/Aq9Uxc1.png); +} + +button.sheet-melee-button:hover +{ + background-image:url(http://i.imgur.com/0ntBNPc.png); +} + +button.sheet-melee-button:disabled +{ + background-image:url(http://i.imgur.com/aa8cNri.png); + +} + +button.sheet-melee-button:active +{ + background-image:url(http://i.imgur.com/dUbjsUr.png); + +} +button.sheet-magic-button +{ + background-image:url(http://i.imgur.com/YcvUge3.png); +} + +button.sheet-magic-button:hover +{ + background-image:url(http://i.imgur.com/f0oiU0u.png); +} + +button.sheet-magic-button:disabled +{ + background-image:url(http://i.imgur.com/gNoK7Zk.png); + +} + +button.sheet-magic-button:active +{ + background-image:url(http://i.imgur.com/EL18SbH.png); + +} \ No newline at end of file diff --git a/WFRP2E-Havoc/wfrp2e-sheet.html b/WFRP2E-Havoc/wfrp2e-sheet.html new file mode 100644 index 0000000000..72e964e547 --- /dev/null +++ b/WFRP2E-Havoc/wfrp2e-sheet.html @@ -0,0 +1,3832 @@ + + +
+
+
+
+
+
+
+
+
+ Warhammer Fantasy Roleplay (2nd edition) +
+
+ +

Character Name

+
+
+
+
+ +

Career

+
+
+ +

Experience

+
+
+
+
+ +

Concept

+
+
+ + + + + +
+

Fortune Points / Daily

+
+
+
+
+ +

Race

+
+
+ + + + + +
+

Current / Max Wounds

+
+
+
+
+ + + + + + + + + +
+
+
+
+
+ +
+
+
+
+
+ + + + + + + + + +
+ + + + + + + + + + + +
+ +
+

Primary

+
+
+

Character

+
+
+

Name:

+
+
+ +
+
+
+
+

Race:

+
+
+ +
+
+
+
+

Career:

+
+
+ +
+
+
+
+

Career Path:

+
+
+ +
+
+
+
+

Experience:

+
+
+ +
+
+
+

Personal Details

+
+
+
Gender:
+
Day of Birth:
+
Nationality:
+
Height:
+
Eyes:
+
+
+
+
+
+
+ +
+
+ +
+
+
Age:
+
Birthplace:
+
Religion:
+
Weight:
+
Hair:
+
+
+
+
+
+
+ +
+
+
+
Distinguishing Marks:
+ +
+ +
+ +
+
+

Characteristics

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Weapon SkillBallistic SkillStrengthToughnessAgilityIntelligenceWillpowerFellowship

Main

WSBSSTAgIntWPFel
Base:
Advance: + + + + + + + +
Taken: + + + + + + + +
Temp.:
Current:
+
AttacksWoundsStrength BonusToughness BonusMovementMagicInsanity PointsFate Points

Sec.

AWSBTBMMagIPFP
Base:
Advance: + + + +
Taken: + + + +
Temp.:
Current:

+ +
+
+
+

Current Wounds:

+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+

Money & Treasure

+
+
+ +

Gold Crowns (gc)

+ +

Silver Shillings (s)

+ +

Brass Pennies (p)

+
+
+

Other Treasure

+ +
+
+
+
+
+

Talents

+
+
+
+
+ +
+ + +
+

Talents

+ +
+
+ +
+

Name

+
+
+

From

+
+
+

Information

+
+
+

Desc.

+
+
+
+
+ +
+ +
+
+ +
+
+ +

+
+ +
+
+
+
+
+ + +
+

Skills

+
+ Main Skills +
+
+ Basic +
+
+

Name

+
+
+
+

Training

+
+
+

Mod

+
+
+

Sum

+
+
+

Roll

+
+
+
+
+
+

Animal Care (Int)

+

Charm (Fel)

+

Command (Fel)

+

Concealment (Ag)

+

Consume Alcohol (T)

+

Disguise (Fel)

+

Drive (S)

+

Evaluate (Int)

+

Gamble (Int)

+

Gossip (Fel)

+

Haggle (Fel)

+

Intimidate (S)

+

Outdoor Survival (Int)

+

Perception (Int)

+

Ride (Ag)

+

Row (S)

+

Scale Sheer Surface (S)

+

Search (Int)

+

Silent Move (Ag)

+

Swim (S)

+
+
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+
+ +
+
+ Advanced +
+
+

Name

+
+
+
+

Training

+
+
+

Mod

+
+
+

Sum

+
+
+

Roll

+
+
+
+
+
+

Animal Training (Fel)

+

Blather (Fel)

+

Channeling (WP)

+

Charm Animal (Fel)

+

Dodge Blow (Ag)

+

Follow Trail (Int)

+

Heal (Int)

+

Hypnotism (WP)

+

Lip Reading (Int)

+

Magical Sense (WP)

+

Navigation (Int)

+

Pick Lock (Ag)

+

Prepare Poison (Int)

+

Read/Write (Int)

+

Sail (Ag)

+

Set Trap (Ag)

+

Shadowing (Ag)

+

Sleight of Hand (Ag)

+

Torture (Fel)

+

Ventriloquism (Fel)

+
+
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+
+
+
+
+
+
+ Other Skills +
+
+

Name

+
+
+

Short Desc.

+
+
+

Char.

+
+
+

Training

+
+
+

Mod

+
+
+

Sum

+
+
+

Roll

+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ + +
+

Background

+
+ Information +
+ +
+
+
+

Player Name:

+
+
+ +
+
+
+
+

Campaign:

+
+
+ +
+
+
+
+

Star Sign:

+
+
+ +
+

+

Personality

+
+

Contacts/Friends

+ +
+
+
+
+
+
+

Game Master:

+
+
+ +
+
+
+
+

Campaign Year:

+
+
+ +
+
+
+
+

Doom:

+
+
+ +
+

+

Description

+
+

Enemies

+ +
+
+
+
+
+ History +
+ +
+
+
+
+ Notes +
+ +
+
+
+ + +
+

Combat

+
+ Combat Information +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Weapon SkillBallistic SkillStrengthToughnessAgilityIntelligenceWillpowerFellowshipAttacksWoundsStrength BonusToughness BonusMovementMagicInsanity PointsFate Points
WSBSSTAgIntWPFelAWSBTBMMagIPFP
Temp.:
Current:
+

Current Wounds:

+
+

+
+ Movement +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
M
Armoured M
Move/ Disengage
Charge Attack
Run
Running Leap
Standing Leap
Flying
M x 2
M x 4
M x 6
M x SB
(M+SB)/2
+
+
+

Hampered Movement

+
+
Yards Per Minute
+
Miles Per Hour
+
+
+
+ +
+
+
+

Standard Movement

+
+
Yards Per Minute
+
Miles Per Hour
+
+
+
+ +
+
+
+
+
+
+
+ Action Summary +
+
+
Basic Action
+ Aim
+ Cast
+ Charge
+ Disengage
+ Move
+ Ready
+ Reload
+ Stand/Mount
+ Standard Attack
+ Swift Attack
+ Use a Skill
+
+
+
Type
+ Half
+ Varies
+ Full
+ Full
+ Half
+ Half
+ Varies
+ Half
+ Half
+ Full
+ Varies
+
+
+
+
+
Advanced Action
+ All Out Attack
+ Defensive Stance
+ Delay
+ Feint
+ Guarded Attack
+ Jump/Leap
+ Manoeuvre
+ Parrying Stance
+ Run
+
+
+
Type
+ Full
+ Full
+ Half
+ Half
+ Full
+ Full
+ Half
+ Half
+ Full
+
+
+
+
+ +
+
+
+
+ Armour +
+
+

Advanced Armour

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Armour TypeLocationsEnc.AP
+
+ + + + + + + +
+
+
+
+

Armour Points

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+

Spells

+
+ Description and Powers +
+ +
+
+
+
+

Casting

+
+

Channeling

+ +
+
+

Armor

+ +
+
+
+

Additional Dice

+ +
+
+

Modifier to Total

+ +
+
+

Modifier to Each Dice

+ +
+
+

Chaos Dice

+ +
+
+
+
+
+

Spell Grimoire

+
+
+
+
Spell Name
+ +
Range
+ +
+
+
Cast Number
+ +
Cast Time
+ +
+
+
Duration
+ +
+
+
Ingredients
+ +
+
+
Value
+ +
+
+
+
+
Include Text?
+
+ + +

+
+ Description + +
+
+ Custom Icon: +
+
+
+
+
+ +
+ + +
+

Weapons

+ +
+ Melee Weapons +
+
+
Name
+
+
+
Type
+
+
+
Craftmanship
+
+
+
Impact
+
+
+
Defensive
+
+
+
SB?
+
+
+
Mod
+
+
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + Qualities: +
+
+
+
+
+
+ Ranged Weapons +
+ +
+
Name
+
+
+
Type
+
+
+
Craftmanship
+
+
+
Impact
+
+
+
SB?
+
+
+
Mod
+
+
+
Range
+
+
+
Reload
+
+
+
Ammo
+
+
+
+
+
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ Qualities: +
+
+
+
+
+ + +
+

Career History

+
+
+ Careers +
+
+
+
+
Name:
+
+
+ +
+
+
+
+
Exp. Used:
+
+
+ +
+
+
+
+
Exp. To Finish:
+
+
+ +
+
+
+
+
Finished?
+
+
+ +
+
+ +
+
+
+
Description:
+
+
+ +
+
+
+
+
Career Entries:
+
+
+ +
+
+
+
+
Career Exits:
+
+
+ +
+
+
+
+
+
+
+
+ Characteristics +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PrimarySecondary
Weapon SkillBallistic SkillStrengthToughnessAgilityIntelligenceWillpowerFellowshipAttacksWoundsMovementMagic
WSBSSTAgIntWPFelAWMMag
Current Advances: + + + + + + + + + + + +
Taken Advances: + + + + + + + + + + + +
+
Per Career +
+
+
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+
+
+
+
+
+
+
Skills +
+
+
+ Skill Name +
+
+ Career +
+
+ Taken? +
+
+ Desc. +
+
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+ +
+
+
+
+
+
+
Talents +
+
+
+ Talent Name +
+
+ Career +
+
+ Taken? +
+
+ Desc. +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+
+
+
+
Equipment +
+
+
+ Item Name +
+
+ Career +
+
+ Has? +
+
+ Desc. +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+
+
+
+
+ + +
+

Henchmen

+
+
+
+ Name: + +
+
+ Type: + +
+
+ Amount: + +
+ + Info: + +
+
+

Description

+ +
+
+ +
+
+

Skills:

+
+
+
+
+
+
+
+

Talents:

+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Main

WSBSSTAgIntWPFel

Sec.

AWSBTBMMagIPFP
+
+ +
+
+

Attacks:

+
+
+
+
+
+
+
+
+
+
+ + + +
+

Equipment

+
+ Money & Treasure +
+
+

Gold Crowns (gc)

+ +
+
+

Silver Shillings (s)

+ +
+
+

Brass Pennies (p)

+ +

+
+

Other Treasure

+ +
+
+
+
+
+ Trappings +
+ +
+
+

Item

+
+
+

Location

+
+
+

Enc.

+
+
+
+
+

Item

+
+
+

Location

+
+
+

Enc.

+
+
+

Desc.

+
+
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+ Equipment +
+ +
+
+
+
+
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + {{#Roll}} + + + + + + {{#rollGreater() Roll Stat}} + + {{/rollGreater() Roll Stat}} + {{#rollLess() Roll Stat}} + + {{/rollLess() Roll Stat}} + {{#rollTotal() Roll Stat}} + + {{/rollTotal() Roll Stat}} + {{/Roll}} + + + +
{{name}}
+ +
Stat :{{Stat}} %
Roll :{{Roll}}
FailureSuccess!Success!
+
+ + + + + + + + + + + + + + + + {{#Roll}} + + + + + + + {{#rollBetween() Roll 1 Stat}} + + + + + + {{#DamageTwo}} + + + + + {{/DamageTwo}} + {{#^rollWasCrit() DamageTwo}} + {{#rollWasCrit() Damage}} + + + + {{/rollWasCrit() Damage}} + {{/^rollWasCrit() DamageTwo}} + + {{#rollWasCrit() DamageTwo}} + {{#^rollWasCrit() Damage}} + + + + {{/^rollWasCrit() Damage}} + {{/rollWasCrit() DamageTwo}} + + {{#rollWasCrit() DamageTwo}} + {{#rollWasCrit() Damage}} + + + + {{/rollWasCrit() Damage}} + {{/rollWasCrit() DamageTwo}} + + {{#rollTotal() DamageOne 1}} + {{#rollWasCrit() Damage}} + + + + {{/rollWasCrit() Damage}} + {{/rollTotal() DamageOne 1}} + + + {{#CritConfirm}} + {{#^rollWasCrit() DamageTwo}} + {{#rollWasCrit() Damage}} + + + + {{#rollBetween() CritConfirm 1 Stat}} + + + + {{/rollBetween() CritConfirm 1 Stat}} + {{/rollWasCrit() Damage}} + {{/^rollWasCrit() DamageTwo}} + + {{#rollWasCrit() DamageTwo}} + {{#^rollWasCrit() Damage}} + + + + {{#rollBetween() CritConfirm 1 Stat}} + + + + {{/rollBetween() CritConfirm 1 Stat}} + {{/^rollWasCrit() Damage}} + {{/rollWasCrit() DamageTwo}} + + {{#rollWasCrit() DamageTwo}} + {{#rollWasCrit() Damage}} + + + + {{#rollBetween() CritConfirm 1 Stat}} + + + + {{/rollBetween() CritConfirm 1 Stat}} + {{/rollWasCrit() Damage}} + {{/rollWasCrit() DamageTwo}} + + {{#rollTotal() DamageOne 1}} + {{#rollWasCrit() Damage}} + + + + {{#rollBetween() CritConfirm 1 Stat}} + + + + {{/rollBetween() CritConfirm 1 Stat}} + {{/rollWasCrit() Damage}} + {{/rollTotal() DamageOne 1}} + {{/CritConfirm}} + + {{#Qualities}} + + + + + + + + {{/Qualities}} + {{/rollBetween() Roll 1 Stat}} + {{/Roll}} + +
{{name}}
+ +
Stat :{{Stat}} %
Roll :{{Roll}}
Success!
Damage :{{Damage}}
Impact :{{DamageTwo}}
Urlic's Fury!
Urlic's Fury!
Urlic's Fury!
Urlic's Fury!
Crit Check Roll :{{CritConfirm}}
Crit Damage :+{{Crit}}Crit Check Roll :{{CritConfirm}}
Crit Damage :+{{Crit}}Crit Check Roll :{{CritConfirm}}
Crit Damage :+{{Crit}}Crit Check Roll :{{CritConfirm}}
Crit Damage :+{{Crit}}
Qualities
{{Qualities}}
+
+ + \ No newline at end of file diff --git a/approved.yaml b/approved.yaml index 20ce5802cb..32f48d06a3 100644 --- a/approved.yaml +++ b/approved.yaml @@ -1515,6 +1515,11 @@ warhammerfantasy2e: - "Warhammer Fantasy: 2nd Edition" - "Warhammer" +warhammerfantasy2e_havoc: +- "WFRP2E-Havoc" +- "Warhammer Fantasy: 2nd Edition (Havoc)" +- "Warhammer" + classictraveller: - "Classic_Traveller" - "Classic Traveller" From 69685c2a2e54167cf1071f70374e7260f053227c Mon Sep 17 00:00:00 2001 From: Phil Date: Tue, 2 May 2017 13:00:59 -0600 Subject: [PATCH 2/4] Update sheet.json --- WFRP2E-Havoc/sheet.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WFRP2E-Havoc/sheet.json b/WFRP2E-Havoc/sheet.json index 96b201486b..4c2ec1223e 100644 --- a/WFRP2E-Havoc/sheet.json +++ b/WFRP2E-Havoc/sheet.json @@ -1,7 +1,7 @@ { "html": "wfrp2e-sheet.html", "css": "wfrp2e-sheet.css", - "authors": "Paul "Havoc" Stein", + "authors": "Paul \"Havoc\" Stein", "roll20userid": "55273", "preview": "wfrp2e-preview-v0.1-havoc.png", "instructions": "" From e5a7a98a99115a416b1c08901fe27461d55d3940 Mon Sep 17 00:00:00 2001 From: Timothy Stone Date: Sun, 7 May 2017 16:27:06 -0400 Subject: [PATCH 3/4] Updated the to reflect the required API script. --- WFRP2E-Havoc/sheet.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WFRP2E-Havoc/sheet.json b/WFRP2E-Havoc/sheet.json index 96b201486b..e63910ddce 100644 --- a/WFRP2E-Havoc/sheet.json +++ b/WFRP2E-Havoc/sheet.json @@ -4,5 +4,5 @@ "authors": "Paul "Havoc" Stein", "roll20userid": "55273", "preview": "wfrp2e-preview-v0.1-havoc.png", - "instructions": "" + "instructions": "A WFRP2E Character Sheet by Paul Stein. Requires the the wfrp2e-api script (available in the Roll20 Script repos."" } From 49c9dc70403d03bf9156bbbe1f9044ba103255c9 Mon Sep 17 00:00:00 2001 From: Phil Date: Mon, 8 May 2017 16:13:45 -0600 Subject: [PATCH 4/4] Update sheet.json --- WFRP2E-Havoc/sheet.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WFRP2E-Havoc/sheet.json b/WFRP2E-Havoc/sheet.json index 9758d75b89..7243728e2b 100644 --- a/WFRP2E-Havoc/sheet.json +++ b/WFRP2E-Havoc/sheet.json @@ -4,5 +4,5 @@ "authors": "Paul \"Havoc\" Stein", "roll20userid": "55273", "preview": "wfrp2e-preview-v0.1-havoc.png", - "instructions": "A WFRP2E Character Sheet by Paul Stein. Requires the the wfrp2e-api script (available in the Roll20 Script repos."" + "instructions": "A WFRP2E Character Sheet by Paul Stein. Requires the the wfrp2e-api script (available under the System Toolbox subsection in the Roll20 API Script Library)." }