NPC: Damage & Conditions
parent
855cdcdc1b
commit
daea5d6212
|
@ -76,7 +76,7 @@
|
||||||
|
|
||||||
<div class="filtercontainer">
|
<div class="filtercontainer">
|
||||||
<h3>{{ game.i18n.localize('Ability Scores') }}</h3>
|
<h3>{{ game.i18n.localize('Ability Scores') }}</h3>
|
||||||
<div class="filters">
|
<div class="filters" style="display: none;">
|
||||||
<div v-for="(ability, key) in abilities" class="filter">
|
<div v-for="(ability, key) in abilities" class="filter">
|
||||||
<label class="unit-title" for="compendiumBrowser.str">{{ ability.label }}</label>
|
<label class="unit-title" for="compendiumBrowser.str">{{ ability.label }}</label>
|
||||||
<div class="level-range flexrow">
|
<div class="level-range flexrow">
|
||||||
|
@ -88,6 +88,52 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="filtercontainer">
|
||||||
|
<h3>{{ game.i18n.localize('Damage & Conditions') }}</h3>
|
||||||
|
<div class="filters" style="display: none;">
|
||||||
|
<div class="filter">
|
||||||
|
<label class="unit-title" for="compendiumBrowser.damageImmunities">{{ game.i18n.localize('Damage Immunities') }}</label>
|
||||||
|
<Multiselect
|
||||||
|
v-model="damageImmunities"
|
||||||
|
mode="tags"
|
||||||
|
:searchable="false"
|
||||||
|
:create-option="false"
|
||||||
|
:options="getOptions(CONFIG.DND5E.damageTypes)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="filter">
|
||||||
|
<label class="unit-title" for="compendiumBrowser.damageResistances">{{ game.i18n.localize('Damage Resistances') }}</label>
|
||||||
|
<Multiselect
|
||||||
|
v-model="damageResistances"
|
||||||
|
mode="tags"
|
||||||
|
:searchable="false"
|
||||||
|
:create-option="false"
|
||||||
|
:options="getOptions(CONFIG.DND5E.damageTypes)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="filter">
|
||||||
|
<label class="unit-title" for="compendiumBrowser.damageVulnerabilities">{{ game.i18n.localize('Damage Vulnerabilities') }}</label>
|
||||||
|
<Multiselect
|
||||||
|
v-model="damageVulnerabilities"
|
||||||
|
mode="tags"
|
||||||
|
:searchable="false"
|
||||||
|
:create-option="false"
|
||||||
|
:options="getOptions(CONFIG.DND5E.damageTypes)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="filter">
|
||||||
|
<label class="unit-title" for="compendiumBrowser.conditionImmunities">{{ game.i18n.localize('Condition Immunities') }}</label>
|
||||||
|
<Multiselect
|
||||||
|
v-model="conditionImmunities"
|
||||||
|
mode="tags"
|
||||||
|
:searchable="false"
|
||||||
|
:create-option="false"
|
||||||
|
:options="getOptions(CONFIG.DND5E.conditionTypes)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<footer>
|
<footer>
|
||||||
<!-- Reset. -->
|
<!-- Reset. -->
|
||||||
|
@ -165,7 +211,9 @@ export default {
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
const abilities = {};
|
const abilities = {};
|
||||||
Object.entries(CONFIG.DND5E.abilities).forEach(([k, v]) => abilities[k] = { label: v.label, range: [1, 30] });
|
for (const [key, value] of Object.entries(CONFIG.DND5E.abilities)) {
|
||||||
|
abilities[key] = { label: value.label, range: [1, 30] };
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
// Props used for infinite scroll and pagination.
|
// Props used for infinite scroll and pagination.
|
||||||
observer: null,
|
observer: null,
|
||||||
|
@ -193,6 +241,10 @@ export default {
|
||||||
abilities,
|
abilities,
|
||||||
legact: '',
|
legact: '',
|
||||||
legres: '',
|
legres: '',
|
||||||
|
damageImmunities: [],
|
||||||
|
damageResistances: [],
|
||||||
|
damageVulnerabilities: [],
|
||||||
|
conditionImmunities: [],
|
||||||
size: [],
|
size: [],
|
||||||
creatureType: [],
|
creatureType: [],
|
||||||
}
|
}
|
||||||
|
@ -230,6 +282,10 @@ export default {
|
||||||
this.crRange = [0, 30];
|
this.crRange = [0, 30];
|
||||||
this.legact = '';
|
this.legact = '';
|
||||||
this.legres = '';
|
this.legres = '';
|
||||||
|
this.damageImmunities = [];
|
||||||
|
this.damageResistances= [];
|
||||||
|
this.damageVulnerabilities= [];
|
||||||
|
this.conditionImmunities= [];
|
||||||
this.size = [];
|
this.size = [];
|
||||||
this.creatureType = [];
|
this.creatureType = [];
|
||||||
},
|
},
|
||||||
|
@ -242,7 +298,15 @@ export default {
|
||||||
options[key] = value.label;
|
options[key] = value.label;
|
||||||
}
|
}
|
||||||
return options;
|
return options;
|
||||||
|
},
|
||||||
|
applyFilter(property, entries, result) {
|
||||||
|
if (property.length) {
|
||||||
|
property.forEach(value => {
|
||||||
|
result = result.filter(entry => entry.system.traits[entries].value.includes(value));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
return result;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
entries() {
|
entries() {
|
||||||
|
@ -289,12 +353,19 @@ export default {
|
||||||
|
|
||||||
Object.entries(this.abilities)
|
Object.entries(this.abilities)
|
||||||
.forEach(([k, v]) => {
|
.forEach(([k, v]) => {
|
||||||
|
// Don't bother filtering if filter wasn't changed.
|
||||||
|
if (v.range[0] === 1 && v.range[1] === 30) return;
|
||||||
result = result.filter((entry) =>
|
result = result.filter((entry) =>
|
||||||
Number(entry.system.abilities[k].value) >= v.range[0] &&
|
Number(entry.system.abilities[k].value) >= v.range[0] &&
|
||||||
Number(entry.system.abilities[k].value) <= v.range[1]
|
Number(entry.system.abilities[k].value) <= v.range[1]
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
result = this.applyFilter(this.damageImmunities, 'di', result);
|
||||||
|
result = this.applyFilter(this.damageResistances, 'dr', result);
|
||||||
|
result = this.applyFilter(this.damageVulnerabilities, 'dv', result);
|
||||||
|
result = this.applyFilter(this.conditionImmunities, 'ci', result);
|
||||||
|
|
||||||
// Reflow pager.
|
// Reflow pager.
|
||||||
if (result.length > this.pager.perPage) {
|
if (result.length > this.pager.perPage) {
|
||||||
this.pager.totalRows = result.length;
|
this.pager.totalRows = result.length;
|
||||||
|
@ -345,6 +416,10 @@ export default {
|
||||||
'system.details.type',
|
'system.details.type',
|
||||||
'system.resources.legact',
|
'system.resources.legact',
|
||||||
'system.resources.legres',
|
'system.resources.legres',
|
||||||
|
'system.traits.di.value',
|
||||||
|
'system.traits.dr.value',
|
||||||
|
'system.traits.dv.value',
|
||||||
|
'system.traits.ci.value',
|
||||||
'system.traits.size'
|
'system.traits.size'
|
||||||
// insert additional properties as needed.
|
// insert additional properties as needed.
|
||||||
]).then(packIndex => {
|
]).then(packIndex => {
|
||||||
|
|
Loading…
Reference in New Issue