From c5181577f72ff974f612bab0e5450951a90b0b1c Mon Sep 17 00:00:00 2001
From: vonv <44206935+vonv@users.noreply.github.com>
Date: Sun, 8 Oct 2023 21:41:15 +0200
Subject: [PATCH 01/38] Update fr.json
---
lang/fr.json | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/lang/fr.json b/lang/fr.json
index 9a76c265..cfdad06a 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -373,6 +373,8 @@
"CoC7.EraPulp": "Cthulhu Pulp",
"CoC7.EraModern": "Moderne",
"CoC7.EraModernPulp": "Moderne - Pulp",
+ "CoC7.EraRegency": "Regency Cthulhu - Standard",
+ "CoC7.EraRegencyPulp": "Regency Cthulhu - Pulp",
"CoC7.Eras": "Époques Cthulhiennes",
"CoC7.EraAvailability": "Disponibilité",
@@ -566,6 +568,7 @@
"CoC7.DeleteSanityLossEncounter": "Supprimer une perte de SAN liée à une Rencontre",
"CoC7.DeleteSanityLossImmunity": "Supprimer une immunité aux pertes de SAN",
+ "CoC7.SanityLossType": "Type",
"CoC7.SanityLossTypeDialogTitle": "Nouvelle immunité ou perte de SAN liée à une Rencontre",
"CoC7.SanityLossTypeDialogBody": "Ajouter une Confrontation au Mythe, Perte de SAN, ou Immunité à ce personnage.",
"CoC7.SanityLossTypeReason": "Raison",
@@ -723,6 +726,7 @@
"CoC7.ErrorBeneficiaryAtMaxBonus": "le bénéficiaire {name} a déjà le max de dés bonus",
"CoC7.ErrorParticipantAtMaxBonus": "{participantUuid} a déjà le max de dés bonus",
"CoC7.ErrorTokenNotOnScene": "Le token n'appartient pas à la scène de cette étape",
+ "CoC7.ErrorTokenIncorrect": "Impossible de trouver le token sélectionné",
"CoC7.AddParticipant": "Ajouter un protagoniste",
"CoC7.RemoveParticipant": "Enlever un protagoniste",
"CoC7.RemoveParticipantHint": "Le protagoniste va être totalement supprimé de la poursuite",
From 15b39f14fa1ed55aae9d83d190b0bf6467693692 Mon Sep 17 00:00:00 2001
From: Stefano1975t <97825580+Stefano1975t@users.noreply.github.com>
Date: Sun, 22 Oct 2023 08:34:57 +0200
Subject: [PATCH 02/38] Update it.json
---
lang/it.json | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lang/it.json b/lang/it.json
index c369c479..4e8cc100 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -572,6 +572,7 @@
"CoC7.DeleteSanityLossEncounter": "Elimina la perdita di Sanità per l'incontro",
"CoC7.DeleteSanityLossImmunity": "Elimina l'immunità alla perdita di Sanità",
+ "CoC7.SanityLossType": "Tipo",
"CoC7.SanityLossTypeDialogTitle": "Nuova perdita o immunità di Sanità",
"CoC7.SanityLossTypeDialogBody": "Aggiungi al personaggio un nuovo incontro dei Miti, una perdita di Sanità, o un'immunità alla Sanità.",
"CoC7.SanityLossTypeReason": "Causa",
@@ -729,6 +730,7 @@
"CoC7.ErrorBeneficiaryAtMaxBonus": "Il destinatario {name} ha già il massimo dei dadi bonus",
"CoC7.ErrorParticipantAtMaxBonus": "{participantUuid} ha già il massimo dei dadi bonus",
"CoC7.ErrorTokenNotOnScene": "La Pedina non appartiene alla scena di questo luogo",
+ "CoC7.ErrorTokenIncorrect": "Impossibile trovare la pedina selezionata",
"CoC7.AddParticipant": "Aggiungi Partecipante",
"CoC7.RemoveParticipant": "Rimuovi Partecipante",
"CoC7.RemoveParticipantHint": "Il Partecipante verrà completamente rimosso dall'inseguimento",
From 44550510a34c3bd74f47daf1979d13c2e086b9e9 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sun, 22 Oct 2023 20:50:14 +0100
Subject: [PATCH 03/38] Add system manual button, tidy up manual and tour
---
docs/en/README.md | 2 +-
docs/en/chases.md | 2 +-
docs/en/first_investigator.md | 2 +-
docs/en/link_creation_window.md | 2 +-
lang/en.json | 2 ++
module/apps/coc7-tour.js | 4 ++++
module/hooks/ready.js | 22 ++++++++++++----------
module/manual/en/README.md | 2 +-
module/manual/en/first_investigator.md | 2 +-
module/manual/en/link_creation_window.md | 2 +-
module/scripts/coc7-directory-picker.js | 2 +-
module/settings-directory.js | 9 ++++++++-
module/tours/enable-variant-rules-en.js | 15 +++------------
packs/system-doc.db | 2 +-
14 files changed, 38 insertions(+), 32 deletions(-)
diff --git a/docs/en/README.md b/docs/en/README.md
index 7ac0e19c..eb61e443 100644
--- a/docs/en/README.md
+++ b/docs/en/README.md
@@ -12,7 +12,7 @@ The system automates most of the regular tasks and rules involved with running a
Several parts of the actor sheets have pop up tooltips that trigger after two seconds, this delay can be changed in the settings
-This documentation can be reopened under Compendiums -> JournalEntry -> System manual -> Call of Cthulhu 7th Edition [en]
+This documentation can be reopened under Game Settings -> Help and Documentation -> View CoC7 System Manual
# Recent changes
diff --git a/docs/en/chases.md b/docs/en/chases.md
index 0eddde65..25a2c378 100644
--- a/docs/en/chases.md
+++ b/docs/en/chases.md
@@ -41,7 +41,7 @@ Here you can set up your participant. Dragging an actor from the Actors sidebar
1. Dragging the questionmark onto a token will set the details to that token.
-One you drag an actor or select a token you can set up the participant
+Once you drag an actor or select a token you can set up the participant
![](../../assets/manual/chases/new_participant_setup.webp)
diff --git a/docs/en/first_investigator.md b/docs/en/first_investigator.md
index 0b30b047..498a110a 100644
--- a/docs/en/first_investigator.md
+++ b/docs/en/first_investigator.md
@@ -28,7 +28,7 @@ Click on the Items Directory tab then Create Item give this a name e.g. New Inve
On the Description tab to set the description click the button to get an editor.
-On the Details tab click the on the Biography Sections to add any sections you require from the Create a Backstory step of investigator creation. Click on the Compendium Packs tab then under the Item heading open up the Items Examples Item (CoC7) and drag the [_Punch_] onto the setup.
+On the Details tab click the on the Biography Sections to add any sections you require from the Create a Backstory step of investigator creation. Click on the Compendium Packs tab then under the Item heading open up the Items Examples Item (CoC7) and drag the [_Punch_] onto the setup.
On the Characteristics tab you can customise how investigator characteristics are rolled / bought
diff --git a/docs/en/link_creation_window.md b/docs/en/link_creation_window.md
index 3d620024..2f938479 100644
--- a/docs/en/link_creation_window.md
+++ b/docs/en/link_creation_window.md
@@ -1,7 +1,7 @@
# Link creation tool
The system includes a tool to help you create links easily.
-It's located on the left side bar. Click on the icon.
+It's located on the left side bar. Click on the icon.
This tools is available to GM only.
![Creation tool](../../assets/manual/links/links-creation-tool.webp)
diff --git a/lang/en.json b/lang/en.json
index f36cd99f..41645634 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -1005,6 +1005,8 @@
"CoC7.Migrate.ErrorItem": "Failed CoC7 system migration for Item {name}: {message}",
"CoC7.Migrate.ErrorActor": "Failed CoC7 system migration for Actor {name}: {message}",
+ "CoC7.System.Documentation": "View CoC7 System Manual",
+
"CoC7.Settings.CoreRules.Title": "Core Rule Book Optional Rules",
"CoC7.Settings.Rules.Name": "Variant/Optional Rules",
"CoC7.Settings.Rules.Label": "Configure Variant/Optional Rules",
diff --git a/module/apps/coc7-tour.js b/module/apps/coc7-tour.js
index a389b61b..ad3b1e03 100644
--- a/module/apps/coc7-tour.js
+++ b/module/apps/coc7-tour.js
@@ -35,6 +35,10 @@ if (typeof Tour !== 'undefined') {
}
await this.waitForElement(this.currentStep.selector)
+
+ if (typeof this.currentStep.sidebarTab !== 'undefined') {
+ ui.sidebar.activateTab(this.currentStep.sidebarTab)
+ }
}
async _postStep () {
diff --git a/module/hooks/ready.js b/module/hooks/ready.js
index a323c192..c1ef46b5 100644
--- a/module/hooks/ready.js
+++ b/module/hooks/ready.js
@@ -1,4 +1,4 @@
-/* global game, Hooks, isNewerVersion */
+/* global CONFIG, game, Hooks, isNewerVersion */
import { CoC7Tooltips } from '../apps/tooltips.js'
// import { CoC7WelcomeMessage } from '../apps/welcome-message.js'
import { registerTours } from '../scripts/register-tours.js'
@@ -13,16 +13,18 @@ export function listen () {
game.CoC7Tooltips = new CoC7Tooltips()
const instructionsVersion = game.settings.get('CoC7', 'showInstructions')
+ let lang = game.i18n.lang
+ const readMe = {
+ en: 'sxB2OXbfwV6M0nyQ',
+ fr: 'tdakyzTVOQsAMdSm'
+ }
+ if (typeof readMe[lang] === 'undefined') {
+ lang = 'en'
+ }
+ CONFIG.CoC7 = CONFIG.CoC7 ?? {}
+ CONFIG.CoC7.Manual = readMe[lang]
if (isNewerVersion(game.system.version, instructionsVersion ?? '0')) {
- let lang = game.i18n.lang
- const readMe = {
- en: 'sxB2OXbfwV6M0nyQ',
- fr: 'tdakyzTVOQsAMdSm'
- }
- if (typeof readMe[lang] === 'undefined') {
- lang = 'en'
- }
- (await game.packs.get('CoC7.system-doc').getDocument(readMe[lang])).sheet.render(true)
+ (await game.packs.get('CoC7.system-doc').getDocument(CONFIG.CoC7.Manual))?.sheet.render(true)
game.settings.set('CoC7', 'showInstructions', game.system.version)
}
registerTours()
diff --git a/module/manual/en/README.md b/module/manual/en/README.md
index fde59288..420c4ed8 100644
--- a/module/manual/en/README.md
+++ b/module/manual/en/README.md
@@ -12,7 +12,7 @@ The system automates most of the regular tasks and rules involved with running a
Several parts of the actor sheets have pop up tooltips that trigger after two seconds, this delay can be changed in the settings
-This documentation can be reopened under [fas fa-atlas] Compendiums -> JournalEntry -> System manual -> Call of Cthulhu 7th Edition [en]
+This documentation can be reopened under [fas fa-cogs]Game Settings -> Help and Documentation -> View CoC7 System Manual
# Recent changes
diff --git a/module/manual/en/first_investigator.md b/module/manual/en/first_investigator.md
index 038bb8da..5cb1e1d8 100644
--- a/module/manual/en/first_investigator.md
+++ b/module/manual/en/first_investigator.md
@@ -28,7 +28,7 @@ Click on the [fas fa-suitcase]Items Directory tab then Create Item give this a n
On the Description tab to set the description click the [fas fa-edit]button to get an editor.
-On the Details tab click the [fas fa-plus] on the Biography Sections to add any sections you require from the Create a Backstory step of investigator creation. Click on the [fas fa-atlas]Compendium Packs tab then under the Item heading open up the Items Examples Item (CoC7) and drag the @Compendium[CoC7.items.3elxAwnv7WCUNwng]{Punch} onto the setup.
+On the Details tab click the [fas fa-plus]on the Biography Sections to add any sections you require from the Create a Backstory step of investigator creation. Click on the [fas fa-atlas]Compendium Packs tab then under the Item heading open up the Items Examples Item (CoC7) and drag the @Compendium[CoC7.items.3elxAwnv7WCUNwng]{Punch} onto the setup.
On the Characteristics tab you can customise how investigator characteristics are rolled / bought
diff --git a/module/manual/en/link_creation_window.md b/module/manual/en/link_creation_window.md
index 2b4a81de..fd8ad0bb 100644
--- a/module/manual/en/link_creation_window.md
+++ b/module/manual/en/link_creation_window.md
@@ -1,7 +1,7 @@
# Link creation tool
The system includes a tool to help you create links easily.
-It's located on the left side bar. Click on the [fas fa-link] icon.
+It's located on the left side bar. Click on the [fas fa-link]icon.
This tools is available to GM only.
![Creation tool](../../assets/manual/links/links-creation-tool.webp)
diff --git a/module/scripts/coc7-directory-picker.js b/module/scripts/coc7-directory-picker.js
index 8922a23c..dc72fdb9 100644
--- a/module/scripts/coc7-directory-picker.js
+++ b/module/scripts/coc7-directory-picker.js
@@ -90,7 +90,7 @@ export class CoC7DirectoryPicker extends FilePicker {
)
return true
} catch (e) {
- if (!e.startsWith('EEXIST')) {
+ if (!e.message.startsWith('EEXIST')) {
ui.notifications.error(
game.i18n.localize('CoC7.ActorImporterUploadError')
)
diff --git a/module/settings-directory.js b/module/settings-directory.js
index c40069e7..b8063bee 100644
--- a/module/settings-directory.js
+++ b/module/settings-directory.js
@@ -1,4 +1,4 @@
-/* global Dialog, game, Settings */
+/* global CONFIG, Dialog, game, Settings */
export class CoC7SettingsDirectory extends Settings {
activateListeners (html) {
super.activateListeners(html)
@@ -10,6 +10,10 @@ export class CoC7SettingsDirectory extends Settings {
game.i18n.localize('CoC7.Migrate.TriggerButton') +
''
)
+ html.find('#settings-documentation')
+ .append('')
html.find('.trigger-data-migration').click(() => {
new Dialog(
{
@@ -35,6 +39,9 @@ export class CoC7SettingsDirectory extends Settings {
{}
).render(true)
})
+ html.find('.trigger-system-manual').click(async () => {
+ (await game.packs.get('CoC7.system-doc').getDocument(CONFIG.CoC7.Manual))?.sheet.render(true)
+ })
}
}
}
diff --git a/module/tours/enable-variant-rules-en.js b/module/tours/enable-variant-rules-en.js
index f2642423..5b1f2507 100644
--- a/module/tours/enable-variant-rules-en.js
+++ b/module/tours/enable-variant-rules-en.js
@@ -11,10 +11,10 @@ export class EnableVariantRulesEn extends CoC7Tour {
steps: [
{
id: 'goto-settings',
- selector: '[data-tab="settings"]',
+ selector: '.tabs>a[data-tab="settings"]',
title: 'COC7.Tour.GotoSettingsTitle',
content: 'COC7.Tour.GotoSettingsContent',
- action: 'click'
+ sidebarTab: 'settings'
},
{
id: 'goto-configure',
@@ -25,7 +25,7 @@ export class EnableVariantRulesEn extends CoC7Tour {
},
{
id: 'goto-system-settings',
- selector: '[data-category="system"]',
+ selector: '[data-tab="system"]',
title: 'COC7.Tour.GotoSystemSettingsTitle',
content: 'COC7.Tour.GotoSystemSettingsContent',
action: 'click'
@@ -58,13 +58,4 @@ export class EnableVariantRulesEn extends CoC7Tour {
}
}, config))
}
-
- async _preStep () {
- await super._preStep()
-
- if (this.currentStep.id === 'goto-game-rules') {
- await this.waitForElement('.category-filter.system.active')
- await this.waitForElement(this.currentStep.selector)
- }
- }
}
diff --git a/packs/system-doc.db b/packs/system-doc.db
index 3a3802e4..4a9a0791 100644
--- a/packs/system-doc.db
+++ b/packs/system-doc.db
@@ -1,2 +1,2 @@
-{"name":"Call of Cthulhu 7th Edition [en]","pages":[{"name":"System documentation","type":"text","_id":"pjqHiADSapcdS4fU","title":{"show":false,"level":1},"text":{"format":1,"content":"
\n
System documentation for version 0.10.0
\n
This document is a work in progress overview of the CoC7 system it is not a tutorial for how to use FoundryVTT.
\n
You will need one of the following to play the game
\n
\n
Chaosium's Call of Cthulhu 7th Edition - Keeper's Rulebook
\n
Chaosium's Call of Cthulhu 7th Edition - Call of Cthulhu Starter Set
\n
Chaosium's Call of Cthulhu 7th Edition - Quick-Start Rules
\n
\n
The system automates most of the regular tasks and rules involved with running a game.
\n
Several parts of the actor sheets have pop up tooltips that trigger after two seconds, this delay can be changed in the settings
\n
This documentation can be reopened under Compendiums -> JournalEntry -> System manual -> Call of Cthulhu 7th Edition [en]
\n
Recent changes
\n
For a full list of changes checkout the changelog on GitHub
\n
\n
@UUID[.xIXeEy4A8thetqLp]{CoC ID system} - Set tags on documents for example i.skill.dodge to find dodge skills on actors
\n
Investigator Wizard - Use CoC ID Items to create investigators
\n
@UUID[.pjqHiADSapcdS4fU#settings-overview]{Pulp Rules} - Implement optional pulp rule to ignore age when calculating movement speed
\n
@UUID[.ag5ghFZ6hYIm2JyJ]{Active effects} - Add support for bonus/penalty dice when rolling from the Actor sheets
\n
\n
Overview sections below
\n
If this is your first time it is recommends you also read the following sections on this page.
\n
Foundry VTT is based in actors and items. This module includes a number of system specific actors and items, and some examples of them can be found in the included system compendiums.
Character - A complete character, usually an investigator. @Compendium[CoC7.examples.JuI2aWDSEuQNKeUI]{Example Character}
\n
Container - An inventory container. @Compendium[CoC7.examples.r7bDSY4OYKxQYEas]{Example Container}
\n
Creature - A more simple character, suitable for creatures. @Compendium[CoC7.examples.XE2vjLG03wGfnYLw]{Example Creature}
\n
NPC - A more simple character, suitable for NPCs. @Compendium[CoC7.examples.4kSvDc4n13oFx8RG]{Example NPC}
\n
\n
Items overview
\n
\n
Archetype - A set of skills and other stats that implement a Pulp Cthulhu archetype. These do not trigger automation in the system. @Compendium[CoC7.items.lu04TIRrg9P3vRqY]{Example Archetype}
\n
Book - An arcane tome that can hold spells and character improvements.
\n
Item - A piece of equipment.
\n
Occupation - A set of skills and other stats that implement a CoC occupation. @Compendium[CoC7.items.NOsh6EdNSjpjahDF]{Example Occupation}
\n
Setup - A set of default configurations for character, creature, or NPC creation. @Compendium[CoC7.items.CcH7CdXGtGTjMSCg]{Example Setup}
\n
Skill - A skill with a base percentage and some tags. @Compendium[CoC7.skills.UOuN0gESXPp2HXwH]{Example Skill}
\n
Spell - A magic spell.
\n
Status - An phobia or mania condition. @Compendium[CoC7.items.DVdvEDizPZPux1pK]{Example Mania}
\n
Talent -A special power for Pulp Cthulhu. These do not trigger automation in the system. @Compendium[CoC7.items.yqvwz769ZeJplOW7]{Example Talent}
\n
Weapon - An item with weapon statistics (this includes unarmed attacks). @Compendium[CoC7.items.3elxAwnv7WCUNwng]{Example Weapon}
\n
\n
Settings overview
\n
Click on the Game Settings tab then under the Game Settings heading click on Configure Settings.
\n
Click on System Settings
\n
\n
Variant/Optional Rules - Here you can turn on individual Pulp Cthulhu rules and other optional rules
\n
Initiative Settings - Additional settings for optional initiative rule
\n
Roll Settings - Default options for rolls
\n
Chat Cards Settings - Configure chat messages
\n
Scene Settings - Scene Settings
\n
Game Artwork Settings - This allows you to set a custom pause icon and message
\n
Sheet Settings - This allows you to change character sheet settings and optional CSS
\n
Weapon Settings - Weapon Settings
\n
Developer And Debug Settings - These settings can break your world when new updates are released so only use them on test worlds
\n
Roll Table Settings - When sanity rolls are made the system can automatically roll for a bout of madness. You can see example roll tables in the Sanity Roll Table compendiums
\n
\n
Call of Cthulhu Scene Menu
\n
To access this menu you will need to have an active scene which can be created in the Scenes Directory. These options are only available to the Keeper.
\n
\n
Keeper's tools\n
\n
Development phase: When enabled, players can make improvement rolls for their marked skills.
\n
Character creation mode: When enabled, players can distribute points among their skills.
\n
XP gain: When enabled, a skill will be marked for improvement after a successful check.
\n
Send a decoy roll to players: When clicked, players will see a fake GM private roll.
\n
Start Rest: When click, pick characters to perform a rest and roll for XP gains.
\n
\n
Roll !: Used to roll 1d100 with a threshold, difficulty and bonus or penalty dice.
\n
Create link: Create a roll link for players to click
\n
\n
Keyboard and mouse shortcuts
\n
There are many elements in the sheets that trigger a dice roll when clicked. Usually a dialog is shown to prompt the user for a difficulty and a possible bonus or penalty. This behavior is modified with the following controls:
\n
\n
Right click on any rollable element to include it in an opposed roll. As long as the card is open, all rolls made\nwith a right click will be added to the opposed roll.
\n
Alt + Right click on any rollable element to include it in a combined roll.
\n
Shift + Left click on a rollable element will make a roll without asking for difficulty or bonus/penalty.
\n
Ctrl + Left click on a rollable element will create a roll request. Only available for the GM.
\n
Alt + Left click on sanity will prompt the player for minimum and maximum sanity loss.
The system allows for the creation of Active Effects.\nAn active effect will modify an actor characteristic(s), attribute(s), skill(s).\nEffects can be created as a @UUID[.7sSX5w3psDau2CDn]{link} using the @UUID[.9YesdNtaElDQaaaZ]{Link creation tool} or directly in the character sheet by clicking the button.
\n
Effects tab
\n
Effects will be display in the effect tabs on the character sheet.
\n\n
Effect are broken down in 4 categories for PC :
\n
\n
Status: those are effects used and created by the system (Wounds status, prone, insane ...). Those effects do not include any changes.
\n
Temporary: those are effects with duration.
\n
Passive: those are permanent effects.
\n
Inactive: those are disabled effects.
\n
\n
For NPC/Creatures you will only see 2 sections: active and inactive effects.\nWhen an effect is not inactive, the corresponding changes will be applied to the actor.
\n
Creating effects
\n
You can create effect by clicking the Add button.\nThis will bring the effect creation window.\nThis windows has 3 tabs
\n
Details tab
\n\n
Duration tab
\n\n
Changes tab
\n\n
This last tab will includes all changes made to the character sheet.
\n
Changes
\n
An effect includes a list of changes. Each change needs to be addressed with the corresponding system path.\nThe available changes are :
\n
\n
Characteristics:\n
\n
Strength:\n
\n
system.characteristics.str.value
\n
system.characteristics.str.bonusDice
\n
\n
Constitution:\n
\n
system.characteristics.con.value
\n
system.characteristics.con.bonusDice
\n
\n
Size:\n
\n
system.characteristics.siz.value
\n
system.characteristics.siz.bonusDice
\n
\n
Dexterity:\n
\n
system.characteristics.dex.value
\n
system.characteristics.dex.bonusDice
\n
\n
Appearance:\n
\n
system.characteristics.app.value
\n
system.characteristics.app.bonusDice
\n
\n
Intelligence:\n
\n
system.characteristics.int.value
\n
system.characteristics.int.bonusDice
\n
\n
Power:\n
\n
system.characteristics.pow.value
\n
system.characteristics.pow.bonusDice
\n
\n
Education:\n
\n
system.characteristics.edu.value
\n
system.characteristics.edu.bonusDice
\n
\n
\n
Attributes:\n
\n
Luck:\n
\n
system.characteristics.lck.value
\n
system.characteristics.lck.bonusDice
\n
\n
Sanity:\n
\n
system.characteristics.san.value
\n
system.characteristics.san.bonusDice
\n
\n
Movement Rate:\n
\n
system.attribs.mov.value
\n
\n
Build:\n
\n
system.attribs.build.value
\n
\n
Damage Bonus:\n
\n
system.attribs.db.value
\n
\n
Armor:\n
\n
system.attribs.armor.value
\n
\n
\n
Derived attributes. Only the maximum value of those attributes should be modified. Those changes are applied after all other changes have been made. If that attibute is in auto mode, it will be recalculated with the previous characteristics changes before having it's value affected.\n
\n
Hit Points:\n
\n
system.attribs.hp.max
\n
\n
Sanity:\n
\n
system.attribs.san.max
\n
\n
\n
Skills. Skills are identified by their full names and are case sensitive!\n
You can use the actor importer to import several NPC/Creatures blocks from adventures and using the JSON exporter from The Dholes House
\n
To open the actor importer either open the Actor Directory and click Actor Importer at the bottom of the side bar or on an active scene then click Actor Importer
\n
Overview
\n
If this is your first time it is recommends you also read the following sections.
\n
\n
Non Playing Character (NPC) / Creature
\n
The Dhole's House Actor Importer JSON
\n
\n
Non Playing Character (NPC) / Creature
\n\n\n
Select NPC or Creature
\n
Should the system convert the character block from an earlier edition to 7th
\n
Select the languages of the character block
\n
When adding skills, items, spells, and weapons the system can attempt to find items in your world with the same name, you can select the order the seconds are searched
\n
Items: From your item directory
\n
World: From your world compendiums
\n
Modules: From your module compendiums
\n
System: From the system compendiums provided with this system
\n
An example layout is given here you can copy this to your clipboard if you want to edit it or paste in the text from an adventure
\n\n
Click import will create an actor under the Actor directory will be created in the Imported characters folder any text that was not understood will be stored in Keeper notes
\n
The Dhole's House Actor Importer JSON
\n\n\n
The Dhole's House Actor Importer JSON
\n
When adding skills, items, spells, and weapons the system can attempt to find items in your world with the same name, you can select the order the seconds are searched
\n
Items: From your item directory
\n
World: From your world compendiums
\n
Modules: From your module compendiums
\n
System: From the system compendiums provided with this system
\n\n
Browse for your JSON file, once selected the name and image will be be shown, click import to create the actor under the Actor directory will be created in the Imported characters folder
\n
By default the image will be stored in a folder called dhole-image in your world, this can be changed by clicking on the Game Settings tab then under the Game Settings heading clicking on Configure Settings, click on System Settings.
The system comes with some compendiums ready for you to customise. These are reset every time you update or install the system so it is recommended you copy them into your own compendium and edit them as required.
\n
Skills
\n
In this section you will create or edit @UUID[.7Ql88MphdUS0FvBv]{skills}
\n\n
Go to compendium packs
\n
Click on Create Compendium
\n
\n
Give your compendium a name (e.g. My Skills)
\n
Select Item as Document Type
\n
\n\n
Use existing skills
\n\n
Open up the compendium Skills
\n
Drag any skills you want to customise into your new compendium
\n\n
Create new skills
\n\n
Go to Items Directory
\n
Cick on Create Item
\n
\n
Give the skill a name
\n
Set Type to Skill
\n
\n\n
Setup
\n
@UUID[.gv3xcdEM8ugzJJdz]{Setups} are predefined sets of skills and a way to generate the characteristics (this can be by rolling dices or assigning certain amount of points for example). Once a setup has been created it can be used in the creation of multiple characters.
\n\n
Go to Items Directory
\n
Click on Create Item
\n
\n
Give the skill a name
\n
Set Type to Setup
\n
\n
Define the setup to set the basic configuration for a type of characters.
\n
\n
You can add a textual description on the Description tab
\n
If you click on the icon you can select a new one
\n
On the Details tab you can:\n
\n
Select the Cthulhu Flavors where this setup is valid
\n
Define the biography sections and their names (click on the + to add extra Biography sections)
\n
Drag default items like @Compendium[CoC7.items.3elxAwnv7WCUNwng]{Punch}
\n
Show / Hide the Characteristics tab with the Enable characteristics checkbox
\n
\n
The Characteristics tab allows you to define the formula to roll the dices for each characteristic
\n
The Skills tab allows you to define the default set of skills by dragging items of type skill to the common skills area.
\n
\n\n
Occupations
\n
An @UUID[.PtxMa4YG5ZEkvJj9]{occupation} helps to define the character background, think about it as the definition of the set of occupational skills (the ones where the character can spend their occupation points) plus the definition of how to calculate the amount of available occupation points. Finally the occupation also allows to define the minimum and the maximum credit for a character with this occupation.
\n
Keep in mind that the set of occupational skills doesn't need to be fixed, the system allows to configure the occupation so when it's dragged to a Character sheet will give the option of selecting one or more skills from a closed list, or even add a pre defined number of skills to select from all the available ones.
\n
The occupation creation process is the following one:
\n\n
Go to Items Directory
\n
Cick on Create Item
\n
\n
Give the skill a name
\n
Set Type to Occupation
\n
\n
Define the occupation to select the relevant characteristics and the occupation skills
\n
\n
You can add a textual description on the Description tab and define the Source
\n
If you click on the icon you can select a new one
\n
On the Details tab you can:\n
\n
Select the Occupation Type
\n
Define the characteristics used to calculate the occupation points, you can check the characteristics you want and define the multiplier, for the ones with Optional marked, the player will have to choose one at creation time.
\n
For instance if an occupation uses EDU * 2 + (STR or DEX) * 2 you have to select Education and put 2 on the Multiplier without marking Optional and then for Strength and Dexterity you have to check both, check Optional on both, and put 2 on the Multiplier on both.
\n
Finally you will have to define the Minimum and Maximum value for the Credit Rating skill for this occupation.
\n
\n
The Skills tab allows you to select the occupation skills by dragging items of the Type skill to the different sections. A typical occupation has 8 skills plus the Credit Rating skill.\n
\n
The Common Skills includes the default occupation skills that can't be changed
\n
The Optional skills groups section allows to add groups (you can create several of them) of skills for the player to choose from. Once you click on the + sign a group is created and you can define the Number to chose from (number of skills to select) and create a pool of skills available for the selection by dragging them on the group.
\n
Finally the Additional Skills allows you to enter a number of skills the player can choose from the rest of the available skills.
\n
\n
\n\n
Player Character creation
\n
You can create a Player Character by creating the actor and filling the corresponding blank Character Sheet, but it's much easier if you have previously created a setup and an occupation (see above), if you have created both the process to create the Player Character is as follows:
\n\n
Go to Actors Directory
\n
Cick on Create Actor
\n
\n
Give the actor a name
\n
Set Type to Character
\n
\n
Drag and drop a item of Type setup (for instance 1920s, 1890s, Pulp, Modern,...) on the sheet to do the basic setup using the configuration defined on the item, this usually includes rolling the characteristics or setting their values with the points system, and set a default set of skills corresponding to the given setup.
\n
Drag and drop an occupation Type item on the sheet, this will probably involve selecting some skills from a given reduced set or from the remaining ones. This will calculate the available Personal points and Occupation points and assign the part of the Occupation points to reach the minimum value for Credit Rating of the selected occupation.
\n
On the keeper's menu on the left click Keeper's tools, if this menu is not available need to have an active scene which can be created in the Scenes Directory
\n
On the new submenu click Character creation mode. A new tab called Development should appear on the character sheets.
\n
Click on the characters Development tab
\n
The first dot column is for your occupational skills these can be toggled by clicking them
\n
\n
If you have enabled the Pulp rule Archetypes you will have a second dot to toggle that
\n
\n
Distribute occupation/personal points in development tab taking on account that each skill has 5 columns:
\n\n
First one is the basic percentage of the skill
\n
The second one is the one to put the Personal interest points during the creation of the character
\n
The third one is only available on for the occupation skills (marked with a dark circle before the skill name) and it's used to assign the Occupation points.\n
\n
If you have enabled the Pulp rule Archetypes you will have a forth column you enter your archetype points here
\n
\n
The forth/fifth column should be initially blank and its where the experience points will show up (you can also assign points here if you are playing an experienced character)
\n
The final column is a read only one with the final calculated value for the skill (the sum of the other 4)
To create a chase create a new item of type chase.
\n
Only the keeper should have access to that item.
\n
A chase is composed of a succession of locations. Each location can be separated by an obstacle (barrier or hazard).
\n
A hazard will always be crossed but failing the check will slow you down.
\n
A barrier will stop you until you successfully pass or destroy it.
\n\n
The chase sheet is divided in 3 parts.
\n
\n
A header where you will see information about current location once a chase is started.
\n
A chase setup tab. This will allows you to create and follow the chase.
\n
A participant list where you can setup your participant. This tab will not work after the chase started.
\n
\n
Adding a participant.
\n
To add a participant click on the plus sign on the participant list or drag an actor or a token.
\n
Note that it is not mandatory to have a actor associated with a participant. This will allows for fast setup or to add someone on the fly to the chase.
\n
To be able to add a token to the chase a few control have been added to character and NPC sheets:
\n\n
Those icons will give additional information.
\n\n
Indicate that this actor is a synthetic actor (instance of an actor)
\n
Indicate that actor's data are not linked. Each instance of that actor has his own properties.
\n
Indicate that this actor has an associated token. You can drag and drop this onto a chase location or on the participant list.
\n
Indicate that actor's data are linked to an actor in the actors directory.
\n\n
Here you can set up your participant. Dragging an actor from the Actors sidebar will set the details. Note that you can select a different initiative and speed check. This is non standard in the CoC, but allows to setup unusual chases (futuristic matrix chase, dreamlands chase...)
\n\n\n
Dragging the questionmark onto a token will set the details to that token.
\n\n
One you drag an actor or select a token you can set up the participant
\n\n\n
Clicking this will change the participant side from prey to chaser.
\n
Clicking this will trigger a speed check. Note that there will be no player entries necessary nor any roll card displayed.
\n\n
Participant list
\n\n
Here you can have the list of participant to the chase.
\n\n
Will trigger a chase roll. This will create a roll card if the participant has an associated actor (it's not a dummy). Holding shift will fast forward and solve the card.
\n
This will clear the speed roll if any, or delete the participant.
\n\n\n\n
Roll card waiting to get resolved in the chat.
\n
Speed check rolled. You can click this to get the details.
\n
To reset the speed check.
\n\n\n
Chase setup
\n\n
To setup a chase enter the initial numbers of locations and click initialize.
\n\n
The chase is initialized, you can adjust some options. Locations in white are initial locations and can not be modified.
\n\n
This is the chase track, the location in white are initials locations. The location in grey are actual chase locations.
\n
Selecting this will include in the chase participants who would have otherwise been able to escape.
\n
Selecting this will include in the chase participants who would have been excluded for being too slow.
\n
This is the number of locations between the slowest prey and the fastest chaser.
\n
This is the starting location of the fastest prey. Setting this to 0 will place him just before the start. 1 will place him at the start. -1 will place him 1 location before the start.
\n
This will animate token when they move to a new location.
\n\n
Setting up locations
\n
During setup or during chase you can select a location to modify it.
\n
Starting (white) locations can not be modified during setup.
\n
To modify a location select it by clicking on it. This will display the location details on the header part of the sheet.
\n\n\n
This will add a participant. If the chase is started the participant will be on that location. If the chase isn't started the participant will be added on the init track.
\n
This will remove the location. A location has to be empty to be removed.
\n
You can drag this and drop it on a scene. This will set the coordinates for that location. A red pin indicate that coordinates has been set. Right clicking a red pin will reset it's coordinate. If coordinates are set, and a participant with an associated token enter that location his token will be moved to that location.
\n
Add a new location.
\n
Active location.
\n\n
Setting up obstacles.
\n
You can add obstacle after and before a location. You can pre-fill an obstacle with a name, an associated check and some penalties.
\n\n\n
Toggle this to add damage to a barrier.
\n
Barrier's hit points.
\n
Movement action cost in case of failure.
\n
Check used to pass the location. When it's red the active actor does not have the associated check.
\n\n
Cut to the chase.
\n
When you are ready you can cut to the chase. If not all participant have a speed check this will trigger a warning and will not let you start.
\n\n\n
Initiative track. The active participant is circled in orange.
\n
Chase track. Active location and participant. You can drag drop participant from the chase track to move them freely. You can drag a new actor or token directly on the chase track. This will pop the import window and add that participant to the chase. In some cases (eg. new prey slower than the slowest participant) all movement action will be recalculated.
\n
A barrier.
\n
A hazard.
\n\n
Obstacle resolution flow
\n\n\n
When the active participant is facing an obstacle you can trigger the obstacle resolution flow by clicking this. This will open a chat card where keeper and player can interact to pass that obstacle. All changes made to the card can be reflected to the obstacle in the chase at the end of the flow.
\n\n
Here is a shorten flow example:
\n
\n\n\n
\n
Once the flow is complete all changes are send to the chase.
\n\n
This round is finished. All actor have spent their movement action. You can click Next round to proceed.
\n
Participant controls.
\n\n
You can modify or move a participant by using the controls button on his card.
\n\n
Those 3 icons will allow to delete, modify and activate a participant.
\n
Movement action. A yellow is available, grey is consumed, red is a deficit.
\n
This will control your participant bonus. He can draw a gun or be awarded bonus dices.
\n
Movement action controls. Here you can increase or decrease movement actions.
\n
Movement controls. You can move backward or forward. You can assist an ally (consume an action and give a bonus die) or take a cautious approach.
\n\n\n
","markdown":""},"sort":4},{"name":"CoC ID System","type":"text","_id":"xIXeEy4A8thetqLp","title":{"show":false,"level":1},"text":{"format":1,"content":"
\n
CoC ID System
\n
Several FoundryVTT documents have an ID button accessable to "Game Master" and "Assistant GM" User Roles.
\n
System ID (CoC ID): Setting a skill's ID to i.skill.dodge will let the system know to treat that skill as Dodge on the combat card.
\n
Cthulhu Flavors: You can also control the era a skill is for, Animal Handling has different base values based on the era
\n
System ID Priority: The system will check your world documents then compendiums and return the document with the highest priority
\n
Item
\n
i.setup.example - The Investigator Wizard will use these you need to pick a single era to assign it to
\n
i.archetype.example - The Investigator Wizard will use these if the archetype optional rule is enabled
\n
i.occupation.example - The Investigator Wizard will list these
\n
i.skill.example - Setups, Investigator Wizard, and creating Actors will use these if the era matches
\n
RollTable
\n
rt..backstory-example - If the example part matches the backstory title in kebab case it will give a roll option in the backstory section of the Investigator Wizard
On the scene select the tokens involved on the combat right click on one of them and on the bottom right click on the Toggle combat state icon. This will add the actors corresponding to the selected tokens to the combat tab.\nThen on the combat tab you can start the combat.
\n
The combat tracker will help you to track both the initiatives of the different actors and the combat rounds.
\n
Initiative
\n
On foundry combat turns are ordered by initiative, in the system this is usually the DEX of the actor. So to set the initiatives click on the dice icon of each actor or just the icon with 3 persons on the top left of the combat tab to set all at once.
\n
Next to each actor on the combat tab there are 3 icons:
\n
\n
A target: to draw the gun (this will add 50 to that character initiative)
\n
A crossed eye: to show/hide the corresponding actor on the list.
\n
A skull: to mark a character as defeated and skip it for the following turns.
\n
\n
Select target / targets
\n
During an actor's turn, to attack the first thing to do is to select the target or targets, this can be done by doing a right click on the target's token and then clicking on the target icon (bottom left). Or set the target mode on from the left tool bar and click on the targets.
\n
Then open the actor's sheet and click on the name of the item that will be used for the attack. This can be from a single shot of a long range weapon, or some melee attack or a maneuver.\nThis click will start the attack workflow on the chat, the chat card will allow selecting further options of the attack depending on the type of attack.
\n
\n
Tip: if you right click on the combat tracker sheet icon, this will pop put this as a little window and you then you can see both the combat tracker window and results of the combat on the chat.
Most sheet component can be clicked on the trigger a check/roll.\nAs a general rule you can modify those requests:
\n
\n
Shift will fast forward the request.
\n
Ctrl [GM only] will create a link in the chat with that request a roll to the players.
\n
\n
Sanity
\n
\n\n
Command
Action
\n\n\n
Ctrl+Shift + left click SAN
Request a Sanity Check for the character
\n
Ctr+Shift+Alt + left click SAN
Request a Sanity Check and define the sanity loss
\n\n
\n
Combined / Opposed rolls
\n
\n\n
Command
Action
\n\n\n
Right Click on an element
Start/ Include the roll on an opposed roll
\n
Alt + Right Click on an element
Start/ Include the roll on an combined roll
\n\n
\n
Other
\n
\n\n
Command
Action
\n\n\n
c
Show my own character sheet
\n\n
\n\n
","markdown":""},"sort":7},{"name":"Creating your first investigator","type":"text","_id":"9a8SLXDQHfCxrZzR","title":{"show":false,"level":1},"text":{"format":1,"content":"
\n
Initial item setup
\n
The system comes with some compendiums ready for you to customise. These are reset every time you update or install the system so it is recommended you copy them into your own compendium and edit them as required.
\n
This page creates an investigator using the provided compendiums, if you are ready to full customise your character people read @UUID[.EQS1L753HOsOD4vR]{Character creation} instead.
\n
Skill
\n
Click on the Compendium Packs tab then under the Item heading open up the Skills Item (CoC7). Here you will find the skills shown on the characters sheets available from Chaosium's website.
\n
\n
No adjustment - Can not be assigned personal skill points.
\n
No XP gain - You do not mark this skill for improvement on a success.
\n
Specialization - This skill is part of a group like Pilot or Flighting.
\n
Uncommon - This skill is uncommon and can be automatically hidden on the character sheet.
\n
Pushed - This skill can be pushed.
\n
Fighting - Automatically set Specialization, Combat, and the specialization name to Fighting.
\n
Firearms - Automatically set Specialization, Combat, and the specialization name to Firearms.
\n
\n
You can create a new Item Compendium and copy the skills you require into it allowing you to edit them. You can also create new skills by creating new Skill Items (Click on the Items Directory tab then Create Item give this a name e.g. Gardening and set the Type to Skill).
\n
Setup
\n
Once you have set up your skills next create up a Setup, here is an example from the Items Examples compendium @Compendium[CoC7.items.CcH7CdXGtGTjMSCg]{1920's Setup Example}
\n
Setups allow to you standardise what skills, items, biography sections, and characteristics the investigators start with.
\n
Click on the Items Directory tab then Create Item give this a name e.g. New Investigator Setup and set the Type to Setup
\n
On the Description tab to set the description click the button to get an editor.
\n
On the Details tab click the on the Biography Sections to add any sections you require from the Create a Backstory step of investigator creation. Click on the Compendium Packs tab then under the Item heading open up the Items Examples Item (CoC7) and drag the @Compendium[CoC7.items.3elxAwnv7WCUNwng]{Punch} onto the setup.
\n
On the Characteristics tab you can customise how investigator characteristics are rolled / bought
\n
On the Skills tab you can drag the skills the investigator will have.
\n
All actor and item sheets have a tab which can be used by the Keepers to store notes, only users that are set to GM can see this tab
\n
Occupation
\n
Occupations allow you set how many the occupation points, credit rating range, and skills the investigator starts with. Here is an example from the Items Examples compendium @Compendium[CoC7.items.NOsh6EdNSjpjahDF]{Occupation Example}
\n
Click on the Items Directory tab then Create Item give this a name e.g. Driver and set the Type to Occupation
\n
On the Description tab to set the description click the button to get an editor.
\n
On the Details tab you can set the Occupation Points calculation and Minimum/Maximum Credit Rating
\n
On the Skills tab you can drag skills from the Compendiums or Item Directory to Common skills, you can also set up multiple Optional skill groups deciding how many the investigator must select.
\n
Creating your first investigator
\n
Character
\n
To complete your character you need to have an active scene which can be created in the Scenes Directory.
\n
Click on the Actors Directory tab then Create Item give this a name e.g. New Investigator and set the Type to Character.
\n
You can drag your setup created above on to the character for the initial setup or drag this example instead @Compendium[CoC7.items.CcH7CdXGtGTjMSCg]{1920's Setup Example}
\n
Next drag your occupation created above on to the character or drag this example instead @Compendium[CoC7.items.NOsh6EdNSjpjahDF]{Occupation Example}
\n
On the left hand menu bar select Keeper's tools then select Character creation mode.
\n
On the character sheet select the Development tab. The first dot indicates this is an occupation skill, the first column of numbers is the base value, next if where you assign personal points, third is for occupation points, the fourth is for experience gained during the investigator improvement phase, the final column is the total skill percent.
\n
You can see how many personal and occupation points you have spent so far, once you have spent all your points you need to toggle off Character creation mode to allow characters to see their HP, MP, Sanity, and luck
The system support many different types of items, from basic items or weapons to skills or the complete setup of a type of character. You can see examples on the compendium that comes with the system.
\n
To create any of the types of items you always start the same way
\n\n
Go to the items directory
\n
Click on Create Item\n
\n
Give it a name
\n
Select the item Type (see below for details on each one)
\n
Select the destination folder.
\n
\n\n
And have some common structure so on all of them:
\n
\n
You can add a textual description on the Description tab or just on the main window if it doesn't have tabs.
\n
If you click on the icon you can pick or upload a new one
The system has a special type of item for the books to be able to define the Sanity Loss, if it's a Mythos Tome or an Occult book, what Spells or Skills it provides and of curse a description and the book image.
An occupation helps to define the character background, think about it as the definition of the set of occupational skills (the ones where the character can spend their occupation points) plus the definition of how to calculate the amount of available occupation points. Finally the occupation also allows to define the minimum and the maximum credit for a character with this occupation.
\n
Keep in mind that the set of occupational skills doesn't need to be fixed, the system allows to configure the occupation so when it's dragged to a Character sheet will give the option of selecting one or more skills from a closed list, or even add a pre defined number of skills to select from all the available ones.
\n\n
Go to the Items Directory tab
\n
Click on Create Item
\n\n
Give the set up a name e.g. Librarian
\n
Set Type to Occupation
\n
\n
On the Description tab you can change the name, icon, name of the source book, and description
\n
On the Details tab you can control
\n\n
Select the Occupation Type
\n
Define the characteristics used to calculate the occupation points, you can check the characteristics you want and define the multiplier, for the ones with Optional marked, the player will have to choose one at creation time.
\n\n
For instance if an occupation uses EDU * 2 + (STR or DEX) * 2 You have to select Education and put 2 on the Multiplier without marking Optional and then for Strength and Dexterity you have to check both, check Optional on both, and put 2 on the Multiplier on both.
\n
Finally you will have to define the Minimum and Maximum value for the Credit Rating skill for this occupation.
\n
\n
Names of biography sections (click on the + to add extra Biography sections), this can be replaced with a single block biography in settings
\n
Under items you can drag and drop default items and weapons
\n
\n
On the Skills you can drag and drop skills in to multiple sections, A typical occupation has 8 skills plus the Credit Rating skill.
\n\n
The Common Skills includes the default occupation skills that can't be changed
\n
The Optional skills groups section allows to add groups (you can create several of them) of skills for the player to choose from. Once you click on the + sign a group is created and you can define the Number to chose from (number of skills to select) and create a pool of skills available for the selection by dragging them on the group.
\n
Finally the Additional Skills allows you to enter a number of skills the player can choose from the rest of the available skills.
Setups are predefined sets of skills and a way to generate the characteristics (this can be by rolling dices or assigning certain amount of points for example).
\n\n
Go to the Items Directory tab
\n
Click on Create Item
\n\n
Give the set up a name e.g. 1920's Setup
\n
Set Type to Setup
\n
\n
On the Description tab you can change the name, icon, name of the source book, and description
\n
On the Details tab you can control
\n\n
Show / Hide the Characteristics tab with the Enable characteristics checkbox
\n
Which version of Call of Cthulhu this is for, this can be filtered in compendiums
\n
Names of biography sections (click on the + to add extra Biography sections), this can be replaced with a single block biography in settings
\n
Under items you can drag and drop default items and weapons
\n
\n
On the Characteristics tab you can set a points buy or roll characteristics and the formula
\n
On the Skills tab under common skill you can drag and drop default skills
Links are a way for a GM to request for a roll (Characteristic, Attribute, Skill, SAN loss, Weapon).
\n
Links can contain an active effect.
\n
Links are created in the chat log. When you click a link it will trigger a check for your(s) controlled/impersonated character(s).
\n
Links can be included in any editor, mainly journal entries.
\n
Link can be created in 5 ways:\n
\n
By manually typing it (read details below).
\n
By CTRL+click on any sheet element (Characteristic, Attribute, skill, SAN loss).
\n
By dragging a sheet element (Characteristic, Attribute, skill (+CTRL)) on an editor (Journal entry)
\n
By CTRL + dragging an item (skill or weapon) from a compendium or an item directory on an editor. When a link is created that way and the used as a GM, if your controlled character doesn't hold the weapon/skill you'll be prompted to create the corresponding item.
\n
By using the included compendium written by Lozalojo.
\n
\n
Links can be dragged from chat log on an editor.
\n
When a link is created the difficulty/penalty selection windows will open. Hold SHIFT to bypass that comportment.
\n
When a link is created, the roll mode will be check. If the roll mode is set to 'blind GM roll' the link will be created as blind.
\n
When a link is created with a difficulty and a penalty, the difficulty/penalty windows will not pop.
\n
When a link is created without a difficulty or a penalty, the difficulty/penalty windows will pop. Holding SHIFT will fastforward the roll (regular/no penalty).
\n
\n
Writing links
\n
\n
Links should be written using the @UUID[.9YesdNtaElDQaaaZ]{Link creation tool}. The link creation window is a tool for GM. It's located in the left side bar.
\n
\n
Links for chat messages and sheet editors (NPC, Journal entries...).\nFormat of link is @coc7.TYPE_OF_REQUEST[OPTIONS]{TEXT_TO_DISPLAY}
\n
\n
TYPE_OF_REQUEST :\n
\n
sanloss: trigger a san check, upon failure will propose to deduct the corresponding SAN.
\n
check: trigger a check depending on the options.
\n
item: trigger use of a weapon. Only items of type weapon can be triggered.
\n
\n
OPTIONS: [] = optional, default\n
\n
sanloss:\n
\n
sanMax: max SAN loss
\n
sanMin: min SAN loss
\n
\n
check:\n
\n
type: type of check ( characteristic, skill, attrib).
\n
name: name of the skill/characteristic/attrib.
\n
[blind]: will force a blind check, if not present the check will depend on your selected roll mode.
{Anthropology check (+1)} (with icon, without name nor difficulty)
\n\n
\n
Using links
\n
\n
You can drag/drop links from chat to sheets and between sheets.
\n
You can drag/drop a link directly on a token.
\n
You can drag/drop items and skills on a journal entry while holding CTRL, this will create the corresponding check with regular difficulty and 0 modifier.
\n
You can create link in the chat by clicking and holding CTRL from any sheet (PC/NPC/Creature) corresponding characteristic/luck/SAN/Competence/weapon/San loss.\n
\n
This will open the select penalty/difficulty dialogue. Clicking on the generated link will then trigger the check with all parameters.
\n
Holding Shift on top will not open the penalty/difficulty dialogue. Clicking on the generated link will open the penalty/difficulty dialogue then trigger the check.
The system includes a tool to help you create links easily.\nIt's located on the left side bar. Click on the icon.\nThis tools is available to GM only.
\n\n
using this you can create @UUID[.7sSX5w3psDau2CDn]{link} for skill check, san check, effects ...\nalternatively you can open the tool by holding CTRL while clicking no an item or a skill.
\n
Main window
\n
Clicking on the tool icon will open a window :
\n\n
You can there select options for you link.
\n
\n
"Compendium packs" and "Items directory" allows you to reference an object from corresponding folder.
\n
"Modifiers" will allows you to add modifiers to your check.
\n
"blind" will force the roll mode to be blind.
\n
"Label" will allows you to change the display label.
\n
"Icon" will allows you to choose an icon for your link. Icons can be :\n
\n
A font awesome or a game-icons reference : "fas fa-ankh" or "game-icon game-icon-tentacle-strike".
\n
A link to an image in the system data or system core: "icons/magic/symbols/arrowhead-green.webp".
\n
\n
\n
If you do not supply a label and/or an icon, a default label and icon will be added.
\n\n
Effects window
\n
Selecting effects will open an advance window where you can create links for @UUID[.ag5ghFZ6hYIm2JyJ]{active effects}.\nSelect the options the same way you will be doing for a regular effect.
\n
Using links
\n
\n
Once your link is created and valid it will appear in a white box in the middle of the window.
\n
\n\n
\n
You are now ready to whisper it to your players, copy it in your clipboard so you can add it to your items or journal entries or send it to the chat.
\n
\n\n
\n
When a player clicks a link the corresponding action will be performed by his character.
\n
When a GM clicks a link the corresponding action will be performed by his selected tokens.
\n
A link drag/dropped in journal entries, on a token etc...
The system has integrated the sanity check workflow and can handle sanity rolls, tracking Sanity loss and rolling for temporal insanity.
\n
Requesting Sanity rolls
\n
\n
The Keeper can click with Ctrl+Shift on the Sanity of character to request a Sanity Check for the character
\n
\n
If the Keeper also press Alt (so holding at the same time Ctrl+Shift+Alt) while clicking on the Sanity of a character, a dialog will pop-up to introduce the sanity loss if the sanity check is passed and the value for when the sanity check is failed.
","markdown":""},"sort":17}],"_id":"sxB2OXbfwV6M0nyQ"}
+{"name":"Call of Cthulhu 7th Edition [en]","pages":[{"name":"System documentation","type":"text","_id":"pjqHiADSapcdS4fU","title":{"show":false,"level":1},"text":{"format":1,"content":"
\n
System documentation for version 0.10.0
\n
This document is a work in progress overview of the CoC7 system it is not a tutorial for how to use FoundryVTT.
\n
You will need one of the following to play the game
\n
\n
Chaosium's Call of Cthulhu 7th Edition - Keeper's Rulebook
\n
Chaosium's Call of Cthulhu 7th Edition - Call of Cthulhu Starter Set
\n
Chaosium's Call of Cthulhu 7th Edition - Quick-Start Rules
\n
\n
The system automates most of the regular tasks and rules involved with running a game.
\n
Several parts of the actor sheets have pop up tooltips that trigger after two seconds, this delay can be changed in the settings
\n
This documentation can be reopened under Game Settings -> Help and Documentation -> View CoC7 System Manual
\n
Recent changes
\n
For a full list of changes checkout the changelog on GitHub
\n
\n
@UUID[.xIXeEy4A8thetqLp]{CoC ID system} - Set tags on documents for example i.skill.dodge to find dodge skills on actors
\n
Investigator Wizard - Use CoC ID Items to create investigators
\n
@UUID[.pjqHiADSapcdS4fU#settings-overview]{Pulp Rules} - Implement optional pulp rule to ignore age when calculating movement speed
\n
@UUID[.ag5ghFZ6hYIm2JyJ]{Active effects} - Add support for bonus/penalty dice when rolling from the Actor sheets
\n
\n
Overview sections below
\n
If this is your first time it is recommends you also read the following sections on this page.
\n
Foundry VTT is based in actors and items. This module includes a number of system specific actors and items, and some examples of them can be found in the included system compendiums.
Character - A complete character, usually an investigator. @Compendium[CoC7.examples.JuI2aWDSEuQNKeUI]{Example Character}
\n
Container - An inventory container. @Compendium[CoC7.examples.r7bDSY4OYKxQYEas]{Example Container}
\n
Creature - A more simple character, suitable for creatures. @Compendium[CoC7.examples.XE2vjLG03wGfnYLw]{Example Creature}
\n
NPC - A more simple character, suitable for NPCs. @Compendium[CoC7.examples.4kSvDc4n13oFx8RG]{Example NPC}
\n
\n
Items overview
\n
\n
Archetype - A set of skills and other stats that implement a Pulp Cthulhu archetype. These do not trigger automation in the system. @Compendium[CoC7.items.lu04TIRrg9P3vRqY]{Example Archetype}
\n
Book - An arcane tome that can hold spells and character improvements.
\n
Item - A piece of equipment.
\n
Occupation - A set of skills and other stats that implement a CoC occupation. @Compendium[CoC7.items.NOsh6EdNSjpjahDF]{Example Occupation}
\n
Setup - A set of default configurations for character, creature, or NPC creation. @Compendium[CoC7.items.CcH7CdXGtGTjMSCg]{Example Setup}
\n
Skill - A skill with a base percentage and some tags. @Compendium[CoC7.skills.UOuN0gESXPp2HXwH]{Example Skill}
\n
Spell - A magic spell.
\n
Status - An phobia or mania condition. @Compendium[CoC7.items.DVdvEDizPZPux1pK]{Example Mania}
\n
Talent -A special power for Pulp Cthulhu. These do not trigger automation in the system. @Compendium[CoC7.items.yqvwz769ZeJplOW7]{Example Talent}
\n
Weapon - An item with weapon statistics (this includes unarmed attacks). @Compendium[CoC7.items.3elxAwnv7WCUNwng]{Example Weapon}
\n
\n
Settings overview
\n
Click on the Game Settings tab then under the Game Settings heading click on Configure Settings.
\n
Click on System Settings
\n
\n
Variant/Optional Rules - Here you can turn on individual Pulp Cthulhu rules and other optional rules
\n
Initiative Settings - Additional settings for optional initiative rule
\n
Roll Settings - Default options for rolls
\n
Chat Cards Settings - Configure chat messages
\n
Scene Settings - Scene Settings
\n
Game Artwork Settings - This allows you to set a custom pause icon and message
\n
Sheet Settings - This allows you to change character sheet settings and optional CSS
\n
Weapon Settings - Weapon Settings
\n
Developer And Debug Settings - These settings can break your world when new updates are released so only use them on test worlds
\n
Roll Table Settings - When sanity rolls are made the system can automatically roll for a bout of madness. You can see example roll tables in the Sanity Roll Table compendiums
\n
\n
Call of Cthulhu Scene Menu
\n
To access this menu you will need to have an active scene which can be created in the Scenes Directory. These options are only available to the Keeper.
\n
\n
Keeper's tools\n
\n
Development phase: When enabled, players can make improvement rolls for their marked skills.
\n
Character creation mode: When enabled, players can distribute points among their skills.
\n
XP gain: When enabled, a skill will be marked for improvement after a successful check.
\n
Send a decoy roll to players: When clicked, players will see a fake GM private roll.
\n
Start Rest: When click, pick characters to perform a rest and roll for XP gains.
\n
\n
Roll !: Used to roll 1d100 with a threshold, difficulty and bonus or penalty dice.
\n
Create link: Create a roll link for players to click
\n
\n
Keyboard and mouse shortcuts
\n
There are many elements in the sheets that trigger a dice roll when clicked. Usually a dialog is shown to prompt the user for a difficulty and a possible bonus or penalty. This behavior is modified with the following controls:
\n
\n
Right click on any rollable element to include it in an opposed roll. As long as the card is open, all rolls made\nwith a right click will be added to the opposed roll.
\n
Alt + Right click on any rollable element to include it in a combined roll.
\n
Shift + Left click on a rollable element will make a roll without asking for difficulty or bonus/penalty.
\n
Ctrl + Left click on a rollable element will create a roll request. Only available for the GM.
\n
Alt + Left click on sanity will prompt the player for minimum and maximum sanity loss.
The system allows for the creation of Active Effects.\nAn active effect will modify an actor characteristic(s), attribute(s), skill(s).\nEffects can be created as a @UUID[.7sSX5w3psDau2CDn]{link} using the @UUID[.9YesdNtaElDQaaaZ]{Link creation tool} or directly in the character sheet by clicking the button.
\n
Effects tab
\n
Effects will be display in the effect tabs on the character sheet.
\n\n
Effect are broken down in 4 categories for PC :
\n
\n
Status: those are effects used and created by the system (Wounds status, prone, insane ...). Those effects do not include any changes.
\n
Temporary: those are effects with duration.
\n
Passive: those are permanent effects.
\n
Inactive: those are disabled effects.
\n
\n
For NPC/Creatures you will only see 2 sections: active and inactive effects.\nWhen an effect is not inactive, the corresponding changes will be applied to the actor.
\n
Creating effects
\n
You can create effect by clicking the Add button.\nThis will bring the effect creation window.\nThis windows has 3 tabs
\n
Details tab
\n\n
Duration tab
\n\n
Changes tab
\n\n
This last tab will includes all changes made to the character sheet.
\n
Changes
\n
An effect includes a list of changes. Each change needs to be addressed with the corresponding system path.\nThe available changes are :
\n
\n
Characteristics:\n
\n
Strength:\n
\n
system.characteristics.str.value
\n
system.characteristics.str.bonusDice
\n
\n
Constitution:\n
\n
system.characteristics.con.value
\n
system.characteristics.con.bonusDice
\n
\n
Size:\n
\n
system.characteristics.siz.value
\n
system.characteristics.siz.bonusDice
\n
\n
Dexterity:\n
\n
system.characteristics.dex.value
\n
system.characteristics.dex.bonusDice
\n
\n
Appearance:\n
\n
system.characteristics.app.value
\n
system.characteristics.app.bonusDice
\n
\n
Intelligence:\n
\n
system.characteristics.int.value
\n
system.characteristics.int.bonusDice
\n
\n
Power:\n
\n
system.characteristics.pow.value
\n
system.characteristics.pow.bonusDice
\n
\n
Education:\n
\n
system.characteristics.edu.value
\n
system.characteristics.edu.bonusDice
\n
\n
\n
Attributes:\n
\n
Luck:\n
\n
system.characteristics.lck.value
\n
system.characteristics.lck.bonusDice
\n
\n
Sanity:\n
\n
system.characteristics.san.value
\n
system.characteristics.san.bonusDice
\n
\n
Movement Rate:\n
\n
system.attribs.mov.value
\n
\n
Build:\n
\n
system.attribs.build.value
\n
\n
Damage Bonus:\n
\n
system.attribs.db.value
\n
\n
Armor:\n
\n
system.attribs.armor.value
\n
\n
\n
Derived attributes. Only the maximum value of those attributes should be modified. Those changes are applied after all other changes have been made. If that attibute is in auto mode, it will be recalculated with the previous characteristics changes before having it's value affected.\n
\n
Hit Points:\n
\n
system.attribs.hp.max
\n
\n
Sanity:\n
\n
system.attribs.san.max
\n
\n
\n
Skills. Skills are identified by their full names and are case sensitive!\n
You can use the actor importer to import several NPC/Creatures blocks from adventures and using the JSON exporter from The Dholes House
\n
To open the actor importer either open the Actor Directory and click Actor Importer at the bottom of the side bar or on an active scene then click Actor Importer
\n
Overview
\n
If this is your first time it is recommends you also read the following sections.
\n
\n
Non Playing Character (NPC) / Creature
\n
The Dhole's House Actor Importer JSON
\n
\n
Non Playing Character (NPC) / Creature
\n\n\n
Select NPC or Creature
\n
Should the system convert the character block from an earlier edition to 7th
\n
Select the languages of the character block
\n
When adding skills, items, spells, and weapons the system can attempt to find items in your world with the same name, you can select the order the seconds are searched
\n
Items: From your item directory
\n
World: From your world compendiums
\n
Modules: From your module compendiums
\n
System: From the system compendiums provided with this system
\n
An example layout is given here you can copy this to your clipboard if you want to edit it or paste in the text from an adventure
\n\n
Click import will create an actor under the Actor directory will be created in the Imported characters folder any text that was not understood will be stored in Keeper notes
\n
The Dhole's House Actor Importer JSON
\n\n\n
The Dhole's House Actor Importer JSON
\n
When adding skills, items, spells, and weapons the system can attempt to find items in your world with the same name, you can select the order the seconds are searched
\n
Items: From your item directory
\n
World: From your world compendiums
\n
Modules: From your module compendiums
\n
System: From the system compendiums provided with this system
\n\n
Browse for your JSON file, once selected the name and image will be be shown, click import to create the actor under the Actor directory will be created in the Imported characters folder
\n
By default the image will be stored in a folder called dhole-image in your world, this can be changed by clicking on the Game Settings tab then under the Game Settings heading clicking on Configure Settings, click on System Settings.
The system comes with some compendiums ready for you to customise. These are reset every time you update or install the system so it is recommended you copy them into your own compendium and edit them as required.
\n
Skills
\n
In this section you will create or edit @UUID[.7Ql88MphdUS0FvBv]{skills}
\n\n
Go to compendium packs
\n
Click on Create Compendium
\n
\n
Give your compendium a name (e.g. My Skills)
\n
Select Item as Document Type
\n
\n\n
Use existing skills
\n\n
Open up the compendium Skills
\n
Drag any skills you want to customise into your new compendium
\n\n
Create new skills
\n\n
Go to Items Directory
\n
Cick on Create Item
\n
\n
Give the skill a name
\n
Set Type to Skill
\n
\n\n
Setup
\n
@UUID[.gv3xcdEM8ugzJJdz]{Setups} are predefined sets of skills and a way to generate the characteristics (this can be by rolling dices or assigning certain amount of points for example). Once a setup has been created it can be used in the creation of multiple characters.
\n\n
Go to Items Directory
\n
Click on Create Item
\n
\n
Give the skill a name
\n
Set Type to Setup
\n
\n
Define the setup to set the basic configuration for a type of characters.
\n
\n
You can add a textual description on the Description tab
\n
If you click on the icon you can select a new one
\n
On the Details tab you can:\n
\n
Select the Cthulhu Flavors where this setup is valid
\n
Define the biography sections and their names (click on the + to add extra Biography sections)
\n
Drag default items like @Compendium[CoC7.items.3elxAwnv7WCUNwng]{Punch}
\n
Show / Hide the Characteristics tab with the Enable characteristics checkbox
\n
\n
The Characteristics tab allows you to define the formula to roll the dices for each characteristic
\n
The Skills tab allows you to define the default set of skills by dragging items of type skill to the common skills area.
\n
\n\n
Occupations
\n
An @UUID[.PtxMa4YG5ZEkvJj9]{occupation} helps to define the character background, think about it as the definition of the set of occupational skills (the ones where the character can spend their occupation points) plus the definition of how to calculate the amount of available occupation points. Finally the occupation also allows to define the minimum and the maximum credit for a character with this occupation.
\n
Keep in mind that the set of occupational skills doesn't need to be fixed, the system allows to configure the occupation so when it's dragged to a Character sheet will give the option of selecting one or more skills from a closed list, or even add a pre defined number of skills to select from all the available ones.
\n
The occupation creation process is the following one:
\n\n
Go to Items Directory
\n
Cick on Create Item
\n
\n
Give the skill a name
\n
Set Type to Occupation
\n
\n
Define the occupation to select the relevant characteristics and the occupation skills
\n
\n
You can add a textual description on the Description tab and define the Source
\n
If you click on the icon you can select a new one
\n
On the Details tab you can:\n
\n
Select the Occupation Type
\n
Define the characteristics used to calculate the occupation points, you can check the characteristics you want and define the multiplier, for the ones with Optional marked, the player will have to choose one at creation time.
\n
For instance if an occupation uses EDU * 2 + (STR or DEX) * 2 you have to select Education and put 2 on the Multiplier without marking Optional and then for Strength and Dexterity you have to check both, check Optional on both, and put 2 on the Multiplier on both.
\n
Finally you will have to define the Minimum and Maximum value for the Credit Rating skill for this occupation.
\n
\n
The Skills tab allows you to select the occupation skills by dragging items of the Type skill to the different sections. A typical occupation has 8 skills plus the Credit Rating skill.\n
\n
The Common Skills includes the default occupation skills that can't be changed
\n
The Optional skills groups section allows to add groups (you can create several of them) of skills for the player to choose from. Once you click on the + sign a group is created and you can define the Number to chose from (number of skills to select) and create a pool of skills available for the selection by dragging them on the group.
\n
Finally the Additional Skills allows you to enter a number of skills the player can choose from the rest of the available skills.
\n
\n
\n\n
Player Character creation
\n
You can create a Player Character by creating the actor and filling the corresponding blank Character Sheet, but it's much easier if you have previously created a setup and an occupation (see above), if you have created both the process to create the Player Character is as follows:
\n\n
Go to Actors Directory
\n
Cick on Create Actor
\n
\n
Give the actor a name
\n
Set Type to Character
\n
\n
Drag and drop a item of Type setup (for instance 1920s, 1890s, Pulp, Modern,...) on the sheet to do the basic setup using the configuration defined on the item, this usually includes rolling the characteristics or setting their values with the points system, and set a default set of skills corresponding to the given setup.
\n
Drag and drop an occupation Type item on the sheet, this will probably involve selecting some skills from a given reduced set or from the remaining ones. This will calculate the available Personal points and Occupation points and assign the part of the Occupation points to reach the minimum value for Credit Rating of the selected occupation.
\n
On the keeper's menu on the left click Keeper's tools, if this menu is not available need to have an active scene which can be created in the Scenes Directory
\n
On the new submenu click Character creation mode. A new tab called Development should appear on the character sheets.
\n
Click on the characters Development tab
\n
The first dot column is for your occupational skills these can be toggled by clicking them
\n
\n
If you have enabled the Pulp rule Archetypes you will have a second dot to toggle that
\n
\n
Distribute occupation/personal points in development tab taking on account that each skill has 5 columns:
\n\n
First one is the basic percentage of the skill
\n
The second one is the one to put the Personal interest points during the creation of the character
\n
The third one is only available on for the occupation skills (marked with a dark circle before the skill name) and it's used to assign the Occupation points.\n
\n
If you have enabled the Pulp rule Archetypes you will have a forth column you enter your archetype points here
\n
\n
The forth/fifth column should be initially blank and its where the experience points will show up (you can also assign points here if you are playing an experienced character)
\n
The final column is a read only one with the final calculated value for the skill (the sum of the other 4)
To create a chase create a new item of type chase.
\n
Only the keeper should have access to that item.
\n
A chase is composed of a succession of locations. Each location can be separated by an obstacle (barrier or hazard).
\n
A hazard will always be crossed but failing the check will slow you down.
\n
A barrier will stop you until you successfully pass or destroy it.
\n\n
The chase sheet is divided in 3 parts.
\n
\n
A header where you will see information about current location once a chase is started.
\n
A chase setup tab. This will allows you to create and follow the chase.
\n
A participant list where you can setup your participant. This tab will not work after the chase started.
\n
\n
Adding a participant.
\n
To add a participant click on the plus sign on the participant list or drag an actor or a token.
\n
Note that it is not mandatory to have a actor associated with a participant. This will allows for fast setup or to add someone on the fly to the chase.
\n
To be able to add a token to the chase a few control have been added to character and NPC sheets:
\n\n
Those icons will give additional information.
\n\n
Indicate that this actor is a synthetic actor (instance of an actor)
\n
Indicate that actor's data are not linked. Each instance of that actor has his own properties.
\n
Indicate that this actor has an associated token. You can drag and drop this onto a chase location or on the participant list.
\n
Indicate that actor's data are linked to an actor in the actors directory.
\n\n
Here you can set up your participant. Dragging an actor from the Actors sidebar will set the details. Note that you can select a different initiative and speed check. This is non standard in the CoC, but allows to setup unusual chases (futuristic matrix chase, dreamlands chase...)
\n\n\n
Dragging the questionmark onto a token will set the details to that token.
\n\n
Once you drag an actor or select a token you can set up the participant
\n\n\n
Clicking this will change the participant side from prey to chaser.
\n
Clicking this will trigger a speed check. Note that there will be no player entries necessary nor any roll card displayed.
\n\n
Participant list
\n\n
Here you can have the list of participant to the chase.
\n\n
Will trigger a chase roll. This will create a roll card if the participant has an associated actor (it's not a dummy). Holding shift will fast forward and solve the card.
\n
This will clear the speed roll if any, or delete the participant.
\n\n\n\n
Roll card waiting to get resolved in the chat.
\n
Speed check rolled. You can click this to get the details.
\n
To reset the speed check.
\n\n\n
Chase setup
\n\n
To setup a chase enter the initial numbers of locations and click initialize.
\n\n
The chase is initialized, you can adjust some options. Locations in white are initial locations and can not be modified.
\n\n
This is the chase track, the location in white are initials locations. The location in grey are actual chase locations.
\n
Selecting this will include in the chase participants who would have otherwise been able to escape.
\n
Selecting this will include in the chase participants who would have been excluded for being too slow.
\n
This is the number of locations between the slowest prey and the fastest chaser.
\n
This is the starting location of the fastest prey. Setting this to 0 will place him just before the start. 1 will place him at the start. -1 will place him 1 location before the start.
\n
This will animate token when they move to a new location.
\n\n
Setting up locations
\n
During setup or during chase you can select a location to modify it.
\n
Starting (white) locations can not be modified during setup.
\n
To modify a location select it by clicking on it. This will display the location details on the header part of the sheet.
\n\n\n
This will add a participant. If the chase is started the participant will be on that location. If the chase isn't started the participant will be added on the init track.
\n
This will remove the location. A location has to be empty to be removed.
\n
You can drag this and drop it on a scene. This will set the coordinates for that location. A red pin indicate that coordinates has been set. Right clicking a red pin will reset it's coordinate. If coordinates are set, and a participant with an associated token enter that location his token will be moved to that location.
\n
Add a new location.
\n
Active location.
\n\n
Setting up obstacles.
\n
You can add obstacle after and before a location. You can pre-fill an obstacle with a name, an associated check and some penalties.
\n\n\n
Toggle this to add damage to a barrier.
\n
Barrier's hit points.
\n
Movement action cost in case of failure.
\n
Check used to pass the location. When it's red the active actor does not have the associated check.
\n\n
Cut to the chase.
\n
When you are ready you can cut to the chase. If not all participant have a speed check this will trigger a warning and will not let you start.
\n\n\n
Initiative track. The active participant is circled in orange.
\n
Chase track. Active location and participant. You can drag drop participant from the chase track to move them freely. You can drag a new actor or token directly on the chase track. This will pop the import window and add that participant to the chase. In some cases (eg. new prey slower than the slowest participant) all movement action will be recalculated.
\n
A barrier.
\n
A hazard.
\n\n
Obstacle resolution flow
\n\n\n
When the active participant is facing an obstacle you can trigger the obstacle resolution flow by clicking this. This will open a chat card where keeper and player can interact to pass that obstacle. All changes made to the card can be reflected to the obstacle in the chase at the end of the flow.
\n\n
Here is a shorten flow example:
\n
\n\n\n
\n
Once the flow is complete all changes are send to the chase.
\n\n
This round is finished. All actor have spent their movement action. You can click Next round to proceed.
\n
Participant controls.
\n\n
You can modify or move a participant by using the controls button on his card.
\n\n
Those 3 icons will allow to delete, modify and activate a participant.
\n
Movement action. A yellow is available, grey is consumed, red is a deficit.
\n
This will control your participant bonus. He can draw a gun or be awarded bonus dices.
\n
Movement action controls. Here you can increase or decrease movement actions.
\n
Movement controls. You can move backward or forward. You can assist an ally (consume an action and give a bonus die) or take a cautious approach.
\n\n\n
","markdown":""},"sort":4},{"name":"CoC ID System","type":"text","_id":"xIXeEy4A8thetqLp","title":{"show":false,"level":1},"text":{"format":1,"content":"
\n
CoC ID System
\n
Several FoundryVTT documents have an ID button accessable to "Game Master" and "Assistant GM" User Roles.
\n
System ID (CoC ID): Setting a skill's ID to i.skill.dodge will let the system know to treat that skill as Dodge on the combat card.
\n
Cthulhu Flavors: You can also control the era a skill is for, Animal Handling has different base values based on the era
\n
System ID Priority: The system will check your world documents then compendiums and return the document with the highest priority
\n
Item
\n
i.setup.example - The Investigator Wizard will use these you need to pick a single era to assign it to
\n
i.archetype.example - The Investigator Wizard will use these if the archetype optional rule is enabled
\n
i.occupation.example - The Investigator Wizard will list these
\n
i.skill.example - Setups, Investigator Wizard, and creating Actors will use these if the era matches
\n
RollTable
\n
rt..backstory-example - If the example part matches the backstory title in kebab case it will give a roll option in the backstory section of the Investigator Wizard
On the scene select the tokens involved on the combat right click on one of them and on the bottom right click on the Toggle combat state icon. This will add the actors corresponding to the selected tokens to the combat tab.\nThen on the combat tab you can start the combat.
\n
The combat tracker will help you to track both the initiatives of the different actors and the combat rounds.
\n
Initiative
\n
On foundry combat turns are ordered by initiative, in the system this is usually the DEX of the actor. So to set the initiatives click on the dice icon of each actor or just the icon with 3 persons on the top left of the combat tab to set all at once.
\n
Next to each actor on the combat tab there are 3 icons:
\n
\n
A target: to draw the gun (this will add 50 to that character initiative)
\n
A crossed eye: to show/hide the corresponding actor on the list.
\n
A skull: to mark a character as defeated and skip it for the following turns.
\n
\n
Select target / targets
\n
During an actor's turn, to attack the first thing to do is to select the target or targets, this can be done by doing a right click on the target's token and then clicking on the target icon (bottom left). Or set the target mode on from the left tool bar and click on the targets.
\n
Then open the actor's sheet and click on the name of the item that will be used for the attack. This can be from a single shot of a long range weapon, or some melee attack or a maneuver.\nThis click will start the attack workflow on the chat, the chat card will allow selecting further options of the attack depending on the type of attack.
\n
\n
Tip: if you right click on the combat tracker sheet icon, this will pop put this as a little window and you then you can see both the combat tracker window and results of the combat on the chat.
Most sheet component can be clicked on the trigger a check/roll.\nAs a general rule you can modify those requests:
\n
\n
Shift will fast forward the request.
\n
Ctrl [GM only] will create a link in the chat with that request a roll to the players.
\n
\n
Sanity
\n
\n\n
Command
Action
\n\n\n
Ctrl+Shift + left click SAN
Request a Sanity Check for the character
\n
Ctr+Shift+Alt + left click SAN
Request a Sanity Check and define the sanity loss
\n\n
\n
Combined / Opposed rolls
\n
\n\n
Command
Action
\n\n\n
Right Click on an element
Start/ Include the roll on an opposed roll
\n
Alt + Right Click on an element
Start/ Include the roll on an combined roll
\n\n
\n
Other
\n
\n\n
Command
Action
\n\n\n
c
Show my own character sheet
\n\n
\n\n
","markdown":""},"sort":7},{"name":"Creating your first investigator","type":"text","_id":"9a8SLXDQHfCxrZzR","title":{"show":false,"level":1},"text":{"format":1,"content":"
\n
Initial item setup
\n
The system comes with some compendiums ready for you to customise. These are reset every time you update or install the system so it is recommended you copy them into your own compendium and edit them as required.
\n
This page creates an investigator using the provided compendiums, if you are ready to full customise your character people read @UUID[.EQS1L753HOsOD4vR]{Character creation} instead.
\n
Skill
\n
Click on the Compendium Packs tab then under the Item heading open up the Skills Item (CoC7). Here you will find the skills shown on the characters sheets available from Chaosium's website.
\n
\n
No adjustment - Can not be assigned personal skill points.
\n
No XP gain - You do not mark this skill for improvement on a success.
\n
Specialization - This skill is part of a group like Pilot or Flighting.
\n
Uncommon - This skill is uncommon and can be automatically hidden on the character sheet.
\n
Pushed - This skill can be pushed.
\n
Fighting - Automatically set Specialization, Combat, and the specialization name to Fighting.
\n
Firearms - Automatically set Specialization, Combat, and the specialization name to Firearms.
\n
\n
You can create a new Item Compendium and copy the skills you require into it allowing you to edit them. You can also create new skills by creating new Skill Items (Click on the Items Directory tab then Create Item give this a name e.g. Gardening and set the Type to Skill).
\n
Setup
\n
Once you have set up your skills next create up a Setup, here is an example from the Items Examples compendium @Compendium[CoC7.items.CcH7CdXGtGTjMSCg]{1920's Setup Example}
\n
Setups allow to you standardise what skills, items, biography sections, and characteristics the investigators start with.
\n
Click on the Items Directory tab then Create Item give this a name e.g. New Investigator Setup and set the Type to Setup
\n
On the Description tab to set the description click the button to get an editor.
\n
On the Details tab click the on the Biography Sections to add any sections you require from the Create a Backstory step of investigator creation. Click on the Compendium Packs tab then under the Item heading open up the Items Examples Item (CoC7) and drag the @Compendium[CoC7.items.3elxAwnv7WCUNwng]{Punch} onto the setup.
\n
On the Characteristics tab you can customise how investigator characteristics are rolled / bought
\n
On the Skills tab you can drag the skills the investigator will have.
\n
All actor and item sheets have a tab which can be used by the Keepers to store notes, only users that are set to GM can see this tab
\n
Occupation
\n
Occupations allow you set how many the occupation points, credit rating range, and skills the investigator starts with. Here is an example from the Items Examples compendium @Compendium[CoC7.items.NOsh6EdNSjpjahDF]{Occupation Example}
\n
Click on the Items Directory tab then Create Item give this a name e.g. Driver and set the Type to Occupation
\n
On the Description tab to set the description click the button to get an editor.
\n
On the Details tab you can set the Occupation Points calculation and Minimum/Maximum Credit Rating
\n
On the Skills tab you can drag skills from the Compendiums or Item Directory to Common skills, you can also set up multiple Optional skill groups deciding how many the investigator must select.
\n
Creating your first investigator
\n
Character
\n
To complete your character you need to have an active scene which can be created in the Scenes Directory.
\n
Click on the Actors Directory tab then Create Item give this a name e.g. New Investigator and set the Type to Character.
\n
You can drag your setup created above on to the character for the initial setup or drag this example instead @Compendium[CoC7.items.CcH7CdXGtGTjMSCg]{1920's Setup Example}
\n
Next drag your occupation created above on to the character or drag this example instead @Compendium[CoC7.items.NOsh6EdNSjpjahDF]{Occupation Example}
\n
On the left hand menu bar select Keeper's tools then select Character creation mode.
\n
On the character sheet select the Development tab. The first dot indicates this is an occupation skill, the first column of numbers is the base value, next if where you assign personal points, third is for occupation points, the fourth is for experience gained during the investigator improvement phase, the final column is the total skill percent.
\n
You can see how many personal and occupation points you have spent so far, once you have spent all your points you need to toggle off Character creation mode to allow characters to see their HP, MP, Sanity, and luck
The system support many different types of items, from basic items or weapons to skills or the complete setup of a type of character. You can see examples on the compendium that comes with the system.
\n
To create any of the types of items you always start the same way
\n\n
Go to the items directory
\n
Click on Create Item\n
\n
Give it a name
\n
Select the item Type (see below for details on each one)
\n
Select the destination folder.
\n
\n\n
And have some common structure so on all of them:
\n
\n
You can add a textual description on the Description tab or just on the main window if it doesn't have tabs.
\n
If you click on the icon you can pick or upload a new one
The system has a special type of item for the books to be able to define the Sanity Loss, if it's a Mythos Tome or an Occult book, what Spells or Skills it provides and of curse a description and the book image.
An occupation helps to define the character background, think about it as the definition of the set of occupational skills (the ones where the character can spend their occupation points) plus the definition of how to calculate the amount of available occupation points. Finally the occupation also allows to define the minimum and the maximum credit for a character with this occupation.
\n
Keep in mind that the set of occupational skills doesn't need to be fixed, the system allows to configure the occupation so when it's dragged to a Character sheet will give the option of selecting one or more skills from a closed list, or even add a pre defined number of skills to select from all the available ones.
\n\n
Go to the Items Directory tab
\n
Click on Create Item
\n\n
Give the set up a name e.g. Librarian
\n
Set Type to Occupation
\n
\n
On the Description tab you can change the name, icon, name of the source book, and description
\n
On the Details tab you can control
\n\n
Select the Occupation Type
\n
Define the characteristics used to calculate the occupation points, you can check the characteristics you want and define the multiplier, for the ones with Optional marked, the player will have to choose one at creation time.
\n\n
For instance if an occupation uses EDU * 2 + (STR or DEX) * 2 You have to select Education and put 2 on the Multiplier without marking Optional and then for Strength and Dexterity you have to check both, check Optional on both, and put 2 on the Multiplier on both.
\n
Finally you will have to define the Minimum and Maximum value for the Credit Rating skill for this occupation.
\n
\n
Names of biography sections (click on the + to add extra Biography sections), this can be replaced with a single block biography in settings
\n
Under items you can drag and drop default items and weapons
\n
\n
On the Skills you can drag and drop skills in to multiple sections, A typical occupation has 8 skills plus the Credit Rating skill.
\n\n
The Common Skills includes the default occupation skills that can't be changed
\n
The Optional skills groups section allows to add groups (you can create several of them) of skills for the player to choose from. Once you click on the + sign a group is created and you can define the Number to chose from (number of skills to select) and create a pool of skills available for the selection by dragging them on the group.
\n
Finally the Additional Skills allows you to enter a number of skills the player can choose from the rest of the available skills.
Setups are predefined sets of skills and a way to generate the characteristics (this can be by rolling dices or assigning certain amount of points for example).
\n\n
Go to the Items Directory tab
\n
Click on Create Item
\n\n
Give the set up a name e.g. 1920's Setup
\n
Set Type to Setup
\n
\n
On the Description tab you can change the name, icon, name of the source book, and description
\n
On the Details tab you can control
\n\n
Show / Hide the Characteristics tab with the Enable characteristics checkbox
\n
Which version of Call of Cthulhu this is for, this can be filtered in compendiums
\n
Names of biography sections (click on the + to add extra Biography sections), this can be replaced with a single block biography in settings
\n
Under items you can drag and drop default items and weapons
\n
\n
On the Characteristics tab you can set a points buy or roll characteristics and the formula
\n
On the Skills tab under common skill you can drag and drop default skills
Links are a way for a GM to request for a roll (Characteristic, Attribute, Skill, SAN loss, Weapon).
\n
Links can contain an active effect.
\n
Links are created in the chat log. When you click a link it will trigger a check for your(s) controlled/impersonated character(s).
\n
Links can be included in any editor, mainly journal entries.
\n
Link can be created in 5 ways:\n
\n
By manually typing it (read details below).
\n
By CTRL+click on any sheet element (Characteristic, Attribute, skill, SAN loss).
\n
By dragging a sheet element (Characteristic, Attribute, skill (+CTRL)) on an editor (Journal entry)
\n
By CTRL + dragging an item (skill or weapon) from a compendium or an item directory on an editor. When a link is created that way and the used as a GM, if your controlled character doesn't hold the weapon/skill you'll be prompted to create the corresponding item.
\n
By using the included compendium written by Lozalojo.
\n
\n
Links can be dragged from chat log on an editor.
\n
When a link is created the difficulty/penalty selection windows will open. Hold SHIFT to bypass that comportment.
\n
When a link is created, the roll mode will be check. If the roll mode is set to 'blind GM roll' the link will be created as blind.
\n
When a link is created with a difficulty and a penalty, the difficulty/penalty windows will not pop.
\n
When a link is created without a difficulty or a penalty, the difficulty/penalty windows will pop. Holding SHIFT will fastforward the roll (regular/no penalty).
\n
\n
Writing links
\n
\n
Links should be written using the @UUID[.9YesdNtaElDQaaaZ]{Link creation tool}. The link creation window is a tool for GM. It's located in the left side bar.
\n
\n
Links for chat messages and sheet editors (NPC, Journal entries...).\nFormat of link is @coc7.TYPE_OF_REQUEST[OPTIONS]{TEXT_TO_DISPLAY}
\n
\n
TYPE_OF_REQUEST :\n
\n
sanloss: trigger a san check, upon failure will propose to deduct the corresponding SAN.
\n
check: trigger a check depending on the options.
\n
item: trigger use of a weapon. Only items of type weapon can be triggered.
\n
\n
OPTIONS: [] = optional, default\n
\n
sanloss:\n
\n
sanMax: max SAN loss
\n
sanMin: min SAN loss
\n
\n
check:\n
\n
type: type of check ( characteristic, skill, attrib).
\n
name: name of the skill/characteristic/attrib.
\n
[blind]: will force a blind check, if not present the check will depend on your selected roll mode.
{Anthropology check (+1)} (with icon, without name nor difficulty)
\n\n
\n
Using links
\n
\n
You can drag/drop links from chat to sheets and between sheets.
\n
You can drag/drop a link directly on a token.
\n
You can drag/drop items and skills on a journal entry while holding CTRL, this will create the corresponding check with regular difficulty and 0 modifier.
\n
You can create link in the chat by clicking and holding CTRL from any sheet (PC/NPC/Creature) corresponding characteristic/luck/SAN/Competence/weapon/San loss.\n
\n
This will open the select penalty/difficulty dialogue. Clicking on the generated link will then trigger the check with all parameters.
\n
Holding Shift on top will not open the penalty/difficulty dialogue. Clicking on the generated link will open the penalty/difficulty dialogue then trigger the check.
The system includes a tool to help you create links easily.\nIt's located on the left side bar. Click on the icon.\nThis tools is available to GM only.
\n\n
using this you can create @UUID[.7sSX5w3psDau2CDn]{link} for skill check, san check, effects ...\nalternatively you can open the tool by holding CTRL while clicking no an item or a skill.
\n
Main window
\n
Clicking on the tool icon will open a window :
\n\n
You can there select options for you link.
\n
\n
"Compendium packs" and "Items directory" allows you to reference an object from corresponding folder.
\n
"Modifiers" will allows you to add modifiers to your check.
\n
"blind" will force the roll mode to be blind.
\n
"Label" will allows you to change the display label.
\n
"Icon" will allows you to choose an icon for your link. Icons can be :\n
\n
A font awesome or a game-icons reference : "fas fa-ankh" or "game-icon game-icon-tentacle-strike".
\n
A link to an image in the system data or system core: "icons/magic/symbols/arrowhead-green.webp".
\n
\n
\n
If you do not supply a label and/or an icon, a default label and icon will be added.
\n\n
Effects window
\n
Selecting effects will open an advance window where you can create links for @UUID[.ag5ghFZ6hYIm2JyJ]{active effects}.\nSelect the options the same way you will be doing for a regular effect.
\n
Using links
\n
\n
Once your link is created and valid it will appear in a white box in the middle of the window.
\n
\n\n
\n
You are now ready to whisper it to your players, copy it in your clipboard so you can add it to your items or journal entries or send it to the chat.
\n
\n\n
\n
When a player clicks a link the corresponding action will be performed by his character.
\n
When a GM clicks a link the corresponding action will be performed by his selected tokens.
\n
A link drag/dropped in journal entries, on a token etc...
The system has integrated the sanity check workflow and can handle sanity rolls, tracking Sanity loss and rolling for temporal insanity.
\n
Requesting Sanity rolls
\n
\n
The Keeper can click with Ctrl+Shift on the Sanity of character to request a Sanity Check for the character
\n
\n
If the Keeper also press Alt (so holding at the same time Ctrl+Shift+Alt) while clicking on the Sanity of a character, a dialog will pop-up to introduce the sanity loss if the sanity check is passed and the value for when the sanity check is failed.
","markdown":""},"sort":17}],"_id":"sxB2OXbfwV6M0nyQ"}
{"name":"L'Appel de Cthulhu version 7 [fr]","pages":[{"name":"Documentation du système","type":"text","_id":"mEy5Vvny9no32sB0","title":{"show":false,"level":1},"text":{"format":1,"content":"
\n
Documentation du Système :squid:
\n
Vous avez installé Foundry VTT (la version stable, les versions en test sont... en test :)
\n
Quelques modules pour commencer
\n
\n
fr-FR - Core Game: pour avoir la traduction française de Foundry
\n
Dice so nice!: pour les jets de dés
\n
\n
Vous passez la langue par défaut à Français dans l'onglet configuration du menu d'accueil. \nVous créez votre monde, avec le Call of Cthulhu 7th edition (Unofficial) de Vétérini. \nEt vous le lancez. \nVous activez vos modules et hop !
\n
Premiers paramétrages
\n
Une fois dans le monde, dans le menu Paramètres, vous sélectionnez Gestion des modules, puis Système de jeu. \nTous les paramètres sont dignes d'intérêt mais:
\n
\n
les Modificateur de jet et Modificateur de seuil de réussite le sont particulièrement.
\n
et Changer l'apparence de la fiche
\n
\n
Ce que l'on peut créer
\n
Icône Personnages
\n
\n
character: personnage PJ
\n
npc: PNJ
\n
creature: monstre
\n
vehicle: véhicule
\n
\n
Icône Objets
\n
Là ça devient ouf:
\n
\n
item: un objet
\n
weapon: une arme
\n
skill: une compétence
\n
setup: une module de création de perso à glisser/déposer sur votre fiche à la création (embarque les jets de création de caracs, les compétences,...)
\n
occupation: une occupation (avec ses compétences, son époque, ses points d'occupation, son crédit)
\n
archetype: un archétype (Pulp)
\n
book: un livre occulte
\n
spell: un sort
\n
talent: un talent (Pulp)
\n
status: un état... de folie
\n
\n
Icône Tables
\n
:recycle:
\n
Outils du gardien (menus spécifiques au système)
\n
Ils sont dans votre barre d'outils:
\n\n
\n
L'icône de dé permet de lancer des dés n'importe quand (en les modifiant si besoin: difficulté, seuil, niveau de compétence).
\n
L'icône de poulpe donne accès aux outils du Gardien:
\n
\n\n
De haut en bas:
\n
\n
Activer la phase de développement (entre séances)
\n
Activer la phase de création (à la création des persos)
\n
Importer un personnage depuis un simple texte
\n
Activer la possibilité des gains d'expérience (en partie)
\n
Balancer un jet factice aux joueurs dans le chat: un peu d'pression :)
\n
\n
Les compendiums
\n
Pour les utiliser au mieux, 2 choses:
\n
\n
Installer le module Compendium Folders (qui trie automatiquement les compendium)
\n
Importer les différents compendium (clic-droit Importer...)
\n
\n
@UUID[.Txh2Rq0uqiNkQwHH]{Combat}
\n
@UUID[.XgRqB95KxAc3lyeB]{Création}
\n
@UUID[.nV3LVFViQE8EmLnP]{Créer son premier investigateur}
\n
@UUID[.mEy5Vvny9no32sB0]{Documentation du système}
\n
@UUID[.gGQh5I6KyTqLYqGS]{Effets}
\n
@UUID[.5F222OZBJJ1ytmCs]{Imoirtation de PNJs}
\n
@UUID[.gx0OolN3Rzjo0t4A]{Liens}
\n
@UUID[.oe93qytA6DKMCLgP]{Objets}
\n
@UUID[.iNOVrFGpUVcVLNCM]{Outil de création de Lien}
\n
@UUID[.q9nBYjRZvfaZqwVP]{Poursuites}
\n
@UUID[.d38sw0oxaRbKDzTg]{Santé Mentale}
\n
@UUID[.uqUYiyO1KpLGxKWn]{Système de gestion des ID }
Des éons qu'ils dorment mais Vétérini les a réveillés ! Avec ce système ultime, à vous l'Appel de Cthulhu v7 en version totale: création, progression, SAN, combat, poursuites, ...\nLe MUST have !
\n
\n\n
@UUID[.mEy5Vvny9no32sB0#guide-de-lutilisateur-trice]{Guide de l'utilisateur/trice} (en cours)
","markdown":""},"sort":2},{"name":"Création de Personnage","type":"text","_id":"XgRqB95KxAc3lyeB","title":{"show":false,"level":1},"text":{"format":1,"content":"
","markdown":""},"sort":5},{"name":"Système de gestion des ID ","type":"text","_id":"uqUYiyO1KpLGxKWn","title":{"show":false,"level":1},"text":{"format":1,"content":"
","markdown":""},"sort":7},{"name":"Tableau des commandes","type":"text","_id":"pAqjluCfTIzRGC2p","title":{"show":false,"level":1},"text":{"format":1,"content":"
\n
Tableau des Commandes
\n
Quasiment tout est cliquable: les caractéristiques, les compétences, les armes, les dégâts, la SAN, la Chance...\nEt en plus:
\n
\n
combiné avec la touche Shift enfoncée, ça envoie directement le jet dans le chat.
\n
combiné avec la touche Ctrl [pour le Gardien] enfoncée, ça envoie une demande dans le chat au personnage concerné pour réaliser le jet, après paramétrage du jet par le gardien.
\n
les 2 combinés, Ctrl+Shift: ça envoie une demande dans le chat au personnage concerné pour réaliser le jet directement.
\n
et le clic-droit vous emmène vers les jets opposés ou combinés.
\n
\n
Commun
\n
Sur XXX, XXX pouvant être carac, compétence,...
\n
\n\n
Commande
Action
\n\n\n
Gardien
\n
clic XXX
Lance un jet de XXX après paramétrage du jet
\n
Shift + clic XXX
Lance un jet de XXX (difficulté ordinaire pas de bonus/malus)
\n
Ctrl + clic XXX
Demande un jet de XXX après paramétrage du jet (dont seuil et difficulté)
\n
Ctrl+Shift + clic XXX
Demande un jet de XXX
\n
Investigateur
\n
clic XXX
Lance un jet de XXX après paramétrage du jet
\n
Ctrl+Shift ou Shift + clic XXX
Lance un jet de XXX (difficulté ordinaire pas de bonus/malus)
\n
Ctrl + clic XXX
Lance un jet de XXX après paramétrage du jet
\n\n
\n
Santé Mentale
\n
\n\n
Commande
Action
\n\n\n
Gardien
\n
clic XXX
Lance un jet de XXX après paramétrage du jet
\n
Shift + clic XXX
Lance un jet de XXX (difficulté ordinaire pas de bonus/malus)
\n
Ctrl + clic XXX
Demande un jet de XXX après paramétrage du jet (dont seuil et difficulté)
\n
Ctrl+Shift + clic XXX
Demande un jet de XXX
\n
Ctr+Shift+Alt + clic SAN
Demande un jet de SAN en définissant les pertes de SAN
\n
Investigateur
\n
clic XXX
Lance un jet de XXX après paramétrage du jet
\n
Ctrl+Shift ou Shift + clic XXX
Lance un jet de XXX (difficulté ordinaire pas de bonus/malus)
\n
Ctrl + clic XXX
Lance un jet de XXX après paramétrage du jet (dont seuil et difficulté)
\n\n
\n
Jets Combinés / Opposés
\n
\n\n
Commande
Action
\n\n\n
clic-droit XXX
Débute/ Ajoute le jet à un jet *opposé après paramétrage du jet
\n
Ctrl+Shift ou Shift + clic-droit XXX
Débute/ Ajoute le jet à un jet opposé (difficulté ordinaire pas de bonus/malus)
\n
Ctrl + clic-droit XXX
Débute/ Ajoute le jet à un jet opposé après paramétrage du jet (dont seuil et difficulté)
\n
Alt + clic-droit XXX
Débute/ Ajoute le jet à un jet combiné après paramétrage du jet
\n
Ctrl+Shift+Alt ou Shift+Alt + clic-droit XXX
Débute/ Ajoute le jet à un jet combiné (difficulté ordinaire pas de bonus/malus)
\n
Ctrl+Alt + clic-droit XXX
Débute/ Ajoute le jet à un jet combiné après paramétrage du jet (dont seuil et difficulté)
\n\n
\n
Commandes dans le Chat
\n
\n\n
Commande
Action
\n\n\n
/cc xx
lance un D100 contre une difficulté de xx
\n
/cbr xx, yy
lance un D100 contre une difficulté de xx et de yy
\n\n
\n\n
","markdown":""},"sort":8},{"name":"Créer son premier investigateur","type":"text","_id":"nV3LVFViQE8EmLnP","title":{"show":false,"level":1},"text":{"format":1,"content":"
Toutes ces commandes peuvent être glissées/déposées dans un Article (ou toute zone éditable) en mode modification sauf les modificateurs de seuil ! \nCe qui peut donner: @coc7.check[type:attribute,name:san,difficulty:1,modifier:-2]
\n\n
Voici le fonctionnement: @coc7.TYPE_OF_REQUEST[OPTIONS]{TEXT_TO_DISPLAY}
\n
\n
TYPE_OF_REQUEST :\n
\n
'sanloss': test de SAN, si échoué, propose de réduire la SAN.
\n
'check': test défini en fonction des options.
\n
'item': test d'objet. Seulement pour les objets de type arme.
\n
\n
OPTIONS: [] = optionnel\n
\n
sanloss:\n
\n
sanMax: perte de SAN max
\n
sanMin: perte de SAN min
\n
\n
check:\n
\n
type: type de jet (caractéristique, compétence, attribut).
\n
name: nom de caractéristique, compétence, attribut.
\n
[blind]: jet aveugle, sinon le jet sera du type sélectionné dans le chat.
","markdown":""},"sort":16},{"name":"Outil de création de Lien","type":"text","_id":"iNOVrFGpUVcVLNCM","title":{"show":false,"level":1},"text":{"format":1,"content":"
\n
Création de personnage
\n
A la main
\n\n
Vous créez un nouveau Personnage.
\n
Vous passez en mode Création.
\n
Vous déverrouillez la fiche de personnage (clic sur le petit cadenas).
\n
Vous le nommez et remplissez occupation, sexe, âge,...
\n
Vous ajoutez les compétences une par une, et oui, à la mimine, et positionnez les % qui vont bien.
\n\n
Pour plus de facilité, vous pouvez vous créer un Compendium listant toutes les compétences et ainsi vous n'aurez plus à les saisir à chaque fois mais simplement à les glisser/déposer sur votre fiche, en mode Modification.
\n
Via une occupation
\n
:recycle:
\n
Via un setup
\n
:recycle:
\n
Via import / copie
\n
Copie
\n\n
Vous vous créez/avez créé un personnage type, avec compétences.
\n
Vous le copiez (clic droit sur le personnage dans la liste des Personnages, copier).
\n
Et voilà !
\n\n
Import
\n\n
Vous vous créez/avez créé un personnage type, avec compétences.
\n
Vous l'exportez (clic droit sur le personnage dans la liste des Personnages, exporter (le fichier arrive sur votre ordinateur, format json)).
\n
Vous vous rendez dans votre partie, vous créez juste le nouveau personnage sans rien y mettre (juste le nom).
\n
Vous importez le fichier précédemment exporté (clic droit sur le personnage dans la liste des Personnages, importer).
\n
Et voilà !
\n\n
Vous pouvez ensuite le modifier à façon en passant en mode Création.
","markdown":""},"sort":18}],"_id":"tdakyzTVOQsAMdSm"}
\ No newline at end of file
From 601a10bd1b2959a37f6ce17c6a344907fcaa50ac Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sun, 22 Oct 2023 19:55:29 +0000
Subject: [PATCH 04/38] Updated translations list
---
.github/TRANSLATIONS.md | 297 ++++++++++++++++++++--------------------
1 file changed, 149 insertions(+), 148 deletions(-)
diff --git a/.github/TRANSLATIONS.md b/.github/TRANSLATIONS.md
index 64b5d5ce..701260b6 100644
--- a/.github/TRANSLATIONS.md
+++ b/.github/TRANSLATIONS.md
@@ -2,156 +2,155 @@
Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry VTT better! Below is a list of translations keys on existing files that still need translated, based on `en.json`. Feel free to create a new `*.json` file for a language that is not shown here!
-The **pl** translation is currently up to date
-
The following translations have more than 153 untranslated strings **cn**, **cs**, **es**, **ko**, **ru**, **sv**, [are you able to help?](./ABANDONED.md)
-|Key|de|fr|it|ja|pt-BR|zh-TW|
-|:---|:---:|:---:|:---:|:---:|:---:|:---:|
-|**Remaining**:|**143**|**4**|**2**|**2**|**105**|**4**|
-|[CoC7.CoCIDBatch.summary](#coc7cocidbatchsummary)|❌|✅|✅|✅|❌|✅|
-|[CoC7.CoCIDBatch.title](#coc7cocidbatchtitle)|❌|✅|✅|✅|❌|✅|
-|[CoC7.CoCIDFlag.documents-in-compendiums](#coc7cocidflagdocumentsincompendiums)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.documents-in-world](#coc7cocidflagdocumentsinworld)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.document-not-found](#coc7cocidflagerrordocumentnotfound)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.documents-not-found](#coc7cocidflagerrordocumentsnotfound)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.duplicate](#coc7cocidflagerrorduplicate)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.incorrect.type](#coc7cocidflagerrorincorrecttype)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.unknown-era](#coc7cocidflagerrorunknownera)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.foundry-id](#coc7cocidflagfoundryid)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.foundry-uuid](#coc7cocidflagfoundryuuid)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.get-document-like-this](#coc7cocidflaggetdocumentlikethis)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.get-this-document](#coc7cocidflaggetthisdocument)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.guess](#coc7cocidflagguess)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.id](#coc7cocidflagid)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.key](#coc7cocidflagkey)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.new](#coc7cocidflagnew)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.others](#coc7cocidflagothers)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.priority](#coc7cocidflagpriority)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.summary](#coc7cocidflagsummary)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.title](#coc7cocidflagtitle)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CustomSpecialisationLabel](#coc7customspecialisationlabel)|❌|✅|✅|✅|✅|✅|
-|[CoC7.EraDarkAgesPulp](#coc7eradarkagespulp)|❌|✅|✅|✅|✅|✅|
-|[CoC7.EraDownDarkerTrailsPulp](#coc7eradowndarkertrailspulp)|❌|✅|✅|✅|✅|✅|
-|[CoC7.EraModernPulp](#coc7eramodernpulp)|❌|✅|✅|✅|✅|✅|
-|[CoC7.EraRegency](#coc7eraregency)|❌|❌|✅|✅|❌|❌|
-|[CoC7.EraRegencyPulp](#coc7eraregencypulp)|❌|❌|✅|✅|❌|❌|
-|[CoC7.ErrorTokenIncorrect](#coc7errortokenincorrect)|❌|❌|❌|❌|❌|❌|
-|[CoC7.InvestigatorWizard.AddBonusPointsToSkills](#coc7investigatorwizardaddbonuspointstoskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.AgeRange](#coc7investigatorwizardagerange)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.AllowRerolls](#coc7investigatorwizardallowrerolls)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeCounts](#coc7investigatorwizardarchetypecounts)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeDefaultSkills](#coc7investigatorwizardarchetypedefaultskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeOptionalSkills](#coc7investigatorwizardarchetypeoptionalskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypePage](#coc7investigatorwizardarchetypepage)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeSelect](#coc7investigatorwizardarchetypeselect)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Archetypes](#coc7investigatorwizardarchetypes)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.BackStep](#coc7investigatorwizardbackstep)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ChangingEraDelay](#coc7investigatorwizardchangingeradelay)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CharacterAvatarImage](#coc7investigatorwizardcharacteravatarimage)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CharacterTokenImage](#coc7investigatorwizardcharactertokenimage)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CharacteristicDragInformation](#coc7investigatorwizardcharacteristicdraginformation)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Characteristics](#coc7investigatorwizardcharacteristics)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CoreCharacteristicName](#coc7investigatorwizardcorecharacteristicname)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CoreCharacteristicSelect](#coc7investigatorwizardcorecharacteristicselect)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CreateInstructions](#coc7investigatorwizardcreateinstructions)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CreateStep](#coc7investigatorwizardcreatestep)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CreatingInvestigator](#coc7investigatorwizardcreatinginvestigator)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.DeductPointsFromCharacteristics](#coc7investigatorwizarddeductpointsfromcharacteristics)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.EnforcePointBuy](#coc7investigatorwizardenforcepointbuy)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Introduction](#coc7investigatorwizardintroduction)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.IntroductionKeeper](#coc7investigatorwizardintroductionkeeper)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.MakeEDUImprovementCheck](#coc7investigatorwizardmakeeduimprovementcheck)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.MakeEDUImprovementChecks](#coc7investigatorwizardmakeeduimprovementchecks)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.NextStep](#coc7investigatorwizardnextstep)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationCounts](#coc7investigatorwizardoccupationcounts)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationCreditRating](#coc7investigatorwizardoccupationcreditrating)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationDefaultSkills](#coc7investigatorwizardoccupationdefaultskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationPage](#coc7investigatorwizardoccupationpage)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationPersonalThisMany](#coc7investigatorwizardoccupationpersonalthismany)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationPickThisMany](#coc7investigatorwizardoccupationpickthismany)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationSelect](#coc7investigatorwizardoccupationselect)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationSkillPoints](#coc7investigatorwizardoccupationskillpoints)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationSkills](#coc7investigatorwizardoccupationskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Occupations](#coc7investigatorwizardoccupations)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OtherPlayerOwnership](#coc7investigatorwizardotherplayerownership)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.PlayerEnabled](#coc7investigatorwizardplayerenabled)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.PlayerQuantity](#coc7investigatorwizardplayerquantity)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.QuickFireValues](#coc7investigatorwizardquickfirevalues)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ReducePointsFromCharacteristic](#coc7investigatorwizardreducepointsfromcharacteristic)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.RollTwiceForLuck](#coc7investigatorwizardrolltwiceforluck)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupAny](#coc7investigatorwizardsetupany)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupCounts](#coc7investigatorwizardsetupcounts)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupPage](#coc7investigatorwizardsetuppage)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupSelect](#coc7investigatorwizardsetupselect)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Setups](#coc7investigatorwizardsetups)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendArchetypeCountIncorrect](#coc7investigatorwizardskillspendarchetypecountincorrect)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendArchetypePoints](#coc7investigatorwizardskillspendarchetypepoints)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendInterestPoints](#coc7investigatorwizardskillspendinterestpoints)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendOccupationCountIncorrect](#coc7investigatorwizardskillspendoccupationcountincorrect)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendOccupationPoints](#coc7investigatorwizardskillspendoccupationpoints)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SuggestedOccupations](#coc7investigatorwizardsuggestedoccupations)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SuggestedTraits](#coc7investigatorwizardsuggestedtraits)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Title](#coc7investigatorwizardtitle)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleAdjustCharacteristics](#coc7investigatorwizardtitleadjustcharacteristics)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleArchetypeSkills](#coc7investigatorwizardtitlearchetypeskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleAttributes](#coc7investigatorwizardtitleattributes)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleBackstory](#coc7investigatorwizardtitlebackstory)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleCharacteristics](#coc7investigatorwizardtitlecharacteristics)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleCreate](#coc7investigatorwizardtitlecreate)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleDetails](#coc7investigatorwizardtitledetails)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleKeeperConfiguration](#coc7investigatorwizardtitlekeeperconfiguration)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleOccupationSkills](#coc7investigatorwizardtitleoccupationskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitlePointsSkills](#coc7investigatorwizardtitlepointsskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleSelectArchetype](#coc7investigatorwizardtitleselectarchetype)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleSelectOccupation](#coc7investigatorwizardtitleselectoccupation)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleSelectSetup](#coc7investigatorwizardtitleselectsetup)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.UseSetupMethod](#coc7investigatorwizardusesetupmethod)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryCreditRatingMax](#coc7monetarycreditratingmax)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryCreditRatingMin](#coc7monetarycreditratingmin)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultAverage](#coc7monetarydefaultaverage)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultPenniless](#coc7monetarydefaultpenniless)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultPoor](#coc7monetarydefaultpoor)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultRich](#coc7monetarydefaultrich)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultSuperRich](#coc7monetarydefaultsuperrich)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultWealthy](#coc7monetarydefaultwealthy)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatDecimalLeft](#coc7monetaryformatdecimalleft)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatDecimalRight](#coc7monetaryformatdecimalright)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatIntegerLeft](#coc7monetaryformatintegerleft)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatIntegerRight](#coc7monetaryformatintegerright)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatLsd](#coc7monetaryformatlsd)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatRoman](#coc7monetaryformatroman)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatTitle](#coc7monetaryformattitle)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTitle](#coc7monetarytitle)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeAsses](#coc7monetarytypeasses)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeCreditRating](#coc7monetarytypecreditrating)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeDenarii](#coc7monetarytypedenarii)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeDeniers](#coc7monetarytypedeniers)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeNone](#coc7monetarytypenone)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeOne](#coc7monetarytypeone)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeQuinarii](#coc7monetarytypequinarii)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeSestertii](#coc7monetarytypesestertii)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeSous](#coc7monetarytypesous)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryValueAssets](#coc7monetaryvalueassets)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryValueCash](#coc7monetaryvaluecash)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryValueSpendingLevel](#coc7monetaryvaluespendinglevel)|❌|✅|✅|✅|❌|✅|
-|[CoC7.SanityLossType](#coc7sanitylosstype)|❌|❌|❌|❌|❌|❌|
-|[CoC7.Settings.DropCoCID.Dialog](#coc7settingsdropcociddialog)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Hint](#coc7settingsdropcocidhint)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.IgnoreCoCID](#coc7settingsdropcocidignorecocid)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Name](#coc7settingsdropcocidname)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Prompt](#coc7settingsdropcocidprompt)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Remember](#coc7settingsdropcocidremember)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.UseCoCID](#coc7settingsdropcocidusecocid)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint](#coc7settingspulprulesignoreagepenaltieshint)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Name](#coc7settingspulprulesignoreagepenaltiesname)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.WorldEra.Hint](#coc7settingsworlderahint)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.WorldEra.Name](#coc7settingsworlderaname)|❌|✅|✅|✅|✅|✅|
-|[CoC7.SkillKeepBaseValue](#coc7skillkeepbasevalue)|❌|✅|✅|✅|✅|✅|
-|[CoC7.SkillPickNameOnly](#coc7skillpicknameonly)|❌|✅|✅|✅|✅|✅|
-|[CoC7.SkillRarityShort](#coc7skillrarityshort)|❌|✅|✅|✅|✅|✅|
-|[CoC7.SkillRequiresName](#coc7skillrequiresname)|❌|✅|✅|✅|✅|✅|
-|[CoC7.SkillSpecializationIsUnique](#coc7skillspecializationisunique)|❌|✅|✅|✅|❌|✅|
+|Key|de|fr|it|ja|pl|pt-BR|zh-TW|
+|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
+|**Remaining**:|**144**|**1**|**1**|**3**|**1**|**106**|**5**|
+|[CoC7.CoCIDBatch.summary](#coc7cocidbatchsummary)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.CoCIDBatch.title](#coc7cocidbatchtitle)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.CoCIDFlag.documents-in-compendiums](#coc7cocidflagdocumentsincompendiums)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.documents-in-world](#coc7cocidflagdocumentsinworld)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.document-not-found](#coc7cocidflagerrordocumentnotfound)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.documents-not-found](#coc7cocidflagerrordocumentsnotfound)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.duplicate](#coc7cocidflagerrorduplicate)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.incorrect.type](#coc7cocidflagerrorincorrecttype)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.unknown-era](#coc7cocidflagerrorunknownera)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.foundry-id](#coc7cocidflagfoundryid)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.foundry-uuid](#coc7cocidflagfoundryuuid)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.get-document-like-this](#coc7cocidflaggetdocumentlikethis)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.get-this-document](#coc7cocidflaggetthisdocument)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.guess](#coc7cocidflagguess)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.id](#coc7cocidflagid)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.key](#coc7cocidflagkey)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.new](#coc7cocidflagnew)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.others](#coc7cocidflagothers)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.priority](#coc7cocidflagpriority)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.summary](#coc7cocidflagsummary)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.title](#coc7cocidflagtitle)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CustomSpecialisationLabel](#coc7customspecialisationlabel)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.EraDarkAgesPulp](#coc7eradarkagespulp)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.EraDownDarkerTrailsPulp](#coc7eradowndarkertrailspulp)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.EraModernPulp](#coc7eramodernpulp)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.EraRegency](#coc7eraregency)|❌|✅|✅|✅|✅|❌|❌|
+|[CoC7.EraRegencyPulp](#coc7eraregencypulp)|❌|✅|✅|✅|✅|❌|❌|
+|[CoC7.ErrorTokenIncorrect](#coc7errortokenincorrect)|❌|✅|✅|❌|✅|❌|❌|
+|[CoC7.InvestigatorWizard.AddBonusPointsToSkills](#coc7investigatorwizardaddbonuspointstoskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.AgeRange](#coc7investigatorwizardagerange)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.AllowRerolls](#coc7investigatorwizardallowrerolls)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypeCounts](#coc7investigatorwizardarchetypecounts)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypeDefaultSkills](#coc7investigatorwizardarchetypedefaultskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypeOptionalSkills](#coc7investigatorwizardarchetypeoptionalskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypePage](#coc7investigatorwizardarchetypepage)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypeSelect](#coc7investigatorwizardarchetypeselect)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Archetypes](#coc7investigatorwizardarchetypes)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.BackStep](#coc7investigatorwizardbackstep)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ChangingEraDelay](#coc7investigatorwizardchangingeradelay)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CharacterAvatarImage](#coc7investigatorwizardcharacteravatarimage)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CharacterTokenImage](#coc7investigatorwizardcharactertokenimage)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CharacteristicDragInformation](#coc7investigatorwizardcharacteristicdraginformation)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Characteristics](#coc7investigatorwizardcharacteristics)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CoreCharacteristicName](#coc7investigatorwizardcorecharacteristicname)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CoreCharacteristicSelect](#coc7investigatorwizardcorecharacteristicselect)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CreateInstructions](#coc7investigatorwizardcreateinstructions)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CreateStep](#coc7investigatorwizardcreatestep)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CreatingInvestigator](#coc7investigatorwizardcreatinginvestigator)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.DeductPointsFromCharacteristics](#coc7investigatorwizarddeductpointsfromcharacteristics)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.EnforcePointBuy](#coc7investigatorwizardenforcepointbuy)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Introduction](#coc7investigatorwizardintroduction)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.IntroductionKeeper](#coc7investigatorwizardintroductionkeeper)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.MakeEDUImprovementCheck](#coc7investigatorwizardmakeeduimprovementcheck)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.MakeEDUImprovementChecks](#coc7investigatorwizardmakeeduimprovementchecks)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.NextStep](#coc7investigatorwizardnextstep)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationCounts](#coc7investigatorwizardoccupationcounts)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationCreditRating](#coc7investigatorwizardoccupationcreditrating)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationDefaultSkills](#coc7investigatorwizardoccupationdefaultskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationPage](#coc7investigatorwizardoccupationpage)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationPersonalThisMany](#coc7investigatorwizardoccupationpersonalthismany)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationPickThisMany](#coc7investigatorwizardoccupationpickthismany)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationSelect](#coc7investigatorwizardoccupationselect)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationSkillPoints](#coc7investigatorwizardoccupationskillpoints)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationSkills](#coc7investigatorwizardoccupationskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Occupations](#coc7investigatorwizardoccupations)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OtherPlayerOwnership](#coc7investigatorwizardotherplayerownership)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.PlayerEnabled](#coc7investigatorwizardplayerenabled)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.PlayerQuantity](#coc7investigatorwizardplayerquantity)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.QuickFireValues](#coc7investigatorwizardquickfirevalues)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ReducePointsFromCharacteristic](#coc7investigatorwizardreducepointsfromcharacteristic)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.RollTwiceForLuck](#coc7investigatorwizardrolltwiceforluck)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SetupAny](#coc7investigatorwizardsetupany)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SetupCounts](#coc7investigatorwizardsetupcounts)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SetupPage](#coc7investigatorwizardsetuppage)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SetupSelect](#coc7investigatorwizardsetupselect)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Setups](#coc7investigatorwizardsetups)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendArchetypeCountIncorrect](#coc7investigatorwizardskillspendarchetypecountincorrect)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendArchetypePoints](#coc7investigatorwizardskillspendarchetypepoints)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendInterestPoints](#coc7investigatorwizardskillspendinterestpoints)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendOccupationCountIncorrect](#coc7investigatorwizardskillspendoccupationcountincorrect)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendOccupationPoints](#coc7investigatorwizardskillspendoccupationpoints)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SuggestedOccupations](#coc7investigatorwizardsuggestedoccupations)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SuggestedTraits](#coc7investigatorwizardsuggestedtraits)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Title](#coc7investigatorwizardtitle)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleAdjustCharacteristics](#coc7investigatorwizardtitleadjustcharacteristics)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleArchetypeSkills](#coc7investigatorwizardtitlearchetypeskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleAttributes](#coc7investigatorwizardtitleattributes)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleBackstory](#coc7investigatorwizardtitlebackstory)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleCharacteristics](#coc7investigatorwizardtitlecharacteristics)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleCreate](#coc7investigatorwizardtitlecreate)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleDetails](#coc7investigatorwizardtitledetails)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleKeeperConfiguration](#coc7investigatorwizardtitlekeeperconfiguration)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleOccupationSkills](#coc7investigatorwizardtitleoccupationskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitlePointsSkills](#coc7investigatorwizardtitlepointsskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleSelectArchetype](#coc7investigatorwizardtitleselectarchetype)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleSelectOccupation](#coc7investigatorwizardtitleselectoccupation)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleSelectSetup](#coc7investigatorwizardtitleselectsetup)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.UseSetupMethod](#coc7investigatorwizardusesetupmethod)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryCreditRatingMax](#coc7monetarycreditratingmax)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryCreditRatingMin](#coc7monetarycreditratingmin)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultAverage](#coc7monetarydefaultaverage)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultPenniless](#coc7monetarydefaultpenniless)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultPoor](#coc7monetarydefaultpoor)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultRich](#coc7monetarydefaultrich)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultSuperRich](#coc7monetarydefaultsuperrich)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultWealthy](#coc7monetarydefaultwealthy)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatDecimalLeft](#coc7monetaryformatdecimalleft)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatDecimalRight](#coc7monetaryformatdecimalright)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatIntegerLeft](#coc7monetaryformatintegerleft)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatIntegerRight](#coc7monetaryformatintegerright)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatLsd](#coc7monetaryformatlsd)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatRoman](#coc7monetaryformatroman)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatTitle](#coc7monetaryformattitle)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTitle](#coc7monetarytitle)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeAsses](#coc7monetarytypeasses)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeCreditRating](#coc7monetarytypecreditrating)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeDenarii](#coc7monetarytypedenarii)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeDeniers](#coc7monetarytypedeniers)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeNone](#coc7monetarytypenone)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeOne](#coc7monetarytypeone)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeQuinarii](#coc7monetarytypequinarii)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeSestertii](#coc7monetarytypesestertii)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeSous](#coc7monetarytypesous)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryValueAssets](#coc7monetaryvalueassets)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryValueCash](#coc7monetaryvaluecash)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryValueSpendingLevel](#coc7monetaryvaluespendinglevel)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.SanityLossType](#coc7sanitylosstype)|❌|✅|✅|❌|✅|❌|❌|
+|[CoC7.Settings.DropCoCID.Dialog](#coc7settingsdropcociddialog)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.Hint](#coc7settingsdropcocidhint)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.IgnoreCoCID](#coc7settingsdropcocidignorecocid)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.Name](#coc7settingsdropcocidname)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.Prompt](#coc7settingsdropcocidprompt)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.Remember](#coc7settingsdropcocidremember)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.UseCoCID](#coc7settingsdropcocidusecocid)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint](#coc7settingspulprulesignoreagepenaltieshint)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Name](#coc7settingspulprulesignoreagepenaltiesname)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.WorldEra.Hint](#coc7settingsworlderahint)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.WorldEra.Name](#coc7settingsworlderaname)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.SkillKeepBaseValue](#coc7skillkeepbasevalue)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.SkillPickNameOnly](#coc7skillpicknameonly)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.SkillRarityShort](#coc7skillrarityshort)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.SkillRequiresName](#coc7skillrequiresname)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.SkillSpecializationIsUnique](#coc7skillspecializationisunique)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.System.Documentation](#coc7systemdocumentation)|❌|❌|❌|❌|❌|❌|❌|
##### CoC7.CoCIDBatch.summary
``` "CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",```
##### CoC7.CoCIDBatch.title
@@ -438,3 +437,5 @@ The following translations have more than 153 untranslated strings **cn**, **cs*
``` "CoC7.SkillRequiresName": "Requires Name",```
##### CoC7.SkillSpecializationIsUnique
``` "CoC7.SkillSpecializationIsUnique": "Unique Specialization",```
+##### CoC7.System.Documentation
+``` "CoC7.System.Documentation": "View CoC7 System Manual",```
From a44665602b158c6e9d4b8d5cbd1831ad70d249ca Mon Sep 17 00:00:00 2001
From: snap01
Date: Sun, 22 Oct 2023 19:55:30 +0000
Subject: [PATCH 05/38] [create-pull-request] automated change
---
.github/ABANDONED.md | 30 ++++++++++++++++++------------
1 file changed, 18 insertions(+), 12 deletions(-)
diff --git a/.github/ABANDONED.md b/.github/ABANDONED.md
index 148e7a08..c13ff308 100644
--- a/.github/ABANDONED.md
+++ b/.github/ABANDONED.md
@@ -2,21 +2,21 @@
Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry VTT better! Below is a list of translations keys on existing files that still need translated, based on `en.json`.
-[cn.json (375 untranslated strings)](#cnjson)
+[cn.json (376 untranslated strings)](#cnjson)
-[cs.json (560 untranslated strings)](#csjson)
+[cs.json (561 untranslated strings)](#csjson)
-[es.json (357 untranslated strings)](#esjson)
+[es.json (358 untranslated strings)](#esjson)
-[ko.json (157 untranslated strings)](#kojson)
+[ko.json (158 untranslated strings)](#kojson)
-[ru.json (1222 untranslated strings)](#rujson)
+[ru.json (1223 untranslated strings)](#rujson)
-[sv.json (343 untranslated strings)](#svjson)
+[sv.json (344 untranslated strings)](#svjson)
## cn.json
-375 untranslated strings
+376 untranslated strings
```
"CoC7.ActorIsTokenHint": "Actor is a token",
"CoC7.ActorDataLinked": "Actor data are linked",
@@ -274,6 +274,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.Migrate.ErrorTable": "Failed CoC7 system migration for Table {name}: {message}",
"CoC7.Migrate.ErrorItem": "Failed CoC7 system migration for Item {name}: {message}",
"CoC7.Migrate.ErrorActor": "Failed CoC7 system migration for Actor {name}: {message}",
+"CoC7.System.Documentation": "View CoC7 System Manual",
"CoC7.Settings.PulpRules.IgnoreAgePenalties.Name": "Ignore Age Penalties",
"CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint": "Do not alter movement rate based on age. When using the investigator wizard improvements and characteristic adjustments are not made",
"CoC7.Settings.DholeUpload.Directory.Name": "The Dhole's House image upload directory",
@@ -395,7 +396,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
```
## cs.json
-560 untranslated strings
+561 untranslated strings
```
"CoC7.Entities.Character": "Character",
"CoC7.Entities.Container": "Container",
@@ -771,6 +772,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.Migrate.ErrorTable": "Failed CoC7 system migration for Table {name}: {message}",
"CoC7.Migrate.ErrorItem": "Failed CoC7 system migration for Item {name}: {message}",
"CoC7.Migrate.ErrorActor": "Failed CoC7 system migration for Actor {name}: {message}",
+"CoC7.System.Documentation": "View CoC7 System Manual",
"CoC7.Settings.CoreRules.Title": "Core Rule Book Optional Rules",
"CoC7.Settings.Rules.Name": "Variant/Optional Rules",
"CoC7.Settings.Rules.Label": "Configure Variant/Optional Rules",
@@ -959,7 +961,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
```
## es.json
-357 untranslated strings
+358 untranslated strings
```
"CoC7.ActorIsTokenHint": "Actor is a token",
"CoC7.ActorDataLinked": "Actor data are linked",
@@ -1199,6 +1201,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.Migrate.ErrorTable": "Failed CoC7 system migration for Table {name}: {message}",
"CoC7.Migrate.ErrorItem": "Failed CoC7 system migration for Item {name}: {message}",
"CoC7.Migrate.ErrorActor": "Failed CoC7 system migration for Actor {name}: {message}",
+"CoC7.System.Documentation": "View CoC7 System Manual",
"CoC7.Settings.PulpRules.IgnoreAgePenalties.Name": "Ignore Age Penalties",
"CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint": "Do not alter movement rate based on age. When using the investigator wizard improvements and characteristic adjustments are not made",
"CoC7.Settings.DholeUpload.Directory.Name": "The Dhole's House image upload directory",
@@ -1320,7 +1323,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
```
## ko.json
-157 untranslated strings
+158 untranslated strings
```
"CoC7.CustomSpecialisationLabel": "Custom label - {specialisation}",
"CoC7.RollDifficultyRegularTitle": "Regular difficulty",
@@ -1376,6 +1379,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.TextFieldInvalidJSON": "Unable to parse the JSON, please try again",
"CoC7.ActorImporterUploadError": "Import stopped, unable to write image",
"CoC7.FileUploadError": "Unable to write image, file upload error",
+"CoC7.System.Documentation": "View CoC7 System Manual",
"CoC7.Settings.PulpRules.IgnoreAgePenalties.Name": "Ignore Age Penalties",
"CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint": "Do not alter movement rate based on age. When using the investigator wizard improvements and characteristic adjustments are not made",
"CoC7.Settings.WorldEra.Name": "Era for the world",
@@ -1481,7 +1485,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
```
## ru.json
-1222 untranslated strings
+1223 untranslated strings
```
"CoC7.title": "Call of Cthulhu 7h Edition",
"CoC7.Entities.Character": "Character",
@@ -2430,6 +2434,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.Migrate.ErrorTable": "Failed CoC7 system migration for Table {name}: {message}",
"CoC7.Migrate.ErrorItem": "Failed CoC7 system migration for Item {name}: {message}",
"CoC7.Migrate.ErrorActor": "Failed CoC7 system migration for Actor {name}: {message}",
+"CoC7.System.Documentation": "View CoC7 System Manual",
"CoC7.Settings.CoreRules.Title": "Core Rule Book Optional Rules",
"CoC7.Settings.Rules.Name": "Variant/Optional Rules",
"CoC7.Settings.Rules.Label": "Configure Variant/Optional Rules",
@@ -2707,7 +2712,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
```
## sv.json
-343 untranslated strings
+344 untranslated strings
```
"CoC7.ActorIsTokenHint": "Actor is a token",
"CoC7.ActorDataLinked": "Actor data are linked",
@@ -2935,6 +2940,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.Migrate.ErrorTable": "Failed CoC7 system migration for Table {name}: {message}",
"CoC7.Migrate.ErrorItem": "Failed CoC7 system migration for Item {name}: {message}",
"CoC7.Migrate.ErrorActor": "Failed CoC7 system migration for Actor {name}: {message}",
+"CoC7.System.Documentation": "View CoC7 System Manual",
"CoC7.Settings.PulpRules.IgnoreAgePenalties.Name": "Ignore Age Penalties",
"CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint": "Do not alter movement rate based on age. When using the investigator wizard improvements and characteristic adjustments are not made",
"CoC7.Settings.DholeUpload.Directory.Name": "The Dhole's House image upload directory",
From e96391db008eafbe03f6cb8efaa343013d6c9688 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sun, 22 Oct 2023 21:42:01 +0100
Subject: [PATCH 06/38] Update CHANGELOG.md
---
.github/CHANGELOG.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index 405529d1..d8c1eca3 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -9,6 +9,10 @@ Happy gaming !
When not specified, all changes were made by @castanhocorreia, @HavlockV, and @snap01.
+- Add system manual button to Game Settings sidebar tab
+- Update to French localization, thanks to @vonv #1415
+- Update to Italian localization, thanks to @Stefano1975t #1419
+
## Version 0.10.6
When not specified, all changes were made by @castanhocorreia, @HavlockV, and @snap01.
From 722f4abe1b2fff496a2519fbdd7fa5cb54fbe80e Mon Sep 17 00:00:00 2001
From: Stefano1975t <97825580+Stefano1975t@users.noreply.github.com>
Date: Mon, 23 Oct 2023 10:13:54 +0200
Subject: [PATCH 07/38] Update it.json
---
lang/it.json | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lang/it.json b/lang/it.json
index 4e8cc100..ebd9dafc 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -1009,6 +1009,8 @@
"CoC7.Migrate.ErrorItem": "E' fallita la migrazione del sistema CoC7 per l'Oggetto {name}: {message}",
"CoC7.Migrate.ErrorActor": "E' fallita la migrazione del sistema CoC7 per il Personaggio {name}: {message}",
+ "CoC7.System.Documentation": "Visione del Manuale del Sistema CoC7",
+
"CoC7.Settings.CoreRules.Title": "Regole opzionali del regolamento base",
"CoC7.Settings.Rules.Name": "Regole opzionali/variazioni",
"CoC7.Settings.Rules.Label": "Configurazione delle regole opzionali/variazioni",
From 5ae2eb4a8889db12a7b6a9f3d9ceb34e61a19287 Mon Sep 17 00:00:00 2001
From: Pablo de la Concepcion
Date: Fri, 27 Oct 2023 01:25:34 +0100
Subject: [PATCH 08/38] Fixed `extractPossessions` for 1 item. Fixes #1423.
Fixed `extractPossessions` when `dholehousePossessions` is a single item
instead of an array, this was preventing characters from Dhole house to be
imported when they had a single item as a possesion.
---
.github/CHANGELOG.md | 1 +
module/apps/dholehouse_importer.js | 3 +++
2 files changed, 4 insertions(+)
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index d8c1eca3..ca0db352 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -9,6 +9,7 @@ Happy gaming !
When not specified, all changes were made by @castanhocorreia, @HavlockV, and @snap01.
+- Fix dholehouse importer for characters with a single item on their possesions. Fixes #1423
- Add system manual button to Game Settings sidebar tab
- Update to French localization, thanks to @vonv #1415
- Update to Italian localization, thanks to @Stefano1975t #1419
diff --git a/module/apps/dholehouse_importer.js b/module/apps/dholehouse_importer.js
index 418f6c91..28231490 100644
--- a/module/apps/dholehouse_importer.js
+++ b/module/apps/dholehouse_importer.js
@@ -219,6 +219,9 @@ export class CoC7DholeHouseActorImporter {
static async extractPossessions (dholehousePossessions, options) {
const items = []
+ if (!Array.isArray(dholehousePossessions) && dholehousePossessions != null) {
+ dholehousePossessions = [dholehousePossessions]
+ }
for (const item of dholehousePossessions) {
const existing = await CoC7Utilities.guessItem('item', item.description, {
source: options.source
From 373c3c0614624b64f72296a7360931eb2830330a Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Fri, 27 Oct 2023 11:44:34 +0100
Subject: [PATCH 09/38] Update CHANGELOG.md
---
.github/CHANGELOG.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index ca0db352..ebfb20e2 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -9,7 +9,7 @@ Happy gaming !
When not specified, all changes were made by @castanhocorreia, @HavlockV, and @snap01.
-- Fix dholehouse importer for characters with a single item on their possesions. Fixes #1423
+- Fix dholehouse importer for characters with a single item on their possesions. Fixes #1423, thanks to @pconcepcion #1424
- Add system manual button to Game Settings sidebar tab
- Update to French localization, thanks to @vonv #1415
- Update to Italian localization, thanks to @Stefano1975t #1419
From da02423fb41ad00c488304245fbc9728365e6d45 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Fri, 27 Oct 2023 11:45:46 +0100
Subject: [PATCH 10/38] Update CHANGELOG.md
---
.github/CHANGELOG.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index ebfb20e2..5e3734bd 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -12,7 +12,7 @@ When not specified, all changes were made by @castanhocorreia, @HavlockV, and @s
- Fix dholehouse importer for characters with a single item on their possesions. Fixes #1423, thanks to @pconcepcion #1424
- Add system manual button to Game Settings sidebar tab
- Update to French localization, thanks to @vonv #1415
-- Update to Italian localization, thanks to @Stefano1975t #1419
+- Update to Italian localization, thanks to @Stefano1975t #1419 and #1422
## Version 0.10.6
From 4f09016f3d7a71f53a59c72d13530094e6cd0eb8 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Fri, 27 Oct 2023 10:45:58 +0000
Subject: [PATCH 11/38] Updated translations list
---
.github/TRANSLATIONS.md | 296 ++++++++++++++++++++--------------------
1 file changed, 149 insertions(+), 147 deletions(-)
diff --git a/.github/TRANSLATIONS.md b/.github/TRANSLATIONS.md
index 701260b6..fc77db22 100644
--- a/.github/TRANSLATIONS.md
+++ b/.github/TRANSLATIONS.md
@@ -2,155 +2,157 @@
Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry VTT better! Below is a list of translations keys on existing files that still need translated, based on `en.json`. Feel free to create a new `*.json` file for a language that is not shown here!
+The **it** translation is currently up to date
+
The following translations have more than 153 untranslated strings **cn**, **cs**, **es**, **ko**, **ru**, **sv**, [are you able to help?](./ABANDONED.md)
-|Key|de|fr|it|ja|pl|pt-BR|zh-TW|
-|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
-|**Remaining**:|**144**|**1**|**1**|**3**|**1**|**106**|**5**|
-|[CoC7.CoCIDBatch.summary](#coc7cocidbatchsummary)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.CoCIDBatch.title](#coc7cocidbatchtitle)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.CoCIDFlag.documents-in-compendiums](#coc7cocidflagdocumentsincompendiums)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.documents-in-world](#coc7cocidflagdocumentsinworld)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.document-not-found](#coc7cocidflagerrordocumentnotfound)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.documents-not-found](#coc7cocidflagerrordocumentsnotfound)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.duplicate](#coc7cocidflagerrorduplicate)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.incorrect.type](#coc7cocidflagerrorincorrecttype)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.unknown-era](#coc7cocidflagerrorunknownera)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.foundry-id](#coc7cocidflagfoundryid)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.foundry-uuid](#coc7cocidflagfoundryuuid)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.get-document-like-this](#coc7cocidflaggetdocumentlikethis)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.get-this-document](#coc7cocidflaggetthisdocument)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.guess](#coc7cocidflagguess)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.id](#coc7cocidflagid)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.key](#coc7cocidflagkey)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.new](#coc7cocidflagnew)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.others](#coc7cocidflagothers)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.priority](#coc7cocidflagpriority)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.summary](#coc7cocidflagsummary)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.title](#coc7cocidflagtitle)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CustomSpecialisationLabel](#coc7customspecialisationlabel)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.EraDarkAgesPulp](#coc7eradarkagespulp)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.EraDownDarkerTrailsPulp](#coc7eradowndarkertrailspulp)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.EraModernPulp](#coc7eramodernpulp)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.EraRegency](#coc7eraregency)|❌|✅|✅|✅|✅|❌|❌|
-|[CoC7.EraRegencyPulp](#coc7eraregencypulp)|❌|✅|✅|✅|✅|❌|❌|
-|[CoC7.ErrorTokenIncorrect](#coc7errortokenincorrect)|❌|✅|✅|❌|✅|❌|❌|
-|[CoC7.InvestigatorWizard.AddBonusPointsToSkills](#coc7investigatorwizardaddbonuspointstoskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.AgeRange](#coc7investigatorwizardagerange)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.AllowRerolls](#coc7investigatorwizardallowrerolls)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeCounts](#coc7investigatorwizardarchetypecounts)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeDefaultSkills](#coc7investigatorwizardarchetypedefaultskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeOptionalSkills](#coc7investigatorwizardarchetypeoptionalskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypePage](#coc7investigatorwizardarchetypepage)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeSelect](#coc7investigatorwizardarchetypeselect)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Archetypes](#coc7investigatorwizardarchetypes)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.BackStep](#coc7investigatorwizardbackstep)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ChangingEraDelay](#coc7investigatorwizardchangingeradelay)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CharacterAvatarImage](#coc7investigatorwizardcharacteravatarimage)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CharacterTokenImage](#coc7investigatorwizardcharactertokenimage)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CharacteristicDragInformation](#coc7investigatorwizardcharacteristicdraginformation)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Characteristics](#coc7investigatorwizardcharacteristics)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CoreCharacteristicName](#coc7investigatorwizardcorecharacteristicname)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CoreCharacteristicSelect](#coc7investigatorwizardcorecharacteristicselect)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CreateInstructions](#coc7investigatorwizardcreateinstructions)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CreateStep](#coc7investigatorwizardcreatestep)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CreatingInvestigator](#coc7investigatorwizardcreatinginvestigator)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.DeductPointsFromCharacteristics](#coc7investigatorwizarddeductpointsfromcharacteristics)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.EnforcePointBuy](#coc7investigatorwizardenforcepointbuy)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Introduction](#coc7investigatorwizardintroduction)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.IntroductionKeeper](#coc7investigatorwizardintroductionkeeper)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.MakeEDUImprovementCheck](#coc7investigatorwizardmakeeduimprovementcheck)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.MakeEDUImprovementChecks](#coc7investigatorwizardmakeeduimprovementchecks)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.NextStep](#coc7investigatorwizardnextstep)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationCounts](#coc7investigatorwizardoccupationcounts)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationCreditRating](#coc7investigatorwizardoccupationcreditrating)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationDefaultSkills](#coc7investigatorwizardoccupationdefaultskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationPage](#coc7investigatorwizardoccupationpage)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationPersonalThisMany](#coc7investigatorwizardoccupationpersonalthismany)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationPickThisMany](#coc7investigatorwizardoccupationpickthismany)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationSelect](#coc7investigatorwizardoccupationselect)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationSkillPoints](#coc7investigatorwizardoccupationskillpoints)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationSkills](#coc7investigatorwizardoccupationskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Occupations](#coc7investigatorwizardoccupations)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OtherPlayerOwnership](#coc7investigatorwizardotherplayerownership)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.PlayerEnabled](#coc7investigatorwizardplayerenabled)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.PlayerQuantity](#coc7investigatorwizardplayerquantity)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.QuickFireValues](#coc7investigatorwizardquickfirevalues)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ReducePointsFromCharacteristic](#coc7investigatorwizardreducepointsfromcharacteristic)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.RollTwiceForLuck](#coc7investigatorwizardrolltwiceforluck)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupAny](#coc7investigatorwizardsetupany)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupCounts](#coc7investigatorwizardsetupcounts)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupPage](#coc7investigatorwizardsetuppage)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupSelect](#coc7investigatorwizardsetupselect)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Setups](#coc7investigatorwizardsetups)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendArchetypeCountIncorrect](#coc7investigatorwizardskillspendarchetypecountincorrect)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendArchetypePoints](#coc7investigatorwizardskillspendarchetypepoints)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendInterestPoints](#coc7investigatorwizardskillspendinterestpoints)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendOccupationCountIncorrect](#coc7investigatorwizardskillspendoccupationcountincorrect)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendOccupationPoints](#coc7investigatorwizardskillspendoccupationpoints)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SuggestedOccupations](#coc7investigatorwizardsuggestedoccupations)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SuggestedTraits](#coc7investigatorwizardsuggestedtraits)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Title](#coc7investigatorwizardtitle)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleAdjustCharacteristics](#coc7investigatorwizardtitleadjustcharacteristics)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleArchetypeSkills](#coc7investigatorwizardtitlearchetypeskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleAttributes](#coc7investigatorwizardtitleattributes)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleBackstory](#coc7investigatorwizardtitlebackstory)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleCharacteristics](#coc7investigatorwizardtitlecharacteristics)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleCreate](#coc7investigatorwizardtitlecreate)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleDetails](#coc7investigatorwizardtitledetails)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleKeeperConfiguration](#coc7investigatorwizardtitlekeeperconfiguration)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleOccupationSkills](#coc7investigatorwizardtitleoccupationskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitlePointsSkills](#coc7investigatorwizardtitlepointsskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleSelectArchetype](#coc7investigatorwizardtitleselectarchetype)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleSelectOccupation](#coc7investigatorwizardtitleselectoccupation)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleSelectSetup](#coc7investigatorwizardtitleselectsetup)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.UseSetupMethod](#coc7investigatorwizardusesetupmethod)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryCreditRatingMax](#coc7monetarycreditratingmax)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryCreditRatingMin](#coc7monetarycreditratingmin)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultAverage](#coc7monetarydefaultaverage)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultPenniless](#coc7monetarydefaultpenniless)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultPoor](#coc7monetarydefaultpoor)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultRich](#coc7monetarydefaultrich)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultSuperRich](#coc7monetarydefaultsuperrich)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultWealthy](#coc7monetarydefaultwealthy)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatDecimalLeft](#coc7monetaryformatdecimalleft)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatDecimalRight](#coc7monetaryformatdecimalright)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatIntegerLeft](#coc7monetaryformatintegerleft)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatIntegerRight](#coc7monetaryformatintegerright)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatLsd](#coc7monetaryformatlsd)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatRoman](#coc7monetaryformatroman)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatTitle](#coc7monetaryformattitle)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTitle](#coc7monetarytitle)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeAsses](#coc7monetarytypeasses)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeCreditRating](#coc7monetarytypecreditrating)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeDenarii](#coc7monetarytypedenarii)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeDeniers](#coc7monetarytypedeniers)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeNone](#coc7monetarytypenone)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeOne](#coc7monetarytypeone)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeQuinarii](#coc7monetarytypequinarii)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeSestertii](#coc7monetarytypesestertii)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeSous](#coc7monetarytypesous)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryValueAssets](#coc7monetaryvalueassets)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryValueCash](#coc7monetaryvaluecash)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryValueSpendingLevel](#coc7monetaryvaluespendinglevel)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.SanityLossType](#coc7sanitylosstype)|❌|✅|✅|❌|✅|❌|❌|
-|[CoC7.Settings.DropCoCID.Dialog](#coc7settingsdropcociddialog)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Hint](#coc7settingsdropcocidhint)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.IgnoreCoCID](#coc7settingsdropcocidignorecocid)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Name](#coc7settingsdropcocidname)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Prompt](#coc7settingsdropcocidprompt)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Remember](#coc7settingsdropcocidremember)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.UseCoCID](#coc7settingsdropcocidusecocid)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint](#coc7settingspulprulesignoreagepenaltieshint)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Name](#coc7settingspulprulesignoreagepenaltiesname)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.WorldEra.Hint](#coc7settingsworlderahint)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.WorldEra.Name](#coc7settingsworlderaname)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.SkillKeepBaseValue](#coc7skillkeepbasevalue)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.SkillPickNameOnly](#coc7skillpicknameonly)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.SkillRarityShort](#coc7skillrarityshort)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.SkillRequiresName](#coc7skillrequiresname)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.SkillSpecializationIsUnique](#coc7skillspecializationisunique)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.System.Documentation](#coc7systemdocumentation)|❌|❌|❌|❌|❌|❌|❌|
+|Key|de|fr|ja|pl|pt-BR|zh-TW|
+|:---|:---:|:---:|:---:|:---:|:---:|:---:|
+|**Remaining**:|**144**|**1**|**3**|**1**|**106**|**5**|
+|[CoC7.CoCIDBatch.summary](#coc7cocidbatchsummary)|❌|✅|✅|✅|❌|✅|
+|[CoC7.CoCIDBatch.title](#coc7cocidbatchtitle)|❌|✅|✅|✅|❌|✅|
+|[CoC7.CoCIDFlag.documents-in-compendiums](#coc7cocidflagdocumentsincompendiums)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.documents-in-world](#coc7cocidflagdocumentsinworld)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.document-not-found](#coc7cocidflagerrordocumentnotfound)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.documents-not-found](#coc7cocidflagerrordocumentsnotfound)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.duplicate](#coc7cocidflagerrorduplicate)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.incorrect.type](#coc7cocidflagerrorincorrecttype)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.unknown-era](#coc7cocidflagerrorunknownera)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.foundry-id](#coc7cocidflagfoundryid)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.foundry-uuid](#coc7cocidflagfoundryuuid)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.get-document-like-this](#coc7cocidflaggetdocumentlikethis)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.get-this-document](#coc7cocidflaggetthisdocument)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.guess](#coc7cocidflagguess)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.id](#coc7cocidflagid)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.key](#coc7cocidflagkey)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.new](#coc7cocidflagnew)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.others](#coc7cocidflagothers)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.priority](#coc7cocidflagpriority)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.summary](#coc7cocidflagsummary)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.title](#coc7cocidflagtitle)|❌|✅|✅|✅|✅|✅|
+|[CoC7.CustomSpecialisationLabel](#coc7customspecialisationlabel)|❌|✅|✅|✅|✅|✅|
+|[CoC7.EraDarkAgesPulp](#coc7eradarkagespulp)|❌|✅|✅|✅|✅|✅|
+|[CoC7.EraDownDarkerTrailsPulp](#coc7eradowndarkertrailspulp)|❌|✅|✅|✅|✅|✅|
+|[CoC7.EraModernPulp](#coc7eramodernpulp)|❌|✅|✅|✅|✅|✅|
+|[CoC7.EraRegency](#coc7eraregency)|❌|✅|✅|✅|❌|❌|
+|[CoC7.EraRegencyPulp](#coc7eraregencypulp)|❌|✅|✅|✅|❌|❌|
+|[CoC7.ErrorTokenIncorrect](#coc7errortokenincorrect)|❌|✅|❌|✅|❌|❌|
+|[CoC7.InvestigatorWizard.AddBonusPointsToSkills](#coc7investigatorwizardaddbonuspointstoskills)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.AgeRange](#coc7investigatorwizardagerange)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.AllowRerolls](#coc7investigatorwizardallowrerolls)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypeCounts](#coc7investigatorwizardarchetypecounts)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypeDefaultSkills](#coc7investigatorwizardarchetypedefaultskills)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypeOptionalSkills](#coc7investigatorwizardarchetypeoptionalskills)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypePage](#coc7investigatorwizardarchetypepage)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypeSelect](#coc7investigatorwizardarchetypeselect)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Archetypes](#coc7investigatorwizardarchetypes)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.BackStep](#coc7investigatorwizardbackstep)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ChangingEraDelay](#coc7investigatorwizardchangingeradelay)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CharacterAvatarImage](#coc7investigatorwizardcharacteravatarimage)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CharacterTokenImage](#coc7investigatorwizardcharactertokenimage)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CharacteristicDragInformation](#coc7investigatorwizardcharacteristicdraginformation)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Characteristics](#coc7investigatorwizardcharacteristics)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CoreCharacteristicName](#coc7investigatorwizardcorecharacteristicname)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CoreCharacteristicSelect](#coc7investigatorwizardcorecharacteristicselect)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CreateInstructions](#coc7investigatorwizardcreateinstructions)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CreateStep](#coc7investigatorwizardcreatestep)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CreatingInvestigator](#coc7investigatorwizardcreatinginvestigator)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.DeductPointsFromCharacteristics](#coc7investigatorwizarddeductpointsfromcharacteristics)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.EnforcePointBuy](#coc7investigatorwizardenforcepointbuy)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Introduction](#coc7investigatorwizardintroduction)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.IntroductionKeeper](#coc7investigatorwizardintroductionkeeper)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.MakeEDUImprovementCheck](#coc7investigatorwizardmakeeduimprovementcheck)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.MakeEDUImprovementChecks](#coc7investigatorwizardmakeeduimprovementchecks)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.NextStep](#coc7investigatorwizardnextstep)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationCounts](#coc7investigatorwizardoccupationcounts)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationCreditRating](#coc7investigatorwizardoccupationcreditrating)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationDefaultSkills](#coc7investigatorwizardoccupationdefaultskills)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationPage](#coc7investigatorwizardoccupationpage)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationPersonalThisMany](#coc7investigatorwizardoccupationpersonalthismany)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationPickThisMany](#coc7investigatorwizardoccupationpickthismany)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationSelect](#coc7investigatorwizardoccupationselect)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationSkillPoints](#coc7investigatorwizardoccupationskillpoints)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationSkills](#coc7investigatorwizardoccupationskills)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Occupations](#coc7investigatorwizardoccupations)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OtherPlayerOwnership](#coc7investigatorwizardotherplayerownership)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.PlayerEnabled](#coc7investigatorwizardplayerenabled)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.PlayerQuantity](#coc7investigatorwizardplayerquantity)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.QuickFireValues](#coc7investigatorwizardquickfirevalues)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ReducePointsFromCharacteristic](#coc7investigatorwizardreducepointsfromcharacteristic)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.RollTwiceForLuck](#coc7investigatorwizardrolltwiceforluck)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SetupAny](#coc7investigatorwizardsetupany)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SetupCounts](#coc7investigatorwizardsetupcounts)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SetupPage](#coc7investigatorwizardsetuppage)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SetupSelect](#coc7investigatorwizardsetupselect)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Setups](#coc7investigatorwizardsetups)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendArchetypeCountIncorrect](#coc7investigatorwizardskillspendarchetypecountincorrect)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendArchetypePoints](#coc7investigatorwizardskillspendarchetypepoints)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendInterestPoints](#coc7investigatorwizardskillspendinterestpoints)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendOccupationCountIncorrect](#coc7investigatorwizardskillspendoccupationcountincorrect)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendOccupationPoints](#coc7investigatorwizardskillspendoccupationpoints)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SuggestedOccupations](#coc7investigatorwizardsuggestedoccupations)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SuggestedTraits](#coc7investigatorwizardsuggestedtraits)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Title](#coc7investigatorwizardtitle)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleAdjustCharacteristics](#coc7investigatorwizardtitleadjustcharacteristics)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleArchetypeSkills](#coc7investigatorwizardtitlearchetypeskills)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleAttributes](#coc7investigatorwizardtitleattributes)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleBackstory](#coc7investigatorwizardtitlebackstory)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleCharacteristics](#coc7investigatorwizardtitlecharacteristics)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleCreate](#coc7investigatorwizardtitlecreate)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleDetails](#coc7investigatorwizardtitledetails)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleKeeperConfiguration](#coc7investigatorwizardtitlekeeperconfiguration)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleOccupationSkills](#coc7investigatorwizardtitleoccupationskills)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitlePointsSkills](#coc7investigatorwizardtitlepointsskills)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleSelectArchetype](#coc7investigatorwizardtitleselectarchetype)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleSelectOccupation](#coc7investigatorwizardtitleselectoccupation)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleSelectSetup](#coc7investigatorwizardtitleselectsetup)|❌|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.UseSetupMethod](#coc7investigatorwizardusesetupmethod)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryCreditRatingMax](#coc7monetarycreditratingmax)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryCreditRatingMin](#coc7monetarycreditratingmin)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultAverage](#coc7monetarydefaultaverage)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultPenniless](#coc7monetarydefaultpenniless)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultPoor](#coc7monetarydefaultpoor)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultRich](#coc7monetarydefaultrich)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultSuperRich](#coc7monetarydefaultsuperrich)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultWealthy](#coc7monetarydefaultwealthy)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatDecimalLeft](#coc7monetaryformatdecimalleft)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatDecimalRight](#coc7monetaryformatdecimalright)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatIntegerLeft](#coc7monetaryformatintegerleft)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatIntegerRight](#coc7monetaryformatintegerright)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatLsd](#coc7monetaryformatlsd)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatRoman](#coc7monetaryformatroman)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatTitle](#coc7monetaryformattitle)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTitle](#coc7monetarytitle)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeAsses](#coc7monetarytypeasses)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeCreditRating](#coc7monetarytypecreditrating)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeDenarii](#coc7monetarytypedenarii)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeDeniers](#coc7monetarytypedeniers)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeNone](#coc7monetarytypenone)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeOne](#coc7monetarytypeone)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeQuinarii](#coc7monetarytypequinarii)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeSestertii](#coc7monetarytypesestertii)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeSous](#coc7monetarytypesous)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryValueAssets](#coc7monetaryvalueassets)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryValueCash](#coc7monetaryvaluecash)|❌|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryValueSpendingLevel](#coc7monetaryvaluespendinglevel)|❌|✅|✅|✅|❌|✅|
+|[CoC7.SanityLossType](#coc7sanitylosstype)|❌|✅|❌|✅|❌|❌|
+|[CoC7.Settings.DropCoCID.Dialog](#coc7settingsdropcociddialog)|❌|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.Hint](#coc7settingsdropcocidhint)|❌|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.IgnoreCoCID](#coc7settingsdropcocidignorecocid)|❌|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.Name](#coc7settingsdropcocidname)|❌|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.Prompt](#coc7settingsdropcocidprompt)|❌|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.Remember](#coc7settingsdropcocidremember)|❌|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.UseCoCID](#coc7settingsdropcocidusecocid)|❌|✅|✅|✅|✅|✅|
+|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint](#coc7settingspulprulesignoreagepenaltieshint)|❌|✅|✅|✅|✅|✅|
+|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Name](#coc7settingspulprulesignoreagepenaltiesname)|❌|✅|✅|✅|✅|✅|
+|[CoC7.Settings.WorldEra.Hint](#coc7settingsworlderahint)|❌|✅|✅|✅|✅|✅|
+|[CoC7.Settings.WorldEra.Name](#coc7settingsworlderaname)|❌|✅|✅|✅|✅|✅|
+|[CoC7.SkillKeepBaseValue](#coc7skillkeepbasevalue)|❌|✅|✅|✅|✅|✅|
+|[CoC7.SkillPickNameOnly](#coc7skillpicknameonly)|❌|✅|✅|✅|✅|✅|
+|[CoC7.SkillRarityShort](#coc7skillrarityshort)|❌|✅|✅|✅|✅|✅|
+|[CoC7.SkillRequiresName](#coc7skillrequiresname)|❌|✅|✅|✅|✅|✅|
+|[CoC7.SkillSpecializationIsUnique](#coc7skillspecializationisunique)|❌|✅|✅|✅|❌|✅|
+|[CoC7.System.Documentation](#coc7systemdocumentation)|❌|❌|❌|❌|❌|❌|
##### CoC7.CoCIDBatch.summary
``` "CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",```
##### CoC7.CoCIDBatch.title
From 8caa3a387106a71a2a02683bc383b9407ad0ea38 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Mon, 6 Nov 2023 18:54:36 +0000
Subject: [PATCH 12/38] Maintain token link when switching between investigator
summarized and maximized sheet
---
lang/en.json | 2 ++
module/actors/sheets/character.js | 20 +++++++++++---------
module/chat/helper.js | 2 +-
module/scripts/register-settings.js | 8 ++++++++
4 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/lang/en.json b/lang/en.json
index 41645634..1b6ef473 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -1188,6 +1188,8 @@
"SETTINGS.ChaseShowTokenMovementHint": "Show movement on the grid when a token is moved to the next location.",
"SETTINGS.UseContextMenus": "Use context menus",
"SETTINGS.UseContextMenusHint": "[EXPERIMENTAL] Use context menus for rolls instead of key combination.",
+ "SETTINGS.SceneDistanceNotCalcualtedNoError": "Don't show error for ranged distance",
+ "SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "When starting a ranged combat if playing theatre of the mind do not show the unable to calculate distance message.",
"CoC7.getTheExample": "Copy Example",
"CoC7.Copied": "Copied the Example Text to Clipboard",
diff --git a/module/actors/sheets/character.js b/module/actors/sheets/character.js
index 212068b8..da194950 100644
--- a/module/actors/sheets/character.js
+++ b/module/actors/sheets/character.js
@@ -1,4 +1,4 @@
-/* global $, duplicate, expandObject, FontFace, game, mergeObject, TextEditor, ui */
+/* global $, duplicate, expandObject, FontFace, foundry, game, mergeObject, TextEditor, ui */
import { COC7 } from '../../config.js'
import { CoCActor } from '../actor.js'
import { CoC7ActorSheet } from './base.js'
@@ -35,15 +35,17 @@ export class CoC7CharacterSheet extends CoC7ActorSheet {
async toggleSheetMode (event) {
this.summarized = !this.summarized
+ let options = foundry.utils.duplicate(CoC7CharacterSheet.defaultOptions)
+ if (this.summarized) {
+ options = foundry.utils.mergeObject(options, {
+ classes: ['coc7', 'actor', 'character', 'summarized'],
+ height: 200,
+ resizable: false,
+ width: 700
+ })
+ }
+ options.token = this.options.token
await this.close()
- const options = this.summarized
- ? {
- classes: ['coc7', 'actor', 'character', 'summarized'],
- height: 200,
- resizable: false,
- width: 700
- }
- : CoC7CharacterSheet.defaultOptions
await this.render(true, options)
}
diff --git a/module/chat/helper.js b/module/chat/helper.js
index e19dc144..899e7d0b 100644
--- a/module/chat/helper.js
+++ b/module/chat/helper.js
@@ -319,7 +319,7 @@ export class chatHelper {
distance.value * distance.value + elevation * elevation
)
}
- } else {
+ } else if (!game.settings.get('CoC7', 'distanceTheatreOfTheMind')) {
ui.notifications.warn(
game.i18n.localize('CoC7.MessageDistanceCalculationFailure')
)
diff --git a/module/scripts/register-settings.js b/module/scripts/register-settings.js
index c843164a..d0c76308 100644
--- a/module/scripts/register-settings.js
+++ b/module/scripts/register-settings.js
@@ -223,6 +223,14 @@ export function registerSettings () {
default: true,
type: Boolean
})
+ game.settings.register('CoC7', 'distanceTheatreOfTheMind', {
+ name: 'SETTINGS.SceneDistanceNotCalcualtedNoError',
+ hint: 'SETTINGS.SceneDistanceNotCalcualtedNoErrorHint',
+ scope: 'world',
+ config: true,
+ default: false,
+ type: Boolean
+ })
/**
* Game Artwork Settings
From da0d4110095fce2f7fe2783fe1cad2a49b75e0c7 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Mon, 6 Nov 2023 18:57:51 +0000
Subject: [PATCH 13/38] Updated translations list
---
.github/TRANSLATIONS.md | 302 ++++++++++++++++++++--------------------
1 file changed, 153 insertions(+), 149 deletions(-)
diff --git a/.github/TRANSLATIONS.md b/.github/TRANSLATIONS.md
index fc77db22..1246dbd5 100644
--- a/.github/TRANSLATIONS.md
+++ b/.github/TRANSLATIONS.md
@@ -2,157 +2,157 @@
Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry VTT better! Below is a list of translations keys on existing files that still need translated, based on `en.json`. Feel free to create a new `*.json` file for a language that is not shown here!
-The **it** translation is currently up to date
-
The following translations have more than 153 untranslated strings **cn**, **cs**, **es**, **ko**, **ru**, **sv**, [are you able to help?](./ABANDONED.md)
-|Key|de|fr|ja|pl|pt-BR|zh-TW|
-|:---|:---:|:---:|:---:|:---:|:---:|:---:|
-|**Remaining**:|**144**|**1**|**3**|**1**|**106**|**5**|
-|[CoC7.CoCIDBatch.summary](#coc7cocidbatchsummary)|❌|✅|✅|✅|❌|✅|
-|[CoC7.CoCIDBatch.title](#coc7cocidbatchtitle)|❌|✅|✅|✅|❌|✅|
-|[CoC7.CoCIDFlag.documents-in-compendiums](#coc7cocidflagdocumentsincompendiums)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.documents-in-world](#coc7cocidflagdocumentsinworld)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.document-not-found](#coc7cocidflagerrordocumentnotfound)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.documents-not-found](#coc7cocidflagerrordocumentsnotfound)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.duplicate](#coc7cocidflagerrorduplicate)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.incorrect.type](#coc7cocidflagerrorincorrecttype)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.unknown-era](#coc7cocidflagerrorunknownera)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.foundry-id](#coc7cocidflagfoundryid)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.foundry-uuid](#coc7cocidflagfoundryuuid)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.get-document-like-this](#coc7cocidflaggetdocumentlikethis)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.get-this-document](#coc7cocidflaggetthisdocument)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.guess](#coc7cocidflagguess)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.id](#coc7cocidflagid)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.key](#coc7cocidflagkey)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.new](#coc7cocidflagnew)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.others](#coc7cocidflagothers)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.priority](#coc7cocidflagpriority)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.summary](#coc7cocidflagsummary)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.title](#coc7cocidflagtitle)|❌|✅|✅|✅|✅|✅|
-|[CoC7.CustomSpecialisationLabel](#coc7customspecialisationlabel)|❌|✅|✅|✅|✅|✅|
-|[CoC7.EraDarkAgesPulp](#coc7eradarkagespulp)|❌|✅|✅|✅|✅|✅|
-|[CoC7.EraDownDarkerTrailsPulp](#coc7eradowndarkertrailspulp)|❌|✅|✅|✅|✅|✅|
-|[CoC7.EraModernPulp](#coc7eramodernpulp)|❌|✅|✅|✅|✅|✅|
-|[CoC7.EraRegency](#coc7eraregency)|❌|✅|✅|✅|❌|❌|
-|[CoC7.EraRegencyPulp](#coc7eraregencypulp)|❌|✅|✅|✅|❌|❌|
-|[CoC7.ErrorTokenIncorrect](#coc7errortokenincorrect)|❌|✅|❌|✅|❌|❌|
-|[CoC7.InvestigatorWizard.AddBonusPointsToSkills](#coc7investigatorwizardaddbonuspointstoskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.AgeRange](#coc7investigatorwizardagerange)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.AllowRerolls](#coc7investigatorwizardallowrerolls)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeCounts](#coc7investigatorwizardarchetypecounts)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeDefaultSkills](#coc7investigatorwizardarchetypedefaultskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeOptionalSkills](#coc7investigatorwizardarchetypeoptionalskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypePage](#coc7investigatorwizardarchetypepage)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeSelect](#coc7investigatorwizardarchetypeselect)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Archetypes](#coc7investigatorwizardarchetypes)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.BackStep](#coc7investigatorwizardbackstep)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ChangingEraDelay](#coc7investigatorwizardchangingeradelay)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CharacterAvatarImage](#coc7investigatorwizardcharacteravatarimage)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CharacterTokenImage](#coc7investigatorwizardcharactertokenimage)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CharacteristicDragInformation](#coc7investigatorwizardcharacteristicdraginformation)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Characteristics](#coc7investigatorwizardcharacteristics)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CoreCharacteristicName](#coc7investigatorwizardcorecharacteristicname)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CoreCharacteristicSelect](#coc7investigatorwizardcorecharacteristicselect)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CreateInstructions](#coc7investigatorwizardcreateinstructions)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CreateStep](#coc7investigatorwizardcreatestep)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CreatingInvestigator](#coc7investigatorwizardcreatinginvestigator)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.DeductPointsFromCharacteristics](#coc7investigatorwizarddeductpointsfromcharacteristics)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.EnforcePointBuy](#coc7investigatorwizardenforcepointbuy)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Introduction](#coc7investigatorwizardintroduction)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.IntroductionKeeper](#coc7investigatorwizardintroductionkeeper)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.MakeEDUImprovementCheck](#coc7investigatorwizardmakeeduimprovementcheck)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.MakeEDUImprovementChecks](#coc7investigatorwizardmakeeduimprovementchecks)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.NextStep](#coc7investigatorwizardnextstep)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationCounts](#coc7investigatorwizardoccupationcounts)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationCreditRating](#coc7investigatorwizardoccupationcreditrating)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationDefaultSkills](#coc7investigatorwizardoccupationdefaultskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationPage](#coc7investigatorwizardoccupationpage)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationPersonalThisMany](#coc7investigatorwizardoccupationpersonalthismany)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationPickThisMany](#coc7investigatorwizardoccupationpickthismany)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationSelect](#coc7investigatorwizardoccupationselect)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationSkillPoints](#coc7investigatorwizardoccupationskillpoints)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationSkills](#coc7investigatorwizardoccupationskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Occupations](#coc7investigatorwizardoccupations)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OtherPlayerOwnership](#coc7investigatorwizardotherplayerownership)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.PlayerEnabled](#coc7investigatorwizardplayerenabled)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.PlayerQuantity](#coc7investigatorwizardplayerquantity)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.QuickFireValues](#coc7investigatorwizardquickfirevalues)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ReducePointsFromCharacteristic](#coc7investigatorwizardreducepointsfromcharacteristic)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.RollTwiceForLuck](#coc7investigatorwizardrolltwiceforluck)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupAny](#coc7investigatorwizardsetupany)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupCounts](#coc7investigatorwizardsetupcounts)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupPage](#coc7investigatorwizardsetuppage)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupSelect](#coc7investigatorwizardsetupselect)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Setups](#coc7investigatorwizardsetups)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendArchetypeCountIncorrect](#coc7investigatorwizardskillspendarchetypecountincorrect)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendArchetypePoints](#coc7investigatorwizardskillspendarchetypepoints)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendInterestPoints](#coc7investigatorwizardskillspendinterestpoints)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendOccupationCountIncorrect](#coc7investigatorwizardskillspendoccupationcountincorrect)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendOccupationPoints](#coc7investigatorwizardskillspendoccupationpoints)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SuggestedOccupations](#coc7investigatorwizardsuggestedoccupations)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SuggestedTraits](#coc7investigatorwizardsuggestedtraits)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Title](#coc7investigatorwizardtitle)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleAdjustCharacteristics](#coc7investigatorwizardtitleadjustcharacteristics)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleArchetypeSkills](#coc7investigatorwizardtitlearchetypeskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleAttributes](#coc7investigatorwizardtitleattributes)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleBackstory](#coc7investigatorwizardtitlebackstory)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleCharacteristics](#coc7investigatorwizardtitlecharacteristics)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleCreate](#coc7investigatorwizardtitlecreate)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleDetails](#coc7investigatorwizardtitledetails)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleKeeperConfiguration](#coc7investigatorwizardtitlekeeperconfiguration)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleOccupationSkills](#coc7investigatorwizardtitleoccupationskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitlePointsSkills](#coc7investigatorwizardtitlepointsskills)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleSelectArchetype](#coc7investigatorwizardtitleselectarchetype)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleSelectOccupation](#coc7investigatorwizardtitleselectoccupation)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleSelectSetup](#coc7investigatorwizardtitleselectsetup)|❌|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.UseSetupMethod](#coc7investigatorwizardusesetupmethod)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryCreditRatingMax](#coc7monetarycreditratingmax)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryCreditRatingMin](#coc7monetarycreditratingmin)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultAverage](#coc7monetarydefaultaverage)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultPenniless](#coc7monetarydefaultpenniless)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultPoor](#coc7monetarydefaultpoor)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultRich](#coc7monetarydefaultrich)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultSuperRich](#coc7monetarydefaultsuperrich)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultWealthy](#coc7monetarydefaultwealthy)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatDecimalLeft](#coc7monetaryformatdecimalleft)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatDecimalRight](#coc7monetaryformatdecimalright)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatIntegerLeft](#coc7monetaryformatintegerleft)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatIntegerRight](#coc7monetaryformatintegerright)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatLsd](#coc7monetaryformatlsd)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatRoman](#coc7monetaryformatroman)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatTitle](#coc7monetaryformattitle)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTitle](#coc7monetarytitle)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeAsses](#coc7monetarytypeasses)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeCreditRating](#coc7monetarytypecreditrating)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeDenarii](#coc7monetarytypedenarii)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeDeniers](#coc7monetarytypedeniers)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeNone](#coc7monetarytypenone)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeOne](#coc7monetarytypeone)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeQuinarii](#coc7monetarytypequinarii)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeSestertii](#coc7monetarytypesestertii)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeSous](#coc7monetarytypesous)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryValueAssets](#coc7monetaryvalueassets)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryValueCash](#coc7monetaryvaluecash)|❌|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryValueSpendingLevel](#coc7monetaryvaluespendinglevel)|❌|✅|✅|✅|❌|✅|
-|[CoC7.SanityLossType](#coc7sanitylosstype)|❌|✅|❌|✅|❌|❌|
-|[CoC7.Settings.DropCoCID.Dialog](#coc7settingsdropcociddialog)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Hint](#coc7settingsdropcocidhint)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.IgnoreCoCID](#coc7settingsdropcocidignorecocid)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Name](#coc7settingsdropcocidname)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Prompt](#coc7settingsdropcocidprompt)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Remember](#coc7settingsdropcocidremember)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.UseCoCID](#coc7settingsdropcocidusecocid)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint](#coc7settingspulprulesignoreagepenaltieshint)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Name](#coc7settingspulprulesignoreagepenaltiesname)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.WorldEra.Hint](#coc7settingsworlderahint)|❌|✅|✅|✅|✅|✅|
-|[CoC7.Settings.WorldEra.Name](#coc7settingsworlderaname)|❌|✅|✅|✅|✅|✅|
-|[CoC7.SkillKeepBaseValue](#coc7skillkeepbasevalue)|❌|✅|✅|✅|✅|✅|
-|[CoC7.SkillPickNameOnly](#coc7skillpicknameonly)|❌|✅|✅|✅|✅|✅|
-|[CoC7.SkillRarityShort](#coc7skillrarityshort)|❌|✅|✅|✅|✅|✅|
-|[CoC7.SkillRequiresName](#coc7skillrequiresname)|❌|✅|✅|✅|✅|✅|
-|[CoC7.SkillSpecializationIsUnique](#coc7skillspecializationisunique)|❌|✅|✅|✅|❌|✅|
-|[CoC7.System.Documentation](#coc7systemdocumentation)|❌|❌|❌|❌|❌|❌|
+|Key|de|fr|it|ja|pl|pt-BR|zh-TW|
+|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
+|**Remaining**:|**146**|**3**|**2**|**5**|**3**|**108**|**7**|
+|[CoC7.CoCIDBatch.summary](#coc7cocidbatchsummary)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.CoCIDBatch.title](#coc7cocidbatchtitle)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.CoCIDFlag.documents-in-compendiums](#coc7cocidflagdocumentsincompendiums)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.documents-in-world](#coc7cocidflagdocumentsinworld)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.document-not-found](#coc7cocidflagerrordocumentnotfound)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.documents-not-found](#coc7cocidflagerrordocumentsnotfound)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.duplicate](#coc7cocidflagerrorduplicate)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.incorrect.type](#coc7cocidflagerrorincorrecttype)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.error.unknown-era](#coc7cocidflagerrorunknownera)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.foundry-id](#coc7cocidflagfoundryid)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.foundry-uuid](#coc7cocidflagfoundryuuid)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.get-document-like-this](#coc7cocidflaggetdocumentlikethis)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.get-this-document](#coc7cocidflaggetthisdocument)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.guess](#coc7cocidflagguess)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.id](#coc7cocidflagid)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.key](#coc7cocidflagkey)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.new](#coc7cocidflagnew)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.others](#coc7cocidflagothers)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.priority](#coc7cocidflagpriority)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.summary](#coc7cocidflagsummary)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CoCIDFlag.title](#coc7cocidflagtitle)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.CustomSpecialisationLabel](#coc7customspecialisationlabel)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.EraDarkAgesPulp](#coc7eradarkagespulp)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.EraDownDarkerTrailsPulp](#coc7eradowndarkertrailspulp)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.EraModernPulp](#coc7eramodernpulp)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.EraRegency](#coc7eraregency)|❌|✅|✅|✅|✅|❌|❌|
+|[CoC7.EraRegencyPulp](#coc7eraregencypulp)|❌|✅|✅|✅|✅|❌|❌|
+|[CoC7.ErrorTokenIncorrect](#coc7errortokenincorrect)|❌|✅|✅|❌|✅|❌|❌|
+|[CoC7.InvestigatorWizard.AddBonusPointsToSkills](#coc7investigatorwizardaddbonuspointstoskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.AgeRange](#coc7investigatorwizardagerange)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.AllowRerolls](#coc7investigatorwizardallowrerolls)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypeCounts](#coc7investigatorwizardarchetypecounts)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypeDefaultSkills](#coc7investigatorwizardarchetypedefaultskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypeOptionalSkills](#coc7investigatorwizardarchetypeoptionalskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypePage](#coc7investigatorwizardarchetypepage)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ArchetypeSelect](#coc7investigatorwizardarchetypeselect)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Archetypes](#coc7investigatorwizardarchetypes)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.BackStep](#coc7investigatorwizardbackstep)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ChangingEraDelay](#coc7investigatorwizardchangingeradelay)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CharacterAvatarImage](#coc7investigatorwizardcharacteravatarimage)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CharacterTokenImage](#coc7investigatorwizardcharactertokenimage)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CharacteristicDragInformation](#coc7investigatorwizardcharacteristicdraginformation)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Characteristics](#coc7investigatorwizardcharacteristics)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CoreCharacteristicName](#coc7investigatorwizardcorecharacteristicname)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CoreCharacteristicSelect](#coc7investigatorwizardcorecharacteristicselect)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CreateInstructions](#coc7investigatorwizardcreateinstructions)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CreateStep](#coc7investigatorwizardcreatestep)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.CreatingInvestigator](#coc7investigatorwizardcreatinginvestigator)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.DeductPointsFromCharacteristics](#coc7investigatorwizarddeductpointsfromcharacteristics)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.EnforcePointBuy](#coc7investigatorwizardenforcepointbuy)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Introduction](#coc7investigatorwizardintroduction)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.IntroductionKeeper](#coc7investigatorwizardintroductionkeeper)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.MakeEDUImprovementCheck](#coc7investigatorwizardmakeeduimprovementcheck)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.MakeEDUImprovementChecks](#coc7investigatorwizardmakeeduimprovementchecks)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.NextStep](#coc7investigatorwizardnextstep)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationCounts](#coc7investigatorwizardoccupationcounts)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationCreditRating](#coc7investigatorwizardoccupationcreditrating)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationDefaultSkills](#coc7investigatorwizardoccupationdefaultskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationPage](#coc7investigatorwizardoccupationpage)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationPersonalThisMany](#coc7investigatorwizardoccupationpersonalthismany)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationPickThisMany](#coc7investigatorwizardoccupationpickthismany)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationSelect](#coc7investigatorwizardoccupationselect)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationSkillPoints](#coc7investigatorwizardoccupationskillpoints)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OccupationSkills](#coc7investigatorwizardoccupationskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Occupations](#coc7investigatorwizardoccupations)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.OtherPlayerOwnership](#coc7investigatorwizardotherplayerownership)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.PlayerEnabled](#coc7investigatorwizardplayerenabled)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.PlayerQuantity](#coc7investigatorwizardplayerquantity)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.QuickFireValues](#coc7investigatorwizardquickfirevalues)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.ReducePointsFromCharacteristic](#coc7investigatorwizardreducepointsfromcharacteristic)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.RollTwiceForLuck](#coc7investigatorwizardrolltwiceforluck)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SetupAny](#coc7investigatorwizardsetupany)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SetupCounts](#coc7investigatorwizardsetupcounts)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SetupPage](#coc7investigatorwizardsetuppage)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SetupSelect](#coc7investigatorwizardsetupselect)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Setups](#coc7investigatorwizardsetups)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendArchetypeCountIncorrect](#coc7investigatorwizardskillspendarchetypecountincorrect)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendArchetypePoints](#coc7investigatorwizardskillspendarchetypepoints)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendInterestPoints](#coc7investigatorwizardskillspendinterestpoints)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendOccupationCountIncorrect](#coc7investigatorwizardskillspendoccupationcountincorrect)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SkillSpendOccupationPoints](#coc7investigatorwizardskillspendoccupationpoints)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SuggestedOccupations](#coc7investigatorwizardsuggestedoccupations)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.SuggestedTraits](#coc7investigatorwizardsuggestedtraits)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.Title](#coc7investigatorwizardtitle)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleAdjustCharacteristics](#coc7investigatorwizardtitleadjustcharacteristics)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleArchetypeSkills](#coc7investigatorwizardtitlearchetypeskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleAttributes](#coc7investigatorwizardtitleattributes)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleBackstory](#coc7investigatorwizardtitlebackstory)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleCharacteristics](#coc7investigatorwizardtitlecharacteristics)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleCreate](#coc7investigatorwizardtitlecreate)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleDetails](#coc7investigatorwizardtitledetails)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleKeeperConfiguration](#coc7investigatorwizardtitlekeeperconfiguration)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleOccupationSkills](#coc7investigatorwizardtitleoccupationskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitlePointsSkills](#coc7investigatorwizardtitlepointsskills)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleSelectArchetype](#coc7investigatorwizardtitleselectarchetype)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleSelectOccupation](#coc7investigatorwizardtitleselectoccupation)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.TitleSelectSetup](#coc7investigatorwizardtitleselectsetup)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.InvestigatorWizard.UseSetupMethod](#coc7investigatorwizardusesetupmethod)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryCreditRatingMax](#coc7monetarycreditratingmax)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryCreditRatingMin](#coc7monetarycreditratingmin)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultAverage](#coc7monetarydefaultaverage)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultPenniless](#coc7monetarydefaultpenniless)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultPoor](#coc7monetarydefaultpoor)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultRich](#coc7monetarydefaultrich)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultSuperRich](#coc7monetarydefaultsuperrich)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryDefaultWealthy](#coc7monetarydefaultwealthy)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatDecimalLeft](#coc7monetaryformatdecimalleft)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatDecimalRight](#coc7monetaryformatdecimalright)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatIntegerLeft](#coc7monetaryformatintegerleft)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatIntegerRight](#coc7monetaryformatintegerright)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatLsd](#coc7monetaryformatlsd)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatRoman](#coc7monetaryformatroman)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryFormatTitle](#coc7monetaryformattitle)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTitle](#coc7monetarytitle)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeAsses](#coc7monetarytypeasses)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeCreditRating](#coc7monetarytypecreditrating)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeDenarii](#coc7monetarytypedenarii)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeDeniers](#coc7monetarytypedeniers)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeNone](#coc7monetarytypenone)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeOne](#coc7monetarytypeone)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeQuinarii](#coc7monetarytypequinarii)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeSestertii](#coc7monetarytypesestertii)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryTypeSous](#coc7monetarytypesous)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryValueAssets](#coc7monetaryvalueassets)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryValueCash](#coc7monetaryvaluecash)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.MonetaryValueSpendingLevel](#coc7monetaryvaluespendinglevel)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.SanityLossType](#coc7sanitylosstype)|❌|✅|✅|❌|✅|❌|❌|
+|[CoC7.Settings.DropCoCID.Dialog](#coc7settingsdropcociddialog)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.Hint](#coc7settingsdropcocidhint)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.IgnoreCoCID](#coc7settingsdropcocidignorecocid)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.Name](#coc7settingsdropcocidname)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.Prompt](#coc7settingsdropcocidprompt)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.Remember](#coc7settingsdropcocidremember)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.DropCoCID.UseCoCID](#coc7settingsdropcocidusecocid)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint](#coc7settingspulprulesignoreagepenaltieshint)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Name](#coc7settingspulprulesignoreagepenaltiesname)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.WorldEra.Hint](#coc7settingsworlderahint)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.Settings.WorldEra.Name](#coc7settingsworlderaname)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.SkillKeepBaseValue](#coc7skillkeepbasevalue)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.SkillPickNameOnly](#coc7skillpicknameonly)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.SkillRarityShort](#coc7skillrarityshort)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.SkillRequiresName](#coc7skillrequiresname)|❌|✅|✅|✅|✅|✅|✅|
+|[CoC7.SkillSpecializationIsUnique](#coc7skillspecializationisunique)|❌|✅|✅|✅|✅|❌|✅|
+|[CoC7.System.Documentation](#coc7systemdocumentation)|❌|❌|✅|❌|❌|❌|❌|
+|[SETTINGS.SceneDistanceNotCalcualtedNoError](#settingsscenedistancenotcalcualtednoerror)|❌|❌|❌|❌|❌|❌|❌|
+|[SETTINGS.SceneDistanceNotCalcualtedNoErrorHint](#settingsscenedistancenotcalcualtednoerrorhint)|❌|❌|❌|❌|❌|❌|❌|
##### CoC7.CoCIDBatch.summary
``` "CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",```
##### CoC7.CoCIDBatch.title
@@ -441,3 +441,7 @@ The following translations have more than 153 untranslated strings **cn**, **cs*
``` "CoC7.SkillSpecializationIsUnique": "Unique Specialization",```
##### CoC7.System.Documentation
``` "CoC7.System.Documentation": "View CoC7 System Manual",```
+##### SETTINGS.SceneDistanceNotCalcualtedNoError
+``` "SETTINGS.SceneDistanceNotCalcualtedNoError": "Don't show error for ranged distance",```
+##### SETTINGS.SceneDistanceNotCalcualtedNoErrorHint
+``` "SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "When starting a ranged combat if playing theatre of the mind do not show the unable to calculate distance message.",```
From 30f6a51bd27a9cd60e37d1e9b5e6d631fbe23795 Mon Sep 17 00:00:00 2001
From: snap01
Date: Mon, 6 Nov 2023 18:57:52 +0000
Subject: [PATCH 14/38] [create-pull-request] automated change
---
.github/ABANDONED.md | 36 ++++++++++++++++++++++++------------
1 file changed, 24 insertions(+), 12 deletions(-)
diff --git a/.github/ABANDONED.md b/.github/ABANDONED.md
index c13ff308..ff111e38 100644
--- a/.github/ABANDONED.md
+++ b/.github/ABANDONED.md
@@ -2,21 +2,21 @@
Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry VTT better! Below is a list of translations keys on existing files that still need translated, based on `en.json`.
-[cn.json (376 untranslated strings)](#cnjson)
+[cn.json (378 untranslated strings)](#cnjson)
-[cs.json (561 untranslated strings)](#csjson)
+[cs.json (563 untranslated strings)](#csjson)
-[es.json (358 untranslated strings)](#esjson)
+[es.json (360 untranslated strings)](#esjson)
-[ko.json (158 untranslated strings)](#kojson)
+[ko.json (160 untranslated strings)](#kojson)
-[ru.json (1223 untranslated strings)](#rujson)
+[ru.json (1225 untranslated strings)](#rujson)
-[sv.json (344 untranslated strings)](#svjson)
+[sv.json (346 untranslated strings)](#svjson)
## cn.json
-376 untranslated strings
+378 untranslated strings
```
"CoC7.ActorIsTokenHint": "Actor is a token",
"CoC7.ActorDataLinked": "Actor data are linked",
@@ -301,6 +301,8 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"SETTINGS.ChaseShowTokenMovementHint": "Show movement on the grid when a token is moved to the next location.",
"SETTINGS.UseContextMenus": "Use context menus",
"SETTINGS.UseContextMenusHint": "[EXPERIMENTAL] Use context menus for rolls instead of key combination.",
+"SETTINGS.SceneDistanceNotCalcualtedNoError": "Don't show error for ranged distance",
+"SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "When starting a ranged combat if playing theatre of the mind do not show the unable to calculate distance message.",
"CoC7.EffectNew": "New effect",
"CoC7.EffectAppliedCantOverride": "An active effect is applies. You can't modify [{name}]. Deactivate the corresponding effect to modify this value.",
"CoC7.InvestigatorWizard.Title": "Investigator Creation Wizard",
@@ -396,7 +398,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
```
## cs.json
-561 untranslated strings
+563 untranslated strings
```
"CoC7.Entities.Character": "Character",
"CoC7.Entities.Container": "Container",
@@ -863,6 +865,8 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"SETTINGS.ChaseShowTokenMovementHint": "Show movement on the grid when a token is moved to the next location.",
"SETTINGS.UseContextMenus": "Use context menus",
"SETTINGS.UseContextMenusHint": "[EXPERIMENTAL] Use context menus for rolls instead of key combination.",
+"SETTINGS.SceneDistanceNotCalcualtedNoError": "Don't show error for ranged distance",
+"SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "When starting a ranged combat if playing theatre of the mind do not show the unable to calculate distance message.",
"CoC7.getTheExample": "Copy Example",
"CoC7.Copied": "Copied the Example Text to Clipboard",
"CoC7.EffectNew": "New effect",
@@ -961,7 +965,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
```
## es.json
-358 untranslated strings
+360 untranslated strings
```
"CoC7.ActorIsTokenHint": "Actor is a token",
"CoC7.ActorDataLinked": "Actor data are linked",
@@ -1228,6 +1232,8 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"SETTINGS.ChaseShowTokenMovementHint": "Show movement on the grid when a token is moved to the next location.",
"SETTINGS.UseContextMenus": "Use context menus",
"SETTINGS.UseContextMenusHint": "[EXPERIMENTAL] Use context menus for rolls instead of key combination.",
+"SETTINGS.SceneDistanceNotCalcualtedNoError": "Don't show error for ranged distance",
+"SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "When starting a ranged combat if playing theatre of the mind do not show the unable to calculate distance message.",
"CoC7.EffectNew": "New effect",
"CoC7.EffectAppliedCantOverride": "An active effect is applies. You can't modify [{name}]. Deactivate the corresponding effect to modify this value.",
"CoC7.InvestigatorWizard.Title": "Investigator Creation Wizard",
@@ -1323,7 +1329,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
```
## ko.json
-158 untranslated strings
+160 untranslated strings
```
"CoC7.CustomSpecialisationLabel": "Custom label - {specialisation}",
"CoC7.RollDifficultyRegularTitle": "Regular difficulty",
@@ -1392,6 +1398,8 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.Settings.DropCoCID.UseCoCID": "Use CoC ID Where Possible",
"CoC7.Settings.DropCoCID.IgnoreCoCID": "Do Not Use CoC ID",
"SETTINGS.DefaultDifficulty": "Default check difficulty",
+"SETTINGS.SceneDistanceNotCalcualtedNoError": "Don't show error for ranged distance",
+"SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "When starting a ranged combat if playing theatre of the mind do not show the unable to calculate distance message.",
"CoC7.InvestigatorWizard.Title": "Investigator Creation Wizard",
"CoC7.InvestigatorWizard.TitleKeeperConfiguration": "Keeper Configuration",
"CoC7.InvestigatorWizard.TitleSelectSetup": "Investigator Setup",
@@ -1485,7 +1493,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
```
## ru.json
-1223 untranslated strings
+1225 untranslated strings
```
"CoC7.title": "Call of Cthulhu 7h Edition",
"CoC7.Entities.Character": "Character",
@@ -2611,6 +2619,8 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"SETTINGS.ChaseShowTokenMovementHint": "Show movement on the grid when a token is moved to the next location.",
"SETTINGS.UseContextMenus": "Use context menus",
"SETTINGS.UseContextMenusHint": "[EXPERIMENTAL] Use context menus for rolls instead of key combination.",
+"SETTINGS.SceneDistanceNotCalcualtedNoError": "Don't show error for ranged distance",
+"SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "When starting a ranged combat if playing theatre of the mind do not show the unable to calculate distance message.",
"CoC7.getTheExample": "Copy Example",
"CoC7.Copied": "Copied the Example Text to Clipboard",
"CoC7.EffectNew": "New effect",
@@ -2712,7 +2722,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
```
## sv.json
-344 untranslated strings
+346 untranslated strings
```
"CoC7.ActorIsTokenHint": "Actor is a token",
"CoC7.ActorDataLinked": "Actor data are linked",
@@ -2965,6 +2975,8 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"SETTINGS.ChaseShowTokenMovementHint": "Show movement on the grid when a token is moved to the next location.",
"SETTINGS.UseContextMenus": "Use context menus",
"SETTINGS.UseContextMenusHint": "[EXPERIMENTAL] Use context menus for rolls instead of key combination.",
+"SETTINGS.SceneDistanceNotCalcualtedNoError": "Don't show error for ranged distance",
+"SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "When starting a ranged combat if playing theatre of the mind do not show the unable to calculate distance message.",
"CoC7.EffectNew": "New effect",
"CoC7.EffectAppliedCantOverride": "An active effect is applies. You can't modify [{name}]. Deactivate the corresponding effect to modify this value.",
"CoC7.InvestigatorWizard.Title": "Investigator Creation Wizard",
From 05cfbd7c2217479fc06262153302b5415b04131f Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Mon, 6 Nov 2023 18:59:23 +0000
Subject: [PATCH 15/38] Update CHANGELOG.md
---
.github/CHANGELOG.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index 5e3734bd..ecdee64e 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -10,7 +10,9 @@ Happy gaming !
When not specified, all changes were made by @castanhocorreia, @HavlockV, and @snap01.
- Fix dholehouse importer for characters with a single item on their possesions. Fixes #1423, thanks to @pconcepcion #1424
+- Fix targeting system not being able to calculate distance from the minimized sheet #1426
- Add system manual button to Game Settings sidebar tab
+- Add system setting to not trigger an error message for ranged token distance calculations if playing theatre of the mind
- Update to French localization, thanks to @vonv #1415
- Update to Italian localization, thanks to @Stefano1975t #1419 and #1422
From 71a0887d5c9e473341c1f632a646608b1b436346 Mon Sep 17 00:00:00 2001
From: Stefano1975t <97825580+Stefano1975t@users.noreply.github.com>
Date: Tue, 7 Nov 2023 09:40:18 +0100
Subject: [PATCH 16/38] Update it.json
---
lang/it.json | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lang/it.json b/lang/it.json
index ebd9dafc..264eccd4 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -1192,6 +1192,8 @@
"SETTINGS.ChaseShowTokenMovementHint": "Mostra movimento sulla griglia quando una pedina viene mossa nel luogo successivo.",
"SETTINGS.UseContextMenus": "Usa menu contestuali",
"SETTINGS.UseContextMenusHint": "[SPERIMENTALE] Usa i menu contestuali per i tiri invece della combinazione di tasti.",
+ "SETTINGS.SceneDistanceNotCalcualtedNoError": "Non mostrare un errore per la distanza",
+ "SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "Quando si inizia un combattimento a distanza, e si sta usando il teatro della mente, non viene mostrato il messaggio sull'impossibilità di calcolare la distanza.",
"CoC7.getTheExample": "Copia Esempio",
"CoC7.Copied": "Copiato il testo di esempio negli Appunti",
From c5d67f306f36223f327ea44fd776910525359ef2 Mon Sep 17 00:00:00 2001
From: HavlockV <65915923+HavlockV@users.noreply.github.com>
Date: Fri, 10 Nov 2023 11:33:41 +0100
Subject: [PATCH 17/38] Compendium editable, prompt token creation, bufix
---
lang/en.json | 7 +++++-
module/actors/actor.js | 28 ++++++++++++++++------
module/actors/sheets/base.js | 44 ++++++++++++++++++----------------
module/hooks/index.js | 2 ++
module/hooks/token-creation.js | 33 +++++++++++++++++++++++++
5 files changed, 86 insertions(+), 28 deletions(-)
create mode 100644 module/hooks/token-creation.js
diff --git a/lang/en.json b/lang/en.json
index 1b6ef473..5852de04 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -1293,5 +1293,10 @@
"CoC7.CoCIDFlag.error.documents-not-found": "Documents were not found in world or Compendia matching the CoC IDs ({cocids}), language \"{lang}\", and era \"{era}\". Please check your Era for the world setting.",
"CoC7.CoCIDBatch.title": "Batch set System ID (CoC ID)",
- "CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
+ "CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",
+
+ "CoC7.TokenCreationRoll.Title": "Rollable detected",
+ "CoC7.TokenCreationRoll.Prompt": "This token has rollables characteristics or skills. What do you want to do ?",
+ "CoC7.TokenCreationRoll.ButtonRoll": "Roll all",
+ "CoC7.TokenCreationRoll.ButtonAverage": "Average all"
}
diff --git a/module/actors/actor.js b/module/actors/actor.js
index 5e2b283a..14d6fdb3 100644
--- a/module/actors/actor.js
+++ b/module/actors/actor.js
@@ -1623,13 +1623,13 @@ export class CoCActor extends Actor {
return this.items.find(i => i.flags?.CoC7?.cocidFlag?.id === cocid)
}
- parseFormula (formula) {
- let parsedFormula = formula
- for (const [key, value] of Object.entries(COC7.formula.actor)) {
- parsedFormula = parsedFormula.replace(key, value)
- }
- return parsedFormula
- }
+ // parseFormula (formula) {
+ // let parsedFormula = formula
+ // for (const [key, value] of Object.entries(COC7.formula.actor)) {
+ // parsedFormula = parsedFormula.replace(key, value)
+ // }
+ // return parsedFormula
+ // }
parseCharacteristics () {
const parsed = {}
@@ -2802,6 +2802,20 @@ export class CoCActor extends Actor {
return game.actors.get(key) || null
}
+ get hasRollableCharacteristics () {
+ for (const [, value] of Object.entries(this.system.characteristics)) {
+ if (isNaN(Number(value.formula))) return true
+ }
+ return false
+ }
+
+ get hosRollableSkills () {
+ for (const skill of this.skills) {
+ if (isNaN(skill.system?.value)) return true
+ }
+ return false
+ }
+
/**
* Use the formula if available to roll some characteritics.
*/
diff --git a/module/actors/sheets/base.js b/module/actors/sheets/base.js
index 6b5c5ad1..eb958844 100644
--- a/module/actors/sheets/base.js
+++ b/module/actors/sheets/base.js
@@ -1,4 +1,4 @@
-/* global $, ActorSheet, ChatMessage, CONST, Dialog, FormData, foundry, game, getProperty, Hooks, Item, mergeObject, Roll, TextEditor, ui */
+/* global $, ActorSheet, ChatMessage, CONST, Dialog, FormData, foundry, game, getProperty, Hooks, mergeObject, Roll, TextEditor, ui */
import { addCoCIDSheetHeaderButton } from '../../scripts/coc-id-button.js'
import { RollDialog } from '../../apps/roll-dialog.js'
import { CoC7ChatMessage } from '../../apps/coc7-chat-message.js'
@@ -475,13 +475,13 @@ export class CoC7ActorSheet extends ActorSheet {
}
/* -------------------------------------------- */
- static parseFormula (formula) {
- let parsedFormula = formula
- for (const [key, value] of Object.entries(COC7.formula.actorsheet)) {
- parsedFormula = parsedFormula.replace(key, value)
- }
- return parsedFormula
- }
+ // static parseFormula (formula) {
+ // let parsedFormula = formula
+ // for (const [key, value] of Object.entries(COC7.formula.actorsheet)) {
+ // parsedFormula = parsedFormula.replace(key, value)
+ // }
+ // return parsedFormula
+ // }
get tokenKey () {
ui.notifications.error('DEPRECATED SHOULD NOT HAPPEN!')
@@ -606,6 +606,13 @@ export class CoC7ActorSheet extends ActorSheet {
.on('dragstart', this._onDragTokenStart.bind(this))
// Owner Only Listeners
+ if (this.actor.isOwner) {
+ html.find('.lock').click(this._onLockClicked.bind(this))
+ html.find('.flag').click(this._onFlagClicked.bind(this))
+ html.find('.formula').click(this._onFormulaClicked.bind(this))
+ }
+
+ // Owner Only, not available from compendium
if (this.actor.isOwner && typeof this.actor.compendium === 'undefined') {
html
.find('.characteristic-label')
@@ -621,9 +628,6 @@ export class CoC7ActorSheet extends ActorSheet {
.find('.weapon-name.rollable')
.contextmenu(this._onOpposedRoll.bind(this))
- html.find('.lock').click(this._onLockClicked.bind(this))
- html.find('.flag').click(this._onFlagClicked.bind(this))
- html.find('.formula').click(this._onFormulaClicked.bind(this))
html
.find('.roll-characteritics')
.click(this._onRollCharacteriticsValue.bind(this))
@@ -830,10 +834,10 @@ export class CoC7ActorSheet extends ActorSheet {
*/
html.find('.test-trigger').click(async event => {
if (!game.settings.get('CoC7', 'hiddendevmenu')) return null
- await Item.create({
- name: '__CoC7InternalItem__',
- type: 'item'
- })
+ // await Item.create({
+ // name: '__CoC7InternalItem__',
+ // type: 'item'
+ // })
// const effects = await item.createEmbeddedDocuments('ActiveEffect', [
// {
// label: game.i18n.localize('CoC7.EffectNew'),
@@ -846,7 +850,7 @@ export class CoC7ActorSheet extends ActorSheet {
// const effect = effects[0]
// await effect.sheet.render(true)
// ui.notifications.info( 'effect created !')
- ui.notifications.info('effect created !')
+ // ui.notifications.info('effect created !')
})
html
@@ -1227,9 +1231,9 @@ export class CoC7ActorSheet extends ActorSheet {
const box = event.currentTarget.parentElement
const data = {
CoC7Type: 'link',
- linkType: 'coc7-link',
+ linkType: 'characteristic',
check: 'check',
- type: 'characteristic',
+ type: 'CoC7Link',
hasPlayerOwner: this.actor.hasPlayerOwner,
actorKey: this.actor.actorKey,
name: box.dataset.characteristic,
@@ -1247,9 +1251,9 @@ export class CoC7ActorSheet extends ActorSheet {
const box = event.currentTarget.parentElement
const data = {
CoC7Type: 'link',
- linkType: 'coc7-link',
+ linkType: 'attribute',
check: 'check',
- type: 'attribute',
+ type: 'CoC7Link',
hasPlayerOwner: this.actor.hasPlayerOwner,
actorKey: this.actor.actorKey,
name: box.dataset.attrib,
diff --git a/module/hooks/index.js b/module/hooks/index.js
index c1c163bb..112e9707 100644
--- a/module/hooks/index.js
+++ b/module/hooks/index.js
@@ -9,6 +9,7 @@ import * as RenderItemSheet from './render-item-sheet.js'
import * as RenderPause from './render-pause.js'
import * as RenderPlayerList from './render-player-list.js'
import * as RenderSettingsConfig from './render-settings-config.js'
+import * as TokenCreation from './token-creation.js'
export const CoC7Hooks = {
listen () {
@@ -23,5 +24,6 @@ export const CoC7Hooks = {
DiceSoNiceRollStart.listen()
RenderPlayerList.listen()
RenderSettingsConfig.listen()
+ TokenCreation.listen()
}
}
diff --git a/module/hooks/token-creation.js b/module/hooks/token-creation.js
new file mode 100644
index 00000000..fc225f08
--- /dev/null
+++ b/module/hooks/token-creation.js
@@ -0,0 +1,33 @@
+/* global Hooks, Dialog, game */
+export function listen () {
+ Hooks.on('createToken', async (tokenDocument, options, actorId) => {
+ // Set token icon correctly
+ if (
+ tokenDocument.texture.src === 'icons/svg/mystery-man.svg' &&
+ tokenDocument.texture.src !== tokenDocument._object.actor.img) {
+ tokenDocument.texture.src = tokenDocument._object.actor.img
+ }
+
+ // If there is something to roll ask if we should roll it
+ if (tokenDocument._object.actor.hasRollableCharacteristics || tokenDocument._object.actor.hosRollableSkills) {
+ new Dialog(
+ {
+ title: game.i18n.localize('CoC7.TokenCreationRoll.Title'),
+ content: game.i18n.localize('CoC7.TokenCreationRoll.Prompt'),
+ buttons: {
+ roll: {
+ label: game.i18n.localize('CoC7.TokenCreationRoll.ButtonRoll'),
+ callback: async () => await tokenDocument._object.actor.rollCharacteristicsValue()
+ },
+ average: {
+ label: game.i18n.localize('CoC7.TokenCreationRoll.ButtonAverage'),
+ callback: async () => await tokenDocument._object.actor.averageCharacteristicsValue()
+ },
+ skip: {
+ label: game.i18n.localize('CoC7.Migrate.ButtonSkip')
+ }
+ }
+ }).render(true)
+ }
+ })
+}
From db82dd6bb20ed63fdbf402eec98cad544b0497bb Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Fri, 10 Nov 2023 13:10:04 +0000
Subject: [PATCH 18/38] Fix guessing CoC ID on spells doesn't save on first
attempt.
---
module/items/spell/data.js | 2 +-
styles/sheets/sheet.less | 7 ++-----
2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/module/items/spell/data.js b/module/items/spell/data.js
index 9fbb6170..bb3f93ac 100644
--- a/module/items/spell/data.js
+++ b/module/items/spell/data.js
@@ -182,7 +182,7 @@ export class CoC7Spell extends CoC7Item {
}
this.sheet.render(true)
} else {
- super.update(data, context)
+ await super.update(data, context)
}
}
}
diff --git a/styles/sheets/sheet.less b/styles/sheets/sheet.less
index b01438cf..d474ecdd 100644
--- a/styles/sheets/sheet.less
+++ b/styles/sheets/sheet.less
@@ -54,11 +54,8 @@
}
}
-.sheetV2,
-.sheet {
- .header-button.edit-coc-id-warning {
- color: red;
- }
+.app .header-button.edit-coc-id-warning {
+ color: red;
}
.coc7.sheet {
From cd58f5f171364b2c093e55b25a3331288e73c180 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sat, 11 Nov 2023 12:10:25 +0000
Subject: [PATCH 19/38] Rename hook js file to match kebab case of hook name
Prevent trying to edit an actor in a locked compendium
---
module/actors/sheets/base.js | 2 +-
module/hooks/{token-creation.js => create-token.js} | 0
module/hooks/index.js | 10 +++++-----
3 files changed, 6 insertions(+), 6 deletions(-)
rename module/hooks/{token-creation.js => create-token.js} (100%)
diff --git a/module/actors/sheets/base.js b/module/actors/sheets/base.js
index eb958844..e2c08538 100644
--- a/module/actors/sheets/base.js
+++ b/module/actors/sheets/base.js
@@ -606,7 +606,7 @@ export class CoC7ActorSheet extends ActorSheet {
.on('dragstart', this._onDragTokenStart.bind(this))
// Owner Only Listeners
- if (this.actor.isOwner) {
+ if (this.actor.isOwner && !(this.actor.compendium?.locked ?? false)) {
html.find('.lock').click(this._onLockClicked.bind(this))
html.find('.flag').click(this._onFlagClicked.bind(this))
html.find('.formula').click(this._onFormulaClicked.bind(this))
diff --git a/module/hooks/token-creation.js b/module/hooks/create-token.js
similarity index 100%
rename from module/hooks/token-creation.js
rename to module/hooks/create-token.js
diff --git a/module/hooks/index.js b/module/hooks/index.js
index 112e9707..643aee32 100644
--- a/module/hooks/index.js
+++ b/module/hooks/index.js
@@ -1,6 +1,7 @@
-import * as Init from './init.js'
+import * as CreateToken from './create-token.js'
import * as DiceSoNiceReady from './dice-so-nice-ready.js'
import * as DiceSoNiceRollStart from './dice-so-nice-roll-start.js'
+import * as Init from './init.js'
import * as Ready from './ready.js'
import * as RenderActorSheet from './render-actor-sheet.js'
import * as RenderChatMessage from './render-chat-message.js'
@@ -9,10 +10,12 @@ import * as RenderItemSheet from './render-item-sheet.js'
import * as RenderPause from './render-pause.js'
import * as RenderPlayerList from './render-player-list.js'
import * as RenderSettingsConfig from './render-settings-config.js'
-import * as TokenCreation from './token-creation.js'
export const CoC7Hooks = {
listen () {
+ CreateToken.listen()
+ DiceSoNiceReady.listen()
+ DiceSoNiceRollStart.listen()
Init.listen()
Ready.listen()
RenderActorSheet.listen()
@@ -20,10 +23,7 @@ export const CoC7Hooks = {
RenderDialog.listen()
RenderItemSheet.listen()
RenderPause.listen()
- DiceSoNiceReady.listen()
- DiceSoNiceRollStart.listen()
RenderPlayerList.listen()
RenderSettingsConfig.listen()
- TokenCreation.listen()
}
}
From 68d3e96589d9011546611dccb20b3ad438260b54 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sat, 11 Nov 2023 12:23:16 +0000
Subject: [PATCH 20/38] Updated translations list
---
.github/TRANSLATIONS.md | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/.github/TRANSLATIONS.md b/.github/TRANSLATIONS.md
index 1246dbd5..f0d65c60 100644
--- a/.github/TRANSLATIONS.md
+++ b/.github/TRANSLATIONS.md
@@ -6,7 +6,7 @@ The following translations have more than 153 untranslated strings **cn**, **cs*
|Key|de|fr|it|ja|pl|pt-BR|zh-TW|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
-|**Remaining**:|**146**|**3**|**2**|**5**|**3**|**108**|**7**|
+|**Remaining**:|**150**|**7**|**4**|**9**|**7**|**112**|**11**|
|[CoC7.CoCIDBatch.summary](#coc7cocidbatchsummary)|❌|✅|✅|✅|✅|❌|✅|
|[CoC7.CoCIDBatch.title](#coc7cocidbatchtitle)|❌|✅|✅|✅|✅|❌|✅|
|[CoC7.CoCIDFlag.documents-in-compendiums](#coc7cocidflagdocumentsincompendiums)|❌|✅|✅|✅|✅|✅|✅|
@@ -151,8 +151,12 @@ The following translations have more than 153 untranslated strings **cn**, **cs*
|[CoC7.SkillRequiresName](#coc7skillrequiresname)|❌|✅|✅|✅|✅|✅|✅|
|[CoC7.SkillSpecializationIsUnique](#coc7skillspecializationisunique)|❌|✅|✅|✅|✅|❌|✅|
|[CoC7.System.Documentation](#coc7systemdocumentation)|❌|❌|✅|❌|❌|❌|❌|
-|[SETTINGS.SceneDistanceNotCalcualtedNoError](#settingsscenedistancenotcalcualtednoerror)|❌|❌|❌|❌|❌|❌|❌|
-|[SETTINGS.SceneDistanceNotCalcualtedNoErrorHint](#settingsscenedistancenotcalcualtednoerrorhint)|❌|❌|❌|❌|❌|❌|❌|
+|[CoC7.TokenCreationRoll.ButtonAverage](#coc7tokencreationrollbuttonaverage)|❌|❌|❌|❌|❌|❌|❌|
+|[CoC7.TokenCreationRoll.ButtonRoll](#coc7tokencreationrollbuttonroll)|❌|❌|❌|❌|❌|❌|❌|
+|[CoC7.TokenCreationRoll.Prompt](#coc7tokencreationrollprompt)|❌|❌|❌|❌|❌|❌|❌|
+|[CoC7.TokenCreationRoll.Title](#coc7tokencreationrolltitle)|❌|❌|❌|❌|❌|❌|❌|
+|[SETTINGS.SceneDistanceNotCalcualtedNoError](#settingsscenedistancenotcalcualtednoerror)|❌|❌|✅|❌|❌|❌|❌|
+|[SETTINGS.SceneDistanceNotCalcualtedNoErrorHint](#settingsscenedistancenotcalcualtednoerrorhint)|❌|❌|✅|❌|❌|❌|❌|
##### CoC7.CoCIDBatch.summary
``` "CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",```
##### CoC7.CoCIDBatch.title
@@ -441,6 +445,14 @@ The following translations have more than 153 untranslated strings **cn**, **cs*
``` "CoC7.SkillSpecializationIsUnique": "Unique Specialization",```
##### CoC7.System.Documentation
``` "CoC7.System.Documentation": "View CoC7 System Manual",```
+##### CoC7.TokenCreationRoll.ButtonAverage
+``` "CoC7.TokenCreationRoll.ButtonAverage": "Average all",```
+##### CoC7.TokenCreationRoll.ButtonRoll
+``` "CoC7.TokenCreationRoll.ButtonRoll": "Roll all",```
+##### CoC7.TokenCreationRoll.Prompt
+``` "CoC7.TokenCreationRoll.Prompt": "This token has rollables characteristics or skills. What do you want to do ?",```
+##### CoC7.TokenCreationRoll.Title
+``` "CoC7.TokenCreationRoll.Title": "Rollable detected",```
##### SETTINGS.SceneDistanceNotCalcualtedNoError
``` "SETTINGS.SceneDistanceNotCalcualtedNoError": "Don't show error for ranged distance",```
##### SETTINGS.SceneDistanceNotCalcualtedNoErrorHint
From 4721e70f5a879364a09c33b4a6e5614dbe159735 Mon Sep 17 00:00:00 2001
From: snap01
Date: Sat, 11 Nov 2023 12:23:16 +0000
Subject: [PATCH 21/38] [create-pull-request] automated change
---
.github/ABANDONED.md | 60 +++++++++++++++++++++++++++++++-------------
1 file changed, 42 insertions(+), 18 deletions(-)
diff --git a/.github/ABANDONED.md b/.github/ABANDONED.md
index ff111e38..2606d679 100644
--- a/.github/ABANDONED.md
+++ b/.github/ABANDONED.md
@@ -2,21 +2,21 @@
Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry VTT better! Below is a list of translations keys on existing files that still need translated, based on `en.json`.
-[cn.json (378 untranslated strings)](#cnjson)
+[cn.json (382 untranslated strings)](#cnjson)
-[cs.json (563 untranslated strings)](#csjson)
+[cs.json (567 untranslated strings)](#csjson)
-[es.json (360 untranslated strings)](#esjson)
+[es.json (364 untranslated strings)](#esjson)
-[ko.json (160 untranslated strings)](#kojson)
+[ko.json (164 untranslated strings)](#kojson)
-[ru.json (1225 untranslated strings)](#rujson)
+[ru.json (1229 untranslated strings)](#rujson)
-[sv.json (346 untranslated strings)](#svjson)
+[sv.json (350 untranslated strings)](#svjson)
## cn.json
-378 untranslated strings
+382 untranslated strings
```
"CoC7.ActorIsTokenHint": "Actor is a token",
"CoC7.ActorDataLinked": "Actor data are linked",
@@ -395,10 +395,14 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDFlag.error.document-not-found": "Document not found in world or Compendia matching the CoC ID "{cocid}", language "{lang}", and era "{era}". Please check your Era for the world setting.",
"CoC7.CoCIDFlag.error.documents-not-found": "Documents were not found in world or Compendia matching the CoC IDs ({cocids}), language "{lang}", and era "{era}". Please check your Era for the world setting.",
"CoC7.CoCIDBatch.title": "Batch set System ID (CoC ID)",
-"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
+"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",
+"CoC7.TokenCreationRoll.Title": "Rollable detected",
+"CoC7.TokenCreationRoll.Prompt": "This token has rollables characteristics or skills. What do you want to do ?",
+"CoC7.TokenCreationRoll.ButtonRoll": "Roll all",
+"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
## cs.json
-563 untranslated strings
+567 untranslated strings
```
"CoC7.Entities.Character": "Character",
"CoC7.Entities.Container": "Container",
@@ -962,10 +966,14 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDFlag.error.document-not-found": "Document not found in world or Compendia matching the CoC ID "{cocid}", language "{lang}", and era "{era}". Please check your Era for the world setting.",
"CoC7.CoCIDFlag.error.documents-not-found": "Documents were not found in world or Compendia matching the CoC IDs ({cocids}), language "{lang}", and era "{era}". Please check your Era for the world setting.",
"CoC7.CoCIDBatch.title": "Batch set System ID (CoC ID)",
-"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
+"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",
+"CoC7.TokenCreationRoll.Title": "Rollable detected",
+"CoC7.TokenCreationRoll.Prompt": "This token has rollables characteristics or skills. What do you want to do ?",
+"CoC7.TokenCreationRoll.ButtonRoll": "Roll all",
+"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
## es.json
-360 untranslated strings
+364 untranslated strings
```
"CoC7.ActorIsTokenHint": "Actor is a token",
"CoC7.ActorDataLinked": "Actor data are linked",
@@ -1326,10 +1334,14 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDFlag.error.document-not-found": "Document not found in world or Compendia matching the CoC ID "{cocid}", language "{lang}", and era "{era}". Please check your Era for the world setting.",
"CoC7.CoCIDFlag.error.documents-not-found": "Documents were not found in world or Compendia matching the CoC IDs ({cocids}), language "{lang}", and era "{era}". Please check your Era for the world setting.",
"CoC7.CoCIDBatch.title": "Batch set System ID (CoC ID)",
-"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
+"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",
+"CoC7.TokenCreationRoll.Title": "Rollable detected",
+"CoC7.TokenCreationRoll.Prompt": "This token has rollables characteristics or skills. What do you want to do ?",
+"CoC7.TokenCreationRoll.ButtonRoll": "Roll all",
+"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
## ko.json
-160 untranslated strings
+164 untranslated strings
```
"CoC7.CustomSpecialisationLabel": "Custom label - {specialisation}",
"CoC7.RollDifficultyRegularTitle": "Regular difficulty",
@@ -1490,10 +1502,14 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDFlag.error.document-not-found": "Document not found in world or Compendia matching the CoC ID "{cocid}", language "{lang}", and era "{era}". Please check your Era for the world setting.",
"CoC7.CoCIDFlag.error.documents-not-found": "Documents were not found in world or Compendia matching the CoC IDs ({cocids}), language "{lang}", and era "{era}". Please check your Era for the world setting.",
"CoC7.CoCIDBatch.title": "Batch set System ID (CoC ID)",
-"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
+"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",
+"CoC7.TokenCreationRoll.Title": "Rollable detected",
+"CoC7.TokenCreationRoll.Prompt": "This token has rollables characteristics or skills. What do you want to do ?",
+"CoC7.TokenCreationRoll.ButtonRoll": "Roll all",
+"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
## ru.json
-1225 untranslated strings
+1229 untranslated strings
```
"CoC7.title": "Call of Cthulhu 7h Edition",
"CoC7.Entities.Character": "Character",
@@ -2719,10 +2735,14 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDFlag.error.document-not-found": "Document not found in world or Compendia matching the CoC ID "{cocid}", language "{lang}", and era "{era}". Please check your Era for the world setting.",
"CoC7.CoCIDFlag.error.documents-not-found": "Documents were not found in world or Compendia matching the CoC IDs ({cocids}), language "{lang}", and era "{era}". Please check your Era for the world setting.",
"CoC7.CoCIDBatch.title": "Batch set System ID (CoC ID)",
-"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
+"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",
+"CoC7.TokenCreationRoll.Title": "Rollable detected",
+"CoC7.TokenCreationRoll.Prompt": "This token has rollables characteristics or skills. What do you want to do ?",
+"CoC7.TokenCreationRoll.ButtonRoll": "Roll all",
+"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
## sv.json
-346 untranslated strings
+350 untranslated strings
```
"CoC7.ActorIsTokenHint": "Actor is a token",
"CoC7.ActorDataLinked": "Actor data are linked",
@@ -3069,5 +3089,9 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.CoCIDFlag.error.document-not-found": "Document not found in world or Compendia matching the CoC ID "{cocid}", language "{lang}", and era "{era}". Please check your Era for the world setting.",
"CoC7.CoCIDFlag.error.documents-not-found": "Documents were not found in world or Compendia matching the CoC IDs ({cocids}), language "{lang}", and era "{era}". Please check your Era for the world setting.",
"CoC7.CoCIDBatch.title": "Batch set System ID (CoC ID)",
-"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages."
+"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",
+"CoC7.TokenCreationRoll.Title": "Rollable detected",
+"CoC7.TokenCreationRoll.Prompt": "This token has rollables characteristics or skills. What do you want to do ?",
+"CoC7.TokenCreationRoll.ButtonRoll": "Roll all",
+"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
From c74647d14a340b28ce8a7f9dee36bcc94678d1c3 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sat, 11 Nov 2023 12:39:12 +0000
Subject: [PATCH 22/38] Update change log and reduce missing active translation
keys to 50
---
.github/ABANDONED.md | 274 +++++++++++++++++++++++
.github/CHANGELOG.md | 6 +-
.github/TRANSLATIONS.md | 465 +++------------------------------------
generate-translations.js | 12 +-
4 files changed, 318 insertions(+), 439 deletions(-)
diff --git a/.github/ABANDONED.md b/.github/ABANDONED.md
index 2606d679..2c60a5e9 100644
--- a/.github/ABANDONED.md
+++ b/.github/ABANDONED.md
@@ -6,10 +6,14 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
[cs.json (567 untranslated strings)](#csjson)
+[de.json (150 untranslated strings)](#dejson)
+
[es.json (364 untranslated strings)](#esjson)
[ko.json (164 untranslated strings)](#kojson)
+[pt-BR.json (112 untranslated strings)](#ptbrjson)
+
[ru.json (1229 untranslated strings)](#rujson)
[sv.json (350 untranslated strings)](#svjson)
@@ -972,6 +976,160 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.TokenCreationRoll.ButtonRoll": "Roll all",
"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
+## de.json
+150 untranslated strings
+```
+"CoC7.CustomSpecialisationLabel": "Custom label - {specialisation}",
+"CoC7.EraDarkAgesPulp": "Dark Ages - Pulp",
+"CoC7.EraDownDarkerTrailsPulp": "Down Darker Trails - Pulp",
+"CoC7.EraModernPulp": "Modern - Pulp",
+"CoC7.EraRegency": "Regency Cthulhu - Standard",
+"CoC7.EraRegencyPulp": "Regency Cthulhu - Pulp",
+"CoC7.SkillRarityShort": "[UC]",
+"CoC7.SkillRequiresName": "Requires Name",
+"CoC7.SkillKeepBaseValue": "Keep Base Value",
+"CoC7.SkillPickNameOnly": "Select Specialization",
+"CoC7.SkillSpecializationIsUnique": "Unique Specialization",
+"CoC7.MonetaryTitle": "Cash and Assets",
+"CoC7.MonetaryTypeNone": "None",
+"CoC7.MonetaryTypeDeniers": "Deniers / Pennies",
+"CoC7.MonetaryTypeSous": "Sous / Shillings",
+"CoC7.MonetaryTypeOne": "1 x",
+"CoC7.MonetaryTypeCreditRating": "CR x",
+"CoC7.MonetaryTypeAsses": "Asses",
+"CoC7.MonetaryTypeSestertii": "Sestertii",
+"CoC7.MonetaryTypeQuinarii": "Quinarii",
+"CoC7.MonetaryTypeDenarii": "Denarii",
+"CoC7.MonetaryCreditRatingMin": "Min",
+"CoC7.MonetaryCreditRatingMax": "Max",
+"CoC7.MonetaryValueCash": "Cash",
+"CoC7.MonetaryValueAssets": "Assets",
+"CoC7.MonetaryValueSpendingLevel": "Spending",
+"CoC7.MonetaryFormatTitle": "Money Format :",
+"CoC7.MonetaryFormatDecimalLeft": "Decimal (?0.00)",
+"CoC7.MonetaryFormatDecimalRight": "Decimal (0.00 ?)",
+"CoC7.MonetaryFormatIntegerLeft": "Integer (?0)",
+"CoC7.MonetaryFormatIntegerRight": "Integer (0 ?)",
+"CoC7.MonetaryFormatLsd": "£sd",
+"CoC7.MonetaryFormatRoman": "Roman",
+"CoC7.MonetaryDefaultPenniless": "Penniless",
+"CoC7.MonetaryDefaultPoor": "Poor",
+"CoC7.MonetaryDefaultAverage": "Average",
+"CoC7.MonetaryDefaultWealthy": "Wealthy",
+"CoC7.MonetaryDefaultRich": "Rich",
+"CoC7.MonetaryDefaultSuperRich": "Super Rich",
+"CoC7.SanityLossType": "Type",
+"CoC7.ErrorTokenIncorrect": "Unable to find selected token",
+"CoC7.System.Documentation": "View CoC7 System Manual",
+"CoC7.Settings.PulpRules.IgnoreAgePenalties.Name": "Ignore Age Penalties",
+"CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint": "Do not alter movement rate based on age. When using the investigator wizard improvements and characteristic adjustments are not made",
+"CoC7.Settings.WorldEra.Name": "Era for the world",
+"CoC7.Settings.WorldEra.Hint": "Skills can vary slightly between eras, please select the era for this world so system searches for skills find the correct ones.",
+"CoC7.Settings.DropCoCID.Name": "Use CoC ID on item drops",
+"CoC7.Settings.DropCoCID.Hint": "When dropping items with a CoC ID prompt to store the CoC ID instead of the item",
+"CoC7.Settings.DropCoCID.Dialog": "Use the CoC ID for dropped items where possible? This allows the system to select the correct item for your world era.",
+"CoC7.Settings.DropCoCID.Remember": "Remember this selection, you can change this under settings",
+"CoC7.Settings.DropCoCID.Prompt": "Prompt each time",
+"CoC7.Settings.DropCoCID.UseCoCID": "Use CoC ID Where Possible",
+"CoC7.Settings.DropCoCID.IgnoreCoCID": "Do Not Use CoC ID",
+"SETTINGS.SceneDistanceNotCalcualtedNoError": "Don't show error for ranged distance",
+"SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "When starting a ranged combat if playing theatre of the mind do not show the unable to calculate distance message.",
+"CoC7.InvestigatorWizard.Title": "Investigator Creation Wizard",
+"CoC7.InvestigatorWizard.TitleKeeperConfiguration": "Keeper Configuration",
+"CoC7.InvestigatorWizard.TitleSelectSetup": "Investigator Setup",
+"CoC7.InvestigatorWizard.TitleSelectArchetype": "Archetype Selection",
+"CoC7.InvestigatorWizard.TitleSelectOccupation": "Occupation Selection",
+"CoC7.InvestigatorWizard.TitleCharacteristics": "Characteristics",
+"CoC7.InvestigatorWizard.TitleAdjustCharacteristics": "Adjust Characteristics",
+"CoC7.InvestigatorWizard.TitleAttributes": "Attributes",
+"CoC7.InvestigatorWizard.TitleDetails": "Investigator Details",
+"CoC7.InvestigatorWizard.TitleOccupationSkills": "Occupation Skills",
+"CoC7.InvestigatorWizard.TitleArchetypeSkills": "Archetype Skills",
+"CoC7.InvestigatorWizard.TitlePointsSkills": "Spend Skill Points",
+"CoC7.InvestigatorWizard.TitleBackstory": "Investigator Backstory",
+"CoC7.InvestigatorWizard.TitleCreate": "Create Investigator",
+"CoC7.InvestigatorWizard.BackStep": "Back",
+"CoC7.InvestigatorWizard.NextStep": "Next",
+"CoC7.InvestigatorWizard.CreateStep": "Create",
+"CoC7.InvestigatorWizard.Introduction": "The Investigator Creation Wizard is a step-by-step process for creating a brand-new investigator.",
+"CoC7.InvestigatorWizard.IntroductionKeeper": "Your world is set to the "{era}" era this can be changed under settings or on the next page.",
+"CoC7.InvestigatorWizard.ChangingEraDelay": "Changing era please wait",
+"CoC7.InvestigatorWizard.PlayerEnabled": "Allow players without actor creation permission to create investigators",
+"CoC7.InvestigatorWizard.PlayerQuantity": "How many investigators can one player have ownership of?",
+"CoC7.InvestigatorWizard.OtherPlayerOwnership": "Default permission level for players that did not create this investigator",
+"CoC7.InvestigatorWizard.AllowRerolls": "Allow characteristics to be rerolled",
+"CoC7.InvestigatorWizard.UseSetupMethod": "Use method from setup item",
+"CoC7.InvestigatorWizard.EnforcePointBuy": "Enforce point buy",
+"CoC7.InvestigatorWizard.QuickFireValues": "Quick fire characteristics values",
+"CoC7.InvestigatorWizard.Setups": "Character sheets",
+"CoC7.InvestigatorWizard.Characteristics": "Characteristic values",
+"CoC7.InvestigatorWizard.SetupCounts": "You currently have {count} setup options. It is recommended you set a single setup for all your players to set the default skills on your character sheet. The system comes with a default setup with a CoC ID set. You can add more setups with valid CoC ID values using the header on then setup item sheet. Compendiums with these values set will automatically be added to the available list.",
+"CoC7.InvestigatorWizard.SetupSelect": "Select your investigator setup",
+"CoC7.InvestigatorWizard.SetupAny": "No default",
+"CoC7.InvestigatorWizard.Occupations": "Occupations",
+"CoC7.InvestigatorWizard.OccupationCounts": "You currently have {count} occupations. The system comes with a default occupation with a CoC ID set. You can add more occupations with valid CoC ID values using the header on then occupation item sheet. Compendiums with these values set will automatically be added to the available list.",
+"CoC7.InvestigatorWizard.Archetypes": "Pulp Archetypes",
+"CoC7.InvestigatorWizard.ArchetypeCounts": "You currently have {count} archetypes. The system comes with a default archetypes with a CoC ID set. You can add more archetypes with valid CoC ID values using the header on then archetypes item sheet. Compendiums with these values set will automatically be added to the available list.",
+"CoC7.InvestigatorWizard.SetupPage": "Selecting your era will set the default skills on your character sheet.",
+"CoC7.InvestigatorWizard.ArchetypePage": "Selecting your character archetype will set additional default skills on your character sheet.",
+"CoC7.InvestigatorWizard.ArchetypeSelect": "Select your archetype",
+"CoC7.InvestigatorWizard.CoreCharacteristicName": "Core characteristic: {coreCharacteristic}.",
+"CoC7.InvestigatorWizard.AddBonusPointsToSkills": "Add {bonusPoints} bonus skill points divided among any of the following skills: {skills}",
+"CoC7.InvestigatorWizard.SuggestedOccupations": "Suggested Occupations: {suggested}",
+"CoC7.InvestigatorWizard.SuggestedTraits": "Suggested Traits: {suggested}",
+"CoC7.InvestigatorWizard.CoreCharacteristicSelect": "Archetype core characteristic",
+"CoC7.InvestigatorWizard.CharacteristicDragInformation": "Drag your characteristics",
+"CoC7.InvestigatorWizard.AgeRange": "Age (15-89):",
+"CoC7.InvestigatorWizard.MakeEDUImprovementCheck": "Make an improvement check for EDU",
+"CoC7.InvestigatorWizard.MakeEDUImprovementChecks": "Make {total} improvement checks for EDU",
+"CoC7.InvestigatorWizard.DeductPointsFromCharacteristics": "Deduct {total} points among {from}",
+"CoC7.InvestigatorWizard.ReducePointsFromCharacteristic": "Reduce {from} by {total}",
+"CoC7.InvestigatorWizard.RollTwiceForLuck": "Roll a second time for luck",
+"CoC7.InvestigatorWizard.OccupationPage": "Occupations give you a set of bonus points to split between eight skills and credit rating",
+"CoC7.InvestigatorWizard.OccupationSelect": "Select your occupation",
+"CoC7.InvestigatorWizard.OccupationCreditRating": "Credit Rating",
+"CoC7.InvestigatorWizard.OccupationSkillPoints": "Occupation Skill Points",
+"CoC7.InvestigatorWizard.OccupationSkills": "Occupation Skills",
+"CoC7.InvestigatorWizard.OccupationPickThisMany": "{count} of the following skill(s)",
+"CoC7.InvestigatorWizard.OccupationPersonalThisMany": "{count} personal skill(s)",
+"CoC7.InvestigatorWizard.CharacterAvatarImage": "Avatar Image",
+"CoC7.InvestigatorWizard.CharacterTokenImage": "Token Image",
+"CoC7.InvestigatorWizard.OccupationDefaultSkills": "All {count} of the following skill(s)",
+"CoC7.InvestigatorWizard.SkillSpendOccupationCountIncorrect": "You have selected {count} of {max} occupation skills, check with your Keeper before removing standard occupation skills.",
+"CoC7.InvestigatorWizard.ArchetypeDefaultSkills": "All {count} of the following skill(s)",
+"CoC7.InvestigatorWizard.ArchetypeOptionalSkills": "Check with your keeper before selecting the following skills",
+"CoC7.InvestigatorWizard.SkillSpendArchetypeCountIncorrect": "You have selected {count} of {max} archetype skills, check with your Keeper before removing standard archetype skills.",
+"CoC7.InvestigatorWizard.SkillSpendOccupationPoints": "Occupation skill points {count} of {total} remaining {remaining}",
+"CoC7.InvestigatorWizard.SkillSpendInterestPoints": "Personal interest points {count} of {total} remaining {remaining}",
+"CoC7.InvestigatorWizard.SkillSpendArchetypePoints": "Archetype points {count} of {total} remaining {remaining}",
+"CoC7.InvestigatorWizard.CreateInstructions": "Click create to create your character. You Keeper needs to be online for the character to be created.",
+"CoC7.InvestigatorWizard.CreatingInvestigator": "Please wait while the keeper creates your investigator.",
+"CoC7.CoCIDFlag.id": "ID",
+"CoC7.CoCIDFlag.title": "Edit System ID (CoC ID)",
+"CoC7.CoCIDFlag.summary": "Set a group identifier that can be used to find the the most up to date version of this {type}. The System ID should use the English translation of the {type} to support localization across all languages.",
+"CoC7.CoCIDFlag.key": "System ID (CoC ID)",
+"CoC7.CoCIDFlag.new": "- Custom System ID -",
+"CoC7.CoCIDFlag.guess": "Create System ID (CoC ID) based on current document.",
+"CoC7.CoCIDFlag.priority": "System ID Priority",
+"CoC7.CoCIDFlag.others": "Other documents with this CoC ID and language (excluding documents in other actors and items)",
+"CoC7.CoCIDFlag.documents-in-world": "{count} documents in the world",
+"CoC7.CoCIDFlag.documents-in-compendiums": "{count} documents in compendiums",
+"CoC7.CoCIDFlag.foundry-id": "Foundry ID",
+"CoC7.CoCIDFlag.foundry-uuid": "Foundry UUID",
+"CoC7.CoCIDFlag.get-this-document": "Get this document",
+"CoC7.CoCIDFlag.get-document-like-this": "Get document like this",
+"CoC7.CoCIDFlag.error.duplicate": "Warning: Multiple System IDs with same priority!",
+"CoC7.CoCIDFlag.error.unknown-era": "Unknown Era "{era}"",
+"CoC7.CoCIDFlag.error.incorrect.type": "Tried to convert CoC ID with non existing document type. See console log.",
+"CoC7.CoCIDFlag.error.document-not-found": "Document not found in world or Compendia matching the CoC ID "{cocid}", language "{lang}", and era "{era}". Please check your Era for the world setting.",
+"CoC7.CoCIDFlag.error.documents-not-found": "Documents were not found in world or Compendia matching the CoC IDs ({cocids}), language "{lang}", and era "{era}". Please check your Era for the world setting.",
+"CoC7.CoCIDBatch.title": "Batch set System ID (CoC ID)",
+"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",
+"CoC7.TokenCreationRoll.Title": "Rollable detected",
+"CoC7.TokenCreationRoll.Prompt": "This token has rollables characteristics or skills. What do you want to do ?",
+"CoC7.TokenCreationRoll.ButtonRoll": "Roll all",
+"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
+```
## es.json
364 untranslated strings
```
@@ -1508,6 +1666,122 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.TokenCreationRoll.ButtonRoll": "Roll all",
"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
+## pt-BR.json
+112 untranslated strings
+```
+"CoC7.EraRegency": "Regency Cthulhu - Standard",
+"CoC7.EraRegencyPulp": "Regency Cthulhu - Pulp",
+"CoC7.SkillSpecializationIsUnique": "Unique Specialization",
+"CoC7.MonetaryTitle": "Cash and Assets",
+"CoC7.MonetaryTypeNone": "None",
+"CoC7.MonetaryTypeDeniers": "Deniers / Pennies",
+"CoC7.MonetaryTypeSous": "Sous / Shillings",
+"CoC7.MonetaryTypeOne": "1 x",
+"CoC7.MonetaryTypeCreditRating": "CR x",
+"CoC7.MonetaryTypeAsses": "Asses",
+"CoC7.MonetaryTypeSestertii": "Sestertii",
+"CoC7.MonetaryTypeQuinarii": "Quinarii",
+"CoC7.MonetaryTypeDenarii": "Denarii",
+"CoC7.MonetaryCreditRatingMin": "Min",
+"CoC7.MonetaryCreditRatingMax": "Max",
+"CoC7.MonetaryValueCash": "Cash",
+"CoC7.MonetaryValueAssets": "Assets",
+"CoC7.MonetaryValueSpendingLevel": "Spending",
+"CoC7.MonetaryFormatTitle": "Money Format :",
+"CoC7.MonetaryFormatDecimalLeft": "Decimal (?0.00)",
+"CoC7.MonetaryFormatDecimalRight": "Decimal (0.00 ?)",
+"CoC7.MonetaryFormatIntegerLeft": "Integer (?0)",
+"CoC7.MonetaryFormatIntegerRight": "Integer (0 ?)",
+"CoC7.MonetaryFormatLsd": "£sd",
+"CoC7.MonetaryFormatRoman": "Roman",
+"CoC7.MonetaryDefaultPenniless": "Penniless",
+"CoC7.MonetaryDefaultPoor": "Poor",
+"CoC7.MonetaryDefaultAverage": "Average",
+"CoC7.MonetaryDefaultWealthy": "Wealthy",
+"CoC7.MonetaryDefaultRich": "Rich",
+"CoC7.MonetaryDefaultSuperRich": "Super Rich",
+"CoC7.SanityLossType": "Type",
+"CoC7.ErrorTokenIncorrect": "Unable to find selected token",
+"CoC7.System.Documentation": "View CoC7 System Manual",
+"SETTINGS.SceneDistanceNotCalcualtedNoError": "Don't show error for ranged distance",
+"SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "When starting a ranged combat if playing theatre of the mind do not show the unable to calculate distance message.",
+"CoC7.InvestigatorWizard.Title": "Investigator Creation Wizard",
+"CoC7.InvestigatorWizard.TitleKeeperConfiguration": "Keeper Configuration",
+"CoC7.InvestigatorWizard.TitleSelectSetup": "Investigator Setup",
+"CoC7.InvestigatorWizard.TitleSelectArchetype": "Archetype Selection",
+"CoC7.InvestigatorWizard.TitleSelectOccupation": "Occupation Selection",
+"CoC7.InvestigatorWizard.TitleCharacteristics": "Characteristics",
+"CoC7.InvestigatorWizard.TitleAdjustCharacteristics": "Adjust Characteristics",
+"CoC7.InvestigatorWizard.TitleAttributes": "Attributes",
+"CoC7.InvestigatorWizard.TitleDetails": "Investigator Details",
+"CoC7.InvestigatorWizard.TitleOccupationSkills": "Occupation Skills",
+"CoC7.InvestigatorWizard.TitleArchetypeSkills": "Archetype Skills",
+"CoC7.InvestigatorWizard.TitlePointsSkills": "Spend Skill Points",
+"CoC7.InvestigatorWizard.TitleBackstory": "Investigator Backstory",
+"CoC7.InvestigatorWizard.TitleCreate": "Create Investigator",
+"CoC7.InvestigatorWizard.BackStep": "Back",
+"CoC7.InvestigatorWizard.NextStep": "Next",
+"CoC7.InvestigatorWizard.CreateStep": "Create",
+"CoC7.InvestigatorWizard.Introduction": "The Investigator Creation Wizard is a step-by-step process for creating a brand-new investigator.",
+"CoC7.InvestigatorWizard.IntroductionKeeper": "Your world is set to the "{era}" era this can be changed under settings or on the next page.",
+"CoC7.InvestigatorWizard.ChangingEraDelay": "Changing era please wait",
+"CoC7.InvestigatorWizard.PlayerEnabled": "Allow players without actor creation permission to create investigators",
+"CoC7.InvestigatorWizard.PlayerQuantity": "How many investigators can one player have ownership of?",
+"CoC7.InvestigatorWizard.OtherPlayerOwnership": "Default permission level for players that did not create this investigator",
+"CoC7.InvestigatorWizard.AllowRerolls": "Allow characteristics to be rerolled",
+"CoC7.InvestigatorWizard.UseSetupMethod": "Use method from setup item",
+"CoC7.InvestigatorWizard.EnforcePointBuy": "Enforce point buy",
+"CoC7.InvestigatorWizard.QuickFireValues": "Quick fire characteristics values",
+"CoC7.InvestigatorWizard.Setups": "Character sheets",
+"CoC7.InvestigatorWizard.Characteristics": "Characteristic values",
+"CoC7.InvestigatorWizard.SetupCounts": "You currently have {count} setup options. It is recommended you set a single setup for all your players to set the default skills on your character sheet. The system comes with a default setup with a CoC ID set. You can add more setups with valid CoC ID values using the header on then setup item sheet. Compendiums with these values set will automatically be added to the available list.",
+"CoC7.InvestigatorWizard.SetupSelect": "Select your investigator setup",
+"CoC7.InvestigatorWizard.SetupAny": "No default",
+"CoC7.InvestigatorWizard.Occupations": "Occupations",
+"CoC7.InvestigatorWizard.OccupationCounts": "You currently have {count} occupations. The system comes with a default occupation with a CoC ID set. You can add more occupations with valid CoC ID values using the header on then occupation item sheet. Compendiums with these values set will automatically be added to the available list.",
+"CoC7.InvestigatorWizard.Archetypes": "Pulp Archetypes",
+"CoC7.InvestigatorWizard.ArchetypeCounts": "You currently have {count} archetypes. The system comes with a default archetypes with a CoC ID set. You can add more archetypes with valid CoC ID values using the header on then archetypes item sheet. Compendiums with these values set will automatically be added to the available list.",
+"CoC7.InvestigatorWizard.SetupPage": "Selecting your era will set the default skills on your character sheet.",
+"CoC7.InvestigatorWizard.ArchetypePage": "Selecting your character archetype will set additional default skills on your character sheet.",
+"CoC7.InvestigatorWizard.ArchetypeSelect": "Select your archetype",
+"CoC7.InvestigatorWizard.CoreCharacteristicName": "Core characteristic: {coreCharacteristic}.",
+"CoC7.InvestigatorWizard.AddBonusPointsToSkills": "Add {bonusPoints} bonus skill points divided among any of the following skills: {skills}",
+"CoC7.InvestigatorWizard.SuggestedOccupations": "Suggested Occupations: {suggested}",
+"CoC7.InvestigatorWizard.SuggestedTraits": "Suggested Traits: {suggested}",
+"CoC7.InvestigatorWizard.CoreCharacteristicSelect": "Archetype core characteristic",
+"CoC7.InvestigatorWizard.CharacteristicDragInformation": "Drag your characteristics",
+"CoC7.InvestigatorWizard.AgeRange": "Age (15-89):",
+"CoC7.InvestigatorWizard.MakeEDUImprovementCheck": "Make an improvement check for EDU",
+"CoC7.InvestigatorWizard.MakeEDUImprovementChecks": "Make {total} improvement checks for EDU",
+"CoC7.InvestigatorWizard.DeductPointsFromCharacteristics": "Deduct {total} points among {from}",
+"CoC7.InvestigatorWizard.ReducePointsFromCharacteristic": "Reduce {from} by {total}",
+"CoC7.InvestigatorWizard.RollTwiceForLuck": "Roll a second time for luck",
+"CoC7.InvestigatorWizard.OccupationPage": "Occupations give you a set of bonus points to split between eight skills and credit rating",
+"CoC7.InvestigatorWizard.OccupationSelect": "Select your occupation",
+"CoC7.InvestigatorWizard.OccupationCreditRating": "Credit Rating",
+"CoC7.InvestigatorWizard.OccupationSkillPoints": "Occupation Skill Points",
+"CoC7.InvestigatorWizard.OccupationSkills": "Occupation Skills",
+"CoC7.InvestigatorWizard.OccupationPickThisMany": "{count} of the following skill(s)",
+"CoC7.InvestigatorWizard.OccupationPersonalThisMany": "{count} personal skill(s)",
+"CoC7.InvestigatorWizard.CharacterAvatarImage": "Avatar Image",
+"CoC7.InvestigatorWizard.CharacterTokenImage": "Token Image",
+"CoC7.InvestigatorWizard.OccupationDefaultSkills": "All {count} of the following skill(s)",
+"CoC7.InvestigatorWizard.SkillSpendOccupationCountIncorrect": "You have selected {count} of {max} occupation skills, check with your Keeper before removing standard occupation skills.",
+"CoC7.InvestigatorWizard.ArchetypeDefaultSkills": "All {count} of the following skill(s)",
+"CoC7.InvestigatorWizard.ArchetypeOptionalSkills": "Check with your keeper before selecting the following skills",
+"CoC7.InvestigatorWizard.SkillSpendArchetypeCountIncorrect": "You have selected {count} of {max} archetype skills, check with your Keeper before removing standard archetype skills.",
+"CoC7.InvestigatorWizard.SkillSpendOccupationPoints": "Occupation skill points {count} of {total} remaining {remaining}",
+"CoC7.InvestigatorWizard.SkillSpendInterestPoints": "Personal interest points {count} of {total} remaining {remaining}",
+"CoC7.InvestigatorWizard.SkillSpendArchetypePoints": "Archetype points {count} of {total} remaining {remaining}",
+"CoC7.InvestigatorWizard.CreateInstructions": "Click create to create your character. You Keeper needs to be online for the character to be created.",
+"CoC7.InvestigatorWizard.CreatingInvestigator": "Please wait while the keeper creates your investigator.",
+"CoC7.CoCIDBatch.title": "Batch set System ID (CoC ID)",
+"CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",
+"CoC7.TokenCreationRoll.Title": "Rollable detected",
+"CoC7.TokenCreationRoll.Prompt": "This token has rollables characteristics or skills. What do you want to do ?",
+"CoC7.TokenCreationRoll.ButtonRoll": "Roll all",
+"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
+```
## ru.json
1229 untranslated strings
```
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index ecdee64e..76041ac5 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -9,12 +9,16 @@ Happy gaming !
When not specified, all changes were made by @castanhocorreia, @HavlockV, and @snap01.
+- Fix a bug where token image wasn't set properly with generic icon
- Fix dholehouse importer for characters with a single item on their possesions. Fixes #1423, thanks to @pconcepcion #1424
+- Fix guessing CoC ID on spells doesn't save on first attempt.
+- Fix Lock / Unlock / Roll / mode change not supported on actors in compendium. Fixes #1432
- Fix targeting system not being able to calculate distance from the minimized sheet #1426
- Add system manual button to Game Settings sidebar tab
- Add system setting to not trigger an error message for ranged token distance calculations if playing theatre of the mind
+- When an actor that has rollable characteristics or skills is dragged onto a scene prompted whether those should be rolled or averaged.
- Update to French localization, thanks to @vonv #1415
-- Update to Italian localization, thanks to @Stefano1975t #1419 and #1422
+- Update to Italian localization, thanks to @Stefano1975t #1419, #1422, and #1429
## Version 0.10.6
diff --git a/.github/TRANSLATIONS.md b/.github/TRANSLATIONS.md
index f0d65c60..04386899 100644
--- a/.github/TRANSLATIONS.md
+++ b/.github/TRANSLATIONS.md
@@ -2,447 +2,48 @@
Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry VTT better! Below is a list of translations keys on existing files that still need translated, based on `en.json`. Feel free to create a new `*.json` file for a language that is not shown here!
-The following translations have more than 153 untranslated strings **cn**, **cs**, **es**, **ko**, **ru**, **sv**, [are you able to help?](./ABANDONED.md)
+The following translations have more than 50 untranslated strings [are you able to help?](./ABANDONED.md)
-|Key|de|fr|it|ja|pl|pt-BR|zh-TW|
-|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
-|**Remaining**:|**150**|**7**|**4**|**9**|**7**|**112**|**11**|
-|[CoC7.CoCIDBatch.summary](#coc7cocidbatchsummary)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.CoCIDBatch.title](#coc7cocidbatchtitle)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.CoCIDFlag.documents-in-compendiums](#coc7cocidflagdocumentsincompendiums)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.documents-in-world](#coc7cocidflagdocumentsinworld)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.document-not-found](#coc7cocidflagerrordocumentnotfound)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.documents-not-found](#coc7cocidflagerrordocumentsnotfound)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.duplicate](#coc7cocidflagerrorduplicate)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.incorrect.type](#coc7cocidflagerrorincorrecttype)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.error.unknown-era](#coc7cocidflagerrorunknownera)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.foundry-id](#coc7cocidflagfoundryid)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.foundry-uuid](#coc7cocidflagfoundryuuid)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.get-document-like-this](#coc7cocidflaggetdocumentlikethis)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.get-this-document](#coc7cocidflaggetthisdocument)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.guess](#coc7cocidflagguess)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.id](#coc7cocidflagid)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.key](#coc7cocidflagkey)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.new](#coc7cocidflagnew)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.others](#coc7cocidflagothers)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.priority](#coc7cocidflagpriority)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.summary](#coc7cocidflagsummary)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CoCIDFlag.title](#coc7cocidflagtitle)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.CustomSpecialisationLabel](#coc7customspecialisationlabel)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.EraDarkAgesPulp](#coc7eradarkagespulp)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.EraDownDarkerTrailsPulp](#coc7eradowndarkertrailspulp)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.EraModernPulp](#coc7eramodernpulp)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.EraRegency](#coc7eraregency)|❌|✅|✅|✅|✅|❌|❌|
-|[CoC7.EraRegencyPulp](#coc7eraregencypulp)|❌|✅|✅|✅|✅|❌|❌|
-|[CoC7.ErrorTokenIncorrect](#coc7errortokenincorrect)|❌|✅|✅|❌|✅|❌|❌|
-|[CoC7.InvestigatorWizard.AddBonusPointsToSkills](#coc7investigatorwizardaddbonuspointstoskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.AgeRange](#coc7investigatorwizardagerange)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.AllowRerolls](#coc7investigatorwizardallowrerolls)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeCounts](#coc7investigatorwizardarchetypecounts)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeDefaultSkills](#coc7investigatorwizardarchetypedefaultskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeOptionalSkills](#coc7investigatorwizardarchetypeoptionalskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypePage](#coc7investigatorwizardarchetypepage)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ArchetypeSelect](#coc7investigatorwizardarchetypeselect)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Archetypes](#coc7investigatorwizardarchetypes)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.BackStep](#coc7investigatorwizardbackstep)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ChangingEraDelay](#coc7investigatorwizardchangingeradelay)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CharacterAvatarImage](#coc7investigatorwizardcharacteravatarimage)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CharacterTokenImage](#coc7investigatorwizardcharactertokenimage)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CharacteristicDragInformation](#coc7investigatorwizardcharacteristicdraginformation)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Characteristics](#coc7investigatorwizardcharacteristics)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CoreCharacteristicName](#coc7investigatorwizardcorecharacteristicname)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CoreCharacteristicSelect](#coc7investigatorwizardcorecharacteristicselect)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CreateInstructions](#coc7investigatorwizardcreateinstructions)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CreateStep](#coc7investigatorwizardcreatestep)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.CreatingInvestigator](#coc7investigatorwizardcreatinginvestigator)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.DeductPointsFromCharacteristics](#coc7investigatorwizarddeductpointsfromcharacteristics)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.EnforcePointBuy](#coc7investigatorwizardenforcepointbuy)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Introduction](#coc7investigatorwizardintroduction)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.IntroductionKeeper](#coc7investigatorwizardintroductionkeeper)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.MakeEDUImprovementCheck](#coc7investigatorwizardmakeeduimprovementcheck)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.MakeEDUImprovementChecks](#coc7investigatorwizardmakeeduimprovementchecks)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.NextStep](#coc7investigatorwizardnextstep)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationCounts](#coc7investigatorwizardoccupationcounts)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationCreditRating](#coc7investigatorwizardoccupationcreditrating)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationDefaultSkills](#coc7investigatorwizardoccupationdefaultskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationPage](#coc7investigatorwizardoccupationpage)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationPersonalThisMany](#coc7investigatorwizardoccupationpersonalthismany)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationPickThisMany](#coc7investigatorwizardoccupationpickthismany)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationSelect](#coc7investigatorwizardoccupationselect)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationSkillPoints](#coc7investigatorwizardoccupationskillpoints)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OccupationSkills](#coc7investigatorwizardoccupationskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Occupations](#coc7investigatorwizardoccupations)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.OtherPlayerOwnership](#coc7investigatorwizardotherplayerownership)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.PlayerEnabled](#coc7investigatorwizardplayerenabled)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.PlayerQuantity](#coc7investigatorwizardplayerquantity)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.QuickFireValues](#coc7investigatorwizardquickfirevalues)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.ReducePointsFromCharacteristic](#coc7investigatorwizardreducepointsfromcharacteristic)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.RollTwiceForLuck](#coc7investigatorwizardrolltwiceforluck)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupAny](#coc7investigatorwizardsetupany)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupCounts](#coc7investigatorwizardsetupcounts)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupPage](#coc7investigatorwizardsetuppage)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SetupSelect](#coc7investigatorwizardsetupselect)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Setups](#coc7investigatorwizardsetups)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendArchetypeCountIncorrect](#coc7investigatorwizardskillspendarchetypecountincorrect)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendArchetypePoints](#coc7investigatorwizardskillspendarchetypepoints)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendInterestPoints](#coc7investigatorwizardskillspendinterestpoints)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendOccupationCountIncorrect](#coc7investigatorwizardskillspendoccupationcountincorrect)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SkillSpendOccupationPoints](#coc7investigatorwizardskillspendoccupationpoints)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SuggestedOccupations](#coc7investigatorwizardsuggestedoccupations)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.SuggestedTraits](#coc7investigatorwizardsuggestedtraits)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.Title](#coc7investigatorwizardtitle)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleAdjustCharacteristics](#coc7investigatorwizardtitleadjustcharacteristics)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleArchetypeSkills](#coc7investigatorwizardtitlearchetypeskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleAttributes](#coc7investigatorwizardtitleattributes)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleBackstory](#coc7investigatorwizardtitlebackstory)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleCharacteristics](#coc7investigatorwizardtitlecharacteristics)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleCreate](#coc7investigatorwizardtitlecreate)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleDetails](#coc7investigatorwizardtitledetails)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleKeeperConfiguration](#coc7investigatorwizardtitlekeeperconfiguration)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleOccupationSkills](#coc7investigatorwizardtitleoccupationskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitlePointsSkills](#coc7investigatorwizardtitlepointsskills)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleSelectArchetype](#coc7investigatorwizardtitleselectarchetype)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleSelectOccupation](#coc7investigatorwizardtitleselectoccupation)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.TitleSelectSetup](#coc7investigatorwizardtitleselectsetup)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.InvestigatorWizard.UseSetupMethod](#coc7investigatorwizardusesetupmethod)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryCreditRatingMax](#coc7monetarycreditratingmax)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryCreditRatingMin](#coc7monetarycreditratingmin)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultAverage](#coc7monetarydefaultaverage)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultPenniless](#coc7monetarydefaultpenniless)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultPoor](#coc7monetarydefaultpoor)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultRich](#coc7monetarydefaultrich)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultSuperRich](#coc7monetarydefaultsuperrich)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryDefaultWealthy](#coc7monetarydefaultwealthy)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatDecimalLeft](#coc7monetaryformatdecimalleft)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatDecimalRight](#coc7monetaryformatdecimalright)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatIntegerLeft](#coc7monetaryformatintegerleft)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatIntegerRight](#coc7monetaryformatintegerright)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatLsd](#coc7monetaryformatlsd)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatRoman](#coc7monetaryformatroman)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryFormatTitle](#coc7monetaryformattitle)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTitle](#coc7monetarytitle)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeAsses](#coc7monetarytypeasses)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeCreditRating](#coc7monetarytypecreditrating)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeDenarii](#coc7monetarytypedenarii)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeDeniers](#coc7monetarytypedeniers)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeNone](#coc7monetarytypenone)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeOne](#coc7monetarytypeone)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeQuinarii](#coc7monetarytypequinarii)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeSestertii](#coc7monetarytypesestertii)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryTypeSous](#coc7monetarytypesous)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryValueAssets](#coc7monetaryvalueassets)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryValueCash](#coc7monetaryvaluecash)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.MonetaryValueSpendingLevel](#coc7monetaryvaluespendinglevel)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.SanityLossType](#coc7sanitylosstype)|❌|✅|✅|❌|✅|❌|❌|
-|[CoC7.Settings.DropCoCID.Dialog](#coc7settingsdropcociddialog)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Hint](#coc7settingsdropcocidhint)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.IgnoreCoCID](#coc7settingsdropcocidignorecocid)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Name](#coc7settingsdropcocidname)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Prompt](#coc7settingsdropcocidprompt)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.Remember](#coc7settingsdropcocidremember)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.DropCoCID.UseCoCID](#coc7settingsdropcocidusecocid)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint](#coc7settingspulprulesignoreagepenaltieshint)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.PulpRules.IgnoreAgePenalties.Name](#coc7settingspulprulesignoreagepenaltiesname)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.WorldEra.Hint](#coc7settingsworlderahint)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.Settings.WorldEra.Name](#coc7settingsworlderaname)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.SkillKeepBaseValue](#coc7skillkeepbasevalue)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.SkillPickNameOnly](#coc7skillpicknameonly)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.SkillRarityShort](#coc7skillrarityshort)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.SkillRequiresName](#coc7skillrequiresname)|❌|✅|✅|✅|✅|✅|✅|
-|[CoC7.SkillSpecializationIsUnique](#coc7skillspecializationisunique)|❌|✅|✅|✅|✅|❌|✅|
-|[CoC7.System.Documentation](#coc7systemdocumentation)|❌|❌|✅|❌|❌|❌|❌|
-|[CoC7.TokenCreationRoll.ButtonAverage](#coc7tokencreationrollbuttonaverage)|❌|❌|❌|❌|❌|❌|❌|
-|[CoC7.TokenCreationRoll.ButtonRoll](#coc7tokencreationrollbuttonroll)|❌|❌|❌|❌|❌|❌|❌|
-|[CoC7.TokenCreationRoll.Prompt](#coc7tokencreationrollprompt)|❌|❌|❌|❌|❌|❌|❌|
-|[CoC7.TokenCreationRoll.Title](#coc7tokencreationrolltitle)|❌|❌|❌|❌|❌|❌|❌|
-|[SETTINGS.SceneDistanceNotCalcualtedNoError](#settingsscenedistancenotcalcualtednoerror)|❌|❌|✅|❌|❌|❌|❌|
-|[SETTINGS.SceneDistanceNotCalcualtedNoErrorHint](#settingsscenedistancenotcalcualtednoerrorhint)|❌|❌|✅|❌|❌|❌|❌|
-##### CoC7.CoCIDBatch.summary
-``` "CoC7.CoCIDBatch.summary": "The CoC7 System has introduced a System ID (CoC ID). This allows the system to identify FoundryVTT documents for example skills. This page will allow you to set the id for existing {type} documents. The System ID should use the English translation of the name to support localization across all languages.",```
-##### CoC7.CoCIDBatch.title
-``` "CoC7.CoCIDBatch.title": "Batch set System ID (CoC ID)",```
-##### CoC7.CoCIDFlag.documents-in-compendiums
-``` "CoC7.CoCIDFlag.documents-in-compendiums": "{count} documents in compendiums",```
-##### CoC7.CoCIDFlag.documents-in-world
-``` "CoC7.CoCIDFlag.documents-in-world": "{count} documents in the world",```
-##### CoC7.CoCIDFlag.error.document-not-found
-``` "CoC7.CoCIDFlag.error.document-not-found": "Document not found in world or Compendia matching the CoC ID "{cocid}", language "{lang}", and era "{era}". Please check your Era for the world setting.",```
-##### CoC7.CoCIDFlag.error.documents-not-found
-``` "CoC7.CoCIDFlag.error.documents-not-found": "Documents were not found in world or Compendia matching the CoC IDs ({cocids}), language "{lang}", and era "{era}". Please check your Era for the world setting.",```
-##### CoC7.CoCIDFlag.error.duplicate
-``` "CoC7.CoCIDFlag.error.duplicate": "Warning: Multiple System IDs with same priority!",```
-##### CoC7.CoCIDFlag.error.incorrect.type
-``` "CoC7.CoCIDFlag.error.incorrect.type": "Tried to convert CoC ID with non existing document type. See console log.",```
-##### CoC7.CoCIDFlag.error.unknown-era
-``` "CoC7.CoCIDFlag.error.unknown-era": "Unknown Era "{era}"",```
-##### CoC7.CoCIDFlag.foundry-id
-``` "CoC7.CoCIDFlag.foundry-id": "Foundry ID",```
-##### CoC7.CoCIDFlag.foundry-uuid
-``` "CoC7.CoCIDFlag.foundry-uuid": "Foundry UUID",```
-##### CoC7.CoCIDFlag.get-document-like-this
-``` "CoC7.CoCIDFlag.get-document-like-this": "Get document like this",```
-##### CoC7.CoCIDFlag.get-this-document
-``` "CoC7.CoCIDFlag.get-this-document": "Get this document",```
-##### CoC7.CoCIDFlag.guess
-``` "CoC7.CoCIDFlag.guess": "Create System ID (CoC ID) based on current document.",```
-##### CoC7.CoCIDFlag.id
-``` "CoC7.CoCIDFlag.id": "ID",```
-##### CoC7.CoCIDFlag.key
-``` "CoC7.CoCIDFlag.key": "System ID (CoC ID)",```
-##### CoC7.CoCIDFlag.new
-``` "CoC7.CoCIDFlag.new": "- Custom System ID -",```
-##### CoC7.CoCIDFlag.others
-``` "CoC7.CoCIDFlag.others": "Other documents with this CoC ID and language (excluding documents in other actors and items)",```
-##### CoC7.CoCIDFlag.priority
-``` "CoC7.CoCIDFlag.priority": "System ID Priority",```
-##### CoC7.CoCIDFlag.summary
-``` "CoC7.CoCIDFlag.summary": "Set a group identifier that can be used to find the the most up to date version of this {type}. The System ID should use the English translation of the {type} to support localization across all languages.",```
-##### CoC7.CoCIDFlag.title
-``` "CoC7.CoCIDFlag.title": "Edit System ID (CoC ID)",```
-##### CoC7.CustomSpecialisationLabel
-``` "CoC7.CustomSpecialisationLabel": "Custom label - {specialisation}",```
-##### CoC7.EraDarkAgesPulp
-``` "CoC7.EraDarkAgesPulp": "Dark Ages - Pulp",```
-##### CoC7.EraDownDarkerTrailsPulp
-``` "CoC7.EraDownDarkerTrailsPulp": "Down Darker Trails - Pulp",```
-##### CoC7.EraModernPulp
-``` "CoC7.EraModernPulp": "Modern - Pulp",```
+[cn.json (382 untranslated strings)](./ABANDONED.md#cnjson)
+
+[cs.json (567 untranslated strings)](./ABANDONED.md#csjson)
+
+[de.json (150 untranslated strings)](./ABANDONED.md#dejson)
+
+[es.json (364 untranslated strings)](./ABANDONED.md#esjson)
+
+[ko.json (164 untranslated strings)](./ABANDONED.md#kojson)
+
+[pt-BR.json (112 untranslated strings)](./ABANDONED.md#ptbrjson)
+
+[ru.json (1229 untranslated strings)](./ABANDONED.md#rujson)
+
+[sv.json (350 untranslated strings)](./ABANDONED.md#svjson)
+
+
+
+|Key|fr|it|ja|pl|zh-TW|
+|:---|:---:|:---:|:---:|:---:|:---:|
+|**Remaining**:|**7**|**4**|**9**|**7**|**11**|
+|[CoC7.EraRegency](#coc7eraregency)|✅|✅|✅|✅|❌|
+|[CoC7.EraRegencyPulp](#coc7eraregencypulp)|✅|✅|✅|✅|❌|
+|[CoC7.ErrorTokenIncorrect](#coc7errortokenincorrect)|✅|✅|❌|✅|❌|
+|[CoC7.SanityLossType](#coc7sanitylosstype)|✅|✅|❌|✅|❌|
+|[CoC7.System.Documentation](#coc7systemdocumentation)|❌|✅|❌|❌|❌|
+|[CoC7.TokenCreationRoll.ButtonAverage](#coc7tokencreationrollbuttonaverage)|❌|❌|❌|❌|❌|
+|[CoC7.TokenCreationRoll.ButtonRoll](#coc7tokencreationrollbuttonroll)|❌|❌|❌|❌|❌|
+|[CoC7.TokenCreationRoll.Prompt](#coc7tokencreationrollprompt)|❌|❌|❌|❌|❌|
+|[CoC7.TokenCreationRoll.Title](#coc7tokencreationrolltitle)|❌|❌|❌|❌|❌|
+|[SETTINGS.SceneDistanceNotCalcualtedNoError](#settingsscenedistancenotcalcualtednoerror)|❌|✅|❌|❌|❌|
+|[SETTINGS.SceneDistanceNotCalcualtedNoErrorHint](#settingsscenedistancenotcalcualtednoerrorhint)|❌|✅|❌|❌|❌|
##### CoC7.EraRegency
``` "CoC7.EraRegency": "Regency Cthulhu - Standard",```
##### CoC7.EraRegencyPulp
``` "CoC7.EraRegencyPulp": "Regency Cthulhu - Pulp",```
##### CoC7.ErrorTokenIncorrect
``` "CoC7.ErrorTokenIncorrect": "Unable to find selected token",```
-##### CoC7.InvestigatorWizard.AddBonusPointsToSkills
-``` "CoC7.InvestigatorWizard.AddBonusPointsToSkills": "Add {bonusPoints} bonus skill points divided among any of the following skills: {skills}",```
-##### CoC7.InvestigatorWizard.AgeRange
-``` "CoC7.InvestigatorWizard.AgeRange": "Age (15-89):",```
-##### CoC7.InvestigatorWizard.AllowRerolls
-``` "CoC7.InvestigatorWizard.AllowRerolls": "Allow characteristics to be rerolled",```
-##### CoC7.InvestigatorWizard.ArchetypeCounts
-``` "CoC7.InvestigatorWizard.ArchetypeCounts": "You currently have {count} archetypes. The system comes with a default archetypes with a CoC ID set. You can add more archetypes with valid CoC ID values using the header on then archetypes item sheet. Compendiums with these values set will automatically be added to the available list.",```
-##### CoC7.InvestigatorWizard.ArchetypeDefaultSkills
-``` "CoC7.InvestigatorWizard.ArchetypeDefaultSkills": "All {count} of the following skill(s)",```
-##### CoC7.InvestigatorWizard.ArchetypeOptionalSkills
-``` "CoC7.InvestigatorWizard.ArchetypeOptionalSkills": "Check with your keeper before selecting the following skills",```
-##### CoC7.InvestigatorWizard.ArchetypePage
-``` "CoC7.InvestigatorWizard.ArchetypePage": "Selecting your character archetype will set additional default skills on your character sheet.",```
-##### CoC7.InvestigatorWizard.ArchetypeSelect
-``` "CoC7.InvestigatorWizard.ArchetypeSelect": "Select your archetype",```
-##### CoC7.InvestigatorWizard.Archetypes
-``` "CoC7.InvestigatorWizard.Archetypes": "Pulp Archetypes",```
-##### CoC7.InvestigatorWizard.BackStep
-``` "CoC7.InvestigatorWizard.BackStep": "Back",```
-##### CoC7.InvestigatorWizard.ChangingEraDelay
-``` "CoC7.InvestigatorWizard.ChangingEraDelay": "Changing era please wait",```
-##### CoC7.InvestigatorWizard.CharacterAvatarImage
-``` "CoC7.InvestigatorWizard.CharacterAvatarImage": "Avatar Image",```
-##### CoC7.InvestigatorWizard.CharacterTokenImage
-``` "CoC7.InvestigatorWizard.CharacterTokenImage": "Token Image",```
-##### CoC7.InvestigatorWizard.CharacteristicDragInformation
-``` "CoC7.InvestigatorWizard.CharacteristicDragInformation": "Drag your characteristics",```
-##### CoC7.InvestigatorWizard.Characteristics
-``` "CoC7.InvestigatorWizard.Characteristics": "Characteristic values",```
-##### CoC7.InvestigatorWizard.CoreCharacteristicName
-``` "CoC7.InvestigatorWizard.CoreCharacteristicName": "Core characteristic: {coreCharacteristic}.",```
-##### CoC7.InvestigatorWizard.CoreCharacteristicSelect
-``` "CoC7.InvestigatorWizard.CoreCharacteristicSelect": "Archetype core characteristic",```
-##### CoC7.InvestigatorWizard.CreateInstructions
-``` "CoC7.InvestigatorWizard.CreateInstructions": "Click create to create your character. You Keeper needs to be online for the character to be created.",```
-##### CoC7.InvestigatorWizard.CreateStep
-``` "CoC7.InvestigatorWizard.CreateStep": "Create",```
-##### CoC7.InvestigatorWizard.CreatingInvestigator
-``` "CoC7.InvestigatorWizard.CreatingInvestigator": "Please wait while the keeper creates your investigator.",```
-##### CoC7.InvestigatorWizard.DeductPointsFromCharacteristics
-``` "CoC7.InvestigatorWizard.DeductPointsFromCharacteristics": "Deduct {total} points among {from}",```
-##### CoC7.InvestigatorWizard.EnforcePointBuy
-``` "CoC7.InvestigatorWizard.EnforcePointBuy": "Enforce point buy",```
-##### CoC7.InvestigatorWizard.Introduction
-``` "CoC7.InvestigatorWizard.Introduction": "The Investigator Creation Wizard is a step-by-step process for creating a brand-new investigator.",```
-##### CoC7.InvestigatorWizard.IntroductionKeeper
-``` "CoC7.InvestigatorWizard.IntroductionKeeper": "Your world is set to the "{era}" era this can be changed under settings or on the next page.",```
-##### CoC7.InvestigatorWizard.MakeEDUImprovementCheck
-``` "CoC7.InvestigatorWizard.MakeEDUImprovementCheck": "Make an improvement check for EDU",```
-##### CoC7.InvestigatorWizard.MakeEDUImprovementChecks
-``` "CoC7.InvestigatorWizard.MakeEDUImprovementChecks": "Make {total} improvement checks for EDU",```
-##### CoC7.InvestigatorWizard.NextStep
-``` "CoC7.InvestigatorWizard.NextStep": "Next",```
-##### CoC7.InvestigatorWizard.OccupationCounts
-``` "CoC7.InvestigatorWizard.OccupationCounts": "You currently have {count} occupations. The system comes with a default occupation with a CoC ID set. You can add more occupations with valid CoC ID values using the header on then occupation item sheet. Compendiums with these values set will automatically be added to the available list.",```
-##### CoC7.InvestigatorWizard.OccupationCreditRating
-``` "CoC7.InvestigatorWizard.OccupationCreditRating": "Credit Rating",```
-##### CoC7.InvestigatorWizard.OccupationDefaultSkills
-``` "CoC7.InvestigatorWizard.OccupationDefaultSkills": "All {count} of the following skill(s)",```
-##### CoC7.InvestigatorWizard.OccupationPage
-``` "CoC7.InvestigatorWizard.OccupationPage": "Occupations give you a set of bonus points to split between eight skills and credit rating",```
-##### CoC7.InvestigatorWizard.OccupationPersonalThisMany
-``` "CoC7.InvestigatorWizard.OccupationPersonalThisMany": "{count} personal skill(s)",```
-##### CoC7.InvestigatorWizard.OccupationPickThisMany
-``` "CoC7.InvestigatorWizard.OccupationPickThisMany": "{count} of the following skill(s)",```
-##### CoC7.InvestigatorWizard.OccupationSelect
-``` "CoC7.InvestigatorWizard.OccupationSelect": "Select your occupation",```
-##### CoC7.InvestigatorWizard.OccupationSkillPoints
-``` "CoC7.InvestigatorWizard.OccupationSkillPoints": "Occupation Skill Points",```
-##### CoC7.InvestigatorWizard.OccupationSkills
-``` "CoC7.InvestigatorWizard.OccupationSkills": "Occupation Skills",```
-##### CoC7.InvestigatorWizard.Occupations
-``` "CoC7.InvestigatorWizard.Occupations": "Occupations",```
-##### CoC7.InvestigatorWizard.OtherPlayerOwnership
-``` "CoC7.InvestigatorWizard.OtherPlayerOwnership": "Default permission level for players that did not create this investigator",```
-##### CoC7.InvestigatorWizard.PlayerEnabled
-``` "CoC7.InvestigatorWizard.PlayerEnabled": "Allow players without actor creation permission to create investigators",```
-##### CoC7.InvestigatorWizard.PlayerQuantity
-``` "CoC7.InvestigatorWizard.PlayerQuantity": "How many investigators can one player have ownership of?",```
-##### CoC7.InvestigatorWizard.QuickFireValues
-``` "CoC7.InvestigatorWizard.QuickFireValues": "Quick fire characteristics values",```
-##### CoC7.InvestigatorWizard.ReducePointsFromCharacteristic
-``` "CoC7.InvestigatorWizard.ReducePointsFromCharacteristic": "Reduce {from} by {total}",```
-##### CoC7.InvestigatorWizard.RollTwiceForLuck
-``` "CoC7.InvestigatorWizard.RollTwiceForLuck": "Roll a second time for luck",```
-##### CoC7.InvestigatorWizard.SetupAny
-``` "CoC7.InvestigatorWizard.SetupAny": "No default",```
-##### CoC7.InvestigatorWizard.SetupCounts
-``` "CoC7.InvestigatorWizard.SetupCounts": "You currently have {count} setup options. It is recommended you set a single setup for all your players to set the default skills on your character sheet. The system comes with a default setup with a CoC ID set. You can add more setups with valid CoC ID values using the header on then setup item sheet. Compendiums with these values set will automatically be added to the available list.",```
-##### CoC7.InvestigatorWizard.SetupPage
-``` "CoC7.InvestigatorWizard.SetupPage": "Selecting your era will set the default skills on your character sheet.",```
-##### CoC7.InvestigatorWizard.SetupSelect
-``` "CoC7.InvestigatorWizard.SetupSelect": "Select your investigator setup",```
-##### CoC7.InvestigatorWizard.Setups
-``` "CoC7.InvestigatorWizard.Setups": "Character sheets",```
-##### CoC7.InvestigatorWizard.SkillSpendArchetypeCountIncorrect
-``` "CoC7.InvestigatorWizard.SkillSpendArchetypeCountIncorrect": "You have selected {count} of {max} archetype skills, check with your Keeper before removing standard archetype skills.",```
-##### CoC7.InvestigatorWizard.SkillSpendArchetypePoints
-``` "CoC7.InvestigatorWizard.SkillSpendArchetypePoints": "Archetype points {count} of {total} remaining {remaining}",```
-##### CoC7.InvestigatorWizard.SkillSpendInterestPoints
-``` "CoC7.InvestigatorWizard.SkillSpendInterestPoints": "Personal interest points {count} of {total} remaining {remaining}",```
-##### CoC7.InvestigatorWizard.SkillSpendOccupationCountIncorrect
-``` "CoC7.InvestigatorWizard.SkillSpendOccupationCountIncorrect": "You have selected {count} of {max} occupation skills, check with your Keeper before removing standard occupation skills.",```
-##### CoC7.InvestigatorWizard.SkillSpendOccupationPoints
-``` "CoC7.InvestigatorWizard.SkillSpendOccupationPoints": "Occupation skill points {count} of {total} remaining {remaining}",```
-##### CoC7.InvestigatorWizard.SuggestedOccupations
-``` "CoC7.InvestigatorWizard.SuggestedOccupations": "Suggested Occupations: {suggested}",```
-##### CoC7.InvestigatorWizard.SuggestedTraits
-``` "CoC7.InvestigatorWizard.SuggestedTraits": "Suggested Traits: {suggested}",```
-##### CoC7.InvestigatorWizard.Title
-``` "CoC7.InvestigatorWizard.Title": "Investigator Creation Wizard",```
-##### CoC7.InvestigatorWizard.TitleAdjustCharacteristics
-``` "CoC7.InvestigatorWizard.TitleAdjustCharacteristics": "Adjust Characteristics",```
-##### CoC7.InvestigatorWizard.TitleArchetypeSkills
-``` "CoC7.InvestigatorWizard.TitleArchetypeSkills": "Archetype Skills",```
-##### CoC7.InvestigatorWizard.TitleAttributes
-``` "CoC7.InvestigatorWizard.TitleAttributes": "Attributes",```
-##### CoC7.InvestigatorWizard.TitleBackstory
-``` "CoC7.InvestigatorWizard.TitleBackstory": "Investigator Backstory",```
-##### CoC7.InvestigatorWizard.TitleCharacteristics
-``` "CoC7.InvestigatorWizard.TitleCharacteristics": "Characteristics",```
-##### CoC7.InvestigatorWizard.TitleCreate
-``` "CoC7.InvestigatorWizard.TitleCreate": "Create Investigator",```
-##### CoC7.InvestigatorWizard.TitleDetails
-``` "CoC7.InvestigatorWizard.TitleDetails": "Investigator Details",```
-##### CoC7.InvestigatorWizard.TitleKeeperConfiguration
-``` "CoC7.InvestigatorWizard.TitleKeeperConfiguration": "Keeper Configuration",```
-##### CoC7.InvestigatorWizard.TitleOccupationSkills
-``` "CoC7.InvestigatorWizard.TitleOccupationSkills": "Occupation Skills",```
-##### CoC7.InvestigatorWizard.TitlePointsSkills
-``` "CoC7.InvestigatorWizard.TitlePointsSkills": "Spend Skill Points",```
-##### CoC7.InvestigatorWizard.TitleSelectArchetype
-``` "CoC7.InvestigatorWizard.TitleSelectArchetype": "Archetype Selection",```
-##### CoC7.InvestigatorWizard.TitleSelectOccupation
-``` "CoC7.InvestigatorWizard.TitleSelectOccupation": "Occupation Selection",```
-##### CoC7.InvestigatorWizard.TitleSelectSetup
-``` "CoC7.InvestigatorWizard.TitleSelectSetup": "Investigator Setup",```
-##### CoC7.InvestigatorWizard.UseSetupMethod
-``` "CoC7.InvestigatorWizard.UseSetupMethod": "Use method from setup item",```
-##### CoC7.MonetaryCreditRatingMax
-``` "CoC7.MonetaryCreditRatingMax": "Max",```
-##### CoC7.MonetaryCreditRatingMin
-``` "CoC7.MonetaryCreditRatingMin": "Min",```
-##### CoC7.MonetaryDefaultAverage
-``` "CoC7.MonetaryDefaultAverage": "Average",```
-##### CoC7.MonetaryDefaultPenniless
-``` "CoC7.MonetaryDefaultPenniless": "Penniless",```
-##### CoC7.MonetaryDefaultPoor
-``` "CoC7.MonetaryDefaultPoor": "Poor",```
-##### CoC7.MonetaryDefaultRich
-``` "CoC7.MonetaryDefaultRich": "Rich",```
-##### CoC7.MonetaryDefaultSuperRich
-``` "CoC7.MonetaryDefaultSuperRich": "Super Rich",```
-##### CoC7.MonetaryDefaultWealthy
-``` "CoC7.MonetaryDefaultWealthy": "Wealthy",```
-##### CoC7.MonetaryFormatDecimalLeft
-``` "CoC7.MonetaryFormatDecimalLeft": "Decimal (?0.00)",```
-##### CoC7.MonetaryFormatDecimalRight
-``` "CoC7.MonetaryFormatDecimalRight": "Decimal (0.00 ?)",```
-##### CoC7.MonetaryFormatIntegerLeft
-``` "CoC7.MonetaryFormatIntegerLeft": "Integer (?0)",```
-##### CoC7.MonetaryFormatIntegerRight
-``` "CoC7.MonetaryFormatIntegerRight": "Integer (0 ?)",```
-##### CoC7.MonetaryFormatLsd
-``` "CoC7.MonetaryFormatLsd": "£sd",```
-##### CoC7.MonetaryFormatRoman
-``` "CoC7.MonetaryFormatRoman": "Roman",```
-##### CoC7.MonetaryFormatTitle
-``` "CoC7.MonetaryFormatTitle": "Money Format :",```
-##### CoC7.MonetaryTitle
-``` "CoC7.MonetaryTitle": "Cash and Assets",```
-##### CoC7.MonetaryTypeAsses
-``` "CoC7.MonetaryTypeAsses": "Asses",```
-##### CoC7.MonetaryTypeCreditRating
-``` "CoC7.MonetaryTypeCreditRating": "CR x",```
-##### CoC7.MonetaryTypeDenarii
-``` "CoC7.MonetaryTypeDenarii": "Denarii",```
-##### CoC7.MonetaryTypeDeniers
-``` "CoC7.MonetaryTypeDeniers": "Deniers / Pennies",```
-##### CoC7.MonetaryTypeNone
-``` "CoC7.MonetaryTypeNone": "None",```
-##### CoC7.MonetaryTypeOne
-``` "CoC7.MonetaryTypeOne": "1 x",```
-##### CoC7.MonetaryTypeQuinarii
-``` "CoC7.MonetaryTypeQuinarii": "Quinarii",```
-##### CoC7.MonetaryTypeSestertii
-``` "CoC7.MonetaryTypeSestertii": "Sestertii",```
-##### CoC7.MonetaryTypeSous
-``` "CoC7.MonetaryTypeSous": "Sous / Shillings",```
-##### CoC7.MonetaryValueAssets
-``` "CoC7.MonetaryValueAssets": "Assets",```
-##### CoC7.MonetaryValueCash
-``` "CoC7.MonetaryValueCash": "Cash",```
-##### CoC7.MonetaryValueSpendingLevel
-``` "CoC7.MonetaryValueSpendingLevel": "Spending",```
##### CoC7.SanityLossType
``` "CoC7.SanityLossType": "Type",```
-##### CoC7.Settings.DropCoCID.Dialog
-``` "CoC7.Settings.DropCoCID.Dialog": "Use the CoC ID for dropped items where possible? This allows the system to select the correct item for your world era.",```
-##### CoC7.Settings.DropCoCID.Hint
-``` "CoC7.Settings.DropCoCID.Hint": "When dropping items with a CoC ID prompt to store the CoC ID instead of the item",```
-##### CoC7.Settings.DropCoCID.IgnoreCoCID
-``` "CoC7.Settings.DropCoCID.IgnoreCoCID": "Do Not Use CoC ID",```
-##### CoC7.Settings.DropCoCID.Name
-``` "CoC7.Settings.DropCoCID.Name": "Use CoC ID on item drops",```
-##### CoC7.Settings.DropCoCID.Prompt
-``` "CoC7.Settings.DropCoCID.Prompt": "Prompt each time",```
-##### CoC7.Settings.DropCoCID.Remember
-``` "CoC7.Settings.DropCoCID.Remember": "Remember this selection, you can change this under settings",```
-##### CoC7.Settings.DropCoCID.UseCoCID
-``` "CoC7.Settings.DropCoCID.UseCoCID": "Use CoC ID Where Possible",```
-##### CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint
-``` "CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint": "Do not alter movement rate based on age. When using the investigator wizard improvements and characteristic adjustments are not made",```
-##### CoC7.Settings.PulpRules.IgnoreAgePenalties.Name
-``` "CoC7.Settings.PulpRules.IgnoreAgePenalties.Name": "Ignore Age Penalties",```
-##### CoC7.Settings.WorldEra.Hint
-``` "CoC7.Settings.WorldEra.Hint": "Skills can vary slightly between eras, please select the era for this world so system searches for skills find the correct ones.",```
-##### CoC7.Settings.WorldEra.Name
-``` "CoC7.Settings.WorldEra.Name": "Era for the world",```
-##### CoC7.SkillKeepBaseValue
-``` "CoC7.SkillKeepBaseValue": "Keep Base Value",```
-##### CoC7.SkillPickNameOnly
-``` "CoC7.SkillPickNameOnly": "Select Specialization",```
-##### CoC7.SkillRarityShort
-``` "CoC7.SkillRarityShort": "[UC]",```
-##### CoC7.SkillRequiresName
-``` "CoC7.SkillRequiresName": "Requires Name",```
-##### CoC7.SkillSpecializationIsUnique
-``` "CoC7.SkillSpecializationIsUnique": "Unique Specialization",```
##### CoC7.System.Documentation
``` "CoC7.System.Documentation": "View CoC7 System Manual",```
##### CoC7.TokenCreationRoll.ButtonAverage
diff --git a/generate-translations.js b/generate-translations.js
index 3f5a2b61..84ae41aa 100644
--- a/generate-translations.js
+++ b/generate-translations.js
@@ -9,7 +9,7 @@ const abandoned = {}
const source = jsonfile.readFileSync('./lang/en.json')
const keys = Object.keys(source)
-const maxMissingKeys = 153
+const maxMissingKeys = 50
glob('./lang/*.json', {}, async function (er, files) {
await Promise.all(
@@ -65,11 +65,11 @@ glob('./lang/*.json', {}, async function (er, files) {
'** translation is currently up to date\n\n'
}
if (Object.keys(abandoned).length > 0) {
- output =
- output +
- 'The following translations have more than ' + maxMissingKeys + ' untranslated strings **' +
- Object.keys(abandoned).join('**, **') +
- '**, [are you able to help?](./ABANDONED.md)\n\n'
+ output = output + 'The following translations have more than ' + maxMissingKeys + ' untranslated strings [are you able to help?](./ABANDONED.md)\n\n'
+ Object.entries(abandoned).forEach(([key, values]) => {
+ output = output + '[' + key + '.json (' + Object.entries(abandoned[key]).length + ' untranslated strings)](./ABANDONED.md#' + (key + '.json').toLowerCase().replace(/[^a-zA-Z0-9]+/g, '') + ')\n\n'
+ })
+ output = output + '\n\n'
}
if (missing.length > 0) {
output = output + '|Key|'
From 9e94bb276c3a760072108ab4a73ea5080bd501c6 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sun, 12 Nov 2023 14:36:26 +0000
Subject: [PATCH 23/38] Fix CoC ID filtering by language and prevent trying to
get best CoC ID for any era
---
module/scripts/coc-id.js | 65 +++++++++++++++++++++++-----------------
1 file changed, 38 insertions(+), 27 deletions(-)
diff --git a/module/scripts/coc-id.js b/module/scripts/coc-id.js
index c371a1c9..76d0d390 100644
--- a/module/scripts/coc-id.js
+++ b/module/scripts/coc-id.js
@@ -82,7 +82,10 @@ export class CoCID {
static eraText (era) {
if (era === false) {
return game.i18n.localize('CoC7.Any')
+ } else if (era === true) {
+ era = game.settings.get('CoC7', 'worldEra')
}
+
return game.i18n.format(COC7.eras[era] ?? 'CoC7.CoCIDFlag.error.unknown-era', { era })
}
@@ -285,11 +288,15 @@ export class CoCID {
* @param cocidRegExp regex used on the CoCID
* @param type the first part of the wanted CoCID, for example 'i', 'a', 'je'
* @param lang the language to match against ("en", "es", ...)
- * @param era the eras to match against ('standard', 'modernPulp', ...), true = world default, false = no filter
+ * @param era the eras to match against ('standard', 'modernPulp', ...), true = world default
* @param langFallback should the system fall back to en incase there is no translation
* @param showLoading Show loading bar
*/
static async fromCoCIDRegexBest ({ cocidRegExp, type, lang = game.i18n.lang, era = true, langFallback = true, showLoading = false } = {}) {
+ if (era === false) {
+ ui.notifications.error(game.i18n.format('CoC7.CoCIDFlag.error.unknown-era', { era: '' }))
+ return []
+ }
const allDocuments = await this.fromCoCIDRegexAll({ cocidRegExp, type, lang, era, scope: 'all', langFallback, showLoading })
const bestDocuments = this.filterBestCoCID(allDocuments)
return bestDocuments
@@ -302,10 +309,14 @@ export class CoCID {
* in compendium packs.
* @param cocid string CoCID
* @param lang the language to match against ("en", "es", ...)
- * @param era the eras to match against ('standard', 'modernPulp', ...), true = world default, false = no filter
+ * @param era the eras to match against ('standard', 'modernPulp', ...), true = world default
* @param langFallback should the system fall back to en incase there is no translation
*/
static fromCoCID (cocid, lang = game.i18n.lang, era = true, langFallback = true) {
+ if (era === false) {
+ ui.notifications.error(game.i18n.format('CoC7.CoCIDFlag.error.unknown-era', { era: '' }))
+ return []
+ }
return CoCID.fromCoCIDBest({ cocid, lang, era, langFallback })
}
@@ -316,7 +327,7 @@ export class CoCID {
* in compendium packs.
* @param cocid string CoCID
* @param lang the language to match against ("en", "es", ...)
- * @param era the eras to match against ('standard', 'modernPulp', ...), true = world default, false = no filter
+ * @param era the eras to match against ('standard', 'modernPulp', ...), true = world default
* @param langFallback should the system fall back to en incase there is no translation
* @param showLoading Show loading bar
*/
@@ -324,13 +335,17 @@ export class CoCID {
if (!cocid || typeof cocid !== 'string') {
return []
}
+ if (era === false) {
+ ui.notifications.error(game.i18n.format('CoC7.CoCIDFlag.error.unknown-era', { era: '' }))
+ return []
+ }
const type = cocid.split('.')[0]
const cocidRegExp = new RegExp('^' + CoC7Utilities.quoteRegExp(cocid) + '$')
return CoCID.fromCoCIDRegexBest({ cocidRegExp, type, lang, era, langFallback, showLoading })
}
/**
- * For an array of documents, returns only those that are the "best" version of their CoCID
+ * For an array of documents already processed by filterAllCoCID, returns only those that are the "best" version of their CoCID
* @param documents
* @returns
*/
@@ -340,32 +355,29 @@ export class CoCID {
for (const doc of documents) {
const docCoCID = doc.getFlag('CoC7', 'cocidFlag')?.id
if (docCoCID) {
- const currentExists = bestMatchDocuments.get(docCoCID)?.id
- const docLang = doc.getFlag('CoC7', 'cocidFlag')?.lang ?? 'en'
- const existingLang = bestMatchDocuments.get(docCoCID)?.getFlag('CoC7', 'cocidFlag')?.lang ?? 'en'
- const preferLang = (!currentExists || existingLang === 'en' || existingLang === docLang)
- // console.log('preferLang', '>', docLang, '< >', existingLang, '<', preferLang)
+ const currentExists = bestMatchDocuments.get(docCoCID)
+ // Prefer pack === '' if possible
const docPack = (doc.pack ?? '')
- const existingPack = (bestMatchDocuments.get(docCoCID)?.pack ?? '')
- const preferWorld = (!currentExists || docPack === '' || existingPack !== '')
- // console.log('preferWorld', '>', docPack, '< >', existingPack, '<', preferWorld)
- const docPriority = parseInt(doc.getFlag('CoC7', 'cocidFlag')?.priority, 10)
- const existingPriority = parseInt(bestMatchDocuments.get(docCoCID)?.getFlag('CoC7', 'cocidFlag')?.priority ?? Number.MIN_SAFE_INTEGER)
- const preferPriority = (!currentExists || docPriority === existingPriority || docPriority > existingPriority)
- // console.log('preferPriority', '>', docPriority, '< >', existingPriority, '<', preferPriority)
- if (preferLang && preferWorld && preferPriority) {
+ const existingPack = (currentExists?.pack ?? '')
+ const preferWorld = (typeof currentExists === 'undefined' || (docPack === '' && existingPack !== '') || (docPack !== '' && existingPack !== ''))
+ // Prefer highest priority
+ let docPriority = parseInt(doc.getFlag('CoC7', 'cocidFlag')?.priority ?? Number.MIN_SAFE_INTEGER, 10)
+ docPriority = (isNaN(docPriority) ? Number.MIN_SAFE_INTEGER : docPriority)
+ let existingPriority = parseInt(currentExists?.priority ?? Number.MIN_SAFE_INTEGER, 10)
+ existingPriority = (isNaN(existingPriority) ? Number.MIN_SAFE_INTEGER : existingPriority)
+ const preferPriority = (typeof currentExists === 'undefined' || docPriority >= existingPriority)
+ if (preferWorld && preferPriority) {
bestMatchDocuments.set(docCoCID, doc)
}
}
}
-
return [...bestMatchDocuments.values()]
}
/**
* For an array of documents, returns filter out en documents if a translated one exists matching the same eras
* @param documents
- * @param langFallback should the system fall back to en incase there is no translation
+ * @param langFallback should the system fall back to en in case there is no translation
* @returns
*/
static filterAllCoCID (documents, langFallback) {
@@ -373,21 +385,20 @@ export class CoCID {
return documents
}
const bestMatchDocuments = new Map()
-
for (const doc of documents) {
const docCoCID = doc.getFlag('CoC7', 'cocidFlag')?.id
- const docEras = Object.entries(doc.getFlag('CoC7', 'cocidFlag')?.eras ?? {}).filter(e => e[1]).map(e => e[0]).join('/')
if (docCoCID) {
- const currentExists = bestMatchDocuments.get(docCoCID)?.id
+ const docEras = Object.entries(doc.getFlag('CoC7', 'cocidFlag')?.eras ?? {}).filter(e => e[1]).map(e => e[0]).sort().join('/')
+ const docPriority = parseInt(doc.getFlag('CoC7', 'cocidFlag')?.priority ?? Number.MIN_SAFE_INTEGER, 10)
+ const key = docCoCID + '/' + docEras + '/' + (isNaN(docPriority) ? Number.MIN_SAFE_INTEGER : docPriority)
+ const currentExists = bestMatchDocuments.get(key)
const docLang = doc.getFlag('CoC7', 'cocidFlag')?.lang ?? 'en'
- const existingLang = bestMatchDocuments.get(docCoCID)?.getFlag('CoC7', 'cocidFlag')?.lang ?? 'en'
- const preferLang = (!currentExists || existingLang === 'en' || existingLang === docLang)
- if (preferLang) {
- bestMatchDocuments.set(docCoCID + '/' + docEras, doc)
+ const existingLang = currentExists?.getFlag('CoC7', 'cocidFlag')?.lang ?? 'en'
+ if (typeof currentExists === 'undefined' || (existingLang === 'en' && existingLang !== docLang)) {
+ bestMatchDocuments.set(key, doc)
}
}
}
-
return [...bestMatchDocuments.values()]
}
From 0006b53b0abf035d62c87c0c4a389a4327fcb7ff Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sun, 12 Nov 2023 14:39:36 +0000
Subject: [PATCH 24/38] Add missing era Any text to error message
---
module/scripts/coc-id.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/module/scripts/coc-id.js b/module/scripts/coc-id.js
index 76d0d390..b3f05448 100644
--- a/module/scripts/coc-id.js
+++ b/module/scripts/coc-id.js
@@ -294,7 +294,7 @@ export class CoCID {
*/
static async fromCoCIDRegexBest ({ cocidRegExp, type, lang = game.i18n.lang, era = true, langFallback = true, showLoading = false } = {}) {
if (era === false) {
- ui.notifications.error(game.i18n.format('CoC7.CoCIDFlag.error.unknown-era', { era: '' }))
+ ui.notifications.error(game.i18n.format('CoC7.CoCIDFlag.error.unknown-era', { era: game.i18n.localize('CoC7.Any') }))
return []
}
const allDocuments = await this.fromCoCIDRegexAll({ cocidRegExp, type, lang, era, scope: 'all', langFallback, showLoading })
@@ -314,7 +314,7 @@ export class CoCID {
*/
static fromCoCID (cocid, lang = game.i18n.lang, era = true, langFallback = true) {
if (era === false) {
- ui.notifications.error(game.i18n.format('CoC7.CoCIDFlag.error.unknown-era', { era: '' }))
+ ui.notifications.error(game.i18n.format('CoC7.CoCIDFlag.error.unknown-era', { era: game.i18n.localize('CoC7.Any') }))
return []
}
return CoCID.fromCoCIDBest({ cocid, lang, era, langFallback })
@@ -336,7 +336,7 @@ export class CoCID {
return []
}
if (era === false) {
- ui.notifications.error(game.i18n.format('CoC7.CoCIDFlag.error.unknown-era', { era: '' }))
+ ui.notifications.error(game.i18n.format('CoC7.CoCIDFlag.error.unknown-era', { era: game.i18n.localize('CoC7.Any') }))
return []
}
const type = cocid.split('.')[0]
From f437292fc3e51023c595a4a25c8add606e760448 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sun, 12 Nov 2023 15:50:20 +0000
Subject: [PATCH 25/38] Update CHANGELOG.md
---
.github/CHANGELOG.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index 76041ac5..fdf399a0 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -10,6 +10,7 @@ Happy gaming !
When not specified, all changes were made by @castanhocorreia, @HavlockV, and @snap01.
- Fix a bug where token image wasn't set properly with generic icon
+- Fix CoC ID filtering by language and era issues, thanks to @Technus, #1418
- Fix dholehouse importer for characters with a single item on their possesions. Fixes #1423, thanks to @pconcepcion #1424
- Fix guessing CoC ID on spells doesn't save on first attempt.
- Fix Lock / Unlock / Roll / mode change not supported on actors in compendium. Fixes #1432
From 9014416de0585e3daece8d3529cd00cc92b843c8 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sun, 12 Nov 2023 18:10:13 +0000
Subject: [PATCH 26/38] Add optional occupation personal skill text. Defaults
value to 0 is missing during investigator wizard
---
lang/en.json | 2 +-
module/apps/investigator-wizard.js | 5 ++++-
template.json | 1 +
templates/apps/investigator-wizard/select-occupation.hbs | 4 ++++
templates/apps/investigator-wizard/set-occupation-skills.hbs | 2 +-
templates/items/occupation.html | 3 ++-
6 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/lang/en.json b/lang/en.json
index 5852de04..4be7d01c 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -834,7 +834,7 @@
"CoC7.EmptySkillList": "Add a skill by dropping it here.",
"CoC7.EmptyItemList": "Add an item by dropping it here.",
"CoC7.EmptyCharacterSkillList": "Add a setup, occupation, or skill by dropping it here.",
- "CoC7.PersonalSpeciality": "Number of personal or era specialty",
+ "CoC7.PersonalSpecialityPlaceholder": "other skill(s) as personal or era specialties",
"CoC7.AdditionalSkills": "Additional Skills",
"CoC7.SkillSelectionWindow": "Select optional skills",
"CoC7.SelectPersonalSkills": "Select {number} skill(s) as personal interest skills",
diff --git a/module/apps/investigator-wizard.js b/module/apps/investigator-wizard.js
index e8e54e04..d35496ef 100644
--- a/module/apps/investigator-wizard.js
+++ b/module/apps/investigator-wizard.js
@@ -505,6 +505,7 @@ export class CoC7InvestigatorWizard extends FormApplication {
sheetData.occupationPointsString = CoC7OccupationSheet.occupationPointsString(occupation.system.occupationSkillPoints)
sheetData.creditRating = occupation.system.creditRating
sheetData.personal = occupation.system.personal
+ sheetData.personalText = occupation.system.personalText
sheetData.skills = await this.expandItemArray(occupation.system.skills)
sheetData.groups = {}
for (let index = 0; index < occupation.system.groups.length; index++) {
@@ -623,7 +624,7 @@ export class CoC7InvestigatorWizard extends FormApplication {
})
}
}
- sheetData.max = parseInt(sheetData.default, 10) + parseInt(sheetData.object.personal, 10) + Object.values(sheetData.object.occupationGroups).reduce((s, v) => s + parseInt(v, 10), 0)
+ sheetData.max = (parseInt(sheetData.default, 10) || 0) + (parseInt(sheetData.object.personal, 10) || 0) + Object.values(sheetData.object.occupationGroups).reduce((s, v) => s + (parseInt(v, 10) || 0), 0)
sheetData.skillItems.sort(CoC7Utilities.sortByNameKey)
if (sheetData.selected === sheetData.max) {
sheetData.canNext = true
@@ -981,6 +982,7 @@ export class CoC7InvestigatorWizard extends FormApplication {
})
}
this.object.personal = occupation.system.personal
+ this.object.personalText = occupation.system.personalText
this.object.creditRating = occupation.system.creditRating
let items = []
items = await this.expandItemArray(setup.system.items)
@@ -1862,6 +1864,7 @@ export class CoC7InvestigatorWizard extends FormApplication {
occupation: '',
bioSections: [],
personal: 0,
+ personalText: '',
creditRating: {
min: 0,
max: 0
diff --git a/template.json b/template.json
index 2d29eef8..1c882a2d 100644
--- a/template.json
+++ b/template.json
@@ -529,6 +529,7 @@
"skills": [],
"groups": [],
"personal": null,
+ "personalText": "",
"attributes": {},
"properties": {},
"flags": {}
diff --git a/templates/apps/investigator-wizard/select-occupation.hbs b/templates/apps/investigator-wizard/select-occupation.hbs
index 3550c6f8..5b9034af 100644
--- a/templates/apps/investigator-wizard/select-occupation.hbs
+++ b/templates/apps/investigator-wizard/select-occupation.hbs
@@ -40,7 +40,11 @@
{{/each}}
{{#if personal}}
+ {{#if personalText}}
+
{{/unless}}
From fdbbffbace7644b61f196c1b7e1d7a843d892818 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sun, 12 Nov 2023 18:12:42 +0000
Subject: [PATCH 27/38] Updated translations list
---
.github/TRANSLATIONS.md | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/.github/TRANSLATIONS.md b/.github/TRANSLATIONS.md
index 04386899..5498d8dd 100644
--- a/.github/TRANSLATIONS.md
+++ b/.github/TRANSLATIONS.md
@@ -4,30 +4,31 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
The following translations have more than 50 untranslated strings [are you able to help?](./ABANDONED.md)
-[cn.json (382 untranslated strings)](./ABANDONED.md#cnjson)
+[cn.json (383 untranslated strings)](./ABANDONED.md#cnjson)
-[cs.json (567 untranslated strings)](./ABANDONED.md#csjson)
+[cs.json (568 untranslated strings)](./ABANDONED.md#csjson)
-[de.json (150 untranslated strings)](./ABANDONED.md#dejson)
+[de.json (151 untranslated strings)](./ABANDONED.md#dejson)
-[es.json (364 untranslated strings)](./ABANDONED.md#esjson)
+[es.json (365 untranslated strings)](./ABANDONED.md#esjson)
-[ko.json (164 untranslated strings)](./ABANDONED.md#kojson)
+[ko.json (165 untranslated strings)](./ABANDONED.md#kojson)
-[pt-BR.json (112 untranslated strings)](./ABANDONED.md#ptbrjson)
+[pt-BR.json (113 untranslated strings)](./ABANDONED.md#ptbrjson)
[ru.json (1229 untranslated strings)](./ABANDONED.md#rujson)
-[sv.json (350 untranslated strings)](./ABANDONED.md#svjson)
+[sv.json (351 untranslated strings)](./ABANDONED.md#svjson)
|Key|fr|it|ja|pl|zh-TW|
|:---|:---:|:---:|:---:|:---:|:---:|
-|**Remaining**:|**7**|**4**|**9**|**7**|**11**|
+|**Remaining**:|**8**|**5**|**10**|**8**|**12**|
|[CoC7.EraRegency](#coc7eraregency)|✅|✅|✅|✅|❌|
|[CoC7.EraRegencyPulp](#coc7eraregencypulp)|✅|✅|✅|✅|❌|
|[CoC7.ErrorTokenIncorrect](#coc7errortokenincorrect)|✅|✅|❌|✅|❌|
+|[CoC7.PersonalSpecialityPlaceholder](#coc7personalspecialityplaceholder)|❌|❌|❌|❌|❌|
|[CoC7.SanityLossType](#coc7sanitylosstype)|✅|✅|❌|✅|❌|
|[CoC7.System.Documentation](#coc7systemdocumentation)|❌|✅|❌|❌|❌|
|[CoC7.TokenCreationRoll.ButtonAverage](#coc7tokencreationrollbuttonaverage)|❌|❌|❌|❌|❌|
@@ -42,6 +43,8 @@ The following translations have more than 50 untranslated strings [are you able
``` "CoC7.EraRegencyPulp": "Regency Cthulhu - Pulp",```
##### CoC7.ErrorTokenIncorrect
``` "CoC7.ErrorTokenIncorrect": "Unable to find selected token",```
+##### CoC7.PersonalSpecialityPlaceholder
+``` "CoC7.PersonalSpecialityPlaceholder": "other skill(s) as personal or era specialties",```
##### CoC7.SanityLossType
``` "CoC7.SanityLossType": "Type",```
##### CoC7.System.Documentation
From 621065bab13a77c28866bd52aa1b82369cb88753 Mon Sep 17 00:00:00 2001
From: snap01
Date: Sun, 12 Nov 2023 18:12:42 +0000
Subject: [PATCH 28/38] [create-pull-request] automated change
---
.github/ABANDONED.md | 37 ++++++++++++++++++++++---------------
1 file changed, 22 insertions(+), 15 deletions(-)
diff --git a/.github/ABANDONED.md b/.github/ABANDONED.md
index 2c60a5e9..68bc7158 100644
--- a/.github/ABANDONED.md
+++ b/.github/ABANDONED.md
@@ -2,25 +2,25 @@
Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry VTT better! Below is a list of translations keys on existing files that still need translated, based on `en.json`.
-[cn.json (382 untranslated strings)](#cnjson)
+[cn.json (383 untranslated strings)](#cnjson)
-[cs.json (567 untranslated strings)](#csjson)
+[cs.json (568 untranslated strings)](#csjson)
-[de.json (150 untranslated strings)](#dejson)
+[de.json (151 untranslated strings)](#dejson)
-[es.json (364 untranslated strings)](#esjson)
+[es.json (365 untranslated strings)](#esjson)
-[ko.json (164 untranslated strings)](#kojson)
+[ko.json (165 untranslated strings)](#kojson)
-[pt-BR.json (112 untranslated strings)](#ptbrjson)
+[pt-BR.json (113 untranslated strings)](#ptbrjson)
[ru.json (1229 untranslated strings)](#rujson)
-[sv.json (350 untranslated strings)](#svjson)
+[sv.json (351 untranslated strings)](#svjson)
## cn.json
-382 untranslated strings
+383 untranslated strings
```
"CoC7.ActorIsTokenHint": "Actor is a token",
"CoC7.ActorDataLinked": "Actor data are linked",
@@ -243,6 +243,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.Chase.ChasersMin": "Chasers Min: {value}",
"CoC7.Chase.ChasersMax": "Chasers Max: {value}",
"CoC7.Sane": "Sane",
+"CoC7.PersonalSpecialityPlaceholder": "other skill(s) as personal or era specialties",
"CoC7.ErrorUnableToParseFormula": "{value} is not a valid formula",
"CoC7.ErrorUnableToParseArmorFormula": "Unable to process armor value: {value}. Ignoring armor.",
"CoC7.ErrorUnableToParseSkillFormula": "Unable to parse formula: {value} for skill {name}",
@@ -406,7 +407,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
## cs.json
-567 untranslated strings
+568 untranslated strings
```
"CoC7.Entities.Character": "Character",
"CoC7.Entities.Container": "Container",
@@ -705,6 +706,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.Unreadable": "Unreadable",
"CoC7.Sane": "Sane",
"CoC7.EmptyCharacterSkillList": "Add a setup, occupation, or skill by dropping it here.",
+"CoC7.PersonalSpecialityPlaceholder": "other skill(s) as personal or era specialties",
"CoC7.WarnNoTargetsSanCheck": "You have no targets selected. Either select targets or create a link.",
"CoC7.allActors": "All Actors",
"CoC7.restTargets": "Rest Targets",
@@ -977,7 +979,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
## de.json
-150 untranslated strings
+151 untranslated strings
```
"CoC7.CustomSpecialisationLabel": "Custom label - {specialisation}",
"CoC7.EraDarkAgesPulp": "Dark Ages - Pulp",
@@ -1020,6 +1022,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.MonetaryDefaultSuperRich": "Super Rich",
"CoC7.SanityLossType": "Type",
"CoC7.ErrorTokenIncorrect": "Unable to find selected token",
+"CoC7.PersonalSpecialityPlaceholder": "other skill(s) as personal or era specialties",
"CoC7.System.Documentation": "View CoC7 System Manual",
"CoC7.Settings.PulpRules.IgnoreAgePenalties.Name": "Ignore Age Penalties",
"CoC7.Settings.PulpRules.IgnoreAgePenalties.Hint": "Do not alter movement rate based on age. When using the investigator wizard improvements and characteristic adjustments are not made",
@@ -1131,7 +1134,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
## es.json
-364 untranslated strings
+365 untranslated strings
```
"CoC7.ActorIsTokenHint": "Actor is a token",
"CoC7.ActorDataLinked": "Actor data are linked",
@@ -1337,6 +1340,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.Chase.ChasersMin": "Chasers Min: {value}",
"CoC7.Chase.ChasersMax": "Chasers Max: {value}",
"CoC7.Sane": "Sane",
+"CoC7.PersonalSpecialityPlaceholder": "other skill(s) as personal or era specialties",
"CoC7.ErrorUnableToParseFormula": "{value} is not a valid formula",
"CoC7.ErrorUnableToParseArmorFormula": "Unable to process armor value: {value}. Ignoring armor.",
"CoC7.ErrorUnableToParseSkillFormula": "Unable to parse formula: {value} for skill {name}",
@@ -1499,7 +1503,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
## ko.json
-164 untranslated strings
+165 untranslated strings
```
"CoC7.CustomSpecialisationLabel": "Custom label - {specialisation}",
"CoC7.RollDifficultyRegularTitle": "Regular difficulty",
@@ -1552,6 +1556,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.ErrorTokenIncorrect": "Unable to find selected token",
"CoC7.RemoveParticipant": "Remove participant",
"CoC7.RemoveParticipantHint": "Participant will be completely removed from the chase",
+"CoC7.PersonalSpecialityPlaceholder": "other skill(s) as personal or era specialties",
"CoC7.TextFieldInvalidJSON": "Unable to parse the JSON, please try again",
"CoC7.ActorImporterUploadError": "Import stopped, unable to write image",
"CoC7.FileUploadError": "Unable to write image, file upload error",
@@ -1667,7 +1672,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
## pt-BR.json
-112 untranslated strings
+113 untranslated strings
```
"CoC7.EraRegency": "Regency Cthulhu - Standard",
"CoC7.EraRegencyPulp": "Regency Cthulhu - Pulp",
@@ -1702,6 +1707,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.MonetaryDefaultSuperRich": "Super Rich",
"CoC7.SanityLossType": "Type",
"CoC7.ErrorTokenIncorrect": "Unable to find selected token",
+"CoC7.PersonalSpecialityPlaceholder": "other skill(s) as personal or era specialties",
"CoC7.System.Documentation": "View CoC7 System Manual",
"SETTINGS.SceneDistanceNotCalcualtedNoError": "Don't show error for ranged distance",
"SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "When starting a ranged combat if playing theatre of the mind do not show the unable to calculate distance message.",
@@ -2577,7 +2583,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.EmptySkillList": "Add a skill by dropping it here.",
"CoC7.EmptyItemList": "Add an item by dropping it here.",
"CoC7.EmptyCharacterSkillList": "Add a setup, occupation, or skill by dropping it here.",
-"CoC7.PersonalSpeciality": "Number of personal or era specialty",
+"CoC7.PersonalSpecialityPlaceholder": "other skill(s) as personal or era specialties",
"CoC7.AdditionalSkills": "Additional Skills",
"CoC7.SkillSelectionWindow": "Select optional skills",
"CoC7.SelectPersonalSkills": "Select {number} skill(s) as personal interest skills",
@@ -3016,7 +3022,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.TokenCreationRoll.ButtonAverage": "Average all"
```
## sv.json
-350 untranslated strings
+351 untranslated strings
```
"CoC7.ActorIsTokenHint": "Actor is a token",
"CoC7.ActorDataLinked": "Actor data are linked",
@@ -3211,6 +3217,7 @@ Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry
"CoC7.Chase.ChasersMin": "Chasers Min: {value}",
"CoC7.Chase.ChasersMax": "Chasers Max: {value}",
"CoC7.Sane": "Sane",
+"CoC7.PersonalSpecialityPlaceholder": "other skill(s) as personal or era specialties",
"CoC7.ErrorUnableToParseFormula": "{value} is not a valid formula",
"CoC7.ErrorUnableToParseArmorFormula": "Unable to process armor value: {value}. Ignoring armor.",
"CoC7.ErrorUnableToParseSkillFormula": "Unable to parse formula: {value} for skill {name}",
From 64608348dee88103f178e4dccf371b748e887bf1 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sun, 12 Nov 2023 18:13:23 +0000
Subject: [PATCH 29/38] Update CHANGELOG.md
---
.github/CHANGELOG.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index fdf399a0..518e1203 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -13,8 +13,10 @@ When not specified, all changes were made by @castanhocorreia, @HavlockV, and @s
- Fix CoC ID filtering by language and era issues, thanks to @Technus, #1418
- Fix dholehouse importer for characters with a single item on their possesions. Fixes #1423, thanks to @pconcepcion #1424
- Fix guessing CoC ID on spells doesn't save on first attempt.
+- Fix investigator wizard occupation skills max if personal skills is blank
- Fix Lock / Unlock / Roll / mode change not supported on actors in compendium. Fixes #1432
- Fix targeting system not being able to calculate distance from the minimized sheet #1426
+- Add optional occupation personal skill text. #1436
- Add system manual button to Game Settings sidebar tab
- Add system setting to not trigger an error message for ranged token distance calculations if playing theatre of the mind
- When an actor that has rollable characteristics or skills is dragged onto a scene prompted whether those should be rolled or averaged.
From d99cbac6ca07a1afbfa54e99ccca43fac9000dad Mon Sep 17 00:00:00 2001
From: Tec
Date: Sun, 12 Nov 2023 23:29:17 +0100
Subject: [PATCH 30/38] Update PL
---
lang/pl.json | 17 +++++++++++++----
module/apps/investigator-wizard.js | 4 ++--
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/lang/pl.json b/lang/pl.json
index c97a1a2c..72698c34 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -834,7 +834,7 @@
"CoC7.EmptySkillList": "Dodaj umiejętność, upuszczając ją tutaj.",
"CoC7.EmptyItemList": "Dodaj przedmiot, upuszczając go tutaj.",
"CoC7.EmptyCharacterSkillList": "Dodaj ustawienie, zawód lub umiejętność, przeciągając je tutaj.",
- "CoC7.PersonalSpeciality": "Liczba specjalizacji osobistych lub z epoki",
+ "CoC7.PersonalSpecialityPlaceholder": "z umiejętności osobistych lub epoki",
"CoC7.AdditionalSkills": "Dowolna Umiejętność",
"CoC7.SkillSelectionWindow": "Wybierz opcjonalne umiejętności",
"CoC7.SelectPersonalSkills": "Wybierz {number} umiejętność(i) jako umiejętności związane z zainteresowaniami osobistymi",
@@ -1005,6 +1005,8 @@
"CoC7.Migrate.ErrorItem": "Migracja Przedmiotu {name} nie powiodła się: {message}",
"CoC7.Migrate.ErrorActor": "Migracja Aktora {name} nie powiodła się: {message}",
+ "CoC7.System.Documentation": "Zajrzyj do Instrukcji Systemu CoC7",
+
"CoC7.Settings.CoreRules.Title": "Opcjonalne zasady z Podręcznika Podstawowego",
"CoC7.Settings.Rules.Name": "Alternatywne/opcjonalne Zasady",
"CoC7.Settings.Rules.Label": "Skonfiguruj alternatywne/opcjonalne Zasady",
@@ -1186,6 +1188,8 @@
"SETTINGS.ChaseShowTokenMovementHint": "Pokaż ruch tokena na siatce, gdy jest przenoszony do nowej lokacji.",
"SETTINGS.UseContextMenus": "Używaj menu kontekstowego",
"SETTINGS.UseContextMenusHint": "[EKSPERYMENTALNE] Używaj menu kontekstowego dla rzutów zamiast kombinacji klawiszy.",
+ "SETTINGS.SceneDistanceNotCalcualtedNoError": "Nie pokazuj błędów dla zasięgu",
+ "SETTINGS.SceneDistanceNotCalcualtedNoErrorHint": "Zaczynając walkę nie wyświetlaj błędów dla obliczania zasięgu jeśli wybrany jest teatr umysłu.",
"CoC7.getTheExample": "Skopiuj przykład",
"CoC7.Copied": "Skopiowano przykładowy tekst do schowka",
@@ -1241,8 +1245,8 @@
"CoC7.InvestigatorWizard.AgeRange": "Wiek (15-89):",
"CoC7.InvestigatorWizard.MakeEDUImprovementCheck": "Wykonaj test rozwoju WYK",
"CoC7.InvestigatorWizard.MakeEDUImprovementChecks": "Wykonaj {total} testy rozwoju WYK",
- "CoC7.InvestigatorWizard.DeductPointsFromCharacteristics": "Odejmij {total} punkty z {from}",
- "CoC7.InvestigatorWizard.ReducePointsFromCharacteristic": "Zmniejsz {from} do {total}",
+ "CoC7.InvestigatorWizard.DeductPointsFromCharacteristics": "Odejmij {total} z {from}",
+ "CoC7.InvestigatorWizard.ReducePointsFromCharacteristic": "Zmniejsz {from} o {total}",
"CoC7.InvestigatorWizard.RollTwiceForLuck": "Rzuć ponownie na Szczęście",
"CoC7.InvestigatorWizard.OccupationPage": "Zawód daje Ci dodatkowe punkty, które możesz rozdać między osiem umiejętności i Majętność",
"CoC7.InvestigatorWizard.OccupationSelect": "Wybierz swój Zawód",
@@ -1289,5 +1293,10 @@
"CoC7.CoCIDFlag.error.documents-not-found": "Nie znaleziono dokumentów w świecie i komendium dla wybranego CoC ID\"{cocid}\", języka \"{lang}\", i epoki \"{era}\". Sprawdź ustawienia Epoki dla twojego Świata.",
"CoC7.CoCIDBatch.title": "Ustawienia System ID (CoC ID)",
- "CoC7.CoCIDBatch.summary": "System CoC7 wprowadził CoC ID. Pozwala ono na identyfikowanie dokumentów FoundryVTT, na przykład umiejętności. Ta strona pozwala na ustawienie identyfikatorów dla istniejących dokumentów typu \"{type}\". ID powinno używać angielskiej wersji nazw, żeby umożliwić poprawną lokalizację"
+ "CoC7.CoCIDBatch.summary": "System CoC7 wprowadził CoC ID. Pozwala ono na identyfikowanie dokumentów FoundryVTT, na przykład umiejętności. Ta strona pozwala na ustawienie identyfikatorów dla istniejących dokumentów typu \"{type}\". ID powinno używać angielskiej wersji nazw, żeby umożliwić poprawną lokalizację",
+
+ "CoC7.TokenCreationRoll.Title": "Wykryto formuły rzutów",
+ "CoC7.TokenCreationRoll.Prompt": "Token ma formuły rzutów na cechy i/lub umiejętności. Co chcesz zrobić?",
+ "CoC7.TokenCreationRoll.ButtonRoll": "Rzucaj koścmi",
+ "CoC7.TokenCreationRoll.ButtonAverage": "Wybierz średnią"
}
diff --git a/module/apps/investigator-wizard.js b/module/apps/investigator-wizard.js
index d35496ef..64997121 100644
--- a/module/apps/investigator-wizard.js
+++ b/module/apps/investigator-wizard.js
@@ -422,13 +422,13 @@ export class CoC7InvestigatorWizard extends FormApplication {
for (const key of this.object.requiresAgeAdjustments.deduct.from) {
sheetData.deductTotal = sheetData.deductTotal - parseInt(this.object.setupModifiers[key], 10)
}
- sheetData.deductFrom = this.object.requiresAgeAdjustments.deduct.from.map(n => n.toLocaleUpperCase()).join(', ').replace(/, ([a-z]+)$/i, ', or $1')
+ sheetData.deductFrom = this.object.requiresAgeAdjustments.deduct.from.map(n => game.i18n.localize('CHARAC.' + n.toUpperCase())).join(', ')
if (sheetData.deductTotal !== this.object.requiresAgeAdjustments.deduct.total) {
sheetData.canNext = false
}
}
if (typeof this.object.requiresAgeAdjustments.reduce !== 'undefined') {
- sheetData.reduceFrom = this.object.requiresAgeAdjustments.reduce.from.toLocaleUpperCase()
+ sheetData.reduceFrom = game.i18n.localize('CHARAC.' + this.object.requiresAgeAdjustments.reduce.from.toUpperCase())
}
if (typeof this.object.requiresAgeAdjustments.luck !== 'undefined') {
sheetData.luckValue = Math.max(this.object.setupPoints.luck, this.object.setupModifiers.luck)
From 746bd84b3b058e4d30e4560d86c1206f62539a10 Mon Sep 17 00:00:00 2001
From: Tec
Date: Mon, 13 Nov 2023 13:10:50 +0100
Subject: [PATCH 31/38] Fix CoCID
---
module/scripts/coc-id.js | 45 +++++++++++++++++++++++++++-------------
1 file changed, 31 insertions(+), 14 deletions(-)
diff --git a/module/scripts/coc-id.js b/module/scripts/coc-id.js
index b3f05448..89a6a5e6 100644
--- a/module/scripts/coc-id.js
+++ b/module/scripts/coc-id.js
@@ -351,24 +351,34 @@ export class CoCID {
*/
static filterBestCoCID (documents) {
const bestMatchDocuments = new Map()
-
for (const doc of documents) {
const docCoCID = doc.getFlag('CoC7', 'cocidFlag')?.id
if (docCoCID) {
- const currentExists = bestMatchDocuments.get(docCoCID)
+ const currentDoc = bestMatchDocuments.get(docCoCID)
+ if (currentDoc === undefined) {
+ bestMatchDocuments.set(docCoCID, doc)
+ continue
+ }
+
// Prefer pack === '' if possible
const docPack = (doc.pack ?? '')
- const existingPack = (currentExists?.pack ?? '')
- const preferWorld = (typeof currentExists === 'undefined' || (docPack === '' && existingPack !== '') || (docPack !== '' && existingPack !== ''))
+ const existingPack = (currentDoc?.pack ?? '')
+ const preferWorld = docPack === '' || existingPack !== ''
+ if (!preferWorld) {
+ continue
+ }
+
// Prefer highest priority
let docPriority = parseInt(doc.getFlag('CoC7', 'cocidFlag')?.priority ?? Number.MIN_SAFE_INTEGER, 10)
- docPriority = (isNaN(docPriority) ? Number.MIN_SAFE_INTEGER : docPriority)
- let existingPriority = parseInt(currentExists?.priority ?? Number.MIN_SAFE_INTEGER, 10)
- existingPriority = (isNaN(existingPriority) ? Number.MIN_SAFE_INTEGER : existingPriority)
- const preferPriority = (typeof currentExists === 'undefined' || docPriority >= existingPriority)
- if (preferWorld && preferPriority) {
- bestMatchDocuments.set(docCoCID, doc)
+ docPriority = isNaN(docPriority) ? Number.MIN_SAFE_INTEGER : docPriority
+ let existingPriority = parseInt(currentDoc.getFlag('CoC7', 'cocidFlag')?.priority ?? Number.MIN_SAFE_INTEGER, 10)
+ existingPriority = isNaN(existingPriority) ? Number.MIN_SAFE_INTEGER : existingPriority
+ const preferPriority = docPriority >= existingPriority
+ if (!preferPriority) {
+ continue
}
+
+ bestMatchDocuments.set(docCoCID, doc)
}
}
return [...bestMatchDocuments.values()]
@@ -389,12 +399,19 @@ export class CoCID {
const docCoCID = doc.getFlag('CoC7', 'cocidFlag')?.id
if (docCoCID) {
const docEras = Object.entries(doc.getFlag('CoC7', 'cocidFlag')?.eras ?? {}).filter(e => e[1]).map(e => e[0]).sort().join('/')
- const docPriority = parseInt(doc.getFlag('CoC7', 'cocidFlag')?.priority ?? Number.MIN_SAFE_INTEGER, 10)
+ let docPriority = parseInt(doc.getFlag('CoC7', 'cocidFlag')?.priority ?? Number.MIN_SAFE_INTEGER, 10)
+ docPriority = isNaN(docPriority) ? Number.MIN_SAFE_INTEGER : docPriority
const key = docCoCID + '/' + docEras + '/' + (isNaN(docPriority) ? Number.MIN_SAFE_INTEGER : docPriority)
- const currentExists = bestMatchDocuments.get(key)
+
+ const currentDoc = bestMatchDocuments.get(key)
+ if (currentDoc === undefined) {
+ bestMatchDocuments.set(key, doc)
+ continue
+ }
+
const docLang = doc.getFlag('CoC7', 'cocidFlag')?.lang ?? 'en'
- const existingLang = currentExists?.getFlag('CoC7', 'cocidFlag')?.lang ?? 'en'
- if (typeof currentExists === 'undefined' || (existingLang === 'en' && existingLang !== docLang)) {
+ const currentLang = currentDoc?.getFlag('CoC7', 'cocidFlag')?.lang ?? 'en'
+ if (currentLang === 'en' && currentLang !== docLang) {
bestMatchDocuments.set(key, doc)
}
}
From d2705163b0400007905ad68c8d830db4fd0eb459 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Mon, 13 Nov 2023 21:35:53 +0000
Subject: [PATCH 32/38] Restore "or" to list of age reductions.
---
module/apps/investigator-wizard.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/module/apps/investigator-wizard.js b/module/apps/investigator-wizard.js
index 64997121..d3c0284d 100644
--- a/module/apps/investigator-wizard.js
+++ b/module/apps/investigator-wizard.js
@@ -422,7 +422,7 @@ export class CoC7InvestigatorWizard extends FormApplication {
for (const key of this.object.requiresAgeAdjustments.deduct.from) {
sheetData.deductTotal = sheetData.deductTotal - parseInt(this.object.setupModifiers[key], 10)
}
- sheetData.deductFrom = this.object.requiresAgeAdjustments.deduct.from.map(n => game.i18n.localize('CHARAC.' + n.toUpperCase())).join(', ')
+ sheetData.deductFrom = this.object.requiresAgeAdjustments.deduct.from.map(n => game.i18n.localize('CHARAC.' + n.toUpperCase())).join(', ').replace(/(, )([^,]+)$/, '$1' + game.i18n.localize('CoC7.Or') + ' $2').replace(/^([^,]+),([^,]+)$/, '$1$2')
if (sheetData.deductTotal !== this.object.requiresAgeAdjustments.deduct.total) {
sheetData.canNext = false
}
From 41e86044570cbeaf1dfa2262dc3bd43e6385928b Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Mon, 13 Nov 2023 21:38:07 +0000
Subject: [PATCH 33/38] Updated translations list
---
.github/TRANSLATIONS.md | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/.github/TRANSLATIONS.md b/.github/TRANSLATIONS.md
index 5498d8dd..43f07389 100644
--- a/.github/TRANSLATIONS.md
+++ b/.github/TRANSLATIONS.md
@@ -2,6 +2,8 @@
Thank you for being interested in making Call of Cthulhu 7th Edition for Foundry VTT better! Below is a list of translations keys on existing files that still need translated, based on `en.json`. Feel free to create a new `*.json` file for a language that is not shown here!
+The **pl** translation is currently up to date
+
The following translations have more than 50 untranslated strings [are you able to help?](./ABANDONED.md)
[cn.json (383 untranslated strings)](./ABANDONED.md#cnjson)
@@ -22,21 +24,21 @@ The following translations have more than 50 untranslated strings [are you able
-|Key|fr|it|ja|pl|zh-TW|
-|:---|:---:|:---:|:---:|:---:|:---:|
-|**Remaining**:|**8**|**5**|**10**|**8**|**12**|
-|[CoC7.EraRegency](#coc7eraregency)|✅|✅|✅|✅|❌|
-|[CoC7.EraRegencyPulp](#coc7eraregencypulp)|✅|✅|✅|✅|❌|
-|[CoC7.ErrorTokenIncorrect](#coc7errortokenincorrect)|✅|✅|❌|✅|❌|
-|[CoC7.PersonalSpecialityPlaceholder](#coc7personalspecialityplaceholder)|❌|❌|❌|❌|❌|
-|[CoC7.SanityLossType](#coc7sanitylosstype)|✅|✅|❌|✅|❌|
-|[CoC7.System.Documentation](#coc7systemdocumentation)|❌|✅|❌|❌|❌|
-|[CoC7.TokenCreationRoll.ButtonAverage](#coc7tokencreationrollbuttonaverage)|❌|❌|❌|❌|❌|
-|[CoC7.TokenCreationRoll.ButtonRoll](#coc7tokencreationrollbuttonroll)|❌|❌|❌|❌|❌|
-|[CoC7.TokenCreationRoll.Prompt](#coc7tokencreationrollprompt)|❌|❌|❌|❌|❌|
-|[CoC7.TokenCreationRoll.Title](#coc7tokencreationrolltitle)|❌|❌|❌|❌|❌|
-|[SETTINGS.SceneDistanceNotCalcualtedNoError](#settingsscenedistancenotcalcualtednoerror)|❌|✅|❌|❌|❌|
-|[SETTINGS.SceneDistanceNotCalcualtedNoErrorHint](#settingsscenedistancenotcalcualtednoerrorhint)|❌|✅|❌|❌|❌|
+|Key|fr|it|ja|zh-TW|
+|:---|:---:|:---:|:---:|:---:|
+|**Remaining**:|**8**|**5**|**10**|**12**|
+|[CoC7.EraRegency](#coc7eraregency)|✅|✅|✅|❌|
+|[CoC7.EraRegencyPulp](#coc7eraregencypulp)|✅|✅|✅|❌|
+|[CoC7.ErrorTokenIncorrect](#coc7errortokenincorrect)|✅|✅|❌|❌|
+|[CoC7.PersonalSpecialityPlaceholder](#coc7personalspecialityplaceholder)|❌|❌|❌|❌|
+|[CoC7.SanityLossType](#coc7sanitylosstype)|✅|✅|❌|❌|
+|[CoC7.System.Documentation](#coc7systemdocumentation)|❌|✅|❌|❌|
+|[CoC7.TokenCreationRoll.ButtonAverage](#coc7tokencreationrollbuttonaverage)|❌|❌|❌|❌|
+|[CoC7.TokenCreationRoll.ButtonRoll](#coc7tokencreationrollbuttonroll)|❌|❌|❌|❌|
+|[CoC7.TokenCreationRoll.Prompt](#coc7tokencreationrollprompt)|❌|❌|❌|❌|
+|[CoC7.TokenCreationRoll.Title](#coc7tokencreationrolltitle)|❌|❌|❌|❌|
+|[SETTINGS.SceneDistanceNotCalcualtedNoError](#settingsscenedistancenotcalcualtednoerror)|❌|✅|❌|❌|
+|[SETTINGS.SceneDistanceNotCalcualtedNoErrorHint](#settingsscenedistancenotcalcualtednoerrorhint)|❌|✅|❌|❌|
##### CoC7.EraRegency
``` "CoC7.EraRegency": "Regency Cthulhu - Standard",```
##### CoC7.EraRegencyPulp
From aaf83cae3bc1f0bc441c97f3bcd80ba4fc61a48a Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Mon, 13 Nov 2023 21:39:37 +0000
Subject: [PATCH 34/38] Update CHANGELOG.md
---
.github/CHANGELOG.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index 518e1203..d9170833 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -19,9 +19,11 @@ When not specified, all changes were made by @castanhocorreia, @HavlockV, and @s
- Add optional occupation personal skill text. #1436
- Add system manual button to Game Settings sidebar tab
- Add system setting to not trigger an error message for ranged token distance calculations if playing theatre of the mind
+- Add translated characteristics to investigator wizard age reduction headers, thanks to @Technus #1438
- When an actor that has rollable characteristics or skills is dragged onto a scene prompted whether those should be rolled or averaged.
- Update to French localization, thanks to @vonv #1415
- Update to Italian localization, thanks to @Stefano1975t #1419, #1422, and #1429
+- Update to Polish localization, thanks to @Technus #1438
## Version 0.10.6
From 86e349cf1d4bf62a45bb71c02b9ce824e84d9f40 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sat, 18 Nov 2023 12:30:08 +0000
Subject: [PATCH 35/38] coc-id minor code style changes
---
module/scripts/coc-id.js | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/module/scripts/coc-id.js b/module/scripts/coc-id.js
index 89a6a5e6..ddb452a7 100644
--- a/module/scripts/coc-id.js
+++ b/module/scripts/coc-id.js
@@ -355,7 +355,7 @@ export class CoCID {
const docCoCID = doc.getFlag('CoC7', 'cocidFlag')?.id
if (docCoCID) {
const currentDoc = bestMatchDocuments.get(docCoCID)
- if (currentDoc === undefined) {
+ if (typeof currentDoc === 'undefined') {
bestMatchDocuments.set(docCoCID, doc)
continue
}
@@ -404,14 +404,14 @@ export class CoCID {
const key = docCoCID + '/' + docEras + '/' + (isNaN(docPriority) ? Number.MIN_SAFE_INTEGER : docPriority)
const currentDoc = bestMatchDocuments.get(key)
- if (currentDoc === undefined) {
+ if (typeof currentDoc === 'undefined') {
bestMatchDocuments.set(key, doc)
continue
}
const docLang = doc.getFlag('CoC7', 'cocidFlag')?.lang ?? 'en'
- const currentLang = currentDoc?.getFlag('CoC7', 'cocidFlag')?.lang ?? 'en'
- if (currentLang === 'en' && currentLang !== docLang) {
+ const existingLang = currentDoc?.getFlag('CoC7', 'cocidFlag')?.lang ?? 'en'
+ if (existingLang === 'en' && existingLang !== docLang) {
bestMatchDocuments.set(key, doc)
}
}
From a8c6df7863b04fc5a8e79dc7f8378d5079795572 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sat, 18 Nov 2023 12:33:54 +0000
Subject: [PATCH 36/38] Update CHANGELOG.md
---
.github/CHANGELOG.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index d9170833..04407652 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -10,7 +10,7 @@ Happy gaming !
When not specified, all changes were made by @castanhocorreia, @HavlockV, and @snap01.
- Fix a bug where token image wasn't set properly with generic icon
-- Fix CoC ID filtering by language and era issues, thanks to @Technus, #1418
+- Fix CoC ID filtering by language/era issues, and regression issues caused by #1435, thanks to @Technus #1418 and #1439
- Fix dholehouse importer for characters with a single item on their possesions. Fixes #1423, thanks to @pconcepcion #1424
- Fix guessing CoC ID on spells doesn't save on first attempt.
- Fix investigator wizard occupation skills max if personal skills is blank
From d87b411721d2992f0a17ec28059b55e199d157b3 Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sat, 18 Nov 2023 12:45:51 +0000
Subject: [PATCH 37/38] Possible fix for points buy on investigator wizard
---
module/apps/investigator-wizard.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/module/apps/investigator-wizard.js b/module/apps/investigator-wizard.js
index d3c0284d..6bf7f6ae 100644
--- a/module/apps/investigator-wizard.js
+++ b/module/apps/investigator-wizard.js
@@ -395,7 +395,7 @@ export class CoC7InvestigatorWizard extends FormApplication {
if (!empties && this.object.age >= 15) {
if ([sheetData.characteristicsMethods.METHOD_ROLL, sheetData.characteristicsMethods.METHOD_VALUES].includes(sheetData.characteristicsMethod)) {
sheetData.canNext = true
- } else if (sheetData.setup.total.toString() === sheetData.setup.points) {
+ } else if (sheetData.setup.total.toString() === sheetData.setup.points.toString()) {
sheetData.canNext = true
}
}
From 6ce7f72959b6cb7ed104ce220bfa36c236f3f68a Mon Sep 17 00:00:00 2001
From: snap01 <43982555+snap01@users.noreply.github.com>
Date: Sun, 19 Nov 2023 14:15:07 +0000
Subject: [PATCH 38/38] Prepare system for 0.10.7
---
.github/CHANGELOG.md | 4 ++++
system.json | 4 ++--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md
index 04407652..35b97a60 100644
--- a/.github/CHANGELOG.md
+++ b/.github/CHANGELOG.md
@@ -9,6 +9,10 @@ Happy gaming !
When not specified, all changes were made by @castanhocorreia, @HavlockV, and @snap01.
+## Version 0.10.7
+
+When not specified, all changes were made by @castanhocorreia, @HavlockV, and @snap01.
+
- Fix a bug where token image wasn't set properly with generic icon
- Fix CoC ID filtering by language/era issues, and regression issues caused by #1435, thanks to @Technus #1418 and #1439
- Fix dholehouse importer for characters with a single item on their possesions. Fixes #1423, thanks to @pconcepcion #1424
diff --git a/system.json b/system.json
index 7009153e..45aaeefb 100644
--- a/system.json
+++ b/system.json
@@ -2,7 +2,7 @@
"id": "CoC7",
"title": "Call of Cthulhu 7th Edition",
"description": "An implementation of the Call of Cthulhu 7th Edition game system for Foundry Virtual Tabletop.",
- "version": "0.10.6",
+ "version": "0.10.7",
"authors": [
{
"name": "Miskatonic Investigative Society"
@@ -145,5 +145,5 @@
"secondaryTokenAttribute": "attribs.san",
"url": "https://github.com/Miskatonic-Investigative-Society/CoC7-FoundryVTT",
"manifest": "https://github.com/Miskatonic-Investigative-Society/CoC7-FoundryVTT/releases/latest/download/system.json",
- "download": "https://github.com/Miskatonic-Investigative-Society/CoC7-FoundryVTT/releases/latest/download/system.zip"
+ "download": "https://github.com/Miskatonic-Investigative-Society/CoC7-FoundryVTT/releases/download/0.10.7/system.zip"
}