From 27dfec00e19e96ce05934f67b7c73905f4e0bda0 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 23 Apr 2017 16:27:27 +0200 Subject: [PATCH] Minor bug fixes, extended functionality, improved translation - tested compatibility of changes with existing sheets - bug fix in weapon damage calculation - bug fix in broken translation (roll templates as button commands) - changed order of sections for more intuitive navigation - changed ordering of roll buttons (alphabetically, only for German language) - added tabindex for more friendly user navigation - added missing cultural talents to progress points system - split progress point tables into two logical groups - removed visual default values that have to be changed often - added attributes to allow different base values for combat values - added repeating section for misc. bonuses (e.g. buffs, racial abilities) - removed default weapon and spell type due to worker script bug - adjusted order of equipment columns to other sections - moved last column of spells to new row for better readability --- Dungeonslayers-4/DS4.css | 198 +++-- Dungeonslayers-4/DS4.html | 1059 +++++++++++++++---------- Dungeonslayers-4/translation.json | 344 ++++---- Dungeonslayers-4/translations/de.json | 103 +-- Dungeonslayers-4/translations/en.json | 8 +- 5 files changed, 1006 insertions(+), 706 deletions(-) diff --git a/Dungeonslayers-4/DS4.css b/Dungeonslayers-4/DS4.css index 69b5a6dd86..e0396e68a5 100644 --- a/Dungeonslayers-4/DS4.css +++ b/Dungeonslayers-4/DS4.css @@ -73,6 +73,7 @@ margin: 0; font-weight: initial; font-size: initial; + padding: 0; } .charsheet .sheet-col1 label input { display: none; @@ -98,9 +99,20 @@ text-align: center; width: 70px; } -.charsheet .sheet-character .sheet-col2 input.sheet-split, -.charsheet .sheet-character .sheet-col3 input.sheet-split { - width: 28.5px; +.charsheet .sheet-character input.sheet-split:nth-child(2) { + width: 25px; + border-right: none; + display: inline-block; +} +.charsheet .sheet-character input.sheet-split:nth-child(3) { + width: 20px; + border-left: none; + border-right: none; + display: inline-block; +} +.charsheet .sheet-character input.sheet-split:nth-child(4) { + width: 25px; + border-left: none; display: inline-block; } .charsheet .sheet-character .sheet-flex .sheet-col1, @@ -289,6 +301,9 @@ width: 80px; flex-grow: 3; } +.charsheet .sheet-spell .sheet-flex { + flex-wrap: wrap; +} .charsheet .sheet-spell .sheet-flex > * { border: 1px solid black; padding: 2px; @@ -311,9 +326,21 @@ max-width: 120px; flex-grow: 1; } -.charsheet .sheet-spell .sheet-col8 { - width: 80px; - flex-grow: 3; +.charsheet .sheet-spell .sheet-row2 { + display: flex; + border-top: none; + background-color: rgb(230, 230, 230); +} +.charsheet .sheet-spell .sheet-row2 span { + padding-right: 10px; + text-align: right; + display: inline-block; +} +.charsheet .sheet-spell .sheet-row2 textarea { + width: 40px; + height: 40px; + flex-grow: 1; + border: none; } .charsheet .sheet-spell .sheet-normal-spell { background-image: url('https://raw.githubusercontent.com/Roll20/roll20-character-sheets/master/Dungeonslayers-4/DS4-SPC.png'); @@ -333,7 +360,7 @@ border: 1px solid black; } .charsheet .sheet-talent .sheet-col2 { - width: 60px; + width: 75px; text-align: center; border: 1px solid black; padding: 2px 6px; @@ -341,7 +368,7 @@ .charsheet .sheet-talent .sheet-col2-1, .charsheet .sheet-talent .sheet-col2-2, .charsheet .sheet-talent .sheet-col2-3 { - width: 20px; + width: 25px; text-align: center; border-top: 1px solid black; border-bottom: 1px solid black; @@ -363,10 +390,12 @@ font-size: 14px; } .charsheet .sheet-equipment .sheet-flex > *:nth-child(1) { - width: 40px; + width: 200px; +} +.charsheet .sheet-equipment .sheet-flex > *:nth-child(2) { + width: 75px; text-align: center; } -.charsheet .sheet-equipment .sheet-flex > *:nth-child(2), .charsheet .sheet-equipment .sheet-flex > *:nth-child(3), .charsheet .sheet-equipment .sheet-flex > *:nth-child(4) { width: 120px; @@ -382,63 +411,108 @@ .charsheet .sheet-equipment input[type=checkbox] { display: none; } -.charsheet .sheet-progress-points { - min-width: 500px; -} -.charsheet .sheet-progress-points > div { - overflow-x: auto; -} -.charsheet .sheet-progress-points table { - border-collapse: collapse; - width: 100%; -} -.charsheet .sheet-progress-points tr:nth-child(1), -.charsheet .sheet-progress-points tr:nth-child(4), -.charsheet .sheet-progress-points tr:nth-child(10), -.charsheet .sheet-progress-points tr:nth-child(19), -.charsheet .sheet-progress-points tr:nth-child(20) { - border-bottom: 2px solid black; -} -.charsheet .sheet-progress-points th, -.charsheet .sheet-progress-points td { +.charsheet .sheet-miscellaneous .sheet-flex > * { border: 1px solid black; padding: 2px; font-size: 14px; } -.charsheet .sheet-progress-points td:nth-child(3), -.charsheet .sheet-progress-points td:nth-child(4), -.charsheet .sheet-progress-points td:nth-child(5), -.charsheet .sheet-progress-points td:nth-child(6), -.charsheet .sheet-progress-points td:nth-child(7), -.charsheet .sheet-progress-points td:nth-child(14), -.charsheet .sheet-progress-points td:nth-child(15), -.charsheet .sheet-progress-points td:nth-child(16) { +.charsheet .sheet-miscellaneous .sheet-flex > *:nth-child(1) { + width: 200px; + text-align: center; +} +.charsheet .sheet-miscellaneous .sheet-flex > *:nth-child(2) { + width: 120px; + flex-grow: 1; +} +.charsheet .sheet-progress-points1 { + min-width: 500px; +} +.charsheet .sheet-progress-points1 > div { + overflow-x: auto; +} +.charsheet .sheet-progress-points1 table { + border-collapse: collapse; + width: 100%; +} +.charsheet .sheet-progress-points1 tr:nth-child(1), +.charsheet .sheet-progress-points1 tr:nth-child(4), +.charsheet .sheet-progress-points1 tr:nth-child(10) { + border-bottom: 2px solid black; +} +.charsheet .sheet-progress-points1 th, +.charsheet .sheet-progress-points1 td { + border: 1px solid black; + padding: 2px; + font-size: 14px; +} +.charsheet .sheet-progress-points1 td:nth-child(3), +.charsheet .sheet-progress-points1 td:nth-child(4), +.charsheet .sheet-progress-points1 td:nth-child(5), +.charsheet .sheet-progress-points1 td:nth-child(6), +.charsheet .sheet-progress-points1 td:nth-child(7), +.charsheet .sheet-progress-points1 td:nth-child(13), +.charsheet .sheet-progress-points1 td:nth-child(14), +.charsheet .sheet-progress-points1 td:nth-child(15) { border-left: none; border-right: none; } -.charsheet .sheet-progress-points td:last-child { +.charsheet .sheet-progress-points1 td:last-child { border-right: 1px solid black; } -.charsheet .sheet-progress-points td:nth-child(12) { - width: 100%; -} -.charsheet .sheet-progress-points input { +.charsheet .sheet-progress-points1 input { border: none; width: 100%; text-align: center; } -.charsheet .sheet-progress-points th:nth-child(8), -.charsheet .sheet-progress-points td:nth-child(12) input { - text-align: left; -} -.charsheet .sheet-progress-points th { +.charsheet .sheet-progress-points1 th { text-align: center; } -.charsheet .sheet-progress-points td:nth-child(13) input, -.charsheet .sheet-progress-points td:nth-child(14) input, -.charsheet .sheet-progress-points td:nth-child(16) input { +.charsheet .sheet-progress-points1 td:nth-child(13) input, +.charsheet .sheet-progress-points1 td:nth-child(15) input { width: 30px; } +.charsheet .sheet-progress-points2 { + min-width: 500px; +} +.charsheet .sheet-progress-points2 > div { + overflow-x: auto; +} +.charsheet .sheet-progress-points2 table { + border-collapse: collapse; + width: 100%; +} +.charsheet .sheet-progress-points2 tr:nth-child(1), +.charsheet .sheet-progress-points2 tr:nth-child(3) { + border-bottom: 2px solid black; +} +.charsheet .sheet-progress-points2 th, +.charsheet .sheet-progress-points2 td { + border: 1px solid black; + padding: 2px; + font-size: 14px; +} +.charsheet .sheet-progress-points2 td:nth-child(2), +.charsheet .sheet-progress-points2 td:nth-child(3), +.charsheet .sheet-progress-points2 td:nth-child(4), +.charsheet .sheet-progress-points2 td:nth-child(5), +.charsheet .sheet-progress-points2 td:nth-child(6) { + border-left: none; + border-right: none; +} +.charsheet .sheet-progress-points2 input { + border: none; + width: 100%; + text-align: center; +} +.charsheet .sheet-progress-points2 th { + text-align: center; +} +.charsheet .sheet-progress-points2 th:nth-child(4), +.charsheet .sheet-progress-points2 td:nth-child(8), +.charsheet .sheet-progress-points2 td:nth-child(8) input { + width: 100%; + text-align: left; +} .charsheet .sheet-checks > .sheet-flex { flex-wrap: wrap; justify-content: space-around; @@ -462,6 +536,30 @@ width: 55px; text-align: center; } +.charsheet.lang-de .sheet-checks > div > div:nth-child(4) {order: 17;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(5) {order: 2;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(6) {order: 21;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(7) {order: 22;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(8) {order: 19;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(9) {order: 7;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(10) {order: 5;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(11) {order: 16;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(12) {order: 10;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(13) {order: 18;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(14) {order: 6;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(15) {order: 24;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(16) {order: 23;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(17) {order: 1;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(18) {order: 15;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(19) {order: 9;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(20) {order: 8;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(21) {order: 14;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(22) {order: 12;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(23) {order: 20;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(24) {order: 13;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(25) {order: 3;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(26) {order: 4;} +.charsheet.lang-de .sheet-checks > div > div:nth-child(27) {order: 11;} .charsheet .sheet-attack-checks .sheet-flex { flex-wrap: wrap; justify-content: space-around; diff --git a/Dungeonslayers-4/DS4.html b/Dungeonslayers-4/DS4.html index a6703e4208..f8099b819d 100644 --- a/Dungeonslayers-4/DS4.html +++ b/Dungeonslayers-4/DS4.html @@ -12,7 +12,7 @@
-
-
-
-
- - - - - - - -
-
- - - - - - - -
-
-
@@ -164,41 +96,41 @@
- - Hit points + + Hit points
- + Defense
- + Initiative
- - Movement rate + + Movement rate
- + Mana
- + Melee attack
- + Ranged attack
- + Spellcasting
- + Targeted spellcasting
@@ -220,13 +152,13 @@
- +
Armor @@ -341,7 +273,7 @@
@@ -441,7 +373,6 @@ Distance Duration Cooldown - Effect
@@ -451,7 +382,7 @@
@@ -484,7 +418,7 @@ @@ -574,21 +508,21 @@
- Qty Equipment + Quantity Where carried? Special
-
+
@@ -671,364 +605,456 @@
-
+
+
+ Miscellaneous + Special +
+
+
+
+ + + +
+ +
+ + + +
+ + + + + + + + + + + + + + + + + + +
+
+
+
- + - + - + - + - - + - + - + - + - - + - + - + - + - - + - + - - + + - + - - + - + - - + + - + - - + - + - - + + - + - - + - + - - + + - + - - + - + - - + + - + - - + - + - - + + - + - - + - + - - + + - + - - - + + - + - + - - - + + - + - + - - - + + - + - + - - - + + - + - + - - - + + - + - + - - - + + - + - + - - - + + - + - + - - - + + - + - + - - - + + + +
  Start Progress points Weapon Armor Talent EquipmentMiscellaneousMiscellaneous Total
Body / = of
Mobility / = of
Mind / = of
Strength / = of
Constitution / = of
Agility / = of
Dexterity / = of
Intellect / = of
Aura / = of
Hit points / = of
Defense / =
Initiative / =
Movement rate / =
Mana / = of
Melee attack / =
Ranged attack / =
Spellcasting / =
Targeted spellcasting / =
+
+
+
+ + + + + - - + - - - - - - - + + - - - + + + + + + + + + + + + - + + - - - + + - + +
Progress pointsAdditionalLearned
Talent points / =
LanguageCultural talents=>
Languages / =
AlphabetAlphabets / =
@@ -1050,241 +1076,332 @@ Bonus
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
+
+
+
+ + + + + + + +
+
+ + + + + + + +
+
+
+
+
+ +
+
- - + +
-
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1342,6 +1459,7 @@ pps.push(fields[j] +'_progress_points'); } pps.push('talent_points_progress_points'); + pps.push('culture_talent_progress_points'); pps.push('language_progress_points'); pps.push('alphabet_progress_points'); getAttrs(pps, function(values) { @@ -1352,11 +1470,11 @@ setAttrs({progress_points: count}); }); }); - on('change:'+ fields[i] +'_initial change:'+ fields[i] +'_progress_points_bonus change:'+ fields[i] +'_weapon_bonus change:'+ fields[i] +'_armor_bonus change:'+ fields[i] +'_talent_bonus change:'+ fields[i] +'_equipment_bonus change:'+ fields[i] +'_miscellaneous_bonus change:'+ fields[i] +'_max', function(eventInfo) { + on('change:'+ fields[i] +'_initial change:'+ fields[i] +'_start change:'+ fields[i] +'_progress_points_bonus change:'+ fields[i] +'_weapon_bonus change:'+ fields[i] +'_armor_bonus change:'+ fields[i] +'_talent_bonus change:'+ fields[i] +'_equipment_bonus change:'+ fields[i] +'_miscellaneous_bonus change:'+ fields[i] +'_max', function(eventInfo) { var field = eventInfo.sourceAttribute.substr(0, eventInfo.sourceAttribute.indexOf("_")); - getAttrs([field +'_initial', field +'_progress_points_bonus', field +'_weapon_bonus', field +'_armor_bonus', field +'_talent_bonus', field +'_equipment_bonus', field +'_miscellaneous_bonus', field +'_max'], function(values) { + getAttrs([field +'_initial', field +'_start', field +'_progress_points_bonus', field +'_weapon_bonus', field +'_armor_bonus', field +'_talent_bonus', field +'_equipment_bonus', field +'_miscellaneous_bonus', field +'_max'], function(values) { var attrs = {}; - var val = (isNaN(parseFloat(values[field +'_initial'])) ? 0 : parseFloat(values[field +'_initial'])) + (isNaN(parseFloat(values[field +'_progress_points_bonus'])) ? 0 : parseFloat(values[field +'_progress_points_bonus'])) + Math.min((isNaN(parseFloat(values[field +'_weapon_bonus'])) ? 0 : parseFloat(values[field +'_weapon_bonus'])) + (isNaN(parseFloat(values[field +'_armor_bonus'])) ? 0 : parseFloat(values[field +'_armor_bonus'])) + (isNaN(parseFloat(values[field +'_talent_bonus'])) ? 0 : parseFloat(values[field +'_talent_bonus'])) + (isNaN(parseFloat(values[field +'_equipment_bonus'])) ? 0 : parseFloat(values[field +'_equipment_bonus'])) + (isNaN(parseFloat(values[field +'_miscellaneous_bonus'])) ? 0 : parseFloat(values[field +'_miscellaneous_bonus'])), 5); + var val = (isNaN(parseFloat(values[field +'_initial'])) ? 0 : parseFloat(values[field +'_initial'])) + (isNaN(parseFloat(values[field +'_start'])) ? 0 : parseFloat(values[field +'_start'])) + (isNaN(parseFloat(values[field +'_progress_points_bonus'])) ? 0 : parseFloat(values[field +'_progress_points_bonus'])) + Math.min((isNaN(parseFloat(values[field +'_weapon_bonus'])) ? 0 : parseFloat(values[field +'_weapon_bonus'])) + (isNaN(parseFloat(values[field +'_armor_bonus'])) ? 0 : parseFloat(values[field +'_armor_bonus'])) + (isNaN(parseFloat(values[field +'_talent_bonus'])) ? 0 : parseFloat(values[field +'_talent_bonus'])) + (isNaN(parseFloat(values[field +'_equipment_bonus'])) ? 0 : parseFloat(values[field +'_equipment_bonus'])) + (isNaN(parseFloat(values[field +'_miscellaneous_bonus'])) ? 0 : parseFloat(values[field +'_miscellaneous_bonus'])), 5); if(field == 'hit-points' || field == 'mana') { attrs[field +'_max'] = val; attrs['max-'+ field] = val; @@ -1374,7 +1492,7 @@ getAttrs(['talent_points_progress_points', 'talent_points_progress_costs'], function(values) { var attrs = {}; if(isNaN(parseFloat(values['talent_points_progress_points'])) || isNaN(parseFloat(values['talent_points_progress_costs']))) { - attrs['talent_points_progress_points_bonus'] = '-'; + attrs['talent_points_progress_points_bonus'] = ''; } else { attrs['talent_points_progress_points_bonus'] = Math.floor(parseFloat(values['talent_points_progress_points']) / parseFloat(values['talent_points_progress_costs'])); } @@ -1385,6 +1503,7 @@ pps.push(fields[j] +'_progress_points'); } pps.push('talent_points_progress_points'); + pps.push('culture_talent_progress_points'); pps.push('language_progress_points'); pps.push('alphabet_progress_points'); getAttrs(pps, function(values) { @@ -1396,16 +1515,34 @@ }); }); - on('change:talent_points_initial change:talent_points_progress_points_bonus change:talent_points_miscellaneous_bonus', function(eventInfo) { - getAttrs(['talent_points_initial', 'talent_points_progress_points_bonus', 'talent_points_miscellaneous_bonus'], function(values) { + on('change:talent_points_progress_points_bonus change:talent_points_additional', function(eventInfo) { + getAttrs(['talent_points_progress_points_bonus', 'talent_points_additional'], function(values) { var attrs = {}; - var val = (isNaN(parseFloat(values['talent_points_initial'])) ? 0 : parseFloat(values['talent_points_initial'])) + (isNaN(parseFloat(values['talent_points_progress_points_bonus'])) ? 0 : parseFloat(values['talent_points_progress_points_bonus'])) + (isNaN(parseFloat(values['talent_points_miscellaneous_bonus'])) ? 0 : parseFloat(values['talent_points_miscellaneous_bonus'])); + var val = (isNaN(parseFloat(values['talent_points_progress_points_bonus'])) ? 0 : parseFloat(values['talent_points_progress_points_bonus'])) + (isNaN(parseFloat(values['talent_points_additional'])) ? 0 : parseFloat(values['talent_points_additional'])); attrs['talent_points_max'] = val; attrs['max-talent_points'] = val; setAttrs(attrs); }); }); + on('change:culture_talent_progress_points', function(eventInfo) { + var pps = []; + for(var j = 0; j < fields.length; j++) { + pps.push(fields[j] +'_progress_points'); + } + pps.push('talent_points_progress_points'); + pps.push('culture_talent_progress_points'); + pps.push('language_progress_points'); + pps.push('alphabet_progress_points'); + getAttrs(pps, function(values) { + var count = 0; + for(var j = 0; j < pps.length; j++) { + count += isNaN(parseFloat(values[pps[j]])) ? 0 : parseFloat(values[pps[j]]); + } + setAttrs({progress_points: count}); + }); + }); + on('change:language_progress_points change:language_progress_costs', function(eventInfo) { getAttrs(['language_progress_points', 'language_progress_costs'], function(values) { if(isNaN(parseFloat(values['language_progress_points'])) || isNaN(parseFloat(values['language_progress_costs']))) { @@ -1419,6 +1556,7 @@ pps.push(fields[j] +'_progress_points'); } pps.push('talent_points_progress_points'); + pps.push('culture_talent_progress_points'); pps.push('language_progress_points'); pps.push('alphabet_progress_points'); getAttrs(pps, function(values) { @@ -1443,6 +1581,7 @@ pps.push(fields[j] +'_progress_points'); } pps.push('talent_points_progress_points'); + pps.push('culture_talent_progress_points'); pps.push('language_progress_points'); pps.push('alphabet_progress_points'); getAttrs(pps, function(values) { @@ -1462,7 +1601,7 @@ var strength = isNaN(parseFloat(values['strength'])) ? 0 : parseFloat(values['strength']); var total_armor_value = isNaN(parseFloat(values['total_armor_value'])) ? 0 : parseFloat(values['total_armor_value']); var total_armor_magic_bonus = isNaN(parseFloat(values['total_armor_magic_bonus'])) ? 0 : parseFloat(values['total_armor_magic_bonus']); - attrs['hit-points_initial'] = body + constitution + 10; + attrs['hit-points_initial'] = body + constitution; attrs['defense_initial'] = body + constitution + total_armor_value + total_armor_magic_bonus; attrs['melee-attack_initial'] = body + strength; setAttrs(attrs); @@ -1486,7 +1625,7 @@ var constitution = isNaN(parseFloat(values['constitution'])) ? 0 : parseFloat(values['constitution']); var total_armor_value = isNaN(parseFloat(values['total_armor_value'])) ? 0 : parseFloat(values['total_armor_value']); var total_armor_magic_bonus = isNaN(parseFloat(values['total_armor_magic_bonus'])) ? 0 : parseFloat(values['total_armor_magic_bonus']); - attrs['hit-points_initial'] = body + constitution + 10; + attrs['hit-points_initial'] = body + constitution; attrs['defense_initial'] = body + constitution + total_armor_value + total_armor_magic_bonus; setAttrs(attrs); }); @@ -1501,7 +1640,7 @@ var dexterity = isNaN(parseFloat(values['dexterity'])) ? 0 : parseFloat(values['dexterity']); attrs['ride_base'] = mobility + Math.max(agility, aura); attrs['initiative_initial'] = mobility + agility; - attrs['movement-rate_initial'] = (mobility / 2) + 1; + attrs['movement-rate_initial'] = (mobility / 2); attrs['ranged-attack_initial'] = mobility + dexterity; setAttrs(attrs); }); @@ -1627,7 +1766,7 @@ }); }); - on('change:repeating_weapon', function(eventInfo) { + on('change:repeating_weapon', function(eventInfo) { getAttrs(['repeating_weapon_weapon_details_visibility', 'repeating_weapon_weapon_details_visibility_toggle'], function(values) { if(values['repeating_weapon_weapon_details_visibility'] == 'toggle') { if(values['repeating_weapon_weapon_details_visibility_toggle'] == 'visible') { @@ -1643,43 +1782,46 @@ } } }); - getAttrs(['repeating_weapon_weapon_magic_bonus', 'repeating_weapon_weapon_mb_weapon_bonus', 'repeating_weapon_weapon_mb_initiative_bonus', 'repeating_weapon_weapon_mb_opponent_defense'], function(values) { + getAttrs(['repeating_weapon_weapon_magic_bonus', 'repeating_weapon_weapon_mb_weapon_bonus', 'repeating_weapon_weapon_mb_initiative_bonus', 'repeating_weapon_weapon_mb_opponent_defense'], function(values) { var attrs = {}; var mb = isNaN(parseFloat(values['repeating_weapon_weapon_magic_bonus'])) ? 0 : parseFloat(values['repeating_weapon_weapon_magic_bonus']); attrs['repeating_weapon_weapon_bonus'] = mb + (isNaN(parseFloat(values['repeating_weapon_weapon_mb_weapon_bonus'])) ? 0 : parseFloat(values['repeating_weapon_weapon_mb_weapon_bonus'])); attrs['repeating_weapon_weapon_initiative_bonus'] = mb + (isNaN(parseFloat(values['repeating_weapon_weapon_mb_initiative_bonus'])) ? 0 : parseFloat(values['repeating_weapon_weapon_mb_initiative_bonus'])); - attrs['repeating_weapon_weapon_opponent_defense'] = mb + (isNaN(parseFloat(values['repeating_weapon_weapon_mb_opponent_defense'])) ? 0 : parseFloat(values['repeating_weapon_weapon_mb_opponent_defense'])); + attrs['repeating_weapon_weapon_opponent_defense'] = -1 * mb + (isNaN(parseFloat(values['repeating_weapon_weapon_mb_opponent_defense'])) ? 0 : parseFloat(values['repeating_weapon_weapon_mb_opponent_defense'])); setAttrs(attrs); }); - getSectionIDs('repeating_weapon', function(idarray) { - var actives = []; - var bonuses = []; - for(var k=0; k < idarray.length; k++) { - actives.push('repeating_weapon_'+ idarray[k] +'_weapon_active'); - for(var j = 0; j < fields.length; j++) { - bonuses.push('repeating_weapon_'+ idarray[k] +'_weapon_'+ fields[j] +'_bonus'); - } - } - getAttrs(actives.concat(bonuses), function(values) { - var attrs = {}; - for(var j = 0; j < fields.length; j++) { - var bonus = 0; - for(var k=0; k < actives.length; k++) { + getSectionIDs('repeating_weapon', function(idarray) { + var actives = []; + var bonuses = []; + for(var k=0; k < idarray.length; k++) { + actives.push('repeating_weapon_'+ idarray[k] +'_weapon_active'); + for(var j = 0; j < fields.length; j++) { + bonuses.push('repeating_weapon_'+ idarray[k] +'_weapon_'+ fields[j] +'_bonus'); + } + } + getAttrs(actives.concat(bonuses), function(values) { + var attrs = {}; + for(var j = 0; j < fields.length; j++) { + var bonus = 0; + for(var k=0; k < actives.length; k++) { if(values[actives[k]] == "1") { bonus += isNaN(parseFloat(values[bonuses[k * fields.length + j]])) ? 0 : parseFloat(values[bonuses[k * fields.length + j]]); } - } - attrs[fields[j] +'_weapon_bonus'] = bonus; - } - setAttrs(attrs); - }); - var weapons = []; + } + if(bonus > 0) { + attrs[fields[j] +'_weapon_bonus'] = bonus; + } else { + attrs[fields[j] +'_weapon_bonus'] = ""; + } + } + setAttrs(attrs); + }); + var weapons = []; for(var k=0; k < idarray.length; k++) { weapons.push('repeating_weapon_'+ idarray[k] +'_weapon_active'); weapons.push('repeating_weapon_'+ idarray[k] +'_weapon_name'); weapons.push('repeating_weapon_'+ idarray[k] +'_weapon_type'); weapons.push('repeating_weapon_'+ idarray[k] +'_weapon_bonus'); - weapons.push('repeating_weapon_'+ idarray[k] +'_weapon_magic_bonus'); weapons.push('repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense'); weapons.push('repeating_weapon_'+ idarray[k] +'_weapon_hands'); } @@ -1693,21 +1835,21 @@ if(values['repeating_weapon_'+ idarray[k] +'_weapon_active'] == "1") { if(values['repeating_weapon_'+ idarray[k] +'_weapon_type'] === undefined || values['repeating_weapon_'+ idarray[k] +'_weapon_type'] == 'mat' || values['repeating_weapon_'+ idarray[k] +'_weapon_type'] == 'mra') { countActiveMeleeWeapon++; - btnActiveMeleeWeapon += '|'+ values['repeating_weapon_'+ idarray[k] +'_weapon_name'] +',{{Waffe='+ values['repeating_weapon_'+ idarray[k] +'_weapon_name'] +' ('+ values['repeating_weapon_'+ idarray[k] +'_weapon_hands'] +')}}{{GA='+ (values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense'] === undefined ? 0 : values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense']) +'}}{{Probenwert=[[@{melee-attack} [Schlagen] + '+ (isNaN(parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) ? 0 : parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) +' [WB] + '+ (isNaN(parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_magic_bonus'])) ? 0 : parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_magic_bonus'])) +' [MB] + ?{Modifikator|-10} [Modifikator]]]}}'; + btnActiveMeleeWeapon += '|'+ values['repeating_weapon_'+ idarray[k] +'_weapon_name'] +',{{Waffe='+ values['repeating_weapon_'+ idarray[k] +'_weapon_name'] +' ('+ values['repeating_weapon_'+ idarray[k] +'_weapon_hands'] +')}}{{GA='+ (values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense'] === undefined ? 0 : values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense']) +'}}{{Probenwert=[[@{melee-attack} [Schlagen] + '+ (isNaN(parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) ? 0 : parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) +' [WB] + ?{Modifikator|-10}]]}}'; } if(values['repeating_weapon_'+ idarray[k] +'_weapon_type'] == 'rat' || values['repeating_weapon_'+ idarray[k] +'_weapon_type'] == 'mra') { countActiveRangedWeapon++; - btnActiveRangedWeapon += '|'+ values['repeating_weapon_'+ idarray[k] +'_weapon_name'] +',{{Waffe='+ values['repeating_weapon_'+ idarray[k] +'_weapon_name'] +' ('+ values['repeating_weapon_'+ idarray[k] +'_weapon_hands'] +')}}{{GA='+ (values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense'] === undefined ? 0 : values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense']) +'}}{{Probenwert=[[@{melee-attack} [Schiessen] + '+ (isNaN(parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) ? 0 : parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) +' [WB] + '+ (isNaN(parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_magic_bonus'])) ? 0 : parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_magic_bonus'])) +' [MB] + ?{Modifikator|-10} [Modifikator]]]}}'; + btnActiveRangedWeapon += '|'+ values['repeating_weapon_'+ idarray[k] +'_weapon_name'] +',{{Waffe='+ values['repeating_weapon_'+ idarray[k] +'_weapon_name'] +' ('+ values['repeating_weapon_'+ idarray[k] +'_weapon_hands'] +')}}{{GA='+ (values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense'] === undefined ? 0 : values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense']) +'}}{{Probenwert=[[@{melee-attack} [Schiessen] + '+ (isNaN(parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) ? 0 : parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) +' [WB] + ?{Modifikator|-10}]]}}'; } } } if(countActiveMeleeWeapon == 0) { - btnActiveMeleeWeapon = '&{template:default}{{name=^{melee-attack}}}{{^{weapon}=^{unarmed}}}{{^{opponent-defense-short}=+5}}{{^{check-value}=[[@{melee-attack} [^{melee-attack}] + 0 [^{weapon-bonus-short}] + 0 [^{magic-bonus-short} + ?{Modifikator|0} [Modifikator]]]]}}{{^{check-result}=[[1d20]]}}'; + btnActiveMeleeWeapon = '&{template:default}{{name=^{melee-attack}}}{{^{weapon}=^{unarmed}}}{{^{opponent-defense-short}=+5}}{{^{check-value}=[[@{melee-attack} + 0 [WB] + ?{Modifikator|0}]]]}}{{^{check-result}=[[1d20]]}}'; } else if(countActiveMeleeWeapon == 1) { for(var k=0; k < idarray.length; k++) { if(values['repeating_weapon_'+ idarray[k] +'_weapon_active'] == "1") { if(values['repeating_weapon_'+ idarray[k] +'_weapon_type'] === undefined || values['repeating_weapon_'+ idarray[k] +'_weapon_type'] == 'mat' || values['repeating_weapon_'+ idarray[k] +'_weapon_type'] == 'mra') { - btnActiveMeleeWeapon = '&{template:default}{{name=^{melee-attack}}}{{^{weapon}='+ values['repeating_weapon_'+ idarray[k] +'_weapon_name'] +' ('+ values['repeating_weapon_'+ idarray[k] +'_weapon_hands'] +')}}{{^{opponent-defense-short}='+ (values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense'] === undefined ? 0 : values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense']) +'}}{{^{check-value}=[[@{melee-attack} [^{melee-attack}] + '+ (isNaN(parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) ? 0 : parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) +' [^{weapon-bonus-short}] + '+ (isNaN(parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_magic_bonus'])) ? 0 : parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_magic_bonus'])) +' [^{magic-bonus-short}] + ?{Modifikator|0} [Modifikator]]]}}{{^{check-result}=[[1d20]]}}'; + btnActiveMeleeWeapon = '&{template:default}{{name=^{melee-attack}}}{{^{weapon}='+ values['repeating_weapon_'+ idarray[k] +'_weapon_name'] +' ('+ values['repeating_weapon_'+ idarray[k] +'_weapon_hands'] +')}}{{^{opponent-defense-short}='+ (values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense'] === undefined ? 0 : values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense']) +'}}{{^{check-value}=[[@{melee-attack} + '+ (isNaN(parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) ? 0 : parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) +' [WB] + ?{Modifikator|0}]]}}{{^{check-result}=[[1d20]]}}'; } } } @@ -1720,7 +1862,7 @@ for(var k=0; k < idarray.length; k++) { if(values['repeating_weapon_'+ idarray[k] +'_weapon_active'] == "1") { if(values['repeating_weapon_'+ idarray[k] +'_weapon_type'] == 'rat' || values['repeating_weapon_'+ idarray[k] +'_weapon_type'] == 'mra') { - btnActiveRangedWeapon = '&{template:default}{{name=^{ranged-attack}}}{{^{weapon}='+ values['repeating_weapon_'+ idarray[k] +'_weapon_name'] +' ('+ values['repeating_weapon_'+ idarray[k] +'_weapon_hands'] +')}}{{^{opponent-defense-short}='+ (values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense'] === undefined ? 0 : values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense']) +'}}{{^{check-value}=[[@{ranged-attack} [^{ranged-attack}] + '+ (isNaN(parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) ? 0 : parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) +' [^{weapon-bonus-short}] + '+ (isNaN(parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_magic_bonus'])) ? 0 : parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_magic_bonus'])) +' [^{magic-bonus-short}] + ?{Modifikator|0} [Modifikator]]]}}{{^{check-result}=[[1d20]]}}'; + btnActiveRangedWeapon = '&{template:default}{{name=^{ranged-attack}}}{{^{weapon}='+ values['repeating_weapon_'+ idarray[k] +'_weapon_name'] +' ('+ values['repeating_weapon_'+ idarray[k] +'_weapon_hands'] +')}}{{^{opponent-defense-short}='+ (values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense'] === undefined ? 0 : values['repeating_weapon_'+ idarray[k] +'_weapon_opponent_defense']) +'}}{{^{check-value}=[[@{ranged-attack} + '+ (isNaN(parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) ? 0 : parseFloat(values['repeating_weapon_'+ idarray[k] +'_weapon_bonus'])) +' [WB] + ?{Modifikator|0}]]}}{{^{check-result}=[[1d20]]}}'; } } } @@ -1731,8 +1873,8 @@ attrs['btn_active_ranged_weapon'] = btnActiveRangedWeapon; setAttrs(attrs); }); - }); - }); + }); + }); on('change:repeating_armor', function(eventInfo) { getAttrs(['repeating_armor_armor_details_visibility', 'repeating_armor_armor_details_visibility_toggle'], function(values) { @@ -1789,6 +1931,9 @@ attrs[fields[j] +'_armor_bonus'] += isNaN(parseFloat(values[bonuses[k * fields.length + j]])) ? 0 : parseFloat(values[bonuses[k * fields.length + j]]); } } + if(attrs[fields[j] +'_armor_bonus'] == 0) { + attrs[fields[j] +'_armor_bonus'] = ""; + } } setAttrs(attrs); }); @@ -1817,11 +1962,11 @@ if(values['repeating_spell_'+ idarray[k] +'_spell_active'] == "1") { if(values['repeating_spell_'+ idarray[k] +'_spell_type'] === undefined || values['repeating_spell_'+ idarray[k] +'_spell_type'] == 'spc' || values['repeating_spell_'+ idarray[k] +'_spell_type'] == 'msc') { countActiveNormalSpell++; - btnActiveNormalSpell += '|'+ values['repeating_spell_'+ idarray[k] +'_spell_name'] +',{{Zauber='+ values['repeating_spell_'+ idarray[k] +'_spell_name'] + (values['repeating_spell_'+ idarray[k] +'_spell_type'] == 'msc' ? ' (!)' : '') +'}}{{mana='+ values['repeating_spell_'+ idarray[k] +'_spell_mana'] +'}}{{Distanz='+ values['repeating_spell_'+ idarray[k] +'_spell_distance'] +'}}{{Dauer='+ values['repeating_spell_'+ idarray[k] +'_spell_duration'] +'}}{{Abklingzeit='+ values['repeating_spell_'+ idarray[k] +'_spell_cooldown'] +'}}{{Probenwert=[[@{normal-spellcasting} [Zaubern] + '+ (isNaN(parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) ? 0 : parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) +' [ZB] + ?{Modifikator|0} [Modifikator]]]}}'; + btnActiveNormalSpell += '|'+ values['repeating_spell_'+ idarray[k] +'_spell_name'] +',{{Zauber='+ values['repeating_spell_'+ idarray[k] +'_spell_name'] + (values['repeating_spell_'+ idarray[k] +'_spell_type'] == 'msc' ? ' (!)' : '') +'}}{{mana='+ values['repeating_spell_'+ idarray[k] +'_spell_mana'] +'}}{{Distanz='+ values['repeating_spell_'+ idarray[k] +'_spell_distance'] +'}}{{Dauer='+ values['repeating_spell_'+ idarray[k] +'_spell_duration'] +'}}{{Abklingzeit='+ values['repeating_spell_'+ idarray[k] +'_spell_cooldown'] +'}}{{Probenwert=[[@{normal-spellcasting} [Zaubern] + '+ (isNaN(parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) ? 0 : parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) +' [ZB] + ?{Modifikator|0}]]}}'; } if(values['repeating_spell_'+ idarray[k] +'_spell_type'] == 'tsc') { countActiveTargetedSpell++; - btnActiveTargetedSpell += '|'+ values['repeating_spell_'+ idarray[k] +'_spell_name'] +',{{Zauber='+ values['repeating_spell_'+ idarray[k] +'_spell_name'] +'}}{{mana='+ values['repeating_spell_'+ idarray[k] +'_spell_mana'] +'}}{{Distanz='+ values['repeating_spell_'+ idarray[k] +'_spell_distance'] +'}}{{Dauer='+ values['repeating_spell_'+ idarray[k] +'_spell_duration'] +'}}{{Abklingzeit='+ values['repeating_spell_'+ idarray[k] +'_spell_cooldown'] +'}}{{Probenwert=[[@{targeted-spellcasting} [Zielzauber] + '+ (isNaN(parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) ? 0 : parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) +' [ZB] + ?{Modifikator|0} [Modifikator]]]}}'; + btnActiveTargetedSpell += '|'+ values['repeating_spell_'+ idarray[k] +'_spell_name'] +',{{Zauber='+ values['repeating_spell_'+ idarray[k] +'_spell_name'] +'}}{{mana='+ values['repeating_spell_'+ idarray[k] +'_spell_mana'] +'}}{{Distanz='+ values['repeating_spell_'+ idarray[k] +'_spell_distance'] +'}}{{Dauer='+ values['repeating_spell_'+ idarray[k] +'_spell_duration'] +'}}{{Abklingzeit='+ values['repeating_spell_'+ idarray[k] +'_spell_cooldown'] +'}}{{Probenwert=[[@{targeted-spellcasting} [Zielzauber] + '+ (isNaN(parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) ? 0 : parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) +' [ZB] + ?{Modifikator|0}]]}}'; } } } @@ -1831,7 +1976,7 @@ for(var k=0; k < idarray.length; k++) { if(values['repeating_spell_'+ idarray[k] +'_spell_active'] == "1") { if(values['repeating_spell_'+ idarray[k] +'_spell_type'] === undefined || values['repeating_spell_'+ idarray[k] +'_spell_type'] == 'spc' || values['repeating_spell_'+ idarray[k] +'_spell_type'] == 'msc') { - btnActiveNormalSpell = '&{template:default}{{name=^{normal-spellcasting}}}{{^{spell}='+ values['repeating_spell_'+ idarray[k] +'_spell_name'] +'}}{{^{mana}='+ values['repeating_spell_'+ idarray[k] +'_spell_mana'] +'}}{{^{spell-distance}='+ values['repeating_spell_'+ idarray[k] +'_spell_distance'] +'}}{{^{spell-duration}='+ values['repeating_spell_'+ idarray[k] +'_spell_duration'] +'}}{{^{spell-cooldown}='+ values['repeating_spell_'+ idarray[k] +'_spell_cooldown'] +'}}{{^{check-value}=[[@{normal-spellcasting} [^{normal-spellcasting}] + '+ (isNaN(parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) ? 0 : parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) +' [^{spell-modifier-short}] + ?{Modifikator|0} [Modifikator]]]}}{{^{check-result}=[[1d20]]}}'; + btnActiveNormalSpell = '&{template:default}{{name=^{normal-spellcasting}}}{{^{spell}='+ values['repeating_spell_'+ idarray[k] +'_spell_name'] +'}}{{^{mana}='+ values['repeating_spell_'+ idarray[k] +'_spell_mana'] +'}}{{^{spell-distance}='+ values['repeating_spell_'+ idarray[k] +'_spell_distance'] +'}}{{^{spell-duration}='+ values['repeating_spell_'+ idarray[k] +'_spell_duration'] +'}}{{^{spell-cooldown}='+ values['repeating_spell_'+ idarray[k] +'_spell_cooldown'] +'}}{{^{check-value}=[[@{normal-spellcasting} + '+ (isNaN(parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) ? 0 : parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) +' [ZB] + ?{Modifikator|0}]]}}{{^{check-result}=[[1d20]]}}'; } } } @@ -1844,7 +1989,7 @@ for(var k=0; k < idarray.length; k++) { if(values['repeating_spell_'+ idarray[k] +'_spell_active'] == "1") { if(values['repeating_spell_'+ idarray[k] +'_spell_type'] == 'tsc') { - btnActiveTargetedSpell = '&{template:default}{{name=^{targeted-spellcasting}}}{{^{spell}='+ values['repeating_spell_'+ idarray[k] +'_spell_name'] +'}}{{^{mana}='+ values['repeating_spell_'+ idarray[k] +'_spell_mana'] +'}}{{^{spell-distance}='+ values['repeating_spell_'+ idarray[k] +'_spell_distance'] +'}}{{^{spell-duration}='+ values['repeating_spell_'+ idarray[k] +'_spell_duration'] +'}}{{^{spell-cooldown}='+ values['repeating_spell_'+ idarray[k] +'_spell_cooldown'] +'}}{{^{check-value}=[[@{targeted-spellcasting} [^{targeted-spellcasting}] + '+ (isNaN(parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) ? 0 : parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) +' [^{spell-modifier-short}] + ?{Modifikator|0} [Modifikator]]]}}{{^{check-result}=[[1d20]]}}'; + btnActiveTargetedSpell = '&{template:default}{{name=^{targeted-spellcasting}}}{{^{spell}='+ values['repeating_spell_'+ idarray[k] +'_spell_name'] +'}}{{^{mana}='+ values['repeating_spell_'+ idarray[k] +'_spell_mana'] +'}}{{^{spell-distance}='+ values['repeating_spell_'+ idarray[k] +'_spell_distance'] +'}}{{^{spell-duration}='+ values['repeating_spell_'+ idarray[k] +'_spell_duration'] +'}}{{^{spell-cooldown}='+ values['repeating_spell_'+ idarray[k] +'_spell_cooldown'] +'}}{{^{check-value}=[[@{targeted-spellcasting} + '+ (isNaN(parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) ? 0 : parseFloat(values['repeating_spell_'+ idarray[k] +'_spell_modifier'])) +' [ZB] + ?{Modifikator|0}]]}}{{^{check-result}=[[1d20]]}}'; } } } @@ -1877,29 +2022,33 @@ }); getSectionIDs('repeating_talent', function(idarray) { var actives = []; - var ranks = []; - var bonuses = []; - for(var k=0; k < idarray.length; k++) { - actives.push('repeating_talent_'+ idarray[k] +'_talent_active'); + var ranks = []; + var bonuses = []; + for(var k=0; k < idarray.length; k++) { + actives.push('repeating_talent_'+ idarray[k] +'_talent_active'); ranks.push('repeating_talent_'+ idarray[k] +'_talent_rank'); - for(var j = 0; j < fields.length; j++) { - bonuses.push('repeating_talent_'+ idarray[k] +'_talent_'+ fields[j] +'_bonus'); - } - } - getAttrs(actives.concat(ranks).concat(bonuses), function(values) { - var newAttrs = {}; - for(var j = 0; j < fields.length; j++) { - var bonus = 0; - for(var k=0; k < ranks.length; k++) { + for(var j = 0; j < fields.length; j++) { + bonuses.push('repeating_talent_'+ idarray[k] +'_talent_'+ fields[j] +'_bonus'); + } + } + getAttrs(actives.concat(ranks).concat(bonuses), function(values) { + var newAttrs = {}; + for(var j = 0; j < fields.length; j++) { + var bonus = 0; + for(var k=0; k < ranks.length; k++) { if(values[actives[k]] == "1") { bonus += (isNaN(parseFloat(values[ranks[k]])) ? 0 : parseFloat(values[ranks[k]])) * (isNaN(parseFloat(values[bonuses[k * fields.length + j]])) ? 0 : parseFloat(values[bonuses[k * fields.length + j]])); } - } - newAttrs[fields[j] +'_talent_bonus'] = bonus; - } - setAttrs(newAttrs); - }); - }); + } + if(bonus > 0) { + newAttrs[fields[j] +'_talent_bonus'] = bonus; + } else { + newAttrs[fields[j] +'_talent_bonus'] = ""; + } + } + setAttrs(newAttrs); + }); + }); }); on('change:repeating_equipment', function(eventInfo) { @@ -1934,6 +2083,52 @@ for(var k=0; k < quantities.length; k++) { attrs[fields[j] +'_equipment_bonus'] += (isNaN(parseFloat(values[quantities[k]])) ? 0 : parseFloat(values[quantities[k]])) * (isNaN(parseFloat(values[bonuses[k * fields.length + j]])) ? 0 : parseFloat(values[bonuses[k * fields.length + j]])); } + if(attrs[fields[j] +'_equipment_bonus'] == 0) { + attrs[fields[j] +'_equipment_bonus'] = ""; + } + } + setAttrs(attrs); + }); + }); + }); + + on('change:repeating_miscellaneous', function(eventInfo) { + getAttrs(['repeating_miscellaneous_miscellaneous_details_visibility', 'repeating_miscellaneous_miscellaneous_details_visibility_toggle'], function(values) { + if(values['repeating_miscellaneous_miscellaneous_details_visibility'] == 'toggle') { + if(values['repeating_miscellaneous_miscellaneous_details_visibility_toggle'] == 'visible') { + setAttrs({ + repeating_miscellaneous_miscellaneous_details_visibility: 'hidden', + repeating_miscellaneous_miscellaneous_details_visibility_toggle: 'hidden' + }); + } else { + setAttrs({ + repeating_miscellaneous_miscellaneous_details_visibility: 'visible', + repeating_miscellaneous_miscellaneous_details_visibility_toggle: 'visible' + }); + } + } + }); + getSectionIDs('repeating_miscellaneous', function(idarray) { + var actives = []; + var bonuses = []; + for(var k=0; k < idarray.length; k++) { + actives.push('repeating_miscellaneous_'+ idarray[k] +'_miscellaneous_active'); + for(var j = 0; j < fields.length; j++) { + bonuses.push('repeating_miscellaneous_'+ idarray[k] +'_miscellaneous_'+ fields[j] +'_bonus'); + } + } + getAttrs(actives.concat(bonuses), function(values) { + var attrs = {}; + for(var j = 0; j < fields.length; j++) { + attrs[fields[j] +'_miscellaneous_bonus'] = 0; + for(var k=0; k < actives.length; k++) { + if(values[actives[k]] == "1") { + attrs[fields[j] +'_miscellaneous_bonus'] += (isNaN(parseFloat(values[actives[k]])) ? 0 : parseFloat(values[actives[k]])) * (isNaN(parseFloat(values[bonuses[k * fields.length + j]])) ? 0 : parseFloat(values[bonuses[k * fields.length + j]])); + } + } + if(attrs[fields[j] +'_miscellaneous_bonus'] == 0) { + attrs[fields[j] +'_miscellaneous_bonus'] = ""; + } } setAttrs(attrs); }); diff --git a/Dungeonslayers-4/translation.json b/Dungeonslayers-4/translation.json index de5a366eea..7ffbc473ac 100644 --- a/Dungeonslayers-4/translation.json +++ b/Dungeonslayers-4/translation.json @@ -1,173 +1,175 @@ { - "active":"Active", - "age":"Age", - "agility":"Agility", - "alphabet":"Alphabet", - "appraise":"Appraise", - "appraise-bonus":"Appraise, ...", - "armor":"Armor", - "armor-material-example":"Wood, Leather, Metal, ...", - "armor-type-example":"Helmet, Body, Vambrace, Greaves, Shield, ...", - "armor-value":"Armor value", - "armor-value-short":"AV", - "attribute+trait":"Attribute + Trait", - "aura":"Aura", - "base":"Base", - "body":"Body", - "body-short+constitution-short":"BOD+CO", - "body-short+strength-short":"BOD+ST", - "bonus":"Bonus", - "both-attack":"Both", - "character":"Character", - "character-name":"Character name", - "check":"Check", - "check-result":"Check result", - "check-value":"Check value", - "class":"Class", - "class-example":"Fighter, Scout, Healer, Wizard, Sorcerer, ...", - "climb":"Climb", - "climb-bonus":"Acrobat, Master Climber, ...", - "communicate":"Communicate", - "communicate-bonus":"Education, ...", - "constitution":"Constitution", - "cooldown":"Cooldown", - "culture":"Culture", - "culture-example":"Barbarians, Mountain Dwarves, Freelander, Kaiban, Wood Elves, Wild Elves, Desert Dwarves, Wyndlanders, Zasarian, ...", - "current-hit-points":"Current hit points", - "current-mana-points":"Current mana points", - "date-of-birth":"Date of birth", - "decipher-script":"Decipher script", - "decipher-script-bonus":"Alertness, Education, ...", - "defense":"Defense", - "defy-poison":"Defy poison", - "defy-poison-bonus":"Endurance, …", - "dexterity":"Dexterity", - "disable-traps":"Disable traps", - "disable-traps-bonus":"Thievery, ...", - "distance":"Distance", - "duration":"Duration", - "edit-bonuses":"Edit bonuses", - "effect":"Effect", - "equipment":"Equipment", - "experience-points":"Experience points", - "experience-points-short":"EP", - "eye-color":"Eye color", - "feat-of-strength":"Feat of strength", - "feat-of-strength-bonus":"Brutal Blow, Devastating Strike, ...", - "flirt":"Flirt", - "flirt-bonus":"Charming, ...", - "gender":"Gender", - "generic":"Generic", - "generic-check":"Generic check", - "haggle":"Haggle", - "haggle-base":"MND+MAX(IN, AU)", - "haggle-bonus":"Charming, Rascal, ...", - "hair-color":"Hair color", - "hands":"Hands", - "hands-example":"1H = one-handed, 2H = two-handed, ...", - "character-height":"Height", - "hero-class":"Hero class", - "hero-class-example":"Berserker, Paladin, Weapon Master, Assassin, Ranger, Rogue, Cleric, Druid, Monk, Archmage, Battle Mage, Elementalist, Blood Mage, Demonologist, Necromancer, ...", - "hide":"Hide", - "hit-points":"Hit points", - "initiative":"Initiative", - "intellect":"Intellect", - "jump":"Jump", - "jump-bonus":"Acrobat, ...", - "knowledge":"Knowledge", - "knowledge-bonus":"Education, Expertise, ...", - "language":"Language", - "level":"Level", - "magic-bonus":"Magic bonus", - "magic-bonus-short":"MB", - "mana":"Mana", - "material":"Material", - "melee-attack":"Melee attack", - "mind":"Mind", - "mind-influencing-spell":"Mind-influencing spell", - "mind-short+aura-short":"MND+AU", - "mind-short+dexterity-short":"MND+DX", - "mind-short+intellect-short":"MND+IN", - "mind-short+intellect-short-or-eight":"MAX(MND+IN, 8)", - "miscellaneous":"Miscellaneous", - "mobility":"Mobility", - "mobility-short+agility-short":"MOB+AG", - "mobility-short+dexterity-short":"MOB+DX", - "mobility-short+strength-short":"MOB+ST", - "movement-rate":"Movement rate", - "normal-spell":"Normal spell", - "normal-spellcasting":"Spellcasting", - "notes":"Notes", - "of":"of", - "open-lock":"Open lock", - "open-lock-bonus":"Thievery, Lockpicking, ...", - "opponent-defense":"Opponent's defense", - "opponent-defense-short":"OD", - "other-abilities":"Other abilities", - "perception":"Perception", - "perception-bonus":"Thievery, Alertness, ...", - "pick-pocket":"Pick pocket", - "pick-pocket-bonus":"Thievery, Stealth, Diversion, Pickpocket, ...", - "place-of-birth":"Place of birth", - "player":"Player", - "player-name":"Player name", - "private-biography":"Private biography", - "progress-points":"Progress points", - "progress-points-short":"PP", - "public-biography":"Public biography", - "quantity":"Quantity", - "quantity-short":"Qty", - "race":"Race", - "race-example":"Elf, Human, Dwarf, ...", - "racial-abilities":"Racial abilities", - "ranged-attack":"Ranged attack", - "read-tracks":"Read tracks", - "read-tracks-bonus":"Hunter, Alertness, ...", - "resist-disease":"Resist disease", - "resist-disease-bonus":"Endurance, …", - "ride":"Ride", - "ride-base":"MOB+MAX(AG, AU)", - "ride-bonus":"Riding, Mounted Archer, Beast Master, ...", - "search":"Search", - "search-bonus":"Thievery, Stealth, Alertness, ...", - "sneak":"Sneak", - "sneak-bonus":"Stealth, ...", - "special":"Special", - "special-behavior":"Special behavior", - "special-characteristics":"Special characteristics", - "spell":"Spell", - "spell-cooldown":"Cooldown", - "spell-distance":"Distance", - "spell-duration":"Duration", - "spell-modifier":"Spell modifier", - "spell-modifier-short":"SM", - "spell-type":"Normal spell, Targeted spell or Mind-influencing spell", - "start":"Start", - "start-fire":"Start fire", - "start-fire-bonus":"Hunter, ...", - "stealth-bonus":"Stealth, ...", - "strength":"Strength", - "swim":"Swim", - "swim-bonus":"Swim, ...", - "talent":"Talent", - "talent-points":"Talent points", - "talent-points-short":"TP", - "targeted-spell":"Targeted spell", - "targeted-spellcasting":"Targeted spellcasting", - "tier":"Tier", - "total":"Total", - "type":"Type", - "typical-checks":"Typical checks", - "unarmed":"Unarmed", - "wake-up":"Wake up", - "wake-up-bonus":"Lightning Reflexes, Alertness, ...", - "weapon":"Weapon", - "weapon-bonus":"Weapon bonus", - "weapon-bonus-short":"WB", - "weapon-type":"Melee attack or Ranged attack", - "weight":"Weight", - "where-carried":"Where carried?", - "work-mechanism":"Work mechanism", - "work-mechanism-base":"MND+MAX(DX, IN)", - "work-mechanism-bonus":"Thievery, Artisan, Lockpicking, ..." + "active":"Active", + "additional":"Additional", + "age":"Age", + "agility":"Agility", + "alphabets":"Alphabets", + "appraise":"Appraise", + "appraise-bonus":"Appraise, ...", + "armor":"Armor", + "armor-material-example":"Wood, Leather, Metal, ...", + "armor-type-example":"Helmet, Body, Vambrace, Greaves, Shield, ...", + "armor-value":"Armor value", + "armor-value-short":"AV", + "attribute+trait":"Attribute + Trait", + "aura":"Aura", + "base":"Base", + "body":"Body", + "body-short+constitution-short":"BOD+CO", + "body-short+strength-short":"BOD+ST", + "bonus":"Bonus", + "both-attack":"Both", + "character":"Character", + "character-name":"Character name", + "check":"Check", + "check-result":"Check result", + "check-value":"Check value", + "class":"Class", + "class-example":"Fighter, Scout, Healer, Wizard, Sorcerer, ...", + "climb":"Climb", + "climb-bonus":"Acrobat, Master Climber, ...", + "communicate":"Communicate", + "communicate-bonus":"Education, ...", + "constitution":"Constitution", + "cooldown":"Cooldown", + "culture":"Culture", + "culture-example":"Barbarians, Mountain Dwarves, Freelander, Kaiban, Wood Elves, Wild Elves, Desert Dwarves, Wyndlanders, Zasarian, ...", + "cultural-talents":"Cultural talents", + "current-hit-points":"Current hit points", + "current-mana-points":"Current mana points", + "date-of-birth":"Date of birth", + "decipher-script":"Decipher script", + "decipher-script-bonus":"Alertness, Education, ...", + "defense":"Defense", + "defy-poison":"Defy poison", + "defy-poison-bonus":"Endurance, …", + "dexterity":"Dexterity", + "disable-traps":"Disable traps", + "disable-traps-bonus":"Thievery, ...", + "distance":"Distance", + "duration":"Duration", + "edit-bonuses":"Edit bonuses", + "effect":"Effect", + "equipment":"Equipment", + "experience-points":"Experience points", + "experience-points-short":"EP", + "eye-color":"Eye color", + "feat-of-strength":"Feat of strength", + "feat-of-strength-bonus":"Brutal Blow, Devastating Strike, ...", + "flirt":"Flirt", + "flirt-bonus":"Charming, ...", + "gender":"Gender", + "generic":"Generic", + "generic-check":"Generic check", + "haggle":"Haggle", + "haggle-base":"MND+MAX(IN, AU)", + "haggle-bonus":"Charming, Rascal, ...", + "hair-color":"Hair color", + "hands":"Hands", + "hands-example":"1H = one-handed, 2H = two-handed, ...", + "character-height":"Height", + "hero-class":"Hero class", + "hero-class-example":"Berserker, Paladin, Weapon Master, Assassin, Ranger, Rogue, Cleric, Druid, Monk, Archmage, Battle Mage, Elementalist, Blood Mage, Demonologist, Necromancer, ...", + "hide":"Hide", + "hit-points":"Hit points", + "initiative":"Initiative", + "intellect":"Intellect", + "jump":"Jump", + "jump-bonus":"Acrobat, ...", + "knowledge":"Knowledge", + "knowledge-bonus":"Education, Expertise, ...", + "languages":"Languages", + "learned":"Learned", + "level":"Level", + "magic-bonus":"Magic bonus", + "magic-bonus-short":"MB", + "mana":"Mana", + "material":"Material", + "melee-attack":"Melee attack", + "mind":"Mind", + "mind-influencing-spell":"Mind-influencing spell", + "mind-short+aura-short":"MND+AU", + "mind-short+dexterity-short":"MND+DX", + "mind-short+intellect-short":"MND+IN", + "mind-short+intellect-short-or-eight":"MAX(MND+IN, 8)", + "miscellaneous":"Miscellaneous", + "mobility":"Mobility", + "mobility-short+agility-short":"MOB+AG", + "mobility-short+dexterity-short":"MOB+DX", + "mobility-short+strength-short":"MOB+ST", + "movement-rate":"Movement rate", + "normal-spell":"Normal spell", + "normal-spellcasting":"Spellcasting", + "notes":"Notes", + "of":"of", + "open-lock":"Open lock", + "open-lock-bonus":"Thievery, Lockpicking, ...", + "opponent-defense":"Opponent's defense", + "opponent-defense-short":"OD", + "other-abilities":"Other abilities", + "perception":"Perception", + "perception-bonus":"Thievery, Alertness, ...", + "pick-pocket":"Pick pocket", + "pick-pocket-bonus":"Thievery, Stealth, Diversion, Pickpocket, ...", + "place-of-birth":"Place of birth", + "player":"Player", + "player-name":"Player name", + "private-biography":"Private biography", + "progress-points":"Progress points", + "progress-points-short":"PP", + "public-biography":"Public biography", + "quantity":"Quantity", + "race":"Race", + "race-example":"Elf, Human, Dwarf, ...", + "racial-abilities":"Racial abilities", + "ranged-attack":"Ranged attack", + "read-tracks":"Read tracks", + "read-tracks-bonus":"Hunter, Alertness, ...", + "resist-disease":"Resist disease", + "resist-disease-bonus":"Endurance, …", + "ride":"Ride", + "ride-base":"MOB+MAX(AG, AU)", + "ride-bonus":"Riding, Mounted Archer, Beast Master, ...", + "search":"Search", + "search-bonus":"Thievery, Stealth, Alertness, ...", + "sneak":"Sneak", + "sneak-bonus":"Stealth, ...", + "special":"Special", + "special-behavior":"Special behavior", + "special-characteristics":"Special characteristics", + "spell":"Spell", + "spell-cooldown":"Cooldown", + "spell-distance":"Distance", + "spell-duration":"Duration", + "spell-modifier":"Spell modifier", + "spell-modifier-short":"SM", + "spell-type":"Normal spell, Targeted spell or Mind-influencing spell", + "start":"Start", + "start-fire":"Start fire", + "start-fire-bonus":"Hunter, ...", + "stealth-bonus":"Stealth, ...", + "strength":"Strength", + "swim":"Swim", + "swim-bonus":"Swim, ...", + "talent":"Talent", + "talent-points":"Talent points", + "talent-points-short":"TP", + "targeted-spell":"Targeted spell", + "targeted-spellcasting":"Targeted spellcasting", + "tier":"Tier", + "total":"Total", + "type":"Type", + "typical-checks":"Typical checks", + "unarmed":"Unarmed", + "wake-up":"Wake up", + "wake-up-bonus":"Lightning Reflexes, Alertness, ...", + "weapon":"Weapon", + "weapon-bonus":"Weapon bonus", + "weapon-bonus-short":"WB", + "weapon-type":"Melee attack or Ranged attack", + "weight":"Weight", + "where-carried":"Where carried?", + "work-mechanism":"Work mechanism", + "work-mechanism-base":"MND+MAX(DX, IN)", + "work-mechanism-bonus":"Thievery, Artisan, Lockpicking, ..." } \ No newline at end of file diff --git a/Dungeonslayers-4/translations/de.json b/Dungeonslayers-4/translations/de.json index 17df642c49..f40a82bfb4 100644 --- a/Dungeonslayers-4/translations/de.json +++ b/Dungeonslayers-4/translations/de.json @@ -1,21 +1,22 @@ { "active":"Aktiv", + "additional":"Zusätzlich", "age":"Alter", "agility":"Bewegung", - "alphabet":"Schrift", - "appraise":"Schtzen", - "appraise-bonus":"Beute schtzen, ", - "armor":"Rstung", - "armor-material-example":"Holz, Leder, Metall, ", - "armor-type-example":"Helm, Krper, Armschienen, Beinschienen, Schild, ", + "alphabets":"Schriftzeichen", + "appraise":"Schätzen", + "appraise-bonus":"Beute schätzen, ...", + "armor":"RĂĽstung", + "armor-material-example":"Holz, Leder, Metall, ...", + "armor-type-example":"Helm, Körper, Armschienen, Beinschienen, Schild, ...", "armor-value":"Panzerung", "armor-value-short":"PA", "attribute+trait":"Attribute + Eigenschaften", "aura":"Aura", "base":"Basis", - "body":"Krper", - "body-short+constitution-short":"KR+H", - "body-short+strength-short":"KR+ST", + "body":"Körper", + "body-short+constitution-short":"KĂ–R+H", + "body-short+strength-short":"KĂ–R+ST", "bonus":"Bonus", "both-attack":"Beides", "character":"Charakter", @@ -24,26 +25,27 @@ "check-result":"Probenergebnis", "check-value":"Probenwert", "class":"Klasse", - "class-example":"Krieger, Spher, Heiler, Zauberer, Schwarzmagier, ", + "class-example":"Krieger, Späher, Heiler, Zauberer, Schwarzmagier, ...", "climb":"Klettern", - "climb-bonus":"Akrobat, Kletterass, ", - "communicate":"Verstndigen", - "communicate-bonus":"Bildung, ", - "constitution":"Hrte", + "climb-bonus":"Akrobat, Kletterass, ...", + "communicate":"Verständigen", + "communicate-bonus":"Bildung, ...", + "constitution":"Härte", "cooldown":"Abklingzeit", "culture":"Kultur", - "culture-example":"Barbaren, Bergzwerge, Freilnder, Kaitaner, Waldelfen, Wildelfen, Wstenzwerge, Wyndlnder, Zasaren, ", + "culture-example":"Barbaren, Bergzwerge, Freiländer, Kaitaner, Waldelfen, Wildelfen, WĂĽstenzwerge, Wyndländer, Zasaren, ...", + "cultural-talents":"Kulturtalente", "current-hit-points":"Aktuelle Lebenskraft", "current-mana-points":"Aktuelles Mana", "date-of-birth":"Geburtsdatum", "decipher-script":"Inschrift entziffern", - "decipher-script-bonus":"Wahrnehmung, Bildung, ", + "decipher-script-bonus":"Wahrnehmung, Bildung, ...", "defense":"Abwehr", "defy-poison":"Gift trotzen", - "defy-poison-bonus":"Einstecker, ", + "defy-poison-bonus":"Einstecker, ...", "dexterity":"Geschick", - "disable-traps":"Fallen entschrfen", - "disable-traps-bonus":"Diebeskunst, ", + "disable-traps":"Fallen entschärfen", + "disable-traps-bonus":"Diebeskunst, ...", "distance":"Distanz", "duration":"Dauer", "edit-bonuses":"Boni bearbeiten", @@ -53,30 +55,31 @@ "experience-points-short":"EP", "eye-color":"Augenfarbe", "feat-of-strength":"Kraftakt", - "feat-of-strength-bonus":"Brutaler Hieb, Vernichtender Schlag, ", + "feat-of-strength-bonus":"Brutaler Hieb, Vernichtender Schlag, ...", "flirt":"Flirten", - "flirt-bonus":"Charmant, ", + "flirt-bonus":"Charmant, ...", "gender":"Geschlecht", "generic":"Generische", "generic-check":"Generische Probe", "haggle":"Feilschen", "haggle-base":"GEI+MAX(VE, AU)", - "haggle-bonus":"Charmant, Schlitzohr, ", + "haggle-bonus":"Charmant, Schlitzohr, ...", "hair-color":"Haarfarbe", - "hands":"Hnde", - "hands-example":"1H = einhndig, 2H = zweihndig, ", - "character-height":"Grsse", + "hands":"Hände", + "hands-example":"1H = einhändig, 2H = zweihändig, ...", + "character-height":"Grösse", "hero-class":"Heldenklasse", - "hero-class-example":"Berserker, Paladin, Waffenmeister, Attentter, Meisterdieb, Waldlufer, Druide, Kampfmnch, Kleriker, Elementarist, Erzmagier, Kriegszauberer, Blutmagier, Dmonologe, Nekromant, ", + "hero-class-example":"Berserker, Paladin, Waffenmeister, Attentäter, Meisterdieb, Waldläufer, Druide, Kampfmönch, Kleriker, Elementarist, Erzmagier, Kriegszauberer, Blutmagier, Dämonologe, Nekromant, ...", "hide":"Verbergen", "hit-points":"Lebenskraft", "initiative":"Initiative", "intellect":"Verstand", "jump":"Springen", - "jump-bonus":"Akrobat, ", + "jump-bonus":"Akrobat, ...", "knowledge":"Wissen", - "knowledge-bonus":"Bildung, Wissensgebiet, ", - "language":"Sprache", + "knowledge-bonus":"Bildung, Wissensgebiet, ...", + "languages":"Sprachen", + "learned":"Gelernt", "level":"Stufe", "magic-bonus":"Magiebonus", "magic-bonus-short":"MB", @@ -90,7 +93,7 @@ "mind-short+intellect-short":"GEI+VE", "mind-short+intellect-short-or-eight":"MAX(GEI+VE, 8)", "miscellaneous":"Sonstiges", - "mobility":"Agilitt", + "mobility":"Agilität", "mobility-short+agility-short":"AGI+BE", "mobility-short+dexterity-short":"AGI+GE", "mobility-short+strength-short":"AGI+ST", @@ -99,39 +102,39 @@ "normal-spellcasting":"Zaubern", "notes":"Notizen", "of":"von", - "open-lock":"Schlsser ffnen", - "open-lock-bonus":"Diebeskunst, Schlossknacker, ", + "open-lock":"Schlösser öffnen", + "open-lock-bonus":"Diebeskunst, Schlossknacker, ...", "opponent-defense":"Gegnerabwehr", "opponent-defense-short":"GA", - "other-abilities":"Sonstige Fhigkeiten", + "other-abilities":"Sonstige Fähigkeiten", "perception":"Bemerken", - "perception-bonus":"Diebeskunst, Wahrnehmung, ", + "perception-bonus":"Diebeskunst, Wahrnehmung, ...", "pick-pocket":"Taschendiebstahl", - "pick-pocket-bonus":"Diebeskunst, Heimlichkeit, Kann ich mal vorbei?, Langfinger, ", + "pick-pocket-bonus":"Diebeskunst, Heimlichkeit, Kann ich mal vorbei?, Langfinger, ...", "place-of-birth":"Geburtsort", "player":"Spieler", "player-name":"Spielername", "private-biography":"Geheime Biographie", "progress-points":"Lernpunkte", "progress-points-short":"LP", - "public-biography":"ffentliche Biographie", + "public-biography":"Ă–ffentliche Biographie", "quantity":"Menge", "quantity-short":"Menge", "race":"Volk", - "race-example":"Elf, Mensch, Zwerg, ", - "racial-abilities":"Volksfhigkeiten", + "race-example":"Elf, Mensch, Zwerg, ...", + "racial-abilities":"Volksfähigkeiten", "ranged-attack":"Schiessen", "read-tracks":"Spuren lesen", - "read-tracks-bonus":"Jger, Wahrnehmung, ", + "read-tracks-bonus":"Jäger, Wahrnehmung, ...", "resist-disease":"Krankheit trotzen", - "resist-disease-bonus":"Einstecker, ", + "resist-disease-bonus":"Einstecker, ...", "ride":"Reiten", "ride-base":"AGI+MAX(BE, AU)", - "ride-bonus":"Reiten, Sattelschtze, Tiermeister, ", + "ride-bonus":"Reiten, SattelschĂĽtze, Tiermeister, ...", "search":"Suchen", - "search-bonus":"Diebeskunst, Heimlichkeit, Wahrnehmung, ", + "search-bonus":"Diebeskunst, Heimlichkeit, Wahrnehmung, ...", "sneak":"Schleichen", - "sneak-bonus":"Heimlichkeit, ", + "sneak-bonus":"Heimlichkeit, ...", "special":"Besonderes", "special-behavior":"Besonderes Verhalten", "special-characteristics":"Besonderes Aussehen", @@ -144,11 +147,11 @@ "spell-type":"Zauber, Zielzauber, Geistesbeeinflussender Zauber", "start":"Start", "start-fire":"Feuer machen", - "start-fire-bonus":"Jger, ", - "stealth-bonus":"Heimlichkeit, ", - "strength":"Strke", + "start-fire-bonus":"Jäger, ...", + "stealth-bonus":"Heimlichkeit, ...", + "strength":"Stärke", "swim":"Schwimmen", - "swim-bonus":"Schwimmen, ", + "swim-bonus":"Schwimmen, ...", "talent":"Talent", "talent-points":"Talentpunkte", "talent-points-short":"TP", @@ -160,14 +163,14 @@ "typical-checks":"Typische Proben", "unarmed":"Waffenlos", "wake-up":"Erwachen", - "wake-up-bonus":"Schnelle Reflexe, Wahrnehmung, ", + "wake-up-bonus":"Schnelle Reflexe, Wahrnehmung, ...", "weapon":"Waffe", "weapon-bonus":"Waffenbonus", "weapon-bonus-short":"WB", "weapon-type":"Schlagen oder Schiessen", "weight":"Gewicht", "where-carried":"Wo gelagert?", - "work-mechanism":"Mechanismus ffnen", + "work-mechanism":"Mechanismus öffnen", "work-mechanism-base":"GEI+MAX(GE, VE)", - "work-mechanism-bonus":"Diebeskunst, Handwerk, Schlossknacker, " + "work-mechanism-bonus":"Diebeskunst, Handwerk, Schlossknacker, ..." } \ No newline at end of file diff --git a/Dungeonslayers-4/translations/en.json b/Dungeonslayers-4/translations/en.json index 56a3ec209c..a18e3734da 100644 --- a/Dungeonslayers-4/translations/en.json +++ b/Dungeonslayers-4/translations/en.json @@ -1,8 +1,9 @@ { "active":"Active", + "additional":"Additional", "age":"Age", "agility":"Agility", - "alphabet":"Alphabet", + "alphabets":"Alphabets", "appraise":"Appraise", "appraise-bonus":"Appraise, ...", "armor":"Armor", @@ -33,6 +34,7 @@ "cooldown":"Cooldown", "culture":"Culture", "culture-example":"Barbarians, Mountain Dwarves, Freelander, Kaiban, Wood Elves, Wild Elves, Desert Dwarves, Wyndlanders, Zasarian, ...", + "cultural-talents":"Cultural talents", "current-hit-points":"Current hit points", "current-mana-points":"Current mana points", "date-of-birth":"Date of birth", @@ -76,7 +78,8 @@ "jump-bonus":"Acrobat, ...", "knowledge":"Knowledge", "knowledge-bonus":"Education, Expertise, ...", - "language":"Language", + "languages":"Languages", + "learned":"Learned", "level":"Level", "magic-bonus":"Magic bonus", "magic-bonus-short":"MB", @@ -116,7 +119,6 @@ "progress-points-short":"PP", "public-biography":"Public biography", "quantity":"Quantity", - "quantity-short":"Qty", "race":"Race", "race-example":"Elf, Human, Dwarf, ...", "racial-abilities":"Racial abilities",