diff --git a/Chronicles of Darkness/CofD.css b/Chronicles of Darkness/CofD.css index b7e8880742..d0ad371e42 100644 --- a/Chronicles of Darkness/CofD.css +++ b/Chronicles of Darkness/CofD.css @@ -36,6 +36,7 @@ .sheet-geist, .sheet-geist1, .sheet-geist2, +.sheet-geist2-geist, .sheet-geist2-organization, .sheet-changeling, .sheet-changeling1, @@ -71,6 +72,7 @@ input.sheet-type[value="changeling2"] ~ * .sheet-changeling2, input.sheet-game-line[value="geist"] ~ * .sheet-geist, input.sheet-type[value="geist1"] ~ * .sheet-geist1, input.sheet-type[value="geist2"] ~ * .sheet-geist2, +input.sheet-type[value="geist2-geist"] ~ * .sheet-geist2-geist, input.sheet-type[value="geist2-organization"] ~ * .sheet-geist2-organization, input.sheet-game-line[value="mummy"] ~ * .sheet-mummy, input.sheet-type[value="mummy1"] ~ * .sheet-mummy1, @@ -103,6 +105,7 @@ input.sheet-type[value="changeling2"] ~ * div.sheet-changeling2, input.sheet-game-line[value="geist"] ~ * div.sheet-geist, input.sheet-type[value="geist1"] ~ * div.sheet-geist1, input.sheet-type[value="geist2"] ~ * div.sheet-geist2, +input.sheet-type[value="geist2-geist"] ~ * div.sheet-geist2-geist, input.sheet-type[value="geist2-organization"] ~ * div.sheet-geist2-organization, input.sheet-game-line[value="mummy"] ~ * div.sheet-mummy, input.sheet-type[value="mummy1"] ~ * div.sheet-mummy1, @@ -135,6 +138,7 @@ input.sheet-type[value="changeling2"] ~ * table.sheet-changeling2, input.sheet-game-line[value="geist"] ~ * table.sheet-geist, input.sheet-type[value="geist1"] ~ * table.sheet-geist1, input.sheet-type[value="geist2"] ~ * table.sheet-geist2, +input.sheet-type[value="geist2-geist"] ~ * table.sheet-geist2-geist, input.sheet-type[value="geist2-organization"] ~ * table.sheet-geist2-organization, input.sheet-game-line[value="mummy"] ~ * table.sheet-mummy, input.sheet-type[value="mummy1"] ~ * table.sheet-mummy1, @@ -160,8 +164,16 @@ input.sheet-edition[value="1"] ~ * .sheet-2nd, input.sheet-edition[value="2"] ~ * .sheet-1st, input.sheet-entity:not([value="corporeal"]) ~ .sheet-corporeal, input.sheet-entity:not([value="corporeal"]) ~ * .sheet-corporeal, +input.sheet-entity[value="corporeal"] ~ .sheet-corporeal-inverse, +input.sheet-entity[value="corporeal"] ~ * .sheet-corporeal-inverse, +input.sheet-entity:not([value="ephemeral"]) ~ .sheet-ephemeral, +input.sheet-entity:not([value="ephemeral"]) ~ * .sheet-ephemeral, +input.sheet-entity[value="ephemeral"] ~ .sheet-ephemeral-inverse, +input.sheet-entity[value="ephemeral"] ~ * .sheet-ephemeral-inverse, input.sheet-entity:not([value="organization"]) ~ .sheet-organization, -input.sheet-entity:not([value="organization"]) ~ * .sheet-organization { +input.sheet-entity:not([value="organization"]) ~ * .sheet-organization, +input.sheet-entity[value="organization"] ~ .sheet-organization-inverse, +input.sheet-entity[value="organization"] ~ * .sheet-organization-inverse { display: none !important; } @@ -314,6 +326,7 @@ input.sheet-type[value="changeling2"] ~ * button.sheet-active-changeling2, input.sheet-type[value="hunter"] ~ * button.sheet-active-hunter, input.sheet-type[value="geist1"] ~ * button.sheet-active-geist1, input.sheet-type[value="geist2"] ~ * button.sheet-active-geist2, +input.sheet-type[value="geist2-geist"] ~ * button.sheet-active-geist2-geist, input.sheet-type[value="geist2-organization"] ~ * button.sheet-active-geist2-organization, input.sheet-type[value="mummy1"] ~ * button.sheet-active-mummy1, input.sheet-type[value="mummy2"] ~ * button.sheet-active-mummy2, @@ -391,6 +404,7 @@ input.sheet-game-line[value="changeling"] ~ * input.sheet-weapon:checked + span input.sheet-type[value="geist1"] ~ * button.sheet-active-geist1, input.sheet-type[value="geist2"] ~ * button.sheet-active-geist2, +input.sheet-type[value="geist2-geist"] ~ * button.sheet-active-geist2-geist, input.sheet-type[value="geist2-organization"] ~ * button.sheet-active-geist2-organization, input.sheet-game-line[value="geist"] + span.sheet-attr, input.sheet-game-line[value="geist"] ~ input.sheet-attr:checked + span.sheet-attr, @@ -543,12 +557,10 @@ input.sheet-game-line[value="hunter"] ~ * input.sheet-weapon:checked + span + .s } .charsheet textarea { - display: inline-block; - width:100%; - margin:1px 0px; - resize:none; - font-family: "Courier"; - color: #000000; + margin:10px 0 0 0; + resize:vertical; + width: calc(100% - 10px); + height: 74px; } .sheet-flex { @@ -666,6 +678,7 @@ input.sheet-game-line[value="hunter"] ~ * input.sheet-weapon:checked + span + .s font-size: 0.8em; text-align: center; font-style: italic; + font-weight: bolder; } .sheet-otherattributes { @@ -838,11 +851,11 @@ input[type="checkbox"].sheet-checkbox:checked + span::before /* Remove dot from all radios _after_ selected one */ input[type="radio"].sheet-dot:checked ~ input[type="radio"] + span::before, input[type="hidden"][value="0"] ~ input[type="radio"].sheet-dot + span::before, -input[type="hidden"][value="1"] ~ input[type="radio"].sheet-dot.sheet-gt-1 + span::before, -input[type="hidden"][value="2"] ~ input[type="radio"].sheet-dot.sheet-gt-2 + span::before, -input[type="hidden"][value="3"] ~ input[type="radio"].sheet-dot.sheet-gt-3 + span::before, -input[type="hidden"][value="4"] ~ input[type="radio"].sheet-dot.sheet-gt-4 + span::before, -input[type="hidden"][value="5"] ~ input[type="radio"].sheet-dot.sheet-gt-5 + span::before +input[type="hidden"][value="1"] ~ input[type="radio"].sheet-dot.sheet-ne-1 + span::before, +input[type="hidden"][value="2"] ~ input[type="radio"].sheet-dot.sheet-ne-2 + span::before, +input[type="hidden"][value="3"] ~ input[type="radio"].sheet-dot.sheet-ne-3 + span::before, +input[type="hidden"][value="4"] ~ input[type="radio"].sheet-dot.sheet-ne-4 + span::before, +input[type="hidden"][value="5"] ~ input[type="radio"].sheet-dot.sheet-ne-5 + span::before { content: ""; } @@ -857,16 +870,16 @@ button.sheet-dot { } button.sheet-dot.sheet-active, -input[type="hidden"][value="1"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-gt-1), -input[type="hidden"][value="2"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-gt-2), -input[type="hidden"][value="3"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-gt-3), -input[type="hidden"][value="4"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-gt-4), -input[type="hidden"][value="5"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-gt-5), -input[type="hidden"][value="6"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-gt-6), -input[type="hidden"][value="7"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-gt-7), -input[type="hidden"][value="8"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-gt-8), -input[type="hidden"][value="9"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-gt-9), -input[type="hidden"][value="10"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-gt-10) { +input[type="hidden"][value="1"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-ne-1), +input[type="hidden"][value="2"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-ne-2), +input[type="hidden"][value="3"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-ne-3), +input[type="hidden"][value="4"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-ne-4), +input[type="hidden"][value="5"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-ne-5), +input[type="hidden"][value="6"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-ne-6), +input[type="hidden"][value="7"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-ne-7), +input[type="hidden"][value="8"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-ne-8), +input[type="hidden"][value="9"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-ne-9), +input[type="hidden"][value="10"] ~ button.sheet-dot:not(.sheet-zero):not(.sheet-ne-10) { background: #404040; background: -moz-radial-gradient(#404040, #404040); background: -webkit-radial-gradient(#404040, #404040); @@ -1117,32 +1130,27 @@ input.sheet-zero:hover + span::before { display: inline-block; } -.sheet-healthboxes { - display: flex; - justify-content: center; -} - .sheet-spread { justify-content: space-evenly; padding: 10px; } -.sheet-healthboxes > input[value="1"] ~ .sheet-gt-1, -.sheet-healthboxes > input[value="2"] ~ .sheet-gt-2, -.sheet-healthboxes > input[value="3"] ~ .sheet-gt-3, -.sheet-healthboxes > input[value="4"] ~ .sheet-gt-4, -.sheet-healthboxes > input[value="5"] ~ .sheet-gt-5, -.sheet-healthboxes > input[value="6"] ~ .sheet-gt-6, -.sheet-healthboxes > input[value="7"] ~ .sheet-gt-7, -.sheet-healthboxes > input[value="8"] ~ .sheet-gt-8, -.sheet-healthboxes > input[value="9"] ~ .sheet-gt-9, -.sheet-healthboxes > input[value="10"] ~ .sheet-gt-10, -.sheet-healthboxes > input[value="11"] ~ .sheet-gt-11, -.sheet-healthboxes > input[value="12"] ~ .sheet-gt-12, -.sheet-healthboxes > input[value="13"] ~ .sheet-gt-13, -.sheet-healthboxes > input[value="14"] ~ .sheet-gt-14, -.sheet-healthboxes > input[value="15"] ~ .sheet-gt-15, -.sheet-healthboxes > input[value="16"] ~ .sheet-gt-16 { +input.sheet-if[value="1"] ~ .sheet-ne-1, +input.sheet-if[value="2"] ~ .sheet-ne-2, +input.sheet-if[value="3"] ~ .sheet-ne-3, +input.sheet-if[value="4"] ~ .sheet-ne-4, +input.sheet-if[value="5"] ~ .sheet-ne-5, +input.sheet-if[value="6"] ~ .sheet-ne-6, +input.sheet-if[value="7"] ~ .sheet-ne-7, +input.sheet-if[value="8"] ~ .sheet-ne-8, +input.sheet-if[value="9"] ~ .sheet-ne-9, +input.sheet-if[value="10"] ~ .sheet-ne-10, +input.sheet-if[value="11"] ~ .sheet-ne-11, +input.sheet-if[value="12"] ~ .sheet-ne-12, +input.sheet-if[value="13"] ~ .sheet-ne-13, +input.sheet-if[value="14"] ~ .sheet-ne-14, +input.sheet-if[value="15"] ~ .sheet-ne-15, +input.sheet-if[value="16"] ~ .sheet-ne-16 { display: none; } @@ -1410,14 +1418,6 @@ input[type=number] { padding: 0; } -.sheet-page2 textarea, -.sheet-page3 textarea { - resize:vertical; - width: calc(100% - 10px); - margin-top: 10px; - height: 74px; -} - .sheet-page2 .sheet-customroll { border: solid 1px black; border-radius: 4px; diff --git a/Chronicles of Darkness/CofD.html b/Chronicles of Darkness/CofD.html index a42e84b50d..32afa6ff6e 100644 --- a/Chronicles of Darkness/CofD.html +++ b/Chronicles of Darkness/CofD.html @@ -54,6 +54,10 @@
+ + @@ -67,7 +71,15 @@ - + + + + + @@ -78,17 +90,7 @@
-
- -
Organization
- -
- - - -
- -
+
@@ -226,7 +228,7 @@
- Virtue: + Virtue: Mask: Blood: Life: @@ -238,6 +240,7 @@
Age: + Ban: Doctrine: Clan: Auspice: @@ -255,12 +258,13 @@
Player: + Sin-Eater: Archetype:
- Vice: + Vice: Creed: Dirge: Bone: @@ -273,6 +277,7 @@
Faction: + Bane: Doctrine: Bloodline: Tribe: @@ -308,6 +313,7 @@ Role: Court: Krewe: + Trigger: Judge: Catalyst: Horror: @@ -403,7 +409,8 @@
-
+ +
@@ -412,15 +419,15 @@
- - - - - - - - - + + + + + + + + +
@@ -434,15 +441,15 @@
- - - - - - - - - + + + + + + + + +
@@ -456,15 +463,15 @@
- - - - - - - - - + + + + + + + + +
@@ -720,9 +727,9 @@
-
OTHER TRAITS
+
OTHER TRAITS
-
+
@@ -734,10 +741,10 @@ - - - - + + + +
@@ -746,10 +753,10 @@ - - - - + + + +
@@ -758,10 +765,10 @@ - - - - + + + +
@@ -770,10 +777,10 @@ - - - - + + + +
@@ -782,10 +789,10 @@ - - - - + + + +
@@ -794,10 +801,10 @@ - - - - + + + +
@@ -806,10 +813,10 @@ - - - - + + + +
@@ -818,10 +825,10 @@ - - - - + + + +
@@ -830,10 +837,10 @@ - - - - + + + +
@@ -842,10 +849,10 @@ - - - - + + + +
@@ -854,10 +861,10 @@ - - - - + + + +
@@ -866,10 +873,10 @@ - - - - + + + +
@@ -878,10 +885,10 @@ - - - - + + + +
@@ -890,10 +897,10 @@ - - - - + + + +
@@ -902,10 +909,10 @@ - - - - + + + +
@@ -914,10 +921,10 @@ - - - - + + + +
@@ -945,10 +952,10 @@ - - - - + + + +
@@ -957,10 +964,10 @@ - - - - + + + +
@@ -969,10 +976,10 @@ - - - - + + + +
@@ -981,10 +988,10 @@ - - - - + + + +
@@ -993,10 +1000,10 @@ - - - - + + + +
@@ -1005,10 +1012,10 @@ - - - - + + + +
@@ -1017,10 +1024,10 @@ - - - - + + + +
@@ -1029,10 +1036,10 @@ - - - - + + + +
@@ -1041,10 +1048,10 @@ - - - - + + + +
@@ -1053,10 +1060,10 @@ - - - - + + + +
@@ -1065,10 +1072,10 @@ - - - - + + + +
@@ -1077,10 +1084,10 @@ - - - - + + + +
@@ -1089,10 +1096,10 @@ - - - - + + + +
@@ -1101,10 +1108,10 @@ - - - - + + + +
@@ -1113,10 +1120,10 @@ - - - - + + + +
@@ -1125,10 +1132,10 @@ - - - - + + + +
@@ -1146,10 +1153,10 @@ - - - - + + + +
@@ -1159,10 +1166,10 @@ - - - - + + + +
@@ -1172,10 +1179,10 @@ - - - - + + + +
@@ -1185,10 +1192,10 @@ - - - - + + + +
@@ -1198,10 +1205,10 @@ - - - - + + + +
@@ -1211,10 +1218,10 @@ - - - - + + + +
@@ -1224,10 +1231,10 @@ - - - - + + + +
@@ -1237,10 +1244,10 @@ - - - - + + + +
@@ -1250,10 +1257,10 @@ - - - - + + + +
@@ -1263,10 +1270,10 @@ - - - - + + + +
@@ -1276,10 +1283,10 @@ - - - - + + + +
@@ -1289,10 +1296,10 @@ - - - - + + + +
@@ -1301,10 +1308,10 @@ - - - - + + + +
@@ -1313,10 +1320,10 @@ - - - - + + + +
@@ -1325,10 +1332,10 @@ - - - - + + + +
@@ -1337,10 +1344,10 @@ - - - - + + + +
@@ -1358,10 +1365,10 @@ - - - - + + + +
@@ -1371,10 +1378,10 @@ - - - - + + + +
@@ -1384,10 +1391,10 @@ - - - - + + + +
@@ -1397,10 +1404,10 @@ - - - - + + + +
@@ -1410,10 +1417,10 @@ - - - - + + + +
@@ -1423,10 +1430,10 @@ - - - - + + + +
@@ -1436,10 +1443,10 @@ - - - - + + + +
@@ -1449,10 +1456,10 @@ - - - - + + + +
@@ -1462,10 +1469,10 @@ - - - - + + + +
@@ -1475,10 +1482,10 @@ - - - - + + + +
@@ -1487,10 +1494,10 @@ - - - - + + + +
@@ -1499,10 +1506,10 @@ - - - - + + + +
@@ -1511,10 +1518,10 @@ - - - - + + + +
@@ -1523,10 +1530,10 @@ - - - - + + + +
@@ -1535,10 +1542,10 @@ - - - - + + + +
@@ -1547,10 +1554,10 @@ - - - - + + + +
@@ -1725,19 +1732,56 @@ +
+
+
+
+ Remembrances +
+ +
+
+
+
+ Crisis Point Triggers +
+
+ Hazy +
+
+ +
+
+
+ Vague +
+
+ +
+
+
+ Specific +
+
+ +
+
+
+
@@ -2221,38 +2266,63 @@ + + - + - - + + + + + - - + + + + + + - - - - - - + + + + + + + +
Health + Corpus Membership Congregation
-
- +
+
@@ -1747,7 +1791,7 @@
-
+
@@ -1756,7 +1800,7 @@
-
+
@@ -1765,7 +1809,7 @@
-
+
@@ -1774,7 +1818,7 @@
-
+
@@ -1783,7 +1827,7 @@
-
+
@@ -1792,7 +1836,7 @@
-
+
@@ -1801,7 +1845,7 @@
-
+
@@ -1810,7 +1854,7 @@
-
+
@@ -1819,7 +1863,7 @@
-
+
@@ -1828,7 +1872,7 @@
-
+
@@ -1837,7 +1881,7 @@
-
+
@@ -1846,7 +1890,7 @@
-
+
@@ -1855,7 +1899,7 @@
-
+
@@ -1864,7 +1908,7 @@
-
+
@@ -1873,7 +1917,7 @@
-
+
@@ -1883,22 +1927,22 @@
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
- -1 +
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+ -1 -2 -3
@@ -1940,8 +1984,8 @@
-
- +
+
@@ -1951,7 +1995,7 @@
-
+
@@ -1960,7 +2004,7 @@
-
+
@@ -1969,7 +2013,7 @@
-
+
@@ -1978,7 +2022,7 @@
-
+
@@ -1987,7 +2031,7 @@
-
+
@@ -1996,7 +2040,7 @@
-
+
@@ -2005,7 +2049,7 @@
-
+
@@ -2014,7 +2058,7 @@
-
+
@@ -2023,7 +2067,7 @@
-
+
@@ -2032,7 +2076,7 @@
-
+
@@ -2041,7 +2085,7 @@
-
+
@@ -2050,7 +2094,7 @@
-
+
@@ -2059,7 +2103,7 @@
-
+
@@ -2068,7 +2112,7 @@
-
+
@@ -2077,7 +2121,7 @@
-
+
@@ -2128,6 +2172,7 @@
+ Rank Standing Blood Potency Primal Urge @@ -2147,15 +2192,15 @@
- - - - - - - - - + + + + + + + + +
Size:Innate Key
Speed:/ + +
Defense:+ +
+ Size:
Armor:/ + + Speed: + /
Initiative:+ + Defense: + + +
+ Armor:/ +
+ Initiative: + +
-
- Experience - : - -
-
Beats:
+
+ Experience + : + +
+
Beats:
@@ -3161,7 +3231,7 @@ var normalStats = [ ...attributes, ...skills ]; var powers = ["animalism","auspex","celerity","dominate","majesty","nightmare","obfuscate","protean","resilience","vigor","crĂșac","thebansorcery","death","fate","forces","life","matter","mind","prime","spirit","space","time"]; var allStats = [ ...attributes, ...skills, ...powers, "potency" ]; - var potencyNames = { mortal1:"", mortal2:"", "mortal2-organization":"Standing", vampire1:"Blood Potency", vampire2:"Blood Potency", werewolf1:"Primal Urge", werewolf2:"Primal Urge", mage1:"Gnosis", mage2:"Gnosis", promethean1:"Azoth", promethean2:"Azoth", changeling1:"Wyrd", changeling2:"Wyrd", demon:"Primum", beast:"Lair", hunter:"", geist1:"Psyche", geist2:"Synergy", "geist2-organization":"Esotery", mummy1:"Sekhem" }; + var potencyNames = { mortal1:"", mortal2:"", "mortal2-organization":"Standing", vampire1:"Blood Potency", vampire2:"Blood Potency", werewolf1:"Primal Urge", werewolf2:"Primal Urge", mage1:"Gnosis", mage2:"Gnosis", promethean1:"Azoth", promethean2:"Azoth", changeling1:"Wyrd", changeling2:"Wyrd", demon:"Primum", beast:"Lair", hunter:"", geist1:"Psyche", geist2:"Synergy", "geist2-geist":"Rank", "geist2-organization":"Esotery", mummy1:"Sekhem" }; [ ...allStats, "rolltype" ].forEach((attr) => { on(`change:${attr} change:${attr}_flag`, (eventInfo) => { @@ -3178,12 +3248,21 @@ if (source === "wits" || source === "composure") { updateMoralHealth(); }; + + var speedStats = ["dexterity","strength","power","finesse"]; + if (speedStats.includes(source)) { + updateSpeed(); + } - if (source === "wits" || source === "dexterity" || source === "athletics" || source === "brawl" || source === "weaponry") { - getAttrs(["defense_select"], (v) => { // PRD-1407 - updateDefense(v.defense_select); - }); + var defenseStats = ["wits", "dexterity", "athletics", "brawl", "weaponry", "potency", "power", "finesse"]; + if (defenseStats.includes(source)) { + updateDefense(); }; + + var initiativeStats = ["dexterity", "composure", "finesse", "resistance"] + if (initiativeStats.includes(source)) { + updateInitiative(); + } if (source === "stamina" || source === "resilience" || source === "resistance") { updateHealth(); @@ -3298,7 +3377,7 @@ const sheettypes = [ "mortal1","vampire1","werewolf1","mage1","promethean1","changeling1","hunter","geist1","mummy1", - "mortal2","vampire2","werewolf2","mage2","promethean2","changeling2","hunter2","geist2","mummy2","demon","beast", + "mortal2","vampire2","werewolf2","mage2","promethean2","changeling2","hunter2","geist2","geist2-geist","mummy2","demon","beast", "mortal2-organization","geist2-organization" ]; sheettypes.forEach(sheettype => { @@ -3318,7 +3397,9 @@ on("change:sheettype", function() { updateHealth(); + updateSpeed(); updateDefaultDefense(); + updateInitiative(); updatePotencyName(); updateRollType(); const resetRollFlagAttrs = resetRollFlags(); @@ -3336,8 +3417,8 @@ updateMoralHealth(); }); - on("change:defense_select", function(eventInfo) { - updateDefense(eventInfo.newValue); + on("change:defense_select", function() { + updateDefense(); }); on("change:iron_stamina", function() { @@ -3354,7 +3435,9 @@ }); on("sheet:opened", function() { + updateSpeed(); updateDefaultDefense(); + updateInitiative(); updatePotencyName(); updateRollType(); }); @@ -3424,6 +3507,7 @@ return "changeling"; case "geist1": case "geist2": + case "geist2-geist": case "geist2-organization": return "geist"; case "hunter": @@ -3458,6 +3542,7 @@ case "promethean2": case "changeling2": case "geist2": + case "geist2-geist": case "hunter2": case "mummy2": case "demon": @@ -3492,6 +3577,8 @@ case "beast": default: return "corporeal"; + case "geist2-geist": + return "ephemeral"; case "mortal2-organization": case "geist2-organization": return "organization"; @@ -3654,6 +3741,9 @@ health = health + parseInt(v.resilience, 10); } break; + case "ephemeral": + health = parseInt(v.resistance || 1) + parseInt(v.base_size || 1) + parseInt(v.giant || 0) + parseInt(v.small_framed || 0) + parseInt(v.bonus_health || 0); + break; case "organization": health = 5 + parseInt(v.resistance || 1); break; @@ -3714,44 +3804,83 @@ }); }); } + + var updateSpeed = function() { + getAttrs(["entity","strength","dexterity","power","finesse"], function(v) { + var speed; + switch(v.entity) { + case "corporeal": + default: + var strength = parseInt(v.strength) || 1; + var dexterity = parseInt(v.dexterity) || 1; + speed = strength + dexterity; + break; + case "ephemeral": + var power = parseInt(v.power) || 1; + var finesse = parseInt(v.finesse) || 1; + speed = power + finesse; + break; + } + + setAttrs({speed_base: speed}); + }); + } - var updateDefense = function(defense_type = "lowest") { - getAttrs(["athletics","brawl","dexterity","weaponry","wits"], function(v) { - var athletics = (parseInt(v.athletics, 10) || 0); - var brawl = (parseInt(v.brawl, 10) || 10); // PRD-1407 - var dexterity = (parseInt(v.dexterity, 10) || 0); - var weaponry = (parseInt(v.weaponry, 10) || 10); // PRD-1407 - var wits = (parseInt(v.wits, 10) || 10); + var updateDefense = function() { + getAttrs(["defense_select","entity","athletics","brawl","dexterity","weaponry","wits","potency","power","finesse"], function(v) { var defense; - switch (defense_type) { - case "lowest": - defense = Math.min(dexterity, wits); + switch(v.entity) { + case "corporeal": + default: + defense = getCorporealDefense(v); break; - case "highest": - defense = Math.max(dexterity, wits); - break; - case "wits": - defense = wits; - break; - case "dexterity": - defense = dexterity; - break; - case "lowest_plus_athletics": - defense = Math.min(dexterity, wits) + athletics; - break; - case "lowest_plus_brawl": - defense = Math.min(dexterity, wits) + brawl; - break; - case "lowest_plus_weaponry": - defense = Math.min(dexterity, wits) + weaponry; + case "ephemeral": + defense = getEphemeralDefense(v); break; } setAttrs({defense_base: defense}); }); } + + var getCorporealDefense = function(v) { + var dexterity = parseInt(v.dexterity, 10) || 0; + var wits = parseInt(v.wits, 10) || 10; + + switch (v.defense_select) { + case "lowest": + return Math.min(dexterity, wits); + case "highest": + return Math.max(dexterity, wits); + case "wits": + return wits; + case "dexterity": + return dexterity; + case "lowest_plus_athletics": + var athletics = parseInt(v.athletics, 10) || 0; + return Math.min(dexterity, wits) + athletics; + case "lowest_plus_brawl": + var brawl = parseInt(v.brawl, 10) || 10; // PRD-1407 + return Math.min(dexterity, wits) + brawl; + case "lowest_plus_weaponry": + var weaponry = parseInt(v.weaponry, 10) || 10; // PRD-1407 + return Math.min(dexterity, wits) + weaponry; + } + } + + var getEphemeralDefense = function(v) { + var rank = parseInt(v.potency) || 1; + var power = parseInt(v.power) || 1; + var finesse = parseInt(v.finesse) || 1; + + if (rank === 1) { + return Math.max(power, finesse); + } + + return Math.min(power, finesse); + } var updateDefaultDefense = function() { - getAttrs(["sheettype"], function(v) { + getAttrs(["sheettype", "defense_select"], function(v) { var defense; if (getEdition(v.sheettype) === 2) { defense = "lowest_plus_athletics"; @@ -3759,9 +3888,34 @@ else { defense = "lowest"; } + if (v.defense_select === defense) { + return updateDefense(); + } + setAttrs({defense_select: defense}); }); } + + var updateInitiative = function() { + getAttrs(["entity", "dexterity", "composure", "finesse", "resistance"], function(v) { + var initiative; + switch(v.entity) { + case "corporeal": + default: + var dexterity = parseInt(v.dexterity) || 1; + var composure = parseInt(v.composure) || 1; + initiative = dexterity + composure; + break; + case "ephemeral": + var finesse = parseInt(v.finesse) || 1; + var resistance = parseInt(v.resistance) || 1; + initiative = finesse + resistance; + break; + } + + setAttrs({initiative_base: initiative}); + }); + } var getWoundPenalties = function(ironStamina) { var maxPenalty = Math.min(ironStamina, 3) - 3; diff --git a/Chronicles of Darkness/README.md b/Chronicles of Darkness/README.md new file mode 100644 index 0000000000..98fd5e42dd --- /dev/null +++ b/Chronicles of Darkness/README.md @@ -0,0 +1,9 @@ +# Community Sheet + +This is the community-contributed version of the [Chronicles of Darkness by Roll20](https://github.com/Roll20/roll20-character-sheets/tree/master/Chronicles%20of%20Darkness%20by%20Roll20) sheet. It was forked after Oct 21, 2019. + +Changes include: +1. (various stylistic / formatting updates) +2. Geist: The Sin-Eaters Second Edition +3. Krewe sheet for Geist: The Sin-Eaters Second Edition (also available as generic Organization sheet) +4. Geist sheet for Geist: The Sin-Eaters Second Edition diff --git a/Chronicles of Darkness/_translation.json b/Chronicles of Darkness/_translation.json index 88feaba369..36c296d88e 100644 --- a/Chronicles of Darkness/_translation.json +++ b/Chronicles of Darkness/_translation.json @@ -5,19 +5,19 @@ "page-3":"Page 3", "first-edition":"1st Edition,", "chronicles-of-darkness":"Chronicles of Darkness", + "organization":"Organization", "vampire-the-requiem":"Vampire the Requiem", "werewolf-the-forsaken":"Werewolf the Forsaken", "mage-the-awakening":"Mage the Awakening", "promethean-the-create":"Promethean the Created", "changeling-the-lost":"Changeling the Lost", "hunter-the-vigil":"Hunter the Vigil", - "geist-the-sin-eaters":"Geist the Sin Eaters", + "geist-the-sin-eaters":"Geist the Sin-Eaters", + "geist":"Geist", "mummy-the-curse":"Mummy the Curse", "second-edition":"2nd Edition", "demon-the-descent":"Demon the Descent", "beast-the-primordial":"Beast the Primordial", - "organization":"Organization", - "sin-eater-krewe":"Sin-Eater Krewe", "dice-roller-u":"DICE ROLLER", "roll-initiative":"Roll Initiative", "sheet-roll":"Sheet Roll", @@ -71,6 +71,7 @@ "family":"Family:", "profession":"Profession:", "player":"Player:", + "sin-eater-c":"Sin-Eater:", "vice":"Vice:", "dirge":"Dirge:", "bone":"Bone:", @@ -105,6 +106,9 @@ "catalyst":"Catalyst:", "horror":"Horror", "creed":"Creed:", + "ban":"Ban:", + "bane":"Bane:", + "trigger-c":"Trigger:", "doctrine":"Doctrine:", "attributes-u":"ATTRIBUTES", "power":"Power", @@ -336,6 +340,14 @@ "ceremonies":"Ceremonies", "members":"Members", "regalia":"Regalia", + "corpus":"Corpus", + "rank":"Rank", + "remembrances":"Remembrances", + "innate-key":"Innate Key", + "crisis-point-triggers":"Crisis Point Triggers", + "hazy":"Hazy", + "vague":"Vague", + "specific":"Specific", "membership":"Membership", "congregation":"Congregation", "standing":"Standing", diff --git a/Chronicles of Darkness/translations/en.json b/Chronicles of Darkness/translations/en.json index ae86c430c9..6a217a16e6 100644 --- a/Chronicles of Darkness/translations/en.json +++ b/Chronicles of Darkness/translations/en.json @@ -5,19 +5,19 @@ "page-3": "Page 3", "first-edition": "1st Edition,", "chronicles-of-darkness": "Chronicles of Darkness", + "organization": "Organization", "vampire-the-requiem": "Vampire the Requiem", "werewolf-the-forsaken": "Werewolf the Forsaken", "mage-the-awakening": "Mage the Awakening", "promethean-the-create": "Promethean the Created", "changeling-the-lost": "Changeling the Lost", "hunter-the-vigil": "Hunter the Vigil", - "geist-the-sin-eaters": "Geist the Sin Eaters", + "geist-the-sin-eaters": "Geist the Sin-Eaters", + "geist": "Geist", "mummy-the-curse": "Mummy the Curse", "second-edition": "2nd Edition", "demon-the-descent": "Demon the Descent", "beast-the-primordial": "Beast the Primordial", - "organization": "Organization", - "sin-eater-krewe": "Sin-Eater Krewe", "dice-roller-u": "DICE ROLLER", "roll-initiative": "Roll Initiative", "sheet-roll": "Sheet Roll", @@ -71,6 +71,7 @@ "family": "Family:", "profession": "Profession:", "player": "Player:", + "sin-eater-c": "Sin-Eater:", "vice": "Vice:", "dirge": "Dirge:", "bone": "Bone:", @@ -105,6 +106,9 @@ "catalyst": "Catalyst:", "horror": "Horror", "creed": "Creed:", + "ban": "Ban:", + "bane": "Bane:", + "trigger-c": "Trigger:", "doctrine": "Doctrine:", "attributes-u": "ATTRIBUTES", "power": "Power", @@ -336,6 +340,14 @@ "ceremonies": "Ceremonies", "members": "Members", "regalia": "Regalia", + "corpus": "Corpus", + "rank": "Rank", + "remembrances": "Remembrances", + "innate-key": "Innate Key", + "crisis-point-triggers": "Crisis Point Triggers", + "hazy": "Hazy", + "vague": "Vague", + "specific": "Specific", "membership": "Membership", "congregation": "Congregation", "standing": "Standing",