Skip to content

Commit

Permalink
Merge pull request #326 from wigmeister2000/main
Browse files Browse the repository at this point in the history
Fix actor sheet effects tab for v11 ActiveEffects transfer
  • Loading branch information
EndlesNights authored Nov 27, 2023
2 parents 650d468 + 50ca31f commit 6e071cd
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 11 deletions.
1 change: 1 addition & 0 deletions lang/en-au.json
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,7 @@
"DND4EBETA.EffectToggle": "Toggle Effect",
"DND4EBETA.EffectEdit": "Edit Effect",
"DND4EBETA.EffectDelete": "Delete Effect",
"DND4EBETA.EffectFromItem": "Transferred from Item",
"DND4EBETA.EffectWhenEquipped": "Only Apply Effect when Equipped",
"DND4EBETA.EffectUnavailable": "Unavailable Effect",
"DND4EBETA.Elemental": "Elemental",
Expand Down
1 change: 1 addition & 0 deletions lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,7 @@
"DND4EBETA.EffectToggle": "Toggle Effect",
"DND4EBETA.EffectEdit": "Edit Effect",
"DND4EBETA.EffectDelete": "Delete Effect",
"DND4EBETA.EffectFromItem": "Transferred from Item",
"DND4EBETA.EffectWhenEquipped": "Only Apply Effect when Equipped",
"DND4EBETA.EffectUnavailable": "Unavailable Effect",
"DND4EBETA.Elemental": "Elemental",
Expand Down
2 changes: 1 addition & 1 deletion module/actor/actor-sheet.js
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ export default class ActorSheet4e extends ActorSheet {

// Prepare active effects
// data.effects = prepareActiveEffectCategories(this.actor.effects);
data.effects = ActiveEffect4e.prepareActiveEffectCategories(actor.effects);
data.effects = ActiveEffect4e.prepareActiveEffectCategories(actor.getActiveEffects());

// Resources
actorData.resources = ["primary", "secondary", "tertiary"].reduce((obj, r) => {
Expand Down
8 changes: 7 additions & 1 deletion module/actor/actor.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,12 @@ export class Actor4e extends Actor {
this._displayScrollingDamage(options.dhp);
}

/** Get all ActiveEffects stored in the actor or transferred from items */
getActiveEffects() {
const effects = this.effects.contents; // Effects stored in actor
const transferred = this.items.map(item => item.effects.filter(e => e.transfer)).flat(); // Stored in items
return effects.concat(transferred);
}

/* --------------------------------------------- */

Expand Down Expand Up @@ -579,7 +585,7 @@ export class Actor4e extends Actor {
flags:{dnd4e:{effectData:{durationType:"startOfUserTurn"}}}
};

this.update({"system.details.secondwindEffect": secondwindEffect});
this.system.details.secondwindEffect = secondwindEffect;
}

/* -------------------------------------------- */
Expand Down
3 changes: 2 additions & 1 deletion module/effects/effects.js
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,8 @@
event.preventDefault();
const a = event.currentTarget;
const li = a.closest("li");
const effect = li.dataset.effectId ? owner.effects.get(li.dataset.effectId) : null;
const effects = ["Player Character", "NPC"].includes(owner.type) ? owner.getActiveEffects() : owner.effects.contents;
const effect = li.dataset.effectId ? effects.find(e => e._id === li.dataset.effectId) : null;
switch ( a.dataset.action ) {
case "create":
const isActor = owner instanceof Actor;
Expand Down
12 changes: 12 additions & 0 deletions module/helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -1275,4 +1275,16 @@ Handlebars.registerHelper('contains', function(lunch, lunchbox, meal) {
} catch(err) {
return "Contains helper spat up. Did you give it the right parameter types?";
}
});

Handlebars.registerHelper("isActor", function(obj) {
return obj.isCharacter || obj.isNPC;
});

Handlebars.registerHelper("isActive", function(effect){
return !effect.disabled && !effect.isSuppressed;
});

Handlebars.registerHelper("getSourceName", function(effect){
return effect.sourceName === "Unknown" ? effect.parent.name : effect.sourceName;
});
28 changes: 20 additions & 8 deletions templates/actors/parts/active-effects.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,26 +30,38 @@ <h3 class="item-name effect-name flexrow">{{localize section.label}}</h3>
<ol class="item-list">
{{#each section.effects as |effect|}}
<li class="item effect flexrow" data-effect-id="{{effect.id}}">
<div class="item-name effect-name flexrow">
<div class="item-name effect-name flexrow" data-tooltip="{{effect.name}}">
<img class="item-image" src="{{effect.icon}}"/>
<h4>{{effect.name}}</h4>
</div>
<div class="effect-source">{{effect.sourceName}}</div>
<div class="effect-source" data-tooltip="{{getSourceName effect}}">{{getSourceName effect}}</div>
{{#if effect._getIsSave}}
<a class="effect-duration effect-save rollable">{{effect.duration.label}}</a>
<a class="effect-duration effect-save rollable" data-tooltip="{{effect.duration.label}}">{{effect.duration.label}}</a>
{{else}}
<div class="effect-duration">{{effect.duration.label}}</div>
<div class="effect-duration" data-tooltip="{{effect.duration.label}}">{{effect.duration.label}}</div>
{{/if}}
<div class="item-controls effect-controls flexrow">
<a class="effect-control" data-action="toggle" data-tooltip="{{localize 'DND4EBETA.EffectToggle'}}">
<i class="fas fa-circle-notch"></i>
<i class="{{#if (isActive this)}}fas fa-power-off{{else}}fas fa-circle-notch{{/if}}"></i>
</a>
<a class="effect-control" data-action="edit" data-tooltip="{{localize 'DND4EBETA.EffectEdit'}}">
<i class="fas fa-edit"></i>
</a>
<a class="effect-control" data-action="delete" data-tooltip="{{localize 'DND4EBETA.EffectDelete'}}">
<i class="fas fa-trash"></i>
</a>
{{#if (isActor ../../this)}}
{{#if effect.transfer}}
<a class="effect-control" data-action="none" data-tooltip="{{localize 'DND4EBETA.EffectFromItem'}}">
<i class=""></i>
</a>
{{else}}
<a class="effect-control" data-action="delete" data-tooltip="{{localize 'DND4EBETA.EffectDelete'}}">
<i class="fas fa-trash"></i>
</a>
{{/if}}
{{else}}
<a class="effect-control" data-action="delete" data-tooltip="{{localize 'DND4EBETA.EffectDelete'}}">
<i class="fas fa-trash"></i>
</a>
{{/if}}
</div>
</li>
{{/each}}
Expand Down

0 comments on commit 6e071cd

Please sign in to comment.