From 19b954b191e26c1349f081c886dedfaf9bdae0cc Mon Sep 17 00:00:00 2001 From: Jakob Date: Fri, 9 Apr 2021 01:42:00 +0200 Subject: [PATCH] Add support for NPCs --- Die_Schwarze_Katze/Die_Schwarze_Katze.css | 78 ++++- Die_Schwarze_Katze/Die_Schwarze_Katze.html | 387 ++++++++++++++------- Die_Schwarze_Katze/sheet.json | 2 +- 3 files changed, 342 insertions(+), 125 deletions(-) diff --git a/Die_Schwarze_Katze/Die_Schwarze_Katze.css b/Die_Schwarze_Katze/Die_Schwarze_Katze.css index b779d411b2..e539148ebc 100644 --- a/Die_Schwarze_Katze/Die_Schwarze_Katze.css +++ b/Die_Schwarze_Katze/Die_Schwarze_Katze.css @@ -1,6 +1,11 @@ @import url('https://fonts.googleapis.com/css?family=Philosopher&display=swap'); /* ------------------ Tab selection ------------------ */ + +div { /* Roll20 bug workaround - the first CSS rule is ignored by Roll20 at the moment */ + display: block; +} + .sheet-charactertab, .sheet-skillstab, .sheet-ancestortab, @@ -28,6 +33,10 @@ background-color: var(--theme-bg-color); } +input[type="checkbox"].sheet-nsc-charactersheet:checked + .sheet-container { + border-color: rgb(71 151 255); +} + .sheet-tab-navi { margin-bottom: 20px; display: grid; @@ -187,6 +196,7 @@ input[type="checkbox"].sheet-detail-toggle:checked + label::before { .sheet-character-container { display: grid; grid-template-areas: "baseinfo" + "nsc-info" "combat" "vorteilenachteilesonderfertigkeiten"; } @@ -196,7 +206,8 @@ input[type="checkbox"].sheet-detail-toggle:checked + label::before { .sheet-character-base-info-3, .sheet-character-base-info-4, .sheet-character-base-info-eigenschaften, -.sheet-character-combat-container { +.sheet-character-combat-container, +.sheet-nsc-additional-info-container { border: 2px solid var(--theme-2nd-color); padding: 5px; } @@ -391,7 +402,11 @@ h3.sheet-character-status-label { .sheet-base-info-character-rudel, .sheet-base-info-character-rasse, .sheet-base-info-character-geschlecht, -.sheet-base-info-character-alter { +.sheet-base-info-character-alter, +.sheet-base-info-character-typus, +.sheet-base-info-character-groesse, +.sheet-base-info-character-gewicht, +.sheet-base-info-character-laenge { width: 120px; } @@ -403,6 +418,24 @@ h3.sheet-character-status-label { margin-left: -15px; } +/* NSC additional info */ +.sheet-nsc-additional-info-container { + grid-area: nsc-info; + display: none; +} + +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-nsc-additional-info-container { + display: grid; + padding: 5px; + margin-bottom: 10px; + grid-template-columns: 1105px; +} + +.sheet-nsc-additional-info-container textarea { + margin-bottom: 0; + width: 95% +} + /* Kampf / Waffen */ .sheet-character-combat-container { @@ -715,6 +748,47 @@ input[type="checkbox"].sheet-toggle-characterstatus-detail + label::before { margin-left: 10px; } +input[type="checkbox"].sheet-nsc-charactersheet { + display: none; +} + +input[type="checkbox"].sheet-nsc-charactersheet:not(:checked) ~ div .sheet-fw:read-only, +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-fw:not(:read-only), +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-pw:read-only, +input[type="checkbox"].sheet-nsc-charactersheet:not(:checked) ~ div .sheet-pw:not(:read-only), +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-aw:read-only, +input[type="checkbox"].sheet-nsc-charactersheet:not(:checked) ~ div .sheet-aw:not(:read-only), +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-vw:read-only, +input[type="checkbox"].sheet-nsc-charactersheet:not(:checked) ~ div .sheet-vw:not(:read-only), + +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-player-character-sheet, +input[type="checkbox"].sheet-nsc-charactersheet:not(checked) ~ div .sheet-nsc-sheet-block, +input[type="checkbox"].sheet-nsc-charactersheet:not(checked) ~ div .sheet-nsc-sheet-inline, +input[type="checkbox"].sheet-nsc-charactersheet:not(checked) ~ div .sheet-nsc-sheet-inline-block { + display: none; +} + +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-fw:read-only, +input[type="checkbox"].sheet-nsc-charactersheet:not(:checked) ~ div .sheet-fw:not(:read-only), +input[type="checkbox"].sheet-nsc-charactersheet:not(:checked) ~ div .sheet-pw:read-only, +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-pw:not(:read-only), +input[type="checkbox"].sheet-nsc-charactersheet:not(:checked) ~ div .sheet-aw:read-only, +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-aw:not(:read-only), +input[type="checkbox"].sheet-nsc-charactersheet:not(:checked) ~ div .sheet-vw:read-only, +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-vw:not(:read-only), + +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-nsc-sheet-block { + display: block; +} + +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-nsc-sheet-inline-block { + display: inline-block; +} + +input[type="checkbox"].sheet-nsc-charactersheet:checked ~ div .sheet-nsc-sheet-inline { + display: inline; +} + .sheet-skill-wissender label { padding-right: 2px; } diff --git a/Die_Schwarze_Katze/Die_Schwarze_Katze.html b/Die_Schwarze_Katze/Die_Schwarze_Katze.html index c9ada652a8..54d39d1197 100644 --- a/Die_Schwarze_Katze/Die_Schwarze_Katze.html +++ b/Die_Schwarze_Katze/Die_Schwarze_Katze.html @@ -1,13 +1,14 @@ +
- + +
-
@@ -17,26 +18,36 @@

Geschlecht

-

Rasse

- -

Profession

- -

Kultur

- -

Rudel

- +

Rasse

+ +

Profession

+ +

Kultur

+ +

Rudel

+

Alter

+

Typus

+ +

Größe

+ +

Gewicht

+ +

Länge

+

Lebensenergie (LE)

- 2 x KO + Mod - - = - + 2 x KO + Mod + + = + Maximal + + Aktuell
@@ -49,18 +60,19 @@

Ahnenenergie (AE)

- 20 + - - + Mod - - = - + + Mod + + = + +
@@ -71,10 +83,11 @@

Seelenkraft (SK)

- (MU + KL + IN) / 3 - 10 + Mod - - = - + (MU + KL + IN) / 3 - 10 + Mod + + = + +
@@ -85,10 +98,11 @@

Zähigkeit (ZK)

- (KO + KO + KK) / 3 - 10 + Mod - - = - + (KO + KO + KK) / 3 - 10 + Mod + + = + +
@@ -99,10 +113,11 @@

Initiative

- (MU + GE) / 2 + Mod - - = - + (MU + GE) / 2 + Mod + + = + +
@@ -129,10 +144,12 @@
-

RS

-

AP verfügbar

+

Rüstung (RS)

+

AP verfügbar

+

Belastung (BE)

-

AP gesamt

+

AP gesamt

+

Zustände

@@ -175,6 +192,10 @@
+
+ + +
@@ -200,11 +221,15 @@
- - + + + + - - + + + +
@@ -328,14 +354,16 @@ - + +
/
- + +
@@ -349,14 +377,16 @@ - + +
/
- + + @@ -371,14 +401,16 @@ - + +
/
- + + @@ -393,14 +425,16 @@ - + +
/
- + + @@ -415,14 +449,16 @@ - + +
/
- + + @@ -450,14 +486,16 @@ - + +
/
- + + @@ -472,14 +510,16 @@ - + +
/
- + + @@ -494,14 +534,16 @@ - + +
/
- + + @@ -516,14 +558,16 @@ - + +
/
- + + @@ -538,14 +582,16 @@ - + +
/
- + + @@ -572,14 +618,16 @@ - + +
/
- + + @@ -594,14 +642,16 @@ - + +
/
- + + @@ -616,14 +666,16 @@ - + +
/
- + + @@ -638,14 +690,16 @@ - + +
/
- + + @@ -660,14 +714,16 @@ - + +
/
- + + @@ -696,14 +752,16 @@ - + +
/
- + + @@ -718,14 +776,16 @@ - + +
/
- + + @@ -740,14 +800,16 @@ - + +
/
- + + @@ -762,14 +824,16 @@ - + +
/
- + + @@ -784,14 +848,16 @@ - + +
/
- + + @@ -806,14 +872,16 @@ - + +
/
- + + @@ -828,14 +896,16 @@ - + +
/
- + + @@ -850,14 +920,16 @@ - + +
/
- + + @@ -872,14 +944,16 @@ - + +
/
- + + @@ -894,14 +968,16 @@ - + +
/
- + + @@ -918,14 +994,16 @@
- + +
/
- + +
@@ -962,15 +1040,18 @@ - + +
/
- - + + + + @@ -985,15 +1066,18 @@ - + +
/
- - + + + + @@ -1008,15 +1092,18 @@ - + +
/
- - + + + + @@ -1031,14 +1118,16 @@ - + +
/
- + +
@@ -1104,7 +1198,7 @@

Aktuelle Ahnenenergie

Maximale Ahnenenergie

- +
@@ -1146,7 +1240,8 @@ - + +
- + + @@ -1234,6 +1330,12 @@
+

Einstellungen

+

 NSC Modus

+

+ Schaltet den Charakterbogen in den NSC Modus. Die meisten Charakterwerte (z.B. Probenwerte von Fertigkeiten) werden damit nicht mehr automatisch berechnet, sondern können manuell eingetragen werden. + Nach dem Ausschalten der Funktion sollte der Charakterbogen einmal neu geöffnet werden. +

Informationen

Belastung und Zustände

@@ -1386,9 +1488,18 @@ }); }); + function isNscSheet(toggle_nsc_charactersheet) { + return toggle_nsc_charactersheet !== "0"; + } + // Ahnenenergie calculation on("sheet:opened change:leiteigenschaft change:ahnenenergiemod", function() { - getAttrs(["leiteigenschaft", "ahnenenergiemod", "charisma", "klugheit", "intuition", "mut"], function(values) { + getAttrs(["leiteigenschaft", "ahnenenergiemod", "charisma", "klugheit", "intuition", "mut", "toggle_nsc_charactersheet"], function(values) { + + if (isNscSheet(values.toggle_nsc_charactersheet)) { + return; + } + let ahnenenergiemod = parseInt(values.ahnenenergiemod)||0; let leiteigenschaft = values.leiteigenschaft; let leiteigenschaftAttribut = parseInt(values[leiteigenschaft])||0; @@ -1431,12 +1542,17 @@ let skillsListEw1 = skillsList.map(skill => skill + "Ew1"); let skillsListEw2 = skillsList.map(skill => skill + "Ew2"); - let attributeChangeRequiredAttrs = skillsList.concat(skillsListEw1).concat(skillsListEw2).concat(attributeList); + let attributeChangeRequiredAttrs = skillsList.concat(skillsListEw1).concat(skillsListEw2).concat(attributeList).concat(["toggle_nsc_charactersheet"]); // on attribute change skill update attributeList.forEach(attr => { on(`change:${attr}`, function() { getAttrs(attributeChangeRequiredAttrs, function(values) { + + if (isNscSheet(values.toggle_nsc_charactersheet)) { + return; + } + let attrsToSet = {}; skillsList.forEach(skill => { // update Skill ew properties @@ -1492,7 +1608,12 @@ // on melee weapon mod aw / vw & melee type change on("change:repeating_meleeweapon:meleetype change:repeating_meleeweapon:meleemodaw change:repeating_meleeweapon:meleemodvw", function() { getAttrs(["repeating_meleeweapon_meleetype", "repeating_meleeweapon_meleemodaw", "repeating_meleeweapon_meleemodvw", - "skillraufenaw", "skillraufenvw", "skilleinhandwaffenaw", "skilleinhandwaffenvw", "skillzweihandwaffenaw", "skillzweihandwaffenvw", "skillschildeaw", "skillschildevw"], function(values) { + "skillraufenaw", "skillraufenvw", "skilleinhandwaffenaw", "skilleinhandwaffenvw", "skillzweihandwaffenaw", "skillzweihandwaffenvw", + "skillschildeaw", "skillschildevw", "toggle_nsc_charactersheet"], function(values) { + if (isNscSheet(values.toggle_nsc_charactersheet)) { + return; + } + let meleetype = values.repeating_meleeweapon_meleetype; let skillaw = getSkillAwOrVw(values, meleetype, "aw"); let skillvw = getSkillAwOrVw(values, meleetype, "vw"); @@ -1514,7 +1635,12 @@ // on ranged weapon ranged type change on("change:repeating_rangedweapon:rangedtype", function() { - getAttrs(["repeating_rangedweapon_rangedtype", "skillschusswaffenaw", "skillwurfwaffenaw"], function(values) { + getAttrs(["repeating_rangedweapon_rangedtype", "skillschusswaffenaw", "skillwurfwaffenaw", "toggle_nsc_charactersheet"], function(values) { + + if (isNscSheet(values.toggle_nsc_charactersheet)) { + return; + } + let rangedtype = values.repeating_rangedweapon_rangedtype; // console.log("rangedtype "+rangedtype); let skillaw = parseInt(values["skill"+rangedtype+"aw"])||0; @@ -1539,8 +1665,11 @@ // console.log("repeating_attrs "+repeating_attrs); getAttrs([...repeating_attrs, "skillraufenaw", "skillraufenvw", "skilleinhandwaffenaw", "skilleinhandwaffenvw", "skillzweihandwaffenaw", "skillzweihandwaffenvw", - "skillschildeaw", "skillschildevw"], function(values) { - // console.log("melee skill aw/vw change"); + "skillschildeaw", "skillschildevw", "toggle_nsc_charactersheet"], function(values) { + + if (isNscSheet(values.toggle_nsc_charactersheet)) { + return; + } let attrsToSet = {}; @@ -1579,8 +1708,12 @@ } // console.log("repeating_attrs "+repeating_attrs); - getAttrs([...repeating_attrs, "skillwurfwaffenaw", "skillschusswaffenaw"], function(values) { - // console.log("ranged skill aw change"); + getAttrs([...repeating_attrs, "skillwurfwaffenaw", "skillschusswaffenaw", "toggle_nsc_charactersheet"], function(values) { + + if (isNscSheet(values.toggle_nsc_charactersheet)) { + return; + } + let attrsToSet = {}; for(var i=0; i < idarray.length; i++) { @@ -1600,7 +1733,12 @@ // on ahnengaben fw & eigenschaft change on("change:repeating_ahnengaben:ahnengabefw change:repeating_ahnengaben:ahnengabeEw1 change:repeating_ahnengaben:ahnengabeEw2", function() { - getAttrs([...attributeList, "repeating_ahnengaben_ahnengabefw", "repeating_ahnengaben_ahnengabeEw1", "repeating_ahnengaben_ahnengabeEw2"], function(values) { + getAttrs([...attributeList, "repeating_ahnengaben_ahnengabefw", "repeating_ahnengaben_ahnengabeEw1", "repeating_ahnengaben_ahnengabeEw2", "toggle_nsc_charactersheet"], function(values) { + + if (isNscSheet(values.toggle_nsc_charactersheet)) { + return; + } + let skillFw = parseInt(values.repeating_ahnengaben_ahnengabefw)||0; let skillEw1Abbr = values["repeating_ahnengaben_ahnengabeEw1"]; @@ -1632,7 +1770,12 @@ repeating_attrs.push("repeating_ahnengaben_" + id + "_ahnengabeEw2"); } // console.log("repeating_attrs "+repeating_attrs); - getAttrs(repeating_attrs.concat(attributeList), function(values) { + getAttrs(repeating_attrs.concat(attributeList).concat(["toggle_nsc_charactersheet"]), function(values) { + + if (isNscSheet(values.toggle_nsc_charactersheet)) { + return; + } + let attrsToSet = {}; for(var i=0; i < idarray.length; i++) { let id = idarray[i]; diff --git a/Die_Schwarze_Katze/sheet.json b/Die_Schwarze_Katze/sheet.json index 34f65fea46..e6a128d98e 100644 --- a/Die_Schwarze_Katze/sheet.json +++ b/Die_Schwarze_Katze/sheet.json @@ -4,6 +4,6 @@ "authors": "Jakob Kneissl, Mira Singer", "roll20userid": "5972116", "preview": "Die_Schwarze_Katze_Preview.png", - "instructions": "# Die Schwarze Katze Sheet v1.0.0 \r [Link zum Regelwerk](https://ulisses-spiele.de/spielsysteme/dsk/)", + "instructions": "# Die Schwarze Katze Sheet v1.1.0 \r [Link zum Regelwerk](https://ulisses-spiele.de/spielsysteme/dsk/)", "legacy": true } \ No newline at end of file