diff --git a/CHANGELOG.md b/CHANGELOG.md index 210b388..4c33ab2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,8 @@ ## 1.7.0 - DiceRoller for Techniques & Npc Generator - NPC Sheet : - - Added a random generator feature (Demeanor, Clan and Families names courteously authorized by Edge). - - This is random by design, don't expect clan logic in values. + - Added a random generator feature (Demeanor, Clan and Families names courteously authorized by Edge). + - This is random by design, don't expect clan logic in values. - PC/NPC sheet: - Added the ability for technique with a skill set, to open the DicePicker with presets values. - Some can interact with targets, but do the default difficulty if none. @@ -11,34 +11,39 @@ - Compendiums : - Techniques : Added difficulty and skill values (not all techniques). - DicePicker : - - Added TN hidden difficulty visibility for GM (ex: ?2?). - - Added a selection for techniques with skill list. + - Added TN hidden difficulty visibility for GM (ex: ?2?). + - Added a selection for techniques with skill list. - RnK : - - Added ability to directly apply the strife to the actor on final step. The chat message show the value taken in gray aside the total strife. + - Added ability to directly apply the strife to the actor on final step. The chat message show the value taken in gray aside the total strife. Technique syntaxe "quick" explanation : - Difficulty can be : - - Number : 1-9 - - Or specific syntaxe "@`S`:`prop1`" or "@`T`:`prop1`|`max`" or "@`T`:`prop1`|`max`(`prop2`)" : - - `@` fixed, trigger the parser - - `T` or `S` : `T`arget or `S`elf, define the actor to get the value. - - `prop1` / `prop2` : Can be any property in `actor` or `actor.data.data`. Limitations: currently no `size` or `distance` (range). - - `|` separator, optional if no min/max. - - `min` or `max` : Between the selected targets search for the min/max of `prop2`. If no `prop2` found, take `prop1` as `prop2` (irrelevant for `@S`). - - `(prop2)` : define the property for the actor selection in multiple target, can be omitted if same as `prop1`. - - Exemples : - - `@S:vigilance` : Difficulty will be my own vigilance - - `@T:vigilance|min` : Difficulty will be the vigilance from the target with the minimum vigilance (implicit) value. it's the same to wrote `@T:vigilance|min(vigilance)`. - - `@T:vigilance|max(statusRank)` : Difficulty will be the vigilance from the target with the maximum `statusRank` value. + - Number : 1-9 + - Or specific syntaxe "@`S`:`prop1`" or "@`T`:`prop1`|`max`" or "@`T`:`prop1`|`max`(`prop2`)" : + - `@` fixed, trigger the parser + - `T` or `S` : `T`arget or `S`elf, define the actor to get the value. + - `prop1` / `prop2` : Can be any property in `actor` or `actor.data.data`. Limitations: currently no `size` or `distance` (range). + - `|` separator, optional if no min/max. + - `min` or `max` : Between the selected targets search for the min/max of `prop2`. If no `prop2` found, take `prop1` as `prop2` (irrelevant for `@S`). + - `(prop2)` : define the property for the actor selection in multiple target, can be omitted if same as `prop1`. + - Exemples : + - `@S:vigilance` : Difficulty will be my own vigilance + - `@T:vigilance|min` : Difficulty will be the vigilance from the target with the minimum vigilance (implicit) value. it's the same to wrote `@T:vigilance|min(vigilance)`. + - `@T:vigilance|max(statusRank)` : Difficulty will be the vigilance from the target with the maximum `statusRank` value. - Skill can be : - - SkillId : `melee`, `fitness`... - - SkillCategoryId : `scholar`, `martial`... - - Or both in list, coma separated. - - Ids are english names in lower case, see `config.js / L5R5E.skills` for the list. - - Exemples : - - `theology` - - `melee,ranged,unarmed` - - `martial,fitness,performance` + - SkillId : `melee`, `fitness`... + - SkillCategoryId : `scholar`, `martial`... + - Or both in list, coma separated. + - Ids are english names in lower case, see `config.js / L5R5E.skills` for the list. + - Exemples : + - `theology` + - `melee,ranged,unarmed` + - `martial,fitness,performance` + +## 1.6.1 - Little Bugfixes +- PC sheet : fixed the "Complete this rank" button who stayed hidden in experience tab. +- GmMonitor : fixed a bug with render when the list was emptied. +- Combat : fixed a null error when sometimes the combatant actor is null. ## 1.6.0 - QoL & SoftLock - PC/NPC/Armies sheet: diff --git a/system/scripts/combat.js b/system/scripts/combat.js index 452e193..8ce70d5 100644 --- a/system/scripts/combat.js +++ b/system/scripts/combat.js @@ -142,14 +142,14 @@ export class CombatL5r5e extends Combat { * @private */ _sortCombatants(a, b) { - // if tie, sort by honor, less honorable first + // if tie : sort by honor, less honorable first if (a.initiative === b.initiative) { - // skip if armies - if (a.actor.data.type === "army" || b.actor.data.type === "army") { + // skip if no actor or if armies + if (!a.actor || !b.actor || a.actor.data.type === "army" || b.actor.data.type === "army") { return 0; } - // if tie, Character > Adversary > Minion + // if tie again : Character > Adversary > Minion if (a.actor.data.data.social.honor === b.actor.data.data.social.honor) { return ( CombatL5r5e._getWeightByActorType(a.actor.data) - CombatL5r5e._getWeightByActorType(b.actor.data) diff --git a/system/scripts/gm/gm-monitor.js b/system/scripts/gm/gm-monitor.js index 84d60fa..4971576 100644 --- a/system/scripts/gm/gm-monitor.js +++ b/system/scripts/gm/gm-monitor.js @@ -330,6 +330,7 @@ export class GmMonitor extends FormApplication { } if (!foundry.utils.isObjectEmpty(updateData)) { await actor.update(updateData); + this.render(false); } } diff --git a/system/templates/actors/character/experience.html b/system/templates/actors/character/experience.html index e0fc106..4575246 100644 --- a/system/templates/actors/character/experience.html +++ b/system/templates/actors/character/experience.html @@ -55,7 +55,7 @@ {{localize 'l5r5e.advancements.total_xp_curriculum'}} : {{rankObject.spent.curriculum}}{{#if rankObject.goal}} / {{rankObject.goal}}{{/if}} {{localize 'l5r5e.advancements.total_xp_spent'}} : {{rankObject.spent.total}} - {{#if data.editable_not_soft_locked}} + {{#if ../data.editable_not_soft_locked}} {{#ifCond ../data.data.identity.school_rank '<' 6}} {{#ifCond (ifCond ../data.data.identity.school_rank '==' rankObject.rank) '&&' (ifCond rankObject.spent.curriculum '>=' rankObject.goal)}}