- 20Q template sync on the actor for old ronin

- Added ability to drop a (Curriculum) Journal to have a button in school experience tab.
This commit is contained in:
Vlyan
2021-06-29 14:13:32 +02:00
parent 885edf5aed
commit fc86f328fa
9 changed files with 98 additions and 9 deletions

View File

@@ -345,7 +345,8 @@
"curriculum_validate": "Complete this rank",
"rarity_modifier": "Rarity modifier",
"item_pattern": "Item Patterns",
"signature_scroll": "Signature Scrolls"
"signature_scroll": "Signature Scrolls",
"school_curriculum_journal": "Drop curriculum's journal in sheet to link it"
},
"character_types": {
"character": "Player Character",

View File

@@ -345,7 +345,8 @@
"curriculum_validate": "Completar este rango",
"rarity_modifier": "Rarity modifier",
"item_pattern": "Item patterns",
"signature_scroll": "Signature scrolls"
"signature_scroll": "Signature scrolls",
"school_curriculum_journal": "Drop curriculum's journal in sheet to link it"
},
"character_types": {
"character": "Personaje jugador",

View File

@@ -345,7 +345,8 @@
"curriculum_validate": "Valider la progression",
"rarity_modifier": "Modificateur de rareté",
"item_pattern": "Procédés de fabrication",
"signature_scroll": "Rouleaux de marque"
"signature_scroll": "Rouleaux de marque",
"school_curriculum_journal": "Déposer le journal du curriculum dans la feuille pour le lier"
},
"character_types": {
"character": "Personnage Joueur",

View File

@@ -103,6 +103,81 @@ export class CharacterSheetL5r5e extends BaseSheetL5r5e {
this._tabs
.find((e) => e._navSelector === ".advancements-tabs")
.activate("advancement_rank_" + (this.actor.data.data.identity.school_rank || 0));
// Open linked school curriculum journal
html.find(`.school-journal-link`).on("click", async (event) => {
event.preventDefault();
event.stopPropagation();
const actorJournal = this.actor.data.data.identity.school_curriculum_journal;
const journal = await this._getJournal(actorJournal.id, actorJournal.pack);
if (journal) {
journal.sheet.render(true);
}
});
}
/**
* Handle dropped data on the Actor sheet
* @param {DragEvent} event
*/
async _onDrop(event) {
// *** Everything below here is only needed if the sheet is editable ***
if (!this.options.editable) {
return;
}
// Curriculum Journal
const json = event.dataTransfer.getData("text/plain");
if (!json) {
return;
}
const data = JSON.parse(json);
if (data.type !== "JournalEntry") {
return;
}
const journal = await this._getJournal(data.id, data.pack);
if (!journal) {
return;
}
this.actor.data.data.identity.school_curriculum_journal = {
id: journal.data._id,
name: journal.data.name,
pack: data.pack || null,
};
await this.actor.update({
data: {
identity: {
school_curriculum_journal: this.actor.data.data.identity.school_curriculum_journal,
},
},
});
}
/**
* Return the Journal in Pack or in World
* @param id
* @param pack
* @return {Promise<game.l5r5e.JournalL5r5e>}
* @private
*/
async _getJournal(id, pack = null) {
let journal;
if (pack) {
// Compendium
journal = await game.packs.get(pack)?.getDocument(id);
} else {
// World
journal = game.journal.get(id);
}
if (!journal || !(journal instanceof game.l5r5e.JournalL5r5e) || !journal.data?._id) {
return;
}
return journal;
}
/**

View File

@@ -366,6 +366,7 @@ export class TwentyQuestionsDialog extends FormApplication {
this.actor.data.data.twenty_questions = this.object.data;
await this.actor.update({
data: {
template: formData["template"],
twenty_questions: this.object.data,
},
});

View File

@@ -79,11 +79,12 @@ Hooks.once("init", async () => {
AbilityDie,
HelpersL5r5e,
ItemL5r5e,
JournalL5r5e,
RollL5r5e,
ActorL5r5e,
DicePickerDialog,
RollnKeepDialog,
GmToolsDialog,
ActorL5r5e,
HelpDialog,
sockets: new SocketHandlerL5r5e(),
migrations: MigrationL5r5e,

View File

@@ -8,6 +8,7 @@
"family": "",
"school": "",
"school_rank": 1,
"school_curriculum_journal": {},
"roles": ""
}
},
@@ -115,8 +116,8 @@
"character": {
"templates": ["identity", "rings", "social", "skills", "techniques", "conflict", "advancement"],
"template": "core",
"zeni": 0,
"twenty_questions": {}
"twenty_questions": {},
"zeni": 0
},
"npc": {
"templates": ["rings", "social", "techniques", "conflict"],

View File

@@ -15,7 +15,14 @@
</fieldset>
{{!-- School progession --}}
<fieldset class="advancement advancements-body">
<legend class="tools">{{localize 'l5r5e.school'}} <a data-item-type="advancement" class="advancement-control item-add" title="{{localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a></legend>
<legend class="tools">
{{#if data.data.identity.school_curriculum_journal.id}}
<a class="school-journal-link"><i class="fas fa-search"></i></a> {{data.data.identity.school_curriculum_journal.name}}
{{else}}
{{localize 'l5r5e.school'}} ({{localize 'l5r5e.advancements.school_curriculum_journal'}})
{{/if}}
<a data-item-type="advancement" class="advancement-control item-add" title="{{localize 'l5r5e.global.add'}}"><i class="fas fa-plus"></i></a>
</legend>
<nav class="advancements-tabs tabs" data-group="advancements">
<a class="item advancements-tab" data-tab="advancement_rank_0">{{localize 'l5r5e.advancements.school_rank_0'}}</a>
{{#each data.advancementsListByRank as |rankObject|}}