Merge branch 'master' into dev

# Conflicts:
#	CHANGELOG.md
#	system/system.json
This commit is contained in:
Vlyan
2022-02-13 17:07:27 +01:00
4 changed files with 36 additions and 30 deletions

View File

@@ -2,8 +2,8 @@
## 1.7.0 - DiceRoller for Techniques & Npc Generator ## 1.7.0 - DiceRoller for Techniques & Npc Generator
- NPC Sheet : - NPC Sheet :
- Added a random generator feature (Demeanor, Clan and Families names courteously authorized by Edge). - 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. - This is random by design, don't expect clan logic in values.
- PC/NPC sheet: - PC/NPC sheet:
- Added the ability for technique with a skill set, to open the DicePicker with presets values. - 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. - Some can interact with targets, but do the default difficulty if none.
@@ -11,34 +11,39 @@
- Compendiums : - Compendiums :
- Techniques : Added difficulty and skill values (not all techniques). - Techniques : Added difficulty and skill values (not all techniques).
- DicePicker : - DicePicker :
- Added TN hidden difficulty visibility for GM (ex: ?2?). - Added TN hidden difficulty visibility for GM (ex: ?2?).
- Added a selection for techniques with skill list. - Added a selection for techniques with skill list.
- RnK : - 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 : Technique syntaxe "quick" explanation :
- Difficulty can be : - Difficulty can be :
- Number : 1-9 - Number : 1-9
- Or specific syntaxe "@`S`:`prop1`" or "@`T`:`prop1`|`max`" or "@`T`:`prop1`|`max`(`prop2`)" : - Or specific syntaxe "@`S`:`prop1`" or "@`T`:`prop1`|`max`" or "@`T`:`prop1`|`max`(`prop2`)" :
- `@` fixed, trigger the parser - `@` fixed, trigger the parser
- `T` or `S` : `T`arget or `S`elf, define the actor to get the value. - `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). - `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. - `|` 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`). - `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`. - `(prop2)` : define the property for the actor selection in multiple target, can be omitted if same as `prop1`.
- Exemples : - Exemples :
- `@S:vigilance` : Difficulty will be my own vigilance - `@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|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. - `@T:vigilance|max(statusRank)` : Difficulty will be the vigilance from the target with the maximum `statusRank` value.
- Skill can be : - Skill can be :
- SkillId : `melee`, `fitness`... - SkillId : `melee`, `fitness`...
- SkillCategoryId : `scholar`, `martial`... - SkillCategoryId : `scholar`, `martial`...
- Or both in list, coma separated. - Or both in list, coma separated.
- Ids are english names in lower case, see `config.js / L5R5E.skills` for the list. - Ids are english names in lower case, see `config.js / L5R5E.skills` for the list.
- Exemples : - Exemples :
- `theology` - `theology`
- `melee,ranged,unarmed` - `melee,ranged,unarmed`
- `martial,fitness,performance` - `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 ## 1.6.0 - QoL & SoftLock
- PC/NPC/Armies sheet: - PC/NPC/Armies sheet:

View File

@@ -142,14 +142,14 @@ export class CombatL5r5e extends Combat {
* @private * @private
*/ */
_sortCombatants(a, b) { _sortCombatants(a, b) {
// if tie, sort by honor, less honorable first // if tie : sort by honor, less honorable first
if (a.initiative === b.initiative) { if (a.initiative === b.initiative) {
// skip if armies // skip if no actor or if armies
if (a.actor.data.type === "army" || b.actor.data.type === "army") { if (!a.actor || !b.actor || a.actor.data.type === "army" || b.actor.data.type === "army") {
return 0; 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) { if (a.actor.data.data.social.honor === b.actor.data.data.social.honor) {
return ( return (
CombatL5r5e._getWeightByActorType(a.actor.data) - CombatL5r5e._getWeightByActorType(b.actor.data) CombatL5r5e._getWeightByActorType(a.actor.data) - CombatL5r5e._getWeightByActorType(b.actor.data)

View File

@@ -330,6 +330,7 @@ export class GmMonitor extends FormApplication {
} }
if (!foundry.utils.isObjectEmpty(updateData)) { if (!foundry.utils.isObjectEmpty(updateData)) {
await actor.update(updateData); await actor.update(updateData);
this.render(false);
} }
} }

View File

@@ -55,7 +55,7 @@
<th>{{localize 'l5r5e.advancements.total_xp_curriculum'}} : {{rankObject.spent.curriculum}}{{#if rankObject.goal}} / {{rankObject.goal}}{{/if}}</th> <th>{{localize 'l5r5e.advancements.total_xp_curriculum'}} : {{rankObject.spent.curriculum}}{{#if rankObject.goal}} / {{rankObject.goal}}{{/if}}</th>
<th>{{localize 'l5r5e.advancements.total_xp_spent'}} : {{rankObject.spent.total}}</th> <th>{{localize 'l5r5e.advancements.total_xp_spent'}} : {{rankObject.spent.total}}</th>
</tr> </tr>
{{#if data.editable_not_soft_locked}} {{#if ../data.editable_not_soft_locked}}
{{#ifCond ../data.data.identity.school_rank '<' 6}} {{#ifCond ../data.data.identity.school_rank '<' 6}}
{{#ifCond (ifCond ../data.data.identity.school_rank '==' rankObject.rank) '&&' (ifCond rankObject.spent.curriculum '>=' rankObject.goal)}} {{#ifCond (ifCond ../data.data.identity.school_rank '==' rankObject.rank) '&&' (ifCond rankObject.spent.curriculum '>=' rankObject.goal)}}
<tr class="tfoot flexrow row tab" data-group="advancements" data-tab="advancement_rank_{{rankObject.rank}}"> <tr class="tfoot flexrow row tab" data-group="advancements" data-tab="advancement_rank_{{rankObject.rank}}">