Skip to content

Commit

Permalink
attribute requirements
Browse files Browse the repository at this point in the history
  • Loading branch information
Aliharu committed Mar 13, 2024
1 parent d7e340f commit a34d1f1
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 4 deletions.
3 changes: 3 additions & 0 deletions lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,9 @@
"Ex3.Tracking": "Tracking",
"Ex3.Combat": "Combat",
"Ex3.AnyCombatAbility": "Any Combat Ability",
"Ex3.PhysicalAttribute": "Physical Attribute",
"Ex3.MentalAttribute": "Mental Attributes",
"Ex3.SocialAttribute": "Social Attribute",
"Ex3.Defense": "Defense",
"Ex3.SelfDefensePenalty": "Self Defense Penalty",
"Ex3.TargetDefensePenalty": "Target Defense Penalty",
Expand Down
24 changes: 21 additions & 3 deletions module/apps/character-builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -1082,10 +1082,28 @@ export default class CharacterBuilder extends FormApplication {
if (itemType === 'charm') {
items = items.filter(charm => {
if (charm.system.numberprerequisites.number > 0) {
if (CONFIG.exaltedthird.maidens.includes(charm.system.ability)) {
return charm.system.numberprerequisites.number <= this._getMaidenCharmsNumber(charm.system.numberprerequisites.ability);
let existingCharms = 0;
if (charm.system.numberprerequisites.ability === "combat") {
existingCharms = (Object.values(this.object.character.charms)?.filter(numberCharm => ['archery', 'brawl', 'melee', 'thrown', 'war'].includes(numberCharm.system.ability)).length || 0);
}
else if(['physicalAttribute', 'mentalAttribute', 'socialAttribute'].includes(charm.system.numberprerequisites.ability)) {
if(charm.system.numberprerequisites.ability === 'physicalAttribute') {
existingCharms = (Object.values(this.object.character.charms)?.filter(numberCharm => ['strength', 'dexterity', 'stamina'].includes(numberCharm.system.ability)).length || 0);
}
if(charm.system.numberprerequisites.ability === 'mentalAttribute') {
existingCharms = (Object.values(this.object.character.charms)?.filter(numberCharm => ['intelligence', 'wits', 'perception'].includes(numberCharm.system.ability)).length || 0);
}
if(charm.system.numberprerequisites.ability === 'socialAttribute') {
existingCharms = (Object.values(this.object.character.charms)?.filter(numberCharm => ['charisma', 'appearance', 'manipulation'].includes(numberCharm.system.ability)).length || 0);
}
}
else if (CONFIG.exaltedthird.maidens.includes(charm.system.ability)) {
existingCharms = this._getMaidenCharmsNumber(charm.system.numberprerequisites.ability);
}
else {
existingCharms = (Object.values(this.object.character.charms)?.filter(numberCharm => numberCharm.system.ability === charm.system.numberprerequisites.ability).length || 0);
}
if ((Object.values(this.object.character.charms)?.filter(numberCharm => numberCharm.system.ability === charm.system.numberprerequisites.ability).length || 0) < charm.system.numberprerequisites.number) {
if(existingCharms < charm.system.numberprerequisites.number) {
return false;
}
}
Expand Down
8 changes: 7 additions & 1 deletion module/apps/template-importer.js
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,13 @@ export default class TemplateImporter extends FormApplication {
}
if (requirementArray.length === 1) {
var essenceRequirement = requirementArray[0].trim().split(' ');
charmData.system.ability = 'evocation';
if(this.charmType === 'evocation') {
charmData.system.ability = 'evocation';
}
else {
charmData.system.ability = 'universal';
}
charmData.system.requirement = 0;
charmData.system.essence = essenceRequirement[1].replace(/[^0-9]/g, '');
}
if (requirementArray.length === 2) {
Expand Down
4 changes: 4 additions & 0 deletions templates/item/item-charm-sheet.html
Original file line number Diff line number Diff line change
Expand Up @@ -952,6 +952,10 @@ <h1 class="charname"><input name="name" type="text" value="{{item.name}}" placeh
{{/each}}
</optgroup>
{{/each}}
<option value="combat">{{localize "Ex3.AnyCombatAbility"}}</option>
<option value="physicalAttribute">{{localize "Ex3.PhysicalAttribute"}}</option>
<option value="mentalAttribute">{{localize "Ex3.MentalAttribute"}}</option>
<option value="socialAttribute">{{localize "Ex3.SocialAttribute"}}</option>
<option value="">{{localize "Ex3.None"}}</option>
{{/select}}
</select>
Expand Down

0 comments on commit a34d1f1

Please sign in to comment.