-
-
-
{{initiative}}
-
{{roll1}}
-
-
-
-
+
+
+
+
{{initiative}}
+
{{roll1}}
+
+
+
+
+
\ No newline at end of file
+/* Änderungen an Skills */
+aActorSkills.forEach(sSkill => {
+ on(`change:skill-${sSkill}`, function() {
+ console.log("[CHANGE] " + sSkill);
+ changedSkill(sSkill);
+ });
+
+ on(`change:skill-${sSkill}-is-role-skill`, function() {
+ console.log("[CHANGE] " + sSkill + "is-role-skill");
+ changedSkill(sSkill);
+ });
+});
+
+/* Änderungen an Kampf-Skills */
+aActorWeaponSkills.forEach(sSkill => {
+ on(`change:skill-${sSkill}`, function() {
+ console.log("[CHANGE] " + sSkill);
+ changedSkill(sSkill);
+ });
+
+ on(`change:skill-${sSkill}-is-role-skill`, function() {
+ console.log("[CHANGE] " + sSkill + "is-role-skill");
+ changedSkill(sSkill);
+ });
+});
+
+/* Event-Listener -- Ende */
+
+/* Funktionen -- Start */
+function recalcValues() {
+ console.log("[recalcValues]");
+ aActorAttributes.forEach(sAttribute => {
+ changedAttribute(sAttribute);
+ });
+ aActorSkills.forEach(sSkill => {
+ changedSkill(sSkill);
+ });
+ aActorWeaponSkills.forEach(sSkill => {
+ changedSkill(sSkill);
+ });
+}
+
+function changedAttribute(sAttribute) {
+ console.log("[changedAttribute] " + sAttribute);
+
+ getAttrs([sAttribute], function (values){
+ let iAttribute = parseInt(values[sAttribute]||iMinAttributeValue);
+ let aAttributes = {};
+
+ // Auf Min/Max prüfen
+ if (iAttribute < iMinAttributeValue ) {
+ iAttribute = iMinAttributeValue;
+ } else if (iAttribute > iMaxAttributeValue ) {
+ iAttribute = iMaxAttributeValue;
+ }
+ aAttributes[sAttribute] = iAttribute;
+ setAttrs(aAttributes);
+
+ switch (sAttribute) {
+ case "strength":
+ recalcMeleeAttack();
+ recalcMeleeDamage();
+ recalcMeleeDefense();
+ break;
+ case "stamina":
+ recalcHitpoints();
+ break;
+ case "dexterity":
+ recalcMeleeDefense();
+ recalcRangedAttack();
+ recalcRangedDamage();
+ break;
+ case "knowledge":
+ //nothing
+ break;
+ case "coolness":
+ recalcInitiative();
+ break;
+ case "chi":
+ recalcMeleeAttack();
+ recalcChipoints();
+ recalcMeleeDefense();
+ recalcRangedAttack();
+ break;
+ default:
+ }
+ });
+}
+
+function changedSkill(sSkill) {
+ console.log("[changedSkill] " + sSkill);
+
+ getAttrs(["skill-" + sSkill,"skill-" + sSkill + "-is-role-skill"], function (values){
+ let iSkill = parseInt(values["skill-" + sSkill]||iMinSkillValue);
+ let iSkillRole = 0;
+ let iIsRoleSkill = parseInt(values["skill-" + sSkill + "-is-role-skill"]||0);
+ let aAttributes = {};
+ console.log("[changedSkill] isRoleSkill" + iIsRoleSkill);
+
+ // Auf Min/Max prüfen
+ if (iSkill < iMinSkillValue ) {
+ iSkill = iMinSkillValue;
+ } else if (iSkill > iMaxSkillValue ) {
+ iSkill = iMaxSkillValue;
+ }
+
+ //Rollenskill berechnen
+ if (iIsRoleSkill == 1) {
+ switch (iSkill) {
+ case 0: case 1: case 2:
+ iSkillRole = 4;
+ break;
+ case 3: case 4:
+ iSkillRole = 5;
+ break;
+ case 5: case 6: case 7: case 8: case 9:
+ iSkillRole = iSkill+1;
+ break;
+ case 10:
+ iSkillRole = 10;
+ break;
+ default:
+ iSkillRole = 0;
+ }
+ } else {
+ iSkillRole = 0;
+ }
+
+ aAttributes["skill-" + sSkill] = iSkill;
+ aAttributes["skill-" + sSkill + "-role"] = iSkillRole;
+ setAttrs(aAttributes);
+ });
+}
+
+function recalcInitiative() {
+ console.log("[recalcInitiative]");
+ getAttrs(["coolness"], function (values){
+ let iCoolness = parseInt(values["coolness"]||0);
+ let iInitiative = iCoolness;
+ let aAttributes = {};
+
+ aAttributes["initiative"] = iInitiative;
+
+ setAttrs(aAttributes);
+ });
+}
+
+function recalcRolepoints(iPoints,sType) {
+ let iRolePoints = 0;
+
+ if (sType == "main") {
+ iRolePoints = iPoints + 20;
+ } else {
+ iRolePoints = iPoints + 10;
+ }
+
+ return iRolePoints;
+}
+
+function recalcHitpoints() {
+ console.log("[recalcHitpoints]");
+ getAttrs(["stamina","role-type"], function (values){
+ let iStamina = parseInt(values["stamina"]||0);
+ let sRoleType = values["role-type"]||"main";
+ let iHitpoints = (iStamina + 4) * 10;
+ let iRoleHitpoints = recalcRolepoints(iHitpoints,sRoleType);
+ let aAttributes = {};
+
+ aAttributes["hitpoints_max"] = iHitpoints;
+ aAttributes["role_hitpoints_max"] = iRoleHitpoints;
+
+ setAttrs(aAttributes);
+ });
+}
+
+function recalcChipoints() {
+ console.log("[recalcChipoints]");
+ getAttrs(["chi","role-type"], function (values){
+ let iChi = parseInt(values["chi"]||0);
+ let sRoleType = values["role-type"]||"main";
+ let iChipoints = iChi * 10;
+ let iRoleChipoints = recalcRolepoints(iChipoints,sRoleType);
+ let aAttributes = {};
+
+ aAttributes["chipoints_max"] = iChipoints;
+ aAttributes["role_chipoints_max"] = iRoleChipoints;
+
+ setAttrs(aAttributes);
+ });
+}
+
+function recalcMeleeAttack() {
+ console.log("[recalcMeleeAttack]");
+ getAttrs(["chi","strength"], function (values){
+ let iChi = parseInt(values["chi"]||0);
+ let iStrength = parseInt(values["strength"]||0);
+ let iMeleeAttack = Math.round((iStrength * 2 + iChi) / 3);
+ let aAttributes = {};
+
+ aAttributes["melee-attack"] = iMeleeAttack;
+
+ setAttrs(aAttributes);
+ });
+}
+
+function recalcMeleeDamage() {
+ console.log("[recalcMeleeDamage]");
+ getAttrs(["strength"], function (values){
+ let iStrength = parseInt(values["strength"]||5);
+ let iMeleeDamage = 0;
+ let aAttributes = {};
+
+ if (iStrength > 5) {
+ iMeleeDamage = iStrength - 4;
+ }
+
+ aAttributes["melee-damage"] = iMeleeDamage;
+
+ setAttrs(aAttributes);
+ });
+}
+
+function recalcRangedDamage() {
+ console.log("[recalcRangedDamage]");
+ getAttrs(["dexterity"], function (values){
+ let iDexterity = parseInt(values["dexterity"]||5);
+ let iRangedDamage = 0;
+ let aAttributes = {};
+
+ if (iDexterity > 5) {
+ iRangedDamage = iDexterity - 4;
+ }
+
+ aAttributes["ranged-damage"] = iRangedDamage;
+
+ setAttrs(aAttributes);
+ });
+}
+
+function recalcMeleeDefense() {
+ console.log("[recalcMeleeDefense]");
+ getAttrs(["chi","strength","dexterity"], function (values){
+ let iChi = parseInt(values["chi"]||0);
+ let iStrength = parseInt(values["strength"]||0);
+ let iDexterity = parseInt(values["dexterity"]||0);
+ let iMeleeDefense = Math.round((iStrength + iDexterity + iChi) / 3);
+ let aAttributes = {};
+
+ aAttributes["melee-defense"] = iMeleeDefense;
+
+ setAttrs(aAttributes);
+ });
+}
+
+function recalcRangedAttack() {
+ console.log("[recalcRangedAttack]");
+ getAttrs(["chi","dexterity"], function (values){
+ let iChi = parseInt(values["chi"]||0);
+ let iDexterity = parseInt(values["dexterity"]||0);
+ let iRangedAttack = Math.round((iDexterity * 2 + iChi) / 3);
+ let aAttributes = {};
+
+ aAttributes["ranged-attack"] = iRangedAttack;
+
+ setAttrs(aAttributes);
+ });
+}
+/* Funktionen -- Ende */
+
+/* Tabs -- Start */
+ const buttonlist = ["main","weapons"];
+ buttonlist.forEach(button => {
+ on(`clicked:${button}`, function() {
+ setAttrs({
+ sheetTab: button
+ });
+ });
+ });
+/* Tabs -- Ende */
+
+
\ No newline at end of file
diff --git a/NHKS/NHKS.png b/NHKS/NHKS.png
index b01a81742a..a86fd634fa 100644
Binary files a/NHKS/NHKS.png and b/NHKS/NHKS.png differ
diff --git a/NHKS/translation.json b/NHKS/translation.json
index fbac1532be..05f3ae2f7b 100644
--- a/NHKS/translation.json
+++ b/NHKS/translation.json
@@ -10,7 +10,6 @@
"attributes" : "Attribute",
"awards" : "AWARDS",
"awardpoints" : "AWARD-PUNKTE",
- "awardpoints-desc" : "",
"boats" : "Boote lenken",
"chi" : "Chi",
"chi-short" : "CHI",
@@ -33,7 +32,6 @@
"extremesport" : "Extremsport",
"failure" : "Fehlschlag",
"famepoints" : "STARRUHM-PUNKTE",
- "famepoints-desc" : "",
"firstaid" : "Erste Hile",
"gender" : "Geschlecht",
"general" : "Allgemein",
@@ -49,6 +47,7 @@
"knowledge" : "Wissen",
"knowledge-short" : "WIS",
"languages" : "Sprachen",
+ "main" : "Allgemein",
"main-role" : "Hauptrolle",
"martialarts" : "MARTIAL ARTS",
"mechanic" : "Mechanik",
@@ -139,6 +138,7 @@
"strength" : "Stärke",
"success" : "Erfolg",
"supporting-role" : "Nebenrolle",
+ "take2points" : "Take-2-Punkte",
"target-value" : "Zielwert",
"unarmed" : "Waffenloser Kampf",
"vehicles" : "Gewöhnliche Fahrzeuge",