From 8dd6c6e50af02037d9f9d1962c4708d410b08948 Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Sun, 30 Jun 2024 22:57:46 -0400 Subject: [PATCH 01/16] [#60] Migrate Tags from `*.ini` Files to Native C++ Tags --- Config/Tags/PF2CoinsAndCurrency.ini | 23 - Config/Tags/PF2CoreStats.ini | 133 -- Config/Tags/PF2DamageTypes.ini | 40 - Config/Tags/PF2Encounters.ini | 16 - Config/Tags/PF2GameplayAbilities.ini | 23 - Config/Tags/PF2GameplayCues.ini | 8 - Config/Tags/PF2GameplayEffects.ini | 22 - Config/Tags/PF2Languages.ini | 44 - Config/Tags/PF2Skills.ini | 122 -- Config/Tags/PF2SpecialSenses.ini | 20 - Config/Tags/PF2Traits.ini | 196 --- Config/Tags/PF2WeaponGroups.ini | 30 - Config/Tags/PF2WeaponProficiencies.ini | 390 ----- .../Private/GameplayTags/Currencies.cpp | 23 + .../Private/GameplayTags/CurrencyUnits.cpp | 41 + .../Private/GameplayTags/DamageTypes.cpp | 149 ++ .../Encounters/AbilityTriggers.cpp | 33 + .../Encounters/CharacterStates.cpp | 27 + .../GameplayAbilities/AbilityTypes.cpp | 45 + .../GameplayAbilities/ActivationMetadata.cpp | 21 + .../GameplayAbilities/WaitForEvents.cpp | 33 + .../Private/GameplayTags/GameplayCues.cpp | 15 + .../GameplayEffects/CalculationSources.cpp | 17 + .../GameplayEffects/SetByCallerParameters.cpp | 27 + .../GameplayEffects/WeightGroups.cpp | 51 + .../GameplayTags/Stats/CreatureAlignments.cpp | 89 + .../GameplayTags/Stats/CreatureSizes.cpp | 24 + .../Private/GameplayTags/Stats/Equipment.cpp | 40 + .../GameplayTags/Stats/KeyAbilities.cpp | 104 ++ .../Private/GameplayTags/Stats/Languages.cpp | 169 ++ .../Stats/Proficiencies/Armor.cpp | 146 ++ .../Stats/Proficiencies/ClassDc.cpp | 52 + .../Stats/Proficiencies/Perception.cpp | 52 + .../Stats/Proficiencies/SavingThrows.cpp | 114 ++ .../Stats/Proficiencies/Skills.cpp | 580 +++++++ .../Stats/Proficiencies/SpellAttacks.cpp | 47 + .../Stats/Proficiencies/SpellDc.cpp | 47 + .../Stats/Proficiencies/Weapons.cpp | 1431 +++++++++++++++++ .../GameplayTags/Stats/SpecialSenses.cpp | 50 + .../Private/GameplayTags/Traits/Abilities.cpp | 113 ++ .../Private/GameplayTags/Traits/Actions.cpp | 71 + .../GameplayTags/Traits/Conditions.cpp | 365 +++++ .../Private/GameplayTags/Traits/Creatures.cpp | 53 + .../Private/GameplayTags/Traits/Effects.cpp | 53 + .../Private/GameplayTags/Traits/Weapons.cpp | 257 +++ .../Private/GameplayTags/WeaponGroups.cpp | 33 + .../Public/GameplayTags/Currencies.h | 21 + .../Public/GameplayTags/CurrencyUnits.h | 24 + .../Public/GameplayTags/DamageTypes.h | 42 + .../GameplayTags/Encounters/AbilityTriggers.h | 16 + .../GameplayTags/Encounters/CharacterStates.h | 15 + .../GameplayAbilities/AbilityTypes.h | 18 + .../GameplayAbilities/ActivationMetadata.h | 14 + .../GameplayAbilities/WaitForEvents.h | 16 + .../Public/GameplayTags/GameplayCues.h | 13 + .../GameplayEffects/CalculationSources.h | 15 + .../GameplayEffects/SetByCallerParameters.h | 15 + .../GameplayEffects/WeightGroups.h | 21 + .../GameplayTags/Stats/CreatureAlignments.h | 34 + .../Public/GameplayTags/Stats/CreatureSizes.h | 26 + .../Public/GameplayTags/Stats/Equipment.h | 23 + .../Public/GameplayTags/Stats/KeyAbilities.h | 46 + .../Public/GameplayTags/Stats/Languages.h | 57 + .../GameplayTags/Stats/Proficiencies/Armor.h | 52 + .../Stats/Proficiencies/ClassDc.h | 30 + .../Stats/Proficiencies/Perception.h | 30 + .../Stats/Proficiencies/SavingThrows.h | 44 + .../GameplayTags/Stats/Proficiencies/Skills.h | 150 ++ .../Stats/Proficiencies/SpellAttacks.h | 25 + .../Stats/Proficiencies/SpellDc.h | 25 + .../Stats/Proficiencies/Weapons.h | 473 ++++++ .../Public/GameplayTags/Stats/SpecialSenses.h | 28 + .../Public/GameplayTags/Traits/Abilities.h | 36 + .../Public/GameplayTags/Traits/Actions.h | 29 + .../Public/GameplayTags/Traits/Conditions.h | 191 +++ .../Public/GameplayTags/Traits/Creatures.h | 26 + .../Public/GameplayTags/Traits/Effects.h | 26 + .../Public/GameplayTags/Traits/Weapons.h | 60 + .../Public/GameplayTags/WeaponGroups.h | 35 + 79 files changed, 6048 insertions(+), 1067 deletions(-) delete mode 100644 Config/Tags/PF2CoinsAndCurrency.ini delete mode 100644 Config/Tags/PF2CoreStats.ini delete mode 100644 Config/Tags/PF2DamageTypes.ini delete mode 100644 Config/Tags/PF2Encounters.ini delete mode 100644 Config/Tags/PF2GameplayAbilities.ini delete mode 100644 Config/Tags/PF2GameplayCues.ini delete mode 100644 Config/Tags/PF2GameplayEffects.ini delete mode 100644 Config/Tags/PF2Languages.ini delete mode 100644 Config/Tags/PF2Skills.ini delete mode 100644 Config/Tags/PF2SpecialSenses.ini delete mode 100644 Config/Tags/PF2Traits.ini delete mode 100644 Config/Tags/PF2WeaponGroups.ini delete mode 100644 Config/Tags/PF2WeaponProficiencies.ini create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Currencies.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/CurrencyUnits.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/DamageTypes.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/AbilityTriggers.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/CharacterStates.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/AbilityTypes.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/ActivationMetadata.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/WaitForEvents.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/GameplayCues.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/CalculationSources.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/SetByCallerParameters.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/WeightGroups.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureAlignments.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureSizes.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Equipment.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/KeyAbilities.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Languages.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Armor.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/ClassDc.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Perception.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SavingThrows.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Skills.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellAttacks.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellDc.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Weapons.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Stats/SpecialSenses.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Abilities.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Actions.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Conditions.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Creatures.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Effects.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Weapons.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/WeaponGroups.cpp create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Currencies.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/CurrencyUnits.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/DamageTypes.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/AbilityTriggers.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/CharacterStates.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/AbilityTypes.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/ActivationMetadata.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/WaitForEvents.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/GameplayCues.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/CalculationSources.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/SetByCallerParameters.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/WeightGroups.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureAlignments.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureSizes.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Equipment.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/KeyAbilities.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Languages.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Armor.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/ClassDc.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Perception.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SavingThrows.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Skills.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellAttacks.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellDc.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Weapons.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Stats/SpecialSenses.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Abilities.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Actions.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Conditions.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Creatures.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Effects.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Weapons.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/WeaponGroups.h diff --git a/Config/Tags/PF2CoinsAndCurrency.ini b/Config/Tags/PF2CoinsAndCurrency.ini deleted file mode 100644 index b88c2696f..000000000 --- a/Config/Tags/PF2CoinsAndCurrency.ini +++ /dev/null @@ -1,23 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: -; - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. -; - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. -; - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. -; -; Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, -; as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this -; file other than the material designated as Open Game Content may be reproduced in any form without written -; permission. - -[/Script/GameplayTags.GameplayTagsList] -; Default Currency - "Coins" -; Source: Pathfinder 2E Core Rulebook, Chapter 6, page 271. -GameplayTagList=(Tag="Currency.Coins",DevComment="The most common currency in OpenPF2.") - -; Default Currency Units -; Source: Pathfinder 2E Core Rulebook, Chapter 6, page 271. -GameplayTagList=(Tag="CurrencyUnit.Coins.CopperPiece",DevComment="A unit of currency worth 1/10 of a silver piece.") -GameplayTagList=(Tag="CurrencyUnit.Coins.SilverPiece",DevComment="The standard unit of currency for commoners and beginning adventurers. Each is a standard weight of silver and is typically accepted by any merchant or kingdom no matter where it was minted.") -GameplayTagList=(Tag="CurrencyUnit.Coins.GoldPiece",DevComment="A unit of currency often used for purchasing magic items and other expensive items. 1 gold piece is worth 10 silver pieces and 100 copper pieces.") -GameplayTagList=(Tag="CurrencyUnit.Coins.PlatinumPiece",DevComment="A unit of current used by nobles to demonstrate their wealth, for the purchase of very expensive items, or simply as a way to easily transport large sums of currency. A platinum piece is worth 10 gold pieces, 100 silver pieces, and 1,000 copper pieces.") diff --git a/Config/Tags/PF2CoreStats.ini b/Config/Tags/PF2CoreStats.ini deleted file mode 100644 index 8ac089ec1..000000000 --- a/Config/Tags/PF2CoreStats.ini +++ /dev/null @@ -1,133 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: -; - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. -; - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. -; - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. -; -; Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, -; as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this -; file other than the material designated as Open Game Content may be reproduced in any form without written -; permission. - -[/Script/GameplayTags.GameplayTagsList] -; Creature Size - The approximate physical amount of space a creature occupies. -; Source: Pathfinder 2E Core Rulebook, page 474, Table 9-1: Size and Reach. -GameplayTagList=(Tag="CreatureSize.Tiny",DevComment="") -GameplayTagList=(Tag="CreatureSize.Small",DevComment="") -GameplayTagList=(Tag="CreatureSize.Medium",DevComment="") -GameplayTagList=(Tag="CreatureSize.Large",DevComment="") -GameplayTagList=(Tag="CreatureSize.Huge",DevComment="") -GameplayTagList=(Tag="CreatureSize.Gargantuan",DevComment="") - -; Creature Alignment - The indicator of the character's morality and personality. -; Source: Pathfinder 2E Core Rulebook, page 29, Table 1-2: The Nine Alignments. -GameplayTagList=(Tag="CreatureAlignment.Lawful.Good",DevComment="Character values consistency, stability, and predictability over flexibility; considers others above themselves and works selflflessly to assist others.") -GameplayTagList=(Tag="CreatureAlignment.Lawful.Neutral",DevComment="Character values consistency, stability, and predictability over flexibility; doesn't consider others more or less importantly than themselves.") -GameplayTagList=(Tag="CreatureAlignment.Lawful.Evil",DevComment="Character values consistency, stability, and predictability over flexibility; is willing to victimize or harm others for selfish gain.") -GameplayTagList=(Tag="CreatureAlignment.Neutral.Good",DevComment="Character obeys law or code of conduct in many situations, but is flexible; considers others above themselves and works selflflessly to assist others.") -GameplayTagList=(Tag="CreatureAlignment.Neutral.Neutral",DevComment="Character obeys law or code of conduct in many situations, but is flexible; doesn't consider others more or less importantly than themselves.") -GameplayTagList=(Tag="CreatureAlignment.Neutral.Evil",DevComment="Character obeys law or code of conduct in many situations, but is flexible; is willing to victimize or harm others for selfish gain.") -GameplayTagList=(Tag="CreatureAlignment.Chaotic.Good",DevComment="Character values flexibility, creativity, and spontaneity over consistency; considers others above themselves and works selflflessly to assist others.") -GameplayTagList=(Tag="CreatureAlignment.Chaotic.Neutral",DevComment="Character values flexibility, creativity, and spontaneity over consistency; doesn't consider others more or less importantly than themselves.") -GameplayTagList=(Tag="CreatureAlignment.Chaotic.Evil",DevComment="Character values flexibility, creativity, and spontaneity over consistency; is willing to victimize or harm others for selfish gain.") - -; Key Ability - The most important ability of a particular character/creature. -GameplayTagList=(Tag="KeyAbility.Strength",DevComment="Character's key ability is Strength") -GameplayTagList=(Tag="KeyAbility.Dexterity",DevComment="Character's key ability is Dexterity") -GameplayTagList=(Tag="KeyAbility.Constitution",DevComment="Character's key ability is Constitution") -GameplayTagList=(Tag="KeyAbility.Intelligence",DevComment="Character's key ability is Intelligence") -GameplayTagList=(Tag="KeyAbility.Wisdom",DevComment="Character's key ability is Wisdom") -GameplayTagList=(Tag="KeyAbility.Charisma",DevComment="Character's key ability is Charisma") - -; Spellcasting Ability - The key ability of a character/creature that can cast spells. -; -; The classes in the core rulebook don't have any spellcasting abilities other than Wisdom and Charisma, but there's no -; reason to limit game makers to just those options. Plus, add-on material for OpenPF2 could always invent a new class -; that uses something like Intelligence for a character that does complex spellcasting or Dexterity for a character who -; performs physically-dexterous spells. -GameplayTagList=(Tag="SpellcastingAbility.Strength",DevComment="Character's spellcasting ability is Strength") -GameplayTagList=(Tag="SpellcastingAbility.Dexterity",DevComment="Character's spellcasting ability is Dexterity") -GameplayTagList=(Tag="SpellcastingAbility.Constitution",DevComment="Character's spellcasting ability is Constitution") -GameplayTagList=(Tag="SpellcastingAbility.Intelligence",DevComment="Character's spellcasting ability is Intelligence") -GameplayTagList=(Tag="SpellcastingAbility.Wisdom",DevComment="Character's spellcasting ability is Wisdom") -GameplayTagList=(Tag="SpellcastingAbility.Charisma",DevComment="Character's spellcasting ability is Charisma") - -; Class DC Proficiency Rank - The character's aptitude in their Difficulty Class. -GameplayTagList=(Tag="ClassDc.Untrained",DevComment="Untrained in Class Difficulty Class (Class DC)") -GameplayTagList=(Tag="ClassDc.Trained",DevComment="Trained in Class Difficulty Class (Class DC)") -GameplayTagList=(Tag="ClassDc.Expert",DevComment="Expert in Class Difficulty Class (Class DC)") -GameplayTagList=(Tag="ClassDc.Master",DevComment="Master in Class Difficulty Class (Class DC)") -GameplayTagList=(Tag="ClassDc.Legendary",DevComment="Legendary in Class Difficulty Class (Class DC)") - -; Types of Armor that is *Currently* Equipped by the Character -GameplayTagList=(Tag="Armor.Equipped.Unarmored",DevComment="Character has no armor equipped") -GameplayTagList=(Tag="Armor.Equipped.Light",DevComment="Character has Light armor equipped") -GameplayTagList=(Tag="Armor.Equipped.Medium",DevComment="Character has Medium armor equipped") -GameplayTagList=(Tag="Armor.Equipped.Heavy",DevComment="Character has Heavy armor equipped") - -; Proficiency Ranks for Different Classes of Armor (Unarmored, Light, Medium, or Heavy) -GameplayTagList=(Tag="Armor.Category.Unarmored.Untrained",DevComment="Untrained in Unarmored Defense") -GameplayTagList=(Tag="Armor.Category.Unarmored.Trained",DevComment="Trained in Unarmored Defense") -GameplayTagList=(Tag="Armor.Category.Unarmored.Expert",DevComment="Expert in Unarmored Defense") -GameplayTagList=(Tag="Armor.Category.Unarmored.Master",DevComment="Master in Unarmored Defense") -GameplayTagList=(Tag="Armor.Category.Unarmored.Legendary",DevComment="Legendary in Unarmored Defense") - -GameplayTagList=(Tag="Armor.Category.Light.Untrained",DevComment="Untrained in Light Armor Defense") -GameplayTagList=(Tag="Armor.Category.Light.Trained",DevComment="Trained in Light Armor Defense") -GameplayTagList=(Tag="Armor.Category.Light.Expert",DevComment="Expert in Light Armor Defense") -GameplayTagList=(Tag="Armor.Category.Light.Master",DevComment="Master in Light Armor Defense") -GameplayTagList=(Tag="Armor.Category.Light.Legendary",DevComment="Legendary in Light Armor Defense") - -GameplayTagList=(Tag="Armor.Category.Medium.Untrained",DevComment="Untrained in Medium Armor Defense") -GameplayTagList=(Tag="Armor.Category.Medium.Trained",DevComment="Trained in Medium Armor Defense") -GameplayTagList=(Tag="Armor.Category.Medium.Expert",DevComment="Expert in Medium Armor Defense") -GameplayTagList=(Tag="Armor.Category.Medium.Master",DevComment="Master in Medium Armor Defense") -GameplayTagList=(Tag="Armor.Category.Medium.Legendary",DevComment="Legendary in Medium Armor Defense") - -GameplayTagList=(Tag="Armor.Category.Heavy.Untrained",DevComment="Untrained in Heavy Armor Defense") -GameplayTagList=(Tag="Armor.Category.Heavy.Trained",DevComment="Trained in Heavy Armor Defense") -GameplayTagList=(Tag="Armor.Category.Heavy.Expert",DevComment="Expert in Heavy Armor Defense") -GameplayTagList=(Tag="Armor.Category.Heavy.Master",DevComment="Master in Heavy Armor Defense") -GameplayTagList=(Tag="Armor.Category.Heavy.Legendary",DevComment="Legendary in Heavy Armor Defense") - -; Spell Attack Proficiency Rank - The character's aptitude in spell attacks (Spell Attack Roll). -GameplayTagList=(Tag="SpellAttack.Untrained",DevComment="Untrained in spell attacks") -GameplayTagList=(Tag="SpellAttack.Trained",DevComment="Trained in spell attacks") -GameplayTagList=(Tag="SpellAttack.Expert",DevComment="Expert in spell attacks") -GameplayTagList=(Tag="SpellAttack.Master",DevComment="Master in spell attacks") -GameplayTagList=(Tag="SpellAttack.Legendary",DevComment="Legendary in spell attacks") - -; Spell DC Proficiency Rank - The character's aptitude in spellcasting (Spell DC). -GameplayTagList=(Tag="SpellDc.Untrained",DevComment="Untrained in spellcasting") -GameplayTagList=(Tag="SpellDc.Trained",DevComment="Trained in spellcasting") -GameplayTagList=(Tag="SpellDc.Expert",DevComment="Expert in spellcasting") -GameplayTagList=(Tag="SpellDc.Master",DevComment="Master in spellcasting") -GameplayTagList=(Tag="SpellDc.Legendary",DevComment="Legendary in spellcasting") - -; Saving Throws - Representations of a character’s ability to avoid danger or otherwise withstand an assault to their -; mind or body. -; Source: Pathfinder 2E Core Rulebook, Chapter 1, page 11. -GameplayTagList=(Tag="SavingThrow.Fortitude.Untrained",DevComment="Untrained in Fortitude") -GameplayTagList=(Tag="SavingThrow.Fortitude.Trained",DevComment="Trained in Fortitude") -GameplayTagList=(Tag="SavingThrow.Fortitude.Expert",DevComment="Expert in Fortitude") -GameplayTagList=(Tag="SavingThrow.Fortitude.Master",DevComment="Master in Fortitude") -GameplayTagList=(Tag="SavingThrow.Fortitude.Legendary",DevComment="Legendary in Fortitude") - -GameplayTagList=(Tag="SavingThrow.Reflex.Untrained",DevComment="Untrained in Reflex") -GameplayTagList=(Tag="SavingThrow.Reflex.Trained",DevComment="Trained in Reflex") -GameplayTagList=(Tag="SavingThrow.Reflex.Expert",DevComment="Expert in Reflex") -GameplayTagList=(Tag="SavingThrow.Reflex.Master",DevComment="Master in Reflex") -GameplayTagList=(Tag="SavingThrow.Reflex.Legendary",DevComment="Legendary in Reflex") - -GameplayTagList=(Tag="SavingThrow.Will.Untrained",DevComment="Untrained in Will") -GameplayTagList=(Tag="SavingThrow.Will.Trained",DevComment="Trained in Will") -GameplayTagList=(Tag="SavingThrow.Will.Expert",DevComment="Expert in Will") -GameplayTagList=(Tag="SavingThrow.Will.Master",DevComment="Master in Will") -GameplayTagList=(Tag="SavingThrow.Will.Legendary",DevComment="Legendary in Will") - -GameplayTagList=(Tag="Perception.Untrained",DevComment="Untrained in Perception") -GameplayTagList=(Tag="Perception.Trained",DevComment="Trained in Perception") -GameplayTagList=(Tag="Perception.Expert",DevComment="Expert in Perception") -GameplayTagList=(Tag="Perception.Master",DevComment="Master in Perception") -GameplayTagList=(Tag="Perception.Legendary",DevComment="Legendary in Perception") diff --git a/Config/Tags/PF2DamageTypes.ini b/Config/Tags/PF2DamageTypes.ini deleted file mode 100644 index 483c0004f..000000000 --- a/Config/Tags/PF2DamageTypes.ini +++ /dev/null @@ -1,40 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: -; - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. -; - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. -; - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. -; -; Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, -; as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this -; file other than the material designated as Open Game Content may be reproduced in any form without written -; permission. - -[/Script/GameplayTags.GameplayTagsList] -; Damage types -; Source: Pathfinder 2E Core Rulebook, Chapter 9, page 452, "Damage Types". -GameplayTagList=(Tag="DamageType.Physical",DevComment="Damage dealt by weapons, many physical hazards, and a handful of spells is collectively called physical damage. The main types of physical damage are bludgeoning, piercing, and slashing.") -GameplayTagList=(Tag="DamageType.Physical.Bludgeoning",DevComment="Bludgeoning (B) damage comes from weapons and hazards that deal blunt-force trauma, like a hit from a club or being dashed against rocks.") -GameplayTagList=(Tag="DamageType.Physical.Piercing",DevComment="Piercing (P) damage is dealt from stabs and punctures, whether from a dragon's fangs or the thrust of a spear.") -GameplayTagList=(Tag="DamageType.Physical.Slashing",DevComment="Slashing (S) damage is delivered by a cut, be it the swing of the sword or the blow from a scythe blades trap.") - -GameplayTagList=(Tag="DamageType.Energy",DevComment="Many spells and other magical effects deal energy damage. Energy damage is also dealt from effects in the world, such as the biting cold of a blizzard to a raging forest fire. The main types of energy damage are acid, cold, electricity, fire, and sonic.") -GameplayTagList=(Tag="DamageType.Energy.Acid",DevComment="Acid damage can be delivered by gases, liquids, and certain solids that dissolve flesh, and sometimes harder materials.") -GameplayTagList=(Tag="DamageType.Energy.Cold",DevComment="Cold damage freezes material by way of contact with chilling gases and ice. Electricity damage comes from the discharge of powerful lightning and sparks.") -GameplayTagList=(Tag="DamageType.Energy.Electricity",DevComment="Electricity comes from the discharge of powerful lightning and sparks.") -GameplayTagList=(Tag="DamageType.Energy.Fire",DevComment="Fire damage burns through heat and combustion.") -GameplayTagList=(Tag="DamageType.Energy.Sonic",DevComment="Sonic damage assaults matter with high-frequency vibration and sound waves.") -GameplayTagList=(Tag="DamageType.Energy.Positive",DevComment="Positive damage harms only undead creatures, withering undead bodies and disrupting incorporeal undead.") -GameplayTagList=(Tag="DamageType.Energy.Negative",DevComment="Negative damage saps life, damaging only living creatures.") -GameplayTagList=(Tag="DamageType.Energy.Force",DevComment="Powerful and pure magical energy can manifest itself as force damage. Few things can resist this type of damage—not even incorporeal creatures such as ghosts and wraiths.") - -GameplayTagList=(Tag="DamageType.Alignment",DevComment="Weapons and effects keyed to a particular alignment can deal chaotic, evil, good, or lawful damage. These damage types apply only to creatures that have the opposing alignment trait.") -GameplayTagList=(Tag="DamageType.Alignment.Chaotic",DevComment="Chaotic damage harms only lawful creatures.") -GameplayTagList=(Tag="DamageType.Alignment.Evil",DevComment="Evil damage harms only good creatures.") -GameplayTagList=(Tag="DamageType.Alignment.Good",DevComment="Good damage harms only evil creatures.") -GameplayTagList=(Tag="DamageType.Alignment.Lawful",DevComment="Lawful damage harms only chaotic creatures.") - -GameplayTagList=(Tag="DamageType.Mental",DevComment="Sometimes an effect can target the mind with enough psychic force to actually deal damage to the creature. When it does, it deals mental damage. Mindless creatures and those with only programmed or rudimentary intelligence are often immune to mental damage and effects.") -GameplayTagList=(Tag="DamageType.Poison",DevComment="Venoms, toxins and the like can deal poison damage, which affects creatures by way of contact, ingestion, inhalation, or injury. In addition to coming from monster attacks, alchemical items, and spells, poison damage is often caused by ongoing afflictions, which follow special rules.") -GameplayTagList=(Tag="DamageType.Bleed",DevComment="This is persistent damage that represents loss of blood. As such, it has no effect on nonliving creatures or living creatures that don't need blood to live.") -GameplayTagList=(Tag="DamageType.Precision",DevComment="When a character hits with an ability that grants precision damage, the character increase the attack's listed damage, using the same damage type, rather than tracking a separate pool of damage.") diff --git a/Config/Tags/PF2Encounters.ini b/Config/Tags/PF2Encounters.ini deleted file mode 100644 index e5bf78299..000000000 --- a/Config/Tags/PF2Encounters.ini +++ /dev/null @@ -1,16 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2022-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not -; distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. - -[/Script/GameplayTags.GameplayTagsList] -; Tags that apply to characters during encounters. -GameplayTagList=(Tag="Encounter.Character.TurnActive",DevComment="Tag applied to a character whose turn is active.") -GameplayTagList=(Tag="Encounter.Character.PointsRefreshFrozen",DevComment="Tag applied to a character who cannot presently accrue action points.") -GameplayTagList=(Tag="Encounter.Character.Cooldown.NextTurn",DevComment="Tag applied to a character who is currently on a cooldown waiting for their next turn to start.") - -; Tags that trigger Encounter-related Gameplay Abilities. -GameplayTagList=(Tag="TriggerTagCategory.Encounters.EnterEncounter",DevComment="Tag to trigger Gameplay Abilities appropriate for when a character enters an encounter.") -GameplayTagList=(Tag="TriggerTagCategory.Encounters.StartTurn",DevComment="Tag to trigger Gameplay Abilities appropriate for the start of a character's turn during an encounter.") -GameplayTagList=(Tag="TriggerTagCategory.Encounters.EndTurn",DevComment="Tag to trigger Gameplay Abilities appropriate for the end of a character's turn during an encounter.") -GameplayTagList=(Tag="TriggerTagCategory.Encounters.LeaveEncounter",DevComment="Tag to trigger Gameplay Abilities appropriate for when a character leaves an encounter.") diff --git a/Config/Tags/PF2GameplayAbilities.ini b/Config/Tags/PF2GameplayAbilities.ini deleted file mode 100644 index 3e08bcffe..000000000 --- a/Config/Tags/PF2GameplayAbilities.ini +++ /dev/null @@ -1,23 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not -; distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. - -[/Script/GameplayTags.GameplayTagsList] -; Tags that Identify Gameplay Ability Types -GameplayTagList=(Tag="GameplayAbility.Type.AbilityBoost",DevComment="Tag applied to Gameplay Abilities that offer a character the opportunity to boost an ability score.") -GameplayTagList=(Tag="GameplayAbility.Type.DefaultMovement",DevComment="Tag applied to Gameplay Abilities that perform the default type of movement for a character.") -GameplayTagList=(Tag="GameplayAbility.Type.DefaultFaceTarget",DevComment="Tag applied to Gameplay Abilities that have a character rotate to face another actor.") -GameplayTagList=(Tag="GameplayAbility.Type.QueueableAction", DevComment="Tag applied to Gameplay Abilities that can be queued during encounters. This should also be used as a blocking tag to prevent it from being run concurrently with other actions at the time it is de-queued.") -GameplayTagList=(Tag="GameplayAbility.Type.DirectlyInvokable",DevComment="Tag applied to Gameplay Abilities that can be directly invoked by the player (e.g., from an ability dialog or input binding).") -GameplayTagList=(Tag="GameplayAbility.Type.BlocksEndOfTurn",DevComment="Tag applied to Gameplay Abilities that prevent a character's turn from ending while they are active (e.g., an attack that is in progress).") - -; Tags that identify additional metadata that has been passed along for an ability activation. -GameplayTagList=(Tag="GameplayAbility.Activation.Metadata.HasTarget.Character", DevComment="Tag that a Gameplay Ability activation includes a target character (for healing or attack) chosen by the player.") -GameplayTagList=(Tag="GameplayAbility.Activation.Metadata.HasTarget.Location", DevComment="Tag that a Gameplay Ability activation includes a target map location chosen by the player.") - -; Tags that identify events abilities can wait for during their activation. -GameplayTagList=(Tag="GameplayAbility.GameplayEvent.DamageReceived",DevComment="Tag on a GameplayEvent sent to a character to notify passive condition check GAs that the character has received damage.") -GameplayTagList=(Tag="GameplayAbility.GameplayEvent.FacingComplete",DevComment="Tag on a GameplayEvent sent to a character to notify the active ability that the character is now oriented properly for an attack to proceed against a target.") -GameplayTagList=(Tag="GameplayAbility.GameplayEvent.HitPointsChanged",DevComment="Tag on a GameplayEvent sent to a character to notify passive condition check GAs that the character's hit points have changed.") -GameplayTagList=(Tag="GameplayAbility.GameplayEvent.Montage.WeaponHit",DevComment="Tag on a GameplayEvent emitted during an attack montage at the point that the weapon should make contact with an enemy.") diff --git a/Config/Tags/PF2GameplayCues.ini b/Config/Tags/PF2GameplayCues.ini deleted file mode 100644 index 89aefc045..000000000 --- a/Config/Tags/PF2GameplayCues.ini +++ /dev/null @@ -1,8 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2023-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not -; distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. - -; Gameplay Cues that provide special FX and sound FX in response to effect activations. -[/Script/GameplayTags.GameplayTagsList] -GameplayTagList=(Tag="GameplayCue.Character.InflictDamage", DevComment="Gameplay cue fired whenever one character inflicts damage on another.") diff --git a/Config/Tags/PF2GameplayEffects.ini b/Config/Tags/PF2GameplayEffects.ini deleted file mode 100644 index 2a09c456c..000000000 --- a/Config/Tags/PF2GameplayEffects.ini +++ /dev/null @@ -1,22 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not -; distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. - -[/Script/GameplayTags.GameplayTagsList] -; Weights used to control the order that GEs are applied to an OpenPF2 character. -GameplayTagList=(Tag="GameplayEffect.WeightGroup.00_InitializeBaseStats", DevComment="The weight group used for GEs that initialize base stats.") -GameplayTagList=(Tag="GameplayEffect.WeightGroup.05_PostInitializeBaseStats", DevComment="The weight group used for GEs provided by the game designer that have to run right after base stats.") -GameplayTagList=(Tag="GameplayEffect.WeightGroup.10_ManagedEffects", DevComment="The weight group used for GEs generated from other values on this character (managed by ASC logic).") -GameplayTagList=(Tag="GameplayEffect.WeightGroup.15_PreAbilityBoosts", DevComment="The default weight group for custom, passive GEs from a game designer; applied before ability boosts.") -GameplayTagList=(Tag="GameplayEffect.WeightGroup.20_AbilityBoosts", DevComment="The weight group used for ability boosts selected by the player or a game designer.") -GameplayTagList=(Tag="GameplayEffect.WeightGroup.25_PreFinalizeStats", DevComment="The weight group used for custom GEs provided by the game designer that must run before the last group of stats GEs.") -GameplayTagList=(Tag="GameplayEffect.WeightGroup.30_FinalizeStats", DevComment="The weight group used for GEs that need to run last because they heavily depend on the results of earlier GEs.") - -; Parameters passed in to "Set by caller" GEs -GameplayTagList=(Tag="GameplayEffect.Parameter.Damage", DevComment="The parameter passed in to a dynamic damage GE, to control the amount of damage inflicted.") -GameplayTagList=(Tag="GameplayEffect.Parameter.Resistance", DevComment="The parameter passed in to a dynamic resistance GE, to control the amount of damage resistance.") -GameplayTagList=(Tag="GameplayEffect.Parameter.Healing", DevComment="The parameter passed in to a dynamic healing GE, to control the amount of hit points granted to the character.") - -; "Source" Tags passed in from Blueprints to calculate stats. These should not be used on weapons, characters, or other objects that appear in the world. -GameplayTagList=(Tag="GameplayEffect.CalculationSource.Initiative", DevComment="Source tag passed in when a character's initiative in an encounter is being determined.") diff --git a/Config/Tags/PF2Languages.ini b/Config/Tags/PF2Languages.ini deleted file mode 100644 index a313e1e00..000000000 --- a/Config/Tags/PF2Languages.ini +++ /dev/null @@ -1,44 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: -; - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. -; - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. -; - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. -; -; Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, -; as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this -; file other than the material designated as Open Game Content may be reproduced in any form without written -; permission. - -[/Script/GameplayTags.GameplayTagsList] -; Common Languages - "Languages that are common are regularly encountered in most places, even among those who aren’t native speakers." -; Source: Pathfinder 2E Core Rulebook, page 65, Table 2-1: Common Languages. -GameplayTagList=(Tag="Language.Common.Common",DevComment="Language spoken by humans, dwarves, elves, halflings, and other common ancestries.") -GameplayTagList=(Tag="Language.Common.Draconic",DevComment="Language spoken by dragons, reptilian humanoids.") -GameplayTagList=(Tag="Language.Common.Dwarven",DevComment="Language spoken by dwarves.") -GameplayTagList=(Tag="Language.Common.Elven",DevComment="Language spoken by elves, half-elves.") -GameplayTagList=(Tag="Language.Common.Gnomish",DevComment="Language spoken by gnomes.") -GameplayTagList=(Tag="Language.Common.Goblin",DevComment="Language spoken by goblins, hobgoblins, bugbears.") -GameplayTagList=(Tag="Language.Common.Halfling",DevComment="Language spoken by halflings.") -GameplayTagList=(Tag="Language.Common.Jotun",DevComment="Language spoken by giants, ogres, trolls, ettins, cyclopes.") -GameplayTagList=(Tag="Language.Common.Orcish",DevComment="Language spoken by orcs, half-orcs.") -GameplayTagList=(Tag="Language.Common.Sylvan",DevComment="Language spoken by fey, centaurs, plant creatures.") -GameplayTagList=(Tag="Language.Common.Undercommon",DevComment="Language spoken by drow, duergars, xulgaths.") - -; Uncommon Languages - "Languages that are uncommon are most frequently spoken by native speakers, but they are also spoken by certain scholars and others interested in the associated cultures." -; Source: Pathfinder 2E Core Rulebook, page 65, Table 2-2: Uncommon Languages. -GameplayTagList=(Tag="Language.Uncommon.Abyssal",DevComment="Language spoken by demons.") -GameplayTagList=(Tag="Language.Uncommon.Aklo",DevComment="Language spoken by deros, evil fey, otherworldly monsters.") -GameplayTagList=(Tag="Language.Uncommon.Aquan",DevComment="Language spoken by aquatic creatures, water elemental creatures.") -GameplayTagList=(Tag="Language.Uncommon.Auran",DevComment="Language spoken by air elemental creatures, flying creatures.") -GameplayTagList=(Tag="Language.Uncommon.Celestial",DevComment="Language spoken by angels.") -GameplayTagList=(Tag="Language.Uncommon.Gnoll",DevComment="Language spoken by gnolls.") -GameplayTagList=(Tag="Language.Uncommon.Ignan",DevComment="Language spoken by fire elemental creatures.") -GameplayTagList=(Tag="Language.Uncommon.Infernal",DevComment="Language spoken by devils.") -GameplayTagList=(Tag="Language.Uncommon.Necril",DevComment="Language spoken by ghouls, intelligent undead.") -GameplayTagList=(Tag="Language.Uncommon.Shadowtongue",DevComment="Language spoken by nidalese, Shadow Plane creatures.") -GameplayTagList=(Tag="Language.Uncommon.Terran",DevComment="Language spoken by earth elemental creatures.") - -; Secret Languages - "Druidic is a secret language, and is available only to characters who are druids. In fact, druids are prohibited from teaching the language to non-druids." -; Source: Pathfinder 2E Core Rulebook, page 65, Table 2-3: Secret Languages. -GameplayTagList=(Tag="Language.Secret.Druidic",DevComment="Language spoken by druids.") diff --git a/Config/Tags/PF2Skills.ini b/Config/Tags/PF2Skills.ini deleted file mode 100644 index fb52aab38..000000000 --- a/Config/Tags/PF2Skills.ini +++ /dev/null @@ -1,122 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: -; - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. -; - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. -; - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. -; -; Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, -; as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this -; file other than the material designated as Open Game Content may be reproduced in any form without written -; permission. - -[/Script/GameplayTags.GameplayTagsList] -; Skills - Representations of a character's training and experience at performing certain tasks. -; Source: Pathfinder 2E Core Rulebook, Chapter 4, pages 233-253. -GameplayTagList=(Tag="Skill.Acrobatics.Untrained",DevComment="Untrained in Acrobatics") -GameplayTagList=(Tag="Skill.Acrobatics.Trained",DevComment="Trained in Acrobatics") -GameplayTagList=(Tag="Skill.Acrobatics.Expert",DevComment="Expert in Acrobatics") -GameplayTagList=(Tag="Skill.Acrobatics.Master",DevComment="Master in Acrobatics") -GameplayTagList=(Tag="Skill.Acrobatics.Legendary",DevComment="Legendary in Acrobatics") - -GameplayTagList=(Tag="Skill.Arcana.Untrained",DevComment="Untrained in Arcana") -GameplayTagList=(Tag="Skill.Arcana.Trained",DevComment="Trained in Arcana") -GameplayTagList=(Tag="Skill.Arcana.Expert",DevComment="Expert in Arcana") -GameplayTagList=(Tag="Skill.Arcana.Master",DevComment="Master in Arcana") -GameplayTagList=(Tag="Skill.Arcana.Legendary",DevComment="Legendary in Arcana") - -GameplayTagList=(Tag="Skill.Athletics.Untrained",DevComment="Untrained in Athletics") -GameplayTagList=(Tag="Skill.Athletics.Trained",DevComment="Trained in Athletics") -GameplayTagList=(Tag="Skill.Athletics.Expert",DevComment="Expert in Athletics") -GameplayTagList=(Tag="Skill.Athletics.Master",DevComment="Master in Athletics") -GameplayTagList=(Tag="Skill.Athletics.Legendary",DevComment="Legendary in Athletics") - -GameplayTagList=(Tag="Skill.Crafting.Untrained",DevComment="Untrained in Crafting") -GameplayTagList=(Tag="Skill.Crafting.Trained",DevComment="Trained in Crafting") -GameplayTagList=(Tag="Skill.Crafting.Expert",DevComment="Expert in Crafting") -GameplayTagList=(Tag="Skill.Crafting.Master",DevComment="Master in Crafting") -GameplayTagList=(Tag="Skill.Crafting.Legendary",DevComment="Legendary in Crafting") - -GameplayTagList=(Tag="Skill.Deception.Untrained",DevComment="Untrained in Deception") -GameplayTagList=(Tag="Skill.Deception.Trained",DevComment="Trained in Deception") -GameplayTagList=(Tag="Skill.Deception.Expert",DevComment="Expert in Deception") -GameplayTagList=(Tag="Skill.Deception.Master",DevComment="Master in Deception") -GameplayTagList=(Tag="Skill.Deception.Legendary",DevComment="Legendary in Deception") - -GameplayTagList=(Tag="Skill.Diplomacy.Untrained",DevComment="Untrained in Diplomacy") -GameplayTagList=(Tag="Skill.Diplomacy.Trained",DevComment="Trained in Diplomacy") -GameplayTagList=(Tag="Skill.Diplomacy.Expert",DevComment="Expert in Diplomacy") -GameplayTagList=(Tag="Skill.Diplomacy.Master",DevComment="Master in Diplomacy") -GameplayTagList=(Tag="Skill.Diplomacy.Legendary",DevComment="Legendary in Diplomacy") - -GameplayTagList=(Tag="Skill.Intimidation.Untrained",DevComment="Untrained in Intimidation") -GameplayTagList=(Tag="Skill.Intimidation.Trained",DevComment="Trained in Intimidation") -GameplayTagList=(Tag="Skill.Intimidation.Expert",DevComment="Expert in Intimidation") -GameplayTagList=(Tag="Skill.Intimidation.Master",DevComment="Master in Intimidation") -GameplayTagList=(Tag="Skill.Intimidation.Legendary",DevComment="Legendary in Intimidation") - -GameplayTagList=(Tag="Skill.Lore1.Untrained",DevComment="Untrained in Lore1") -GameplayTagList=(Tag="Skill.Lore1.Trained",DevComment="Trained in Lore1") -GameplayTagList=(Tag="Skill.Lore1.Expert",DevComment="Expert in Lore1") -GameplayTagList=(Tag="Skill.Lore1.Master",DevComment="Master in Lore1") -GameplayTagList=(Tag="Skill.Lore1.Legendary",DevComment="Legendary in Lore1") - -GameplayTagList=(Tag="Skill.Lore2.Untrained",DevComment="Untrained in Lore2") -GameplayTagList=(Tag="Skill.Lore2.Trained",DevComment="Trained in Lore2") -GameplayTagList=(Tag="Skill.Lore2.Expert",DevComment="Expert in Lore2") -GameplayTagList=(Tag="Skill.Lore2.Master",DevComment="Master in Lore2") -GameplayTagList=(Tag="Skill.Lore2.Legendary",DevComment="Legendary in Lore2") - -GameplayTagList=(Tag="Skill.Medicine.Untrained",DevComment="Untrained in Medicine") -GameplayTagList=(Tag="Skill.Medicine.Trained",DevComment="Trained in Medicine") -GameplayTagList=(Tag="Skill.Medicine.Expert",DevComment="Expert in Medicine") -GameplayTagList=(Tag="Skill.Medicine.Master",DevComment="Master in Medicine") -GameplayTagList=(Tag="Skill.Medicine.Legendary",DevComment="Legendary in Medicine") - -GameplayTagList=(Tag="Skill.Nature.Untrained",DevComment="Untrained in Nature") -GameplayTagList=(Tag="Skill.Nature.Trained",DevComment="Trained in Nature") -GameplayTagList=(Tag="Skill.Nature.Expert",DevComment="Expert in Nature") -GameplayTagList=(Tag="Skill.Nature.Master",DevComment="Master in Nature") -GameplayTagList=(Tag="Skill.Nature.Legendary",DevComment="Legendary in Nature") - -GameplayTagList=(Tag="Skill.Occultism.Untrained",DevComment="Untrained in Occultism") -GameplayTagList=(Tag="Skill.Occultism.Trained",DevComment="Trained in Occultism") -GameplayTagList=(Tag="Skill.Occultism.Expert",DevComment="Expert in Occultism") -GameplayTagList=(Tag="Skill.Occultism.Master",DevComment="Master in Occultism") -GameplayTagList=(Tag="Skill.Occultism.Legendary",DevComment="Legendary in Occultism") - -GameplayTagList=(Tag="Skill.Performance.Untrained",DevComment="Untrained in Performance") -GameplayTagList=(Tag="Skill.Performance.Trained",DevComment="Trained in Performance") -GameplayTagList=(Tag="Skill.Performance.Expert",DevComment="Expert in Performance") -GameplayTagList=(Tag="Skill.Performance.Master",DevComment="Master in Performance") -GameplayTagList=(Tag="Skill.Performance.Legendary",DevComment="Legendary in Performance") - -GameplayTagList=(Tag="Skill.Religion.Untrained",DevComment="Untrained in Religion") -GameplayTagList=(Tag="Skill.Religion.Trained",DevComment="Trained in Religion") -GameplayTagList=(Tag="Skill.Religion.Expert",DevComment="Expert in Religion") -GameplayTagList=(Tag="Skill.Religion.Master",DevComment="Master in Religion") -GameplayTagList=(Tag="Skill.Religion.Legendary",DevComment="Legendary in Religion") - -GameplayTagList=(Tag="Skill.Society.Untrained",DevComment="Untrained in Society") -GameplayTagList=(Tag="Skill.Society.Trained",DevComment="Trained in Society") -GameplayTagList=(Tag="Skill.Society.Expert",DevComment="Expert in Society") -GameplayTagList=(Tag="Skill.Society.Master",DevComment="Master in Society") -GameplayTagList=(Tag="Skill.Society.Legendary",DevComment="Legendary in Society") - -GameplayTagList=(Tag="Skill.Stealth.Untrained",DevComment="Untrained in Stealth") -GameplayTagList=(Tag="Skill.Stealth.Trained",DevComment="Trained in Stealth") -GameplayTagList=(Tag="Skill.Stealth.Expert",DevComment="Expert in Stealth") -GameplayTagList=(Tag="Skill.Stealth.Master",DevComment="Master in Stealth") -GameplayTagList=(Tag="Skill.Stealth.Legendary",DevComment="Legendary in Stealth") - -GameplayTagList=(Tag="Skill.Survival.Untrained",DevComment="Untrained in Survival") -GameplayTagList=(Tag="Skill.Survival.Trained",DevComment="Trained in Survival") -GameplayTagList=(Tag="Skill.Survival.Expert",DevComment="Expert in Survival") -GameplayTagList=(Tag="Skill.Survival.Master",DevComment="Master in Survival") -GameplayTagList=(Tag="Skill.Survival.Legendary",DevComment="Legendary in Survival") - -GameplayTagList=(Tag="Skill.Thievery.Untrained",DevComment="Untrained in Thievery") -GameplayTagList=(Tag="Skill.Thievery.Trained",DevComment="Trained in Thievery") -GameplayTagList=(Tag="Skill.Thievery.Expert",DevComment="Expert in Thievery") -GameplayTagList=(Tag="Skill.Thievery.Master",DevComment="Master in Thievery") -GameplayTagList=(Tag="Skill.Thievery.Legendary",DevComment="Legendary in Thievery") diff --git a/Config/Tags/PF2SpecialSenses.ini b/Config/Tags/PF2SpecialSenses.ini deleted file mode 100644 index c74b2a19f..000000000 --- a/Config/Tags/PF2SpecialSenses.ini +++ /dev/null @@ -1,20 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: -; - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. -; - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. -; - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. -; -; Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, -; as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this -; file other than the material designated as Open Game Content may be reproduced in any form without written -; permission. - -[/Script/GameplayTags.GameplayTagsList] -; Special Senses - Special senses grant greater awareness that allows a creature with these senses to either ignore or reduce the effects of the undetected, hidden, or concealed conditions ... when it comes to situations that foil average vision. -; Source: Pathfinder 2E Core Rulebook, page 465, "Special Senses". -GameplayTagList=(Tag="SpecialSense.Darkvision",DevComment="A creature with darkvision can see perfectly well in areas of darkness and dim light, though such vision is in black and white only. Some forms of magical darkness, such as a 4th-level darkness spell, block normal darkvision.") -GameplayTagList=(Tag="SpecialSense.GreaterDarkvision",DevComment="A creature with greater darkvision can see perfectly well in areas of darkness and dim light, though such vision is in black and white only. Some forms of magical darkness, such as a 4th-level darkness spell, block normal darkvision. A creature with greater darkvision, however, can see through even these forms of magical darkness.") -GameplayTagList=(Tag="SpecialSense.LowLightVision",DevComment="A creature with low-light vision can see in dim light as though it were bright light, so it ignores the concealed condition due to dim light.") -GameplayTagList=(Tag="SpecialSense.Scent",DevComment="Scent involves sensing creatures or objects by smell, and is usually a vague sense. The range is listed in the ability, and it functions only if the creature or object being detected emits an aroma (for instance, incorporeal creatures usually do not exude an aroma).") -GameplayTagList=(Tag="SpecialSense.Tremorsense",DevComment="Tremorsense allows a creature to feel the vibrations through a solid surface caused by movement. It is usually an imprecise sense with a limited range (listed in the ability). Tremorsense functions only if the detecting creature is on the same surface as the subject, and only if the subject is moving along (or burrowing through) the surface.") diff --git a/Config/Tags/PF2Traits.ini b/Config/Tags/PF2Traits.ini deleted file mode 100644 index 9d2939f04..000000000 --- a/Config/Tags/PF2Traits.ini +++ /dev/null @@ -1,196 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: -; - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. -; - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. -; - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. -; -; Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, -; as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this -; file other than the material designated as Open Game Content may be reproduced in any form without written -; permission. - -[/Script/GameplayTags.GameplayTagsList] -; Traits - Keywords that convey information about a rules element. - -; Ability Traits -; Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. -GameplayTagList=(Tag="Trait.Ability.Alchemist",DevComment="This indicates abilities from the alchemist class.") -GameplayTagList=(Tag="Trait.Ability.Attack",DevComment="An ability with this trait involves an attack. For each attack you make beyond the first on your turn, you take a multiple attack penalty.") -GameplayTagList=(Tag="Trait.Ability.Barbarian",DevComment="This indicates abilities from the barbarian class.") -GameplayTagList=(Tag="Trait.Ability.Bard",DevComment="This indicates abilities from the bard class.") -GameplayTagList=(Tag="Trait.Ability.Champion",DevComment="This indicates abilities from the champion class.") -GameplayTagList=(Tag="Trait.Ability.Cleric",DevComment="This indicates abilities from the cleric class.") -GameplayTagList=(Tag="Trait.Ability.Common",DevComment="Anything that doesn't list another rarity trait (uncommon, rare, or unique) automatically has the common trait. This rarity indicates that an ability is available to all players who meet the prerequisites for it.") -GameplayTagList=(Tag="Trait.Ability.Druid",DevComment="This indicates abilities from the druid class.") -GameplayTagList=(Tag="Trait.Ability.Fighter",DevComment="This indicates abilities from the fighter class.") -GameplayTagList=(Tag="Trait.Ability.Incapacitation",DevComment="An ability with this trait can take a character completely out of the fight or even kill them, and it's harder to use on a more powerful character.") -GameplayTagList=(Tag="Trait.Ability.Monk",DevComment="Abilities with this trait are from the monk class.") -GameplayTagList=(Tag="Trait.Ability.Ranger",DevComment="This indicates abilities from the ranger class.") -GameplayTagList=(Tag="Trait.Ability.Rogue",DevComment="This indicates abilities from the rogue class.") -GameplayTagList=(Tag="Trait.Ability.Secret",DevComment="The GM rolls the check for this ability in secret.") -GameplayTagList=(Tag="Trait.Ability.Sorcerer",DevComment="This indicates abilities from the sorcerer class.") -GameplayTagList=(Tag="Trait.Ability.Wizard",DevComment="This indicates abilities from the wizard class.") - -; Action Traits -; Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. -GameplayTagList=(Tag="Trait.Action.Auditory",DevComment="Auditory actions rely on sound. An action with the auditory trait can be successful only if the creature using the action can speak or otherwise produce the required sounds.") -GameplayTagList=(Tag="Trait.Action.Concentrate",DevComment="An action with this trait requires a degree of mental concentration and discipline.") -GameplayTagList=(Tag="Trait.Action.Flourish",DevComment="Flourish actions are actions that require too much exertion to perform a large number in a row. You can use only 1 action with the flourish trait per turn.") -GameplayTagList=(Tag="Trait.Action.Manipulate",DevComment="You must physically manipulate an item or make gestures to use an action with this trait. Creatures without a suitable appendage can't perform actions with this trait. Manipulate actions often trigger reactions.") -GameplayTagList=(Tag="Trait.Action.Metamagic",DevComment="Actions with the metamagic trait, usually from metamagic feats, tweak the properties of your spells. You must use a metamagic action directly before Casting the Spell you want to alter. If you use any action (including free actions and reactions) other than Cast a Spell directly after, you waste the benefits of the metamagic action. Any additional effects added by a metamagic action are part of the spell's effect, not of the metamagic action itself.") -GameplayTagList=(Tag="Trait.Action.Move",DevComment="An action with this trait involves moving from one space to another.") -GameplayTagList=(Tag="Trait.Action.Open",DevComment="These maneuvers work only as the first salvo on your turn. You can use an open only if you haven't used an action with the attack or open trait yet this turn.") -GameplayTagList=(Tag="Trait.Action.Press",DevComment="Actions with this trait allow you to follow up earlier attacks. An action with the press trait can be used only if you are currently affected by a multiple attack penalty. Some actions with the press trait also grant an effect on a failure. The effects that are added on a failure don't apply on a critical failure. If your press action succeeds, you can choose to apply the failure effect instead. (For example, you may wish to do this when an attack deals no damage due to resistance.) Because a press action requires a multiple attack penalty, you can't use one when it's not your turn, even if you use the Ready activity.") -GameplayTagList=(Tag="Trait.Action.Stance",DevComment="A stance is a general combat strategy that you enter by using an action with the stance trait, and that you remain in for some time. A stance lasts until you get knocked out, until its requirements (if any) are violated, until the encounter ends, or until you enter a new stance, whichever comes first. After you use an action with the stance trait, you can't use another one for 1 round. You can enter or be in a stance only in encounter mode.") - -; Condition Traits -; Source: Pathfinder 2E Core Rulebook, Conditions Appendix, pages 618-623. -GameplayTagList=(Tag="Trait.Condition.Blinded",DevComment="You can't see. All normal terrain is difficult terrain to you. You can't detect anything using vision. You are immune to visual effects. Blinded overrides dazzled.") -GameplayTagList=(Tag="Trait.Condition.Broken",DevComment="Broken is a condition that affects objects. A broken object can't be used for its normal function, nor does it grant bonuses—with the exception of armor. A broken item still imposes penalties and limitations normally incurred by carrying, holding, or wearing it.") -GameplayTagList=(Tag="Trait.Condition.Clumsy",DevComment="Your movements become clumsy and inexact. Clumsy always includes a value.") -GameplayTagList=(Tag="Trait.Condition.Clumsy.1") -GameplayTagList=(Tag="Trait.Condition.Clumsy.2") -GameplayTagList=(Tag="Trait.Condition.Clumsy.3") -GameplayTagList=(Tag="Trait.Condition.Clumsy.4") -GameplayTagList=(Tag="Trait.Condition.Concealed",DevComment="While you are concealed from a creature, such as in a thick fog, you are difficult for that creature to see. You can still be observed, but you're tougher to target.") -GameplayTagList=(Tag="Trait.Condition.Confused",DevComment="You don't have your wits about you, and you attack wildly. You are flat-footed, you don't treat anyone as your ally (though they might still treat you as theirs), and you can't Delay, Ready, or use reactions.") -GameplayTagList=(Tag="Trait.Condition.Controlled",DevComment="Someone else is making your decisions for you, usually because you're being commanded or magically dominated.") -GameplayTagList=(Tag="Trait.Condition.Dazzled",DevComment="Your eyes are overstimulated. If vision is your only precise sense, all creatures and objects are concealed from you.") -GameplayTagList=(Tag="Trait.Condition.Deafened",DevComment="You can't hear. You automatically critically fail Perception checks that require you to be able to hear. You are immune to auditory effects.") -GameplayTagList=(Tag="Trait.Condition.Doomed",DevComment="A powerful force has gripped your soul, calling you closer to death. Doomed always includes a value. When you die, you're no longer doomed.") -GameplayTagList=(Tag="Trait.Condition.Doomed.1") -GameplayTagList=(Tag="Trait.Condition.Doomed.2") -GameplayTagList=(Tag="Trait.Condition.Doomed.3") -GameplayTagList=(Tag="Trait.Condition.Doomed.4") -GameplayTagList=(Tag="Trait.Condition.Drained",DevComment="When a creature successfully drains you of blood or life force, you become less healthy. Drained always includes a value.") -GameplayTagList=(Tag="Trait.Condition.Drained.1") -GameplayTagList=(Tag="Trait.Condition.Drained.2") -GameplayTagList=(Tag="Trait.Condition.Drained.3") -GameplayTagList=(Tag="Trait.Condition.Drained.4") -GameplayTagList=(Tag="Trait.Condition.Dying",DevComment="You are bleeding out or otherwise at death's door. While you have this condition, you are unconscious. Dying always includes a value, and if it ever reaches dying 4, you die.") -GameplayTagList=(Tag="Trait.Condition.Dying.1") -GameplayTagList=(Tag="Trait.Condition.Dying.2") -GameplayTagList=(Tag="Trait.Condition.Dying.3") -GameplayTagList=(Tag="Trait.Condition.Dying.4") -GameplayTagList=(Tag="Trait.Condition.Encumbered",DevComment="You are carrying more weight than you can manage.") -GameplayTagList=(Tag="Trait.Condition.Enfeebled",DevComment="You're physically weakened. Enfeebled always includes a value.") -GameplayTagList=(Tag="Trait.Condition.Enfeebled.1") -GameplayTagList=(Tag="Trait.Condition.Enfeebled.2") -GameplayTagList=(Tag="Trait.Condition.Enfeebled.3") -GameplayTagList=(Tag="Trait.Condition.Enfeebled.4") -GameplayTagList=(Tag="Trait.Condition.Fascinated",DevComment="You are compelled to focus your attention on something, distracting you from whatever else is going on around you.") -GameplayTagList=(Tag="Trait.Condition.Fatigued",DevComment="You're tired and can't summon much energy.") -GameplayTagList=(Tag="Trait.Condition.FlatFooted",DevComment="You're distracted or otherwise unable to focus your full attention on defense.") -GameplayTagList=(Tag="Trait.Condition.Fleeing",DevComment="You're forced to run away due to fear or some other compulsion.") -GameplayTagList=(Tag="Trait.Condition.Friendly",DevComment="This condition reflects a creature's disposition toward a particular character. A creature that is friendly to a character likes that character.") -GameplayTagList=(Tag="Trait.Condition.Frightened",DevComment="You're gripped by fear and struggle to control your nerves. The frightened condition always includes a value.") -GameplayTagList=(Tag="Trait.Condition.Frightened.1") -GameplayTagList=(Tag="Trait.Condition.Frightened.2") -GameplayTagList=(Tag="Trait.Condition.Frightened.3") -GameplayTagList=(Tag="Trait.Condition.Frightened.4") -GameplayTagList=(Tag="Trait.Condition.Grabbed",DevComment="You're held in place by another creature, giving you the flat-footed and immobilized conditions.") -GameplayTagList=(Tag="Trait.Condition.Helpful",DevComment="This condition reflects a creature's disposition toward a particular character. A creature that is helpful to a character wishes to actively aid that character.") -GameplayTagList=(Tag="Trait.Condition.Hidden",DevComment="While you're hidden from a creature, that creature knows the space you're in but can't tell precisely where you are.") -GameplayTagList=(Tag="Trait.Condition.Hostile",DevComment="This condition reflects a creature's disposition toward a particular character. A creature that is hostile to a character actively seeks to harm that character.") -GameplayTagList=(Tag="Trait.Condition.Immobilized",DevComment="You can't use any action with the move trait.") -GameplayTagList=(Tag="Trait.Condition.Indifferent",DevComment="This condition reflects a creature's disposition toward a particular character. A creature that is indifferent to a character doesn't really care one way or the other about that character.") -GameplayTagList=(Tag="Trait.Condition.Invisible",DevComment="While invisible, you can't be seen. You're undetected to everyone.") -GameplayTagList=(Tag="Trait.Condition.Observed",DevComment="Anything in plain view is observed by you.") -GameplayTagList=(Tag="Trait.Condition.Paralyzed",DevComment="You are frozen in place. You have the flat-footed condition and can't act except to Recall Knowledge and use actions that require only your mind. Your senses still function, but only in the areas you can perceive without moving.") -GameplayTagList=(Tag="Trait.Condition.Petrified",DevComment="You have been turned to stone. You can't act, nor can you sense anything. While petrified, your mind and body are in stasis, so you don't age or notice the passing of time.") -GameplayTagList=(Tag="Trait.Condition.Prone",DevComment="You're lying on the ground. You are flat-footed.") -GameplayTagList=(Tag="Trait.Condition.Quickened",DevComment="You gain 1 additional action at the start of your turn each round. Many effects that make you quickened specify the types of actions you can use with this additional action.") -GameplayTagList=(Tag="Trait.Condition.Restrained",DevComment="You're tied up and can barely move, or a creature has you pinned. You have the flat-footed and immobilized conditions, and you can't use any actions with the attack or manipulate traits except to attempt to Escape or Force. Open your bonds. Restrained overrides grabbed.") -GameplayTagList=(Tag="Trait.Condition.Sickened",DevComment="You feel ill. Sickened always includes a value. You can't willingly ingest anything—including elixirs and potions—while sickened.") -GameplayTagList=(Tag="Trait.Condition.Sickened.1"); -GameplayTagList=(Tag="Trait.Condition.Sickened.2"); -GameplayTagList=(Tag="Trait.Condition.Sickened.3"); -GameplayTagList=(Tag="Trait.Condition.Sickened.4"); -GameplayTagList=(Tag="Trait.Condition.Slowed",DevComment="You have fewer actions. Slowed always includes a value.") -GameplayTagList=(Tag="Trait.Condition.Slowed.1") -GameplayTagList=(Tag="Trait.Condition.Slowed.2") -GameplayTagList=(Tag="Trait.Condition.Slowed.3") -GameplayTagList=(Tag="Trait.Condition.Slowed.4") -GameplayTagList=(Tag="Trait.Condition.Stunned",DevComment="You've become senseless. You can't act while stunned. Stunned usually includes a value. Stunned overrides slowed.") -GameplayTagList=(Tag="Trait.Condition.Stunned.1") -GameplayTagList=(Tag="Trait.Condition.Stunned.2") -GameplayTagList=(Tag="Trait.Condition.Stunned.3") -GameplayTagList=(Tag="Trait.Condition.Stunned.4") -GameplayTagList=(Tag="Trait.Condition.Stupefied",DevComment="Your thoughts and instincts are clouded. Stupefied always includes a value.") -GameplayTagList=(Tag="Trait.Condition.Stupefied.1") -GameplayTagList=(Tag="Trait.Condition.Stupefied.2") -GameplayTagList=(Tag="Trait.Condition.Stupefied.3") -GameplayTagList=(Tag="Trait.Condition.Stupefied.4") -GameplayTagList=(Tag="Trait.Condition.Unconscious",DevComment="You're sleeping, or you've been knocked out. You can't act.") -GameplayTagList=(Tag="Trait.Condition.Undetected",DevComment="When you are undetected by a creature, that creature cannot see you at all, has no idea what space you occupy, and can't target you, though you still can be affected by abilities that target an area.") -GameplayTagList=(Tag="Trait.Condition.Unfriendly",DevComment="This condition reflects a creature's disposition toward a particular character. A creature that is unfriendly to a character dislikes and specifically distrusts that character.") -GameplayTagList=(Tag="Trait.Condition.Unnoticed",DevComment="If you are unnoticed by a creature, that creature has no idea you are present at all. When you’re unnoticed, you’re also undetected by the creature.") -GameplayTagList=(Tag="Trait.Condition.Wounded",DevComment="You have been seriously injured.") -GameplayTagList=(Tag="Trait.Condition.Wounded.1",DevComment="") -GameplayTagList=(Tag="Trait.Condition.Wounded.2",DevComment="") -GameplayTagList=(Tag="Trait.Condition.Wounded.3",DevComment="") -GameplayTagList=(Tag="Trait.Condition.Wounded.4",DevComment="") -; The following conditions do not appear in the Core Rulebook but were added by OpenPF2. -GameplayTagList=(Tag="Trait.Condition.Dead") - -; Effect Traits -; Source: Pathfinder 2E Core Rulebook, Conditions Appendix, pages 628-638. -GameplayTagList=(Tag="Trait.Effect.Death",DevComment="An effect with the death trait kills you immediately if it reduces you to 0 HP. Some death effects can bring you closer to death or slay you outright without reducing you to 0 HP.") -GameplayTagList=(Tag="Trait.Effect.Disease",DevComment="An effect with this trait applies one or more diseases. A disease is typically an affliction.") -GameplayTagList=(Tag="Trait.Effect.Linguistic",DevComment="An effect with this trait depends on language comprehension. A linguistic effect that targets a creature works only if the target understands the language you are using.") -GameplayTagList=(Tag="Trait.Effect.Nonlethal",DevComment="An effect with this trait is not inherently deadly. Damage from a nonlethal effect knocks a creature out rather than killing it.") -GameplayTagList=(Tag="Trait.Effect.Poison",DevComment="An effect with this trait delivers a poison or deals poison damage. An item with this trait is poisonous and might cause an affliction.") -GameplayTagList=(Tag="Trait.Effect.Sonic",DevComment="An effect with the sonic trait functions only if it makes sound, meaning it has no effect in an area of silence or in a vacuum. This is different from an auditory effect, which functions only if the target can hear it. A sonic effect might deal sonic damage.") - -; Creature Traits -; Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. -GameplayTagList=(Tag="Trait.Creature.Elf",DevComment="A creature with this trait is a member of the elf ancestry. Elves are mysterious people with rich traditions of magic and scholarship who typically have low-light vision. An ability with this trait can be used or selected only by elves. A weapon with this trait is created and used by elves.") -GameplayTagList=(Tag="Trait.Creature.HalfElf",DevComment="A creature with this trait is part human and part elf. An ability with this trait can be used or selected only by half-elves.") -GameplayTagList=(Tag="Trait.Creature.HalfOrc",DevComment="A creature with this trait is part human and part orc. An ability with this trait can be used or selected only by half-orcs.") -GameplayTagList=(Tag="Trait.Creature.Human",DevComment="A creature with this trait is a member of the human ancestry. Humans are a diverse array of people known for their adaptability. An ability with this trait can be used or selected only by humans.") -GameplayTagList=(Tag="Trait.Creature.Humanoid",DevComment="Humanoid creatures reason and act much like humans. They typically stand upright and have two arms and two legs.") -GameplayTagList=(Tag="Trait.Creature.Orc",DevComment="A creature with this trait is a member of the orc ancestry. These green-skinned people tend to have darkvision. An ability with this trait can be used or selected only by orcs. An item with this trait is created and used by orcs.") - -; Weapon Traits -; Source: Pathfinder 2E Core Rulebook, "Weapon Traits", pages 282-283. -GameplayTagList=(Tag="Trait.Weapon.Agile",DevComment="A weapon with this trait has a different multiple attack penalty. The second attack on a character's turn is –4 instead of –5, and –8 instead of –10 on the third and subsequent attacks in the turn.") -GameplayTagList=(Tag="Trait.Weapon.Attached.ToShield",DevComment="A weapon with this trait must be combined with a shield to be used.") -GameplayTagList=(Tag="Trait.Weapon.Backstabber",DevComment="A weapon with this trait behaves differently when hitting a flat-footed creature. This weapon deals 1 precision damage in addition to its normal damage. The precision damage increases to 2 if the weapon is a +3 weapon.") -GameplayTagList=(Tag="Trait.Weapon.Backswing",DevComment="A weapon with this trait allows a character to use the momentum from a missed attack to lead into their next attack. After missing with this weapon on their turn, a character gains a +1 circumstance bonus to their next attack with this weapon before the end of their turn.") -GameplayTagList=(Tag="Trait.Weapon.Deadly.D6",DevComment="A weapon with this trait gets a D6 damage die added to critical hits. The die is rolled after doubling the weapon's damage. This increases to two dice if the weapon has a greater striking rune and three dice if the weapon has a major striking rune.") -GameplayTagList=(Tag="Trait.Weapon.Deadly.D8",DevComment="A weapon with this trait gets a D8 damage die added to critical hits. The die is rolled after doubling the weapon's damage. This increases to two dice if the weapon has a greater striking rune and three dice if the weapon has a major striking rune.") -GameplayTagList=(Tag="Trait.Weapon.Deadly.D10",DevComment="A weapon with this trait gets a D10 damage die added to critical hits. The die is rolled after doubling the weapon's damage. This increases to two dice if the weapon has a greater striking rune and three dice if the weapon has a major striking rune.") -GameplayTagList=(Tag="Trait.Weapon.Disarm",DevComment="A weapon with this trait allows a character to Disarm with the Athletics skill even if the character doesn't have a free hand. This uses the weapon's reach (if different from the character's own) and adds the weapon's item bonus to attack rolls (if any) as an item bonus to the Athletics check. If a character critically fails a check to Disarm using the weapon, they can drop the weapon to take the effects of a failure instead of a critical failure. On a critical success, they still need a free hand if they want to take the item.") -GameplayTagList=(Tag="Trait.Weapon.Dwarf",DevComment="A weapon with this trait is crafted and used by Dwarves.") -GameplayTagList=(Tag="Trait.Weapon.Elf",DevComment="A weapon with this trait is crafted and used by Elves.") -GameplayTagList=(Tag="Trait.Weapon.Fatal.D8",DevComment="A weapon with this trait has a D8 damage die on a critical hit instead of the normal die size, along with one additional D8 damage die.") -GameplayTagList=(Tag="Trait.Weapon.Fatal.D10",DevComment="A weapon with this trait has a D10 damage die on a critical hit instead of the normal die size, along with one additional D10 damage die.") -GameplayTagList=(Tag="Trait.Weapon.Fatal.D12",DevComment="A weapon with this trait has a D12 damage die on a critical hit instead of the normal die size, along with one additional D12 damage die.") -GameplayTagList=(Tag="Trait.Weapon.Finesse",DevComment="A melee weapon with this trait allows a character to use their Dexterity modifier instead of their Strength modifier on attack rolls. The character still uses their Strength modifier when calculating damage.") -GameplayTagList=(Tag="Trait.Weapon.Forceful",DevComment="A weapon with this trait becomes more dangerous as a character builds momentum. When they attack with it more than once on their turn, the second attack gains a circumstance bonus to damage equal to the number of weapon damage dice, and each subsequent attack gains a circumstance bonus to damage equal to double the number of weapon damage dice.") -GameplayTagList=(Tag="Trait.Weapon.FreeHand",DevComment="A weapon with this trait doesn't take up a character's hand, usually because it is built into the character's armor. A free-hand weapon can't be Disarmed. The character can use the hand covered by the free-hand weapon to wield other items, perform manipulate actions, and so on. They can't attack with a free-hand weapon if they're wielding anything in that hand or otherwise using that hand. When they're not wielding anything and not otherwise using the hand, they can use abilities that require them to have a hand free as well as those that require them to be wielding a weapon in that hand. Each of their hands can have only one free-hand weapon on it.") -GameplayTagList=(Tag="Trait.Weapon.Gnome",DevComment="A weapon with this trait is crafted and used by Gnomes.") -GameplayTagList=(Tag="Trait.Weapon.Goblin",DevComment="A weapon with this trait is crafted and used by Goblins.") -GameplayTagList=(Tag="Trait.Weapon.Halfling",DevComment="A weapon with this trait is crafted and used by Halflings.") -GameplayTagList=(Tag="Trait.Weapon.Jousting.D6",DevComment="A weapon with this trait is suited for mounted combat with a harness or similar means. When mounted, if the character moved at least 3 meters on the action before their attack, add a circumstance bonus to damage for that attack equal to the number of damage dice for the weapon. In addition, while mounted, they can wield the weapon in one hand, changing the damage die to a D6.") -GameplayTagList=(Tag="Trait.Weapon.Monk",DevComment="A weapon with this trait monks often learn to use.") -GameplayTagList=(Tag="Trait.Weapon.Nonlethal",DevComment="A weapon with this trait often has a nonlethal attack, and is used to knock creatures unconscious instead of kill them. A character can use a nonlethal weapon to make a lethal attack with a –2 circumstance penalty.") -GameplayTagList=(Tag="Trait.Weapon.Orc",DevComment="A weapon with this trait is crafted and used by Orcs.") -GameplayTagList=(Tag="Trait.Weapon.Parry",DevComment="A weapon with this trait can be used defensively to block attacks. While wielding this weapon, if a character's proficiency with it is trained or better, they can spend a single action to position their weapon defensively, gaining a +1 circumstance bonus to AC until the start of their next turn.") -GameplayTagList=(Tag="Trait.Weapon.Propulsive",DevComment="A ranged weapon with this trait enables a character to add half their Strength modifier (if positive) to damage rolls. If the character has a negative Strength modifier, they add their full Strength modifier instead.") -GameplayTagList=(Tag="Trait.Weapon.Reach",DevComment="A weapon with this trait is long and can be used to attack creatures up to 3 meters away instead of only adjacent creatures. For creatures that already have reach with the limb or limbs that wield the weapon, the weapon increases their reach by 1.5 meters.") -GameplayTagList=(Tag="Trait.Weapon.Shove",DevComment="A weapon with this trait can be used by a character to Shove with the Athletics skill even if they don't have a free hand. This uses the weapon's reach (if different from their own) and adds the weapon's item bonus to attack rolls as an item bonus to the Athletics check. If they critically fail a check to Shove using the weapon, they can drop the weapon to take the effects of a failure instead of a critical failure.") -GameplayTagList=(Tag="Trait.Weapon.Sweep",DevComment="A weapon with this trait makes wide sweeping or spinning attacks, making it easier to attack multiple enemies. When a character attacks with this weapon, they gain a +1 circumstance bonus to their attack roll if they already attempted to attack a different target this turn using this weapon.") -GameplayTagList=(Tag="Trait.Weapon.Thrown.3m",DevComment="A weapon with this trait can be thrown as a ranged attack; it is a ranged weapon when thrown. The character adds their Strength modifier to damage as they would for a melee weapon. When this trait appears on a melee weapon, it uses a range increment of 3 meters. Ranged weapons with this trait use the range increment in the weapon's Range entry.") -GameplayTagList=(Tag="Trait.Weapon.Thrown.6m",DevComment="A weapon with this trait can be thrown as a ranged attack; it is a ranged weapon when thrown. The character adds their Strength modifier to damage as they would for a melee weapon. When this trait appears on a melee weapon, it uses a range increment of 6 meters. Ranged weapons with this trait use the range increment in the weapon's Range entry.") -GameplayTagList=(Tag="Trait.Weapon.Trip",DevComment="A wrapon with this trait can be used to Trip with the Athletics skill even if the character doesn't have a free hand. This uses the weapon's reach (if different from their own) and adds the weapon's item bonus to attack rolls as an item bonus to the Athletics check. If they critically fail a check to Trip using the weapon, they can drop the weapon to take the effects of a failure instead of a critical failure.") -GameplayTagList=(Tag="Trait.Weapon.Twin",DevComment="Two weapons with this trait are used as a pair, complementing each other. When a character attacks with a twin weapon, they add a circumstance bonus to the damage roll equal to the weapon's number of damage dice if they have previously attacked with a different weapon of the same type this turn. The weapons must be of the same type to benefit from this trait, but they don't need to have the same runes.") -GameplayTagList=(Tag="Trait.Weapon.Two-hand.D8",DevComment="A weapon with this trait can be wielded with two hands. Doing so changes its weapon damage die to a D8. This change applies to all the weapon's damage dice, such as those from striking runes.") -GameplayTagList=(Tag="Trait.Weapon.Two-hand.D10",DevComment="A weapon with this trait can be wielded with two hands. Doing so changes its weapon damage die to a D10. This change applies to all the weapon's damage dice, such as those from striking runes.") -GameplayTagList=(Tag="Trait.Weapon.Two-hand.D12",DevComment="A weapon with this trait can be wielded with two hands. Doing so changes its weapon damage die to a D12. This change applies to all the weapon's damage dice, such as those from striking runes.") -GameplayTagList=(Tag="Trait.Weapon.Unarmed",DevComment="An unarmed attack uses a character's body rather than a manufactured weapon. An unarmed attack isn't a weapon, though it's categorized with weapons for weapon groups, and it might have weapon traits. Since it's part of a character's body, an unarmed attack can't be Disarmed. It also doesn't take up a hand, though a fist or other grasping appendage generally works like a free-hand weapon.") -GameplayTagList=(Tag="Trait.Weapon.Versatile.Bludgeoning",DevComment="A weapon with this trait can be used to deal Bludgeoning (B) damage instead of the type of damage listed in the Damage entry. The character chooses the damage type each time they make an attack.") -GameplayTagList=(Tag="Trait.Weapon.Versatile.Piercing",DevComment="A weapon with this trait can be used to deal Piercing (P) damage instead of the type of damage listed in the Damage entry. The character chooses the damage type each time they make an attack.") -GameplayTagList=(Tag="Trait.Weapon.Versatile.Slashing",DevComment="A weapon with this trait can be used to deal Slashing (S) damage instead of the type of damage listed in the Damage entry. The character chooses the damage type each time they make an attack.") -GameplayTagList=(Tag="Trait.Weapon.Volley.9m",DevComment="A ranged weapon with this trait is less effective at close distances. A character's attacks against targets that are at a distance of 9 meters take a –2 penalty.") diff --git a/Config/Tags/PF2WeaponGroups.ini b/Config/Tags/PF2WeaponGroups.ini deleted file mode 100644 index a131c5a73..000000000 --- a/Config/Tags/PF2WeaponGroups.ini +++ /dev/null @@ -1,30 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: -; - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. -; - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. -; - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. -; -; Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, -; as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this -; file other than the material designated as Open Game Content may be reproduced in any form without written -; permission. - -[/Script/GameplayTags.GameplayTagsList] -; Weapon Groups -; From the Pathfinder 2E Core Rulebook, pages 280-282; Tables 6-6, 6-7, and 6-8. -GameplayTagList=(Tag="WeaponGroup.Axe") -GameplayTagList=(Tag="WeaponGroup.Bomb") -GameplayTagList=(Tag="WeaponGroup.Bow") -GameplayTagList=(Tag="WeaponGroup.Brawling") -GameplayTagList=(Tag="WeaponGroup.Club") -GameplayTagList=(Tag="WeaponGroup.Dart") -GameplayTagList=(Tag="WeaponGroup.Flail") -GameplayTagList=(Tag="WeaponGroup.Hammer") -GameplayTagList=(Tag="WeaponGroup.Knife") -GameplayTagList=(Tag="WeaponGroup.Pick") -GameplayTagList=(Tag="WeaponGroup.Polearm") -GameplayTagList=(Tag="WeaponGroup.Shield") -GameplayTagList=(Tag="WeaponGroup.Sling") -GameplayTagList=(Tag="WeaponGroup.Spear") -GameplayTagList=(Tag="WeaponGroup.Sword") diff --git a/Config/Tags/PF2WeaponProficiencies.ini b/Config/Tags/PF2WeaponProficiencies.ini deleted file mode 100644 index c05918876..000000000 --- a/Config/Tags/PF2WeaponProficiencies.ini +++ /dev/null @@ -1,390 +0,0 @@ -; OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. -; -; Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: -; - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. -; - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. -; - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. -; -; Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, -; as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this -; file other than the material designated as Open Game Content may be reproduced in any form without written -; permission. - -[/Script/GameplayTags.GameplayTagsList] -; Proficiency Ranks for Unarmed Attacks -; Weapon type mentioned in Pathfinder 2E Core Rulebook under: -; - Chapter 3, page 71, "Attacks" for "Alchemist" -; - Chapter 3, page 83, "Attacks" for "Barbarian" -; - Chapter 3, page 95, "Attacks" for "Bard" -; - Chapter 3, page 105, "Attacks" for "Champion" -; - Chapter 3, page 117, "Attacks" for "Cleric" -; - Chapter 3, page 129, "Attacks" for "Druid" -; - Chapter 3, page 141, "Attacks" for "Fighter" -; - Chapter 3, page 155, "Attacks" for "Monk" -; - Chapter 3, page 167, "Attacks" for "Ranger" -; - Chapter 3, page 179, "Attacks" for "Rogue" -; - Chapter 3, page 191, "Attacks" for "Sorcerer" -; - Chapter 3, page 203, "Attacks" for "Wizard" -GameplayTagList=(Tag="WeaponProficiency.Category.Unarmed.Untrained",DevComment="Untrained with Unarmed attacks") -GameplayTagList=(Tag="WeaponProficiency.Category.Unarmed.Trained",DevComment="Trained with Unarmed attacks") -GameplayTagList=(Tag="WeaponProficiency.Category.Unarmed.Expert",DevComment="Expert with Unarmed attacks") -GameplayTagList=(Tag="WeaponProficiency.Category.Unarmed.Master",DevComment="Master with Unarmed attacks") -GameplayTagList=(Tag="WeaponProficiency.Category.Unarmed.Legendary",DevComment="Legendary with Unarmed attacks") - -; Proficiency Ranks for Simple Weapons -; Weapon type mentioned in Pathfinder 2E Core Rulebook under: -; - Chapter 3, page 71, "Attacks" for "Alchemist" -; - Chapter 3, page 83, "Attacks" for "Barbarian" -; - Chapter 3, page 95, "Attacks" for "Bard" -; - Chapter 3, page 105, "Attacks" for "Champion" -; - Chapter 3, page 117, "Attacks" for "Cleric" -; - Chapter 3, page 129, "Attacks" for "Druid" -; - Chapter 3, page 141, "Attacks" for "Fighter" -; - Chapter 3, page 155, "Attacks" for "Monk" -; - Chapter 3, page 167, "Attacks" for "Ranger" -; - Chapter 3, page 179, "Attacks" for "Rogue" -; - Chapter 3, page 191, "Attacks" for "Sorcerer" -GameplayTagList=(Tag="WeaponProficiency.Category.Simple.Untrained",DevComment="Untrained with Simple weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.Simple.Trained",DevComment="Trained with Simple weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.Simple.Expert",DevComment="Expert with Simple weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.Simple.Master",DevComment="Master with Simple weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.Simple.Legendary",DevComment="Legendary with Simple weapons") - -; Proficiency Ranks for Advanced Weapons -; Weapon type mentioned in Pathfinder 2E Core Rulebook under: -; - Chapter 3, page 141, "Attacks" for "Fighter" -GameplayTagList=(Tag="WeaponProficiency.Category.Advanced.Untrained",DevComment="Untrained with Advanced weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.Advanced.Trained",DevComment="Trained with Advanced weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.Advanced.Expert",DevComment="Expert with Advanced weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.Advanced.Master",DevComment="Master with Advanced weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.Advanced.Legendary",DevComment="Legendary with Advanced weapons") - -; Proficiency Ranks for Advanced Dwarf Weapons -; From the Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity": -; "For the purpose of determining your proficiency, [...] advanced dwarf weapons are martial weapons." -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedDwarf.Untrained",DevComment="Untrained with Advanced Dwarf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedDwarf.Trained",DevComment="Trained with Advanced Dwarf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedDwarf.Expert",DevComment="Expert with Advanced Dwarf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedDwarf.Master",DevComment="Master with Advanced Dwarf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedDwarf.Legendary",DevComment="Legendary with Advanced Dwarf weapons") - -; Proficiency Ranks for Advanced Elf Weapons -; From the Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity": -; "For the purpose of determining your proficiency, [...] advanced elf weapons are martial weapons." -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedElf.Untrained",DevComment="Untrained with Advanced Elf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedElf.Trained",DevComment="Trained with Advanced Elf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedElf.Expert",DevComment="Expert with Advanced Elf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedElf.Master",DevComment="Master with Advanced Elf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedElf.Legendary",DevComment="Legendary with Advanced Elf weapons") - -; Proficiency Ranks for Advanced Gnome Weapons -; From the Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity": -; "For the purpose of determining your proficiency, [...] advanced gnome weapons are martial weapons." -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedGnome.Untrained",DevComment="Untrained with Advanced Gnome weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedGnome.Trained",DevComment="Trained with Advanced Gnome weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedGnome.Expert",DevComment="Expert with Advanced Gnome weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedGnome.Master",DevComment="Master with Advanced Gnome weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedGnome.Legendary",DevComment="Legendary with Advanced Gnome weapons") - -; Proficiency Ranks for Advanced Goblin Weapons -; From the Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity": -; "For the purpose of determining your proficiency, [...] advanced goblin weapons are martial weapons." -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedGoblin.Untrained",DevComment="Untrained with Advanced Goblin weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedGoblin.Trained",DevComment="Trained with Advanced Goblin weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedGoblin.Expert",DevComment="Expert with Advanced Goblin weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedGoblin.Master",DevComment="Master with Advanced Goblin weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedGoblin.Legendary",DevComment="Legendary with Advanced Goblin weapons") - -; Proficiency Ranks for Advanced Halfling Weapons -; From the Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity": -; "For the purpose of determining your proficiency, [...] advanced halfling weapons are martial weapons." -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedHalfling.Untrained",DevComment="Untrained with Advanced Halfling weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedHalfling.Trained",DevComment="Trained with Advanced Halfling weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedHalfling.Expert",DevComment="Expert with Advanced Halfling weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedHalfling.Master",DevComment="Master with Advanced Halfling weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.AdvancedHalfling.Legendary",DevComment="Legendary with Advanced Halfling weapons") - -; Proficiency Ranks for Martial Weapons -; Weapon type mentioned in Pathfinder 2E Core Rulebook under: -; - Chapter 3, page 83, "Attacks" for "Barbarian" -; - Chapter 3, page 105, "Attacks" for "Champion" -; - Chapter 3, page 141, "Attacks" for "Fighter" -; - Chapter 3, page 167, "Attacks" for "Ranger" -GameplayTagList=(Tag="WeaponProficiency.Category.Martial.Untrained",DevComment="Untrained with Martial weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.Martial.Trained",DevComment="Trained with Martial weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.Martial.Expert",DevComment="Expert with Martial weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.Martial.Master",DevComment="Master with Martial weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.Martial.Legendary",DevComment="Legendary with Martial weapons") - -; Proficiency Ranks for Martial Dwarf Weapons -; From the Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity": -; "For the purpose of determining your proficiency, martial dwarf weapons are simple weapons..." -GameplayTagList=(Tag="WeaponProficiency.Category.MartialDwarf.Untrained",DevComment="Untrained with Martial Dwarf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialDwarf.Trained",DevComment="Trained with Martial Dwarf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialDwarf.Expert",DevComment="Expert with Martial Dwarf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialDwarf.Master",DevComment="Master with Martial Dwarf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialDwarf.Legendary",DevComment="Legendary with Martial Dwarf weapons") - -; Proficiency Ranks for Martial Elf Weapons -; From the Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity": -; "For the purpose of determining your proficiency, martial elf weapons are simple weapons..." -GameplayTagList=(Tag="WeaponProficiency.Category.MartialElf.Untrained",DevComment="Untrained with Martial Elf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialElf.Trained",DevComment="Trained with Martial Elf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialElf.Expert",DevComment="Expert with Martial Elf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialElf.Master",DevComment="Master with Martial Elf weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialElf.Legendary",DevComment="Legendary with Martial Elf weapons") - -; Proficiency Ranks for Martial Gnome Weapons -; From the Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity": -; "For the purpose of determining your proficiency, martial gnome weapons are simple weapons..." -GameplayTagList=(Tag="WeaponProficiency.Category.MartialGnome.Untrained",DevComment="Untrained with Martial Gnome weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialGnome.Trained",DevComment="Trained with Martial Gnome weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialGnome.Expert",DevComment="Expert with Martial Gnome weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialGnome.Master",DevComment="Master with Martial Gnome weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialGnome.Legendary",DevComment="Legendary with Martial Gnome weapons") - -; Proficiency Ranks for Martial Goblin Weapons -; From the Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity": -; "For the purpose of determining your proficiency, martial goblin weapons are simple weapons..." -GameplayTagList=(Tag="WeaponProficiency.Category.MartialGoblin.Untrained",DevComment="Untrained with Martial Goblin weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialGoblin.Trained",DevComment="Trained with Martial Goblin weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialGoblin.Expert",DevComment="Expert with Martial Goblin weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialGoblin.Master",DevComment="Master with Martial Goblin weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialGoblin.Legendary",DevComment="Legendary with Martial Goblin weapons") - -; Proficiency Ranks for Martial Halfling Weapons -; From the Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity": -; "For the purpose of determining your proficiency, martial halfling weapons are simple weapons..." -GameplayTagList=(Tag="WeaponProficiency.Category.MartialHalfling.Untrained",DevComment="Untrained with Martial Halfling weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialHalfling.Trained",DevComment="Trained with Martial Halfling weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialHalfling.Expert",DevComment="Expert with Martial Halfling weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialHalfling.Master",DevComment="Master with Martial Halfling weapons") -GameplayTagList=(Tag="WeaponProficiency.Category.MartialHalfling.Legendary",DevComment="Legendary with Martial Halfling weapons") - -; Proficiency Ranks for Alchemical Bombs -; Weapon type mentioned in Pathfinder 2E Core Rulebook under: -; - Chapter 3, page 71, "Attacks" for "Alchemist" -GameplayTagList=(Tag="WeaponProficiency.AlchemicalBomb.Untrained",DevComment="Untrained with Alchemical Bombs") -GameplayTagList=(Tag="WeaponProficiency.AlchemicalBomb.Trained",DevComment="Trained with Alchemical Bombs") -GameplayTagList=(Tag="WeaponProficiency.AlchemicalBomb.Expert",DevComment="Expert with Alchemical Bombs") -GameplayTagList=(Tag="WeaponProficiency.AlchemicalBomb.Master",DevComment="Master with Alchemical Bombs") -GameplayTagList=(Tag="WeaponProficiency.AlchemicalBomb.Legendary",DevComment="Legendary with Alchemical Bombs") - -; Proficiency Ranks for Battle Axes -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.BattleAxe.Untrained",DevComment="Untrained with Battle Axes") -GameplayTagList=(Tag="WeaponProficiency.BattleAxe.Trained",DevComment="Trained with Battle Axes") -GameplayTagList=(Tag="WeaponProficiency.BattleAxe.Expert",DevComment="Expert with Battle Axes") -GameplayTagList=(Tag="WeaponProficiency.BattleAxe.Master",DevComment="Master with Battle Axes") -GameplayTagList=(Tag="WeaponProficiency.BattleAxe.Legendary",DevComment="Legendary with Battle Axes") - -; Proficiency Ranks for Clubs -; Weapon mentioned in Pathfinder 2E Core Rulebook, under: -; - Chapter 3, page 203, "Attacks" for "Wizard" -GameplayTagList=(Tag="WeaponProficiency.Club.Untrained",DevComment="Untrained with Clubs") -GameplayTagList=(Tag="WeaponProficiency.Club.Trained",DevComment="Trained with Clubs") -GameplayTagList=(Tag="WeaponProficiency.Club.Expert",DevComment="Expert with Clubs") -GameplayTagList=(Tag="WeaponProficiency.Club.Master",DevComment="Master with Clubs") -GameplayTagList=(Tag="WeaponProficiency.Club.Legendary",DevComment="Legendary with Clubs") - -; Proficiency Ranks for Composite Longbows -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.CompositeLongbow.Untrained",DevComment="Untrained with Composite Longbows") -GameplayTagList=(Tag="WeaponProficiency.CompositeLongbow.Trained",DevComment="Trained with Composite Longbows") -GameplayTagList=(Tag="WeaponProficiency.CompositeLongbow.Expert",DevComment="Expert with Composite Longbows") -GameplayTagList=(Tag="WeaponProficiency.CompositeLongbow.Master",DevComment="Master with Composite Longbows") -GameplayTagList=(Tag="WeaponProficiency.CompositeLongbow.Legendary",DevComment="Legendary with Composite Longbows") - -; Proficiency Ranks for Composite Shortbows -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.CompositeShortbow.Untrained",DevComment="Untrained with Composite Shortbows") -GameplayTagList=(Tag="WeaponProficiency.CompositeShortbow.Trained",DevComment="Trained with Composite Shortbows") -GameplayTagList=(Tag="WeaponProficiency.CompositeShortbow.Expert",DevComment="Expert with Composite Shortbows") -GameplayTagList=(Tag="WeaponProficiency.CompositeShortbow.Master",DevComment="Master with Composite Shortbows") -GameplayTagList=(Tag="WeaponProficiency.CompositeShortbow.Legendary",DevComment="Legendary with Composite Shortbows") - -; Proficiency Ranks for Crossbows -; Weapon mentioned in Pathfinder 2E Core Rulebook, under: -; - Chapter 3, page 203, "Attacks" for "Wizard" -GameplayTagList=(Tag="WeaponProficiency.Crossbow.Untrained",DevComment="Untrained with Crossbows") -GameplayTagList=(Tag="WeaponProficiency.Crossbow.Trained",DevComment="Trained with Crossbows") -GameplayTagList=(Tag="WeaponProficiency.Crossbow.Expert",DevComment="Expert with Crossbows") -GameplayTagList=(Tag="WeaponProficiency.Crossbow.Master",DevComment="Master with Crossbows") -GameplayTagList=(Tag="WeaponProficiency.Crossbow.Legendary",DevComment="Legendary with Crossbows") - -; Proficiency Ranks for Daggers -; Weapon mentioned in Pathfinder 2E Core Rulebook, under: -; - Chapter 3, page 203, "Attacks" for "Wizard" -GameplayTagList=(Tag="WeaponProficiency.Dagger.Untrained",DevComment="Untrained with Daggers") -GameplayTagList=(Tag="WeaponProficiency.Dagger.Trained",DevComment="Trained with Daggers") -GameplayTagList=(Tag="WeaponProficiency.Dagger.Expert",DevComment="Expert with Daggers") -GameplayTagList=(Tag="WeaponProficiency.Dagger.Master",DevComment="Master with Daggers") -GameplayTagList=(Tag="WeaponProficiency.Dagger.Legendary",DevComment="Legendary with Daggers") - -; Proficiency Ranks for Dogslicers -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.Dogslicer.Untrained",DevComment="Untrained with Dogslicers") -GameplayTagList=(Tag="WeaponProficiency.Dogslicer.Trained",DevComment="Trained with Dogslicers") -GameplayTagList=(Tag="WeaponProficiency.Dogslicer.Expert",DevComment="Expert with Dogslicers") -GameplayTagList=(Tag="WeaponProficiency.Dogslicer.Master",DevComment="Master with Dogslicers") -GameplayTagList=(Tag="WeaponProficiency.Dogslicer.Legendary",DevComment="Legendary with Dogslicers") - -; Proficiency Ranks for Falchions -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 58, "Orc Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.Falchion.Untrained",DevComment="Untrained with Falchions") -GameplayTagList=(Tag="WeaponProficiency.Falchion.Trained",DevComment="Trained with Falchions") -GameplayTagList=(Tag="WeaponProficiency.Falchion.Expert",DevComment="Expert with Falchions") -GameplayTagList=(Tag="WeaponProficiency.Falchion.Master",DevComment="Master with Falchions") -GameplayTagList=(Tag="WeaponProficiency.Falchion.Legendary",DevComment="Legendary with Falchions") - -; Proficiency Ranks for Glaives -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.Glaive.Untrained",DevComment="Untrained with Glaives") -GameplayTagList=(Tag="WeaponProficiency.Glaive.Trained",DevComment="Trained with Glaives") -GameplayTagList=(Tag="WeaponProficiency.Glaive.Expert",DevComment="Expert with Glaives") -GameplayTagList=(Tag="WeaponProficiency.Glaive.Master",DevComment="Master with Glaives") -GameplayTagList=(Tag="WeaponProficiency.Glaive.Legendary",DevComment="Legendary with Glaives") - -; Proficiency Ranks for Greataxes -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 58, "Orc Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.Greataxe.Untrained",DevComment="Untrained with Greataxes") -GameplayTagList=(Tag="WeaponProficiency.Greataxe.Trained",DevComment="Trained with Greataxes") -GameplayTagList=(Tag="WeaponProficiency.Greataxe.Expert",DevComment="Expert with Greataxes") -GameplayTagList=(Tag="WeaponProficiency.Greataxe.Master",DevComment="Master with Greataxes") -GameplayTagList=(Tag="WeaponProficiency.Greataxe.Legendary",DevComment="Legendary with Greataxes") - -; Proficiency Ranks for Halfling Sling Staves -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.HalflingSlingStaff.Untrained",DevComment="Untrained with Halfling Sling Staves") -GameplayTagList=(Tag="WeaponProficiency.HalflingSlingStaff.Trained",DevComment="Trained with Halfling Sling Staves") -GameplayTagList=(Tag="WeaponProficiency.HalflingSlingStaff.Expert",DevComment="Expert with Halfling Sling Staves") -GameplayTagList=(Tag="WeaponProficiency.HalflingSlingStaff.Master",DevComment="Master with Halfling Sling Staves") -GameplayTagList=(Tag="WeaponProficiency.HalflingSlingStaff.Legendary",DevComment="Legendary with Halfling Sling Staves") - -; Proficiency Ranks for Heavy Crossbows -; Weapon mentioned in Pathfinder 2E Core Rulebook, under: -; - Chapter 3, page 203, "Attacks" for "Wizard" -GameplayTagList=(Tag="WeaponProficiency.HeavyCrossbow.Untrained",DevComment="Untrained with Heavy Crossbows") -GameplayTagList=(Tag="WeaponProficiency.HeavyCrossbow.Trained",DevComment="Trained with Heavy Crossbows") -GameplayTagList=(Tag="WeaponProficiency.HeavyCrossbow.Expert",DevComment="Expert with Heavy Crossbows") -GameplayTagList=(Tag="WeaponProficiency.HeavyCrossbow.Master",DevComment="Master with Heavy Crossbows") -GameplayTagList=(Tag="WeaponProficiency.HeavyCrossbow.Legendary",DevComment="Legendary with Heavy Crossbows") - -; Proficiency Ranks for Horsechoppers -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.Horsechopper.Untrained",DevComment="Untrained with Horsechoppers") -GameplayTagList=(Tag="WeaponProficiency.Horsechopper.Trained",DevComment="Trained with Horsechoppers") -GameplayTagList=(Tag="WeaponProficiency.Horsechopper.Expert",DevComment="Expert with Horsechoppers") -GameplayTagList=(Tag="WeaponProficiency.Horsechopper.Master",DevComment="Master with Horsechoppers") -GameplayTagList=(Tag="WeaponProficiency.Horsechopper.Legendary",DevComment="Legendary with Horsechoppers") - -; Proficiency Ranks for Kukris -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.Kukri.Untrained",DevComment="Untrained with Kukris") -GameplayTagList=(Tag="WeaponProficiency.Kukri.Trained",DevComment="Trained with Kukris") -GameplayTagList=(Tag="WeaponProficiency.Kukri.Expert",DevComment="Expert with Kukris") -GameplayTagList=(Tag="WeaponProficiency.Kukri.Master",DevComment="Master with Kukris") -GameplayTagList=(Tag="WeaponProficiency.Kukri.Legendary",DevComment="Legendary with Kukris") - -; Proficiency Ranks for Longbows -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.Longbow.Untrained",DevComment="Untrained with Longbows") -GameplayTagList=(Tag="WeaponProficiency.Longbow.Trained",DevComment="Trained with Longbows") -GameplayTagList=(Tag="WeaponProficiency.Longbow.Expert",DevComment="Expert with Longbows") -GameplayTagList=(Tag="WeaponProficiency.Longbow.Master",DevComment="Master with Longbows") -GameplayTagList=(Tag="WeaponProficiency.Longbow.Legendary",DevComment="Legendary with Longbows") - -; Proficiency Ranks for Longswords -; Weapon mentioned in Pathfinder 2E Core Rulebook, under: -; - Chapter 2, page 40, "Elven Weapon Familiarity" -; - Chapter 3, page 95, "Attacks" for "Bard" -GameplayTagList=(Tag="WeaponProficiency.Longsword.Untrained",DevComment="Untrained with Longswords") -GameplayTagList=(Tag="WeaponProficiency.Longsword.Trained",DevComment="Trained with Longswords") -GameplayTagList=(Tag="WeaponProficiency.Longsword.Expert",DevComment="Expert with Longswords") -GameplayTagList=(Tag="WeaponProficiency.Longsword.Master",DevComment="Master with Longswords") -GameplayTagList=(Tag="WeaponProficiency.Longsword.Legendary",DevComment="Legendary with Longswords") - -; Proficiency Ranks for Picks -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.Pick.Untrained",DevComment="Untrained with Picks") -GameplayTagList=(Tag="WeaponProficiency.Pick.Trained",DevComment="Trained with Picks") -GameplayTagList=(Tag="WeaponProficiency.Pick.Expert",DevComment="Expert with Picks") -GameplayTagList=(Tag="WeaponProficiency.Pick.Master",DevComment="Master with Picks") -GameplayTagList=(Tag="WeaponProficiency.Pick.Legendary",DevComment="Legendary with Picks") - -; Proficiency Ranks for Rapiers -; Weapon mentioned in Pathfinder 2E Core Rulebook, under: -; - Chapter 2, page 40, "Elven Weapon Familiarity" -; - Chapter 3, page 95, "Attacks" for "Bard" -; - Chapter 3, page 179, "Attacks" for "Rogue" -GameplayTagList=(Tag="WeaponProficiency.Rapier.Untrained",DevComment="Untrained with Rapiers") -GameplayTagList=(Tag="WeaponProficiency.Rapier.Trained",DevComment="Trained with Rapiers") -GameplayTagList=(Tag="WeaponProficiency.Rapier.Expert",DevComment="Expert with Rapiers") -GameplayTagList=(Tag="WeaponProficiency.Rapier.Master",DevComment="Master with Rapiers") -GameplayTagList=(Tag="WeaponProficiency.Rapier.Legendary",DevComment="Legendary with Rapiers") - -; Proficiency Ranks for Saps -; Weapon mentioned in Pathfinder 2E Core Rulebook, under: -; - Chapter 3, page 95, "Attacks" for "Bard" -; - Chapter 3, page 179, "Attacks" for "Rogue" -GameplayTagList=(Tag="WeaponProficiency.Sap.Untrained",DevComment="Untrained with Saps") -GameplayTagList=(Tag="WeaponProficiency.Sap.Trained",DevComment="Trained with Saps") -GameplayTagList=(Tag="WeaponProficiency.Sap.Expert",DevComment="Expert with Saps") -GameplayTagList=(Tag="WeaponProficiency.Sap.Master",DevComment="Master with Saps") -GameplayTagList=(Tag="WeaponProficiency.Sap.Legendary",DevComment="Legendary with Saps") - -; Proficiency Ranks for Shortbows -; Weapon mentioned in Pathfinder 2E Core Rulebook, under: -; - Chapter 2, page 40, "Elven Weapon Familiarity" -; - Chapter 3, page 95, "Attacks" for "Bard" -; - Chapter 3, page 179, "Attacks" for "Rogue" -GameplayTagList=(Tag="WeaponProficiency.Shortbow.Untrained",DevComment="Untrained with Shortbows") -GameplayTagList=(Tag="WeaponProficiency.Shortbow.Trained",DevComment="Trained with Shortbows") -GameplayTagList=(Tag="WeaponProficiency.Shortbow.Expert",DevComment="Expert with Shortbows") -GameplayTagList=(Tag="WeaponProficiency.Shortbow.Master",DevComment="Master with Shortbows") -GameplayTagList=(Tag="WeaponProficiency.Shortbow.Legendary",DevComment="Legendary with Shortbows") - -; Proficiency Ranks for Shortswords -; Weapon mentioned in Pathfinder 2E Core Rulebook, under: -; - Chapter 2, page 52, "Halfling Weapon Familiarity" -; - Chapter 3, page 95, "Attacks" for "Bard" -; - Chapter 3, page 179, "Attacks" for "Rogue" -GameplayTagList=(Tag="WeaponProficiency.Shortsword.Untrained",DevComment="Untrained with Shortswords") -GameplayTagList=(Tag="WeaponProficiency.Shortsword.Trained",DevComment="Trained with Shortswords") -GameplayTagList=(Tag="WeaponProficiency.Shortsword.Expert",DevComment="Expert with Shortswords") -GameplayTagList=(Tag="WeaponProficiency.Shortsword.Master",DevComment="Master with Shortswords") -GameplayTagList=(Tag="WeaponProficiency.Shortsword.Legendary",DevComment="Legendary with Shortswords") - -; Proficiency Ranks for Slings -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.Sling.Untrained",DevComment="Untrained with Slings") -GameplayTagList=(Tag="WeaponProficiency.Sling.Trained",DevComment="Trained with Slings") -GameplayTagList=(Tag="WeaponProficiency.Sling.Expert",DevComment="Expert with Slings") -GameplayTagList=(Tag="WeaponProficiency.Sling.Master",DevComment="Master with Slings") -GameplayTagList=(Tag="WeaponProficiency.Sling.Legendary",DevComment="Legendary with Slings") - -; Proficiency Ranks for Staves -; Weapon mentioned in Pathfinder 2E Core Rulebook, under: -; - Chapter 3, page 203, "Attacks" for "Wizard" -GameplayTagList=(Tag="WeaponProficiency.Staff.Untrained",DevComment="Untrained with Staves") -GameplayTagList=(Tag="WeaponProficiency.Staff.Trained",DevComment="Trained with Staves") -GameplayTagList=(Tag="WeaponProficiency.Staff.Expert",DevComment="Expert with Staves") -GameplayTagList=(Tag="WeaponProficiency.Staff.Master",DevComment="Master with Staves") -GameplayTagList=(Tag="WeaponProficiency.Staff.Legendary",DevComment="Legendary with Staves") - -; Proficiency Ranks for Warhammers -; Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". -GameplayTagList=(Tag="WeaponProficiency.Warhammer.Untrained",DevComment="Untrained with Warhammers") -GameplayTagList=(Tag="WeaponProficiency.Warhammer.Trained",DevComment="Trained with Warhammers") -GameplayTagList=(Tag="WeaponProficiency.Warhammer.Expert",DevComment="Expert with Warhammers") -GameplayTagList=(Tag="WeaponProficiency.Warhammer.Master",DevComment="Master with Warhammers") -GameplayTagList=(Tag="WeaponProficiency.Warhammer.Legendary",DevComment="Legendary with Warhammers") - -; Proficiency Ranks for Whips -; Weapon mentioned in Pathfinder 2E Core Rulebook, under: -; - Chapter 3, page 95, "Attacks" for "Bard" -GameplayTagList=(Tag="WeaponProficiency.Whip.Untrained",DevComment="Untrained with Whips") -GameplayTagList=(Tag="WeaponProficiency.Whip.Trained",DevComment="Trained with Whips") -GameplayTagList=(Tag="WeaponProficiency.Whip.Expert",DevComment="Expert with Whips") -GameplayTagList=(Tag="WeaponProficiency.Whip.Master",DevComment="Master with Whips") -GameplayTagList=(Tag="WeaponProficiency.Whip.Legendary",DevComment="Legendary with Whips") diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Currencies.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Currencies.cpp new file mode 100644 index 000000000..b389693b6 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Currencies.cpp @@ -0,0 +1,23 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Currencies.h" + +// ===================================================================================================================== +// Default Currency - "Coins" +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Chapter 6, page 271. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCurrencyCoins, + "Currency.Coins", + "The most common currency in OpenPF2." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/CurrencyUnits.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/CurrencyUnits.cpp new file mode 100644 index 000000000..4747b3754 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/CurrencyUnits.cpp @@ -0,0 +1,41 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/CurrencyUnits.h" + +// ===================================================================================================================== +// Default Currency Units +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Chapter 6, page 271. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCurrencyUnitCoinsCopperPiece, + "CurrencyUnit.Coins.CopperPiece", + "A unit of currency worth 1/10 of a silver piece." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCurrencyUnitCoinsSilverPiece, + "CurrencyUnit.Coins.SilverPiece", + "The standard unit of currency for commoners and beginning adventurers. Each is a standard weight of silver and is typically accepted by any merchant or kingdom no matter where it was minted." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCurrencyUnitCoinsGoldPiece, + "CurrencyUnit.Coins.GoldPiece", + "A unit of currency often used for purchasing magic items and other expensive items. 1 gold piece is worth 10 silver pieces and 100 copper pieces." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCurrencyUnitCoinsPlatinumPiece, + "CurrencyUnit.Coins.PlatinumPiece", + "A unit of current used by nobles to demonstrate their wealth, for the purchase of very expensive items, or simply as a way to easily transport large sums of currency. A platinum piece is worth 10 gold pieces, 100 silver pieces, and 1,000 copper pieces." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/DamageTypes.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/DamageTypes.cpp new file mode 100644 index 000000000..1a07b961a --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/DamageTypes.cpp @@ -0,0 +1,149 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/DamageTypes.h" + +// ===================================================================================================================== +// Damage types +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Chapter 9, page 452, "Damage Types". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypePhysical, + "DamageType.Physical", + "Damage dealt by weapons, many physical hazards, and a handful of spells is collectively called physical damage. The main types of physical damage are bludgeoning, piercing, and slashing." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypePhysicalBludgeoning, + "DamageType.Physical.Bludgeoning", + "Bludgeoning (B) damage comes from weapons and hazards that deal blunt-force trauma, like a hit from a club or being dashed against rocks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypePhysicalPiercing, + "DamageType.Physical.Piercing", + "Piercing (P) damage is dealt from stabs and punctures, whether from a dragon's fangs or the thrust of a spear." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypePhysicalSlashing, + "DamageType.Physical.Slashing", + "Slashing (S) damage is delivered by a cut, be it the swing of the sword or the blow from a scythe blades trap." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeEnergy, + "DamageType.Energy", + "Many spells and other magical effects deal energy damage. Energy damage is also dealt from effects in the world, such as the biting cold of a blizzard to a raging forest fire. The main types of energy damage are acid, cold, electricity, fire, and sonic." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeEnergyAcid, + "DamageType.Energy.Acid", + "Acid damage can be delivered by gases, liquids, and certain solids that dissolve flesh, and sometimes harder materials." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeEnergyCold, + "DamageType.Energy.Cold", + "Cold damage freezes material by way of contact with chilling gases and ice. Electricity damage comes from the discharge of powerful lightning and sparks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeEnergyElectricity, + "DamageType.Energy.Electricity", + "Electricity comes from the discharge of powerful lightning and sparks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeEnergyFire, + "DamageType.Energy.Fire", + "Fire damage burns through heat and combustion." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeEnergySonic, + "DamageType.Energy.Sonic", + "Sonic damage assaults matter with high-frequency vibration and sound waves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeEnergyPositive, + "DamageType.Energy.Positive", + "Positive damage harms only undead creatures, withering undead bodies and disrupting incorporeal undead." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeEnergyNegative, + "DamageType.Energy.Negative", + "Negative damage saps life, damaging only living creatures." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeEnergyForce, + "DamageType.Energy.Force", + "Powerful and pure magical energy can manifest itself as force damage. Few things can resist this type of damage—not even incorporeal creatures such as ghosts and wraiths." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeAlignment, + "DamageType.Alignment", + "Weapons and effects keyed to a particular alignment can deal chaotic, evil, good, or lawful damage. These damage types apply only to creatures that have the opposing alignment trait." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeAlignmentChaotic, + "DamageType.Alignment.Chaotic", + "Chaotic damage harms only lawful creatures." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeAlignmentEvil, + "DamageType.Alignment.Evil", + "Evil damage harms only good creatures." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeAlignmentGood, + "DamageType.Alignment.Good", + "Good damage harms only evil creatures." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeAlignmentLawful, + "DamageType.Alignment.Lawful", + "Lawful damage harms only chaotic creatures." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeMental, + "DamageType.Mental", + "Sometimes an effect can target the mind with enough psychic force to actually deal damage to the creature. When it does, it deals mental damage. Mindless creatures and those with only programmed or rudimentary intelligence are often immune to mental damage and effects." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypePoison, + "DamageType.Poison", + "Venoms, toxins and the like can deal poison damage, which affects creatures by way of contact, ingestion, inhalation, or injury. In addition to coming from monster attacks, alchemical items, and spells, poison damage is often caused by ongoing afflictions, which follow special rules." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypeBleed, + "DamageType.Bleed", + "This is persistent damage that represents loss of blood. As such, it has no effect on nonliving creatures or living creatures that don't need blood to live." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypePrecision, + "DamageType.Precision", + "When a character hits with an ability that grants precision damage, the character increase the attack's listed damage, using the same damage type, rather than tracking a separate pool of damage." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/AbilityTriggers.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/AbilityTriggers.cpp new file mode 100644 index 000000000..e5f65618b --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/AbilityTriggers.cpp @@ -0,0 +1,33 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2022-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#include "GameplayTags/Encounters/AbilityTriggers.h" + +// ===================================================================================================================== +// Tags that trigger Encounter-related Gameplay Abilities. +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTriggerTagCategoryEncountersEnterEncounter, + "TriggerTagCategory.Encounters.EnterEncounter", + "Tag to trigger Gameplay Abilities appropriate for when a character enters an encounter." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTriggerTagCategoryEncountersStartTurn, + "TriggerTagCategory.Encounters.StartTurn", + "Tag to trigger Gameplay Abilities appropriate for the start of a character's turn during an encounter." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTriggerTagCategoryEncountersEndTurn, + "TriggerTagCategory.Encounters.EndTurn", + "Tag to trigger Gameplay Abilities appropriate for the end of a character's turn during an encounter." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTriggerTagCategoryEncountersLeaveEncounter, + "TriggerTagCategory.Encounters.LeaveEncounter", + "Tag to trigger Gameplay Abilities appropriate for when a character leaves an encounter." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/CharacterStates.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/CharacterStates.cpp new file mode 100644 index 000000000..bdd50afa0 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/CharacterStates.cpp @@ -0,0 +1,27 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2022-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#include "GameplayTags/Encounters/CharacterStates.h" + +// ===================================================================================================================== +// Tags that apply to characters during encounters. +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagEncounterCharacterTurnActive, + "Encounter.Character.TurnActive", + "Tag applied to a character whose turn is active." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagEncounterCharacterPointsRefreshFrozen, + "Encounter.Character.PointsRefreshFrozen", + "Tag applied to a character who cannot presently accrue action points." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagEncounterCharacterCooldownNextTurn, + "Encounter.Character.Cooldown.NextTurn", + "Tag applied to a character who is currently on a cooldown waiting for their next turn to start." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/AbilityTypes.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/AbilityTypes.cpp new file mode 100644 index 000000000..351afec5e --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/AbilityTypes.cpp @@ -0,0 +1,45 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#include "GameplayTags/GameplayAbilities/AbilityTypes.h" + +// ===================================================================================================================== +// Tags that Identify Gameplay Ability Types +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityTypeAbilityBoost, + "GameplayAbility.Type.AbilityBoost", + "Tag applied to Gameplay Abilities that offer a character the opportunity to boost an ability score." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityTypeDefaultMovement, + "GameplayAbility.Type.DefaultMovement", + "Tag applied to Gameplay Abilities that perform the default type of movement for a character." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityTypeDefaultFaceTarget, + "GameplayAbility.Type.DefaultFaceTarget", + "Tag applied to Gameplay Abilities that have a character rotate to face another actor." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityTypeQueueableAction, + "GameplayAbility.Type.QueueableAction", + "Tag applied to Gameplay Abilities that can be queued during encounters. This should also be used as a blocking tag to prevent it from being run concurrently with other actions at the time it is de-queued." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityTypeDirectlyInvokable, + "GameplayAbility.Type.DirectlyInvokable", + "Tag applied to Gameplay Abilities that can be directly invoked by the player (e.g., from an ability dialog or input binding)." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityTypeBlocksEndOfTurn, + "GameplayAbility.Type.BlocksEndOfTurn", + "Tag applied to Gameplay Abilities that prevent a character's turn from ending while they are active (e.g., an attack that is in progress)." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/ActivationMetadata.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/ActivationMetadata.cpp new file mode 100644 index 000000000..46b20c680 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/ActivationMetadata.cpp @@ -0,0 +1,21 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#include "GameplayTags/GameplayAbilities/ActivationMetadata.h" + +// ===================================================================================================================== +// Tags that identify additional metadata that has been passed along for an ability activation. +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityActivationMetadataHasTargetCharacter, + "GameplayAbility.Activation.Metadata.HasTarget.Character", + "Tag that a Gameplay Ability activation includes a target character (for healing or attack) chosen by the player." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityActivationMetadataHasTargetLocation, + "GameplayAbility.Activation.Metadata.HasTarget.Location", + "Tag that a Gameplay Ability activation includes a target map location chosen by the player." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/WaitForEvents.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/WaitForEvents.cpp new file mode 100644 index 000000000..67c69c571 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/WaitForEvents.cpp @@ -0,0 +1,33 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#include "GameplayTags/GameplayAbilities/WaitForEvents.h" + +// ===================================================================================================================== +// Tags that identify events abilities can wait for during their activation. +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityGameplayEventDamageReceived, + "GameplayAbility.GameplayEvent.DamageReceived", + "Tag on a GameplayEvent sent to a character to notify passive condition check GAs that the character has received damage." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityGameplayEventFacingComplete, + "GameplayAbility.GameplayEvent.FacingComplete", + "Tag on a GameplayEvent sent to a character to notify the active ability that the character is now oriented properly for an attack to proceed against a target." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityGameplayEventHitPointsChanged, + "GameplayAbility.GameplayEvent.HitPointsChanged", + "Tag on a GameplayEvent sent to a character to notify passive condition check GAs that the character's hit points have changed." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityGameplayEventMontageWeaponHit, + "GameplayAbility.GameplayEvent.Montage.WeaponHit", + "Tag on a GameplayEvent emitted during an attack montage at the point that the weapon should make contact with an enemy." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayCues.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayCues.cpp new file mode 100644 index 000000000..fa1a87cae --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayCues.cpp @@ -0,0 +1,15 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2023-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#include "GameplayTags/GameplayCues.h" + +// ===================================================================================================================== +// Gameplay Cues that provide special FX and sound FX in response to effect activations. +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayCueCharacterInflictDamage, + "GameplayCue.Character.InflictDamage", + "Gameplay cue fired whenever one character inflicts damage on another." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/CalculationSources.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/CalculationSources.cpp new file mode 100644 index 000000000..0798731e8 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/CalculationSources.cpp @@ -0,0 +1,17 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#include "GameplayTags/GameplayEffects/CalculationSources.h" + +// ===================================================================================================================== +// "Source" Tags passed in from Blueprints to calculate stats. +// +// These should not be used on weapons, characters, or other objects that appear in the world. +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectCalculationSourceInitiative, + "GameplayEffect.CalculationSource.Initiative", + "Source tag passed in when a character's initiative in an encounter is being determined." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/SetByCallerParameters.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/SetByCallerParameters.cpp new file mode 100644 index 000000000..f81553924 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/SetByCallerParameters.cpp @@ -0,0 +1,27 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#include "GameplayTags/GameplayEffects/SetByCallerParameters.h" + +// ===================================================================================================================== +// Parameters passed in to "Set by caller" GEs +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectParameterDamage, + "GameplayEffect.Parameter.Damage", + "The parameter passed in to a dynamic damage GE, to control the amount of damage inflicted." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectParameterResistance, + "GameplayEffect.Parameter.Resistance", + "The parameter passed in to a dynamic resistance GE, to control the amount of damage resistance." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectParameterHealing, + "GameplayEffect.Parameter.Healing", + "The parameter passed in to a dynamic healing GE, to control the amount of hit points granted to the character." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/WeightGroups.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/WeightGroups.cpp new file mode 100644 index 000000000..8319f3856 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/WeightGroups.cpp @@ -0,0 +1,51 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#include "GameplayTags/GameplayEffects/WeightGroups.h" + +// ===================================================================================================================== +// Weights used to control the order that GEs are applied to an OpenPF2 character. +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectWeightGroup00_InitializeBaseStats, + "GameplayEffect.WeightGroup.00_InitializeBaseStats", + "The weight group used for GEs that initialize base stats." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectWeightGroup05_PostInitializeBaseStats, + "GameplayEffect.WeightGroup.05_PostInitializeBaseStats", + "The weight group used for GEs provided by the game designer that have to run right after base stats." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectWeightGroup10_ManagedEffects, + "GameplayEffect.WeightGroup.10_ManagedEffects", + "The weight group used for GEs generated from other values on this character (managed by ASC logic)." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectWeightGroup15_PreAbilityBoosts, + "GameplayEffect.WeightGroup.15_PreAbilityBoosts", + "The default weight group for custom, passive GEs from a game designer; applied before ability boosts." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectWeightGroup20_AbilityBoosts, + "GameplayEffect.WeightGroup.20_AbilityBoosts", + "The weight group used for ability boosts selected by the player or a game designer." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectWeightGroup25_PreFinalizeStats, + "GameplayEffect.WeightGroup.25_PreFinalizeStats", + "The weight group used for custom GEs provided by the game designer that must run before the last group of stats GEs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectWeightGroup30_FinalizeStats, + "GameplayEffect.WeightGroup.30_FinalizeStats", + "The weight group used for GEs that need to run last because they heavily depend on the results of earlier GEs." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureAlignments.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureAlignments.cpp new file mode 100644 index 000000000..bb4bcadf0 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureAlignments.cpp @@ -0,0 +1,89 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/CreatureAlignments.h" + +// ===================================================================================================================== +// Creature Alignment - The indicator of the character's morality and personality. +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, page 29, Table 1-2: The Nine Alignments. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignmentLawful, + "CreatureAlignment.Lawful", + "Character values consistency, stability, and predictability over flexibility" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignmentLawfulGood, + "CreatureAlignment.Lawful.Good", + "Character values consistency, stability, and predictability over flexibility; considers others above themselves and works selflessly to assist others." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignmentLawfulNeutral, + "CreatureAlignment.Lawful.Neutral", + "Character values consistency, stability, and predictability over flexibility; doesn't consider others more or less importantly than themselves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignmentLawfulEvil, + "CreatureAlignment.Lawful.Evil", + "Character values consistency, stability, and predictability over flexibility; is willing to victimize or harm others for selfish gain." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignmentNeutral, + "CreatureAlignment.Neutral", + "Character obeys law or code of conduct in many situations, but is flexible." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignmentNeutralGood, + "CreatureAlignment.Neutral.Good", + "Character obeys law or code of conduct in many situations, but is flexible; considers others above themselves and works selflessly to assist others." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignmentNeutralNeutral, + "CreatureAlignment.Neutral.Neutral", + "Character obeys law or code of conduct in many situations, but is flexible; doesn't consider others more or less importantly than themselves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignmentNeutralEvil, + "CreatureAlignment.Neutral.Evil", + "Character obeys law or code of conduct in many situations, but is flexible; is willing to victimize or harm others for selfish gain." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignmentChaotic, + "CreatureAlignment.Chaotic", + "Character values flexibility, creativity, and spontaneity over consistency." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignmentChaoticGood, + "CreatureAlignment.Chaotic.Good", + "Character values flexibility, creativity, and spontaneity over consistency; considers others above themselves and works selflessly to assist others." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignmentChaoticNeutral, + "CreatureAlignment.Chaotic.Neutral", + "Character values flexibility, creativity, and spontaneity over consistency; doesn't consider others more or less importantly than themselves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignmentChaoticEvil, + "CreatureAlignment.Chaotic.Evil", + "Character values flexibility, creativity, and spontaneity over consistency; is willing to victimize or harm others for selfish gain." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureSizes.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureSizes.cpp new file mode 100644 index 000000000..7afa26148 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureSizes.cpp @@ -0,0 +1,24 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/CreatureSizes.h" + +// ===================================================================================================================== +// Creature Size - The approximate physical amount of space a creature occupies. +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, page 474, Table 9-1: Size and Reach. +UE_DEFINE_GAMEPLAY_TAG(Pf2TagCreatureSizeTiny, "CreatureSize.Tiny") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagCreatureSizeSmall, "CreatureSize.Small") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagCreatureSizeMedium, "CreatureSize.Medium") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagCreatureSizeLarge, "CreatureSize.Large") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagCreatureSizeHuge, "CreatureSize.Huge") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagCreatureSizeGargantuan, "CreatureSize.Gargantuan") diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Equipment.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Equipment.cpp new file mode 100644 index 000000000..469e3f959 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Equipment.cpp @@ -0,0 +1,40 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/Equipment.h" + +// ===================================================================================================================== +// The type of armor the character *currently* has equipped. +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorEquippedUnarmored, + "Armor.Equipped.Unarmored", + "Character has no armor equipped." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorEquippedLight, + "Armor.Equipped.Light", + "Character has Light armor equipped." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorEquippedMedium, + "Armor.Equipped.Medium", + "Character has Medium armor equipped." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorEquippedHeavy, + "Armor.Equipped.Heavy", + "Character has Heavy armor equipped." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/KeyAbilities.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/KeyAbilities.cpp new file mode 100644 index 000000000..5994cae97 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/KeyAbilities.cpp @@ -0,0 +1,104 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/KeyAbilities.h" + +// ===================================================================================================================== +// Key Ability - The most important ability of a particular character/creature. +// ===================================================================================================================== +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 68, "Key Ability". +// - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", pages 72-232 ("Key Ability" sections in each class entry). +// +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagKeyAbilityStrength, + "KeyAbility.Strength", + "Character's key ability is Strength" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagKeyAbilityDexterity, + "KeyAbility.Dexterity", + "Character's key ability is Dexterity" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagKeyAbilityConstitution, + "KeyAbility.Constitution", + "Character's key ability is Constitution" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagKeyAbilityIntelligence, + "KeyAbility.Intelligence", + "Character's key ability is Intelligence" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagKeyAbilityWisdom, + "KeyAbility.Wisdom", + "Character's key ability is Wisdom" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagKeyAbilityCharisma, + "KeyAbility.Charisma", + "Character's key ability is Charisma" +) + +// ===================================================================================================================== +// Spellcasting Ability - The key ability of a character/creature that can cast spells. +// ===================================================================================================================== +// The classes in the core rulebook don't have any spellcasting abilities other than Wisdom and Charisma, but there's no +// reason to limit game makers to just those options. Plus, add-on material for OpenPF2 could always invent a new class +// that uses something like Intelligence for a character that does complex spellcasting or Dexterity for a character who +// performs physically-dexterous spells. +// +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 68, "Key Ability". +// - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", pages 72-232 ("Key Ability" sections in each class entry). +// +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellcastingAbilityStrength, + "SpellcastingAbility.Strength", + "Character's spellcasting ability is Strength" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellcastingAbilityDexterity, + "SpellcastingAbility.Dexterity", + "Character's spellcasting ability is Dexterity" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellcastingAbilityConstitution, + "SpellcastingAbility.Constitution", + "Character's spellcasting ability is Constitution" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellcastingAbilityIntelligence, + "SpellcastingAbility.Intelligence", + "Character's spellcasting ability is Intelligence" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellcastingAbilityWisdom, + "SpellcastingAbility.Wisdom", + "Character's spellcasting ability is Wisdom" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellcastingAbilityCharisma, + "SpellcastingAbility.Charisma", + "Character's spellcasting ability is Charisma" +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Languages.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Languages.cpp new file mode 100644 index 000000000..5b54b7f35 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Languages.cpp @@ -0,0 +1,169 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. +// Common Languages - "Languages that are common are regularly encountered in most places, even among those who aren’t native speakers." +// Source: Pathfinder 2E Core Rulebook, page 65, Table 2-1: Common Languages. + +#include "GameplayTags/Stats/Languages.h" + +// ===================================================================================================================== +// Common Languages - Languages regularly encountered in most places, even among those who aren’t native speakers. +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, page 65, Table 2-1: Common Languages. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageCommonCommon, + "Language.Common.Common", + "Language spoken by humans, dwarves, elves, halflings, and other common ancestries." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageCommonDraconic, + "Language.Common.Draconic", + "Language spoken by dragons, reptilian humanoids." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageCommonDwarven, + "Language.Common.Dwarven", + "Language spoken by dwarves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageCommonElven, + "Language.Common.Elven", + "Language spoken by elves, half-elves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageCommonGnomish, + "Language.Common.Gnomish", + "Language spoken by gnomes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageCommonGoblin, + "Language.Common.Goblin", + "Language spoken by goblins, hobgoblins, bugbears." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageCommonHalfling, + "Language.Common.Halfling", + "Language spoken by halflings." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageCommonJotun, + "Language.Common.Jotun", + "Language spoken by giants, ogres, trolls, ettins, cyclopes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageCommonOrcish, + "Language.Common.Orcish", + "Language spoken by orcs, half-orcs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageCommonSylvan, + "Language.Common.Sylvan", + "Language spoken by fey, centaurs, plant creatures." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageCommonUndercommon, + "Language.Common.Undercommon", + "Language spoken by drow, duergars, xulgaths." +) + +// ===================================================================================================================== +// Uncommon Languages - Languages most frequently spoken by native speakers, but also by certain scholars and others +// interested in the associated cultures. +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, page 65, Table 2-2: Uncommon Languages. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageUncommonAbyssal, + "Language.Uncommon.Abyssal", + "Language spoken by demons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageUncommonAklo, + "Language.Uncommon.Aklo", + "Language spoken by deros, evil fey, otherworldly monsters." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageUncommonAquan, + "Language.Uncommon.Aquan", + "Language spoken by aquatic creatures, water elemental creatures." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageUncommonAuran, + "Language.Uncommon.Auran", + "Language spoken by air elemental creatures, flying creatures." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageUncommonCelestial, + "Language.Uncommon.Celestial", + "Language spoken by angels." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageUncommonGnoll, + "Language.Uncommon.Gnoll", + "Language spoken by gnolls." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageUncommonIgnan, + "Language.Uncommon.Ignan", + "Language spoken by fire elemental creatures." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageUncommonInfernal, + "Language.Uncommon.Infernal", + "Language spoken by devils." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageUncommonNecril, + "Language.Uncommon.Necril", + "Language spoken by ghouls, intelligent undead." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageUncommonShadowtongue, + "Language.Uncommon.Shadowtongue", + "Language spoken by nidalese, Shadow Plane creatures." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageUncommonTerran, + "Language.Uncommon.Terran", + "Language spoken by earth elemental creatures." +) + +// ===================================================================================================================== +// Secret Languages (e.g., "Druidic") +// +// Druidic is a secret language, and is available only to characters who are druids. In fact, druids are prohibited from +// teaching the language to non-druids. +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, page 65, Table 2-3: Secret Languages. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguageSecretDruidic, + "Language.Secret.Druidic", + "Language spoken by druids." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Armor.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Armor.cpp new file mode 100644 index 000000000..7b99fda6a --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Armor.cpp @@ -0,0 +1,146 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/Proficiencies/Armor.h" + +// ===================================================================================================================== +// Proficiency Ranks for Different Classes of Armor (Unarmored, Light, Medium, or Heavy) +// ===================================================================================================================== +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 11, "Playing the Game". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 13, "Proficiency". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 27, "Character Sheet". +// - Pathfinder 2E Core Rulebook, Appendix, page 624, "Armor Class". + +// === Unarmored +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryUnarmoredUntrained, + "Armor.Category.Unarmored.Untrained", + "Character is Untrained in Unarmored Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryUnarmoredTrained, + "Armor.Category.Unarmored.Trained", + "Character is Trained in Unarmored Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryUnarmoredExpert, + "Armor.Category.Unarmored.Expert", + "Character is Expert in Unarmored Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryUnarmoredMaster, + "Armor.Category.Unarmored.Master", + "Character is Master in Unarmored Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryUnarmoredLegendary, + "Armor.Category.Unarmored.Legendary", + "Character is Legendary in Unarmored Defense." +) + +// === Light +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryLightUntrained, + "Armor.Category.Light.Untrained", + "Character is Untrained in Light Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryLightTrained, + "Armor.Category.Light.Trained", + "Character is Trained in Light Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryLightExpert, + "Armor.Category.Light.Expert", + "Character is Expert in Light Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryLightMaster, + "Armor.Category.Light.Master", + "Character is Master in Light Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryLightLegendary, + "Armor.Category.Light.Legendary", + "Character is Legendary in Light Armor Defense." +) + +// === Medium +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryMediumUntrained, + "Armor.Category.Medium.Untrained", + "Character is Untrained in Medium Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryMediumTrained, + "Armor.Category.Medium.Trained", + "Character is Trained in Medium Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryMediumExpert, + "Armor.Category.Medium.Expert", + "Character is Expert in Medium Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryMediumMaster, + "Armor.Category.Medium.Master", + "Character is Master in Medium Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryMediumLegendary, + "Armor.Category.Medium.Legendary", + "Character is Legendary in Medium Armor Defense." +) + +// === Heavy +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryHeavyUntrained, + "Armor.Category.Heavy.Untrained", + "Character is Untrained in Heavy Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryHeavyTrained, + "Armor.Category.Heavy.Trained", + "Character is Trained in Heavy Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryHeavyExpert, + "Armor.Category.Heavy.Expert", + "Character is Expert in Heavy Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryHeavyMaster, + "Armor.Category.Heavy.Master", + "Character is Master in Heavy Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryHeavyLegendary, + "Armor.Category.Heavy.Legendary", + "Character is Legendary in Heavy Armor Defense." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/ClassDc.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/ClassDc.cpp new file mode 100644 index 000000000..b10a42b91 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/ClassDc.cpp @@ -0,0 +1,52 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/Proficiencies/ClassDc.h" + +// ===================================================================================================================== +// Proficiency Ranks for Class DC (Difficulty Class). +// ===================================================================================================================== +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 11, "Playing the Game". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 13, "Proficiency". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 27, "Character Sheet". +// - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 69, "Initial Proficiencies". +// - Pathfinder 2E Core Rulebook, Appendix, page 624, "Class DC". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagClassDcUntrained, + "ClassDc.Untrained", + "Character is Untrained in Class Difficulty Class (Class DC)." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagClassDcTrained, + "ClassDc.Trained", + "Character is Trained in Class Difficulty Class (Class DC)." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagClassDcExpert, + "ClassDc.Expert", + "Character is Expert in Class Difficulty Class (Class DC)." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagClassDcMaster, + "ClassDc.Master", + "Character is Master in Class Difficulty Class (Class DC)." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagClassDcLegendary, + "ClassDc.Legendary", + "Character is Legendary in Class Difficulty Class (Class DC)." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Perception.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Perception.cpp new file mode 100644 index 000000000..e20c03ea9 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Perception.cpp @@ -0,0 +1,52 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/Proficiencies/Perception.h" + +// ===================================================================================================================== +// Proficiency Ranks for Perception (how alert they are). +// ===================================================================================================================== +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 11, "Playing the Game". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 13, "Proficiency". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 27, "Character Sheet". +// - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 69, "Initial Proficiencies". +// - Pathfinder 2E Core Rulebook, Appendix, page 624, "Perception". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagPerceptionUntrained, + "Perception.Untrained", + "Character is Untrained in Perception." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagPerceptionTrained, + "Perception.Trained", + "Character is Trained in Perception." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagPerceptionExpert, + "Perception.Expert", + "Character is Expert in Perception." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagPerceptionMaster, + "Perception.Master", + "Character is Master in Perception." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagPerceptionLegendary, + "Perception.Legendary", + "Character is Legendary in Perception." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SavingThrows.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SavingThrows.cpp new file mode 100644 index 000000000..091e9cb25 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SavingThrows.cpp @@ -0,0 +1,114 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/Proficiencies/SavingThrows.h" + +// ===================================================================================================================== +// Proficiency Ranks for Saving Throws (avoiding danger or otherwise withstanding an assault to mind or body). +// ===================================================================================================================== +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 11, "Playing the Game". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 13, "Saving Throw (Save)" and "Proficiency". +// - Pathfinder 2E Core Rulebook, Appendix, page 624, "Saving Throws". + +// === Fortitude +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowFortitudeUntrained, + "SavingThrow.Fortitude.Untrained", + "Character is Untrained in Fortitude." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowFortitudeTrained, + "SavingThrow.Fortitude.Trained", + "Character is Trained in Fortitude." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowFortitudeExpert, + "SavingThrow.Fortitude.Expert", + "Character is Expert in Fortitude." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowFortitudeMaster, + "SavingThrow.Fortitude.Master", + "Character is Master in Fortitude." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowFortitudeLegendary, + "SavingThrow.Fortitude.Legendary", + "Character is Legendary in Fortitude." +) + +// === Reflex +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowReflexUntrained, + "SavingThrow.Reflex.Untrained", + "Character is Untrained in Reflex." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowReflexTrained, + "SavingThrow.Reflex.Trained", + "Character is Trained in Reflex." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowReflexExpert, + "SavingThrow.Reflex.Expert", + "Character is Expert in Reflex." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowReflexMaster, + "SavingThrow.Reflex.Master", + "Character is Master in Reflex." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowReflexLegendary, + "SavingThrow.Reflex.Legendary", + "Character is Legendary in Reflex." +) + +// === Will +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowWillUntrained, + "SavingThrow.Will.Untrained", + "Character is Untrained in Will." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowWillTrained, + "SavingThrow.Will.Trained", + "Character is Trained in Will." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowWillExpert, + "SavingThrow.Will.Expert", + "Character is Expert in Will." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowWillMaster, + "SavingThrow.Will.Master", + "Character is Master in Will." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowWillLegendary, + "SavingThrow.Will.Legendary", + "Character is Legendary in Will." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Skills.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Skills.cpp new file mode 100644 index 000000000..b48672ee8 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Skills.cpp @@ -0,0 +1,580 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/Proficiencies/Skills.h" + +// ===================================================================================================================== +// Proficiency Ranks for Skills (training and experience at performing certain tasks). +// ===================================================================================================================== +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 11, "Playing the Game". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 13, "Proficiency". +// - Pathfinder 2E Core Rulebook, Chapter 4: "Skills", pages 233-253. +// - Pathfinder 2E Core Rulebook, Appendix, page 624, "Skills". + +// === Acrobatics +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillAcrobaticsUntrained, + "Skill.Acrobatics.Untrained", + "Character is Untrained in Acrobatics." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillAcrobaticsTrained, + "Skill.Acrobatics.Trained", + "Character is Trained in Acrobatics." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillAcrobaticsExpert, + "Skill.Acrobatics.Expert", + "Character is Expert in Acrobatics." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillAcrobaticsMaster, + "Skill.Acrobatics.Master", + "Character is Master in Acrobatics." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillAcrobaticsLegendary, + "Skill.Acrobatics.Legendary", + "Character is Legendary in Acrobatics." +) + +// === Arcana +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillArcanaUntrained, + "Skill.Arcana.Untrained", + "Character is Untrained in Arcana." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillArcanaTrained, + "Skill.Arcana.Trained", + "Character is Trained in Arcana." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillArcanaExpert, + "Skill.Arcana.Expert", + "Character is Expert in Arcana." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillArcanaMaster, + "Skill.Arcana.Master", + "Character is Master in Arcana." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillArcanaLegendary, + "Skill.Arcana.Legendary", + "Character is Legendary in Arcana." +) + +// === Athletics +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillAthleticsUntrained, + "Skill.Athletics.Untrained", + "Character is Untrained in Athletics." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillAthleticsTrained, + "Skill.Athletics.Trained", + "Character is Trained in Athletics." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillAthleticsExpert, + "Skill.Athletics.Expert", + "Character is Expert in Athletics." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillAthleticsMaster, + "Skill.Athletics.Master", + "Character is Master in Athletics." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillAthleticsLegendary, + "Skill.Athletics.Legendary", + "Character is Legendary in Athletics." +) + +// === Crafting +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillCraftingUntrained, + "Skill.Crafting.Untrained", + "Character is Untrained in Crafting." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillCraftingTrained, + "Skill.Crafting.Trained", + "Character is Trained in Crafting." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillCraftingExpert, + "Skill.Crafting.Expert", + "Character is Expert in Crafting." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillCraftingMaster, + "Skill.Crafting.Master", + "Character is Master in Crafting." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillCraftingLegendary, + "Skill.Crafting.Legendary", + "Character is Legendary in Crafting." +) + +// === Deception +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillDeceptionUntrained, + "Skill.Deception.Untrained", + "Character is Untrained in Deception." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillDeceptionTrained, + "Skill.Deception.Trained", + "Character is Trained in Deception." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillDeceptionExpert, + "Skill.Deception.Expert", + "Character is Expert in Deception." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillDeceptionMaster, + "Skill.Deception.Master", + "Character is Master in Deception." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillDeceptionLegendary, + "Skill.Deception.Legendary", + "Character is Legendary in Deception." +) + +// === Diplomacy +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillDiplomacyUntrained, + "Skill.Diplomacy.Untrained", + "Character is Untrained in Diplomacy." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillDiplomacyTrained, + "Skill.Diplomacy.Trained", + "Character is Trained in Diplomacy." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillDiplomacyExpert, + "Skill.Diplomacy.Expert", + "Character is Expert in Diplomacy." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillDiplomacyMaster, + "Skill.Diplomacy.Master", + "Character is Master in Diplomacy." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillDiplomacyLegendary, + "Skill.Diplomacy.Legendary", + "Character is Legendary in Diplomacy." +) + +// === Intimidation +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillIntimidationUntrained, + "Skill.Intimidation.Untrained", + "Character is Untrained in Intimidation." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillIntimidationTrained, + "Skill.Intimidation.Trained", + "Character is Trained in Intimidation." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillIntimidationExpert, + "Skill.Intimidation.Expert", + "Character is Expert in Intimidation." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillIntimidationMaster, + "Skill.Intimidation.Master", + "Character is Master in Intimidation." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillIntimidationLegendary, + "Skill.Intimidation.Legendary", + "Character is Legendary in Intimidation." +) + +// === Lore1 +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillLore1Untrained, + "Skill.Lore1.Untrained", + "Character is Untrained in Lore1." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillLore1Trained, + "Skill.Lore1.Trained", + "Character is Trained in Lore1." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillLore1Expert, + "Skill.Lore1.Expert", + "Character is Expert in Lore1." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillLore1Master, + "Skill.Lore1.Master", + "Character is Master in Lore1." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillLore1Legendary, + "Skill.Lore1.Legendary", + "Character is Legendary in Lore1." +) + +// === Lore2 +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillLore2Untrained, + "Skill.Lore2.Untrained", + "Character is Untrained in Lore2." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillLore2Trained, + "Skill.Lore2.Trained", + "Character is Trained in Lore2." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillLore2Expert, + "Skill.Lore2.Expert", + "Character is Expert in Lore2." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillLore2Master, + "Skill.Lore2.Master", + "Character is Master in Lore2." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillLore2Legendary, + "Skill.Lore2.Legendary", + "Character is Legendary in Lore2." +) + +// === Medicine +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillMedicineUntrained, + "Skill.Medicine.Untrained", + "Character is Untrained in Medicine." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillMedicineTrained, + "Skill.Medicine.Trained", + "Character is Trained in Medicine." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillMedicineExpert, + "Skill.Medicine.Expert", + "Character is Expert in Medicine." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillMedicineMaster, + "Skill.Medicine.Master", + "Character is Master in Medicine." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillMedicineLegendary, + "Skill.Medicine.Legendary", + "Character is Legendary in Medicine." +) + +// === Nature +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillNatureUntrained, + "Skill.Nature.Untrained", + "Character is Untrained in Nature." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillNatureTrained, + "Skill.Nature.Trained", + "Character is Trained in Nature." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillNatureExpert, + "Skill.Nature.Expert", + "Character is Expert in Nature." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillNatureMaster, + "Skill.Nature.Master", + "Character is Master in Nature." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillNatureLegendary, + "Skill.Nature.Legendary", + "Character is Legendary in Nature." +) + +// === Occultism +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillOccultismUntrained, + "Skill.Occultism.Untrained", + "Character is Untrained in Occultism." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillOccultismTrained, + "Skill.Occultism.Trained", + "Character is Trained in Occultism." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillOccultismExpert, + "Skill.Occultism.Expert", + "Character is Expert in Occultism." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillOccultismMaster, + "Skill.Occultism.Master", + "Character is Master in Occultism." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillOccultismLegendary, + "Skill.Occultism.Legendary", + "Character is Legendary in Occultism." +) + +// === Performance +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillPerformanceUntrained, + "Skill.Performance.Untrained", + "Character is Untrained in Performance." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillPerformanceTrained, + "Skill.Performance.Trained", + "Character is Trained in Performance." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillPerformanceExpert, + "Skill.Performance.Expert", + "Character is Expert in Performance." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillPerformanceMaster, + "Skill.Performance.Master", + "Character is Master in Performance." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillPerformanceLegendary, + "Skill.Performance.Legendary", + "Character is Legendary in Performance." +) + +// === Religion +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillReligionUntrained, + "Skill.Religion.Untrained", + "Character is Untrained in Religion." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillReligionTrained, + "Skill.Religion.Trained", + "Character is Trained in Religion." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillReligionExpert, + "Skill.Religion.Expert", + "Character is Expert in Religion." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillReligionMaster, + "Skill.Religion.Master", + "Character is Master in Religion." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillReligionLegendary, + "Skill.Religion.Legendary", + "Character is Legendary in Religion." +) + +// === Society +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillSocietyUntrained, + "Skill.Society.Untrained", + "Character is Untrained in Society." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillSocietyTrained, + "Skill.Society.Trained", + "Character is Trained in Society." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillSocietyExpert, + "Skill.Society.Expert", + "Character is Expert in Society." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillSocietyMaster, + "Skill.Society.Master", + "Character is Master in Society." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillSocietyLegendary, + "Skill.Society.Legendary", + "Character is Legendary in Society." +) + +// === Stealth +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillStealthUntrained, + "Skill.Stealth.Untrained", + "Character is Untrained in Stealth." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillStealthTrained, + "Skill.Stealth.Trained", + "Character is Trained in Stealth." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillStealthExpert, + "Skill.Stealth.Expert", + "Character is Expert in Stealth." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillStealthMaster, + "Skill.Stealth.Master", + "Character is Master in Stealth." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillStealthLegendary, + "Skill.Stealth.Legendary", + "Character is Legendary in Stealth." +) + +// === Survival +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillSurvivalUntrained, + "Skill.Survival.Untrained", + "Character is Untrained in Survival." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillSurvivalTrained, + "Skill.Survival.Trained", + "Character is Trained in Survival." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillSurvivalExpert, + "Skill.Survival.Expert", + "Character is Expert in Survival." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillSurvivalMaster, + "Skill.Survival.Master", + "Character is Master in Survival." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillSurvivalLegendary, + "Skill.Survival.Legendary", + "Character is Legendary in Survival." +) + +// === Thievery +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillThieveryUntrained, + "Skill.Thievery.Untrained", + "Character is Untrained in Thievery." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillThieveryTrained, + "Skill.Thievery.Trained", + "Character is Trained in Thievery." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillThieveryExpert, + "Skill.Thievery.Expert", + "Character is Expert in Thievery." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillThieveryMaster, + "Skill.Thievery.Master", + "Character is Master in Thievery." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSkillThieveryLegendary, + "Skill.Thievery.Legendary", + "Character is Legendary in Thievery." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellAttacks.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellAttacks.cpp new file mode 100644 index 000000000..d5b85b408 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellAttacks.cpp @@ -0,0 +1,47 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/Proficiencies/SpellAttacks.h" + +// ===================================================================================================================== +// Proficiency Ranks for Spell Attacks (Spell Attack Roll). +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Appendix, page 627, "Spell Attack Roll". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellAttackUntrained, + "SpellAttack.Untrained", + "Character is Untrained in spell attacks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellAttackTrained, + "SpellAttack.Trained", + "Character is Trained in spell attacks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellAttackExpert, + "SpellAttack.Expert", + "Character is Expert in spell attacks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellAttackMaster, + "SpellAttack.Master", + "Character is Master in spell attacks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellAttackLegendary, + "SpellAttack.Legendary", + "Character is Legendary in spell attacks." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellDc.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellDc.cpp new file mode 100644 index 000000000..484ab39da --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellDc.cpp @@ -0,0 +1,47 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/Proficiencies/SpellDc.h" + +// ===================================================================================================================== +// Proficiency Ranks for Spell DC (Difficulty Class) and spellcasting (Spell DC). +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Appendix, page 627, "Spell DC". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellDcUntrained, + "SpellDc.Untrained", + "Character is Untrained in spellcasting." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellDcTrained, + "SpellDc.Trained", + "Character is Trained in spellcasting." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellDcExpert, + "SpellDc.Expert", + "Character is Expert in spellcasting." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellDcMaster, + "SpellDc.Master", + "Character is Master in spellcasting." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellDcLegendary, + "SpellDc.Legendary", + "Character is Legendary in spellcasting." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Weapons.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Weapons.cpp new file mode 100644 index 000000000..e4991564c --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Weapons.cpp @@ -0,0 +1,1431 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/Proficiencies/Weapons.h" + +// ===================================================================================================================== +// Proficiency Ranks for Unarmed Attacks +// ===================================================================================================================== +// Weapon type mentioned in Pathfinder 2E Core Rulebook under: +// - Chapter 3, page 71, "Attacks" for "Alchemist" +// - Chapter 3, page 83, "Attacks" for "Barbarian" +// - Chapter 3, page 95, "Attacks" for "Bard" +// - Chapter 3, page 105, "Attacks" for "Champion" +// - Chapter 3, page 117, "Attacks" for "Cleric" +// - Chapter 3, page 129, "Attacks" for "Druid" +// - Chapter 3, page 141, "Attacks" for "Fighter" +// - Chapter 3, page 155, "Attacks" for "Monk" +// - Chapter 3, page 167, "Attacks" for "Ranger" +// - Chapter 3, page 179, "Attacks" for "Rogue" +// - Chapter 3, page 191, "Attacks" for "Sorcerer" +// - Chapter 3, page 203, "Attacks" for "Wizard" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryUnarmedUntrained, + "WeaponProficiency.Category.Unarmed.Untrained", + "Character is Untrained with Unarmed attacks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryUnarmedTrained, + "WeaponProficiency.Category.Unarmed.Trained", + "Character is Trained with Unarmed attacks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryUnarmedExpert, + "WeaponProficiency.Category.Unarmed.Expert", + "Character is Expert with Unarmed attacks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryUnarmedMaster, + "WeaponProficiency.Category.Unarmed.Master", + "Character is Master with Unarmed attacks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryUnarmedLegendary, + "WeaponProficiency.Category.Unarmed.Legendary", + "Character is Legendary with Unarmed attacks." +) + +// ===================================================================================================================== +// Proficiency Ranks for Simple Weapons +// ===================================================================================================================== +// Weapon type mentioned in Pathfinder 2E Core Rulebook under: +// - Chapter 3, page 71, "Attacks" for "Alchemist" +// - Chapter 3, page 83, "Attacks" for "Barbarian" +// - Chapter 3, page 95, "Attacks" for "Bard" +// - Chapter 3, page 105, "Attacks" for "Champion" +// - Chapter 3, page 117, "Attacks" for "Cleric" +// - Chapter 3, page 129, "Attacks" for "Druid" +// - Chapter 3, page 141, "Attacks" for "Fighter" +// - Chapter 3, page 155, "Attacks" for "Monk" +// - Chapter 3, page 167, "Attacks" for "Ranger" +// - Chapter 3, page 179, "Attacks" for "Rogue" +// - Chapter 3, page 191, "Attacks" for "Sorcerer" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategorySimpleUntrained, + "WeaponProficiency.Category.Simple.Untrained", + "Character is Untrained with Simple weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategorySimpleTrained, + "WeaponProficiency.Category.Simple.Trained", + "Character is Trained with Simple weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategorySimpleExpert, + "WeaponProficiency.Category.Simple.Expert", + "Character is Expert with Simple weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategorySimpleMaster, + "WeaponProficiency.Category.Simple.Master", + "Character is Master with Simple weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategorySimpleLegendary, + "WeaponProficiency.Category.Simple.Legendary", + "Character is Legendary with Simple weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Advanced Weapons +// ===================================================================================================================== +// Weapon type mentioned in Pathfinder 2E Core Rulebook under: +// - Chapter 3, page 141, "Attacks" for "Fighter" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedUntrained, + "WeaponProficiency.Category.Advanced.Untrained", + "Character is Untrained with Advanced weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedTrained, + "WeaponProficiency.Category.Advanced.Trained", + "Character is Trained with Advanced weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedExpert, + "WeaponProficiency.Category.Advanced.Expert", + "Character is Expert with Advanced weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedMaster, + "WeaponProficiency.Category.Advanced.Master", + "Character is Master with Advanced weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedLegendary, + "WeaponProficiency.Category.Advanced.Legendary", + "Character is Legendary with Advanced weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Advanced Dwarf Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity": +// "For the purpose of determining your proficiency, [...] advanced dwarf weapons are martial weapons." +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedDwarfUntrained, + "WeaponProficiency.Category.AdvancedDwarf.Untrained", + "Character is Untrained with Advanced Dwarf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedDwarfTrained, + "WeaponProficiency.Category.AdvancedDwarf.Trained", + "Character is Trained with Advanced Dwarf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedDwarfExpert, + "WeaponProficiency.Category.AdvancedDwarf.Expert", + "Character is Expert with Advanced Dwarf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedDwarfMaster, + "WeaponProficiency.Category.AdvancedDwarf.Master", + "Character is Master with Advanced Dwarf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedDwarfLegendary, + "WeaponProficiency.Category.AdvancedDwarf.Legendary", + "Character is Legendary with Advanced Dwarf weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Advanced Elf Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity": +// "For the purpose of determining your proficiency, [...] advanced elf weapons are martial weapons." +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedElfUntrained, + "WeaponProficiency.Category.AdvancedElf.Untrained", + "Character is Untrained with Advanced Elf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedElfTrained, + "WeaponProficiency.Category.AdvancedElf.Trained", + "Character is Trained with Advanced Elf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedElfExpert, + "WeaponProficiency.Category.AdvancedElf.Expert", + "Character is Expert with Advanced Elf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedElfMaster, + "WeaponProficiency.Category.AdvancedElf.Master", + "Character is Master with Advanced Elf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedElfLegendary, + "WeaponProficiency.Category.AdvancedElf.Legendary", + "Character is Legendary with Advanced Elf weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Advanced Gnome Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity": +// "For the purpose of determining your proficiency, [...] advanced gnome weapons are martial weapons." +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedGnomeUntrained, + "WeaponProficiency.Category.AdvancedGnome.Untrained", + "Character is Untrained with Advanced Gnome weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedGnomeTrained, + "WeaponProficiency.Category.AdvancedGnome.Trained", + "Character is Trained with Advanced Gnome weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedGnomeExpert, + "WeaponProficiency.Category.AdvancedGnome.Expert", + "Character is Expert with Advanced Gnome weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedGnomeMaster, + "WeaponProficiency.Category.AdvancedGnome.Master", + "Character is Master with Advanced Gnome weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedGnomeLegendary, + "WeaponProficiency.Category.AdvancedGnome.Legendary", + "Character is Legendary with Advanced Gnome weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Advanced Goblin Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity": +// "For the purpose of determining your proficiency, [...] advanced goblin weapons are martial weapons." +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedGoblinUntrained, + "WeaponProficiency.Category.AdvancedGoblin.Untrained", + "Character is Untrained with Advanced Goblin weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedGoblinTrained, + "WeaponProficiency.Category.AdvancedGoblin.Trained", + "Character is Trained with Advanced Goblin weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedGoblinExpert, + "WeaponProficiency.Category.AdvancedGoblin.Expert", + "Character is Expert with Advanced Goblin weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedGoblinMaster, + "WeaponProficiency.Category.AdvancedGoblin.Master", + "Character is Master with Advanced Goblin weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedGoblinLegendary, + "WeaponProficiency.Category.AdvancedGoblin.Legendary", + "Character is Legendary with Advanced Goblin weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Advanced Halfling Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity": +// "For the purpose of determining your proficiency, [...] advanced halfling weapons are martial weapons." +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedHalflingUntrained, + "WeaponProficiency.Category.AdvancedHalfling.Untrained", + "Character is Untrained with Advanced Halfling weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedHalflingTrained, + "WeaponProficiency.Category.AdvancedHalfling.Trained", + "Character is Trained with Advanced Halfling weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedHalflingExpert, + "WeaponProficiency.Category.AdvancedHalfling.Expert", + "Character is Expert with Advanced Halfling weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedHalflingMaster, + "WeaponProficiency.Category.AdvancedHalfling.Master", + "Character is Master with Advanced Halfling weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryAdvancedHalflingLegendary, + "WeaponProficiency.Category.AdvancedHalfling.Legendary", + "Character is Legendary with Advanced Halfling weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Martial Weapons +// ===================================================================================================================== +// Weapon type mentioned in Pathfinder 2E Core Rulebook under: +// - Chapter 3, page 83, "Attacks" for "Barbarian" +// - Chapter 3, page 105, "Attacks" for "Champion" +// - Chapter 3, page 141, "Attacks" for "Fighter" +// - Chapter 3, page 167, "Attacks" for "Ranger" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialUntrained, + "WeaponProficiency.Category.Martial.Untrained", + "Character is Untrained with Martial weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialTrained, + "WeaponProficiency.Category.Martial.Trained", + "Character is Trained with Martial weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialExpert, + "WeaponProficiency.Category.Martial.Expert", + "Character is Expert with Martial weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialMaster, + "WeaponProficiency.Category.Martial.Master", + "Character is Master with Martial weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialLegendary, + "WeaponProficiency.Category.Martial.Legendary", + "Character is Legendary with Martial weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Martial Dwarf Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity": +// "For the purpose of determining your proficiency, martial dwarf weapons are simple weapons..." +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialDwarfUntrained, + "WeaponProficiency.Category.MartialDwarf.Untrained", + "Character is Untrained with Martial Dwarf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialDwarfTrained, + "WeaponProficiency.Category.MartialDwarf.Trained", + "Character is Trained with Martial Dwarf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialDwarfExpert, + "WeaponProficiency.Category.MartialDwarf.Expert", + "Character is Expert with Martial Dwarf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialDwarfMaster, + "WeaponProficiency.Category.MartialDwarf.Master", + "Character is Master with Martial Dwarf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialDwarfLegendary, + "WeaponProficiency.Category.MartialDwarf.Legendary", + "Character is Legendary with Martial Dwarf weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Martial Elf Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity": +// "For the purpose of determining your proficiency, martial elf weapons are simple weapons..." +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialElfUntrained, + "WeaponProficiency.Category.MartialElf.Untrained", + "Character is Untrained with Martial Elf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialElfTrained, + "WeaponProficiency.Category.MartialElf.Trained", + "Character is Trained with Martial Elf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialElfExpert, + "WeaponProficiency.Category.MartialElf.Expert", + "Character is Expert with Martial Elf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialElfMaster, + "WeaponProficiency.Category.MartialElf.Master", + "Character is Master with Martial Elf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialElfLegendary, + "WeaponProficiency.Category.MartialElf.Legendary", + "Character is Legendary with Martial Elf weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Martial Gnome Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity": +// "For the purpose of determining your proficiency, martial gnome weapons are simple weapons..." +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialGnomeUntrained, + "WeaponProficiency.Category.MartialGnome.Untrained", + "Character is Untrained with Martial Gnome weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialGnomeTrained, + "WeaponProficiency.Category.MartialGnome.Trained", + "Character is Trained with Martial Gnome weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialGnomeExpert, + "WeaponProficiency.Category.MartialGnome.Expert", + "Character is Expert with Martial Gnome weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialGnomeMaster, + "WeaponProficiency.Category.MartialGnome.Master", + "Character is Master with Martial Gnome weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialGnomeLegendary, + "WeaponProficiency.Category.MartialGnome.Legendary", + "Character is Legendary with Martial Gnome weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Martial Goblin Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity": +// "For the purpose of determining your proficiency, martial goblin weapons are simple weapons..." +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialGoblinUntrained, + "WeaponProficiency.Category.MartialGoblin.Untrained", + "Character is Untrained with Martial Goblin weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialGoblinTrained, + "WeaponProficiency.Category.MartialGoblin.Trained", + "Character is Trained with Martial Goblin weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialGoblinExpert, + "WeaponProficiency.Category.MartialGoblin.Expert", + "Character is Expert with Martial Goblin weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialGoblinMaster, + "WeaponProficiency.Category.MartialGoblin.Master", + "Character is Master with Martial Goblin weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialGoblinLegendary, + "WeaponProficiency.Category.MartialGoblin.Legendary", + "Character is Legendary with Martial Goblin weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Martial Halfling Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity": +// "For the purpose of determining your proficiency, martial halfling weapons are simple weapons..." +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialHalflingUntrained, + "WeaponProficiency.Category.MartialHalfling.Untrained", + "Character is Untrained with Martial Halfling weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialHalflingTrained, + "WeaponProficiency.Category.MartialHalfling.Trained", + "Character is Trained with Martial Halfling weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialHalflingExpert, + "WeaponProficiency.Category.MartialHalfling.Expert", + "Character is Expert with Martial Halfling weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialHalflingMaster, + "WeaponProficiency.Category.MartialHalfling.Master", + "Character is Master with Martial Halfling weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCategoryMartialHalflingLegendary, + "WeaponProficiency.Category.MartialHalfling.Legendary", + "Character is Legendary with Martial Halfling weapons." +) + +// ===================================================================================================================== +// Proficiency Ranks for Alchemical Bombs +// ===================================================================================================================== +// Weapon type mentioned in Pathfinder 2E Core Rulebook under: +// - Chapter 3, page 71, "Attacks" for "Alchemist" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyAlchemicalBombUntrained, + "WeaponProficiency.AlchemicalBomb.Untrained", + "Character is Untrained with Alchemical Bombs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyAlchemicalBombTrained, + "WeaponProficiency.AlchemicalBomb.Trained", + "Character is Trained with Alchemical Bombs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyAlchemicalBombExpert, + "WeaponProficiency.AlchemicalBomb.Expert", + "Character is Expert with Alchemical Bombs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyAlchemicalBombMaster, + "WeaponProficiency.AlchemicalBomb.Master", + "Character is Master with Alchemical Bombs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyAlchemicalBombLegendary, + "WeaponProficiency.AlchemicalBomb.Legendary", + "Character is Legendary with Alchemical Bombs." +) + +// ===================================================================================================================== +// Proficiency Ranks for Battle Axes +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyBattleAxeUntrained, + "WeaponProficiency.BattleAxe.Untrained", + "Character is Untrained with Battle Axes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyBattleAxeTrained, + "WeaponProficiency.BattleAxe.Trained", + "Character is Trained with Battle Axes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyBattleAxeExpert, + "WeaponProficiency.BattleAxe.Expert", + "Character is Expert with Battle Axes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyBattleAxeMaster, + "WeaponProficiency.BattleAxe.Master", + "Character is Master with Battle Axes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyBattleAxeLegendary, + "WeaponProficiency.BattleAxe.Legendary", + "Character is Legendary with Battle Axes." +) + +// ===================================================================================================================== +// Proficiency Ranks for Clubs +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 203, "Attacks" for "Wizard" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyClubUntrained, + "WeaponProficiency.Club.Untrained", + "Character is Untrained with Clubs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyClubTrained, + "WeaponProficiency.Club.Trained", + "Character is Trained with Clubs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyClubExpert, + "WeaponProficiency.Club.Expert", + "Character is Expert with Clubs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyClubMaster, + "WeaponProficiency.Club.Master", + "Character is Master with Clubs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyClubLegendary, + "WeaponProficiency.Club.Legendary", + "Character is Legendary with Clubs." +) + +// ===================================================================================================================== +// Proficiency Ranks for Composite Longbows +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCompositeLongbowUntrained, + "WeaponProficiency.CompositeLongbow.Untrained", + "Character is Untrained with Composite Longbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCompositeLongbowTrained, + "WeaponProficiency.CompositeLongbow.Trained", + "Character is Trained with Composite Longbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCompositeLongbowExpert, + "WeaponProficiency.CompositeLongbow.Expert", + "Character is Expert with Composite Longbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCompositeLongbowMaster, + "WeaponProficiency.CompositeLongbow.Master", + "Character is Master with Composite Longbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCompositeLongbowLegendary, + "WeaponProficiency.CompositeLongbow.Legendary", + "Character is Legendary with Composite Longbows." +) + +// ===================================================================================================================== +// Proficiency Ranks for Composite Shortbows +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCompositeShortbowUntrained, + "WeaponProficiency.CompositeShortbow.Untrained", + "Character is Untrained with Composite Shortbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCompositeShortbowTrained, + "WeaponProficiency.CompositeShortbow.Trained", + "Character is Trained with Composite Shortbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCompositeShortbowExpert, + "WeaponProficiency.CompositeShortbow.Expert", + "Character is Expert with Composite Shortbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCompositeShortbowMaster, + "WeaponProficiency.CompositeShortbow.Master", + "Character is Master with Composite Shortbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCompositeShortbowLegendary, + "WeaponProficiency.CompositeShortbow.Legendary", + "Character is Legendary with Composite Shortbows." +) + +// ===================================================================================================================== +// Proficiency Ranks for Crossbows +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 203, "Attacks" for "Wizard" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCrossbowUntrained, + "WeaponProficiency.Crossbow.Untrained", + "Character is Untrained with Crossbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCrossbowTrained, + "WeaponProficiency.Crossbow.Trained", + "Character is Trained with Crossbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCrossbowExpert, + "WeaponProficiency.Crossbow.Expert", + "Character is Expert with Crossbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCrossbowMaster, + "WeaponProficiency.Crossbow.Master", + "Character is Master with Crossbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyCrossbowLegendary, + "WeaponProficiency.Crossbow.Legendary", + "Character is Legendary with Crossbows." +) + +// ===================================================================================================================== +// Proficiency Ranks for Daggers +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 203, "Attacks" for "Wizard" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyDaggerUntrained, + "WeaponProficiency.Dagger.Untrained", + "Character is Untrained with Daggers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyDaggerTrained, + "WeaponProficiency.Dagger.Trained", + "Character is Trained with Daggers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyDaggerExpert, + "WeaponProficiency.Dagger.Expert", + "Character is Expert with Daggers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyDaggerMaster, + "WeaponProficiency.Dagger.Master", + "Character is Master with Daggers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyDaggerLegendary, + "WeaponProficiency.Dagger.Legendary", + "Character is Legendary with Daggers." +) + +// ===================================================================================================================== +// Proficiency Ranks for Dogslicers +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyDogslicerUntrained, + "WeaponProficiency.Dogslicer.Untrained", + "Character is Untrained with Dogslicers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyDogslicerTrained, + "WeaponProficiency.Dogslicer.Trained", + "Character is Trained with Dogslicers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyDogslicerExpert, + "WeaponProficiency.Dogslicer.Expert", + "Character is Expert with Dogslicers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyDogslicerMaster, + "WeaponProficiency.Dogslicer.Master", + "Character is Master with Dogslicers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyDogslicerLegendary, + "WeaponProficiency.Dogslicer.Legendary", + "Character is Legendary with Dogslicers." +) + +// ===================================================================================================================== +// Proficiency Ranks for Falchions +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 58, "Orc Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyFalchionUntrained, + "WeaponProficiency.Falchion.Untrained", + "Character is Untrained with Falchions." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyFalchionTrained, + "WeaponProficiency.Falchion.Trained", + "Character is Trained with Falchions." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyFalchionExpert, + "WeaponProficiency.Falchion.Expert", + "Character is Expert with Falchions." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyFalchionMaster, + "WeaponProficiency.Falchion.Master", + "Character is Master with Falchions." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyFalchionLegendary, + "WeaponProficiency.Falchion.Legendary", + "Character is Legendary with Falchions." +) + +// ===================================================================================================================== +// Proficiency Ranks for Glaives +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyGlaiveUntrained, + "WeaponProficiency.Glaive.Untrained", + "Character is Untrained with Glaives." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyGlaiveTrained, + "WeaponProficiency.Glaive.Trained", + "Character is Trained with Glaives." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyGlaiveExpert, + "WeaponProficiency.Glaive.Expert", + "Character is Expert with Glaives." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyGlaiveMaster, + "WeaponProficiency.Glaive.Master", + "Character is Master with Glaives." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyGlaiveLegendary, + "WeaponProficiency.Glaive.Legendary", + "Character is Legendary with Glaives." +) + +// ===================================================================================================================== +// Proficiency Ranks for Greataxes +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 58, "Orc Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyGreataxeUntrained, + "WeaponProficiency.Greataxe.Untrained", + "Character is Untrained with Greataxes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyGreataxeTrained, + "WeaponProficiency.Greataxe.Trained", + "Character is Trained with Greataxes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyGreataxeExpert, + "WeaponProficiency.Greataxe.Expert", + "Character is Expert with Greataxes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyGreataxeMaster, + "WeaponProficiency.Greataxe.Master", + "Character is Master with Greataxes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyGreataxeLegendary, + "WeaponProficiency.Greataxe.Legendary", + "Character is Legendary with Greataxes." +) + +// ===================================================================================================================== +// Proficiency Ranks for Halfling Sling Staves +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHalflingSlingStaffUntrained, + "WeaponProficiency.HalflingSlingStaff.Untrained", + "Character is Untrained with Halfling Sling Staves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHalflingSlingStaffTrained, + "WeaponProficiency.HalflingSlingStaff.Trained", + "Character is Trained with Halfling Sling Staves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHalflingSlingStaffExpert, + "WeaponProficiency.HalflingSlingStaff.Expert", + "Character is Expert with Halfling Sling Staves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHalflingSlingStaffMaster, + "WeaponProficiency.HalflingSlingStaff.Master", + "Character is Master with Halfling Sling Staves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHalflingSlingStaffLegendary, + "WeaponProficiency.HalflingSlingStaff.Legendary", + "Character is Legendary with Halfling Sling Staves." +) + +// ===================================================================================================================== +// Proficiency Ranks for Heavy Crossbows +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 203, "Attacks" for "Wizard" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHeavyCrossbowUntrained, + "WeaponProficiency.HeavyCrossbow.Untrained", + "Character is Untrained with Heavy Crossbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHeavyCrossbowTrained, + "WeaponProficiency.HeavyCrossbow.Trained", + "Character is Trained with Heavy Crossbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHeavyCrossbowExpert, + "WeaponProficiency.HeavyCrossbow.Expert", + "Character is Expert with Heavy Crossbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHeavyCrossbowMaster, + "WeaponProficiency.HeavyCrossbow.Master", + "Character is Master with Heavy Crossbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHeavyCrossbowLegendary, + "WeaponProficiency.HeavyCrossbow.Legendary", + "Character is Legendary with Heavy Crossbows." +) + +// ===================================================================================================================== +// Proficiency Ranks for Horsechoppers +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHorsechopperUntrained, + "WeaponProficiency.Horsechopper.Untrained", + "Character is Untrained with Horsechoppers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHorsechopperTrained, + "WeaponProficiency.Horsechopper.Trained", + "Character is Trained with Horsechoppers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHorsechopperExpert, + "WeaponProficiency.Horsechopper.Expert", + "Character is Expert with Horsechoppers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHorsechopperMaster, + "WeaponProficiency.Horsechopper.Master", + "Character is Master with Horsechoppers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyHorsechopperLegendary, + "WeaponProficiency.Horsechopper.Legendary", + "Character is Legendary with Horsechoppers." +) + +// ===================================================================================================================== +// Proficiency Ranks for Kukris +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyKukriUntrained, + "WeaponProficiency.Kukri.Untrained", + "Character is Untrained with Kukris." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyKukriTrained, + "WeaponProficiency.Kukri.Trained", + "Character is Trained with Kukris." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyKukriExpert, + "WeaponProficiency.Kukri.Expert", + "Character is Expert with Kukris." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyKukriMaster, + "WeaponProficiency.Kukri.Master", + "Character is Master with Kukris." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyKukriLegendary, + "WeaponProficiency.Kukri.Legendary", + "Character is Legendary with Kukris." +) + +// ===================================================================================================================== +// Proficiency Ranks for Longbows +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyLongbowUntrained, + "WeaponProficiency.Longbow.Untrained", + "Character is Untrained with Longbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyLongbowTrained, + "WeaponProficiency.Longbow.Trained", + "Character is Trained with Longbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyLongbowExpert, + "WeaponProficiency.Longbow.Expert", + "Character is Expert with Longbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyLongbowMaster, + "WeaponProficiency.Longbow.Master", + "Character is Master with Longbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyLongbowLegendary, + "WeaponProficiency.Longbow.Legendary", + "Character is Legendary with Longbows." +) + +// ===================================================================================================================== +// Proficiency Ranks for Longswords +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 2, page 40, "Elven Weapon Familiarity" +// - Chapter 3, page 95, "Attacks" for "Bard" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyLongswordUntrained, + "WeaponProficiency.Longsword.Untrained", + "Character is Untrained with Longswords." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyLongswordTrained, + "WeaponProficiency.Longsword.Trained", + "Character is Trained with Longswords." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyLongswordExpert, + "WeaponProficiency.Longsword.Expert", + "Character is Expert with Longswords." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyLongswordMaster, + "WeaponProficiency.Longsword.Master", + "Character is Master with Longswords." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyLongswordLegendary, + "WeaponProficiency.Longsword.Legendary", + "Character is Legendary with Longswords." +) + +// ===================================================================================================================== +// Proficiency Ranks for Picks +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyPickUntrained, + "WeaponProficiency.Pick.Untrained", + "Character is Untrained with Picks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyPickTrained, + "WeaponProficiency.Pick.Trained", + "Character is Trained with Picks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyPickExpert, + "WeaponProficiency.Pick.Expert", + "Character is Expert with Picks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyPickMaster, + "WeaponProficiency.Pick.Master", + "Character is Master with Picks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyPickLegendary, + "WeaponProficiency.Pick.Legendary", + "Character is Legendary with Picks." +) + +// ===================================================================================================================== +// Proficiency Ranks for Rapiers +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 2, page 40, "Elven Weapon Familiarity" +// - Chapter 3, page 95, "Attacks" for "Bard" +// - Chapter 3, page 179, "Attacks" for "Rogue" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyRapierUntrained, + "WeaponProficiency.Rapier.Untrained", + "Character is Untrained with Rapiers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyRapierTrained, + "WeaponProficiency.Rapier.Trained", + "Character is Trained with Rapiers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyRapierExpert, + "WeaponProficiency.Rapier.Expert", + "Character is Expert with Rapiers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyRapierMaster, + "WeaponProficiency.Rapier.Master", + "Character is Master with Rapiers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyRapierLegendary, + "WeaponProficiency.Rapier.Legendary", + "Character is Legendary with Rapiers." +) + +// ===================================================================================================================== +// Proficiency Ranks for Saps +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 95, "Attacks" for "Bard" +// - Chapter 3, page 179, "Attacks" for "Rogue" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencySapUntrained, + "WeaponProficiency.Sap.Untrained", + "Character is Untrained with Saps." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencySapTrained, + "WeaponProficiency.Sap.Trained", + "Character is Trained with Saps." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencySapExpert, + "WeaponProficiency.Sap.Expert", + "Character is Expert with Saps." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencySapMaster, + "WeaponProficiency.Sap.Master", + "Character is Master with Saps." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencySapLegendary, + "WeaponProficiency.Sap.Legendary", + "Character is Legendary with Saps." +) + +// ===================================================================================================================== +// Proficiency Ranks for Shortbows +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 2, page 40, "Elven Weapon Familiarity" +// - Chapter 3, page 95, "Attacks" for "Bard" +// - Chapter 3, page 179, "Attacks" for "Rogue" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyShortbowUntrained, + "WeaponProficiency.Shortbow.Untrained", + "Character is Untrained with Shortbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyShortbowTrained, + "WeaponProficiency.Shortbow.Trained", + "Character is Trained with Shortbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyShortbowExpert, + "WeaponProficiency.Shortbow.Expert", + "Character is Expert with Shortbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyShortbowMaster, + "WeaponProficiency.Shortbow.Master", + "Character is Master with Shortbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyShortbowLegendary, + "WeaponProficiency.Shortbow.Legendary", + "Character is Legendary with Shortbows." +) + +// ===================================================================================================================== +// Proficiency Ranks for Shortswords +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 2, page 52, "Halfling Weapon Familiarity" +// - Chapter 3, page 95, "Attacks" for "Bard" +// - Chapter 3, page 179, "Attacks" for "Rogue" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyShortswordUntrained, + "WeaponProficiency.Shortsword.Untrained", + "Character is Untrained with Shortswords." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyShortswordTrained, + "WeaponProficiency.Shortsword.Trained", + "Character is Trained with Shortswords." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyShortswordExpert, + "WeaponProficiency.Shortsword.Expert", + "Character is Expert with Shortswords." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyShortswordMaster, + "WeaponProficiency.Shortsword.Master", + "Character is Master with Shortswords." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyShortswordLegendary, + "WeaponProficiency.Shortsword.Legendary", + "Character is Legendary with Shortswords." +) + +// ===================================================================================================================== +// Proficiency Ranks for Slings +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencySlingUntrained, + "WeaponProficiency.Sling.Untrained", + "Character is Untrained with Slings." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencySlingTrained, + "WeaponProficiency.Sling.Trained", + "Character is Trained with Slings." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencySlingExpert, + "WeaponProficiency.Sling.Expert", + "Character is Expert with Slings." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencySlingMaster, + "WeaponProficiency.Sling.Master", + "Character is Master with Slings." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencySlingLegendary, + "WeaponProficiency.Sling.Legendary", + "Character is Legendary with Slings." +) + +// ===================================================================================================================== +// Proficiency Ranks for Staves +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 203, "Attacks" for "Wizard" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyStaffUntrained, + "WeaponProficiency.Staff.Untrained", + "Character is Untrained with Staves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyStaffTrained, + "WeaponProficiency.Staff.Trained", + "Character is Trained with Staves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyStaffExpert, + "WeaponProficiency.Staff.Expert", + "Character is Expert with Staves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyStaffMaster, + "WeaponProficiency.Staff.Master", + "Character is Master with Staves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyStaffLegendary, + "WeaponProficiency.Staff.Legendary", + "Character is Legendary with Staves." +) + +// ===================================================================================================================== +// Proficiency Ranks for Warhammers +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyWarhammerUntrained, + "WeaponProficiency.Warhammer.Untrained", + "Character is Untrained with Warhammers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyWarhammerTrained, + "WeaponProficiency.Warhammer.Trained", + "Character is Trained with Warhammers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyWarhammerExpert, + "WeaponProficiency.Warhammer.Expert", + "Character is Expert with Warhammers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyWarhammerMaster, + "WeaponProficiency.Warhammer.Master", + "Character is Master with Warhammers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyWarhammerLegendary, + "WeaponProficiency.Warhammer.Legendary", + "Character is Legendary with Warhammers." +) + +// ===================================================================================================================== +// Proficiency Ranks for Whips +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 95, "Attacks" for "Bard" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyWhipUntrained, + "WeaponProficiency.Whip.Untrained", + "Character is Untrained with Whips." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyWhipTrained, + "WeaponProficiency.Whip.Trained", + "Character is Trained with Whips." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyWhipExpert, + "WeaponProficiency.Whip.Expert", + "Character is Expert with Whips." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyWhipMaster, + "WeaponProficiency.Whip.Master", + "Character is Master with Whips." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeaponProficiencyWhipLegendary, + "WeaponProficiency.Whip.Legendary", + "Character is Legendary with Whips." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/SpecialSenses.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/SpecialSenses.cpp new file mode 100644 index 000000000..b91976fca --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/SpecialSenses.cpp @@ -0,0 +1,50 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Stats/SpecialSenses.h" + +// ===================================================================================================================== +// Special Senses +// ===================================================================================================================== +// "[Senses that] grant greater awareness [...] to either ignore or reduce the effects of the undetected, hidden, or +// concealed conditions [...] when it comes to situations that foil average vision." +// +// Source: Pathfinder 2E Core Rulebook, page 465, "Special Senses". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpecialSenseDarkvision, + "SpecialSense.Darkvision", + "A creature with darkvision can see perfectly well in areas of darkness and dim light, though such vision is in black and white only. Some forms of magical darkness, such as a 4th-level darkness spell, block normal darkvision." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpecialSenseGreaterDarkvision, + "SpecialSense.GreaterDarkvision", + "A creature with greater darkvision can see perfectly well in areas of darkness and dim light, though such vision is in black and white only. Some forms of magical darkness, such as a 4th-level darkness spell, block normal darkvision. A creature with greater darkvision, however, can see through even these forms of magical darkness." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpecialSenseLowLightVision, + "SpecialSense.LowLightVision", + "A creature with low-light vision can see in dim light as though it were bright light, so it ignores the concealed condition due to dim light." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpecialSenseScent, + "SpecialSense.Scent", + "Scent involves sensing creatures or objects by smell, and is usually a vague sense. The range is listed in the ability, and it functions only if the creature or object being detected emits an aroma (for instance, incorporeal creatures usually do not exude an aroma)." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpecialSenseTremorsense, + "SpecialSense.Tremorsense", + "Tremorsense allows a creature to feel the vibrations through a solid surface caused by movement. It is usually an imprecise sense with a limited range (listed in the ability). Tremorsense functions only if the detecting creature is on the same surface as the subject, and only if the subject is moving along (or burrowing through) the surface." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Abilities.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Abilities.cpp new file mode 100644 index 000000000..e87a06347 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Abilities.cpp @@ -0,0 +1,113 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Traits/Abilities.h" + +// ===================================================================================================================== +// Ability Traits +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityAlchemist, + "Trait.Ability.Alchemist", + "This indicates abilities from the alchemist class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityAttack, + "Trait.Ability.Attack", + "An ability with this trait involves an attack. For each attack you make beyond the first on your turn, you take a multiple attack penalty." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityBarbarian, + "Trait.Ability.Barbarian", + "This indicates abilities from the barbarian class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityBard, + "Trait.Ability.Bard", + "This indicates abilities from the bard class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityChampion, + "Trait.Ability.Champion", + "This indicates abilities from the champion class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityCleric, + "Trait.Ability.Cleric", + "This indicates abilities from the cleric class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityCommon, + "Trait.Ability.Common", + "Anything that doesn't list another rarity trait (uncommon, rare, or unique) automatically has the common trait. This rarity indicates that an ability is available to all players who meet the prerequisites for it." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityDruid, + "Trait.Ability.Druid", + "This indicates abilities from the druid class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityFighter, + "Trait.Ability.Fighter", + "This indicates abilities from the fighter class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityIncapacitation, + "Trait.Ability.Incapacitation", + "An ability with this trait can take a character completely out of the fight or even kill them, and it's harder to use on a more powerful character." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityMonk, + "Trait.Ability.Monk", + "Abilities with this trait are from the monk class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityRanger, + "Trait.Ability.Ranger", + "This indicates abilities from the ranger class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityRogue, + "Trait.Ability.Rogue", + "This indicates abilities from the rogue class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilitySecret, + "Trait.Ability.Secret", + "The GM rolls the check for this ability in secret." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilitySorcerer, + "Trait.Ability.Sorcerer", + "This indicates abilities from the sorcerer class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilityWizard, + "Trait.Ability.Wizard", + "This indicates abilities from the wizard class." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Actions.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Actions.cpp new file mode 100644 index 000000000..2a8417918 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Actions.cpp @@ -0,0 +1,71 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Traits/Actions.h" + +// ===================================================================================================================== +// Action Traits +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitActionAuditory, + "Trait.Action.Auditory", + "Auditory actions rely on sound. An action with the auditory trait can be successful only if the creature using the action can speak or otherwise produce the required sounds." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitActionConcentrate, + "Trait.Action.Concentrate", + "An action with this trait requires a degree of mental concentration and discipline." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitActionFlourish, + "Trait.Action.Flourish", + "Flourish actions are actions that require too much exertion to perform a large number in a row. You can use only 1 action with the flourish trait per turn." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitActionManipulate, + "Trait.Action.Manipulate", + "You must physically manipulate an item or make gestures to use an action with this trait. Creatures without a suitable appendage can't perform actions with this trait. Manipulate actions often trigger reactions." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitActionMetamagic, + "Trait.Action.Metamagic", + "Actions with the metamagic trait, usually from metamagic feats, tweak the properties of your spells. You must use a metamagic action directly before Casting the Spell you want to alter. If you use any action (including free actions and reactions) other than Cast a Spell directly after, you waste the benefits of the metamagic action. Any additional effects added by a metamagic action are part of the spell's effect, not of the metamagic action itself." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitActionMove, + "Trait.Action.Move", + "An action with this trait involves moving from one space to another." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitActionOpen, + "Trait.Action.Open", + "These maneuvers work only as the first salvo on your turn. You can use an open only if you haven't used an action with the attack or open trait yet this turn." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitActionPress, + "Trait.Action.Press", + "Actions with this trait allow you to follow up earlier attacks. An action with the press trait can be used only if you are currently affected by a multiple attack penalty. Some actions with the press trait also grant an effect on a failure. The effects that are added on a failure don't apply on a critical failure. If your press action succeeds, you can choose to apply the failure effect instead. (For example, you may wish to do this when an attack deals no damage due to resistance.) Because a press action requires a multiple attack penalty, you can't use one when it's not your turn, even if you use the Ready activity." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitActionStance, + "Trait.Action.Stance", + "A stance is a general combat strategy that you enter by using an action with the stance trait, and that you remain in for some time. A stance lasts until you get knocked out, until its requirements (if any) are violated, until the encounter ends, or until you enter a new stance, whichever comes first. After you use an action with the stance trait, you can't use another one for 1 round. You can enter or be in a stance only in encounter mode." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Conditions.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Conditions.cpp new file mode 100644 index 000000000..c3d49cabb --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Conditions.cpp @@ -0,0 +1,365 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Traits/Conditions.h" + +// ===================================================================================================================== +// Condition Traits +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Conditions Appendix, pages 618-623. + +// === Blinded +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionBlinded, + "Trait.Condition.Blinded", + "You can't see. All normal terrain is difficult terrain to you. You can't detect anything using vision. You are immune to visual effects. Blinded overrides dazzled." +) + +// === Broken +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionBroken, + "Trait.Condition.Broken", + "Broken is a condition that affects objects. A broken object can't be used for its normal function, nor does it grant bonuses—with the exception of armor. A broken item still imposes penalties and limitations normally incurred by carrying, holding, or wearing it." +) + +// === Clumsy +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionClumsy, + "Trait.Condition.Clumsy", + "Your movements become clumsy and inexact. Clumsy always includes a value." +) + +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionClumsy1, "Trait.Condition.Clumsy.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionClumsy2, "Trait.Condition.Clumsy.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionClumsy3, "Trait.Condition.Clumsy.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionClumsy4, "Trait.Condition.Clumsy.4") + +// === Concealed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionConcealed, + "Trait.Condition.Concealed", + "While you are concealed from a creature, such as in a thick fog, you are difficult for that creature to see. You can still be observed, but you're tougher to target." +) + +// === Confused +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionConfused, + "Trait.Condition.Confused", + "You don't have your wits about you, and you attack wildly. You are flat-footed, you don't treat anyone as your ally (though they might still treat you as theirs), and you can't Delay, Ready, or use reactions." +) + +// === Controlled +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionControlled, + "Trait.Condition.Controlled", + "Someone else is making your decisions for you, usually because you're being commanded or magically dominated." +) + +// === Dazzled +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionDazzled, + "Trait.Condition.Dazzled", + "Your eyes are overstimulated. If vision is your only precise sense, all creatures and objects are concealed from you." +) + +// === Deafened +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionDeafened, + "Trait.Condition.Deafened", + "You can't hear. You automatically critically fail Perception checks that require you to be able to hear. You are immune to auditory effects." +) + +// === Doomed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionDoomed, + "Trait.Condition.Doomed", + "A powerful force has gripped your soul, calling you closer to death. Doomed always includes a value. When you die, you're no longer doomed." +) + +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDoomed1, "Trait.Condition.Doomed.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDoomed2, "Trait.Condition.Doomed.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDoomed3, "Trait.Condition.Doomed.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDoomed4, "Trait.Condition.Doomed.4") + +// === Drained +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionDrained, + "Trait.Condition.Drained", + "When a creature successfully drains you of blood or life force, you become less healthy. Drained always includes a value." +) + +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDrained1, "Trait.Condition.Drained.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDrained2, "Trait.Condition.Drained.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDrained3, "Trait.Condition.Drained.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDrained4, "Trait.Condition.Drained.4") + +// === Dying +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionDying, + "Trait.Condition.Dying", + "You are bleeding out or otherwise at death's door. While you have this condition, you are unconscious. Dying always includes a value, and if it ever reaches dying 4, you die." +) + +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDying1, "Trait.Condition.Dying.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDying2, "Trait.Condition.Dying.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDying3, "Trait.Condition.Dying.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDying4, "Trait.Condition.Dying.4") + +// === Encumbered +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionEncumbered, + "Trait.Condition.Encumbered", + "You are carrying more weight than you can manage." +) + +// === Enfeebled +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionEnfeebled, + "Trait.Condition.Enfeebled", + "You're physically weakened. Enfeebled always includes a value." +) + +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionEnfeebled1, "Trait.Condition.Enfeebled.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionEnfeebled2, "Trait.Condition.Enfeebled.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionEnfeebled3, "Trait.Condition.Enfeebled.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionEnfeebled4, "Trait.Condition.Enfeebled.4") + +// === Fascinated +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionFascinated, + "Trait.Condition.Fascinated", + "You are compelled to focus your attention on something, distracting you from whatever else is going on around you." +) + +// === Fatigued +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionFatigued, + "Trait.Condition.Fatigued", + "You're tired and can't summon much energy." +) + +// === Flat footed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionFlatFooted, + "Trait.Condition.FlatFooted", + "You're distracted or otherwise unable to focus your full attention on defense." +) + +// === Fleeing +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionFleeing, + "Trait.Condition.Fleeing", + "You're forced to run away due to fear or some other compulsion." +) + +// === Friendly +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionFriendly, + "Trait.Condition.Friendly", + "This condition reflects a creature's disposition toward a particular character. A creature that is friendly to a character likes that character." +) + +// === Frightened +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionFrightened, + "Trait.Condition.Frightened", + "You're gripped by fear and struggle to control your nerves. The frightened condition always includes a value." +) + +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionFrightened1, "Trait.Condition.Frightened.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionFrightened2, "Trait.Condition.Frightened.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionFrightened3, "Trait.Condition.Frightened.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionFrightened4, "Trait.Condition.Frightened.4") + +// === Grabbed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionGrabbed, + "Trait.Condition.Grabbed", + "You're held in place by another creature, giving you the flat-footed and immobilized conditions." +) + +// === Helpful +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionHelpful, + "Trait.Condition.Helpful", + "This condition reflects a creature's disposition toward a particular character. A creature that is helpful to a character wishes to actively aid that character." +) + +// === Hidden +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionHidden, + "Trait.Condition.Hidden", + "While you're hidden from a creature, that creature knows the space you're in but can't tell precisely where you are." +) + +// === Hostile +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionHostile, + "Trait.Condition.Hostile", + "This condition reflects a creature's disposition toward a particular character. A creature that is hostile to a character actively seeks to harm that character." +) + +// === Immobilized +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionImmobilized, + "Trait.Condition.Immobilized", + "You can't use any action with the move trait." +) + +// === Indifferent +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionIndifferent, + "Trait.Condition.Indifferent", + "This condition reflects a creature's disposition toward a particular character. A creature that is indifferent to a character doesn't really care one way or the other about that character." +) + +// === Invisible +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionInvisible, + "Trait.Condition.Invisible", + "While invisible, you can't be seen. You're undetected to everyone." +) + +// === Observed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionObserved, + "Trait.Condition.Observed", + "Anything in plain view is observed by you." +) + +// === Paralyzed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionParalyzed, + "Trait.Condition.Paralyzed", + "You are frozen in place. You have the flat-footed condition and can't act except to Recall Knowledge and use actions that require only your mind. Your senses still function, but only in the areas you can perceive without moving." +) + +// === Petrified +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionPetrified, + "Trait.Condition.Petrified", + "You have been turned to stone. You can't act, nor can you sense anything. While petrified, your mind and body are in stasis, so you don't age or notice the passing of time." +) + +// === Prone +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionProne, + "Trait.Condition.Prone", + "You're lying on the ground. You are flat-footed." +) + +// === Quickened +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionQuickened, + "Trait.Condition.Quickened", + "You gain 1 additional action at the start of your turn each round. Many effects that make you quickened specify the types of actions you can use with this additional action." +) + +// === Restrained +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionRestrained, + "Trait.Condition.Restrained", + "You're tied up and can barely move, or a creature has you pinned. You have the flat-footed and immobilized conditions, and you can't use any actions with the attack or manipulate traits except to attempt to Escape or Force. Open your bonds. Restrained overrides grabbed." +) + +// === Sickened +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionSickened, + "Trait.Condition.Sickened", + "You feel ill. Sickened always includes a value. You can't willingly ingest anything—including elixirs and potions—while sickened." +) + +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSickened1, "Trait.Condition.Sickened.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSickened2, "Trait.Condition.Sickened.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSickened3, "Trait.Condition.Sickened.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSickened4, "Trait.Condition.Sickened.4") + +// === Slowed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionSlowed, + "Trait.Condition.Slowed", + "You have fewer actions. Slowed always includes a value." +) + +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSlowed1, "Trait.Condition.Slowed.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSlowed2, "Trait.Condition.Slowed.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSlowed3, "Trait.Condition.Slowed.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSlowed4, "Trait.Condition.Slowed.4") + +// === Stunned +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionStunned, + "Trait.Condition.Stunned", + "You've become senseless. You can't act while stunned. Stunned usually includes a value. Stunned overrides slowed." +) + +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStunned1, "Trait.Condition.Stunned.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStunned2, "Trait.Condition.Stunned.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStunned3, "Trait.Condition.Stunned.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStunned4, "Trait.Condition.Stunned.4") + +// === Stupefied +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionStupefied, + "Trait.Condition.Stupefied", + "Your thoughts and instincts are clouded. Stupefied always includes a value." +) + +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStupefied1, "Trait.Condition.Stupefied.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStupefied2, "Trait.Condition.Stupefied.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStupefied3, "Trait.Condition.Stupefied.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStupefied4, "Trait.Condition.Stupefied.4") + +// === Unconscious +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionUnconscious, + "Trait.Condition.Unconscious", + "You're sleeping, or you've been knocked out. You can't act." +) + +// === Undetected +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionUndetected, + "Trait.Condition.Undetected", + "When you are undetected by a creature, that creature cannot see you at all, has no idea what space you occupy, and can't target you, though you still can be affected by abilities that target an area." +) + +// === Unfriendly +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionUnfriendly, + "Trait.Condition.Unfriendly", + "This condition reflects a creature's disposition toward a particular character. A creature that is unfriendly to a character dislikes and specifically distrusts that character." +) + +// === Unnoticed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionUnnoticed, + "Trait.Condition.Unnoticed", + "If you are unnoticed by a creature, that creature has no idea you are present at all. When you’re unnoticed, you’re also undetected by the creature." +) + +// === Wounded +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionWounded, + "Trait.Condition.Wounded", + "You have been seriously injured." +) + +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionWounded1, "Trait.Condition.Wounded.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionWounded2, "Trait.Condition.Wounded.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionWounded3, "Trait.Condition.Wounded.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionWounded4, "Trait.Condition.Wounded.4") + +// The following conditions do not appear in the Core Rulebook but were added by OpenPF2. + +// === Dead +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDead, "Trait.Condition.Dead") diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Creatures.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Creatures.cpp new file mode 100644 index 000000000..406285bcb --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Creatures.cpp @@ -0,0 +1,53 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Traits/Creatures.h" + +// ===================================================================================================================== +// Creature Traits +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitCreatureElf, + "Trait.Creature.Elf", + "A creature with this trait is a member of the elf ancestry. Elves are mysterious people with rich traditions of magic and scholarship who typically have low-light vision. An ability with this trait can be used or selected only by elves. A weapon with this trait is created and used by elves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitCreatureHalfElf, + "Trait.Creature.HalfElf", + "A creature with this trait is part human and part elf. An ability with this trait can be used or selected only by half-elves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitCreatureHalfOrc, + "Trait.Creature.HalfOrc", + "A creature with this trait is part human and part orc. An ability with this trait can be used or selected only by half-orcs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitCreatureHuman, + "Trait.Creature.Human", + "A creature with this trait is a member of the human ancestry. Humans are a diverse array of people known for their adaptability. An ability with this trait can be used or selected only by humans." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitCreatureHumanoid, + "Trait.Creature.Humanoid", + "Humanoid creatures reason and act much like humans. They typically stand upright and have two arms and two legs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitCreatureOrc, + "Trait.Creature.Orc", + "A creature with this trait is a member of the orc ancestry. These green-skinned people tend to have darkvision. An ability with this trait can be used or selected only by orcs. An item with this trait is created and used by orcs." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Effects.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Effects.cpp new file mode 100644 index 000000000..ae3d8fce1 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Effects.cpp @@ -0,0 +1,53 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Traits/Effects.h" + +// ===================================================================================================================== +// Effect Traits +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Conditions Appendix, pages 628-638. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitEffectDeath, + "Trait.Effect.Death", + "An effect with the death trait kills you immediately if it reduces you to 0 HP. Some death effects can bring you closer to death or slay you outright without reducing you to 0 HP." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitEffectDisease, + "Trait.Effect.Disease", + "An effect with this trait applies one or more diseases. A disease is typically an affliction." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitEffectLinguistic, + "Trait.Effect.Linguistic", + "An effect with this trait depends on language comprehension. A linguistic effect that targets a creature works only if the target understands the language you are using." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitEffectNonlethal, + "Trait.Effect.Nonlethal", + "An effect with this trait is not inherently deadly. Damage from a nonlethal effect knocks a creature out rather than killing it." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitEffectPoison, + "Trait.Effect.Poison", + "An effect with this trait delivers a poison or deals poison damage. An item with this trait is poisonous and might cause an affliction." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitEffectSonic, + "Trait.Effect.Sonic", + "An effect with the sonic trait functions only if it makes sound, meaning it has no effect in an area of silence or in a vacuum. This is different from an auditory effect, which functions only if the target can hear it. A sonic effect might deal sonic damage." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Weapons.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Weapons.cpp new file mode 100644 index 000000000..4ad431184 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Weapons.cpp @@ -0,0 +1,257 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Traits/Weapons.h" + +// ===================================================================================================================== +// Weapon Traits +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, "Weapon Traits", pages 282-283. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponAgile, + "Trait.Weapon.Agile", + "A weapon with this trait has a different multiple attack penalty. The second attack on a character's turn is –4 instead of –5, and –8 instead of –10 on the third and subsequent attacks in the turn." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponAttachedToShield, + "Trait.Weapon.Attached.ToShield", + "A weapon with this trait must be combined with a shield to be used." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponBackstabber, + "Trait.Weapon.Backstabber", + "A weapon with this trait behaves differently when hitting a flat-footed creature. This weapon deals 1 precision damage in addition to its normal damage. The precision damage increases to 2 if the weapon is a +3 weapon." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponBackswing, + "Trait.Weapon.Backswing", + "A weapon with this trait allows a character to use the momentum from a missed attack to lead into their next attack. After missing with this weapon on their turn, a character gains a +1 circumstance bonus to their next attack with this weapon before the end of their turn." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponDeadlyD6, + "Trait.Weapon.Deadly.D6", + "A weapon with this trait gets a D6 damage die added to critical hits. The die is rolled after doubling the weapon's damage. This increases to two dice if the weapon has a greater striking rune and three dice if the weapon has a major striking rune." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponDeadlyD8, + "Trait.Weapon.Deadly.D8", + "A weapon with this trait gets a D8 damage die added to critical hits. The die is rolled after doubling the weapon's damage. This increases to two dice if the weapon has a greater striking rune and three dice if the weapon has a major striking rune." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponDeadlyD10, + "Trait.Weapon.Deadly.D10", + "A weapon with this trait gets a D10 damage die added to critical hits. The die is rolled after doubling the weapon's damage. This increases to two dice if the weapon has a greater striking rune and three dice if the weapon has a major striking rune." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponDisarm, + "Trait.Weapon.Disarm", + "A weapon with this trait allows a character to Disarm with the Athletics skill even if the character doesn't have a free hand. This uses the weapon's reach (if different from the character's own) and adds the weapon's item bonus to attack rolls (if any) as an item bonus to the Athletics check. If a character critically fails a check to Disarm using the weapon, they can drop the weapon to take the effects of a failure instead of a critical failure. On a critical success, they still need a free hand if they want to take the item." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponDwarf, + "Trait.Weapon.Dwarf", + "A weapon with this trait is crafted and used by Dwarves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponElf, + "Trait.Weapon.Elf", + "A weapon with this trait is crafted and used by Elves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponFatalD8, + "Trait.Weapon.Fatal.D8", + "A weapon with this trait has a D8 damage die on a critical hit instead of the normal die size, along with one additional D8 damage die." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponFatalD10, + "Trait.Weapon.Fatal.D10", + "A weapon with this trait has a D10 damage die on a critical hit instead of the normal die size, along with one additional D10 damage die." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponFatalD12, + "Trait.Weapon.Fatal.D12", + "A weapon with this trait has a D12 damage die on a critical hit instead of the normal die size, along with one additional D12 damage die." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponFinesse, + "Trait.Weapon.Finesse", + "A melee weapon with this trait allows a character to use their Dexterity modifier instead of their Strength modifier on attack rolls. The character still uses their Strength modifier when calculating damage." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponForceful, + "Trait.Weapon.Forceful", + "A weapon with this trait becomes more dangerous as a character builds momentum. When they attack with it more than once on their turn, the second attack gains a circumstance bonus to damage equal to the number of weapon damage dice, and each subsequent attack gains a circumstance bonus to damage equal to double the number of weapon damage dice." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponFreeHand, + "Trait.Weapon.FreeHand", + "A weapon with this trait doesn't take up a character's hand, usually because it is built into the character's armor. A free-hand weapon can't be Disarmed. The character can use the hand covered by the free-hand weapon to wield other items, perform manipulate actions, and so on. They can't attack with a free-hand weapon if they're wielding anything in that hand or otherwise using that hand. When they're not wielding anything and not otherwise using the hand, they can use abilities that require them to have a hand free as well as those that require them to be wielding a weapon in that hand. Each of their hands can have only one free-hand weapon on it." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponGnome, + "Trait.Weapon.Gnome", + "A weapon with this trait is crafted and used by Gnomes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponGoblin, + "Trait.Weapon.Goblin", + "A weapon with this trait is crafted and used by Goblins." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponHalfling, + "Trait.Weapon.Halfling", + "A weapon with this trait is crafted and used by Halflings." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponJoustingD6, + "Trait.Weapon.Jousting.D6", + "A weapon with this trait is suited for mounted combat with a harness or similar means. When mounted, if the character moved at least 3 meters on the action before their attack, add a circumstance bonus to damage for that attack equal to the number of damage dice for the weapon. In addition, while mounted, they can wield the weapon in one hand, changing the damage die to a D6." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponMonk, + "Trait.Weapon.Monk", + "A weapon with this trait monks often learn to use." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponNonlethal, + "Trait.Weapon.Nonlethal", + "A weapon with this trait often has a nonlethal attack, and is used to knock creatures unconscious instead of kill them. A character can use a nonlethal weapon to make a lethal attack with a –2 circumstance penalty." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponOrc, + "Trait.Weapon.Orc", + "A weapon with this trait is crafted and used by Orcs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponParry, + "Trait.Weapon.Parry", + "A weapon with this trait can be used defensively to block attacks. While wielding this weapon, if a character's proficiency with it is trained or better, they can spend a single action to position their weapon defensively, gaining a +1 circumstance bonus to AC until the start of their next turn." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponPropulsive, + "Trait.Weapon.Propulsive", + "A ranged weapon with this trait enables a character to add half their Strength modifier (if positive) to damage rolls. If the character has a negative Strength modifier, they add their full Strength modifier instead." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponReach, + "Trait.Weapon.Reach", + "A weapon with this trait is long and can be used to attack creatures up to 3 meters away instead of only adjacent creatures. For creatures that already have reach with the limb or limbs that wield the weapon, the weapon increases their reach by 1.5 meters." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponShove, + "Trait.Weapon.Shove", + "A weapon with this trait can be used by a character to Shove with the Athletics skill even if they don't have a free hand. This uses the weapon's reach (if different from their own) and adds the weapon's item bonus to attack rolls as an item bonus to the Athletics check. If they critically fail a check to Shove using the weapon, they can drop the weapon to take the effects of a failure instead of a critical failure." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponSweep, + "Trait.Weapon.Sweep", + "A weapon with this trait makes wide sweeping or spinning attacks, making it easier to attack multiple enemies. When a character attacks with this weapon, they gain a +1 circumstance bonus to their attack roll if they already attempted to attack a different target this turn using this weapon." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponThrown3m, + "Trait.Weapon.Thrown.3m", + "A weapon with this trait can be thrown as a ranged attack; it is a ranged weapon when thrown. The character adds their Strength modifier to damage as they would for a melee weapon. When this trait appears on a melee weapon, it uses a range increment of 3 meters. Ranged weapons with this trait use the range increment in the weapon's Range entry." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponThrown6m, + "Trait.Weapon.Thrown.6m", + "A weapon with this trait can be thrown as a ranged attack; it is a ranged weapon when thrown. The character adds their Strength modifier to damage as they would for a melee weapon. When this trait appears on a melee weapon, it uses a range increment of 6 meters. Ranged weapons with this trait use the range increment in the weapon's Range entry." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponTrip, + "Trait.Weapon.Trip", + "A weapon with this trait can be used to Trip with the Athletics skill even if the character doesn't have a free hand. This uses the weapon's reach (if different from their own) and adds the weapon's item bonus to attack rolls as an item bonus to the Athletics check. If they critically fail a check to Trip using the weapon, they can drop the weapon to take the effects of a failure instead of a critical failure." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponTwin, + "Trait.Weapon.Twin", + "Two weapons with this trait are used as a pair, complementing each other. When a character attacks with a twin weapon, they add a circumstance bonus to the damage roll equal to the weapon's number of damage dice if they have previously attacked with a different weapon of the same type this turn. The weapons must be of the same type to benefit from this trait, but they don't need to have the same runes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponTwoHandD8, + "Trait.Weapon.Two-hand.D8", + "A weapon with this trait can be wielded with two hands. Doing so changes its weapon damage die to a D8. This change applies to all the weapon's damage dice, such as those from striking runes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponTwoHandD10, + "Trait.Weapon.Two-hand.D10", + "A weapon with this trait can be wielded with two hands. Doing so changes its weapon damage die to a D10. This change applies to all the weapon's damage dice, such as those from striking runes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponTwoHandD12, + "Trait.Weapon.Two-hand.D12", + "A weapon with this trait can be wielded with two hands. Doing so changes its weapon damage die to a D12. This change applies to all the weapon's damage dice, such as those from striking runes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponUnarmed, + "Trait.Weapon.Unarmed", + "An unarmed attack uses a character's body rather than a manufactured weapon. An unarmed attack isn't a weapon, though it's categorized with weapons for weapon groups, and it might have weapon traits. Since it's part of a character's body, an unarmed attack can't be Disarmed. It also doesn't take up a hand, though a fist or other grasping appendage generally works like a free-hand weapon." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponVersatileBludgeoning, + "Trait.Weapon.Versatile.Bludgeoning", + "A weapon with this trait can be used to deal Bludgeoning (B) damage instead of the type of damage listed in the Damage entry. The character chooses the damage type each time they make an attack." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponVersatilePiercing, + "Trait.Weapon.Versatile.Piercing", + "A weapon with this trait can be used to deal Piercing (P) damage instead of the type of damage listed in the Damage entry. The character chooses the damage type each time they make an attack." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponVersatileSlashing, + "Trait.Weapon.Versatile.Slashing", + "A weapon with this trait can be used to deal Slashing (S) damage instead of the type of damage listed in the Damage entry. The character chooses the damage type each time they make an attack." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeaponVolley9m, + "Trait.Weapon.Volley.9m", + "A ranged weapon with this trait is less effective at close distances. A character's attacks against targets that are at a distance of 9 meters take a –2 penalty." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/WeaponGroups.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/WeaponGroups.cpp new file mode 100644 index 000000000..4aeddc93c --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/WeaponGroups.cpp @@ -0,0 +1,33 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/WeaponGroups.h" + +// ===================================================================================================================== +// Weapon Groups +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, pages 280-282; Tables 6-6, 6-7, and 6-8. +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupAxe, "WeaponGroup.Axe") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupBomb, "WeaponGroup.Bomb") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupBow, "WeaponGroup.Bow") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupBrawling, "WeaponGroup.Brawling") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupClub, "WeaponGroup.Club") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupDart, "WeaponGroup.Dart") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupFlail, "WeaponGroup.Flail") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupHammer, "WeaponGroup.Hammer") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupKnife, "WeaponGroup.Knife") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupPick, "WeaponGroup.Pick") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupPolearm, "WeaponGroup.Polearm") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupShield, "WeaponGroup.Shield") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupSling, "WeaponGroup.Sling") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupSpear, "WeaponGroup.Spear") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupSword, "WeaponGroup.Sword") diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Currencies.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Currencies.h new file mode 100644 index 000000000..0bfac01c7 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Currencies.h @@ -0,0 +1,21 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Default Currency - "Coins" +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Chapter 6, page 271. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyCoins) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/CurrencyUnits.h b/Source/OpenPF2GameFramework/Public/GameplayTags/CurrencyUnits.h new file mode 100644 index 000000000..4a4faa20f --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/CurrencyUnits.h @@ -0,0 +1,24 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Default Currency Units +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Chapter 6, page 271. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoinsCopperPiece) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoinsSilverPiece) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoinsGoldPiece) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoinsPlatinumPiece) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/DamageTypes.h b/Source/OpenPF2GameFramework/Public/GameplayTags/DamageTypes.h new file mode 100644 index 000000000..068c3f4b2 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/DamageTypes.h @@ -0,0 +1,42 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Damage types +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Chapter 9, page 452, "Damage Types". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypePhysical) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypePhysicalBludgeoning) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypePhysicalPiercing) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypePhysicalSlashing) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeEnergy) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeEnergyAcid) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeEnergyCold) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeEnergyElectricity) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeEnergyFire) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeEnergySonic) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeEnergyPositive) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeEnergyNegative) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeEnergyForce) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeAlignment) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeAlignmentChaotic) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeAlignmentEvil) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeAlignmentGood) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeAlignmentLawful) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeMental) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypePoison) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypeBleed) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypePrecision) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/AbilityTriggers.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/AbilityTriggers.h new file mode 100644 index 000000000..7bf171ec2 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/AbilityTriggers.h @@ -0,0 +1,16 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2022-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#pragma once + +#include + +// ===================================================================================================================== +// Tags that trigger Encounter-related Gameplay Abilities. +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncountersEnterEncounter) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncountersStartTurn) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncountersEndTurn) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncountersLeaveEncounter) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/CharacterStates.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/CharacterStates.h new file mode 100644 index 000000000..fbef3a807 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/CharacterStates.h @@ -0,0 +1,15 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2022-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#pragma once + +#include + +// ===================================================================================================================== +// Tags that apply to characters during encounters. +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEncounterCharacterTurnActive) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEncounterCharacterPointsRefreshFrozen) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEncounterCharacterCooldownNextTurn) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/AbilityTypes.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/AbilityTypes.h new file mode 100644 index 000000000..3a468e8ff --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/AbilityTypes.h @@ -0,0 +1,18 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#pragma once + +#include + +// ===================================================================================================================== +// Tags that Identify Gameplay Ability Types +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityTypeAbilityBoost) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityTypeDefaultMovement) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityTypeDefaultFaceTarget) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityTypeQueueableAction) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityTypeDirectlyInvokable) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityTypeBlocksEndOfTurn) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/ActivationMetadata.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/ActivationMetadata.h new file mode 100644 index 000000000..b31a9633c --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/ActivationMetadata.h @@ -0,0 +1,14 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#pragma once + +#include + +// ===================================================================================================================== +// Tags that identify additional metadata that has been passed along for an ability activation. +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityActivationMetadataHasTargetCharacter) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityActivationMetadataHasTargetLocation) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/WaitForEvents.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/WaitForEvents.h new file mode 100644 index 000000000..18548bc19 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/WaitForEvents.h @@ -0,0 +1,16 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#pragma once + +#include + +// ===================================================================================================================== +// Tags that identify events abilities can wait for during their activation. +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityGameplayEventDamageReceived) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityGameplayEventFacingComplete) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityGameplayEventHitPointsChanged) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityGameplayEventMontageWeaponHit) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayCues.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayCues.h new file mode 100644 index 000000000..df1ccaf08 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayCues.h @@ -0,0 +1,13 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2023-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#pragma once + +#include + +// ===================================================================================================================== +// Gameplay Cues that provide special FX and sound FX in response to effect activations. +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayCueCharacterInflictDamage) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/CalculationSources.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/CalculationSources.h new file mode 100644 index 000000000..32c0e9dd5 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/CalculationSources.h @@ -0,0 +1,15 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#pragma once + +#include + +// ===================================================================================================================== +// "Source" Tags passed in from Blueprints to calculate stats. +// +// These should not be used on weapons, characters, or other objects that appear in the world. +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectCalculationSourceInitiative) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/SetByCallerParameters.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/SetByCallerParameters.h new file mode 100644 index 000000000..1c6d4103b --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/SetByCallerParameters.h @@ -0,0 +1,15 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#pragma once + +#include + +// ===================================================================================================================== +// Parameters passed in to "Set by caller" GEs +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectParameterDamage) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectParameterResistance) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectParameterHealing) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/WeightGroups.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/WeightGroups.h new file mode 100644 index 000000000..e0e93a0a7 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/WeightGroups.h @@ -0,0 +1,21 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#pragma once + +#include + +// ===================================================================================================================== +// Weights used to control the order that GEs are applied to an OpenPF2 character. +// +// @todo Deprecate and replace with a simpler system in https://github.com/OpenPF2/Plugin/issues/61. +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectWeightGroup00_InitializeBaseStats) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectWeightGroup05_PostInitializeBaseStats) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectWeightGroup10_ManagedEffects) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectWeightGroup15_PreAbilityBoosts) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectWeightGroup20_AbilityBoosts) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectWeightGroup25_PreFinalizeStats) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectWeightGroup30_FinalizeStats) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureAlignments.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureAlignments.h new file mode 100644 index 000000000..1ceda3294 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureAlignments.h @@ -0,0 +1,34 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Creature Alignment - The indicator of the character's morality and personality. +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, page 29, Table 1-2: The Nine Alignments. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentLawful) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentLawfulGood) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentLawfulNeutral) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentLawfulEvil) + +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentNeutral) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentNeutralGood) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentNeutralNeutral) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentNeutralEvil) + +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentChaotic) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentChaoticGood) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentChaoticNeutral) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentChaoticEvil) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureSizes.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureSizes.h new file mode 100644 index 000000000..9660472a7 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureSizes.h @@ -0,0 +1,26 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Creature Size - The approximate physical amount of space a creature occupies. +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, page 474, Table 9-1: Size and Reach. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureSizeTiny) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureSizeSmall) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureSizeMedium) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureSizeLarge) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureSizeHuge) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureSizeGargantuan) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Equipment.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Equipment.h new file mode 100644 index 000000000..229fe3d60 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Equipment.h @@ -0,0 +1,23 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// The type of armor the character *currently* has equipped. +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorEquippedUnarmored) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorEquippedLight) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorEquippedMedium) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorEquippedHeavy) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/KeyAbilities.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/KeyAbilities.h new file mode 100644 index 000000000..8ff0b75c2 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/KeyAbilities.h @@ -0,0 +1,46 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Key Ability - The most important ability of a particular character/creature. +// ===================================================================================================================== +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 68, "Key Ability". +// - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", pages 72-232 ("Key Ability" sections in each class entry). +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagKeyAbilityStrength) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagKeyAbilityDexterity) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagKeyAbilityConstitution) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagKeyAbilityIntelligence) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagKeyAbilityWisdom) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagKeyAbilityCharisma) + +// ===================================================================================================================== +// Spellcasting Ability - The key ability of a character/creature that can cast spells. +// ===================================================================================================================== +// The classes in the core rulebook don't have any spellcasting abilities other than Wisdom and Charisma, but there's no +// reason to limit game makers to just those options. Plus, add-on material for OpenPF2 could always invent a new class +// that uses something like Intelligence for a character that does complex spellcasting or Dexterity for a character who +// performs physically-dexterous spells. +// +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 68, "Key Ability". +// - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", pages 72-232 ("Key Ability" sections in each class entry). +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellcastingAbilityStrength) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellcastingAbilityDexterity) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellcastingAbilityConstitution) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellcastingAbilityIntelligence) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellcastingAbilityWisdom) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellcastingAbilityCharisma) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Languages.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Languages.h new file mode 100644 index 000000000..e7aceeffa --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Languages.h @@ -0,0 +1,57 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Common Languages - Languages regularly encountered in most places, even among those who aren’t native speakers. +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, page 65, Table 2-1: Common Languages. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonCommon) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonDraconic) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonDwarven) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonElven) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonGnomish) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonGoblin) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonHalfling) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonJotun) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonOrcish) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonSylvan) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonUndercommon) + +// ===================================================================================================================== +// Uncommon Languages - Languages most frequently spoken by native speakers, but also by certain scholars and others +// interested in the associated cultures. +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, page 65, Table 2-2: Uncommon Languages. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonAbyssal) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonAklo) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonAquan) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonAuran) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonCelestial) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonGnoll) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonIgnan) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonInfernal) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonNecril) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonShadowtongue) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonTerran) + +// ===================================================================================================================== +// Secret Languages (e.g., "Druidic") +// +// Druidic is a secret language, and is available only to characters who are druids. In fact, druids are prohibited from +// teaching the language to non-druids. +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, page 65, Table 2-3: Secret Languages. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageSecretDruidic) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Armor.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Armor.h new file mode 100644 index 000000000..0ddfe7faa --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Armor.h @@ -0,0 +1,52 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Proficiency Ranks for Different Classes of Armor (Unarmored, Light, Medium, or Heavy) +// ===================================================================================================================== +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 11, "Playing the Game". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 13, "Proficiency". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 27, "Character Sheet". +// - Pathfinder 2E Core Rulebook, Appendix, page 624, "Armor Class". + +// === Unarmored +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryUnarmoredUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryUnarmoredTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryUnarmoredExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryUnarmoredMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryUnarmoredLegendary) + +// === Light +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryLightUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryLightTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryLightExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryLightMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryLightLegendary) + +// === Medium +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryMediumUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryMediumTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryMediumExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryMediumMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryMediumLegendary) + +// === Heavy +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryHeavyUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryHeavyTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryHeavyExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryHeavyMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryHeavyLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/ClassDc.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/ClassDc.h new file mode 100644 index 000000000..5d49a4276 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/ClassDc.h @@ -0,0 +1,30 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Proficiency Ranks for Class DC (Difficulty Class). +// ===================================================================================================================== +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 11, "Playing the Game". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 13, "Proficiency". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 27, "Character Sheet". +// - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 69, "Initial Proficiencies". +// - Pathfinder 2E Core Rulebook, Appendix, page 624, "Class DC". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagClassDcUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagClassDcTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagClassDcExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagClassDcMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagClassDcLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Perception.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Perception.h new file mode 100644 index 000000000..6cdd6b53d --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Perception.h @@ -0,0 +1,30 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Proficiency Ranks for Perception (how alert they are). +// ===================================================================================================================== +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 11, "Playing the Game". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 13, "Proficiency". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 27, "Character Sheet". +// - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 69, "Initial Proficiencies". +// - Pathfinder 2E Core Rulebook, Appendix, page 624, "Perception". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagPerceptionUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagPerceptionTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagPerceptionExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagPerceptionMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagPerceptionLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SavingThrows.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SavingThrows.h new file mode 100644 index 000000000..62603c3cc --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SavingThrows.h @@ -0,0 +1,44 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Proficiency Ranks for Saving Throws (avoiding danger or otherwise withstanding an assault to mind or body). +// ===================================================================================================================== +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 11, "Playing the Game". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 13, "Saving Throw (Save)" and "Proficiency". +// - Pathfinder 2E Core Rulebook, Appendix, page 624, "Saving Throws". + +// === Fortitude +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowFortitudeUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowFortitudeTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowFortitudeExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowFortitudeMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowFortitudeLegendary) + +// === Reflex +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowReflexUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowReflexTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowReflexExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowReflexMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowReflexLegendary) + +// === Will +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowWillUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowWillTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowWillExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowWillMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowWillLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Skills.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Skills.h new file mode 100644 index 000000000..db2c98160 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Skills.h @@ -0,0 +1,150 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Proficiency Ranks for Skills (training and experience at performing certain tasks). +// ===================================================================================================================== +// Sources: +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 11, "Playing the Game". +// - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 13, "Proficiency". +// - Pathfinder 2E Core Rulebook, Chapter 4: "Skills", pages 233-253. +// - Pathfinder 2E Core Rulebook, Appendix, page 624, "Skills". + +// === Acrobatics +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAcrobaticsUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAcrobaticsTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAcrobaticsExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAcrobaticsMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAcrobaticsLegendary) + +// === Arcana +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillArcanaUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillArcanaTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillArcanaExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillArcanaMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillArcanaLegendary) + +// === Athletics +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAthleticsUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAthleticsTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAthleticsExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAthleticsMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAthleticsLegendary) + +// === Crafting +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillCraftingUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillCraftingTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillCraftingExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillCraftingMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillCraftingLegendary) + +// === Deception +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDeceptionUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDeceptionTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDeceptionExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDeceptionMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDeceptionLegendary) + +// === Diplomacy +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDiplomacyUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDiplomacyTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDiplomacyExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDiplomacyMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDiplomacyLegendary) + +// === Intimidation +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillIntimidationUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillIntimidationTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillIntimidationExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillIntimidationMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillIntimidationLegendary) + +// === Lore1 +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore1Untrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore1Trained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore1Expert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore1Master) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore1Legendary) + +// === Lore2 +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore2Untrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore2Trained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore2Expert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore2Master) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore2Legendary) + +// === Medicine +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillMedicineUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillMedicineTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillMedicineExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillMedicineMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillMedicineLegendary) + +// === Nature +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillNatureUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillNatureTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillNatureExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillNatureMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillNatureLegendary) + +// === Occultism +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillOccultismUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillOccultismTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillOccultismExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillOccultismMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillOccultismLegendary) + +// === Performance +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillPerformanceUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillPerformanceTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillPerformanceExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillPerformanceMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillPerformanceLegendary) + +// === Religion +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillReligionUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillReligionTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillReligionExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillReligionMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillReligionLegendary) + +// === Society +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSocietyUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSocietyTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSocietyExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSocietyMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSocietyLegendary) + +// === Stealth +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillStealthUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillStealthTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillStealthExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillStealthMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillStealthLegendary) + +// === Survival +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSurvivalUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSurvivalTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSurvivalExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSurvivalMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSurvivalLegendary) + +// === Thievery +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillThieveryUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillThieveryTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillThieveryExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillThieveryMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillThieveryLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellAttacks.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellAttacks.h new file mode 100644 index 000000000..7b4ef1d89 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellAttacks.h @@ -0,0 +1,25 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Proficiency Ranks for Spell Attacks (Spell Attack Roll). +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Appendix, page 627, "Spell Attack Roll". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellAttackUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellAttackTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellAttackExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellAttackMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellAttackLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellDc.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellDc.h new file mode 100644 index 000000000..8c099b959 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellDc.h @@ -0,0 +1,25 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Proficiency Ranks for Spell DC (Difficulty Class) and spellcasting (Spell DC). +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Appendix, page 627, "Spell DC". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellDcUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellDcTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellDcExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellDcMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellDcLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Weapons.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Weapons.h new file mode 100644 index 000000000..eb23e5ce2 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Weapons.h @@ -0,0 +1,473 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Proficiency Ranks for Unarmed Attacks +// ===================================================================================================================== +// Weapon type mentioned in Pathfinder 2E Core Rulebook under: +// - Chapter 3, page 71, "Attacks" for "Alchemist" +// - Chapter 3, page 83, "Attacks" for "Barbarian" +// - Chapter 3, page 95, "Attacks" for "Bard" +// - Chapter 3, page 105, "Attacks" for "Champion" +// - Chapter 3, page 117, "Attacks" for "Cleric" +// - Chapter 3, page 129, "Attacks" for "Druid" +// - Chapter 3, page 141, "Attacks" for "Fighter" +// - Chapter 3, page 155, "Attacks" for "Monk" +// - Chapter 3, page 167, "Attacks" for "Ranger" +// - Chapter 3, page 179, "Attacks" for "Rogue" +// - Chapter 3, page 191, "Attacks" for "Sorcerer" +// - Chapter 3, page 203, "Attacks" for "Wizard" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryUnarmedUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryUnarmedTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryUnarmedExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryUnarmedMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryUnarmedLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Simple Weapons +// ===================================================================================================================== +// Weapon type mentioned in Pathfinder 2E Core Rulebook under: +// - Chapter 3, page 71, "Attacks" for "Alchemist" +// - Chapter 3, page 83, "Attacks" for "Barbarian" +// - Chapter 3, page 95, "Attacks" for "Bard" +// - Chapter 3, page 105, "Attacks" for "Champion" +// - Chapter 3, page 117, "Attacks" for "Cleric" +// - Chapter 3, page 129, "Attacks" for "Druid" +// - Chapter 3, page 141, "Attacks" for "Fighter" +// - Chapter 3, page 155, "Attacks" for "Monk" +// - Chapter 3, page 167, "Attacks" for "Ranger" +// - Chapter 3, page 179, "Attacks" for "Rogue" +// - Chapter 3, page 191, "Attacks" for "Sorcerer" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategorySimpleUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategorySimpleTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategorySimpleExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategorySimpleMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategorySimpleLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Advanced Weapons +// ===================================================================================================================== +// Weapon type mentioned in Pathfinder 2E Core Rulebook under: +// - Chapter 3, page 141, "Attacks" for "Fighter" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Advanced Dwarf Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity": +// "For the purpose of determining your proficiency, [...] advanced dwarf weapons are martial weapons." +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedDwarfUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedDwarfTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedDwarfExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedDwarfMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedDwarfLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Advanced Elf Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity": +// "For the purpose of determining your proficiency, [...] advanced elf weapons are martial weapons." +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedElfUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedElfTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedElfExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedElfMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedElfLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Advanced Gnome Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity": +// "For the purpose of determining your proficiency, [...] advanced gnome weapons are martial weapons." +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGnomeUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGnomeTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGnomeExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGnomeMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGnomeLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Advanced Goblin Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity": +// "For the purpose of determining your proficiency, [...] advanced goblin weapons are martial weapons." +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGoblinUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGoblinTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGoblinExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGoblinMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGoblinLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Advanced Halfling Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity": +// "For the purpose of determining your proficiency, [...] advanced halfling weapons are martial weapons." +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedHalflingUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedHalflingTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedHalflingExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedHalflingMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedHalflingLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Martial Weapons +// ===================================================================================================================== +// Weapon type mentioned in Pathfinder 2E Core Rulebook under: +// - Chapter 3, page 83, "Attacks" for "Barbarian" +// - Chapter 3, page 105, "Attacks" for "Champion" +// - Chapter 3, page 141, "Attacks" for "Fighter" +// - Chapter 3, page 167, "Attacks" for "Ranger" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Martial Dwarf Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity": +// "For the purpose of determining your proficiency, martial dwarf weapons are simple weapons..." +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialDwarfUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialDwarfTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialDwarfExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialDwarfMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialDwarfLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Martial Elf Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity": +// "For the purpose of determining your proficiency, martial elf weapons are simple weapons..." +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialElfUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialElfTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialElfExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialElfMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialElfLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Martial Gnome Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity": +// "For the purpose of determining your proficiency, martial gnome weapons are simple weapons..." +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGnomeUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGnomeTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGnomeExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGnomeMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGnomeLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Martial Goblin Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity": +// "For the purpose of determining your proficiency, martial goblin weapons are simple weapons..." +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGoblinUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGoblinTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGoblinExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGoblinMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGoblinLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Martial Halfling Weapons +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity": +// "For the purpose of determining your proficiency, martial halfling weapons are simple weapons..." +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialHalflingUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialHalflingTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialHalflingExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialHalflingMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialHalflingLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Alchemical Bombs +// ===================================================================================================================== +// Weapon type mentioned in Pathfinder 2E Core Rulebook under: +// - Chapter 3, page 71, "Attacks" for "Alchemist" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyAlchemicalBombUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyAlchemicalBombTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyAlchemicalBombExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyAlchemicalBombMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyAlchemicalBombLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Battle Axes +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyBattleAxeUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyBattleAxeTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyBattleAxeExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyBattleAxeMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyBattleAxeLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Clubs +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 203, "Attacks" for "Wizard" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyClubUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyClubTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyClubExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyClubMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyClubLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Composite Longbows +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeLongbowUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeLongbowTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeLongbowExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeLongbowMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeLongbowLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Composite Shortbows +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeShortbowUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeShortbowTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeShortbowExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeShortbowMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeShortbowLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Crossbows +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 203, "Attacks" for "Wizard" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCrossbowUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCrossbowTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCrossbowExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCrossbowMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCrossbowLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Daggers +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 203, "Attacks" for "Wizard" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDaggerUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDaggerTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDaggerExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDaggerMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDaggerLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Dogslicers +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDogslicerUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDogslicerTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDogslicerExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDogslicerMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDogslicerLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Falchions +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 58, "Orc Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyFalchionUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyFalchionTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyFalchionExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyFalchionMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyFalchionLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Glaives +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGlaiveUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGlaiveTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGlaiveExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGlaiveMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGlaiveLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Greataxes +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 58, "Orc Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGreataxeUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGreataxeTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGreataxeExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGreataxeMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGreataxeLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Halfling Sling Staves +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHalflingSlingStaffUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHalflingSlingStaffTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHalflingSlingStaffExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHalflingSlingStaffMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHalflingSlingStaffLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Heavy Crossbows +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 203, "Attacks" for "Wizard" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHeavyCrossbowUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHeavyCrossbowTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHeavyCrossbowExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHeavyCrossbowMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHeavyCrossbowLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Horsechoppers +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHorsechopperUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHorsechopperTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHorsechopperExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHorsechopperMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHorsechopperLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Kukris +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyKukriUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyKukriTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyKukriExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyKukriMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyKukriLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Longbows +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongbowUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongbowTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongbowExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongbowMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongbowLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Longswords +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 2, page 40, "Elven Weapon Familiarity" +// - Chapter 3, page 95, "Attacks" for "Bard" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongswordUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongswordTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongswordExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongswordMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongswordLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Picks +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyPickUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyPickTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyPickExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyPickMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyPickLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Rapiers +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 2, page 40, "Elven Weapon Familiarity" +// - Chapter 3, page 95, "Attacks" for "Bard" +// - Chapter 3, page 179, "Attacks" for "Rogue" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyRapierUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyRapierTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyRapierExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyRapierMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyRapierLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Saps +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 95, "Attacks" for "Bard" +// - Chapter 3, page 179, "Attacks" for "Rogue" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySapUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySapTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySapExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySapMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySapLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Shortbows +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 2, page 40, "Elven Weapon Familiarity" +// - Chapter 3, page 95, "Attacks" for "Bard" +// - Chapter 3, page 179, "Attacks" for "Rogue" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortbowUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortbowTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortbowExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortbowMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortbowLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Shortswords +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 2, page 52, "Halfling Weapon Familiarity" +// - Chapter 3, page 95, "Attacks" for "Bard" +// - Chapter 3, page 179, "Attacks" for "Rogue" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortswordUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortswordTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortswordExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortswordMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortswordLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Slings +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySlingUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySlingTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySlingExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySlingMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySlingLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Staves +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 203, "Attacks" for "Wizard" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyStaffUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyStaffTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyStaffExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyStaffMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyStaffLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Warhammers +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWarhammerUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWarhammerTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWarhammerExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWarhammerMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWarhammerLegendary) + +// ===================================================================================================================== +// Proficiency Ranks for Whips +// ===================================================================================================================== +// Weapon mentioned in Pathfinder 2E Core Rulebook, under: +// - Chapter 3, page 95, "Attacks" for "Bard" +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWhipUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWhipTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWhipExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWhipMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWhipLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/SpecialSenses.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/SpecialSenses.h new file mode 100644 index 000000000..0a091ca07 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/SpecialSenses.h @@ -0,0 +1,28 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Special Senses +// ===================================================================================================================== +// "[Senses that] grant greater awareness [...] to either ignore or reduce the effects of the undetected, hidden, or +// concealed conditions [...] when it comes to situations that foil average vision." +// +// Source: Pathfinder 2E Core Rulebook, page 465, "Special Senses". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpecialSenseDarkvision) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpecialSenseGreaterDarkvision) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpecialSenseLowLightVision) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpecialSenseScent) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpecialSenseTremorsense) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Abilities.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Abilities.h new file mode 100644 index 000000000..db76267b3 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Abilities.h @@ -0,0 +1,36 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Ability Traits +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityAlchemist) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityAttack) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityBarbarian) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityBard) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityChampion) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityCleric) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityCommon) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityDruid) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityFighter) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityIncapacitation) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityMonk) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityRanger) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityRogue) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilitySecret) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilitySorcerer) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityWizard) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Actions.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Actions.h new file mode 100644 index 000000000..08f318600 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Actions.h @@ -0,0 +1,29 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Action Traits +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActionAuditory) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActionConcentrate) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActionFlourish) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActionManipulate) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActionMetamagic) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActionMove) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActionOpen) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActionPress) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActionStance) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Conditions.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Conditions.h new file mode 100644 index 000000000..0173195e0 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Conditions.h @@ -0,0 +1,191 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Condition Traits +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Conditions Appendix, pages 618-623. + +// === Blinded +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionBlinded) + +// === Broken +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionBroken) + +// === Clumsy +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionClumsy) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionClumsy1) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionClumsy2) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionClumsy3) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionClumsy4) + +// === Concealed +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionConcealed) + +// === Confused +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionConfused) + +// === Controlled +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionControlled) + +// === Dazzled +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDazzled) + +// === Deafened +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDeafened) + +// === Doomed +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDoomed) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDoomed1) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDoomed2) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDoomed3) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDoomed4) + +// === Drained +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDrained1) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDrained2) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDrained3) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDrained4) + +// === Dying +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDying) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDying1) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDying2) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDying3) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDying4) + +// === Encumbered +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionEncumbered) + +// === Enfeebled +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionEnfeebled) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionEnfeebled1) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionEnfeebled2) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionEnfeebled3) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionEnfeebled4) + +// === Fascinated +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionFascinated) + +// === Fatigued +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionFatigued) + +// === Flat footed +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionFlatFooted) + +// === Fleeing +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionFleeing) + +// === Friendly +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionFriendly) + +// === Frightened +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionFrightened) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionFrightened1) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionFrightened2) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionFrightened3) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionFrightened4) + +// === Grabbed +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionGrabbed) + +// === Helpful +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionHelpful) + +// === Hidden +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionHidden) + +// === Hostile +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionHostile) + +// === Immobilized +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionImmobilized) + +// === Indifferent +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionIndifferent) + +// === Invisible +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionInvisible) + +// === Observed +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionObserved) + +// === Paralyzed +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionParalyzed) + +// === Petrified +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionPetrified) + +// === Prone +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionProne) + +// === Quickened +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionQuickened) + +// === Restrained +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionRestrained) + +// === Sickened +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionSickened) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionSickened1) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionSickened2) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionSickened3) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionSickened4) + +// === Slowed +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionSlowed) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionSlowed1) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionSlowed2) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionSlowed3) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionSlowed4) + +// === Stunned +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionStunned) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionStunned1) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionStunned2) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionStunned3) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionStunned4) + +// === Stupefied +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionStupefied) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionStupefied1) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionStupefied2) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionStupefied3) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionStupefied4) + +// === Unconscious +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionUnconscious) + +// === Undetected +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionUndetected) + +// === Unfriendly +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionUnfriendly) + +// === Unnoticed +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionUnnoticed) + +// === Wounded +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionWounded) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionWounded1) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionWounded2) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionWounded3) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionWounded4) + +// === OpenPF2 Extensions +// The following conditions do not appear in the Core Rulebook but were added by OpenPF2. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionDead) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Creatures.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Creatures.h new file mode 100644 index 000000000..6eca29924 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Creatures.h @@ -0,0 +1,26 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Creature Traits +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitCreatureElf) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitCreatureHalfElf) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitCreatureHalfOrc) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitCreatureHuman) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitCreatureHumanoid) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitCreatureOrc) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Effects.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Effects.h new file mode 100644 index 000000000..650d84de1 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Effects.h @@ -0,0 +1,26 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Effect Traits +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, Conditions Appendix, pages 628-638. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitEffectDeath) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitEffectDisease) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitEffectLinguistic) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitEffectNonlethal) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitEffectPoison) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitEffectSonic) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Weapons.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Weapons.h new file mode 100644 index 000000000..26eb2c70c --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Weapons.h @@ -0,0 +1,60 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Weapon Traits +// ===================================================================================================================== +// Source: Pathfinder 2E Core Rulebook, "Weapon Traits", pages 282-283. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponAgile) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponAttachedToShield) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponBackstabber) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponBackswing) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponDeadlyD6) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponDeadlyD8) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponDeadlyD10) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponDisarm) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponDwarf) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponElf) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponFatalD8) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponFatalD10) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponFatalD12) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponFinesse) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponForceful) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponFreehand) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponGnome) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponGoblin) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponHalfling) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponJoustingD6) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponMonk) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponNonlethal) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponOrc) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponParry) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponPropulsive) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponReach) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponShove) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponSweep) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponThrown3m) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponThrown6m) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponTrip) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponTwin) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponTwohandD8) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponTwohandD10) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponTwohandD12) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponUnarmed) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponVersatileBludgeoning) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponVersatilePiercing) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponVersatileSlashing) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponVolley9m) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/WeaponGroups.h b/Source/OpenPF2GameFramework/Public/GameplayTags/WeaponGroups.h new file mode 100644 index 000000000..2d4bf16e7 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/WeaponGroups.h @@ -0,0 +1,35 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2021-2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#pragma once + +#include + +// ===================================================================================================================== +// Weapon Groups +// ===================================================================================================================== +// From the Pathfinder 2E Core Rulebook, pages 280-282; Tables 6-6, 6-7, and 6-8. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupAxe) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupBomb) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupBow) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupBrawling) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupClub) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupDart) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupFlail) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupHammer) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupKnife) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupPick) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupPolearm) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupShield) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupSling) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupSpear) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupSword) From 25be08afcabe63c7f736d0dbb2cba77dde5ca61e Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Sat, 6 Jul 2024 01:06:38 -0400 Subject: [PATCH 02/16] [#60] Re-organize Gameplay Tags into Consistent Namespace w/. Descs. This organizes all the OpenPF2-related tags under "PF2" tag categories so that they don't clash with anything in a game that's using OpenPF2. This change also adds descriptions to all tag categories. --- Config/DefaultGameplayTags.ini | 721 +++++++++++ .../Private/GameplayTags/Common.cpp | 53 + .../Private/GameplayTags/Currencies.cpp | 8 +- .../Private/GameplayTags/CurrencyUnits.cpp | 28 +- .../Private/GameplayTags/DamageTypes.cpp | 52 +- .../Encounters/AbilityTriggers.cpp | 25 +- .../Encounters/CharacterStates.cpp | 18 +- .../GameplayAbilities/AbilityTypes.cpp | 28 +- .../GameplayAbilities/ActivationMetadata.cpp | 10 +- .../GameplayAbilities/WaitForEvents.cpp | 24 +- .../Private/GameplayTags/GameplayCues.cpp | 16 +- .../GameplayEffects/CalculationSources.cpp | 10 +- .../GameplayEffects/SetByCallerParameters.cpp | 27 +- .../GameplayEffects/WeightGroups.cpp | 20 +- .../GameplayTags/Stats/CreatureAlignments.cpp | 30 +- .../GameplayTags/Stats/CreatureSizes.cpp | 47 +- .../Private/GameplayTags/Stats/Equipment.cpp | 31 +- .../GameplayTags/Stats/KeyAbilities.cpp | 60 +- .../Private/GameplayTags/Stats/Languages.cpp | 78 +- .../Stats/Proficiencies/Armor.cpp | 115 +- .../Stats/Proficiencies/ClassDc.cpp | 26 +- .../Stats/Proficiencies/Perception.cpp | 26 +- .../Stats/Proficiencies/SavingThrows.cpp | 77 +- .../Stats/Proficiencies/Skills.cpp | 488 +++++--- .../Stats/Proficiencies/SpellAttacks.cpp | 28 +- .../Stats/Proficiencies/SpellDc.cpp | 26 +- .../Stats/Proficiencies/Weapons.cpp | 1055 ++++++++++------- .../GameplayTags/Stats/SpecialSenses.cpp | 16 +- .../Private/GameplayTags/Traits/Abilities.cpp | 40 +- .../Private/GameplayTags/Traits/Actions.cpp | 26 +- .../GameplayTags/Traits/Conditions.cpp | 182 +-- .../Private/GameplayTags/Traits/Creatures.cpp | 20 +- .../Private/GameplayTags/Traits/Effects.cpp | 20 +- .../Private/GameplayTags/Traits/Weapons.cpp | 88 +- .../Private/GameplayTags/WeaponGroups.cpp | 36 +- .../PF2KeyAbilityTemlCalculationBase.h | 2 +- .../Public/GameplayTags/Common.h | 18 + .../Public/GameplayTags/Currencies.h | 1 + .../Public/GameplayTags/CurrencyUnits.h | 10 +- .../Public/GameplayTags/DamageTypes.h | 1 + .../GameplayTags/Encounters/AbilityTriggers.h | 15 +- .../GameplayTags/Encounters/CharacterStates.h | 7 +- .../GameplayAbilities/AbilityTypes.h | 1 + .../GameplayAbilities/ActivationMetadata.h | 1 + .../GameplayAbilities/WaitForEvents.h | 9 +- .../Public/GameplayTags/GameplayCues.h | 2 + .../GameplayEffects/CalculationSources.h | 1 + .../GameplayEffects/SetByCallerParameters.h | 3 +- .../GameplayEffects/WeightGroups.h | 1 + .../GameplayTags/Stats/CreatureAlignments.h | 2 + .../Public/GameplayTags/Stats/CreatureSizes.h | 1 + .../Public/GameplayTags/Stats/Equipment.h | 14 +- .../Public/GameplayTags/Stats/KeyAbilities.h | 2 + .../Public/GameplayTags/Stats/Languages.h | 8 + .../GameplayTags/Stats/Proficiencies/Armor.h | 42 +- .../Stats/Proficiencies/ClassDc.h | 11 +- .../Stats/Proficiencies/Perception.h | 11 +- .../Stats/Proficiencies/SavingThrows.h | 34 +- .../GameplayTags/Stats/Proficiencies/Skills.h | 198 ++-- .../Stats/Proficiencies/SpellAttacks.h | 11 +- .../Stats/Proficiencies/SpellDc.h | 11 +- .../Stats/Proficiencies/Weapons.h | 446 +++---- .../Public/GameplayTags/Stats/SpecialSenses.h | 1 + .../Public/GameplayTags/Traits/Abilities.h | 1 + .../Public/GameplayTags/Traits/Actions.h | 1 + .../Public/GameplayTags/Traits/Conditions.h | 2 + .../Public/GameplayTags/Traits/Creatures.h | 1 + .../Public/GameplayTags/Traits/Effects.h | 1 + .../Public/GameplayTags/Traits/Weapons.h | 1 + .../Public/GameplayTags/WeaponGroups.h | 1 + 70 files changed, 3017 insertions(+), 1410 deletions(-) create mode 100644 Config/DefaultGameplayTags.ini create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/Common.cpp create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/Common.h diff --git a/Config/DefaultGameplayTags.ini b/Config/DefaultGameplayTags.ini new file mode 100644 index 000000000..5a82dcefa --- /dev/null +++ b/Config/DefaultGameplayTags.ini @@ -0,0 +1,721 @@ +[/Script/GameplayTags.GameplayTagsSettings] +ImportTagsFromConfig=True +WarnOnInvalidTags=True +ClearInvalidTags=False +FastReplication=False +InvalidTagCharacters="\"\'," +NumBitsForContainerSize=6 +NetIndexFirstBitSegment=16 ++GameplayTagRedirects=(OldTagName="Armor.Category.Heavy",NewTagName="PF2.Proficiency.Armor.Category.Heavy") ++GameplayTagRedirects=(OldTagName="Armor.Category.Heavy.Expert",NewTagName="PF2.Proficiency.Armor.Category.Heavy.Expert") ++GameplayTagRedirects=(OldTagName="Armor.Category.Heavy.Legendary",NewTagName="PF2.Proficiency.Armor.Category.Heavy.Legendary") ++GameplayTagRedirects=(OldTagName="Armor.Category.Heavy.Master",NewTagName="PF2.Proficiency.Armor.Category.Heavy.Master") ++GameplayTagRedirects=(OldTagName="Armor.Category.Heavy.Trained",NewTagName="PF2.Proficiency.Armor.Category.Heavy.Trained") ++GameplayTagRedirects=(OldTagName="Armor.Category.Heavy.Untrained",NewTagName="PF2.Proficiency.Armor.Category.Heavy.Untrained") ++GameplayTagRedirects=(OldTagName="Armor.Category.Light",NewTagName="PF2.Proficiency.Armor.Category.Light") ++GameplayTagRedirects=(OldTagName="Armor.Category.Light.Expert",NewTagName="PF2.Proficiency.Armor.Category.Light.Expert") ++GameplayTagRedirects=(OldTagName="Armor.Category.Light.Legendary",NewTagName="PF2.Proficiency.Armor.Category.Light.Legendary") ++GameplayTagRedirects=(OldTagName="Armor.Category.Light.Master",NewTagName="PF2.Proficiency.Armor.Category.Light.Master") ++GameplayTagRedirects=(OldTagName="Armor.Category.Light.Trained",NewTagName="PF2.Proficiency.Armor.Category.Light.Trained") ++GameplayTagRedirects=(OldTagName="Armor.Category.Light.Untrained",NewTagName="PF2.Proficiency.Armor.Category.Light.Untrained") ++GameplayTagRedirects=(OldTagName="Armor.Category.Medium",NewTagName="PF2.Proficiency.Armor.Category.Medium") ++GameplayTagRedirects=(OldTagName="Armor.Category.Medium.Expert",NewTagName="PF2.Proficiency.Armor.Category.Medium.Expert") ++GameplayTagRedirects=(OldTagName="Armor.Category.Medium.Legendary",NewTagName="PF2.Proficiency.Armor.Category.Medium.Legendary") ++GameplayTagRedirects=(OldTagName="Armor.Category.Medium.Master",NewTagName="PF2.Proficiency.Armor.Category.Medium.Master") ++GameplayTagRedirects=(OldTagName="Armor.Category.Medium.Trained",NewTagName="PF2.Proficiency.Armor.Category.Medium.Trained") ++GameplayTagRedirects=(OldTagName="Armor.Category.Medium.Untrained",NewTagName="PF2.Proficiency.Armor.Category.Medium.Untrained") ++GameplayTagRedirects=(OldTagName="Armor.Category.Unarmored",NewTagName="PF2.Proficiency.Armor.Category.Unarmored") ++GameplayTagRedirects=(OldTagName="Armor.Category.Unarmored.Expert",NewTagName="PF2.Proficiency.Armor.Category.Unarmored.Expert") ++GameplayTagRedirects=(OldTagName="Armor.Category.Unarmored.Legendary",NewTagName="PF2.Proficiency.Armor.Category.Unarmored.Legendary") ++GameplayTagRedirects=(OldTagName="Armor.Category.Unarmored.Master",NewTagName="PF2.Proficiency.Armor.Category.Unarmored.Master") ++GameplayTagRedirects=(OldTagName="Armor.Category.Unarmored.Trained",NewTagName="PF2.Proficiency.Armor.Category.Unarmored.Trained") ++GameplayTagRedirects=(OldTagName="Armor.Category.Unarmored.Untrained",NewTagName="PF2.Proficiency.Armor.Category.Unarmored.Untrained") ++GameplayTagRedirects=(OldTagName="Armor.Equipped.Heavy",NewTagName="PF2.Equipped.Armor.Heavy") ++GameplayTagRedirects=(OldTagName="Armor.Equipped.Light",NewTagName="PF2.Equipped.Armor.Light") ++GameplayTagRedirects=(OldTagName="Armor.Equipped.Medium",NewTagName="PF2.Equipped.Armor.Medium") ++GameplayTagRedirects=(OldTagName="Armor.Equipped.Unarmored",NewTagName="PF2.Equipped.Armor.Unarmored") ++GameplayTagRedirects=(OldTagName="ClassDc",NewTagName="PF2.Proficiency.ClassDc") ++GameplayTagRedirects=(OldTagName="ClassDc.Expert",NewTagName="PF2.Proficiency.ClassDc.Expert") ++GameplayTagRedirects=(OldTagName="ClassDc.Legendary",NewTagName="PF2.Proficiency.ClassDc.Legendary") ++GameplayTagRedirects=(OldTagName="ClassDc.Master",NewTagName="PF2.Proficiency.ClassDc.Master") ++GameplayTagRedirects=(OldTagName="ClassDc.Trained",NewTagName="PF2.Proficiency.ClassDc.Trained") ++GameplayTagRedirects=(OldTagName="ClassDc.Untrained",NewTagName="PF2.Proficiency.ClassDc.Untrained") ++GameplayTagRedirects=(OldTagName="CreatureAlignment.Chaotic.Evil",NewTagName="PF2.CreatureAlignment.Chaotic.Evil") ++GameplayTagRedirects=(OldTagName="CreatureAlignment.Chaotic.Good",NewTagName="PF2.CreatureAlignment.Chaotic.Good") ++GameplayTagRedirects=(OldTagName="CreatureAlignment.Chaotic.Neutral",NewTagName="PF2.CreatureAlignment.Chaotic.Neutral") ++GameplayTagRedirects=(OldTagName="CreatureAlignment.Lawful.Evil",NewTagName="PF2.CreatureAlignment.Lawful.Evil") ++GameplayTagRedirects=(OldTagName="CreatureAlignment.Lawful.Good",NewTagName="PF2.CreatureAlignment.Lawful.Good") ++GameplayTagRedirects=(OldTagName="CreatureAlignment.Lawful.Neutral",NewTagName="PF2.CreatureAlignment.Lawful.Neutral") ++GameplayTagRedirects=(OldTagName="CreatureAlignment.Neutral.Evil",NewTagName="PF2.CreatureAlignment.Neutral.Evil") ++GameplayTagRedirects=(OldTagName="CreatureAlignment.Neutral.Good",NewTagName="PF2.CreatureAlignment.Neutral.Good") ++GameplayTagRedirects=(OldTagName="CreatureAlignment.Neutral.Neutral",NewTagName="PF2.CreatureAlignment.Neutral.Neutral") ++GameplayTagRedirects=(OldTagName="CreatureSize.Gargantuan",NewTagName="PF2.CreatureSize.Gargantuan") ++GameplayTagRedirects=(OldTagName="CreatureSize.Huge",NewTagName="PF2.CreatureSize.Huge") ++GameplayTagRedirects=(OldTagName="CreatureSize.Large",NewTagName="PF2.CreatureSize.Large") ++GameplayTagRedirects=(OldTagName="CreatureSize.Medium",NewTagName="PF2.CreatureSize.Medium") ++GameplayTagRedirects=(OldTagName="CreatureSize.Small",NewTagName="PF2.CreatureSize.Small") ++GameplayTagRedirects=(OldTagName="CreatureSize.Tiny",NewTagName="PF2.CreatureSize.Tiny") ++GameplayTagRedirects=(OldTagName="Currency.Coins",NewTagName="PF2.Currency.Coins") ++GameplayTagRedirects=(OldTagName="CurrencyUnit.Coins.CopperPiece",NewTagName="PF2.CurrencyUnit.Coins.CopperPiece") ++GameplayTagRedirects=(OldTagName="CurrencyUnit.Coins.GoldPiece",NewTagName="PF2.CurrencyUnit.Coins.GoldPiece") ++GameplayTagRedirects=(OldTagName="CurrencyUnit.Coins.PlatinumPiece",NewTagName="PF2.CurrencyUnit.Coins.PlatinumPiece") ++GameplayTagRedirects=(OldTagName="CurrencyUnit.Coins.SilverPiece",NewTagName="PF2.CurrencyUnit.Coins.SilverPiece") ++GameplayTagRedirects=(OldTagName="DamageType.Alignment",NewTagName="PF2.DamageType.Alignment") ++GameplayTagRedirects=(OldTagName="DamageType.Alignment.Chaotic",NewTagName="PF2.DamageType.Alignment.Chaotic") ++GameplayTagRedirects=(OldTagName="DamageType.Alignment.Evil",NewTagName="PF2.DamageType.Alignment.Evil") ++GameplayTagRedirects=(OldTagName="DamageType.Alignment.Good",NewTagName="PF2.DamageType.Alignment.Good") ++GameplayTagRedirects=(OldTagName="DamageType.Alignment.Lawful",NewTagName="PF2.DamageType.Alignment.Lawful") ++GameplayTagRedirects=(OldTagName="DamageType",NewTagName="PF2.DamageType") ++GameplayTagRedirects=(OldTagName="DamageType.Bleed",NewTagName="PF2.DamageType.Bleed") ++GameplayTagRedirects=(OldTagName="DamageType.Energy",NewTagName="PF2.DamageType.Energy") ++GameplayTagRedirects=(OldTagName="DamageType.Energy.Acid",NewTagName="PF2.DamageType.Energy.Acid") ++GameplayTagRedirects=(OldTagName="DamageType.Energy.Cold",NewTagName="PF2.DamageType.Energy.Cold") ++GameplayTagRedirects=(OldTagName="DamageType.Energy.Electricity",NewTagName="PF2.DamageType.Energy.Electricity") ++GameplayTagRedirects=(OldTagName="DamageType.Energy.Fire",NewTagName="PF2.DamageType.Energy.Fire") ++GameplayTagRedirects=(OldTagName="DamageType.Energy.Force",NewTagName="PF2.DamageType.Energy.Force") ++GameplayTagRedirects=(OldTagName="DamageType.Energy.Negative",NewTagName="PF2.DamageType.Energy.Negative") ++GameplayTagRedirects=(OldTagName="DamageType.Energy.Positive",NewTagName="PF2.DamageType.Energy.Positive") ++GameplayTagRedirects=(OldTagName="DamageType.Energy.Sonic",NewTagName="PF2.DamageType.Energy.Sonic") ++GameplayTagRedirects=(OldTagName="DamageType.Mental",NewTagName="PF2.DamageType.Mental") ++GameplayTagRedirects=(OldTagName="DamageType.Physical",NewTagName="PF2.DamageType.Physical") ++GameplayTagRedirects=(OldTagName="DamageType.Physical.Bludgeoning",NewTagName="PF2.DamageType.Physical.Bludgeoning") ++GameplayTagRedirects=(OldTagName="DamageType.Physical.Piercing",NewTagName="PF2.DamageType.Physical.Piercing") ++GameplayTagRedirects=(OldTagName="DamageType.Physical.Slashing",NewTagName="PF2.DamageType.Physical.Slashing") ++GameplayTagRedirects=(OldTagName="DamageType.Poison",NewTagName="PF2.DamageType.Poison") ++GameplayTagRedirects=(OldTagName="DamageType.Precision",NewTagName="PF2.DamageType.Precision") ++GameplayTagRedirects=(OldTagName="Encounter.Character.Cooldown.NextTurn",NewTagName="PF2.Encounter.CharacterState.Cooldown.NextTurn") ++GameplayTagRedirects=(OldTagName="Encounter.Character.PointsRefreshFrozen",NewTagName="PF2.Encounter.CharacterState.PointsRefreshFrozen") ++GameplayTagRedirects=(OldTagName="Encounter.Character.TurnActive",NewTagName="PF2.Encounter.CharacterState.TurnActive") ++GameplayTagRedirects=(OldTagName="GameplayAbility.Activation.Metadata.HasTarget.Character",NewTagName="PF2.GameplayAbility.ActivationMetadata.HasTarget.Character") ++GameplayTagRedirects=(OldTagName="GameplayAbility.Activation.Metadata.HasTarget.Location",NewTagName="PF2.GameplayAbility.ActivationMetadata.HasTarget.Location") ++GameplayTagRedirects=(OldTagName="GameplayAbility.GameplayEvent.DamageReceived",NewTagName="PF2.GameplayAbility.WaitForEvent.DamageReceived") ++GameplayTagRedirects=(OldTagName="GameplayAbility.GameplayEvent.FacingComplete",NewTagName="PF2.GameplayAbility.WaitForEvent.FacingComplete") ++GameplayTagRedirects=(OldTagName="GameplayAbility.GameplayEvent.HitPointsChanged",NewTagName="PF2.GameplayAbility.WaitForEvent.HitPointsChanged") ++GameplayTagRedirects=(OldTagName="GameplayAbility.GameplayEvent.Montage.WeaponHit",NewTagName="PF2.GameplayAbility.WaitForEvent.Montage.WeaponHit") ++GameplayTagRedirects=(OldTagName="GameplayAbility.GameplayEvent.OrientationComplete",NewTagName="PF2.GameplayAbility.WaitForEvent.FacingComplete") ++GameplayTagRedirects=(OldTagName="GameplayAbility.Type.AbilityBoost",NewTagName="PF2.GameplayAbility.Type.AbilityBoost") ++GameplayTagRedirects=(OldTagName="GameplayAbility.Type.BlocksEndOfTurn",NewTagName="PF2.GameplayAbility.Type.BlocksEndOfTurn") ++GameplayTagRedirects=(OldTagName="GameplayAbility.Type.DefaultFaceTarget",NewTagName="PF2.GameplayAbility.Type.DefaultFaceTarget") ++GameplayTagRedirects=(OldTagName="GameplayAbility.Type.DefaultMovement",NewTagName="PF2.GameplayAbility.Type.DefaultMovement") ++GameplayTagRedirects=(OldTagName="GameplayAbility.Type.DefaultOrient",NewTagName="PF2.GameplayAbility.Type.DefaultFaceTarget") ++GameplayTagRedirects=(OldTagName="GameplayAbility.Type.DirectlyInvokable",NewTagName="PF2.GameplayAbility.Type.DirectlyInvokable") ++GameplayTagRedirects=(OldTagName="GameplayAbility.Type.QueueableAction",NewTagName="PF2.GameplayAbility.Type.QueueableAction") ++GameplayTagRedirects=(OldTagName="GameplayCue.Character.InflictDamage",NewTagName="GameplayCue.PF2.Character.InflictDamage") ++GameplayTagRedirects=(OldTagName="GameplayEffect.CalculationSource.Initiative",NewTagName="PF2.GameplayEffect.CalculationSource.Initiative") ++GameplayTagRedirects=(OldTagName="GameplayEffect.Parameter.Damage",NewTagName="PF2.GameplayEffect.Parameter.Damage") ++GameplayTagRedirects=(OldTagName="GameplayEffect.Parameter.Healing",NewTagName="PF2.GameplayEffect.Parameter.Healing") ++GameplayTagRedirects=(OldTagName="GameplayEffect.Parameter.Resistance",NewTagName="PF2.GameplayEffect.Parameter.Resistance") ++GameplayTagRedirects=(OldTagName="GameplayEffect.WeightGroup.00_InitializeBaseStats",NewTagName="PF2.GameplayEffect.WeightGroup.00_InitializeBaseStats") ++GameplayTagRedirects=(OldTagName="GameplayEffect.WeightGroup.05_PostInitializeBaseStats",NewTagName="PF2.GameplayEffect.WeightGroup.05_PostInitializeBaseStats") ++GameplayTagRedirects=(OldTagName="GameplayEffect.WeightGroup.10_ManagedEffects",NewTagName="PF2.GameplayEffect.WeightGroup.10_ManagedEffects") ++GameplayTagRedirects=(OldTagName="GameplayEffect.WeightGroup.15_PreAbilityBoosts",NewTagName="PF2.GameplayEffect.WeightGroup.15_PreAbilityBoosts") ++GameplayTagRedirects=(OldTagName="GameplayEffect.WeightGroup.20_AbilityBoosts",NewTagName="PF2.GameplayEffect.WeightGroup.20_AbilityBoosts") ++GameplayTagRedirects=(OldTagName="GameplayEffect.WeightGroup.25_PreFinalizeStats",NewTagName="PF2.GameplayEffect.WeightGroup.25_PreFinalizeStats") ++GameplayTagRedirects=(OldTagName="GameplayEffect.WeightGroup.30_FinalizeStats",NewTagName="PF2.GameplayEffect.WeightGroup.30_FinalizeStats") ++GameplayTagRedirects=(OldTagName="KeyAbility.Charisma",NewTagName="PF2.KeyAbility.Charisma") ++GameplayTagRedirects=(OldTagName="KeyAbility.Constitution",NewTagName="PF2.KeyAbility.Constitution") ++GameplayTagRedirects=(OldTagName="KeyAbility.Dexterity",NewTagName="PF2.KeyAbility.Dexterity") ++GameplayTagRedirects=(OldTagName="KeyAbility.Intelligence",NewTagName="PF2.KeyAbility.Intelligence") ++GameplayTagRedirects=(OldTagName="KeyAbility.Strength",NewTagName="PF2.KeyAbility.Strength") ++GameplayTagRedirects=(OldTagName="KeyAbility.Wisdom",NewTagName="PF2.KeyAbility.Wisdom") ++GameplayTagRedirects=(OldTagName="Language.Common",NewTagName="PF2.Language.Common.Common") ++GameplayTagRedirects=(OldTagName="Language.Common.Common",NewTagName="PF2.Language.Common.Common") ++GameplayTagRedirects=(OldTagName="Language.Common.Draconic",NewTagName="PF2.Language.Common.Draconic") ++GameplayTagRedirects=(OldTagName="Language.Common.Dwarven",NewTagName="PF2.Language.Common.Dwarven") ++GameplayTagRedirects=(OldTagName="Language.Common.Elven",NewTagName="PF2.Language.Common.Elven") ++GameplayTagRedirects=(OldTagName="Language.Common.Gnomish",NewTagName="PF2.Language.Common.Gnomish") ++GameplayTagRedirects=(OldTagName="Language.Common.Goblin",NewTagName="PF2.Language.Common.Goblin") ++GameplayTagRedirects=(OldTagName="Language.Common.Halfling",NewTagName="PF2.Language.Common.Halfling") ++GameplayTagRedirects=(OldTagName="Language.Common.Jotun",NewTagName="PF2.Language.Common.Jotun") ++GameplayTagRedirects=(OldTagName="Language.Common.Orcish",NewTagName="PF2.Language.Common.Orcish") ++GameplayTagRedirects=(OldTagName="Language.Common.Sylvan",NewTagName="PF2.Language.Common.Sylvan") ++GameplayTagRedirects=(OldTagName="Language.Common.Undercommon",NewTagName="PF2.Language.Common.Undercommon") ++GameplayTagRedirects=(OldTagName="Language.Secret.Druidic",NewTagName="PF2.Language.Secret.Druidic") ++GameplayTagRedirects=(OldTagName="Language.Uncommon.Abyssal",NewTagName="PF2.Language.Uncommon.Abyssal") ++GameplayTagRedirects=(OldTagName="Language.Uncommon.Aklo",NewTagName="PF2.Language.Uncommon.Aklo") ++GameplayTagRedirects=(OldTagName="Language.Uncommon.Aquan",NewTagName="PF2.Language.Uncommon.Aquan") ++GameplayTagRedirects=(OldTagName="Language.Uncommon.Auran",NewTagName="PF2.Language.Uncommon.Auran") ++GameplayTagRedirects=(OldTagName="Language.Uncommon.Celestial",NewTagName="PF2.Language.Uncommon.Celestial") ++GameplayTagRedirects=(OldTagName="Language.Uncommon.Gnoll",NewTagName="PF2.Language.Uncommon.Gnoll") ++GameplayTagRedirects=(OldTagName="Language.Uncommon.Ignan",NewTagName="PF2.Language.Uncommon.Ignan") ++GameplayTagRedirects=(OldTagName="Language.Uncommon.Infernal",NewTagName="PF2.Language.Uncommon.Infernal") ++GameplayTagRedirects=(OldTagName="Language.Uncommon.Necril",NewTagName="PF2.Language.Uncommon.Necril") ++GameplayTagRedirects=(OldTagName="Language.Uncommon.Shadowtongue",NewTagName="PF2.Language.Uncommon.Shadowtongue") ++GameplayTagRedirects=(OldTagName="Language.Uncommon.Terran",NewTagName="PF2.Language.Uncommon.Terran") ++GameplayTagRedirects=(OldTagName="Perception",NewTagName="PF2.Proficiency.Perception") ++GameplayTagRedirects=(OldTagName="Perception.Expert",NewTagName="PF2.Proficiency.Perception.Expert") ++GameplayTagRedirects=(OldTagName="Perception.Legendary",NewTagName="PF2.Proficiency.Perception.Legendary") ++GameplayTagRedirects=(OldTagName="Perception.Master",NewTagName="PF2.Proficiency.Perception.Master") ++GameplayTagRedirects=(OldTagName="Perception.Trained",NewTagName="PF2.Proficiency.Perception.Trained") ++GameplayTagRedirects=(OldTagName="Perception.Untrained",NewTagName="PF2.Proficiency.Perception.Untrained") ++GameplayTagRedirects=(OldTagName="SavingThrow.Fortitude",NewTagName="PF2.Proficiency.SavingThrow.Fortitude") ++GameplayTagRedirects=(OldTagName="SavingThrow.Fortitude.Expert",NewTagName="PF2.Proficiency.SavingThrow.Fortitude.Expert") ++GameplayTagRedirects=(OldTagName="SavingThrow.Fortitude.Legendary",NewTagName="PF2.Proficiency.SavingThrow.Fortitude.Legendary") ++GameplayTagRedirects=(OldTagName="SavingThrow.Fortitude.Master",NewTagName="PF2.Proficiency.SavingThrow.Fortitude.Master") ++GameplayTagRedirects=(OldTagName="SavingThrow.Fortitude.Trained",NewTagName="PF2.Proficiency.SavingThrow.Fortitude.Trained") ++GameplayTagRedirects=(OldTagName="SavingThrow.Fortitude.Untrained",NewTagName="PF2.Proficiency.SavingThrow.Fortitude.Untrained") ++GameplayTagRedirects=(OldTagName="SavingThrow.Reflex",NewTagName="PF2.Proficiency.SavingThrow.Reflex") ++GameplayTagRedirects=(OldTagName="SavingThrow.Reflex.Expert",NewTagName="PF2.Proficiency.SavingThrow.Reflex.Expert") ++GameplayTagRedirects=(OldTagName="SavingThrow.Reflex.Legendary",NewTagName="PF2.Proficiency.SavingThrow.Reflex.Legendary") ++GameplayTagRedirects=(OldTagName="SavingThrow.Reflex.Master",NewTagName="PF2.Proficiency.SavingThrow.Reflex.Master") ++GameplayTagRedirects=(OldTagName="SavingThrow.Reflex.Trained",NewTagName="PF2.Proficiency.SavingThrow.Reflex.Trained") ++GameplayTagRedirects=(OldTagName="SavingThrow.Reflex.Untrained",NewTagName="PF2.Proficiency.SavingThrow.Reflex.Untrained") ++GameplayTagRedirects=(OldTagName="SavingThrow.Will",NewTagName="PF2.Proficiency.SavingThrow.Will") ++GameplayTagRedirects=(OldTagName="SavingThrow.Will.Expert",NewTagName="PF2.Proficiency.SavingThrow.Will.Expert") ++GameplayTagRedirects=(OldTagName="SavingThrow.Will.Legendary",NewTagName="PF2.Proficiency.SavingThrow.Will.Legendary") ++GameplayTagRedirects=(OldTagName="SavingThrow.Will.Master",NewTagName="PF2.Proficiency.SavingThrow.Will.Master") ++GameplayTagRedirects=(OldTagName="SavingThrow.Will.Trained",NewTagName="PF2.Proficiency.SavingThrow.Will.Trained") ++GameplayTagRedirects=(OldTagName="SavingThrow.Will.Untrained",NewTagName="PF2.Proficiency.SavingThrow.Will.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Acrobatics",NewTagName="PF2.Proficiency.Skill.Acrobatics") ++GameplayTagRedirects=(OldTagName="Skill.Acrobatics.Expert",NewTagName="PF2.Proficiency.Skill.Acrobatics.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Acrobatics.Legendary",NewTagName="PF2.Proficiency.Skill.Acrobatics.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Acrobatics.Master",NewTagName="PF2.Proficiency.Skill.Acrobatics.Master") ++GameplayTagRedirects=(OldTagName="Skill.Acrobatics.Trained",NewTagName="PF2.Proficiency.Skill.Acrobatics.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Acrobatics.Untrained",NewTagName="PF2.Proficiency.Skill.Acrobatics.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Arcana",NewTagName="PF2.Proficiency.Skill.Arcana") ++GameplayTagRedirects=(OldTagName="Skill.Arcana.Expert",NewTagName="PF2.Proficiency.Skill.Arcana.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Arcana.Legendary",NewTagName="PF2.Proficiency.Skill.Arcana.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Arcana.Master",NewTagName="PF2.Proficiency.Skill.Arcana.Master") ++GameplayTagRedirects=(OldTagName="Skill.Arcana.Trained",NewTagName="PF2.Proficiency.Skill.Arcana.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Arcana.Untrained",NewTagName="PF2.Proficiency.Skill.Arcana.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Athletics",NewTagName="PF2.Proficiency.Skill.Athletics") ++GameplayTagRedirects=(OldTagName="Skill.Athletics.Expert",NewTagName="PF2.Proficiency.Skill.Athletics.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Athletics.Legendary",NewTagName="PF2.Proficiency.Skill.Athletics.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Athletics.Master",NewTagName="PF2.Proficiency.Skill.Athletics.Master") ++GameplayTagRedirects=(OldTagName="Skill.Athletics.Trained",NewTagName="PF2.Proficiency.Skill.Athletics.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Athletics.Untrained",NewTagName="PF2.Proficiency.Skill.Athletics.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Crafting",NewTagName="PF2.Proficiency.Skill.Crafting") ++GameplayTagRedirects=(OldTagName="Skill.Crafting.Expert",NewTagName="PF2.Proficiency.Skill.Crafting.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Crafting.Legendary",NewTagName="PF2.Proficiency.Skill.Crafting.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Crafting.Master",NewTagName="PF2.Proficiency.Skill.Crafting.Master") ++GameplayTagRedirects=(OldTagName="Skill.Crafting.Trained",NewTagName="PF2.Proficiency.Skill.Crafting.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Crafting.Untrained",NewTagName="PF2.Proficiency.Skill.Crafting.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Deception",NewTagName="PF2.Proficiency.Skill.Deception") ++GameplayTagRedirects=(OldTagName="Skill.Deception.Expert",NewTagName="PF2.Proficiency.Skill.Deception.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Deception.Legendary",NewTagName="PF2.Proficiency.Skill.Deception.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Deception.Master",NewTagName="PF2.Proficiency.Skill.Deception.Master") ++GameplayTagRedirects=(OldTagName="Skill.Deception.Trained",NewTagName="PF2.Proficiency.Skill.Deception.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Deception.Untrained",NewTagName="PF2.Proficiency.Skill.Deception.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Diplomacy",NewTagName="PF2.Proficiency.Skill.Diplomacy") ++GameplayTagRedirects=(OldTagName="Skill.Diplomacy.Expert",NewTagName="PF2.Proficiency.Skill.Diplomacy.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Diplomacy.Legendary",NewTagName="PF2.Proficiency.Skill.Diplomacy.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Diplomacy.Master",NewTagName="PF2.Proficiency.Skill.Diplomacy.Master") ++GameplayTagRedirects=(OldTagName="Skill.Diplomacy.Trained",NewTagName="PF2.Proficiency.Skill.Diplomacy.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Diplomacy.Untrained",NewTagName="PF2.Proficiency.Skill.Diplomacy.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Intimidation",NewTagName="PF2.Proficiency.Skill.Intimidation") ++GameplayTagRedirects=(OldTagName="Skill.Intimidation.Expert",NewTagName="PF2.Proficiency.Skill.Intimidation.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Intimidation.Legendary",NewTagName="PF2.Proficiency.Skill.Intimidation.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Intimidation.Master",NewTagName="PF2.Proficiency.Skill.Intimidation.Master") ++GameplayTagRedirects=(OldTagName="Skill.Intimidation.Trained",NewTagName="PF2.Proficiency.Skill.Intimidation.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Intimidation.Untrained",NewTagName="PF2.Proficiency.Skill.Intimidation.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Lore1",NewTagName="PF2.Proficiency.Skill.Lore1") ++GameplayTagRedirects=(OldTagName="Skill.Lore1.Expert",NewTagName="PF2.Proficiency.Skill.Lore1.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Lore1.Legendary",NewTagName="PF2.Proficiency.Skill.Lore1.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Lore1.Master",NewTagName="PF2.Proficiency.Skill.Lore1.Master") ++GameplayTagRedirects=(OldTagName="Skill.Lore1.Trained",NewTagName="PF2.Proficiency.Skill.Lore1.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Lore1.Untrained",NewTagName="PF2.Proficiency.Skill.Lore1.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Lore2",NewTagName="PF2.Proficiency.Skill.Lore2") ++GameplayTagRedirects=(OldTagName="Skill.Lore2.Expert",NewTagName="PF2.Proficiency.Skill.Lore2.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Lore2.Legendary",NewTagName="PF2.Proficiency.Skill.Lore2.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Lore2.Master",NewTagName="PF2.Proficiency.Skill.Lore2.Master") ++GameplayTagRedirects=(OldTagName="Skill.Lore2.Trained",NewTagName="PF2.Proficiency.Skill.Lore2.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Lore2.Untrained",NewTagName="PF2.Proficiency.Skill.Lore2.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Medicine",NewTagName="PF2.Proficiency.Skill.Medicine") ++GameplayTagRedirects=(OldTagName="Skill.Medicine.Expert",NewTagName="PF2.Proficiency.Skill.Medicine.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Medicine.Legendary",NewTagName="PF2.Proficiency.Skill.Medicine.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Medicine.Master",NewTagName="PF2.Proficiency.Skill.Medicine.Master") ++GameplayTagRedirects=(OldTagName="Skill.Medicine.Trained",NewTagName="PF2.Proficiency.Skill.Medicine.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Medicine.Untrained",NewTagName="PF2.Proficiency.Skill.Medicine.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Nature",NewTagName="PF2.Proficiency.Skill.Nature") ++GameplayTagRedirects=(OldTagName="Skill.Nature.Expert",NewTagName="PF2.Proficiency.Skill.Nature.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Nature.Legendary",NewTagName="PF2.Proficiency.Skill.Nature.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Nature.Master",NewTagName="PF2.Proficiency.Skill.Nature.Master") ++GameplayTagRedirects=(OldTagName="Skill.Nature.Trained",NewTagName="PF2.Proficiency.Skill.Nature.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Nature.Untrained",NewTagName="PF2.Proficiency.Skill.Nature.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Occultism",NewTagName="PF2.Proficiency.Skill.Occultism") ++GameplayTagRedirects=(OldTagName="Skill.Occultism.Expert",NewTagName="PF2.Proficiency.Skill.Occultism.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Occultism.Legendary",NewTagName="PF2.Proficiency.Skill.Occultism.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Occultism.Master",NewTagName="PF2.Proficiency.Skill.Occultism.Master") ++GameplayTagRedirects=(OldTagName="Skill.Occultism.Trained",NewTagName="PF2.Proficiency.Skill.Occultism.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Occultism.Untrained",NewTagName="PF2.Proficiency.Skill.Occultism.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Performance",NewTagName="PF2.Proficiency.Skill.Performance") ++GameplayTagRedirects=(OldTagName="Skill.Performance.Expert",NewTagName="PF2.Proficiency.Skill.Performance.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Performance.Legendary",NewTagName="PF2.Proficiency.Skill.Performance.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Performance.Master",NewTagName="PF2.Proficiency.Skill.Performance.Master") ++GameplayTagRedirects=(OldTagName="Skill.Performance.Trained",NewTagName="PF2.Proficiency.Skill.Performance.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Performance.Untrained",NewTagName="PF2.Proficiency.Skill.Performance.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Religion",NewTagName="PF2.Proficiency.Skill.Religion") ++GameplayTagRedirects=(OldTagName="Skill.Religion.Expert",NewTagName="PF2.Proficiency.Skill.Religion.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Religion.Legendary",NewTagName="PF2.Proficiency.Skill.Religion.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Religion.Master",NewTagName="PF2.Proficiency.Skill.Religion.Master") ++GameplayTagRedirects=(OldTagName="Skill.Religion.Trained",NewTagName="PF2.Proficiency.Skill.Religion.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Religion.Untrained",NewTagName="PF2.Proficiency.Skill.Religion.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Society",NewTagName="PF2.Proficiency.Skill.Society") ++GameplayTagRedirects=(OldTagName="Skill.Society.Expert",NewTagName="PF2.Proficiency.Skill.Society.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Society.Legendary",NewTagName="PF2.Proficiency.Skill.Society.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Society.Master",NewTagName="PF2.Proficiency.Skill.Society.Master") ++GameplayTagRedirects=(OldTagName="Skill.Society.Trained",NewTagName="PF2.Proficiency.Skill.Society.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Society.Untrained",NewTagName="PF2.Proficiency.Skill.Society.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Stealth",NewTagName="PF2.Proficiency.Skill.Stealth") ++GameplayTagRedirects=(OldTagName="Skill.Stealth.Expert",NewTagName="PF2.Proficiency.Skill.Stealth.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Stealth.Legendary",NewTagName="PF2.Proficiency.Skill.Stealth.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Stealth.Master",NewTagName="PF2.Proficiency.Skill.Stealth.Master") ++GameplayTagRedirects=(OldTagName="Skill.Stealth.Trained",NewTagName="PF2.Proficiency.Skill.Stealth.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Stealth.Untrained",NewTagName="PF2.Proficiency.Skill.Stealth.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Survival",NewTagName="PF2.Proficiency.Skill.Survival") ++GameplayTagRedirects=(OldTagName="Skill.Survival.Expert",NewTagName="PF2.Proficiency.Skill.Survival.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Survival.Legendary",NewTagName="PF2.Proficiency.Skill.Survival.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Survival.Master",NewTagName="PF2.Proficiency.Skill.Survival.Master") ++GameplayTagRedirects=(OldTagName="Skill.Survival.Trained",NewTagName="PF2.Proficiency.Skill.Survival.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Survival.Untrained",NewTagName="PF2.Proficiency.Skill.Survival.Untrained") ++GameplayTagRedirects=(OldTagName="Skill.Thievery",NewTagName="PF2.Proficiency.Skill.Thievery") ++GameplayTagRedirects=(OldTagName="Skill.Thievery.Expert",NewTagName="PF2.Proficiency.Skill.Thievery.Expert") ++GameplayTagRedirects=(OldTagName="Skill.Thievery.Legendary",NewTagName="PF2.Proficiency.Skill.Thievery.Legendary") ++GameplayTagRedirects=(OldTagName="Skill.Thievery.Master",NewTagName="PF2.Proficiency.Skill.Thievery.Master") ++GameplayTagRedirects=(OldTagName="Skill.Thievery.Trained",NewTagName="PF2.Proficiency.Skill.Thievery.Trained") ++GameplayTagRedirects=(OldTagName="Skill.Thievery.Untrained",NewTagName="PF2.Proficiency.Skill.Thievery.Untrained") ++GameplayTagRedirects=(OldTagName="SpecialSense.Darkvision",NewTagName="PF2.SpecialSense.Darkvision") ++GameplayTagRedirects=(OldTagName="SpecialSense.GreaterDarkvision",NewTagName="PF2.SpecialSense.GreaterDarkvision") ++GameplayTagRedirects=(OldTagName="SpecialSense.LowLightVision",NewTagName="PF2.SpecialSense.LowLightVision") ++GameplayTagRedirects=(OldTagName="SpecialSense.Scent",NewTagName="PF2.SpecialSense.Scent") ++GameplayTagRedirects=(OldTagName="SpecialSense.Tremorsense",NewTagName="PF2.SpecialSense.Tremorsense") ++GameplayTagRedirects=(OldTagName="SpellAttack",NewTagName="PF2.Proficiency.SpellAttack") ++GameplayTagRedirects=(OldTagName="SpellAttack.Expert",NewTagName="PF2.Proficiency.SpellAttack.Expert") ++GameplayTagRedirects=(OldTagName="SpellAttack.Legendary",NewTagName="PF2.Proficiency.SpellAttack.Legendary") ++GameplayTagRedirects=(OldTagName="SpellAttack.Master",NewTagName="PF2.Proficiency.SpellAttack.Master") ++GameplayTagRedirects=(OldTagName="SpellAttack.Trained",NewTagName="PF2.Proficiency.SpellAttack.Trained") ++GameplayTagRedirects=(OldTagName="SpellAttack.Untrained",NewTagName="PF2.Proficiency.SpellAttack.Untrained") ++GameplayTagRedirects=(OldTagName="SpellDc",NewTagName="PF2.Proficiency.SpellDc") ++GameplayTagRedirects=(OldTagName="SpellDc.Expert",NewTagName="PF2.Proficiency.SpellDc.Expert") ++GameplayTagRedirects=(OldTagName="SpellDc.Legendary",NewTagName="PF2.Proficiency.SpellDc.Legendary") ++GameplayTagRedirects=(OldTagName="SpellDc.Master",NewTagName="PF2.Proficiency.SpellDc.Master") ++GameplayTagRedirects=(OldTagName="SpellDc.Trained",NewTagName="PF2.Proficiency.SpellDc.Trained") ++GameplayTagRedirects=(OldTagName="SpellDc.Untrained",NewTagName="PF2.Proficiency.SpellDc.Untrained") ++GameplayTagRedirects=(OldTagName="SpellcastingAbility",NewTagName="PF2.SpellcastingAbility") ++GameplayTagRedirects=(OldTagName="SpellcastingAbility.Charisma",NewTagName="PF2.SpellcastingAbility.Charisma") ++GameplayTagRedirects=(OldTagName="SpellcastingAbility.Constitution",NewTagName="PF2.SpellcastingAbility.Constitution") ++GameplayTagRedirects=(OldTagName="SpellcastingAbility.Dexterity",NewTagName="PF2.SpellcastingAbility.Dexterity") ++GameplayTagRedirects=(OldTagName="SpellcastingAbility.Intelligence",NewTagName="PF2.SpellcastingAbility.Intelligence") ++GameplayTagRedirects=(OldTagName="SpellcastingAbility.Strength",NewTagName="PF2.SpellcastingAbility.Strength") ++GameplayTagRedirects=(OldTagName="SpellcastingAbility.Wisdom",NewTagName="PF2.SpellcastingAbility.Wisdom") ++GameplayTagRedirects=(OldTagName="Trait.Ability",NewTagName="PF2.Trait.Ability") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Alchemist",NewTagName="PF2.Trait.Ability.Alchemist") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Attack",NewTagName="PF2.Trait.Ability.Attack") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Barbarian",NewTagName="PF2.Trait.Ability.Barbarian") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Bard",NewTagName="PF2.Trait.Ability.Bard") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Champion",NewTagName="PF2.Trait.Ability.Champion") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Cleric",NewTagName="PF2.Trait.Ability.Cleric") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Common",NewTagName="PF2.Trait.Ability.Common") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Druid",NewTagName="PF2.Trait.Ability.Druid") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Fighter",NewTagName="PF2.Trait.Ability.Fighter") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Incapacitation",NewTagName="PF2.Trait.Ability.Incapacitation") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Monk",NewTagName="PF2.Trait.Ability.Monk") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Ranger",NewTagName="PF2.Trait.Ability.Ranger") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Rogue",NewTagName="PF2.Trait.Ability.Rogue") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Secret",NewTagName="PF2.Trait.Ability.Secret") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Sorcerer",NewTagName="PF2.Trait.Ability.Sorcerer") ++GameplayTagRedirects=(OldTagName="Trait.Ability.Wizard",NewTagName="PF2.Trait.Ability.Wizard") ++GameplayTagRedirects=(OldTagName="Trait.Action",NewTagName="PF2.Trait.Action") ++GameplayTagRedirects=(OldTagName="Trait.Action.Auditory",NewTagName="PF2.Trait.Action.Auditory") ++GameplayTagRedirects=(OldTagName="Trait.Action.Concentrate",NewTagName="PF2.Trait.Action.Concentrate") ++GameplayTagRedirects=(OldTagName="Trait.Action.Flourish",NewTagName="PF2.Trait.Action.Flourish") ++GameplayTagRedirects=(OldTagName="Trait.Action.Manipulate",NewTagName="PF2.Trait.Action.Manipulate") ++GameplayTagRedirects=(OldTagName="Trait.Action.Metamagic",NewTagName="PF2.Trait.Action.Metamagic") ++GameplayTagRedirects=(OldTagName="Trait.Action.Move",NewTagName="PF2.Trait.Action.Move") ++GameplayTagRedirects=(OldTagName="Trait.Action.Open",NewTagName="PF2.Trait.Action.Open") ++GameplayTagRedirects=(OldTagName="Trait.Action.Press",NewTagName="PF2.Trait.Action.Press") ++GameplayTagRedirects=(OldTagName="Trait.Action.Stance",NewTagName="PF2.Trait.Action.Stance") ++GameplayTagRedirects=(OldTagName="Trait.Condition",NewTagName="PF2.Trait.Condition") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Blinded",NewTagName="PF2.Trait.Condition.Blinded") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Broken",NewTagName="PF2.Trait.Condition.Broken") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Clumsy",NewTagName="PF2.Trait.Condition.Clumsy") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Clumsy.1",NewTagName="PF2.Trait.Condition.Clumsy.1") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Clumsy.2",NewTagName="PF2.Trait.Condition.Clumsy.2") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Clumsy.3",NewTagName="PF2.Trait.Condition.Clumsy.3") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Clumsy.4",NewTagName="PF2.Trait.Condition.Clumsy.4") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Concealed",NewTagName="PF2.Trait.Condition.Concealed") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Confused",NewTagName="PF2.Trait.Condition.Confused") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Controlled",NewTagName="PF2.Trait.Condition.Controlled") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Dazzled",NewTagName="PF2.Trait.Condition.Dazzled") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Dead",NewTagName="PF2.Trait.Condition.Dead") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Deafened",NewTagName="PF2.Trait.Condition.Deafened") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Doomed",NewTagName="PF2.Trait.Condition.Doomed") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Doomed.1",NewTagName="PF2.Trait.Condition.Doomed.1") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Doomed.2",NewTagName="PF2.Trait.Condition.Doomed.2") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Doomed.3",NewTagName="PF2.Trait.Condition.Doomed.3") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Doomed.4",NewTagName="PF2.Trait.Condition.Doomed.4") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Drained",NewTagName="PF2.Trait.Condition.Drained") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Drained.1",NewTagName="PF2.Trait.Condition.Drained.1") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Drained.2",NewTagName="PF2.Trait.Condition.Drained.2") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Drained.3",NewTagName="PF2.Trait.Condition.Drained.3") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Drained.4",NewTagName="PF2.Trait.Condition.Drained.4") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Dying",NewTagName="PF2.Trait.Condition.Dying") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Dying.1",NewTagName="PF2.Trait.Condition.Dying.1") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Dying.2",NewTagName="PF2.Trait.Condition.Dying.2") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Dying.3",NewTagName="PF2.Trait.Condition.Dying.3") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Dying.4",NewTagName="PF2.Trait.Condition.Dying.4") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Encumbered",NewTagName="PF2.Trait.Condition.Encumbered") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Enfeebled",NewTagName="PF2.Trait.Condition.Enfeebled") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Enfeebled.1",NewTagName="PF2.Trait.Condition.Enfeebled.1") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Enfeebled.2",NewTagName="PF2.Trait.Condition.Enfeebled.2") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Enfeebled.3",NewTagName="PF2.Trait.Condition.Enfeebled.3") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Enfeebled.4",NewTagName="PF2.Trait.Condition.Enfeebled.4") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Fascinated",NewTagName="PF2.Trait.Condition.Fascinated") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Fatigued",NewTagName="PF2.Trait.Condition.Fatigued") ++GameplayTagRedirects=(OldTagName="Trait.Condition.FlatFooted",NewTagName="PF2.Trait.Condition.FlatFooted") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Fleeing",NewTagName="PF2.Trait.Condition.Fleeing") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Friendly",NewTagName="PF2.Trait.Condition.Friendly") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Frightened",NewTagName="PF2.Trait.Condition.Frightened") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Frightened.1",NewTagName="PF2.Trait.Condition.Frightened.1") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Frightened.2",NewTagName="PF2.Trait.Condition.Frightened.2") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Frightened.3",NewTagName="PF2.Trait.Condition.Frightened.3") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Frightened.4",NewTagName="PF2.Trait.Condition.Frightened.4") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Grabbed",NewTagName="PF2.Trait.Condition.Grabbed") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Helpful",NewTagName="PF2.Trait.Condition.Helpful") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Hidden",NewTagName="PF2.Trait.Condition.Hidden") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Hostile",NewTagName="PF2.Trait.Condition.Hostile") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Immobilized",NewTagName="PF2.Trait.Condition.Immobilized") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Indifferent",NewTagName="PF2.Trait.Condition.Indifferent") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Invisible",NewTagName="PF2.Trait.Condition.Invisible") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Observed",NewTagName="PF2.Trait.Condition.Observed") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Paralyzed",NewTagName="PF2.Trait.Condition.Paralyzed") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Petrified",NewTagName="PF2.Trait.Condition.Petrified") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Prone",NewTagName="PF2.Trait.Condition.Prone") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Quickened",NewTagName="PF2.Trait.Condition.Quickened") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Restrained",NewTagName="PF2.Trait.Condition.Restrained") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Sickened",NewTagName="PF2.Trait.Condition.Sickened") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Slowed",NewTagName="PF2.Trait.Condition.Slowed") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Slowed.1",NewTagName="PF2.Trait.Condition.Slowed.1") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Slowed.2",NewTagName="PF2.Trait.Condition.Slowed.2") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Slowed.3",NewTagName="PF2.Trait.Condition.Slowed.3") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Slowed.4",NewTagName="PF2.Trait.Condition.Slowed.4") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Stunned",NewTagName="PF2.Trait.Condition.Stunned") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Stunned.1",NewTagName="PF2.Trait.Condition.Stunned.1") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Stunned.2",NewTagName="PF2.Trait.Condition.Stunned.2") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Stunned.3",NewTagName="PF2.Trait.Condition.Stunned.3") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Stunned.4",NewTagName="PF2.Trait.Condition.Stunned.4") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Stupefied",NewTagName="PF2.Trait.Condition.Stupefied") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Stupefied.1",NewTagName="PF2.Trait.Condition.Stupefied.1") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Stupefied.2",NewTagName="PF2.Trait.Condition.Stupefied.2") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Stupefied.3",NewTagName="PF2.Trait.Condition.Stupefied.3") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Stupefied.4",NewTagName="PF2.Trait.Condition.Stupefied.4") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Unconscious",NewTagName="PF2.Trait.Condition.Unconscious") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Undetected",NewTagName="PF2.Trait.Condition.Undetected") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Unfriendly",NewTagName="PF2.Trait.Condition.Unfriendly") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Unnoticed",NewTagName="PF2.Trait.Condition.Unnoticed") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Wounded",NewTagName="PF2.Trait.Condition.Wounded") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Wounded.1",NewTagName="PF2.Trait.Condition.Wounded.1") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Wounded.2",NewTagName="PF2.Trait.Condition.Wounded.2") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Wounded.3",NewTagName="PF2.Trait.Condition.Wounded.3") ++GameplayTagRedirects=(OldTagName="Trait.Condition.Wounded.4",NewTagName="PF2.Trait.Condition.Wounded.4") ++GameplayTagRedirects=(OldTagName="Trait.Creature.Elf",NewTagName="PF2.Trait.Creature.Elf") ++GameplayTagRedirects=(OldTagName="Trait.Creature.HalfElf",NewTagName="PF2.Trait.Creature.HalfElf") ++GameplayTagRedirects=(OldTagName="Trait.Creature.HalfOrc",NewTagName="PF2.Trait.Creature.HalfOrc") ++GameplayTagRedirects=(OldTagName="Trait.Creature.Human",NewTagName="PF2.Trait.Creature.Human") ++GameplayTagRedirects=(OldTagName="Trait.Creature.Humanoid",NewTagName="PF2.Trait.Creature.Humanoid") ++GameplayTagRedirects=(OldTagName="Trait.Creature.Orc",NewTagName="PF2.Trait.Creature.Orc") ++GameplayTagRedirects=(OldTagName="Trait.Effect.Death",NewTagName="PF2.Trait.Effect.Death") ++GameplayTagRedirects=(OldTagName="Trait.Effect.Disease",NewTagName="PF2.Trait.Effect.Disease") ++GameplayTagRedirects=(OldTagName="Trait.Effect.Linguistic",NewTagName="PF2.Trait.Effect.Linguistic") ++GameplayTagRedirects=(OldTagName="Trait.Effect.Nonlethal",NewTagName="PF2.Trait.Effect.Nonlethal") ++GameplayTagRedirects=(OldTagName="Trait.Effect.Poison",NewTagName="PF2.Trait.Effect.Poison") ++GameplayTagRedirects=(OldTagName="Trait.Effect.Sonic",NewTagName="PF2.Trait.Effect.Sonic") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Agile",NewTagName="PF2.Trait.Weapon.Agile") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Attached.ToShield",NewTagName="PF2.Trait.Weapon.Attached.ToShield") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Backstabber",NewTagName="PF2.Trait.Weapon.Backstabber") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Backswing",NewTagName="PF2.Trait.Weapon.Backswing") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Deadly.D10",NewTagName="PF2.Trait.Weapon.Deadly.D10") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Deadly.D6",NewTagName="PF2.Trait.Weapon.Deadly.D6") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Deadly.D8",NewTagName="PF2.Trait.Weapon.Deadly.D8") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Disarm",NewTagName="PF2.Trait.Weapon.Disarm") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Dwarf",NewTagName="PF2.Trait.Weapon.Dwarf") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Elf",NewTagName="PF2.Trait.Weapon.Elf") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Fatal.D10",NewTagName="PF2.Trait.Weapon.Fatal.D10") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Fatal.D12",NewTagName="PF2.Trait.Weapon.Fatal.D12") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Fatal.D8",NewTagName="PF2.Trait.Weapon.Fatal.D8") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Finesse",NewTagName="PF2.Trait.Weapon.Finesse") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Forceful",NewTagName="PF2.Trait.Weapon.Forceful") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.FreeHand",NewTagName="PF2.Trait.Weapon.FreeHand") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Gnome",NewTagName="PF2.Trait.Weapon.Gnome") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Goblin",NewTagName="PF2.Trait.Weapon.Goblin") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Halfling",NewTagName="PF2.Trait.Weapon.Halfling") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Jousting.D6",NewTagName="PF2.Trait.Weapon.Jousting.D6") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Monk",NewTagName="PF2.Trait.Weapon.Monk") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Nonlethal",NewTagName="PF2.Trait.Weapon.Nonlethal") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Orc",NewTagName="PF2.Trait.Weapon.Orc") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Parry",NewTagName="PF2.Trait.Weapon.Parry") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Propulsive",NewTagName="PF2.Trait.Weapon.Propulsive") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Reach",NewTagName="PF2.Trait.Weapon.Reach") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Shove",NewTagName="PF2.Trait.Weapon.Shove") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Sweep",NewTagName="PF2.Trait.Weapon.Sweep") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Thrown.3m",NewTagName="PF2.Trait.Weapon.Thrown.3m") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Thrown.6m",NewTagName="PF2.Trait.Weapon.Thrown.6m") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Trip",NewTagName="PF2.Trait.Weapon.Trip") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Twin",NewTagName="PF2.Trait.Weapon.Twin") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Two-hand.D10",NewTagName="PF2.Trait.Weapon.Two-hand.D10") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Two-hand.D12",NewTagName="PF2.Trait.Weapon.Two-hand.D12") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Two-hand.D8",NewTagName="PF2.Trait.Weapon.Two-hand.D8") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Unarmed",NewTagName="PF2.Trait.Weapon.Unarmed") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Versatile.Bludgeoning",NewTagName="PF2.Trait.Weapon.Versatile.Bludgeoning") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Versatile.Piercing",NewTagName="PF2.Trait.Weapon.Versatile.Piercing") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Versatile.Slashing",NewTagName="PF2.Trait.Weapon.Versatile.Slashing") ++GameplayTagRedirects=(OldTagName="Trait.Weapon.Volley.9m",NewTagName="PF2.Trait.Weapon.Volley.9m") ++GameplayTagRedirects=(OldTagName="TriggerTagCategory.Encounters.EndTurn",NewTagName="TriggerTagCategory.PF2.Encounter.EndTurn") ++GameplayTagRedirects=(OldTagName="TriggerTagCategory.Encounters.EnterEncounter",NewTagName="TriggerTagCategory.PF2.Encounter.EnterEncounter") ++GameplayTagRedirects=(OldTagName="TriggerTagCategory.Encounters.LeaveEncounter",NewTagName="TriggerTagCategory.PF2.Encounter.LeaveEncounter") ++GameplayTagRedirects=(OldTagName="TriggerTagCategory.Encounters.StartTurn",NewTagName="TriggerTagCategory.PF2.Encounter.StartTurn") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Axe",NewTagName="PF2.WeaponGroup.Axe") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Bomb",NewTagName="PF2.WeaponGroup.Bomb") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Bow",NewTagName="PF2.WeaponGroup.Bow") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Brawling",NewTagName="PF2.WeaponGroup.Brawling") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Club",NewTagName="PF2.WeaponGroup.Club") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Dart",NewTagName="PF2.WeaponGroup.Dart") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Flail",NewTagName="PF2.WeaponGroup.Flail") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Hammer",NewTagName="PF2.WeaponGroup.Hammer") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Knife",NewTagName="PF2.WeaponGroup.Knife") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Pick",NewTagName="PF2.WeaponGroup.Pick") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Polearm",NewTagName="PF2.WeaponGroup.Polearm") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Shield",NewTagName="PF2.WeaponGroup.Shield") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Sling",NewTagName="PF2.WeaponGroup.Sling") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Spear",NewTagName="PF2.WeaponGroup.Spear") ++GameplayTagRedirects=(OldTagName="WeaponGroup.Sword",NewTagName="PF2.WeaponGroup.Sword") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.AlchemicalBomb",NewTagName="PF2.Proficiency.Weapon.AlchemicalBomb") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.AlchemicalBomb.Expert",NewTagName="PF2.Proficiency.Weapon.AlchemicalBomb.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.AlchemicalBomb.Legendary",NewTagName="PF2.Proficiency.Weapon.AlchemicalBomb.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.AlchemicalBomb.Master",NewTagName="PF2.Proficiency.Weapon.AlchemicalBomb.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.AlchemicalBomb.Trained",NewTagName="PF2.Proficiency.Weapon.AlchemicalBomb.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.AlchemicalBomb.Untrained",NewTagName="PF2.Proficiency.Weapon.AlchemicalBomb.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.BattleAxe",NewTagName="PF2.Proficiency.Weapon.BattleAxe") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.BattleAxe.Expert",NewTagName="PF2.Proficiency.Weapon.BattleAxe.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.BattleAxe.Legendary",NewTagName="PF2.Proficiency.Weapon.BattleAxe.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.BattleAxe.Master",NewTagName="PF2.Proficiency.Weapon.BattleAxe.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.BattleAxe.Trained",NewTagName="PF2.Proficiency.Weapon.BattleAxe.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.BattleAxe.Untrained",NewTagName="PF2.Proficiency.Weapon.BattleAxe.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Advanced",NewTagName="PF2.Proficiency.Weapon.Category.Advanced") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Advanced.Expert",NewTagName="PF2.Proficiency.Weapon.Category.Advanced.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Advanced.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.Advanced.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Advanced.Master",NewTagName="PF2.Proficiency.Weapon.Category.Advanced.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Advanced.Trained",NewTagName="PF2.Proficiency.Weapon.Category.Advanced.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Advanced.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.Advanced.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedDwarf",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedDwarf") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedDwarf.Expert",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedDwarf.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedDwarf.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedDwarf.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedDwarf.Master",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedDwarf.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedDwarf.Trained",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedDwarf.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedDwarf.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedDwarf.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedElf",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedElf") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedElf.Expert",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedElf.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedElf.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedElf.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedElf.Master",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedElf.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedElf.Trained",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedElf.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedElf.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedElf.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedGnome",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedGnome") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedGnome.Expert",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedGnome.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedGnome.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedGnome.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedGnome.Master",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedGnome.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedGnome.Trained",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedGnome.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedGnome.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedGnome.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedGoblin",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedGoblin") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedGoblin.Expert",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedGoblin.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedGoblin.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedGoblin.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedGoblin.Master",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedGoblin.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedGoblin.Trained",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedGoblin.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedGoblin.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedGoblin.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedHalfling",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedHalfling") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedHalfling.Expert",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedHalfling.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedHalfling.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedHalfling.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedHalfling.Master",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedHalfling.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedHalfling.Trained",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedHalfling.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.AdvancedHalfling.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.AdvancedHalfling.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Martial",NewTagName="PF2.Proficiency.Weapon.Category.Martial") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Martial.Expert",NewTagName="PF2.Proficiency.Weapon.Category.Martial.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Martial.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.Martial.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Martial.Master",NewTagName="PF2.Proficiency.Weapon.Category.Martial.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Martial.Trained",NewTagName="PF2.Proficiency.Weapon.Category.Martial.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Martial.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.Martial.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialDwarf",NewTagName="PF2.Proficiency.Weapon.Category.MartialDwarf") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialDwarf.Expert",NewTagName="PF2.Proficiency.Weapon.Category.MartialDwarf.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialDwarf.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.MartialDwarf.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialDwarf.Master",NewTagName="PF2.Proficiency.Weapon.Category.MartialDwarf.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialDwarf.Trained",NewTagName="PF2.Proficiency.Weapon.Category.MartialDwarf.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialDwarf.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.MartialDwarf.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialElf",NewTagName="PF2.Proficiency.Weapon.Category.MartialElf") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialElf.Expert",NewTagName="PF2.Proficiency.Weapon.Category.MartialElf.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialElf.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.MartialElf.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialElf.Master",NewTagName="PF2.Proficiency.Weapon.Category.MartialElf.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialElf.Trained",NewTagName="PF2.Proficiency.Weapon.Category.MartialElf.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialElf.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.MartialElf.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialGnome",NewTagName="PF2.Proficiency.Weapon.Category.MartialGnome") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialGnome.Expert",NewTagName="PF2.Proficiency.Weapon.Category.MartialGnome.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialGnome.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.MartialGnome.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialGnome.Master",NewTagName="PF2.Proficiency.Weapon.Category.MartialGnome.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialGnome.Trained",NewTagName="PF2.Proficiency.Weapon.Category.MartialGnome.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialGnome.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.MartialGnome.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialGoblin",NewTagName="PF2.Proficiency.Weapon.Category.MartialGoblin") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialGoblin.Expert",NewTagName="PF2.Proficiency.Weapon.Category.MartialGoblin.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialGoblin.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.MartialGoblin.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialGoblin.Master",NewTagName="PF2.Proficiency.Weapon.Category.MartialGoblin.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialGoblin.Trained",NewTagName="PF2.Proficiency.Weapon.Category.MartialGoblin.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialGoblin.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.MartialGoblin.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialHalfling",NewTagName="PF2.Proficiency.Weapon.Category.MartialHalfling") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialHalfling.Expert",NewTagName="PF2.Proficiency.Weapon.Category.MartialHalfling.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialHalfling.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.MartialHalfling.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialHalfling.Master",NewTagName="PF2.Proficiency.Weapon.Category.MartialHalfling.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialHalfling.Trained",NewTagName="PF2.Proficiency.Weapon.Category.MartialHalfling.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.MartialHalfling.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.MartialHalfling.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Simple",NewTagName="PF2.Proficiency.Weapon.Category.Simple") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Simple.Expert",NewTagName="PF2.Proficiency.Weapon.Category.Simple.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Simple.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.Simple.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Simple.Master",NewTagName="PF2.Proficiency.Weapon.Category.Simple.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Simple.Trained",NewTagName="PF2.Proficiency.Weapon.Category.Simple.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Simple.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.Simple.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Unarmed",NewTagName="PF2.Proficiency.Weapon.Category.Unarmed") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Unarmed.Expert",NewTagName="PF2.Proficiency.Weapon.Category.Unarmed.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Unarmed.Legendary",NewTagName="PF2.Proficiency.Weapon.Category.Unarmed.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Unarmed.Master",NewTagName="PF2.Proficiency.Weapon.Category.Unarmed.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Unarmed.Trained",NewTagName="PF2.Proficiency.Weapon.Category.Unarmed.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Category.Unarmed.Untrained",NewTagName="PF2.Proficiency.Weapon.Category.Unarmed.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Club",NewTagName="PF2.Proficiency.Weapon.Club") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Club.Expert",NewTagName="PF2.Proficiency.Weapon.Club.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Club.Legendary",NewTagName="PF2.Proficiency.Weapon.Club.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Club.Master",NewTagName="PF2.Proficiency.Weapon.Club.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Club.Trained",NewTagName="PF2.Proficiency.Weapon.Club.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Club.Untrained",NewTagName="PF2.Proficiency.Weapon.Club.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.CompositeLongbow",NewTagName="PF2.Proficiency.Weapon.CompositeLongbow") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.CompositeLongbow.Expert",NewTagName="PF2.Proficiency.Weapon.CompositeLongbow.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.CompositeLongbow.Legendary",NewTagName="PF2.Proficiency.Weapon.CompositeLongbow.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.CompositeLongbow.Master",NewTagName="PF2.Proficiency.Weapon.CompositeLongbow.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.CompositeLongbow.Trained",NewTagName="PF2.Proficiency.Weapon.CompositeLongbow.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.CompositeLongbow.Untrained",NewTagName="PF2.Proficiency.Weapon.CompositeLongbow.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.CompositeShortbow",NewTagName="PF2.Proficiency.Weapon.CompositeShortbow") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.CompositeShortbow.Expert",NewTagName="PF2.Proficiency.Weapon.CompositeShortbow.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.CompositeShortbow.Legendary",NewTagName="PF2.Proficiency.Weapon.CompositeShortbow.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.CompositeShortbow.Master",NewTagName="PF2.Proficiency.Weapon.CompositeShortbow.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.CompositeShortbow.Trained",NewTagName="PF2.Proficiency.Weapon.CompositeShortbow.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.CompositeShortbow.Untrained",NewTagName="PF2.Proficiency.Weapon.CompositeShortbow.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Crossbow",NewTagName="PF2.Proficiency.Weapon.Crossbow") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Crossbow.Expert",NewTagName="PF2.Proficiency.Weapon.Crossbow.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Crossbow.Legendary",NewTagName="PF2.Proficiency.Weapon.Crossbow.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Crossbow.Master",NewTagName="PF2.Proficiency.Weapon.Crossbow.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Crossbow.Trained",NewTagName="PF2.Proficiency.Weapon.Crossbow.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Crossbow.Untrained",NewTagName="PF2.Proficiency.Weapon.Crossbow.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Dagger",NewTagName="PF2.Proficiency.Weapon.Dagger") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Dagger.Expert",NewTagName="PF2.Proficiency.Weapon.Dagger.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Dagger.Legendary",NewTagName="PF2.Proficiency.Weapon.Dagger.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Dagger.Master",NewTagName="PF2.Proficiency.Weapon.Dagger.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Dagger.Trained",NewTagName="PF2.Proficiency.Weapon.Dagger.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Dagger.Untrained",NewTagName="PF2.Proficiency.Weapon.Dagger.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Dogslicer",NewTagName="PF2.Proficiency.Weapon.Dogslicer") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Dogslicer.Expert",NewTagName="PF2.Proficiency.Weapon.Dogslicer.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Dogslicer.Legendary",NewTagName="PF2.Proficiency.Weapon.Dogslicer.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Dogslicer.Master",NewTagName="PF2.Proficiency.Weapon.Dogslicer.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Dogslicer.Trained",NewTagName="PF2.Proficiency.Weapon.Dogslicer.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Dogslicer.Untrained",NewTagName="PF2.Proficiency.Weapon.Dogslicer.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Falchion",NewTagName="PF2.Proficiency.Weapon.Falchion") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Falchion.Expert",NewTagName="PF2.Proficiency.Weapon.Falchion.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Falchion.Legendary",NewTagName="PF2.Proficiency.Weapon.Falchion.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Falchion.Master",NewTagName="PF2.Proficiency.Weapon.Falchion.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Falchion.Trained",NewTagName="PF2.Proficiency.Weapon.Falchion.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Falchion.Untrained",NewTagName="PF2.Proficiency.Weapon.Falchion.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Glaive",NewTagName="PF2.Proficiency.Weapon.Glaive") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Glaive.Expert",NewTagName="PF2.Proficiency.Weapon.Glaive.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Glaive.Legendary",NewTagName="PF2.Proficiency.Weapon.Glaive.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Glaive.Master",NewTagName="PF2.Proficiency.Weapon.Glaive.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Glaive.Trained",NewTagName="PF2.Proficiency.Weapon.Glaive.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Glaive.Untrained",NewTagName="PF2.Proficiency.Weapon.Glaive.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Greataxe",NewTagName="PF2.Proficiency.Weapon.Greataxe") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Greataxe.Expert",NewTagName="PF2.Proficiency.Weapon.Greataxe.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Greataxe.Legendary",NewTagName="PF2.Proficiency.Weapon.Greataxe.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Greataxe.Master",NewTagName="PF2.Proficiency.Weapon.Greataxe.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Greataxe.Trained",NewTagName="PF2.Proficiency.Weapon.Greataxe.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Greataxe.Untrained",NewTagName="PF2.Proficiency.Weapon.Greataxe.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.HalflingSlingStaff",NewTagName="PF2.Proficiency.Weapon.HalflingSlingStaff") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.HalflingSlingStaff.Expert",NewTagName="PF2.Proficiency.Weapon.HalflingSlingStaff.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.HalflingSlingStaff.Legendary",NewTagName="PF2.Proficiency.Weapon.HalflingSlingStaff.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.HalflingSlingStaff.Master",NewTagName="PF2.Proficiency.Weapon.HalflingSlingStaff.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.HalflingSlingStaff.Trained",NewTagName="PF2.Proficiency.Weapon.HalflingSlingStaff.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.HalflingSlingStaff.Untrained",NewTagName="PF2.Proficiency.Weapon.HalflingSlingStaff.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.HeavyCrossbow",NewTagName="PF2.Proficiency.Weapon.HeavyCrossbow") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.HeavyCrossbow.Expert",NewTagName="PF2.Proficiency.Weapon.HeavyCrossbow.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.HeavyCrossbow.Legendary",NewTagName="PF2.Proficiency.Weapon.HeavyCrossbow.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.HeavyCrossbow.Master",NewTagName="PF2.Proficiency.Weapon.HeavyCrossbow.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.HeavyCrossbow.Trained",NewTagName="PF2.Proficiency.Weapon.HeavyCrossbow.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.HeavyCrossbow.Untrained",NewTagName="PF2.Proficiency.Weapon.HeavyCrossbow.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Horsechopper",NewTagName="PF2.Proficiency.Weapon.Horsechopper") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Horsechopper.Expert",NewTagName="PF2.Proficiency.Weapon.Horsechopper.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Horsechopper.Legendary",NewTagName="PF2.Proficiency.Weapon.Horsechopper.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Horsechopper.Master",NewTagName="PF2.Proficiency.Weapon.Horsechopper.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Horsechopper.Trained",NewTagName="PF2.Proficiency.Weapon.Horsechopper.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Horsechopper.Untrained",NewTagName="PF2.Proficiency.Weapon.Horsechopper.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Kukri",NewTagName="PF2.Proficiency.Weapon.Kukri") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Kukri.Expert",NewTagName="PF2.Proficiency.Weapon.Kukri.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Kukri.Legendary",NewTagName="PF2.Proficiency.Weapon.Kukri.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Kukri.Master",NewTagName="PF2.Proficiency.Weapon.Kukri.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Kukri.Trained",NewTagName="PF2.Proficiency.Weapon.Kukri.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Kukri.Untrained",NewTagName="PF2.Proficiency.Weapon.Kukri.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Longbow",NewTagName="PF2.Proficiency.Weapon.Longbow") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Longbow.Expert",NewTagName="PF2.Proficiency.Weapon.Longbow.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Longbow.Legendary",NewTagName="PF2.Proficiency.Weapon.Longbow.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Longbow.Master",NewTagName="PF2.Proficiency.Weapon.Longbow.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Longbow.Trained",NewTagName="PF2.Proficiency.Weapon.Longbow.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Longbow.Untrained",NewTagName="PF2.Proficiency.Weapon.Longbow.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Longsword",NewTagName="PF2.Proficiency.Weapon.Longsword") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Longsword.Expert",NewTagName="PF2.Proficiency.Weapon.Longsword.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Longsword.Legendary",NewTagName="PF2.Proficiency.Weapon.Longsword.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Longsword.Master",NewTagName="PF2.Proficiency.Weapon.Longsword.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Longsword.Trained",NewTagName="PF2.Proficiency.Weapon.Longsword.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Longsword.Untrained",NewTagName="PF2.Proficiency.Weapon.Longsword.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Pick",NewTagName="PF2.Proficiency.Weapon.Pick") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Pick.Expert",NewTagName="PF2.Proficiency.Weapon.Pick.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Pick.Legendary",NewTagName="PF2.Proficiency.Weapon.Pick.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Pick.Master",NewTagName="PF2.Proficiency.Weapon.Pick.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Pick.Trained",NewTagName="PF2.Proficiency.Weapon.Pick.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Pick.Untrained",NewTagName="PF2.Proficiency.Weapon.Pick.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Rapier",NewTagName="PF2.Proficiency.Weapon.Rapier") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Rapier.Expert",NewTagName="PF2.Proficiency.Weapon.Rapier.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Rapier.Legendary",NewTagName="PF2.Proficiency.Weapon.Rapier.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Rapier.Master",NewTagName="PF2.Proficiency.Weapon.Rapier.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Rapier.Trained",NewTagName="PF2.Proficiency.Weapon.Rapier.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Rapier.Untrained",NewTagName="PF2.Proficiency.Weapon.Rapier.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Sap",NewTagName="PF2.Proficiency.Weapon.Sap") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Sap.Expert",NewTagName="PF2.Proficiency.Weapon.Sap.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Sap.Legendary",NewTagName="PF2.Proficiency.Weapon.Sap.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Sap.Master",NewTagName="PF2.Proficiency.Weapon.Sap.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Sap.Trained",NewTagName="PF2.Proficiency.Weapon.Sap.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Sap.Untrained",NewTagName="PF2.Proficiency.Weapon.Sap.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Shortbow",NewTagName="PF2.Proficiency.Weapon.Shortbow") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Shortbow.Expert",NewTagName="PF2.Proficiency.Weapon.Shortbow.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Shortbow.Legendary",NewTagName="PF2.Proficiency.Weapon.Shortbow.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Shortbow.Master",NewTagName="PF2.Proficiency.Weapon.Shortbow.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Shortbow.Trained",NewTagName="PF2.Proficiency.Weapon.Shortbow.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Shortbow.Untrained",NewTagName="PF2.Proficiency.Weapon.Shortbow.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Shortsword",NewTagName="PF2.Proficiency.Weapon.Shortsword") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Shortsword.Expert",NewTagName="PF2.Proficiency.Weapon.Shortsword.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Shortsword.Legendary",NewTagName="PF2.Proficiency.Weapon.Shortsword.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Shortsword.Master",NewTagName="PF2.Proficiency.Weapon.Shortsword.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Shortsword.Trained",NewTagName="PF2.Proficiency.Weapon.Shortsword.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Shortsword.Untrained",NewTagName="PF2.Proficiency.Weapon.Shortsword.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Sling",NewTagName="PF2.Proficiency.Weapon.Sling") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Sling.Expert",NewTagName="PF2.Proficiency.Weapon.Sling.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Sling.Legendary",NewTagName="PF2.Proficiency.Weapon.Sling.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Sling.Master",NewTagName="PF2.Proficiency.Weapon.Sling.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Sling.Trained",NewTagName="PF2.Proficiency.Weapon.Sling.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Sling.Untrained",NewTagName="PF2.Proficiency.Weapon.Sling.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Staff",NewTagName="PF2.Proficiency.Weapon.Staff") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Staff.Expert",NewTagName="PF2.Proficiency.Weapon.Staff.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Staff.Legendary",NewTagName="PF2.Proficiency.Weapon.Staff.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Staff.Master",NewTagName="PF2.Proficiency.Weapon.Staff.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Staff.Trained",NewTagName="PF2.Proficiency.Weapon.Staff.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Staff.Untrained",NewTagName="PF2.Proficiency.Weapon.Staff.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Warhammer",NewTagName="PF2.Proficiency.Weapon.Warhammer") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Warhammer.Expert",NewTagName="PF2.Proficiency.Weapon.Warhammer.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Warhammer.Legendary",NewTagName="PF2.Proficiency.Weapon.Warhammer.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Warhammer.Master",NewTagName="PF2.Proficiency.Weapon.Warhammer.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Warhammer.Trained",NewTagName="PF2.Proficiency.Weapon.Warhammer.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Warhammer.Untrained",NewTagName="PF2.Proficiency.Weapon.Warhammer.Untrained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Whip",NewTagName="PF2.Proficiency.Weapon.Whip") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Whip.Expert",NewTagName="PF2.Proficiency.Weapon.Whip.Expert") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Whip.Legendary",NewTagName="PF2.Proficiency.Weapon.Whip.Legendary") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Whip.Master",NewTagName="PF2.Proficiency.Weapon.Whip.Master") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Whip.Trained",NewTagName="PF2.Proficiency.Weapon.Whip.Trained") ++GameplayTagRedirects=(OldTagName="WeaponProficiency.Whip.Untrained",NewTagName="PF2.Proficiency.Weapon.Whip.Untrained") diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Common.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Common.cpp new file mode 100644 index 000000000..1f529f115 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Common.cpp @@ -0,0 +1,53 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// Content from Pathfinder 2nd Edition is licensed under the Open Game License (OGL) v1.0a, subject to the following: +// - Open Game License v 1.0a, Copyright 2000, Wizards of the Coast, Inc. +// - System Reference Document, Copyright 2000, Wizards of the Coast, Inc. +// - Pathfinder Core Rulebook (Second Edition), Copyright 2019, Paizo Inc. +// +// Except for material designated as Product Identity, the game mechanics and logic in this file are Open Game Content, +// as defined in the Open Game License version 1.0a, Section 1(d) (see accompanying LICENSE.TXT). No portion of this +// file other than the material designated as Open Game Content may be reproduced in any form without written +// permission. + +#include "GameplayTags/Common.h" + +// ===================================================================================================================== +// Top-level tag category definitions. +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagRoot, + "PF2", + "Gameplay tags provided by the OpenPF2 Game Framework." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagEncounters, + "PF2.Encounter", + "Tags used by abilities during encounters." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilities, + "PF2.GameplayAbility", + "Tags that apply to Gameplay Abilities in OpenPF2." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffects, + "PF2.GameplayEffect", + "Tags that apply to Gameplay Effects in OpenPF2." +) + +// Source: Pathfinder 2E Core Rulebook, Appendix, page 635. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencies, + "PF2.Proficiency", + "Measures of a character’s aptitude at specific tasks or qualities." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTriggerTagCategoryRoot, + "TriggerTagCategory.PF2", + "Tags that trigger Gameplay Abilities in OpenPF2." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Currencies.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Currencies.cpp index b389693b6..fb63e7be7 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Currencies.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Currencies.cpp @@ -16,8 +16,14 @@ // Default Currency - "Coins" // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Chapter 6, page 271. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCurrencies, + "PF2.Currency", + "Types of money used to pay for goods in lieu of bartering." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCurrencyCoins, - "Currency.Coins", + "PF2.Currency.Coins", "The most common currency in OpenPF2." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/CurrencyUnits.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/CurrencyUnits.cpp index 4747b3754..3cfb7de37 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/CurrencyUnits.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/CurrencyUnits.cpp @@ -17,25 +17,37 @@ // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Chapter 6, page 271. UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagCurrencyUnitCoinsCopperPiece, - "CurrencyUnit.Coins.CopperPiece", + Pf2TagCurrencyUnits, + "PF2.CurrencyUnit", + "Standard units of payment for goods." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCurrencyUnitCoins, + "PF2.CurrencyUnit.Coin", + "Standard coin increments when paying for goods." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCurrencyUnitCoinCopperPiece, + "PF2.CurrencyUnit.Coin.CopperPiece", "A unit of currency worth 1/10 of a silver piece." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagCurrencyUnitCoinsSilverPiece, - "CurrencyUnit.Coins.SilverPiece", + Pf2TagCurrencyUnitCoinSilverPiece, + "PF2.CurrencyUnit.Coin.SilverPiece", "The standard unit of currency for commoners and beginning adventurers. Each is a standard weight of silver and is typically accepted by any merchant or kingdom no matter where it was minted." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagCurrencyUnitCoinsGoldPiece, - "CurrencyUnit.Coins.GoldPiece", + Pf2TagCurrencyUnitCoinGoldPiece, + "PF2.CurrencyUnit.Coin.GoldPiece", "A unit of currency often used for purchasing magic items and other expensive items. 1 gold piece is worth 10 silver pieces and 100 copper pieces." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagCurrencyUnitCoinsPlatinumPiece, - "CurrencyUnit.Coins.PlatinumPiece", + Pf2TagCurrencyUnitCoinPlatinumPiece, + "PF2.CurrencyUnit.Coin.PlatinumPiece", "A unit of current used by nobles to demonstrate their wealth, for the purchase of very expensive items, or simply as a way to easily transport large sums of currency. A platinum piece is worth 10 gold pieces, 100 silver pieces, and 1,000 copper pieces." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/DamageTypes.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/DamageTypes.cpp index 1a07b961a..ca259ef9f 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/DamageTypes.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/DamageTypes.cpp @@ -13,137 +13,143 @@ #include "GameplayTags/DamageTypes.h" // ===================================================================================================================== -// Damage types +// Damage types - Different ways that damage can be applied to targets. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Chapter 9, page 452, "Damage Types". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagDamageTypes, + "PF2.DamageType", + "Different ways that damage can be applied to targets." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypePhysical, - "DamageType.Physical", + "PF2.DamageType.Physical", "Damage dealt by weapons, many physical hazards, and a handful of spells is collectively called physical damage. The main types of physical damage are bludgeoning, piercing, and slashing." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypePhysicalBludgeoning, - "DamageType.Physical.Bludgeoning", + "PF2.DamageType.Physical.Bludgeoning", "Bludgeoning (B) damage comes from weapons and hazards that deal blunt-force trauma, like a hit from a club or being dashed against rocks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypePhysicalPiercing, - "DamageType.Physical.Piercing", + "PF2.DamageType.Physical.Piercing", "Piercing (P) damage is dealt from stabs and punctures, whether from a dragon's fangs or the thrust of a spear." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypePhysicalSlashing, - "DamageType.Physical.Slashing", + "PF2.DamageType.Physical.Slashing", "Slashing (S) damage is delivered by a cut, be it the swing of the sword or the blow from a scythe blades trap." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeEnergy, - "DamageType.Energy", + "PF2.DamageType.Energy", "Many spells and other magical effects deal energy damage. Energy damage is also dealt from effects in the world, such as the biting cold of a blizzard to a raging forest fire. The main types of energy damage are acid, cold, electricity, fire, and sonic." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeEnergyAcid, - "DamageType.Energy.Acid", + "PF2.DamageType.Energy.Acid", "Acid damage can be delivered by gases, liquids, and certain solids that dissolve flesh, and sometimes harder materials." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeEnergyCold, - "DamageType.Energy.Cold", + "PF2.DamageType.Energy.Cold", "Cold damage freezes material by way of contact with chilling gases and ice. Electricity damage comes from the discharge of powerful lightning and sparks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeEnergyElectricity, - "DamageType.Energy.Electricity", + "PF2.DamageType.Energy.Electricity", "Electricity comes from the discharge of powerful lightning and sparks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeEnergyFire, - "DamageType.Energy.Fire", + "PF2.DamageType.Energy.Fire", "Fire damage burns through heat and combustion." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeEnergySonic, - "DamageType.Energy.Sonic", + "PF2.DamageType.Energy.Sonic", "Sonic damage assaults matter with high-frequency vibration and sound waves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeEnergyPositive, - "DamageType.Energy.Positive", + "PF2.DamageType.Energy.Positive", "Positive damage harms only undead creatures, withering undead bodies and disrupting incorporeal undead." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeEnergyNegative, - "DamageType.Energy.Negative", + "PF2.DamageType.Energy.Negative", "Negative damage saps life, damaging only living creatures." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeEnergyForce, - "DamageType.Energy.Force", + "PF2.DamageType.Energy.Force", "Powerful and pure magical energy can manifest itself as force damage. Few things can resist this type of damage—not even incorporeal creatures such as ghosts and wraiths." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeAlignment, - "DamageType.Alignment", + "PF2.DamageType.Alignment", "Weapons and effects keyed to a particular alignment can deal chaotic, evil, good, or lawful damage. These damage types apply only to creatures that have the opposing alignment trait." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeAlignmentChaotic, - "DamageType.Alignment.Chaotic", + "PF2.DamageType.Alignment.Chaotic", "Chaotic damage harms only lawful creatures." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeAlignmentEvil, - "DamageType.Alignment.Evil", + "PF2.DamageType.Alignment.Evil", "Evil damage harms only good creatures." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeAlignmentGood, - "DamageType.Alignment.Good", + "PF2.DamageType.Alignment.Good", "Good damage harms only evil creatures." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeAlignmentLawful, - "DamageType.Alignment.Lawful", + "PF2.DamageType.Alignment.Lawful", "Lawful damage harms only chaotic creatures." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeMental, - "DamageType.Mental", + "PF2.DamageType.Mental", "Sometimes an effect can target the mind with enough psychic force to actually deal damage to the creature. When it does, it deals mental damage. Mindless creatures and those with only programmed or rudimentary intelligence are often immune to mental damage and effects." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypePoison, - "DamageType.Poison", + "PF2.DamageType.Poison", "Venoms, toxins and the like can deal poison damage, which affects creatures by way of contact, ingestion, inhalation, or injury. In addition to coming from monster attacks, alchemical items, and spells, poison damage is often caused by ongoing afflictions, which follow special rules." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypeBleed, - "DamageType.Bleed", + "PF2.DamageType.Bleed", "This is persistent damage that represents loss of blood. As such, it has no effect on nonliving creatures or living creatures that don't need blood to live." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagDamageTypePrecision, - "DamageType.Precision", + "PF2.DamageType.Precision", "When a character hits with an ability that grants precision damage, the character increase the attack's listed damage, using the same damage type, rather than tracking a separate pool of damage." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/AbilityTriggers.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/AbilityTriggers.cpp index e5f65618b..555e98a1e 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/AbilityTriggers.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/AbilityTriggers.cpp @@ -5,29 +5,38 @@ #include "GameplayTags/Encounters/AbilityTriggers.h" +// The UE editor requires these tags to be under a root tag of `TriggerTagCategory` in order for them to be selectable +// in the UI. + // ===================================================================================================================== // Tags that trigger Encounter-related Gameplay Abilities. // ===================================================================================================================== UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagTriggerTagCategoryEncountersEnterEncounter, - "TriggerTagCategory.Encounters.EnterEncounter", + Pf2TagTriggerTagCategoryEncounters, + "TriggerTagCategory.PF2.Encounter", + "Tags that trigger Encounter-related Gameplay Abilities." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTriggerTagCategoryEncounterEnterEncounter, + "TriggerTagCategory.PF2.Encounter.EnterEncounter", "Tag to trigger Gameplay Abilities appropriate for when a character enters an encounter." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagTriggerTagCategoryEncountersStartTurn, - "TriggerTagCategory.Encounters.StartTurn", + Pf2TagTriggerTagCategoryEncounterStartTurn, + "TriggerTagCategory.PF2.Encounter.StartTurn", "Tag to trigger Gameplay Abilities appropriate for the start of a character's turn during an encounter." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagTriggerTagCategoryEncountersEndTurn, - "TriggerTagCategory.Encounters.EndTurn", + Pf2TagTriggerTagCategoryEncounterEndTurn, + "TriggerTagCategory.PF2.Encounter.EndTurn", "Tag to trigger Gameplay Abilities appropriate for the end of a character's turn during an encounter." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagTriggerTagCategoryEncountersLeaveEncounter, - "TriggerTagCategory.Encounters.LeaveEncounter", + Pf2TagTriggerTagCategoryEncounterLeaveEncounter, + "TriggerTagCategory.PF2.Encounter.LeaveEncounter", "Tag to trigger Gameplay Abilities appropriate for when a character leaves an encounter." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/CharacterStates.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/CharacterStates.cpp index bdd50afa0..d80c5eea5 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/CharacterStates.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/CharacterStates.cpp @@ -9,19 +9,25 @@ // Tags that apply to characters during encounters. // ===================================================================================================================== UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagEncounterCharacterTurnActive, - "Encounter.Character.TurnActive", + Pf2TagEncounterCharacterStates, + "PF2.Encounter.CharacterState", + "Tags that convey the state of a character during encounters." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagEncounterCharacterStateTurnActive, + "PF2.Encounter.CharacterState.TurnActive", "Tag applied to a character whose turn is active." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagEncounterCharacterPointsRefreshFrozen, - "Encounter.Character.PointsRefreshFrozen", + Pf2TagEncounterCharacterStatePointsRefreshFrozen, + "PF2.Encounter.CharacterState.PointsRefreshFrozen", "Tag applied to a character who cannot presently accrue action points." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagEncounterCharacterCooldownNextTurn, - "Encounter.Character.Cooldown.NextTurn", + Pf2TagEncounterCharacterStateCooldownNextTurn, + "PF2.Encounter.CharacterState.Cooldown.NextTurn", "Tag applied to a character who is currently on a cooldown waiting for their next turn to start." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/AbilityTypes.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/AbilityTypes.cpp index 351afec5e..c350f6c14 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/AbilityTypes.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/AbilityTypes.cpp @@ -8,38 +8,54 @@ // ===================================================================================================================== // Tags that Identify Gameplay Ability Types // ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityTypes, + "PF2.GameplayAbility.Type", + "Tags applied to Gameplay Abilities to indicate their type." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayAbilityTypeAbilityBoost, - "GameplayAbility.Type.AbilityBoost", + "PF2.GameplayAbility.Type.AbilityBoost", "Tag applied to Gameplay Abilities that offer a character the opportunity to boost an ability score." ) +/** + * The name of the tag that designates an ability the default movement ability. + * + * This ability is used to move a character to a location, such as within range of another actor/character. + */ UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayAbilityTypeDefaultMovement, - "GameplayAbility.Type.DefaultMovement", + "PF2.GameplayAbility.Type.DefaultMovement", "Tag applied to Gameplay Abilities that perform the default type of movement for a character." ) +/** + * The name of the tag that designates an ability the default "face target" ability. + * + * This ability is used to rotate a character to face another actor/character. + */ UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayAbilityTypeDefaultFaceTarget, - "GameplayAbility.Type.DefaultFaceTarget", + "PF2.GameplayAbility.Type.DefaultFaceTarget", "Tag applied to Gameplay Abilities that have a character rotate to face another actor." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayAbilityTypeQueueableAction, - "GameplayAbility.Type.QueueableAction", + "PF2.GameplayAbility.Type.QueueableAction", "Tag applied to Gameplay Abilities that can be queued during encounters. This should also be used as a blocking tag to prevent it from being run concurrently with other actions at the time it is de-queued." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayAbilityTypeDirectlyInvokable, - "GameplayAbility.Type.DirectlyInvokable", + "PF2.GameplayAbility.Type.DirectlyInvokable", "Tag applied to Gameplay Abilities that can be directly invoked by the player (e.g., from an ability dialog or input binding)." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayAbilityTypeBlocksEndOfTurn, - "GameplayAbility.Type.BlocksEndOfTurn", + "PF2.GameplayAbility.Type.BlocksEndOfTurn", "Tag applied to Gameplay Abilities that prevent a character's turn from ending while they are active (e.g., an attack that is in progress)." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/ActivationMetadata.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/ActivationMetadata.cpp index 46b20c680..c8b25b6e2 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/ActivationMetadata.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/ActivationMetadata.cpp @@ -8,14 +8,20 @@ // ===================================================================================================================== // Tags that identify additional metadata that has been passed along for an ability activation. // ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityActivationMetadata, + "PF2.GameplayAbility.ActivationMetadata", + "Tags that identify additional metadata that has been passed along for an ability activation." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayAbilityActivationMetadataHasTargetCharacter, - "GameplayAbility.Activation.Metadata.HasTarget.Character", + "PF2.GameplayAbility.ActivationMetadata.HasTarget.Character", "Tag that a Gameplay Ability activation includes a target character (for healing or attack) chosen by the player." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayAbilityActivationMetadataHasTargetLocation, - "GameplayAbility.Activation.Metadata.HasTarget.Location", + "PF2.GameplayAbility.ActivationMetadata.HasTarget.Location", "Tag that a Gameplay Ability activation includes a target map location chosen by the player." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/WaitForEvents.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/WaitForEvents.cpp index 67c69c571..42d8bbe0d 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/WaitForEvents.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayAbilities/WaitForEvents.cpp @@ -6,28 +6,34 @@ #include "GameplayTags/GameplayAbilities/WaitForEvents.h" // ===================================================================================================================== -// Tags that identify events abilities can wait for during their activation. +// Tags that identify events that abilities can wait for during their activation. // ===================================================================================================================== UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagGameplayAbilityGameplayEventDamageReceived, - "GameplayAbility.GameplayEvent.DamageReceived", + Pf2TagGameplayAbilityWaitForEvents, + "PF2.GameplayAbility.WaitForEvent", + "Tags that identify events that abilities can wait for during their activation." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayAbilityWaitForEventDamageReceived, + "PF2.GameplayAbility.WaitForEvent.DamageReceived", "Tag on a GameplayEvent sent to a character to notify passive condition check GAs that the character has received damage." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagGameplayAbilityGameplayEventFacingComplete, - "GameplayAbility.GameplayEvent.FacingComplete", + Pf2TagGameplayAbilityWaitForEventFacingComplete, + "PF2.GameplayAbility.WaitForEvent.FacingComplete", "Tag on a GameplayEvent sent to a character to notify the active ability that the character is now oriented properly for an attack to proceed against a target." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagGameplayAbilityGameplayEventHitPointsChanged, - "GameplayAbility.GameplayEvent.HitPointsChanged", + Pf2TagGameplayAbilityWaitForEventHitPointsChanged, + "PF2.GameplayAbility.WaitForEvent.HitPointsChanged", "Tag on a GameplayEvent sent to a character to notify passive condition check GAs that the character's hit points have changed." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagGameplayAbilityGameplayEventMontageWeaponHit, - "GameplayAbility.GameplayEvent.Montage.WeaponHit", + Pf2TagGameplayAbilityWaitForEventMontageWeaponHit, + "PF2.GameplayAbility.WaitForEvent.Montage.WeaponHit", "Tag on a GameplayEvent emitted during an attack montage at the point that the weapon should make contact with an enemy." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayCues.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayCues.cpp index fa1a87cae..015659f89 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayCues.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayCues.cpp @@ -6,10 +6,22 @@ #include "GameplayTags/GameplayCues.h" // ===================================================================================================================== -// Gameplay Cues that provide special FX and sound FX in response to effect activations. +// Gameplay Cues that provide visual FX and sound FX in response to PF2 effect activations. // ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayCues, + "GameplayCue.PF2", + "Gameplay cues that provide visual and sound FX in response to PF2 effect activations." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayCueCharacters, + "GameplayCue.PF2.Character", + "Gameplay cues fired in response to actions taken by a character." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayCueCharacterInflictDamage, - "GameplayCue.Character.InflictDamage", + "GameplayCue.PF2.Character.InflictDamage", "Gameplay cue fired whenever one character inflicts damage on another." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/CalculationSources.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/CalculationSources.cpp index 0798731e8..2a5544d4a 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/CalculationSources.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/CalculationSources.cpp @@ -6,12 +6,18 @@ #include "GameplayTags/GameplayEffects/CalculationSources.h" // ===================================================================================================================== -// "Source" Tags passed in from Blueprints to calculate stats. +// "Source" tags passed in from Blueprints to calculate stats. // // These should not be used on weapons, characters, or other objects that appear in the world. // ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectCalculationSource, + "PF2.GameplayEffect.CalculationSource", + "'Source' tags passed in from Blueprints to calculate stats." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayEffectCalculationSourceInitiative, - "GameplayEffect.CalculationSource.Initiative", + "PF2.GameplayEffect.CalculationSource.Initiative", "Source tag passed in when a character's initiative in an encounter is being determined." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/SetByCallerParameters.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/SetByCallerParameters.cpp index f81553924..5f427bc89 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/SetByCallerParameters.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/SetByCallerParameters.cpp @@ -6,22 +6,41 @@ #include "GameplayTags/GameplayEffects/SetByCallerParameters.h" // ===================================================================================================================== -// Parameters passed in to "Set by caller" GEs +// Parameters passed into "Set by caller" GEs. // ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectParameters, + "PF2.GameplayEffect.Parameter", + "Parameters passed into 'Set by caller' GEs." +) + +/** + * The tag for the parameter that is used to pass a dynamic damage amount into the calculation. + * + * The parameter is typically read from a set-by-caller tag-based value so that GAs can populate damage dynamically, + * unless the GE is expected to hard-code a specific amount of damage or read it from a data table. + */ UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayEffectParameterDamage, - "GameplayEffect.Parameter.Damage", + "PF2.GameplayEffect.Parameter.Damage", "The parameter passed in to a dynamic damage GE, to control the amount of damage inflicted." ) +/** + * The tag that is used to pass a dynamic resistance amount into the calculation. + * + * The parameter should be provided via an attribute-based modifier that reads it from the appropriate resistance + * attribute of the character's attribute set (e.g., typically an attribute having a name that starts with "Rst", such + * as "RstPhysicalBludgeoning", "RstEnergyCold", etc.). + */ UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayEffectParameterResistance, - "GameplayEffect.Parameter.Resistance", + "PF2.GameplayEffect.Parameter.Resistance", "The parameter passed in to a dynamic resistance GE, to control the amount of damage resistance." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayEffectParameterHealing, - "GameplayEffect.Parameter.Healing", + "PF2.GameplayEffect.Parameter.Healing", "The parameter passed in to a dynamic healing GE, to control the amount of hit points granted to the character." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/WeightGroups.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/WeightGroups.cpp index 8319f3856..38ab9c99d 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/WeightGroups.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/GameplayEffects/WeightGroups.cpp @@ -8,44 +8,50 @@ // ===================================================================================================================== // Weights used to control the order that GEs are applied to an OpenPF2 character. // ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagGameplayEffectWeightGroups, + "PF2.GameplayEffect.WeightGroup", + "[SOON TO BE DEPRECATED] Weights used to control the order that GEs are applied to an OpenPF2 character." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayEffectWeightGroup00_InitializeBaseStats, - "GameplayEffect.WeightGroup.00_InitializeBaseStats", + "PF2.GameplayEffect.WeightGroup.00_InitializeBaseStats", "The weight group used for GEs that initialize base stats." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayEffectWeightGroup05_PostInitializeBaseStats, - "GameplayEffect.WeightGroup.05_PostInitializeBaseStats", + "PF2.GameplayEffect.WeightGroup.05_PostInitializeBaseStats", "The weight group used for GEs provided by the game designer that have to run right after base stats." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayEffectWeightGroup10_ManagedEffects, - "GameplayEffect.WeightGroup.10_ManagedEffects", + "PF2.GameplayEffect.WeightGroup.10_ManagedEffects", "The weight group used for GEs generated from other values on this character (managed by ASC logic)." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayEffectWeightGroup15_PreAbilityBoosts, - "GameplayEffect.WeightGroup.15_PreAbilityBoosts", + "PF2.GameplayEffect.WeightGroup.15_PreAbilityBoosts", "The default weight group for custom, passive GEs from a game designer; applied before ability boosts." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayEffectWeightGroup20_AbilityBoosts, - "GameplayEffect.WeightGroup.20_AbilityBoosts", + "PF2.GameplayEffect.WeightGroup.20_AbilityBoosts", "The weight group used for ability boosts selected by the player or a game designer." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayEffectWeightGroup25_PreFinalizeStats, - "GameplayEffect.WeightGroup.25_PreFinalizeStats", + "PF2.GameplayEffect.WeightGroup.25_PreFinalizeStats", "The weight group used for custom GEs provided by the game designer that must run before the last group of stats GEs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagGameplayEffectWeightGroup30_FinalizeStats, - "GameplayEffect.WeightGroup.30_FinalizeStats", + "PF2.GameplayEffect.WeightGroup.30_FinalizeStats", "The weight group used for GEs that need to run last because they heavily depend on the results of earlier GEs." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureAlignments.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureAlignments.cpp index bb4bcadf0..ce3f43cb2 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureAlignments.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureAlignments.cpp @@ -16,74 +16,80 @@ // Creature Alignment - The indicator of the character's morality and personality. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, page 29, Table 1-2: The Nine Alignments. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureAlignments, + "PF2.CreatureAlignment", + "Indicators of a character's morality and personality." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCreatureAlignmentLawful, - "CreatureAlignment.Lawful", + "PF2.CreatureAlignment.Lawful", "Character values consistency, stability, and predictability over flexibility" ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCreatureAlignmentLawfulGood, - "CreatureAlignment.Lawful.Good", + "PF2.CreatureAlignment.Lawful.Good", "Character values consistency, stability, and predictability over flexibility; considers others above themselves and works selflessly to assist others." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCreatureAlignmentLawfulNeutral, - "CreatureAlignment.Lawful.Neutral", + "PF2.CreatureAlignment.Lawful.Neutral", "Character values consistency, stability, and predictability over flexibility; doesn't consider others more or less importantly than themselves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCreatureAlignmentLawfulEvil, - "CreatureAlignment.Lawful.Evil", + "PF2.CreatureAlignment.Lawful.Evil", "Character values consistency, stability, and predictability over flexibility; is willing to victimize or harm others for selfish gain." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCreatureAlignmentNeutral, - "CreatureAlignment.Neutral", + "PF2.CreatureAlignment.Neutral", "Character obeys law or code of conduct in many situations, but is flexible." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCreatureAlignmentNeutralGood, - "CreatureAlignment.Neutral.Good", + "PF2.CreatureAlignment.Neutral.Good", "Character obeys law or code of conduct in many situations, but is flexible; considers others above themselves and works selflessly to assist others." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCreatureAlignmentNeutralNeutral, - "CreatureAlignment.Neutral.Neutral", + "PF2.CreatureAlignment.Neutral.Neutral", "Character obeys law or code of conduct in many situations, but is flexible; doesn't consider others more or less importantly than themselves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCreatureAlignmentNeutralEvil, - "CreatureAlignment.Neutral.Evil", + "PF2.CreatureAlignment.Neutral.Evil", "Character obeys law or code of conduct in many situations, but is flexible; is willing to victimize or harm others for selfish gain." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCreatureAlignmentChaotic, - "CreatureAlignment.Chaotic", + "PF2.CreatureAlignment.Chaotic", "Character values flexibility, creativity, and spontaneity over consistency." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCreatureAlignmentChaoticGood, - "CreatureAlignment.Chaotic.Good", + "PF2.CreatureAlignment.Chaotic.Good", "Character values flexibility, creativity, and spontaneity over consistency; considers others above themselves and works selflessly to assist others." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCreatureAlignmentChaoticNeutral, - "CreatureAlignment.Chaotic.Neutral", + "PF2.CreatureAlignment.Chaotic.Neutral", "Character values flexibility, creativity, and spontaneity over consistency; doesn't consider others more or less importantly than themselves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagCreatureAlignmentChaoticEvil, - "CreatureAlignment.Chaotic.Evil", + "PF2.CreatureAlignment.Chaotic.Evil", "Character values flexibility, creativity, and spontaneity over consistency; is willing to victimize or harm others for selfish gain." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureSizes.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureSizes.cpp index 7afa26148..a7b99794b 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureSizes.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/CreatureSizes.cpp @@ -16,9 +16,44 @@ // Creature Size - The approximate physical amount of space a creature occupies. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, page 474, Table 9-1: Size and Reach. -UE_DEFINE_GAMEPLAY_TAG(Pf2TagCreatureSizeTiny, "CreatureSize.Tiny") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagCreatureSizeSmall, "CreatureSize.Small") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagCreatureSizeMedium, "CreatureSize.Medium") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagCreatureSizeLarge, "CreatureSize.Large") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagCreatureSizeHuge, "CreatureSize.Huge") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagCreatureSizeGargantuan, "CreatureSize.Gargantuan") +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureSizes, + "PF2.CreatureSize", + "The approximate physical amount of space a creature occupies." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureSizeTiny, + "PF2.CreatureSize.Tiny", + "The creature or character occupies less than 1.5 meters of space." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureSizeSmall, + "PF2.CreatureSize.Small", + "The creature or character occupies 1.5 meters of space and is slightly smaller than medium size." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureSizeMedium, + "PF2.CreatureSize.Medium", + "The creature or character occupies 1.5 meters of space and is slightly larger than small size." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureSizeLarge, + "PF2.CreatureSize.Large", + "The creature or character occupies 3.0 meters of space." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureSizeHuge, + "PF2.CreatureSize.Huge", + "The creature or character occupies 4.5 meters of space." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagCreatureSizeGargantuan, + "PF2.CreatureSize.Gargantuan", + "The creature or character occupies 6.0 or more meters of space." +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Equipment.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Equipment.cpp index 469e3f959..d495102db 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Equipment.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Equipment.cpp @@ -12,29 +12,44 @@ #include "GameplayTags/Stats/Equipment.h" +// ===================================================================================================================== +// The types of item(s) the character *currently* has equipped. +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagEquipped, + "PF2.Equipped", + "The types of item(s) the character *currently* has equipped." +) + // ===================================================================================================================== // The type of armor the character *currently* has equipped. // ===================================================================================================================== UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorEquippedUnarmored, - "Armor.Equipped.Unarmored", + Pf2TagEquippedArmor, + "PF2.Equipped.Armor", + "The types of armor the character can *currently* has equipped." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagEquippedArmorUnarmored, + "PF2.Equipped.Armor.Unarmored", "Character has no armor equipped." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorEquippedLight, - "Armor.Equipped.Light", + Pf2TagEquippedArmorLight, + "PF2.Equipped.Armor.Light", "Character has Light armor equipped." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorEquippedMedium, - "Armor.Equipped.Medium", + Pf2TagEquippedArmorMedium, + "PF2.Equipped.Armor.Medium", "Character has Medium armor equipped." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorEquippedHeavy, - "Armor.Equipped.Heavy", + Pf2TagEquippedArmorHeavy, + "PF2.Equipped.Armor.Heavy", "Character has Heavy armor equipped." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/KeyAbilities.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/KeyAbilities.cpp index 5994cae97..e358357e2 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/KeyAbilities.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/KeyAbilities.cpp @@ -19,40 +19,46 @@ // - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 68, "Key Ability". // - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", pages 72-232 ("Key Ability" sections in each class entry). // +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagKeyAbilities, + "PF2.KeyAbility", + "The most important ability of a particular character/creature." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagKeyAbilityStrength, - "KeyAbility.Strength", - "Character's key ability is Strength" + "PF2.KeyAbility.Strength", + "Character's key ability is Strength." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagKeyAbilityDexterity, - "KeyAbility.Dexterity", - "Character's key ability is Dexterity" + "PF2.KeyAbility.Dexterity", + "Character's key ability is Dexterity." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagKeyAbilityConstitution, - "KeyAbility.Constitution", - "Character's key ability is Constitution" + "PF2.KeyAbility.Constitution", + "Character's key ability is Constitution." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagKeyAbilityIntelligence, - "KeyAbility.Intelligence", - "Character's key ability is Intelligence" + "PF2.KeyAbility.Intelligence", + "Character's key ability is Intelligence." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagKeyAbilityWisdom, - "KeyAbility.Wisdom", - "Character's key ability is Wisdom" + "PF2.KeyAbility.Wisdom", + "Character's key ability is Wisdom." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagKeyAbilityCharisma, - "KeyAbility.Charisma", - "Character's key ability is Charisma" + "PF2.KeyAbility.Charisma", + "Character's key ability is Charisma." ) // ===================================================================================================================== @@ -67,38 +73,44 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 68, "Key Ability". // - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", pages 72-232 ("Key Ability" sections in each class entry). // +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellcastingAbilities, + "PF2.SpellcastingAbility", + "The key ability of a character/creature that can cast spells." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagSpellcastingAbilityStrength, - "SpellcastingAbility.Strength", - "Character's spellcasting ability is Strength" + "PF2.SpellcastingAbility.Strength", + "Character's spellcasting ability is Strength." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagSpellcastingAbilityDexterity, - "SpellcastingAbility.Dexterity", - "Character's spellcasting ability is Dexterity" + "PF2.SpellcastingAbility.Dexterity", + "Character's spellcasting ability is Dexterity." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagSpellcastingAbilityConstitution, - "SpellcastingAbility.Constitution", - "Character's spellcasting ability is Constitution" + "PF2.SpellcastingAbility.Constitution", + "Character's spellcasting ability is Constitution." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagSpellcastingAbilityIntelligence, - "SpellcastingAbility.Intelligence", - "Character's spellcasting ability is Intelligence" + "PF2.SpellcastingAbility.Intelligence", + "Character's spellcasting ability is Intelligence." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagSpellcastingAbilityWisdom, - "SpellcastingAbility.Wisdom", - "Character's spellcasting ability is Wisdom" + "PF2.SpellcastingAbility.Wisdom", + "Character's spellcasting ability is Wisdom." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagSpellcastingAbilityCharisma, - "SpellcastingAbility.Charisma", - "Character's spellcasting ability is Charisma" + "PF2.SpellcastingAbility.Charisma", + "Character's spellcasting ability is Charisma." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Languages.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Languages.cpp index 5b54b7f35..565f32797 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Languages.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Languages.cpp @@ -14,73 +14,88 @@ #include "GameplayTags/Stats/Languages.h" +// ===================================================================================================================== +// Languages - How characters communicate through hearing, speaking, writing, and reading. +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguages, + "PF2.Language", + "How characters communicate through hearing, speaking, writing, and reading." +) + // ===================================================================================================================== // Common Languages - Languages regularly encountered in most places, even among those who aren’t native speakers. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, page 65, Table 2-1: Common Languages. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguagesCommon, + "PF2.Language.Common", + "Languages regularly encountered in most places, even among those who aren’t native speakers." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageCommonCommon, - "Language.Common.Common", + "PF2.Language.Common.Common", "Language spoken by humans, dwarves, elves, halflings, and other common ancestries." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageCommonDraconic, - "Language.Common.Draconic", + "PF2.Language.Common.Draconic", "Language spoken by dragons, reptilian humanoids." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageCommonDwarven, - "Language.Common.Dwarven", + "PF2.Language.Common.Dwarven", "Language spoken by dwarves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageCommonElven, - "Language.Common.Elven", + "PF2.Language.Common.Elven", "Language spoken by elves, half-elves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageCommonGnomish, - "Language.Common.Gnomish", + "PF2.Language.Common.Gnomish", "Language spoken by gnomes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageCommonGoblin, - "Language.Common.Goblin", + "PF2.Language.Common.Goblin", "Language spoken by goblins, hobgoblins, bugbears." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageCommonHalfling, - "Language.Common.Halfling", + "PF2.Language.Common.Halfling", "Language spoken by halflings." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageCommonJotun, - "Language.Common.Jotun", + "PF2.Language.Common.Jotun", "Language spoken by giants, ogres, trolls, ettins, cyclopes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageCommonOrcish, - "Language.Common.Orcish", + "PF2.Language.Common.Orcish", "Language spoken by orcs, half-orcs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageCommonSylvan, - "Language.Common.Sylvan", + "PF2.Language.Common.Sylvan", "Language spoken by fey, centaurs, plant creatures." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageCommonUndercommon, - "Language.Common.Undercommon", + "PF2.Language.Common.Undercommon", "Language spoken by drow, duergars, xulgaths." ) @@ -89,81 +104,92 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // interested in the associated cultures. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, page 65, Table 2-2: Uncommon Languages. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguagesUncommon, + "PF2.Language.Uncommon", + "Languages most frequently spoken by native speakers, but also by certain scholars and others interested in the associated cultures." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageUncommonAbyssal, - "Language.Uncommon.Abyssal", + "PF2.Language.Uncommon.Abyssal", "Language spoken by demons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageUncommonAklo, - "Language.Uncommon.Aklo", + "PF2.Language.Uncommon.Aklo", "Language spoken by deros, evil fey, otherworldly monsters." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageUncommonAquan, - "Language.Uncommon.Aquan", + "PF2.Language.Uncommon.Aquan", "Language spoken by aquatic creatures, water elemental creatures." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageUncommonAuran, - "Language.Uncommon.Auran", + "PF2.Language.Uncommon.Auran", "Language spoken by air elemental creatures, flying creatures." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageUncommonCelestial, - "Language.Uncommon.Celestial", + "PF2.Language.Uncommon.Celestial", "Language spoken by angels." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageUncommonGnoll, - "Language.Uncommon.Gnoll", + "PF2.Language.Uncommon.Gnoll", "Language spoken by gnolls." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageUncommonIgnan, - "Language.Uncommon.Ignan", + "PF2.Language.Uncommon.Ignan", "Language spoken by fire elemental creatures." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageUncommonInfernal, - "Language.Uncommon.Infernal", + "PF2.Language.Uncommon.Infernal", "Language spoken by devils." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageUncommonNecril, - "Language.Uncommon.Necril", + "PF2.Language.Uncommon.Necril", "Language spoken by ghouls, intelligent undead." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageUncommonShadowtongue, - "Language.Uncommon.Shadowtongue", + "PF2.Language.Uncommon.Shadowtongue", "Language spoken by nidalese, Shadow Plane creatures." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageUncommonTerran, - "Language.Uncommon.Terran", + "PF2.Language.Uncommon.Terran", "Language spoken by earth elemental creatures." ) // ===================================================================================================================== // Secret Languages (e.g., "Druidic") // -// Druidic is a secret language, and is available only to characters who are druids. In fact, druids are prohibited from -// teaching the language to non-druids. +// Languages available only to certain characters from certain backgrounds or in certain situations. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, page 65, Table 2-3: Secret Languages. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagLanguagesSecret, + "PF2.Language.Secret", + "Languages available only to certain characters from certain backgrounds or in certain situations." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagLanguageSecretDruidic, - "Language.Secret.Druidic", - "Language spoken by druids." + "PF2.Language.Secret.Druidic", + "A secret language available only to characters who are druids that is prohibited from being taught to non-druids." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Armor.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Armor.cpp index 7b99fda6a..11c473f95 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Armor.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Armor.cpp @@ -12,6 +12,12 @@ #include "GameplayTags/Stats/Proficiencies/Armor.h" +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyArmor, + "PF2.Proficiency.Armor", + "Character proficiency ranks for armor." +) + // ===================================================================================================================== // Proficiency Ranks for Different Classes of Armor (Unarmored, Light, Medium, or Heavy) // ===================================================================================================================== @@ -20,127 +26,156 @@ // - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 13, "Proficiency". // - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 27, "Character Sheet". // - Pathfinder 2E Core Rulebook, Appendix, page 624, "Armor Class". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyArmorCategory, + "PF2.Proficiency.Armor.Category", + "Character proficiency ranks for different categories of armor." +) // === Unarmored UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryUnarmoredUntrained, - "Armor.Category.Unarmored.Untrained", + Pf2TagProficiencyArmorCategoryUnarmored, + "PF2.Proficiency.Armor.Category.Unarmored", + "Character proficiency ranks for Unarmored Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyArmorCategoryUnarmoredUntrained, + "PF2.Proficiency.Armor.Category.Unarmored.Untrained", "Character is Untrained in Unarmored Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryUnarmoredTrained, - "Armor.Category.Unarmored.Trained", + Pf2TagProficiencyArmorCategoryUnarmoredTrained, + "PF2.Proficiency.Armor.Category.Unarmored.Trained", "Character is Trained in Unarmored Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryUnarmoredExpert, - "Armor.Category.Unarmored.Expert", + Pf2TagProficiencyArmorCategoryUnarmoredExpert, + "PF2.Proficiency.Armor.Category.Unarmored.Expert", "Character is Expert in Unarmored Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryUnarmoredMaster, - "Armor.Category.Unarmored.Master", + Pf2TagProficiencyArmorCategoryUnarmoredMaster, + "PF2.Proficiency.Armor.Category.Unarmored.Master", "Character is Master in Unarmored Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryUnarmoredLegendary, - "Armor.Category.Unarmored.Legendary", + Pf2TagProficiencyArmorCategoryUnarmoredLegendary, + "PF2.Proficiency.Armor.Category.Unarmored.Legendary", "Character is Legendary in Unarmored Defense." ) // === Light UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryLightUntrained, - "Armor.Category.Light.Untrained", + Pf2TagProficiencyArmorCategoryLight, + "PF2.Proficiency.Armor.Category.Light", + "Character proficiency ranks for Light Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyArmorCategoryLightUntrained, + "PF2.Proficiency.Armor.Category.Light.Untrained", "Character is Untrained in Light Armor Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryLightTrained, - "Armor.Category.Light.Trained", + Pf2TagProficiencyArmorCategoryLightTrained, + "PF2.Proficiency.Armor.Category.Light.Trained", "Character is Trained in Light Armor Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryLightExpert, - "Armor.Category.Light.Expert", + Pf2TagProficiencyArmorCategoryLightExpert, + "PF2.Proficiency.Armor.Category.Light.Expert", "Character is Expert in Light Armor Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryLightMaster, - "Armor.Category.Light.Master", + Pf2TagProficiencyArmorCategoryLightMaster, + "PF2.Proficiency.Armor.Category.Light.Master", "Character is Master in Light Armor Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryLightLegendary, - "Armor.Category.Light.Legendary", + Pf2TagProficiencyArmorCategoryLightLegendary, + "PF2.Proficiency.Armor.Category.Light.Legendary", "Character is Legendary in Light Armor Defense." ) // === Medium UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryMediumUntrained, - "Armor.Category.Medium.Untrained", + Pf2TagProficiencyArmorCategoryMedium, + "PF2.Proficiency.Armor.Category.Medium", + "Character proficiency ranks for Medium Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyArmorCategoryMediumUntrained, + "PF2.Proficiency.Armor.Category.Medium.Untrained", "Character is Untrained in Medium Armor Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryMediumTrained, - "Armor.Category.Medium.Trained", + Pf2TagProficiencyArmorCategoryMediumTrained, + "PF2.Proficiency.Armor.Category.Medium.Trained", "Character is Trained in Medium Armor Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryMediumExpert, - "Armor.Category.Medium.Expert", + Pf2TagProficiencyArmorCategoryMediumExpert, + "PF2.Proficiency.Armor.Category.Medium.Expert", "Character is Expert in Medium Armor Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryMediumMaster, - "Armor.Category.Medium.Master", + Pf2TagProficiencyArmorCategoryMediumMaster, + "PF2.Proficiency.Armor.Category.Medium.Master", "Character is Master in Medium Armor Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryMediumLegendary, - "Armor.Category.Medium.Legendary", + Pf2TagProficiencyArmorCategoryMediumLegendary, + "PF2.Proficiency.Armor.Category.Medium.Legendary", "Character is Legendary in Medium Armor Defense." ) // === Heavy UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryHeavyUntrained, - "Armor.Category.Heavy.Untrained", + Pf2TagProficiencyArmorCategoryHeavy, + "PF2.Proficiency.Armor.Category.Heavy", + "Character proficiency ranks for Heavy Armor Defense." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyArmorCategoryHeavyUntrained, + "PF2.Proficiency.Armor.Category.Heavy.Untrained", "Character is Untrained in Heavy Armor Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryHeavyTrained, - "Armor.Category.Heavy.Trained", + Pf2TagProficiencyArmorCategoryHeavyTrained, + "PF2.Proficiency.Armor.Category.Heavy.Trained", "Character is Trained in Heavy Armor Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryHeavyExpert, - "Armor.Category.Heavy.Expert", + Pf2TagProficiencyArmorCategoryHeavyExpert, + "PF2.Proficiency.Armor.Category.Heavy.Expert", "Character is Expert in Heavy Armor Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryHeavyMaster, - "Armor.Category.Heavy.Master", + Pf2TagProficiencyArmorCategoryHeavyMaster, + "PF2.Proficiency.Armor.Category.Heavy.Master", "Character is Master in Heavy Armor Defense." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagArmorCategoryHeavyLegendary, - "Armor.Category.Heavy.Legendary", + Pf2TagProficiencyArmorCategoryHeavyLegendary, + "PF2.Proficiency.Armor.Category.Heavy.Legendary", "Character is Legendary in Heavy Armor Defense." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/ClassDc.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/ClassDc.cpp index b10a42b91..64fdb16c8 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/ClassDc.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/ClassDc.cpp @@ -22,31 +22,37 @@ // - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 69, "Initial Proficiencies". // - Pathfinder 2E Core Rulebook, Appendix, page 624, "Class DC". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagClassDcUntrained, - "ClassDc.Untrained", + Pf2TagProficiencyClassDc, + "PF2.Proficiency.ClassDc", + "Character proficiency ranks for Class Difficulty Class (Class DC)." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyClassDcUntrained, + "PF2.Proficiency.ClassDc.Untrained", "Character is Untrained in Class Difficulty Class (Class DC)." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagClassDcTrained, - "ClassDc.Trained", + Pf2TagProficiencyClassDcTrained, + "PF2.Proficiency.ClassDc.Trained", "Character is Trained in Class Difficulty Class (Class DC)." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagClassDcExpert, - "ClassDc.Expert", + Pf2TagProficiencyClassDcExpert, + "PF2.Proficiency.ClassDc.Expert", "Character is Expert in Class Difficulty Class (Class DC)." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagClassDcMaster, - "ClassDc.Master", + Pf2TagProficiencyClassDcMaster, + "PF2.Proficiency.ClassDc.Master", "Character is Master in Class Difficulty Class (Class DC)." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagClassDcLegendary, - "ClassDc.Legendary", + Pf2TagProficiencyClassDcLegendary, + "PF2.Proficiency.ClassDc.Legendary", "Character is Legendary in Class Difficulty Class (Class DC)." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Perception.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Perception.cpp index e20c03ea9..46958e04a 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Perception.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Perception.cpp @@ -22,31 +22,37 @@ // - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 69, "Initial Proficiencies". // - Pathfinder 2E Core Rulebook, Appendix, page 624, "Perception". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagPerceptionUntrained, - "Perception.Untrained", + Pf2TagProficiencyPerception, + "PF2.Proficiency.Perception", + "Character proficiency ranks for Perception (how alert they are)." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyPerceptionUntrained, + "PF2.Proficiency.Perception.Untrained", "Character is Untrained in Perception." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagPerceptionTrained, - "Perception.Trained", + Pf2TagProficiencyPerceptionTrained, + "PF2.Proficiency.Perception.Trained", "Character is Trained in Perception." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagPerceptionExpert, - "Perception.Expert", + Pf2TagProficiencyPerceptionExpert, + "PF2.Proficiency.Perception.Expert", "Character is Expert in Perception." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagPerceptionMaster, - "Perception.Master", + Pf2TagProficiencyPerceptionMaster, + "PF2.Proficiency.Perception.Master", "Character is Master in Perception." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagPerceptionLegendary, - "Perception.Legendary", + Pf2TagProficiencyPerceptionLegendary, + "PF2.Proficiency.Perception.Legendary", "Character is Legendary in Perception." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SavingThrows.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SavingThrows.cpp index 091e9cb25..a77e8f415 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SavingThrows.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SavingThrows.cpp @@ -22,93 +22,110 @@ // === Fortitude UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowFortitudeUntrained, - "SavingThrow.Fortitude.Untrained", + Pf2TagProficiencySavingThrowFortitude, + "PF2.Proficiency.SavingThrow.Fortitude", + "Character proficiency ranks for Fortitude saving throws." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySavingThrowFortitudeUntrained, + "PF2.Proficiency.SavingThrow.Fortitude.Untrained", "Character is Untrained in Fortitude." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowFortitudeTrained, - "SavingThrow.Fortitude.Trained", + Pf2TagProficiencySavingThrowFortitudeTrained, + "PF2.Proficiency.SavingThrow.Fortitude.Trained", "Character is Trained in Fortitude." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowFortitudeExpert, - "SavingThrow.Fortitude.Expert", + Pf2TagProficiencySavingThrowFortitudeExpert, + "PF2.Proficiency.SavingThrow.Fortitude.Expert", "Character is Expert in Fortitude." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowFortitudeMaster, - "SavingThrow.Fortitude.Master", + Pf2TagProficiencySavingThrowFortitudeMaster, + "PF2.Proficiency.SavingThrow.Fortitude.Master", "Character is Master in Fortitude." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowFortitudeLegendary, - "SavingThrow.Fortitude.Legendary", + Pf2TagProficiencySavingThrowFortitudeLegendary, + "PF2.Proficiency.SavingThrow.Fortitude.Legendary", "Character is Legendary in Fortitude." ) // === Reflex UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowReflexUntrained, - "SavingThrow.Reflex.Untrained", + Pf2TagProficiencySavingThrowReflex, + "PF2.Proficiency.SavingThrow.Reflex", + "Character proficiency ranks for Reflex saving throws." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySavingThrowReflexUntrained, + "PF2.Proficiency.SavingThrow.Reflex.Untrained", "Character is Untrained in Reflex." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowReflexTrained, - "SavingThrow.Reflex.Trained", + Pf2TagProficiencySavingThrowReflexTrained, + "PF2.Proficiency.SavingThrow.Reflex.Trained", "Character is Trained in Reflex." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowReflexExpert, - "SavingThrow.Reflex.Expert", + Pf2TagProficiencySavingThrowReflexExpert, + "PF2.Proficiency.SavingThrow.Reflex.Expert", "Character is Expert in Reflex." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowReflexMaster, - "SavingThrow.Reflex.Master", + Pf2TagProficiencySavingThrowReflexMaster, + "PF2.Proficiency.SavingThrow.Reflex.Master", "Character is Master in Reflex." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowReflexLegendary, - "SavingThrow.Reflex.Legendary", + Pf2TagProficiencySavingThrowReflexLegendary, + "PF2.Proficiency.SavingThrow.Reflex.Legendary", "Character is Legendary in Reflex." ) // === Will UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowWillUntrained, - "SavingThrow.Will.Untrained", + Pf2TagProficiencySavingThrowWill, + "PF2.Proficiency.SavingThrow.Will", + "Character proficiency ranks for Will saving throws." +) +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySavingThrowWillUntrained, + "PF2.Proficiency.SavingThrow.Will.Untrained", "Character is Untrained in Will." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowWillTrained, - "SavingThrow.Will.Trained", + Pf2TagProficiencySavingThrowWillTrained, + "PF2.Proficiency.SavingThrow.Will.Trained", "Character is Trained in Will." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowWillExpert, - "SavingThrow.Will.Expert", + Pf2TagProficiencySavingThrowWillExpert, + "PF2.Proficiency.SavingThrow.Will.Expert", "Character is Expert in Will." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowWillMaster, - "SavingThrow.Will.Master", + Pf2TagProficiencySavingThrowWillMaster, + "PF2.Proficiency.SavingThrow.Will.Master", "Character is Master in Will." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSavingThrowWillLegendary, - "SavingThrow.Will.Legendary", + Pf2TagProficiencySavingThrowWillLegendary, + "PF2.Proficiency.SavingThrow.Will.Legendary", "Character is Legendary in Will." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Skills.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Skills.cpp index b48672ee8..549793be2 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Skills.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Skills.cpp @@ -23,558 +23,666 @@ // === Acrobatics UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillAcrobaticsUntrained, - "Skill.Acrobatics.Untrained", + Pf2TagProficiencySkillAcrobatics, + "PF2.Proficiency.Skill.Acrobatics", + "Character proficiency ranks for Acrobatics." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillAcrobaticsUntrained, + "PF2.Proficiency.Skill.Acrobatics.Untrained", "Character is Untrained in Acrobatics." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillAcrobaticsTrained, - "Skill.Acrobatics.Trained", + Pf2TagProficiencySkillAcrobaticsTrained, + "PF2.Proficiency.Skill.Acrobatics.Trained", "Character is Trained in Acrobatics." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillAcrobaticsExpert, - "Skill.Acrobatics.Expert", + Pf2TagProficiencySkillAcrobaticsExpert, + "PF2.Proficiency.Skill.Acrobatics.Expert", "Character is Expert in Acrobatics." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillAcrobaticsMaster, - "Skill.Acrobatics.Master", + Pf2TagProficiencySkillAcrobaticsMaster, + "PF2.Proficiency.Skill.Acrobatics.Master", "Character is Master in Acrobatics." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillAcrobaticsLegendary, - "Skill.Acrobatics.Legendary", + Pf2TagProficiencySkillAcrobaticsLegendary, + "PF2.Proficiency.Skill.Acrobatics.Legendary", "Character is Legendary in Acrobatics." ) // === Arcana UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillArcanaUntrained, - "Skill.Arcana.Untrained", + Pf2TagProficiencySkillArcana, + "PF2.Proficiency.Skill.Arcana", + "Character proficiency ranks for Arcana." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillArcanaUntrained, + "PF2.Proficiency.Skill.Arcana.Untrained", "Character is Untrained in Arcana." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillArcanaTrained, - "Skill.Arcana.Trained", + Pf2TagProficiencySkillArcanaTrained, + "PF2.Proficiency.Skill.Arcana.Trained", "Character is Trained in Arcana." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillArcanaExpert, - "Skill.Arcana.Expert", + Pf2TagProficiencySkillArcanaExpert, + "PF2.Proficiency.Skill.Arcana.Expert", "Character is Expert in Arcana." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillArcanaMaster, - "Skill.Arcana.Master", + Pf2TagProficiencySkillArcanaMaster, + "PF2.Proficiency.Skill.Arcana.Master", "Character is Master in Arcana." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillArcanaLegendary, - "Skill.Arcana.Legendary", + Pf2TagProficiencySkillArcanaLegendary, + "PF2.Proficiency.Skill.Arcana.Legendary", "Character is Legendary in Arcana." ) // === Athletics UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillAthleticsUntrained, - "Skill.Athletics.Untrained", + Pf2TagProficiencySkillAthletics, + "PF2.Proficiency.Skill.Athletics", + "Character proficiency ranks for Athletics." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillAthleticsUntrained, + "PF2.Proficiency.Skill.Athletics.Untrained", "Character is Untrained in Athletics." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillAthleticsTrained, - "Skill.Athletics.Trained", + Pf2TagProficiencySkillAthleticsTrained, + "PF2.Proficiency.Skill.Athletics.Trained", "Character is Trained in Athletics." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillAthleticsExpert, - "Skill.Athletics.Expert", + Pf2TagProficiencySkillAthleticsExpert, + "PF2.Proficiency.Skill.Athletics.Expert", "Character is Expert in Athletics." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillAthleticsMaster, - "Skill.Athletics.Master", + Pf2TagProficiencySkillAthleticsMaster, + "PF2.Proficiency.Skill.Athletics.Master", "Character is Master in Athletics." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillAthleticsLegendary, - "Skill.Athletics.Legendary", + Pf2TagProficiencySkillAthleticsLegendary, + "PF2.Proficiency.Skill.Athletics.Legendary", "Character is Legendary in Athletics." ) // === Crafting UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillCraftingUntrained, - "Skill.Crafting.Untrained", + Pf2TagProficiencySkillCrafting, + "PF2.Proficiency.Skill.Crafting", + "Character proficiency ranks for Crafting." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillCraftingUntrained, + "PF2.Proficiency.Skill.Crafting.Untrained", "Character is Untrained in Crafting." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillCraftingTrained, - "Skill.Crafting.Trained", + Pf2TagProficiencySkillCraftingTrained, + "PF2.Proficiency.Skill.Crafting.Trained", "Character is Trained in Crafting." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillCraftingExpert, - "Skill.Crafting.Expert", + Pf2TagProficiencySkillCraftingExpert, + "PF2.Proficiency.Skill.Crafting.Expert", "Character is Expert in Crafting." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillCraftingMaster, - "Skill.Crafting.Master", + Pf2TagProficiencySkillCraftingMaster, + "PF2.Proficiency.Skill.Crafting.Master", "Character is Master in Crafting." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillCraftingLegendary, - "Skill.Crafting.Legendary", + Pf2TagProficiencySkillCraftingLegendary, + "PF2.Proficiency.Skill.Crafting.Legendary", "Character is Legendary in Crafting." ) // === Deception UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillDeceptionUntrained, - "Skill.Deception.Untrained", + Pf2TagProficiencySkillDeception, + "PF2.Proficiency.Skill.Deception", + "Character proficiency ranks for Deception." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillDeceptionUntrained, + "PF2.Proficiency.Skill.Deception.Untrained", "Character is Untrained in Deception." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillDeceptionTrained, - "Skill.Deception.Trained", + Pf2TagProficiencySkillDeceptionTrained, + "PF2.Proficiency.Skill.Deception.Trained", "Character is Trained in Deception." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillDeceptionExpert, - "Skill.Deception.Expert", + Pf2TagProficiencySkillDeceptionExpert, + "PF2.Proficiency.Skill.Deception.Expert", "Character is Expert in Deception." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillDeceptionMaster, - "Skill.Deception.Master", + Pf2TagProficiencySkillDeceptionMaster, + "PF2.Proficiency.Skill.Deception.Master", "Character is Master in Deception." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillDeceptionLegendary, - "Skill.Deception.Legendary", + Pf2TagProficiencySkillDeceptionLegendary, + "PF2.Proficiency.Skill.Deception.Legendary", "Character is Legendary in Deception." ) // === Diplomacy UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillDiplomacyUntrained, - "Skill.Diplomacy.Untrained", + Pf2TagProficiencySkillDiplomacy, + "PF2.Proficiency.Skill.Diplomacy", + "Character proficiency ranks for Diplomacy." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillDiplomacyUntrained, + "PF2.Proficiency.Skill.Diplomacy.Untrained", "Character is Untrained in Diplomacy." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillDiplomacyTrained, - "Skill.Diplomacy.Trained", + Pf2TagProficiencySkillDiplomacyTrained, + "PF2.Proficiency.Skill.Diplomacy.Trained", "Character is Trained in Diplomacy." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillDiplomacyExpert, - "Skill.Diplomacy.Expert", + Pf2TagProficiencySkillDiplomacyExpert, + "PF2.Proficiency.Skill.Diplomacy.Expert", "Character is Expert in Diplomacy." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillDiplomacyMaster, - "Skill.Diplomacy.Master", + Pf2TagProficiencySkillDiplomacyMaster, + "PF2.Proficiency.Skill.Diplomacy.Master", "Character is Master in Diplomacy." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillDiplomacyLegendary, - "Skill.Diplomacy.Legendary", + Pf2TagProficiencySkillDiplomacyLegendary, + "PF2.Proficiency.Skill.Diplomacy.Legendary", "Character is Legendary in Diplomacy." ) // === Intimidation UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillIntimidationUntrained, - "Skill.Intimidation.Untrained", + Pf2TagProficiencySkillIntimidation, + "PF2.Proficiency.Skill.Intimidation", + "Character proficiency ranks for Intimidation." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillIntimidationUntrained, + "PF2.Proficiency.Skill.Intimidation.Untrained", "Character is Untrained in Intimidation." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillIntimidationTrained, - "Skill.Intimidation.Trained", + Pf2TagProficiencySkillIntimidationTrained, + "PF2.Proficiency.Skill.Intimidation.Trained", "Character is Trained in Intimidation." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillIntimidationExpert, - "Skill.Intimidation.Expert", + Pf2TagProficiencySkillIntimidationExpert, + "PF2.Proficiency.Skill.Intimidation.Expert", "Character is Expert in Intimidation." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillIntimidationMaster, - "Skill.Intimidation.Master", + Pf2TagProficiencySkillIntimidationMaster, + "PF2.Proficiency.Skill.Intimidation.Master", "Character is Master in Intimidation." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillIntimidationLegendary, - "Skill.Intimidation.Legendary", + Pf2TagProficiencySkillIntimidationLegendary, + "PF2.Proficiency.Skill.Intimidation.Legendary", "Character is Legendary in Intimidation." ) // === Lore1 UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillLore1Untrained, - "Skill.Lore1.Untrained", - "Character is Untrained in Lore1." + Pf2TagProficiencySkillLore1, + "PF2.Proficiency.Skill.Lore1", + "Character proficiency ranks for first lore specialization." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillLore1Trained, - "Skill.Lore1.Trained", - "Character is Trained in Lore1." + Pf2TagProficiencySkillLore1Untrained, + "PF2.Proficiency.Skill.Lore1.Untrained", + "Character is Untrained in first lore specialization." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillLore1Expert, - "Skill.Lore1.Expert", - "Character is Expert in Lore1." + Pf2TagProficiencySkillLore1Trained, + "PF2.Proficiency.Skill.Lore1.Trained", + "Character is Trained in first lore specialization." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillLore1Master, - "Skill.Lore1.Master", - "Character is Master in Lore1." + Pf2TagProficiencySkillLore1Expert, + "PF2.Proficiency.Skill.Lore1.Expert", + "Character is Expert in first lore specialization." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillLore1Legendary, - "Skill.Lore1.Legendary", - "Character is Legendary in Lore1." + Pf2TagProficiencySkillLore1Master, + "PF2.Proficiency.Skill.Lore1.Master", + "Character is Master in first lore specialization." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillLore1Legendary, + "PF2.Proficiency.Skill.Lore1.Legendary", + "Character is Legendary in first lore specialization." ) // === Lore2 UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillLore2Untrained, - "Skill.Lore2.Untrained", - "Character is Untrained in Lore2." + Pf2TagProficiencySkillLore2, + "PF2.Proficiency.Skill.Lore2", + "Character proficiency ranks for second lore specialization." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillLore2Untrained, + "PF2.Proficiency.Skill.Lore2.Untrained", + "Character is Untrained in second lore specialization." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillLore2Trained, - "Skill.Lore2.Trained", - "Character is Trained in Lore2." + Pf2TagProficiencySkillLore2Trained, + "PF2.Proficiency.Skill.Lore2.Trained", + "Character is Trained in second lore specialization." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillLore2Expert, - "Skill.Lore2.Expert", - "Character is Expert in Lore2." + Pf2TagProficiencySkillLore2Expert, + "PF2.Proficiency.Skill.Lore2.Expert", + "Character is Expert in second lore specialization." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillLore2Master, - "Skill.Lore2.Master", - "Character is Master in Lore2." + Pf2TagProficiencySkillLore2Master, + "PF2.Proficiency.Skill.Lore2.Master", + "Character is Master in second lore specialization." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillLore2Legendary, - "Skill.Lore2.Legendary", - "Character is Legendary in Lore2." + Pf2TagProficiencySkillLore2Legendary, + "PF2.Proficiency.Skill.Lore2.Legendary", + "Character is Legendary in second lore specialization." ) // === Medicine UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillMedicineUntrained, - "Skill.Medicine.Untrained", + Pf2TagProficiencySkillMedicine, + "PF2.Proficiency.Skill.Medicine", + "Character proficiency ranks for Medicine." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillMedicineUntrained, + "PF2.Proficiency.Skill.Medicine.Untrained", "Character is Untrained in Medicine." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillMedicineTrained, - "Skill.Medicine.Trained", + Pf2TagProficiencySkillMedicineTrained, + "PF2.Proficiency.Skill.Medicine.Trained", "Character is Trained in Medicine." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillMedicineExpert, - "Skill.Medicine.Expert", + Pf2TagProficiencySkillMedicineExpert, + "PF2.Proficiency.Skill.Medicine.Expert", "Character is Expert in Medicine." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillMedicineMaster, - "Skill.Medicine.Master", + Pf2TagProficiencySkillMedicineMaster, + "PF2.Proficiency.Skill.Medicine.Master", "Character is Master in Medicine." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillMedicineLegendary, - "Skill.Medicine.Legendary", + Pf2TagProficiencySkillMedicineLegendary, + "PF2.Proficiency.Skill.Medicine.Legendary", "Character is Legendary in Medicine." ) // === Nature UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillNatureUntrained, - "Skill.Nature.Untrained", + Pf2TagProficiencySkillNature, + "PF2.Proficiency.Skill.Nature", + "Character proficiency ranks for Nature." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillNatureUntrained, + "PF2.Proficiency.Skill.Nature.Untrained", "Character is Untrained in Nature." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillNatureTrained, - "Skill.Nature.Trained", + Pf2TagProficiencySkillNatureTrained, + "PF2.Proficiency.Skill.Nature.Trained", "Character is Trained in Nature." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillNatureExpert, - "Skill.Nature.Expert", + Pf2TagProficiencySkillNatureExpert, + "PF2.Proficiency.Skill.Nature.Expert", "Character is Expert in Nature." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillNatureMaster, - "Skill.Nature.Master", + Pf2TagProficiencySkillNatureMaster, + "PF2.Proficiency.Skill.Nature.Master", "Character is Master in Nature." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillNatureLegendary, - "Skill.Nature.Legendary", + Pf2TagProficiencySkillNatureLegendary, + "PF2.Proficiency.Skill.Nature.Legendary", "Character is Legendary in Nature." ) // === Occultism UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillOccultismUntrained, - "Skill.Occultism.Untrained", + Pf2TagProficiencySkillOccultism, + "PF2.Proficiency.Skill.Occultism", + "Character proficiency ranks for Occultism." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillOccultismUntrained, + "PF2.Proficiency.Skill.Occultism.Untrained", "Character is Untrained in Occultism." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillOccultismTrained, - "Skill.Occultism.Trained", + Pf2TagProficiencySkillOccultismTrained, + "PF2.Proficiency.Skill.Occultism.Trained", "Character is Trained in Occultism." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillOccultismExpert, - "Skill.Occultism.Expert", + Pf2TagProficiencySkillOccultismExpert, + "PF2.Proficiency.Skill.Occultism.Expert", "Character is Expert in Occultism." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillOccultismMaster, - "Skill.Occultism.Master", + Pf2TagProficiencySkillOccultismMaster, + "PF2.Proficiency.Skill.Occultism.Master", "Character is Master in Occultism." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillOccultismLegendary, - "Skill.Occultism.Legendary", + Pf2TagProficiencySkillOccultismLegendary, + "PF2.Proficiency.Skill.Occultism.Legendary", "Character is Legendary in Occultism." ) // === Performance UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillPerformanceUntrained, - "Skill.Performance.Untrained", + Pf2TagProficiencySkillPerformance, + "PF2.Proficiency.Skill.Performance", + "Character proficiency ranks for Performance." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillPerformanceUntrained, + "PF2.Proficiency.Skill.Performance.Untrained", "Character is Untrained in Performance." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillPerformanceTrained, - "Skill.Performance.Trained", + Pf2TagProficiencySkillPerformanceTrained, + "PF2.Proficiency.Skill.Performance.Trained", "Character is Trained in Performance." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillPerformanceExpert, - "Skill.Performance.Expert", + Pf2TagProficiencySkillPerformanceExpert, + "PF2.Proficiency.Skill.Performance.Expert", "Character is Expert in Performance." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillPerformanceMaster, - "Skill.Performance.Master", + Pf2TagProficiencySkillPerformanceMaster, + "PF2.Proficiency.Skill.Performance.Master", "Character is Master in Performance." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillPerformanceLegendary, - "Skill.Performance.Legendary", + Pf2TagProficiencySkillPerformanceLegendary, + "PF2.Proficiency.Skill.Performance.Legendary", "Character is Legendary in Performance." ) // === Religion UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillReligionUntrained, - "Skill.Religion.Untrained", + Pf2TagProficiencySkillReligion, + "PF2.Proficiency.Skill.Religion", + "Character proficiency ranks for Religion." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillReligionUntrained, + "PF2.Proficiency.Skill.Religion.Untrained", "Character is Untrained in Religion." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillReligionTrained, - "Skill.Religion.Trained", + Pf2TagProficiencySkillReligionTrained, + "PF2.Proficiency.Skill.Religion.Trained", "Character is Trained in Religion." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillReligionExpert, - "Skill.Religion.Expert", + Pf2TagProficiencySkillReligionExpert, + "PF2.Proficiency.Skill.Religion.Expert", "Character is Expert in Religion." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillReligionMaster, - "Skill.Religion.Master", + Pf2TagProficiencySkillReligionMaster, + "PF2.Proficiency.Skill.Religion.Master", "Character is Master in Religion." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillReligionLegendary, - "Skill.Religion.Legendary", + Pf2TagProficiencySkillReligionLegendary, + "PF2.Proficiency.Skill.Religion.Legendary", "Character is Legendary in Religion." ) // === Society UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillSocietyUntrained, - "Skill.Society.Untrained", + Pf2TagProficiencySkillSociety, + "PF2.Proficiency.Skill.Society", + "Character proficiency ranks for Society." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillSocietyUntrained, + "PF2.Proficiency.Skill.Society.Untrained", "Character is Untrained in Society." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillSocietyTrained, - "Skill.Society.Trained", + Pf2TagProficiencySkillSocietyTrained, + "PF2.Proficiency.Skill.Society.Trained", "Character is Trained in Society." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillSocietyExpert, - "Skill.Society.Expert", + Pf2TagProficiencySkillSocietyExpert, + "PF2.Proficiency.Skill.Society.Expert", "Character is Expert in Society." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillSocietyMaster, - "Skill.Society.Master", + Pf2TagProficiencySkillSocietyMaster, + "PF2.Proficiency.Skill.Society.Master", "Character is Master in Society." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillSocietyLegendary, - "Skill.Society.Legendary", + Pf2TagProficiencySkillSocietyLegendary, + "PF2.Proficiency.Skill.Society.Legendary", "Character is Legendary in Society." ) // === Stealth UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillStealthUntrained, - "Skill.Stealth.Untrained", + Pf2TagProficiencySkillStealth, + "PF2.Proficiency.Skill.Stealth", + "Character proficiency ranks for Stealth." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillStealthUntrained, + "PF2.Proficiency.Skill.Stealth.Untrained", "Character is Untrained in Stealth." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillStealthTrained, - "Skill.Stealth.Trained", + Pf2TagProficiencySkillStealthTrained, + "PF2.Proficiency.Skill.Stealth.Trained", "Character is Trained in Stealth." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillStealthExpert, - "Skill.Stealth.Expert", + Pf2TagProficiencySkillStealthExpert, + "PF2.Proficiency.Skill.Stealth.Expert", "Character is Expert in Stealth." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillStealthMaster, - "Skill.Stealth.Master", + Pf2TagProficiencySkillStealthMaster, + "PF2.Proficiency.Skill.Stealth.Master", "Character is Master in Stealth." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillStealthLegendary, - "Skill.Stealth.Legendary", + Pf2TagProficiencySkillStealthLegendary, + "PF2.Proficiency.Skill.Stealth.Legendary", "Character is Legendary in Stealth." ) // === Survival UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillSurvivalUntrained, - "Skill.Survival.Untrained", + Pf2TagProficiencySkillSurvival, + "PF2.Proficiency.Skill.Survival", + "Character proficiency ranks for Survival." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillSurvivalUntrained, + "PF2.Proficiency.Skill.Survival.Untrained", "Character is Untrained in Survival." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillSurvivalTrained, - "Skill.Survival.Trained", + Pf2TagProficiencySkillSurvivalTrained, + "PF2.Proficiency.Skill.Survival.Trained", "Character is Trained in Survival." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillSurvivalExpert, - "Skill.Survival.Expert", + Pf2TagProficiencySkillSurvivalExpert, + "PF2.Proficiency.Skill.Survival.Expert", "Character is Expert in Survival." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillSurvivalMaster, - "Skill.Survival.Master", + Pf2TagProficiencySkillSurvivalMaster, + "PF2.Proficiency.Skill.Survival.Master", "Character is Master in Survival." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillSurvivalLegendary, - "Skill.Survival.Legendary", + Pf2TagProficiencySkillSurvivalLegendary, + "PF2.Proficiency.Skill.Survival.Legendary", "Character is Legendary in Survival." ) // === Thievery UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillThieveryUntrained, - "Skill.Thievery.Untrained", + Pf2TagProficiencySkillThievery, + "PF2.Proficiency.Skill.Thievery", + "Character proficiency ranks for Thievery." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySkillThieveryUntrained, + "PF2.Proficiency.Skill.Thievery.Untrained", "Character is Untrained in Thievery." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillThieveryTrained, - "Skill.Thievery.Trained", + Pf2TagProficiencySkillThieveryTrained, + "PF2.Proficiency.Skill.Thievery.Trained", "Character is Trained in Thievery." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillThieveryExpert, - "Skill.Thievery.Expert", + Pf2TagProficiencySkillThieveryExpert, + "PF2.Proficiency.Skill.Thievery.Expert", "Character is Expert in Thievery." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillThieveryMaster, - "Skill.Thievery.Master", + Pf2TagProficiencySkillThieveryMaster, + "PF2.Proficiency.Skill.Thievery.Master", "Character is Master in Thievery." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSkillThieveryLegendary, - "Skill.Thievery.Legendary", + Pf2TagProficiencySkillThieveryLegendary, + "PF2.Proficiency.Skill.Thievery.Legendary", "Character is Legendary in Thievery." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellAttacks.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellAttacks.cpp index d5b85b408..f5388094a 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellAttacks.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellAttacks.cpp @@ -13,35 +13,41 @@ #include "GameplayTags/Stats/Proficiencies/SpellAttacks.h" // ===================================================================================================================== -// Proficiency Ranks for Spell Attacks (Spell Attack Roll). +// Proficiency Ranks for spell attacks (Spell Attack Roll). // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Appendix, page 627, "Spell Attack Roll". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSpellAttackUntrained, - "SpellAttack.Untrained", + Pf2TagProficiencySpellAttack, + "PF2.Proficiency.SpellAttack", + "Character proficiency ranks for spell attacks (Spell Attack Roll)." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySpellAttackUntrained, + "PF2.Proficiency.SpellAttack.Untrained", "Character is Untrained in spell attacks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSpellAttackTrained, - "SpellAttack.Trained", + Pf2TagProficiencySpellAttackTrained, + "PF2.Proficiency.SpellAttack.Trained", "Character is Trained in spell attacks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSpellAttackExpert, - "SpellAttack.Expert", + Pf2TagProficiencySpellAttackExpert, + "PF2.Proficiency.SpellAttack.Expert", "Character is Expert in spell attacks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSpellAttackMaster, - "SpellAttack.Master", + Pf2TagProficiencySpellAttackMaster, + "PF2.Proficiency.SpellAttack.Master", "Character is Master in spell attacks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSpellAttackLegendary, - "SpellAttack.Legendary", + Pf2TagProficiencySpellAttackLegendary, + "PF2.Proficiency.SpellAttack.Legendary", "Character is Legendary in spell attacks." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellDc.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellDc.cpp index 484ab39da..1f9577be2 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellDc.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/SpellDc.cpp @@ -17,31 +17,37 @@ // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Appendix, page 627, "Spell DC". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSpellDcUntrained, - "SpellDc.Untrained", + Pf2TagProficiencySpellDc, + "PF2.Proficiency.SpellDc", + "Character proficiency ranks for Spell DC (Difficulty Class) and spellcasting." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencySpellDcUntrained, + "PF2.Proficiency.SpellDc.Untrained", "Character is Untrained in spellcasting." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSpellDcTrained, - "SpellDc.Trained", + Pf2TagProficiencySpellDcTrained, + "PF2.Proficiency.SpellDc.Trained", "Character is Trained in spellcasting." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSpellDcExpert, - "SpellDc.Expert", + Pf2TagProficiencySpellDcExpert, + "PF2.Proficiency.SpellDc.Expert", "Character is Expert in spellcasting." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSpellDcMaster, - "SpellDc.Master", + Pf2TagProficiencySpellDcMaster, + "PF2.Proficiency.SpellDc.Master", "Character is Master in spellcasting." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagSpellDcLegendary, - "SpellDc.Legendary", + Pf2TagProficiencySpellDcLegendary, + "PF2.Proficiency.SpellDc.Legendary", "Character is Legendary in spellcasting." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Weapons.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Weapons.cpp index e4991564c..9e01c3b03 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Weapons.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/Proficiencies/Weapons.cpp @@ -12,6 +12,21 @@ #include "GameplayTags/Stats/Proficiencies/Weapons.h" +// ===================================================================================================================== +// Proficiency Ranks for Weapons +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeapon, + "PF2.Proficiency.Weapon", + "Character proficiency ranks for weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategory, + "PF2.Proficiency.Weapon.Category", + "Character proficiency ranks for broad categories of weapons." +) + // ===================================================================================================================== // Proficiency Ranks for Unarmed Attacks // ===================================================================================================================== @@ -29,32 +44,38 @@ // - Chapter 3, page 191, "Attacks" for "Sorcerer" // - Chapter 3, page 203, "Attacks" for "Wizard" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryUnarmedUntrained, - "WeaponProficiency.Category.Unarmed.Untrained", + Pf2TagProficiencyWeaponCategoryUnarmed, + "PF2.Proficiency.Weapon.Category.Unarmed", + "Character proficiency ranks for Unarmed attacks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryUnarmedUntrained, + "PF2.Proficiency.Weapon.Category.Unarmed.Untrained", "Character is Untrained with Unarmed attacks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryUnarmedTrained, - "WeaponProficiency.Category.Unarmed.Trained", + Pf2TagProficiencyWeaponCategoryUnarmedTrained, + "PF2.Proficiency.Weapon.Category.Unarmed.Trained", "Character is Trained with Unarmed attacks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryUnarmedExpert, - "WeaponProficiency.Category.Unarmed.Expert", + Pf2TagProficiencyWeaponCategoryUnarmedExpert, + "PF2.Proficiency.Weapon.Category.Unarmed.Expert", "Character is Expert with Unarmed attacks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryUnarmedMaster, - "WeaponProficiency.Category.Unarmed.Master", + Pf2TagProficiencyWeaponCategoryUnarmedMaster, + "PF2.Proficiency.Weapon.Category.Unarmed.Master", "Character is Master with Unarmed attacks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryUnarmedLegendary, - "WeaponProficiency.Category.Unarmed.Legendary", + Pf2TagProficiencyWeaponCategoryUnarmedLegendary, + "PF2.Proficiency.Weapon.Category.Unarmed.Legendary", "Character is Legendary with Unarmed attacks." ) @@ -74,32 +95,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // - Chapter 3, page 179, "Attacks" for "Rogue" // - Chapter 3, page 191, "Attacks" for "Sorcerer" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategorySimpleUntrained, - "WeaponProficiency.Category.Simple.Untrained", + Pf2TagProficiencyWeaponCategorySimple, + "PF2.Proficiency.Weapon.Category.Simple", + "Character proficiency ranks for Simple weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategorySimpleUntrained, + "PF2.Proficiency.Weapon.Category.Simple.Untrained", "Character is Untrained with Simple weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategorySimpleTrained, - "WeaponProficiency.Category.Simple.Trained", + Pf2TagProficiencyWeaponCategorySimpleTrained, + "PF2.Proficiency.Weapon.Category.Simple.Trained", "Character is Trained with Simple weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategorySimpleExpert, - "WeaponProficiency.Category.Simple.Expert", + Pf2TagProficiencyWeaponCategorySimpleExpert, + "PF2.Proficiency.Weapon.Category.Simple.Expert", "Character is Expert with Simple weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategorySimpleMaster, - "WeaponProficiency.Category.Simple.Master", + Pf2TagProficiencyWeaponCategorySimpleMaster, + "PF2.Proficiency.Weapon.Category.Simple.Master", "Character is Master with Simple weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategorySimpleLegendary, - "WeaponProficiency.Category.Simple.Legendary", + Pf2TagProficiencyWeaponCategorySimpleLegendary, + "PF2.Proficiency.Weapon.Category.Simple.Legendary", "Character is Legendary with Simple weapons." ) @@ -109,32 +136,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // Weapon type mentioned in Pathfinder 2E Core Rulebook under: // - Chapter 3, page 141, "Attacks" for "Fighter" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedUntrained, - "WeaponProficiency.Category.Advanced.Untrained", + Pf2TagProficiencyWeaponCategoryAdvanced, + "PF2.Proficiency.Weapon.Category.Advanced", + "Character proficiency ranks for Advanced weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryAdvancedUntrained, + "PF2.Proficiency.Weapon.Category.Advanced.Untrained", "Character is Untrained with Advanced weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedTrained, - "WeaponProficiency.Category.Advanced.Trained", + Pf2TagProficiencyWeaponCategoryAdvancedTrained, + "PF2.Proficiency.Weapon.Category.Advanced.Trained", "Character is Trained with Advanced weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedExpert, - "WeaponProficiency.Category.Advanced.Expert", + Pf2TagProficiencyWeaponCategoryAdvancedExpert, + "PF2.Proficiency.Weapon.Category.Advanced.Expert", "Character is Expert with Advanced weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedMaster, - "WeaponProficiency.Category.Advanced.Master", + Pf2TagProficiencyWeaponCategoryAdvancedMaster, + "PF2.Proficiency.Weapon.Category.Advanced.Master", "Character is Master with Advanced weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedLegendary, - "WeaponProficiency.Category.Advanced.Legendary", + Pf2TagProficiencyWeaponCategoryAdvancedLegendary, + "PF2.Proficiency.Weapon.Category.Advanced.Legendary", "Character is Legendary with Advanced weapons." ) @@ -144,32 +177,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // From the Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity": // "For the purpose of determining your proficiency, [...] advanced dwarf weapons are martial weapons." UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedDwarfUntrained, - "WeaponProficiency.Category.AdvancedDwarf.Untrained", + Pf2TagProficiencyWeaponCategoryAdvancedDwarf, + "PF2.Proficiency.Weapon.Category.AdvancedDwarf", + "Character proficiency ranks for Advanced Dwarf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryAdvancedDwarfUntrained, + "PF2.Proficiency.Weapon.Category.AdvancedDwarf.Untrained", "Character is Untrained with Advanced Dwarf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedDwarfTrained, - "WeaponProficiency.Category.AdvancedDwarf.Trained", + Pf2TagProficiencyWeaponCategoryAdvancedDwarfTrained, + "PF2.Proficiency.Weapon.Category.AdvancedDwarf.Trained", "Character is Trained with Advanced Dwarf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedDwarfExpert, - "WeaponProficiency.Category.AdvancedDwarf.Expert", + Pf2TagProficiencyWeaponCategoryAdvancedDwarfExpert, + "PF2.Proficiency.Weapon.Category.AdvancedDwarf.Expert", "Character is Expert with Advanced Dwarf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedDwarfMaster, - "WeaponProficiency.Category.AdvancedDwarf.Master", + Pf2TagProficiencyWeaponCategoryAdvancedDwarfMaster, + "PF2.Proficiency.Weapon.Category.AdvancedDwarf.Master", "Character is Master with Advanced Dwarf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedDwarfLegendary, - "WeaponProficiency.Category.AdvancedDwarf.Legendary", + Pf2TagProficiencyWeaponCategoryAdvancedDwarfLegendary, + "PF2.Proficiency.Weapon.Category.AdvancedDwarf.Legendary", "Character is Legendary with Advanced Dwarf weapons." ) @@ -179,32 +218,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // From the Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity": // "For the purpose of determining your proficiency, [...] advanced elf weapons are martial weapons." UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedElfUntrained, - "WeaponProficiency.Category.AdvancedElf.Untrained", + Pf2TagProficiencyWeaponCategoryAdvancedElf, + "PF2.Proficiency.Weapon.Category.AdvancedElf", + "Character proficiency ranks for Advanced Elf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryAdvancedElfUntrained, + "PF2.Proficiency.Weapon.Category.AdvancedElf.Untrained", "Character is Untrained with Advanced Elf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedElfTrained, - "WeaponProficiency.Category.AdvancedElf.Trained", + Pf2TagProficiencyWeaponCategoryAdvancedElfTrained, + "PF2.Proficiency.Weapon.Category.AdvancedElf.Trained", "Character is Trained with Advanced Elf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedElfExpert, - "WeaponProficiency.Category.AdvancedElf.Expert", + Pf2TagProficiencyWeaponCategoryAdvancedElfExpert, + "PF2.Proficiency.Weapon.Category.AdvancedElf.Expert", "Character is Expert with Advanced Elf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedElfMaster, - "WeaponProficiency.Category.AdvancedElf.Master", + Pf2TagProficiencyWeaponCategoryAdvancedElfMaster, + "PF2.Proficiency.Weapon.Category.AdvancedElf.Master", "Character is Master with Advanced Elf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedElfLegendary, - "WeaponProficiency.Category.AdvancedElf.Legendary", + Pf2TagProficiencyWeaponCategoryAdvancedElfLegendary, + "PF2.Proficiency.Weapon.Category.AdvancedElf.Legendary", "Character is Legendary with Advanced Elf weapons." ) @@ -214,32 +259,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // From the Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity": // "For the purpose of determining your proficiency, [...] advanced gnome weapons are martial weapons." UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedGnomeUntrained, - "WeaponProficiency.Category.AdvancedGnome.Untrained", + Pf2TagProficiencyWeaponCategoryAdvancedGnome, + "PF2.Proficiency.Weapon.Category.AdvancedGnome", + "Character proficiency ranks for Advanced Gnome weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryAdvancedGnomeUntrained, + "PF2.Proficiency.Weapon.Category.AdvancedGnome.Untrained", "Character is Untrained with Advanced Gnome weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedGnomeTrained, - "WeaponProficiency.Category.AdvancedGnome.Trained", + Pf2TagProficiencyWeaponCategoryAdvancedGnomeTrained, + "PF2.Proficiency.Weapon.Category.AdvancedGnome.Trained", "Character is Trained with Advanced Gnome weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedGnomeExpert, - "WeaponProficiency.Category.AdvancedGnome.Expert", + Pf2TagProficiencyWeaponCategoryAdvancedGnomeExpert, + "PF2.Proficiency.Weapon.Category.AdvancedGnome.Expert", "Character is Expert with Advanced Gnome weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedGnomeMaster, - "WeaponProficiency.Category.AdvancedGnome.Master", + Pf2TagProficiencyWeaponCategoryAdvancedGnomeMaster, + "PF2.Proficiency.Weapon.Category.AdvancedGnome.Master", "Character is Master with Advanced Gnome weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedGnomeLegendary, - "WeaponProficiency.Category.AdvancedGnome.Legendary", + Pf2TagProficiencyWeaponCategoryAdvancedGnomeLegendary, + "PF2.Proficiency.Weapon.Category.AdvancedGnome.Legendary", "Character is Legendary with Advanced Gnome weapons." ) @@ -249,32 +300,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // From the Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity": // "For the purpose of determining your proficiency, [...] advanced goblin weapons are martial weapons." UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedGoblinUntrained, - "WeaponProficiency.Category.AdvancedGoblin.Untrained", + Pf2TagProficiencyWeaponCategoryAdvancedGoblin, + "PF2.Proficiency.Weapon.Category.AdvancedGoblin", + "Character proficiency ranks for Advanced Goblin weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryAdvancedGoblinUntrained, + "PF2.Proficiency.Weapon.Category.AdvancedGoblin.Untrained", "Character is Untrained with Advanced Goblin weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedGoblinTrained, - "WeaponProficiency.Category.AdvancedGoblin.Trained", + Pf2TagProficiencyWeaponCategoryAdvancedGoblinTrained, + "PF2.Proficiency.Weapon.Category.AdvancedGoblin.Trained", "Character is Trained with Advanced Goblin weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedGoblinExpert, - "WeaponProficiency.Category.AdvancedGoblin.Expert", + Pf2TagProficiencyWeaponCategoryAdvancedGoblinExpert, + "PF2.Proficiency.Weapon.Category.AdvancedGoblin.Expert", "Character is Expert with Advanced Goblin weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedGoblinMaster, - "WeaponProficiency.Category.AdvancedGoblin.Master", + Pf2TagProficiencyWeaponCategoryAdvancedGoblinMaster, + "PF2.Proficiency.Weapon.Category.AdvancedGoblin.Master", "Character is Master with Advanced Goblin weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedGoblinLegendary, - "WeaponProficiency.Category.AdvancedGoblin.Legendary", + Pf2TagProficiencyWeaponCategoryAdvancedGoblinLegendary, + "PF2.Proficiency.Weapon.Category.AdvancedGoblin.Legendary", "Character is Legendary with Advanced Goblin weapons." ) @@ -284,32 +341,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // From the Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity": // "For the purpose of determining your proficiency, [...] advanced halfling weapons are martial weapons." UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedHalflingUntrained, - "WeaponProficiency.Category.AdvancedHalfling.Untrained", + Pf2TagProficiencyWeaponCategoryAdvancedHalfling, + "PF2.Proficiency.Weapon.Category.AdvancedHalfling", + "Character proficiency ranks for Advanced Halfling weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryAdvancedHalflingUntrained, + "PF2.Proficiency.Weapon.Category.AdvancedHalfling.Untrained", "Character is Untrained with Advanced Halfling weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedHalflingTrained, - "WeaponProficiency.Category.AdvancedHalfling.Trained", + Pf2TagProficiencyWeaponCategoryAdvancedHalflingTrained, + "PF2.Proficiency.Weapon.Category.AdvancedHalfling.Trained", "Character is Trained with Advanced Halfling weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedHalflingExpert, - "WeaponProficiency.Category.AdvancedHalfling.Expert", + Pf2TagProficiencyWeaponCategoryAdvancedHalflingExpert, + "PF2.Proficiency.Weapon.Category.AdvancedHalfling.Expert", "Character is Expert with Advanced Halfling weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedHalflingMaster, - "WeaponProficiency.Category.AdvancedHalfling.Master", + Pf2TagProficiencyWeaponCategoryAdvancedHalflingMaster, + "PF2.Proficiency.Weapon.Category.AdvancedHalfling.Master", "Character is Master with Advanced Halfling weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryAdvancedHalflingLegendary, - "WeaponProficiency.Category.AdvancedHalfling.Legendary", + Pf2TagProficiencyWeaponCategoryAdvancedHalflingLegendary, + "PF2.Proficiency.Weapon.Category.AdvancedHalfling.Legendary", "Character is Legendary with Advanced Halfling weapons." ) @@ -322,32 +385,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // - Chapter 3, page 141, "Attacks" for "Fighter" // - Chapter 3, page 167, "Attacks" for "Ranger" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialUntrained, - "WeaponProficiency.Category.Martial.Untrained", + Pf2TagProficiencyWeaponCategoryMartial, + "PF2.Proficiency.Weapon.Category.Martial", + "Character proficiency ranks for Martial weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryMartialUntrained, + "PF2.Proficiency.Weapon.Category.Martial.Untrained", "Character is Untrained with Martial weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialTrained, - "WeaponProficiency.Category.Martial.Trained", + Pf2TagProficiencyWeaponCategoryMartialTrained, + "PF2.Proficiency.Weapon.Category.Martial.Trained", "Character is Trained with Martial weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialExpert, - "WeaponProficiency.Category.Martial.Expert", + Pf2TagProficiencyWeaponCategoryMartialExpert, + "PF2.Proficiency.Weapon.Category.Martial.Expert", "Character is Expert with Martial weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialMaster, - "WeaponProficiency.Category.Martial.Master", + Pf2TagProficiencyWeaponCategoryMartialMaster, + "PF2.Proficiency.Weapon.Category.Martial.Master", "Character is Master with Martial weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialLegendary, - "WeaponProficiency.Category.Martial.Legendary", + Pf2TagProficiencyWeaponCategoryMartialLegendary, + "PF2.Proficiency.Weapon.Category.Martial.Legendary", "Character is Legendary with Martial weapons." ) @@ -357,32 +426,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // From the Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity": // "For the purpose of determining your proficiency, martial dwarf weapons are simple weapons..." UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialDwarfUntrained, - "WeaponProficiency.Category.MartialDwarf.Untrained", + Pf2TagProficiencyWeaponCategoryMartialDwarf, + "PF2.Proficiency.Weapon.Category.MartialDwarf", + "Character proficiency ranks for Martial Dwarf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryMartialDwarfUntrained, + "PF2.Proficiency.Weapon.Category.MartialDwarf.Untrained", "Character is Untrained with Martial Dwarf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialDwarfTrained, - "WeaponProficiency.Category.MartialDwarf.Trained", + Pf2TagProficiencyWeaponCategoryMartialDwarfTrained, + "PF2.Proficiency.Weapon.Category.MartialDwarf.Trained", "Character is Trained with Martial Dwarf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialDwarfExpert, - "WeaponProficiency.Category.MartialDwarf.Expert", + Pf2TagProficiencyWeaponCategoryMartialDwarfExpert, + "PF2.Proficiency.Weapon.Category.MartialDwarf.Expert", "Character is Expert with Martial Dwarf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialDwarfMaster, - "WeaponProficiency.Category.MartialDwarf.Master", + Pf2TagProficiencyWeaponCategoryMartialDwarfMaster, + "PF2.Proficiency.Weapon.Category.MartialDwarf.Master", "Character is Master with Martial Dwarf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialDwarfLegendary, - "WeaponProficiency.Category.MartialDwarf.Legendary", + Pf2TagProficiencyWeaponCategoryMartialDwarfLegendary, + "PF2.Proficiency.Weapon.Category.MartialDwarf.Legendary", "Character is Legendary with Martial Dwarf weapons." ) @@ -392,32 +467,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // From the Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity": // "For the purpose of determining your proficiency, martial elf weapons are simple weapons..." UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialElfUntrained, - "WeaponProficiency.Category.MartialElf.Untrained", + Pf2TagProficiencyWeaponCategoryMartialElf, + "PF2.Proficiency.Weapon.Category.MartialElf", + "Character proficiency ranks for Martial Elf weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryMartialElfUntrained, + "PF2.Proficiency.Weapon.Category.MartialElf.Untrained", "Character is Untrained with Martial Elf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialElfTrained, - "WeaponProficiency.Category.MartialElf.Trained", + Pf2TagProficiencyWeaponCategoryMartialElfTrained, + "PF2.Proficiency.Weapon.Category.MartialElf.Trained", "Character is Trained with Martial Elf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialElfExpert, - "WeaponProficiency.Category.MartialElf.Expert", + Pf2TagProficiencyWeaponCategoryMartialElfExpert, + "PF2.Proficiency.Weapon.Category.MartialElf.Expert", "Character is Expert with Martial Elf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialElfMaster, - "WeaponProficiency.Category.MartialElf.Master", + Pf2TagProficiencyWeaponCategoryMartialElfMaster, + "PF2.Proficiency.Weapon.Category.MartialElf.Master", "Character is Master with Martial Elf weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialElfLegendary, - "WeaponProficiency.Category.MartialElf.Legendary", + Pf2TagProficiencyWeaponCategoryMartialElfLegendary, + "PF2.Proficiency.Weapon.Category.MartialElf.Legendary", "Character is Legendary with Martial Elf weapons." ) @@ -427,32 +508,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // From the Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity": // "For the purpose of determining your proficiency, martial gnome weapons are simple weapons..." UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialGnomeUntrained, - "WeaponProficiency.Category.MartialGnome.Untrained", + Pf2TagProficiencyWeaponCategoryMartialGnome, + "PF2.Proficiency.Weapon.Category.MartialGnome", + "Character proficiency ranks for Martial Gnome weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryMartialGnomeUntrained, + "PF2.Proficiency.Weapon.Category.MartialGnome.Untrained", "Character is Untrained with Martial Gnome weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialGnomeTrained, - "WeaponProficiency.Category.MartialGnome.Trained", + Pf2TagProficiencyWeaponCategoryMartialGnomeTrained, + "PF2.Proficiency.Weapon.Category.MartialGnome.Trained", "Character is Trained with Martial Gnome weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialGnomeExpert, - "WeaponProficiency.Category.MartialGnome.Expert", + Pf2TagProficiencyWeaponCategoryMartialGnomeExpert, + "PF2.Proficiency.Weapon.Category.MartialGnome.Expert", "Character is Expert with Martial Gnome weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialGnomeMaster, - "WeaponProficiency.Category.MartialGnome.Master", + Pf2TagProficiencyWeaponCategoryMartialGnomeMaster, + "PF2.Proficiency.Weapon.Category.MartialGnome.Master", "Character is Master with Martial Gnome weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialGnomeLegendary, - "WeaponProficiency.Category.MartialGnome.Legendary", + Pf2TagProficiencyWeaponCategoryMartialGnomeLegendary, + "PF2.Proficiency.Weapon.Category.MartialGnome.Legendary", "Character is Legendary with Martial Gnome weapons." ) @@ -462,32 +549,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // From the Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity": // "For the purpose of determining your proficiency, martial goblin weapons are simple weapons..." UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialGoblinUntrained, - "WeaponProficiency.Category.MartialGoblin.Untrained", + Pf2TagProficiencyWeaponCategoryMartialGoblin, + "PF2.Proficiency.Weapon.Category.MartialGoblin", + "Character proficiency ranks for Martial Goblin weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryMartialGoblinUntrained, + "PF2.Proficiency.Weapon.Category.MartialGoblin.Untrained", "Character is Untrained with Martial Goblin weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialGoblinTrained, - "WeaponProficiency.Category.MartialGoblin.Trained", + Pf2TagProficiencyWeaponCategoryMartialGoblinTrained, + "PF2.Proficiency.Weapon.Category.MartialGoblin.Trained", "Character is Trained with Martial Goblin weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialGoblinExpert, - "WeaponProficiency.Category.MartialGoblin.Expert", + Pf2TagProficiencyWeaponCategoryMartialGoblinExpert, + "PF2.Proficiency.Weapon.Category.MartialGoblin.Expert", "Character is Expert with Martial Goblin weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialGoblinMaster, - "WeaponProficiency.Category.MartialGoblin.Master", + Pf2TagProficiencyWeaponCategoryMartialGoblinMaster, + "PF2.Proficiency.Weapon.Category.MartialGoblin.Master", "Character is Master with Martial Goblin weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialGoblinLegendary, - "WeaponProficiency.Category.MartialGoblin.Legendary", + Pf2TagProficiencyWeaponCategoryMartialGoblinLegendary, + "PF2.Proficiency.Weapon.Category.MartialGoblin.Legendary", "Character is Legendary with Martial Goblin weapons." ) @@ -497,32 +590,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // From the Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity": // "For the purpose of determining your proficiency, martial halfling weapons are simple weapons..." UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialHalflingUntrained, - "WeaponProficiency.Category.MartialHalfling.Untrained", + Pf2TagProficiencyWeaponCategoryMartialHalfling, + "PF2.Proficiency.Weapon.Category.MartialHalfling", + "Character proficiency ranks for Martial Halfling weapons." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCategoryMartialHalflingUntrained, + "PF2.Proficiency.Weapon.Category.MartialHalfling.Untrained", "Character is Untrained with Martial Halfling weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialHalflingTrained, - "WeaponProficiency.Category.MartialHalfling.Trained", + Pf2TagProficiencyWeaponCategoryMartialHalflingTrained, + "PF2.Proficiency.Weapon.Category.MartialHalfling.Trained", "Character is Trained with Martial Halfling weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialHalflingExpert, - "WeaponProficiency.Category.MartialHalfling.Expert", + Pf2TagProficiencyWeaponCategoryMartialHalflingExpert, + "PF2.Proficiency.Weapon.Category.MartialHalfling.Expert", "Character is Expert with Martial Halfling weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialHalflingMaster, - "WeaponProficiency.Category.MartialHalfling.Master", + Pf2TagProficiencyWeaponCategoryMartialHalflingMaster, + "PF2.Proficiency.Weapon.Category.MartialHalfling.Master", "Character is Master with Martial Halfling weapons." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCategoryMartialHalflingLegendary, - "WeaponProficiency.Category.MartialHalfling.Legendary", + Pf2TagProficiencyWeaponCategoryMartialHalflingLegendary, + "PF2.Proficiency.Weapon.Category.MartialHalfling.Legendary", "Character is Legendary with Martial Halfling weapons." ) @@ -532,32 +631,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // Weapon type mentioned in Pathfinder 2E Core Rulebook under: // - Chapter 3, page 71, "Attacks" for "Alchemist" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyAlchemicalBombUntrained, - "WeaponProficiency.AlchemicalBomb.Untrained", + Pf2TagProficiencyWeaponAlchemicalBomb, + "PF2.Proficiency.Weapon.AlchemicalBomb", + "Character proficiency ranks for Alchemical Bombs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponAlchemicalBombUntrained, + "PF2.Proficiency.Weapon.AlchemicalBomb.Untrained", "Character is Untrained with Alchemical Bombs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyAlchemicalBombTrained, - "WeaponProficiency.AlchemicalBomb.Trained", + Pf2TagProficiencyWeaponAlchemicalBombTrained, + "PF2.Proficiency.Weapon.AlchemicalBomb.Trained", "Character is Trained with Alchemical Bombs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyAlchemicalBombExpert, - "WeaponProficiency.AlchemicalBomb.Expert", + Pf2TagProficiencyWeaponAlchemicalBombExpert, + "PF2.Proficiency.Weapon.AlchemicalBomb.Expert", "Character is Expert with Alchemical Bombs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyAlchemicalBombMaster, - "WeaponProficiency.AlchemicalBomb.Master", + Pf2TagProficiencyWeaponAlchemicalBombMaster, + "PF2.Proficiency.Weapon.AlchemicalBomb.Master", "Character is Master with Alchemical Bombs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyAlchemicalBombLegendary, - "WeaponProficiency.AlchemicalBomb.Legendary", + Pf2TagProficiencyWeaponAlchemicalBombLegendary, + "PF2.Proficiency.Weapon.AlchemicalBomb.Legendary", "Character is Legendary with Alchemical Bombs." ) @@ -566,32 +671,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyBattleAxeUntrained, - "WeaponProficiency.BattleAxe.Untrained", + Pf2TagProficiencyWeaponBattleAxe, + "PF2.Proficiency.Weapon.BattleAxe", + "Character proficiency ranks for Battle Axes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponBattleAxeUntrained, + "PF2.Proficiency.Weapon.BattleAxe.Untrained", "Character is Untrained with Battle Axes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyBattleAxeTrained, - "WeaponProficiency.BattleAxe.Trained", + Pf2TagProficiencyWeaponBattleAxeTrained, + "PF2.Proficiency.Weapon.BattleAxe.Trained", "Character is Trained with Battle Axes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyBattleAxeExpert, - "WeaponProficiency.BattleAxe.Expert", + Pf2TagProficiencyWeaponBattleAxeExpert, + "PF2.Proficiency.Weapon.BattleAxe.Expert", "Character is Expert with Battle Axes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyBattleAxeMaster, - "WeaponProficiency.BattleAxe.Master", + Pf2TagProficiencyWeaponBattleAxeMaster, + "PF2.Proficiency.Weapon.BattleAxe.Master", "Character is Master with Battle Axes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyBattleAxeLegendary, - "WeaponProficiency.BattleAxe.Legendary", + Pf2TagProficiencyWeaponBattleAxeLegendary, + "PF2.Proficiency.Weapon.BattleAxe.Legendary", "Character is Legendary with Battle Axes." ) @@ -601,32 +712,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 203, "Attacks" for "Wizard" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyClubUntrained, - "WeaponProficiency.Club.Untrained", + Pf2TagProficiencyWeaponClub, + "PF2.Proficiency.Weapon.Club", + "Character proficiency ranks for Clubs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponClubUntrained, + "PF2.Proficiency.Weapon.Club.Untrained", "Character is Untrained with Clubs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyClubTrained, - "WeaponProficiency.Club.Trained", + Pf2TagProficiencyWeaponClubTrained, + "PF2.Proficiency.Weapon.Club.Trained", "Character is Trained with Clubs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyClubExpert, - "WeaponProficiency.Club.Expert", + Pf2TagProficiencyWeaponClubExpert, + "PF2.Proficiency.Weapon.Club.Expert", "Character is Expert with Clubs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyClubMaster, - "WeaponProficiency.Club.Master", + Pf2TagProficiencyWeaponClubMaster, + "PF2.Proficiency.Weapon.Club.Master", "Character is Master with Clubs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyClubLegendary, - "WeaponProficiency.Club.Legendary", + Pf2TagProficiencyWeaponClubLegendary, + "PF2.Proficiency.Weapon.Club.Legendary", "Character is Legendary with Clubs." ) @@ -635,32 +752,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCompositeLongbowUntrained, - "WeaponProficiency.CompositeLongbow.Untrained", + Pf2TagProficiencyWeaponCompositeLongbow, + "PF2.Proficiency.Weapon.CompositeLongbow", + "Character proficiency ranks for Composite Longbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCompositeLongbowUntrained, + "PF2.Proficiency.Weapon.CompositeLongbow.Untrained", "Character is Untrained with Composite Longbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCompositeLongbowTrained, - "WeaponProficiency.CompositeLongbow.Trained", + Pf2TagProficiencyWeaponCompositeLongbowTrained, + "PF2.Proficiency.Weapon.CompositeLongbow.Trained", "Character is Trained with Composite Longbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCompositeLongbowExpert, - "WeaponProficiency.CompositeLongbow.Expert", + Pf2TagProficiencyWeaponCompositeLongbowExpert, + "PF2.Proficiency.Weapon.CompositeLongbow.Expert", "Character is Expert with Composite Longbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCompositeLongbowMaster, - "WeaponProficiency.CompositeLongbow.Master", + Pf2TagProficiencyWeaponCompositeLongbowMaster, + "PF2.Proficiency.Weapon.CompositeLongbow.Master", "Character is Master with Composite Longbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCompositeLongbowLegendary, - "WeaponProficiency.CompositeLongbow.Legendary", + Pf2TagProficiencyWeaponCompositeLongbowLegendary, + "PF2.Proficiency.Weapon.CompositeLongbow.Legendary", "Character is Legendary with Composite Longbows." ) @@ -669,32 +792,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCompositeShortbowUntrained, - "WeaponProficiency.CompositeShortbow.Untrained", + Pf2TagProficiencyWeaponCompositeShortbow, + "PF2.Proficiency.Weapon.CompositeShortbow", + "Character proficiency ranks for Composite Shortbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCompositeShortbowUntrained, + "PF2.Proficiency.Weapon.CompositeShortbow.Untrained", "Character is Untrained with Composite Shortbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCompositeShortbowTrained, - "WeaponProficiency.CompositeShortbow.Trained", + Pf2TagProficiencyWeaponCompositeShortbowTrained, + "PF2.Proficiency.Weapon.CompositeShortbow.Trained", "Character is Trained with Composite Shortbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCompositeShortbowExpert, - "WeaponProficiency.CompositeShortbow.Expert", + Pf2TagProficiencyWeaponCompositeShortbowExpert, + "PF2.Proficiency.Weapon.CompositeShortbow.Expert", "Character is Expert with Composite Shortbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCompositeShortbowMaster, - "WeaponProficiency.CompositeShortbow.Master", + Pf2TagProficiencyWeaponCompositeShortbowMaster, + "PF2.Proficiency.Weapon.CompositeShortbow.Master", "Character is Master with Composite Shortbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCompositeShortbowLegendary, - "WeaponProficiency.CompositeShortbow.Legendary", + Pf2TagProficiencyWeaponCompositeShortbowLegendary, + "PF2.Proficiency.Weapon.CompositeShortbow.Legendary", "Character is Legendary with Composite Shortbows." ) @@ -704,32 +833,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 203, "Attacks" for "Wizard" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCrossbowUntrained, - "WeaponProficiency.Crossbow.Untrained", + Pf2TagProficiencyWeaponCrossbow, + "PF2.Proficiency.Weapon.Crossbow", + "Character proficiency ranks for Crossbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponCrossbowUntrained, + "PF2.Proficiency.Weapon.Crossbow.Untrained", "Character is Untrained with Crossbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCrossbowTrained, - "WeaponProficiency.Crossbow.Trained", + Pf2TagProficiencyWeaponCrossbowTrained, + "PF2.Proficiency.Weapon.Crossbow.Trained", "Character is Trained with Crossbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCrossbowExpert, - "WeaponProficiency.Crossbow.Expert", + Pf2TagProficiencyWeaponCrossbowExpert, + "PF2.Proficiency.Weapon.Crossbow.Expert", "Character is Expert with Crossbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCrossbowMaster, - "WeaponProficiency.Crossbow.Master", + Pf2TagProficiencyWeaponCrossbowMaster, + "PF2.Proficiency.Weapon.Crossbow.Master", "Character is Master with Crossbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyCrossbowLegendary, - "WeaponProficiency.Crossbow.Legendary", + Pf2TagProficiencyWeaponCrossbowLegendary, + "PF2.Proficiency.Weapon.Crossbow.Legendary", "Character is Legendary with Crossbows." ) @@ -739,32 +874,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 203, "Attacks" for "Wizard" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyDaggerUntrained, - "WeaponProficiency.Dagger.Untrained", + Pf2TagProficiencyWeaponDagger, + "PF2.Proficiency.Weapon.Dagger", + "Character proficiency ranks for Daggers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponDaggerUntrained, + "PF2.Proficiency.Weapon.Dagger.Untrained", "Character is Untrained with Daggers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyDaggerTrained, - "WeaponProficiency.Dagger.Trained", + Pf2TagProficiencyWeaponDaggerTrained, + "PF2.Proficiency.Weapon.Dagger.Trained", "Character is Trained with Daggers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyDaggerExpert, - "WeaponProficiency.Dagger.Expert", + Pf2TagProficiencyWeaponDaggerExpert, + "PF2.Proficiency.Weapon.Dagger.Expert", "Character is Expert with Daggers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyDaggerMaster, - "WeaponProficiency.Dagger.Master", + Pf2TagProficiencyWeaponDaggerMaster, + "PF2.Proficiency.Weapon.Dagger.Master", "Character is Master with Daggers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyDaggerLegendary, - "WeaponProficiency.Dagger.Legendary", + Pf2TagProficiencyWeaponDaggerLegendary, + "PF2.Proficiency.Weapon.Dagger.Legendary", "Character is Legendary with Daggers." ) @@ -773,32 +914,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyDogslicerUntrained, - "WeaponProficiency.Dogslicer.Untrained", + Pf2TagProficiencyWeaponDogslicer, + "PF2.Proficiency.Weapon.Dogslicer", + "Character proficiency ranks for Dogslicers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponDogslicerUntrained, + "PF2.Proficiency.Weapon.Dogslicer.Untrained", "Character is Untrained with Dogslicers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyDogslicerTrained, - "WeaponProficiency.Dogslicer.Trained", + Pf2TagProficiencyWeaponDogslicerTrained, + "PF2.Proficiency.Weapon.Dogslicer.Trained", "Character is Trained with Dogslicers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyDogslicerExpert, - "WeaponProficiency.Dogslicer.Expert", + Pf2TagProficiencyWeaponDogslicerExpert, + "PF2.Proficiency.Weapon.Dogslicer.Expert", "Character is Expert with Dogslicers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyDogslicerMaster, - "WeaponProficiency.Dogslicer.Master", + Pf2TagProficiencyWeaponDogslicerMaster, + "PF2.Proficiency.Weapon.Dogslicer.Master", "Character is Master with Dogslicers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyDogslicerLegendary, - "WeaponProficiency.Dogslicer.Legendary", + Pf2TagProficiencyWeaponDogslicerLegendary, + "PF2.Proficiency.Weapon.Dogslicer.Legendary", "Character is Legendary with Dogslicers." ) @@ -807,32 +954,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 58, "Orc Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyFalchionUntrained, - "WeaponProficiency.Falchion.Untrained", + Pf2TagProficiencyWeaponFalchion, + "PF2.Proficiency.Weapon.Falchion", + "Character proficiency ranks for Falchions." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponFalchionUntrained, + "PF2.Proficiency.Weapon.Falchion.Untrained", "Character is Untrained with Falchions." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyFalchionTrained, - "WeaponProficiency.Falchion.Trained", + Pf2TagProficiencyWeaponFalchionTrained, + "PF2.Proficiency.Weapon.Falchion.Trained", "Character is Trained with Falchions." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyFalchionExpert, - "WeaponProficiency.Falchion.Expert", + Pf2TagProficiencyWeaponFalchionExpert, + "PF2.Proficiency.Weapon.Falchion.Expert", "Character is Expert with Falchions." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyFalchionMaster, - "WeaponProficiency.Falchion.Master", + Pf2TagProficiencyWeaponFalchionMaster, + "PF2.Proficiency.Weapon.Falchion.Master", "Character is Master with Falchions." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyFalchionLegendary, - "WeaponProficiency.Falchion.Legendary", + Pf2TagProficiencyWeaponFalchionLegendary, + "PF2.Proficiency.Weapon.Falchion.Legendary", "Character is Legendary with Falchions." ) @@ -841,32 +994,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyGlaiveUntrained, - "WeaponProficiency.Glaive.Untrained", + Pf2TagProficiencyWeaponGlaive, + "PF2.Proficiency.Weapon.Glaive", + "Character proficiency ranks for Glaives." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponGlaiveUntrained, + "PF2.Proficiency.Weapon.Glaive.Untrained", "Character is Untrained with Glaives." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyGlaiveTrained, - "WeaponProficiency.Glaive.Trained", + Pf2TagProficiencyWeaponGlaiveTrained, + "PF2.Proficiency.Weapon.Glaive.Trained", "Character is Trained with Glaives." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyGlaiveExpert, - "WeaponProficiency.Glaive.Expert", + Pf2TagProficiencyWeaponGlaiveExpert, + "PF2.Proficiency.Weapon.Glaive.Expert", "Character is Expert with Glaives." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyGlaiveMaster, - "WeaponProficiency.Glaive.Master", + Pf2TagProficiencyWeaponGlaiveMaster, + "PF2.Proficiency.Weapon.Glaive.Master", "Character is Master with Glaives." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyGlaiveLegendary, - "WeaponProficiency.Glaive.Legendary", + Pf2TagProficiencyWeaponGlaiveLegendary, + "PF2.Proficiency.Weapon.Glaive.Legendary", "Character is Legendary with Glaives." ) @@ -875,32 +1034,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 58, "Orc Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyGreataxeUntrained, - "WeaponProficiency.Greataxe.Untrained", + Pf2TagProficiencyWeaponGreataxe, + "PF2.Proficiency.Weapon.Greataxe", + "Character proficiency ranks for Greataxes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponGreataxeUntrained, + "PF2.Proficiency.Weapon.Greataxe.Untrained", "Character is Untrained with Greataxes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyGreataxeTrained, - "WeaponProficiency.Greataxe.Trained", + Pf2TagProficiencyWeaponGreataxeTrained, + "PF2.Proficiency.Weapon.Greataxe.Trained", "Character is Trained with Greataxes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyGreataxeExpert, - "WeaponProficiency.Greataxe.Expert", + Pf2TagProficiencyWeaponGreataxeExpert, + "PF2.Proficiency.Weapon.Greataxe.Expert", "Character is Expert with Greataxes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyGreataxeMaster, - "WeaponProficiency.Greataxe.Master", + Pf2TagProficiencyWeaponGreataxeMaster, + "PF2.Proficiency.Weapon.Greataxe.Master", "Character is Master with Greataxes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyGreataxeLegendary, - "WeaponProficiency.Greataxe.Legendary", + Pf2TagProficiencyWeaponGreataxeLegendary, + "PF2.Proficiency.Weapon.Greataxe.Legendary", "Character is Legendary with Greataxes." ) @@ -909,32 +1074,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHalflingSlingStaffUntrained, - "WeaponProficiency.HalflingSlingStaff.Untrained", + Pf2TagProficiencyWeaponHalflingSlingStaff, + "PF2.Proficiency.Weapon.HalflingSlingStaff", + "Character proficiency ranks for Halfling Sling Staves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponHalflingSlingStaffUntrained, + "PF2.Proficiency.Weapon.HalflingSlingStaff.Untrained", "Character is Untrained with Halfling Sling Staves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHalflingSlingStaffTrained, - "WeaponProficiency.HalflingSlingStaff.Trained", + Pf2TagProficiencyWeaponHalflingSlingStaffTrained, + "PF2.Proficiency.Weapon.HalflingSlingStaff.Trained", "Character is Trained with Halfling Sling Staves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHalflingSlingStaffExpert, - "WeaponProficiency.HalflingSlingStaff.Expert", + Pf2TagProficiencyWeaponHalflingSlingStaffExpert, + "PF2.Proficiency.Weapon.HalflingSlingStaff.Expert", "Character is Expert with Halfling Sling Staves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHalflingSlingStaffMaster, - "WeaponProficiency.HalflingSlingStaff.Master", + Pf2TagProficiencyWeaponHalflingSlingStaffMaster, + "PF2.Proficiency.Weapon.HalflingSlingStaff.Master", "Character is Master with Halfling Sling Staves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHalflingSlingStaffLegendary, - "WeaponProficiency.HalflingSlingStaff.Legendary", + Pf2TagProficiencyWeaponHalflingSlingStaffLegendary, + "PF2.Proficiency.Weapon.HalflingSlingStaff.Legendary", "Character is Legendary with Halfling Sling Staves." ) @@ -944,32 +1115,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 203, "Attacks" for "Wizard" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHeavyCrossbowUntrained, - "WeaponProficiency.HeavyCrossbow.Untrained", + Pf2TagProficiencyWeaponHeavyCrossbow, + "PF2.Proficiency.Weapon.HeavyCrossbow", + "Character proficiency ranks for Heavy Crossbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponHeavyCrossbowUntrained, + "PF2.Proficiency.Weapon.HeavyCrossbow.Untrained", "Character is Untrained with Heavy Crossbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHeavyCrossbowTrained, - "WeaponProficiency.HeavyCrossbow.Trained", + Pf2TagProficiencyWeaponHeavyCrossbowTrained, + "PF2.Proficiency.Weapon.HeavyCrossbow.Trained", "Character is Trained with Heavy Crossbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHeavyCrossbowExpert, - "WeaponProficiency.HeavyCrossbow.Expert", + Pf2TagProficiencyWeaponHeavyCrossbowExpert, + "PF2.Proficiency.Weapon.HeavyCrossbow.Expert", "Character is Expert with Heavy Crossbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHeavyCrossbowMaster, - "WeaponProficiency.HeavyCrossbow.Master", + Pf2TagProficiencyWeaponHeavyCrossbowMaster, + "PF2.Proficiency.Weapon.HeavyCrossbow.Master", "Character is Master with Heavy Crossbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHeavyCrossbowLegendary, - "WeaponProficiency.HeavyCrossbow.Legendary", + Pf2TagProficiencyWeaponHeavyCrossbowLegendary, + "PF2.Proficiency.Weapon.HeavyCrossbow.Legendary", "Character is Legendary with Heavy Crossbows." ) @@ -978,32 +1155,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHorsechopperUntrained, - "WeaponProficiency.Horsechopper.Untrained", + Pf2TagProficiencyWeaponHorsechopper, + "PF2.Proficiency.Weapon.Horsechopper", + "Character proficiency ranks for Horsechoppers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponHorsechopperUntrained, + "PF2.Proficiency.Weapon.Horsechopper.Untrained", "Character is Untrained with Horsechoppers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHorsechopperTrained, - "WeaponProficiency.Horsechopper.Trained", + Pf2TagProficiencyWeaponHorsechopperTrained, + "PF2.Proficiency.Weapon.Horsechopper.Trained", "Character is Trained with Horsechoppers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHorsechopperExpert, - "WeaponProficiency.Horsechopper.Expert", + Pf2TagProficiencyWeaponHorsechopperExpert, + "PF2.Proficiency.Weapon.Horsechopper.Expert", "Character is Expert with Horsechoppers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHorsechopperMaster, - "WeaponProficiency.Horsechopper.Master", + Pf2TagProficiencyWeaponHorsechopperMaster, + "PF2.Proficiency.Weapon.Horsechopper.Master", "Character is Master with Horsechoppers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyHorsechopperLegendary, - "WeaponProficiency.Horsechopper.Legendary", + Pf2TagProficiencyWeaponHorsechopperLegendary, + "PF2.Proficiency.Weapon.Horsechopper.Legendary", "Character is Legendary with Horsechoppers." ) @@ -1012,32 +1195,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyKukriUntrained, - "WeaponProficiency.Kukri.Untrained", + Pf2TagProficiencyWeaponKukri, + "PF2.Proficiency.Weapon.Kukri", + "Character proficiency ranks for Kukris." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponKukriUntrained, + "PF2.Proficiency.Weapon.Kukri.Untrained", "Character is Untrained with Kukris." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyKukriTrained, - "WeaponProficiency.Kukri.Trained", + Pf2TagProficiencyWeaponKukriTrained, + "PF2.Proficiency.Weapon.Kukri.Trained", "Character is Trained with Kukris." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyKukriExpert, - "WeaponProficiency.Kukri.Expert", + Pf2TagProficiencyWeaponKukriExpert, + "PF2.Proficiency.Weapon.Kukri.Expert", "Character is Expert with Kukris." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyKukriMaster, - "WeaponProficiency.Kukri.Master", + Pf2TagProficiencyWeaponKukriMaster, + "PF2.Proficiency.Weapon.Kukri.Master", "Character is Master with Kukris." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyKukriLegendary, - "WeaponProficiency.Kukri.Legendary", + Pf2TagProficiencyWeaponKukriLegendary, + "PF2.Proficiency.Weapon.Kukri.Legendary", "Character is Legendary with Kukris." ) @@ -1046,32 +1235,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyLongbowUntrained, - "WeaponProficiency.Longbow.Untrained", + Pf2TagProficiencyWeaponLongbow, + "PF2.Proficiency.Weapon.Longbow", + "Character proficiency ranks for Longbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponLongbowUntrained, + "PF2.Proficiency.Weapon.Longbow.Untrained", "Character is Untrained with Longbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyLongbowTrained, - "WeaponProficiency.Longbow.Trained", + Pf2TagProficiencyWeaponLongbowTrained, + "PF2.Proficiency.Weapon.Longbow.Trained", "Character is Trained with Longbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyLongbowExpert, - "WeaponProficiency.Longbow.Expert", + Pf2TagProficiencyWeaponLongbowExpert, + "PF2.Proficiency.Weapon.Longbow.Expert", "Character is Expert with Longbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyLongbowMaster, - "WeaponProficiency.Longbow.Master", + Pf2TagProficiencyWeaponLongbowMaster, + "PF2.Proficiency.Weapon.Longbow.Master", "Character is Master with Longbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyLongbowLegendary, - "WeaponProficiency.Longbow.Legendary", + Pf2TagProficiencyWeaponLongbowLegendary, + "PF2.Proficiency.Weapon.Longbow.Legendary", "Character is Legendary with Longbows." ) @@ -1082,32 +1277,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // - Chapter 2, page 40, "Elven Weapon Familiarity" // - Chapter 3, page 95, "Attacks" for "Bard" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyLongswordUntrained, - "WeaponProficiency.Longsword.Untrained", + Pf2TagProficiencyWeaponLongsword, + "PF2.Proficiency.Weapon.Longsword", + "Character proficiency ranks for Longswords." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponLongswordUntrained, + "PF2.Proficiency.Weapon.Longsword.Untrained", "Character is Untrained with Longswords." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyLongswordTrained, - "WeaponProficiency.Longsword.Trained", + Pf2TagProficiencyWeaponLongswordTrained, + "PF2.Proficiency.Weapon.Longsword.Trained", "Character is Trained with Longswords." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyLongswordExpert, - "WeaponProficiency.Longsword.Expert", + Pf2TagProficiencyWeaponLongswordExpert, + "PF2.Proficiency.Weapon.Longsword.Expert", "Character is Expert with Longswords." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyLongswordMaster, - "WeaponProficiency.Longsword.Master", + Pf2TagProficiencyWeaponLongswordMaster, + "PF2.Proficiency.Weapon.Longsword.Master", "Character is Master with Longswords." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyLongswordLegendary, - "WeaponProficiency.Longsword.Legendary", + Pf2TagProficiencyWeaponLongswordLegendary, + "PF2.Proficiency.Weapon.Longsword.Legendary", "Character is Legendary with Longswords." ) @@ -1116,32 +1317,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyPickUntrained, - "WeaponProficiency.Pick.Untrained", + Pf2TagProficiencyWeaponPick, + "PF2.Proficiency.Weapon.Pick", + "Character proficiency ranks for Picks." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponPickUntrained, + "PF2.Proficiency.Weapon.Pick.Untrained", "Character is Untrained with Picks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyPickTrained, - "WeaponProficiency.Pick.Trained", + Pf2TagProficiencyWeaponPickTrained, + "PF2.Proficiency.Weapon.Pick.Trained", "Character is Trained with Picks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyPickExpert, - "WeaponProficiency.Pick.Expert", + Pf2TagProficiencyWeaponPickExpert, + "PF2.Proficiency.Weapon.Pick.Expert", "Character is Expert with Picks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyPickMaster, - "WeaponProficiency.Pick.Master", + Pf2TagProficiencyWeaponPickMaster, + "PF2.Proficiency.Weapon.Pick.Master", "Character is Master with Picks." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyPickLegendary, - "WeaponProficiency.Pick.Legendary", + Pf2TagProficiencyWeaponPickLegendary, + "PF2.Proficiency.Weapon.Pick.Legendary", "Character is Legendary with Picks." ) @@ -1153,32 +1360,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // - Chapter 3, page 95, "Attacks" for "Bard" // - Chapter 3, page 179, "Attacks" for "Rogue" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyRapierUntrained, - "WeaponProficiency.Rapier.Untrained", + Pf2TagProficiencyWeaponRapier, + "PF2.Proficiency.Weapon.Rapier", + "Character proficiency ranks for Rapiers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponRapierUntrained, + "PF2.Proficiency.Weapon.Rapier.Untrained", "Character is Untrained with Rapiers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyRapierTrained, - "WeaponProficiency.Rapier.Trained", + Pf2TagProficiencyWeaponRapierTrained, + "PF2.Proficiency.Weapon.Rapier.Trained", "Character is Trained with Rapiers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyRapierExpert, - "WeaponProficiency.Rapier.Expert", + Pf2TagProficiencyWeaponRapierExpert, + "PF2.Proficiency.Weapon.Rapier.Expert", "Character is Expert with Rapiers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyRapierMaster, - "WeaponProficiency.Rapier.Master", + Pf2TagProficiencyWeaponRapierMaster, + "PF2.Proficiency.Weapon.Rapier.Master", "Character is Master with Rapiers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyRapierLegendary, - "WeaponProficiency.Rapier.Legendary", + Pf2TagProficiencyWeaponRapierLegendary, + "PF2.Proficiency.Weapon.Rapier.Legendary", "Character is Legendary with Rapiers." ) @@ -1189,32 +1402,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // - Chapter 3, page 95, "Attacks" for "Bard" // - Chapter 3, page 179, "Attacks" for "Rogue" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencySapUntrained, - "WeaponProficiency.Sap.Untrained", + Pf2TagProficiencyWeaponSap, + "PF2.Proficiency.Weapon.Sap", + "Character proficiency ranks for Saps." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponSapUntrained, + "PF2.Proficiency.Weapon.Sap.Untrained", "Character is Untrained with Saps." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencySapTrained, - "WeaponProficiency.Sap.Trained", + Pf2TagProficiencyWeaponSapTrained, + "PF2.Proficiency.Weapon.Sap.Trained", "Character is Trained with Saps." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencySapExpert, - "WeaponProficiency.Sap.Expert", + Pf2TagProficiencyWeaponSapExpert, + "PF2.Proficiency.Weapon.Sap.Expert", "Character is Expert with Saps." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencySapMaster, - "WeaponProficiency.Sap.Master", + Pf2TagProficiencyWeaponSapMaster, + "PF2.Proficiency.Weapon.Sap.Master", "Character is Master with Saps." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencySapLegendary, - "WeaponProficiency.Sap.Legendary", + Pf2TagProficiencyWeaponSapLegendary, + "PF2.Proficiency.Weapon.Sap.Legendary", "Character is Legendary with Saps." ) @@ -1226,32 +1445,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // - Chapter 3, page 95, "Attacks" for "Bard" // - Chapter 3, page 179, "Attacks" for "Rogue" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyShortbowUntrained, - "WeaponProficiency.Shortbow.Untrained", + Pf2TagProficiencyWeaponShortbow, + "PF2.Proficiency.Weapon.Shortbow", + "Character proficiency ranks for Shortbows." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponShortbowUntrained, + "PF2.Proficiency.Weapon.Shortbow.Untrained", "Character is Untrained with Shortbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyShortbowTrained, - "WeaponProficiency.Shortbow.Trained", + Pf2TagProficiencyWeaponShortbowTrained, + "PF2.Proficiency.Weapon.Shortbow.Trained", "Character is Trained with Shortbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyShortbowExpert, - "WeaponProficiency.Shortbow.Expert", + Pf2TagProficiencyWeaponShortbowExpert, + "PF2.Proficiency.Weapon.Shortbow.Expert", "Character is Expert with Shortbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyShortbowMaster, - "WeaponProficiency.Shortbow.Master", + Pf2TagProficiencyWeaponShortbowMaster, + "PF2.Proficiency.Weapon.Shortbow.Master", "Character is Master with Shortbows." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyShortbowLegendary, - "WeaponProficiency.Shortbow.Legendary", + Pf2TagProficiencyWeaponShortbowLegendary, + "PF2.Proficiency.Weapon.Shortbow.Legendary", "Character is Legendary with Shortbows." ) @@ -1263,32 +1488,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // - Chapter 3, page 95, "Attacks" for "Bard" // - Chapter 3, page 179, "Attacks" for "Rogue" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyShortswordUntrained, - "WeaponProficiency.Shortsword.Untrained", + Pf2TagProficiencyWeaponShortsword, + "PF2.Proficiency.Weapon.Shortsword", + "Character proficiency ranks for Shortswords." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponShortswordUntrained, + "PF2.Proficiency.Weapon.Shortsword.Untrained", "Character is Untrained with Shortswords." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyShortswordTrained, - "WeaponProficiency.Shortsword.Trained", + Pf2TagProficiencyWeaponShortswordTrained, + "PF2.Proficiency.Weapon.Shortsword.Trained", "Character is Trained with Shortswords." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyShortswordExpert, - "WeaponProficiency.Shortsword.Expert", + Pf2TagProficiencyWeaponShortswordExpert, + "PF2.Proficiency.Weapon.Shortsword.Expert", "Character is Expert with Shortswords." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyShortswordMaster, - "WeaponProficiency.Shortsword.Master", + Pf2TagProficiencyWeaponShortswordMaster, + "PF2.Proficiency.Weapon.Shortsword.Master", "Character is Master with Shortswords." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyShortswordLegendary, - "WeaponProficiency.Shortsword.Legendary", + Pf2TagProficiencyWeaponShortswordLegendary, + "PF2.Proficiency.Weapon.Shortsword.Legendary", "Character is Legendary with Shortswords." ) @@ -1297,32 +1528,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencySlingUntrained, - "WeaponProficiency.Sling.Untrained", + Pf2TagProficiencyWeaponSling, + "PF2.Proficiency.Weapon.Sling", + "Character proficiency ranks for Slings." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponSlingUntrained, + "PF2.Proficiency.Weapon.Sling.Untrained", "Character is Untrained with Slings." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencySlingTrained, - "WeaponProficiency.Sling.Trained", + Pf2TagProficiencyWeaponSlingTrained, + "PF2.Proficiency.Weapon.Sling.Trained", "Character is Trained with Slings." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencySlingExpert, - "WeaponProficiency.Sling.Expert", + Pf2TagProficiencyWeaponSlingExpert, + "PF2.Proficiency.Weapon.Sling.Expert", "Character is Expert with Slings." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencySlingMaster, - "WeaponProficiency.Sling.Master", + Pf2TagProficiencyWeaponSlingMaster, + "PF2.Proficiency.Weapon.Sling.Master", "Character is Master with Slings." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencySlingLegendary, - "WeaponProficiency.Sling.Legendary", + Pf2TagProficiencyWeaponSlingLegendary, + "PF2.Proficiency.Weapon.Sling.Legendary", "Character is Legendary with Slings." ) @@ -1332,32 +1569,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 203, "Attacks" for "Wizard" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyStaffUntrained, - "WeaponProficiency.Staff.Untrained", + Pf2TagProficiencyWeaponStaff, + "PF2.Proficiency.Weapon.Staff", + "Character proficiency ranks for Staves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponStaffUntrained, + "PF2.Proficiency.Weapon.Staff.Untrained", "Character is Untrained with Staves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyStaffTrained, - "WeaponProficiency.Staff.Trained", + Pf2TagProficiencyWeaponStaffTrained, + "PF2.Proficiency.Weapon.Staff.Trained", "Character is Trained with Staves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyStaffExpert, - "WeaponProficiency.Staff.Expert", + Pf2TagProficiencyWeaponStaffExpert, + "PF2.Proficiency.Weapon.Staff.Expert", "Character is Expert with Staves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyStaffMaster, - "WeaponProficiency.Staff.Master", + Pf2TagProficiencyWeaponStaffMaster, + "PF2.Proficiency.Weapon.Staff.Master", "Character is Master with Staves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyStaffLegendary, - "WeaponProficiency.Staff.Legendary", + Pf2TagProficiencyWeaponStaffLegendary, + "PF2.Proficiency.Weapon.Staff.Legendary", "Character is Legendary with Staves." ) @@ -1366,32 +1609,38 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyWarhammerUntrained, - "WeaponProficiency.Warhammer.Untrained", + Pf2TagProficiencyWeaponWarhammer, + "PF2.Proficiency.Weapon.Warhammer", + "Character proficiency ranks for Warhammers." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponWarhammerUntrained, + "PF2.Proficiency.Weapon.Warhammer.Untrained", "Character is Untrained with Warhammers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyWarhammerTrained, - "WeaponProficiency.Warhammer.Trained", + Pf2TagProficiencyWeaponWarhammerTrained, + "PF2.Proficiency.Weapon.Warhammer.Trained", "Character is Trained with Warhammers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyWarhammerExpert, - "WeaponProficiency.Warhammer.Expert", + Pf2TagProficiencyWeaponWarhammerExpert, + "PF2.Proficiency.Weapon.Warhammer.Expert", "Character is Expert with Warhammers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyWarhammerMaster, - "WeaponProficiency.Warhammer.Master", + Pf2TagProficiencyWeaponWarhammerMaster, + "PF2.Proficiency.Weapon.Warhammer.Master", "Character is Master with Warhammers." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyWarhammerLegendary, - "WeaponProficiency.Warhammer.Legendary", + Pf2TagProficiencyWeaponWarhammerLegendary, + "PF2.Proficiency.Weapon.Warhammer.Legendary", "Character is Legendary with Warhammers." ) @@ -1401,31 +1650,37 @@ UE_DEFINE_GAMEPLAY_TAG_COMMENT( // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 95, "Attacks" for "Bard" UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyWhipUntrained, - "WeaponProficiency.Whip.Untrained", + Pf2TagProficiencyWeaponWhip, + "PF2.Proficiency.Weapon.Whip", + "Character proficiency ranks for Whips." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagProficiencyWeaponWhipUntrained, + "PF2.Proficiency.Weapon.Whip.Untrained", "Character is Untrained with Whips." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyWhipTrained, - "WeaponProficiency.Whip.Trained", + Pf2TagProficiencyWeaponWhipTrained, + "PF2.Proficiency.Weapon.Whip.Trained", "Character is Trained with Whips." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyWhipExpert, - "WeaponProficiency.Whip.Expert", + Pf2TagProficiencyWeaponWhipExpert, + "PF2.Proficiency.Weapon.Whip.Expert", "Character is Expert with Whips." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyWhipMaster, - "WeaponProficiency.Whip.Master", + Pf2TagProficiencyWeaponWhipMaster, + "PF2.Proficiency.Weapon.Whip.Master", "Character is Master with Whips." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( - Pf2TagWeaponProficiencyWhipLegendary, - "WeaponProficiency.Whip.Legendary", + Pf2TagProficiencyWeaponWhipLegendary, + "PF2.Proficiency.Weapon.Whip.Legendary", "Character is Legendary with Whips." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/SpecialSenses.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/SpecialSenses.cpp index b91976fca..be9a6ee6f 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/SpecialSenses.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Stats/SpecialSenses.cpp @@ -19,32 +19,38 @@ // concealed conditions [...] when it comes to situations that foil average vision." // // Source: Pathfinder 2E Core Rulebook, page 465, "Special Senses". +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpecialSenses, + "PF2.SpecialSense", + "Senses that grant greater awareness to either ignore or reduce the effects of the undetected, hidden, or concealed conditions when it comes to situations that foil average vision." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagSpecialSenseDarkvision, - "SpecialSense.Darkvision", + "PF2.SpecialSense.Darkvision", "A creature with darkvision can see perfectly well in areas of darkness and dim light, though such vision is in black and white only. Some forms of magical darkness, such as a 4th-level darkness spell, block normal darkvision." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagSpecialSenseGreaterDarkvision, - "SpecialSense.GreaterDarkvision", + "PF2.SpecialSense.GreaterDarkvision", "A creature with greater darkvision can see perfectly well in areas of darkness and dim light, though such vision is in black and white only. Some forms of magical darkness, such as a 4th-level darkness spell, block normal darkvision. A creature with greater darkvision, however, can see through even these forms of magical darkness." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagSpecialSenseLowLightVision, - "SpecialSense.LowLightVision", + "PF2.SpecialSense.LowLightVision", "A creature with low-light vision can see in dim light as though it were bright light, so it ignores the concealed condition due to dim light." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagSpecialSenseScent, - "SpecialSense.Scent", + "PF2.SpecialSense.Scent", "Scent involves sensing creatures or objects by smell, and is usually a vague sense. The range is listed in the ability, and it functions only if the creature or object being detected emits an aroma (for instance, incorporeal creatures usually do not exude an aroma)." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagSpecialSenseTremorsense, - "SpecialSense.Tremorsense", + "PF2.SpecialSense.Tremorsense", "Tremorsense allows a creature to feel the vibrations through a solid surface caused by movement. It is usually an imprecise sense with a limited range (listed in the ability). Tremorsense functions only if the detecting creature is on the same surface as the subject, and only if the subject is moving along (or burrowing through) the surface." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Abilities.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Abilities.cpp index e87a06347..4c38c36f4 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Abilities.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Abilities.cpp @@ -13,101 +13,107 @@ #include "GameplayTags/Traits/Abilities.h" // ===================================================================================================================== -// Ability Traits +// Ability Traits - Keywords that convey information about rules elements that interact with abilities. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitAbilities, + "PF2.Trait.Ability", + "Keywords that convey information about rules elements that interact with abilities." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityAlchemist, - "Trait.Ability.Alchemist", + "PF2.Trait.Ability.Alchemist", "This indicates abilities from the alchemist class." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityAttack, - "Trait.Ability.Attack", + "PF2.Trait.Ability.Attack", "An ability with this trait involves an attack. For each attack you make beyond the first on your turn, you take a multiple attack penalty." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityBarbarian, - "Trait.Ability.Barbarian", + "PF2.Trait.Ability.Barbarian", "This indicates abilities from the barbarian class." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityBard, - "Trait.Ability.Bard", + "PF2.Trait.Ability.Bard", "This indicates abilities from the bard class." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityChampion, - "Trait.Ability.Champion", + "PF2.Trait.Ability.Champion", "This indicates abilities from the champion class." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityCleric, - "Trait.Ability.Cleric", + "PF2.Trait.Ability.Cleric", "This indicates abilities from the cleric class." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityCommon, - "Trait.Ability.Common", + "PF2.Trait.Ability.Common", "Anything that doesn't list another rarity trait (uncommon, rare, or unique) automatically has the common trait. This rarity indicates that an ability is available to all players who meet the prerequisites for it." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityDruid, - "Trait.Ability.Druid", + "PF2.Trait.Ability.Druid", "This indicates abilities from the druid class." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityFighter, - "Trait.Ability.Fighter", + "PF2.Trait.Ability.Fighter", "This indicates abilities from the fighter class." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityIncapacitation, - "Trait.Ability.Incapacitation", + "PF2.Trait.Ability.Incapacitation", "An ability with this trait can take a character completely out of the fight or even kill them, and it's harder to use on a more powerful character." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityMonk, - "Trait.Ability.Monk", + "PF2.Trait.Ability.Monk", "Abilities with this trait are from the monk class." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityRanger, - "Trait.Ability.Ranger", + "PF2.Trait.Ability.Ranger", "This indicates abilities from the ranger class." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityRogue, - "Trait.Ability.Rogue", + "PF2.Trait.Ability.Rogue", "This indicates abilities from the rogue class." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilitySecret, - "Trait.Ability.Secret", + "PF2.Trait.Ability.Secret", "The GM rolls the check for this ability in secret." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilitySorcerer, - "Trait.Ability.Sorcerer", + "PF2.Trait.Ability.Sorcerer", "This indicates abilities from the sorcerer class." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitAbilityWizard, - "Trait.Ability.Wizard", + "PF2.Trait.Ability.Wizard", "This indicates abilities from the wizard class." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Actions.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Actions.cpp index 2a8417918..accc66684 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Actions.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Actions.cpp @@ -13,59 +13,65 @@ #include "GameplayTags/Traits/Actions.h" // ===================================================================================================================== -// Action Traits +// Action Traits - Keywords that convey information about rules elements that interact with actions. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitActions, + "PF2.Trait.Action", + "Keywords that convey information about rules elements that interact with actions." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitActionAuditory, - "Trait.Action.Auditory", + "PF2.Trait.Action.Auditory", "Auditory actions rely on sound. An action with the auditory trait can be successful only if the creature using the action can speak or otherwise produce the required sounds." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitActionConcentrate, - "Trait.Action.Concentrate", + "PF2.Trait.Action.Concentrate", "An action with this trait requires a degree of mental concentration and discipline." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitActionFlourish, - "Trait.Action.Flourish", + "PF2.Trait.Action.Flourish", "Flourish actions are actions that require too much exertion to perform a large number in a row. You can use only 1 action with the flourish trait per turn." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitActionManipulate, - "Trait.Action.Manipulate", + "PF2.Trait.Action.Manipulate", "You must physically manipulate an item or make gestures to use an action with this trait. Creatures without a suitable appendage can't perform actions with this trait. Manipulate actions often trigger reactions." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitActionMetamagic, - "Trait.Action.Metamagic", + "PF2.Trait.Action.Metamagic", "Actions with the metamagic trait, usually from metamagic feats, tweak the properties of your spells. You must use a metamagic action directly before Casting the Spell you want to alter. If you use any action (including free actions and reactions) other than Cast a Spell directly after, you waste the benefits of the metamagic action. Any additional effects added by a metamagic action are part of the spell's effect, not of the metamagic action itself." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitActionMove, - "Trait.Action.Move", + "PF2.Trait.Action.Move", "An action with this trait involves moving from one space to another." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitActionOpen, - "Trait.Action.Open", + "PF2.Trait.Action.Open", "These maneuvers work only as the first salvo on your turn. You can use an open only if you haven't used an action with the attack or open trait yet this turn." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitActionPress, - "Trait.Action.Press", + "PF2.Trait.Action.Press", "Actions with this trait allow you to follow up earlier attacks. An action with the press trait can be used only if you are currently affected by a multiple attack penalty. Some actions with the press trait also grant an effect on a failure. The effects that are added on a failure don't apply on a critical failure. If your press action succeeds, you can choose to apply the failure effect instead. (For example, you may wish to do this when an attack deals no damage due to resistance.) Because a press action requires a multiple attack penalty, you can't use one when it's not your turn, even if you use the Ready activity." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitActionStance, - "Trait.Action.Stance", + "PF2.Trait.Action.Stance", "A stance is a general combat strategy that you enter by using an action with the stance trait, and that you remain in for some time. A stance lasts until you get knocked out, until its requirements (if any) are violated, until the encounter ends, or until you enter a new stance, whichever comes first. After you use an action with the stance trait, you can't use another one for 1 round. You can enter or be in a stance only in encounter mode." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Conditions.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Conditions.cpp index c3d49cabb..dd6b0dadb 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Conditions.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Conditions.cpp @@ -13,353 +13,361 @@ #include "GameplayTags/Traits/Conditions.h" // ===================================================================================================================== -// Condition Traits +// Condition Traits - Keywords that convey information about rules elements that interact with conditions. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Conditions Appendix, pages 618-623. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditions, + "PF2.Trait.Condition", + "Keywords that convey information about rules elements that interact with conditions." +) // === Blinded UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionBlinded, - "Trait.Condition.Blinded", + "PF2.Trait.Condition.Blinded", "You can't see. All normal terrain is difficult terrain to you. You can't detect anything using vision. You are immune to visual effects. Blinded overrides dazzled." ) // === Broken UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionBroken, - "Trait.Condition.Broken", + "PF2.Trait.Condition.Broken", "Broken is a condition that affects objects. A broken object can't be used for its normal function, nor does it grant bonuses—with the exception of armor. A broken item still imposes penalties and limitations normally incurred by carrying, holding, or wearing it." ) // === Clumsy UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionClumsy, - "Trait.Condition.Clumsy", + "PF2.Trait.Condition.Clumsy", "Your movements become clumsy and inexact. Clumsy always includes a value." ) -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionClumsy1, "Trait.Condition.Clumsy.1") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionClumsy2, "Trait.Condition.Clumsy.2") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionClumsy3, "Trait.Condition.Clumsy.3") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionClumsy4, "Trait.Condition.Clumsy.4") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionClumsy1, "PF2.Trait.Condition.Clumsy.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionClumsy2, "PF2.Trait.Condition.Clumsy.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionClumsy3, "PF2.Trait.Condition.Clumsy.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionClumsy4, "PF2.Trait.Condition.Clumsy.4") // === Concealed UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionConcealed, - "Trait.Condition.Concealed", + "PF2.Trait.Condition.Concealed", "While you are concealed from a creature, such as in a thick fog, you are difficult for that creature to see. You can still be observed, but you're tougher to target." ) // === Confused UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionConfused, - "Trait.Condition.Confused", + "PF2.Trait.Condition.Confused", "You don't have your wits about you, and you attack wildly. You are flat-footed, you don't treat anyone as your ally (though they might still treat you as theirs), and you can't Delay, Ready, or use reactions." ) // === Controlled UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionControlled, - "Trait.Condition.Controlled", + "PF2.Trait.Condition.Controlled", "Someone else is making your decisions for you, usually because you're being commanded or magically dominated." ) // === Dazzled UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionDazzled, - "Trait.Condition.Dazzled", + "PF2.Trait.Condition.Dazzled", "Your eyes are overstimulated. If vision is your only precise sense, all creatures and objects are concealed from you." ) // === Deafened UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionDeafened, - "Trait.Condition.Deafened", + "PF2.Trait.Condition.Deafened", "You can't hear. You automatically critically fail Perception checks that require you to be able to hear. You are immune to auditory effects." ) // === Doomed UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionDoomed, - "Trait.Condition.Doomed", + "PF2.Trait.Condition.Doomed", "A powerful force has gripped your soul, calling you closer to death. Doomed always includes a value. When you die, you're no longer doomed." ) -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDoomed1, "Trait.Condition.Doomed.1") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDoomed2, "Trait.Condition.Doomed.2") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDoomed3, "Trait.Condition.Doomed.3") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDoomed4, "Trait.Condition.Doomed.4") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDoomed1, "PF2.Trait.Condition.Doomed.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDoomed2, "PF2.Trait.Condition.Doomed.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDoomed3, "PF2.Trait.Condition.Doomed.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDoomed4, "PF2.Trait.Condition.Doomed.4") // === Drained UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionDrained, - "Trait.Condition.Drained", + "PF2.Trait.Condition.Drained", "When a creature successfully drains you of blood or life force, you become less healthy. Drained always includes a value." ) -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDrained1, "Trait.Condition.Drained.1") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDrained2, "Trait.Condition.Drained.2") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDrained3, "Trait.Condition.Drained.3") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDrained4, "Trait.Condition.Drained.4") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDrained1, "PF2.Trait.Condition.Drained.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDrained2, "PF2.Trait.Condition.Drained.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDrained3, "PF2.Trait.Condition.Drained.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDrained4, "PF2.Trait.Condition.Drained.4") // === Dying UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionDying, - "Trait.Condition.Dying", + "PF2.Trait.Condition.Dying", "You are bleeding out or otherwise at death's door. While you have this condition, you are unconscious. Dying always includes a value, and if it ever reaches dying 4, you die." ) -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDying1, "Trait.Condition.Dying.1") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDying2, "Trait.Condition.Dying.2") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDying3, "Trait.Condition.Dying.3") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDying4, "Trait.Condition.Dying.4") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDying1, "PF2.Trait.Condition.Dying.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDying2, "PF2.Trait.Condition.Dying.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDying3, "PF2.Trait.Condition.Dying.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDying4, "PF2.Trait.Condition.Dying.4") // === Encumbered UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionEncumbered, - "Trait.Condition.Encumbered", + "PF2.Trait.Condition.Encumbered", "You are carrying more weight than you can manage." ) // === Enfeebled UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionEnfeebled, - "Trait.Condition.Enfeebled", + "PF2.Trait.Condition.Enfeebled", "You're physically weakened. Enfeebled always includes a value." ) -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionEnfeebled1, "Trait.Condition.Enfeebled.1") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionEnfeebled2, "Trait.Condition.Enfeebled.2") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionEnfeebled3, "Trait.Condition.Enfeebled.3") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionEnfeebled4, "Trait.Condition.Enfeebled.4") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionEnfeebled1, "PF2.Trait.Condition.Enfeebled.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionEnfeebled2, "PF2.Trait.Condition.Enfeebled.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionEnfeebled3, "PF2.Trait.Condition.Enfeebled.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionEnfeebled4, "PF2.Trait.Condition.Enfeebled.4") // === Fascinated UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionFascinated, - "Trait.Condition.Fascinated", + "PF2.Trait.Condition.Fascinated", "You are compelled to focus your attention on something, distracting you from whatever else is going on around you." ) // === Fatigued UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionFatigued, - "Trait.Condition.Fatigued", + "PF2.Trait.Condition.Fatigued", "You're tired and can't summon much energy." ) // === Flat footed UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionFlatFooted, - "Trait.Condition.FlatFooted", + "PF2.Trait.Condition.FlatFooted", "You're distracted or otherwise unable to focus your full attention on defense." ) // === Fleeing UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionFleeing, - "Trait.Condition.Fleeing", + "PF2.Trait.Condition.Fleeing", "You're forced to run away due to fear or some other compulsion." ) // === Friendly UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionFriendly, - "Trait.Condition.Friendly", + "PF2.Trait.Condition.Friendly", "This condition reflects a creature's disposition toward a particular character. A creature that is friendly to a character likes that character." ) // === Frightened UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionFrightened, - "Trait.Condition.Frightened", + "PF2.Trait.Condition.Frightened", "You're gripped by fear and struggle to control your nerves. The frightened condition always includes a value." ) -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionFrightened1, "Trait.Condition.Frightened.1") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionFrightened2, "Trait.Condition.Frightened.2") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionFrightened3, "Trait.Condition.Frightened.3") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionFrightened4, "Trait.Condition.Frightened.4") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionFrightened1, "PF2.Trait.Condition.Frightened.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionFrightened2, "PF2.Trait.Condition.Frightened.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionFrightened3, "PF2.Trait.Condition.Frightened.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionFrightened4, "PF2.Trait.Condition.Frightened.4") // === Grabbed UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionGrabbed, - "Trait.Condition.Grabbed", + "PF2.Trait.Condition.Grabbed", "You're held in place by another creature, giving you the flat-footed and immobilized conditions." ) // === Helpful UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionHelpful, - "Trait.Condition.Helpful", + "PF2.Trait.Condition.Helpful", "This condition reflects a creature's disposition toward a particular character. A creature that is helpful to a character wishes to actively aid that character." ) // === Hidden UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionHidden, - "Trait.Condition.Hidden", + "PF2.Trait.Condition.Hidden", "While you're hidden from a creature, that creature knows the space you're in but can't tell precisely where you are." ) // === Hostile UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionHostile, - "Trait.Condition.Hostile", + "PF2.Trait.Condition.Hostile", "This condition reflects a creature's disposition toward a particular character. A creature that is hostile to a character actively seeks to harm that character." ) // === Immobilized UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionImmobilized, - "Trait.Condition.Immobilized", + "PF2.Trait.Condition.Immobilized", "You can't use any action with the move trait." ) // === Indifferent UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionIndifferent, - "Trait.Condition.Indifferent", + "PF2.Trait.Condition.Indifferent", "This condition reflects a creature's disposition toward a particular character. A creature that is indifferent to a character doesn't really care one way or the other about that character." ) // === Invisible UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionInvisible, - "Trait.Condition.Invisible", + "PF2.Trait.Condition.Invisible", "While invisible, you can't be seen. You're undetected to everyone." ) // === Observed UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionObserved, - "Trait.Condition.Observed", + "PF2.Trait.Condition.Observed", "Anything in plain view is observed by you." ) // === Paralyzed UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionParalyzed, - "Trait.Condition.Paralyzed", + "PF2.Trait.Condition.Paralyzed", "You are frozen in place. You have the flat-footed condition and can't act except to Recall Knowledge and use actions that require only your mind. Your senses still function, but only in the areas you can perceive without moving." ) // === Petrified UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionPetrified, - "Trait.Condition.Petrified", + "PF2.Trait.Condition.Petrified", "You have been turned to stone. You can't act, nor can you sense anything. While petrified, your mind and body are in stasis, so you don't age or notice the passing of time." ) // === Prone UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionProne, - "Trait.Condition.Prone", + "PF2.Trait.Condition.Prone", "You're lying on the ground. You are flat-footed." ) // === Quickened UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionQuickened, - "Trait.Condition.Quickened", + "PF2.Trait.Condition.Quickened", "You gain 1 additional action at the start of your turn each round. Many effects that make you quickened specify the types of actions you can use with this additional action." ) // === Restrained UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionRestrained, - "Trait.Condition.Restrained", + "PF2.Trait.Condition.Restrained", "You're tied up and can barely move, or a creature has you pinned. You have the flat-footed and immobilized conditions, and you can't use any actions with the attack or manipulate traits except to attempt to Escape or Force. Open your bonds. Restrained overrides grabbed." ) // === Sickened UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionSickened, - "Trait.Condition.Sickened", + "PF2.Trait.Condition.Sickened", "You feel ill. Sickened always includes a value. You can't willingly ingest anything—including elixirs and potions—while sickened." ) -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSickened1, "Trait.Condition.Sickened.1") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSickened2, "Trait.Condition.Sickened.2") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSickened3, "Trait.Condition.Sickened.3") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSickened4, "Trait.Condition.Sickened.4") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSickened1, "PF2.Trait.Condition.Sickened.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSickened2, "PF2.Trait.Condition.Sickened.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSickened3, "PF2.Trait.Condition.Sickened.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSickened4, "PF2.Trait.Condition.Sickened.4") // === Slowed UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionSlowed, - "Trait.Condition.Slowed", + "PF2.Trait.Condition.Slowed", "You have fewer actions. Slowed always includes a value." ) -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSlowed1, "Trait.Condition.Slowed.1") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSlowed2, "Trait.Condition.Slowed.2") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSlowed3, "Trait.Condition.Slowed.3") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSlowed4, "Trait.Condition.Slowed.4") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSlowed1, "PF2.Trait.Condition.Slowed.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSlowed2, "PF2.Trait.Condition.Slowed.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSlowed3, "PF2.Trait.Condition.Slowed.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionSlowed4, "PF2.Trait.Condition.Slowed.4") // === Stunned UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionStunned, - "Trait.Condition.Stunned", + "PF2.Trait.Condition.Stunned", "You've become senseless. You can't act while stunned. Stunned usually includes a value. Stunned overrides slowed." ) -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStunned1, "Trait.Condition.Stunned.1") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStunned2, "Trait.Condition.Stunned.2") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStunned3, "Trait.Condition.Stunned.3") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStunned4, "Trait.Condition.Stunned.4") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStunned1, "PF2.Trait.Condition.Stunned.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStunned2, "PF2.Trait.Condition.Stunned.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStunned3, "PF2.Trait.Condition.Stunned.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStunned4, "PF2.Trait.Condition.Stunned.4") // === Stupefied UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionStupefied, - "Trait.Condition.Stupefied", + "PF2.Trait.Condition.Stupefied", "Your thoughts and instincts are clouded. Stupefied always includes a value." ) -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStupefied1, "Trait.Condition.Stupefied.1") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStupefied2, "Trait.Condition.Stupefied.2") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStupefied3, "Trait.Condition.Stupefied.3") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStupefied4, "Trait.Condition.Stupefied.4") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStupefied1, "PF2.Trait.Condition.Stupefied.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStupefied2, "PF2.Trait.Condition.Stupefied.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStupefied3, "PF2.Trait.Condition.Stupefied.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionStupefied4, "PF2.Trait.Condition.Stupefied.4") // === Unconscious UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionUnconscious, - "Trait.Condition.Unconscious", + "PF2.Trait.Condition.Unconscious", "You're sleeping, or you've been knocked out. You can't act." ) // === Undetected UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionUndetected, - "Trait.Condition.Undetected", + "PF2.Trait.Condition.Undetected", "When you are undetected by a creature, that creature cannot see you at all, has no idea what space you occupy, and can't target you, though you still can be affected by abilities that target an area." ) // === Unfriendly UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionUnfriendly, - "Trait.Condition.Unfriendly", + "PF2.Trait.Condition.Unfriendly", "This condition reflects a creature's disposition toward a particular character. A creature that is unfriendly to a character dislikes and specifically distrusts that character." ) // === Unnoticed UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionUnnoticed, - "Trait.Condition.Unnoticed", + "PF2.Trait.Condition.Unnoticed", "If you are unnoticed by a creature, that creature has no idea you are present at all. When you’re unnoticed, you’re also undetected by the creature." ) // === Wounded UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitConditionWounded, - "Trait.Condition.Wounded", + "PF2.Trait.Condition.Wounded", "You have been seriously injured." ) -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionWounded1, "Trait.Condition.Wounded.1") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionWounded2, "Trait.Condition.Wounded.2") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionWounded3, "Trait.Condition.Wounded.3") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionWounded4, "Trait.Condition.Wounded.4") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionWounded1, "PF2.Trait.Condition.Wounded.1") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionWounded2, "PF2.Trait.Condition.Wounded.2") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionWounded3, "PF2.Trait.Condition.Wounded.3") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionWounded4, "PF2.Trait.Condition.Wounded.4") // The following conditions do not appear in the Core Rulebook but were added by OpenPF2. // === Dead -UE_DEFINE_GAMEPLAY_TAG(Pf2TagTraitConditionDead, "Trait.Condition.Dead") +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitConditionDead, + "PF2.Trait.Condition.Dead", + "You are dead. This is equivalent to PF2.Trait.Condition.Dying.4.") diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Creatures.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Creatures.cpp index 406285bcb..fd4beb86a 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Creatures.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Creatures.cpp @@ -13,41 +13,47 @@ #include "GameplayTags/Traits/Creatures.h" // ===================================================================================================================== -// Creature Traits +// Creature Traits - Keywords that convey information about rules elements that interact with creatures. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitCreatures, + "PF2.Trait.Creature", + "Keywords that convey information about rules elements that interact with creatures." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitCreatureElf, - "Trait.Creature.Elf", + "PF2.Trait.Creature.Elf", "A creature with this trait is a member of the elf ancestry. Elves are mysterious people with rich traditions of magic and scholarship who typically have low-light vision. An ability with this trait can be used or selected only by elves. A weapon with this trait is created and used by elves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitCreatureHalfElf, - "Trait.Creature.HalfElf", + "PF2.Trait.Creature.HalfElf", "A creature with this trait is part human and part elf. An ability with this trait can be used or selected only by half-elves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitCreatureHalfOrc, - "Trait.Creature.HalfOrc", + "PF2.Trait.Creature.HalfOrc", "A creature with this trait is part human and part orc. An ability with this trait can be used or selected only by half-orcs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitCreatureHuman, - "Trait.Creature.Human", + "PF2.Trait.Creature.Human", "A creature with this trait is a member of the human ancestry. Humans are a diverse array of people known for their adaptability. An ability with this trait can be used or selected only by humans." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitCreatureHumanoid, - "Trait.Creature.Humanoid", + "PF2.Trait.Creature.Humanoid", "Humanoid creatures reason and act much like humans. They typically stand upright and have two arms and two legs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitCreatureOrc, - "Trait.Creature.Orc", + "PF2.Trait.Creature.Orc", "A creature with this trait is a member of the orc ancestry. These green-skinned people tend to have darkvision. An ability with this trait can be used or selected only by orcs. An item with this trait is created and used by orcs." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Effects.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Effects.cpp index ae3d8fce1..b66a486eb 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Effects.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Effects.cpp @@ -13,41 +13,47 @@ #include "GameplayTags/Traits/Effects.h" // ===================================================================================================================== -// Effect Traits +// Effect Traits - Keywords that convey information about rules elements that interact with effects. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Conditions Appendix, pages 628-638. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitEffects, + "PF2.Trait.Effect", + "Keywords that convey information about rules elements that interact with effects." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitEffectDeath, - "Trait.Effect.Death", + "PF2.Trait.Effect.Death", "An effect with the death trait kills you immediately if it reduces you to 0 HP. Some death effects can bring you closer to death or slay you outright without reducing you to 0 HP." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitEffectDisease, - "Trait.Effect.Disease", + "PF2.Trait.Effect.Disease", "An effect with this trait applies one or more diseases. A disease is typically an affliction." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitEffectLinguistic, - "Trait.Effect.Linguistic", + "PF2.Trait.Effect.Linguistic", "An effect with this trait depends on language comprehension. A linguistic effect that targets a creature works only if the target understands the language you are using." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitEffectNonlethal, - "Trait.Effect.Nonlethal", + "PF2.Trait.Effect.Nonlethal", "An effect with this trait is not inherently deadly. Damage from a nonlethal effect knocks a creature out rather than killing it." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitEffectPoison, - "Trait.Effect.Poison", + "PF2.Trait.Effect.Poison", "An effect with this trait delivers a poison or deals poison damage. An item with this trait is poisonous and might cause an affliction." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitEffectSonic, - "Trait.Effect.Sonic", + "PF2.Trait.Effect.Sonic", "An effect with the sonic trait functions only if it makes sound, meaning it has no effect in an area of silence or in a vacuum. This is different from an auditory effect, which functions only if the target can hear it. A sonic effect might deal sonic damage." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Weapons.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Weapons.cpp index 4ad431184..2173ebbc9 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Weapons.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Weapons.cpp @@ -13,245 +13,251 @@ #include "GameplayTags/Traits/Weapons.h" // ===================================================================================================================== -// Weapon Traits +// Weapon Traits - Keywords that convey information about rules elements that interact with weapons. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, "Weapon Traits", pages 282-283. +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTraitWeapon, + "PF2.Trait.Weapon", + "Keywords that convey information about rules elements that interact with weapons." +) + UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponAgile, - "Trait.Weapon.Agile", + "PF2.Trait.Weapon.Agile", "A weapon with this trait has a different multiple attack penalty. The second attack on a character's turn is –4 instead of –5, and –8 instead of –10 on the third and subsequent attacks in the turn." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponAttachedToShield, - "Trait.Weapon.Attached.ToShield", + "PF2.Trait.Weapon.Attached.ToShield", "A weapon with this trait must be combined with a shield to be used." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponBackstabber, - "Trait.Weapon.Backstabber", + "PF2.Trait.Weapon.Backstabber", "A weapon with this trait behaves differently when hitting a flat-footed creature. This weapon deals 1 precision damage in addition to its normal damage. The precision damage increases to 2 if the weapon is a +3 weapon." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponBackswing, - "Trait.Weapon.Backswing", + "PF2.Trait.Weapon.Backswing", "A weapon with this trait allows a character to use the momentum from a missed attack to lead into their next attack. After missing with this weapon on their turn, a character gains a +1 circumstance bonus to their next attack with this weapon before the end of their turn." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponDeadlyD6, - "Trait.Weapon.Deadly.D6", + "PF2.Trait.Weapon.Deadly.D6", "A weapon with this trait gets a D6 damage die added to critical hits. The die is rolled after doubling the weapon's damage. This increases to two dice if the weapon has a greater striking rune and three dice if the weapon has a major striking rune." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponDeadlyD8, - "Trait.Weapon.Deadly.D8", + "PF2.Trait.Weapon.Deadly.D8", "A weapon with this trait gets a D8 damage die added to critical hits. The die is rolled after doubling the weapon's damage. This increases to two dice if the weapon has a greater striking rune and three dice if the weapon has a major striking rune." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponDeadlyD10, - "Trait.Weapon.Deadly.D10", + "PF2.Trait.Weapon.Deadly.D10", "A weapon with this trait gets a D10 damage die added to critical hits. The die is rolled after doubling the weapon's damage. This increases to two dice if the weapon has a greater striking rune and three dice if the weapon has a major striking rune." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponDisarm, - "Trait.Weapon.Disarm", + "PF2.Trait.Weapon.Disarm", "A weapon with this trait allows a character to Disarm with the Athletics skill even if the character doesn't have a free hand. This uses the weapon's reach (if different from the character's own) and adds the weapon's item bonus to attack rolls (if any) as an item bonus to the Athletics check. If a character critically fails a check to Disarm using the weapon, they can drop the weapon to take the effects of a failure instead of a critical failure. On a critical success, they still need a free hand if they want to take the item." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponDwarf, - "Trait.Weapon.Dwarf", + "PF2.Trait.Weapon.Dwarf", "A weapon with this trait is crafted and used by Dwarves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponElf, - "Trait.Weapon.Elf", + "PF2.Trait.Weapon.Elf", "A weapon with this trait is crafted and used by Elves." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponFatalD8, - "Trait.Weapon.Fatal.D8", + "PF2.Trait.Weapon.Fatal.D8", "A weapon with this trait has a D8 damage die on a critical hit instead of the normal die size, along with one additional D8 damage die." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponFatalD10, - "Trait.Weapon.Fatal.D10", + "PF2.Trait.Weapon.Fatal.D10", "A weapon with this trait has a D10 damage die on a critical hit instead of the normal die size, along with one additional D10 damage die." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponFatalD12, - "Trait.Weapon.Fatal.D12", + "PF2.Trait.Weapon.Fatal.D12", "A weapon with this trait has a D12 damage die on a critical hit instead of the normal die size, along with one additional D12 damage die." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponFinesse, - "Trait.Weapon.Finesse", + "PF2.Trait.Weapon.Finesse", "A melee weapon with this trait allows a character to use their Dexterity modifier instead of their Strength modifier on attack rolls. The character still uses their Strength modifier when calculating damage." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponForceful, - "Trait.Weapon.Forceful", + "PF2.Trait.Weapon.Forceful", "A weapon with this trait becomes more dangerous as a character builds momentum. When they attack with it more than once on their turn, the second attack gains a circumstance bonus to damage equal to the number of weapon damage dice, and each subsequent attack gains a circumstance bonus to damage equal to double the number of weapon damage dice." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponFreeHand, - "Trait.Weapon.FreeHand", + "PF2.Trait.Weapon.FreeHand", "A weapon with this trait doesn't take up a character's hand, usually because it is built into the character's armor. A free-hand weapon can't be Disarmed. The character can use the hand covered by the free-hand weapon to wield other items, perform manipulate actions, and so on. They can't attack with a free-hand weapon if they're wielding anything in that hand or otherwise using that hand. When they're not wielding anything and not otherwise using the hand, they can use abilities that require them to have a hand free as well as those that require them to be wielding a weapon in that hand. Each of their hands can have only one free-hand weapon on it." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponGnome, - "Trait.Weapon.Gnome", + "PF2.Trait.Weapon.Gnome", "A weapon with this trait is crafted and used by Gnomes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponGoblin, - "Trait.Weapon.Goblin", + "PF2.Trait.Weapon.Goblin", "A weapon with this trait is crafted and used by Goblins." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponHalfling, - "Trait.Weapon.Halfling", + "PF2.Trait.Weapon.Halfling", "A weapon with this trait is crafted and used by Halflings." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponJoustingD6, - "Trait.Weapon.Jousting.D6", + "PF2.Trait.Weapon.Jousting.D6", "A weapon with this trait is suited for mounted combat with a harness or similar means. When mounted, if the character moved at least 3 meters on the action before their attack, add a circumstance bonus to damage for that attack equal to the number of damage dice for the weapon. In addition, while mounted, they can wield the weapon in one hand, changing the damage die to a D6." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponMonk, - "Trait.Weapon.Monk", + "PF2.Trait.Weapon.Monk", "A weapon with this trait monks often learn to use." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponNonlethal, - "Trait.Weapon.Nonlethal", + "PF2.Trait.Weapon.Nonlethal", "A weapon with this trait often has a nonlethal attack, and is used to knock creatures unconscious instead of kill them. A character can use a nonlethal weapon to make a lethal attack with a –2 circumstance penalty." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponOrc, - "Trait.Weapon.Orc", + "PF2.Trait.Weapon.Orc", "A weapon with this trait is crafted and used by Orcs." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponParry, - "Trait.Weapon.Parry", + "PF2.Trait.Weapon.Parry", "A weapon with this trait can be used defensively to block attacks. While wielding this weapon, if a character's proficiency with it is trained or better, they can spend a single action to position their weapon defensively, gaining a +1 circumstance bonus to AC until the start of their next turn." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponPropulsive, - "Trait.Weapon.Propulsive", + "PF2.Trait.Weapon.Propulsive", "A ranged weapon with this trait enables a character to add half their Strength modifier (if positive) to damage rolls. If the character has a negative Strength modifier, they add their full Strength modifier instead." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponReach, - "Trait.Weapon.Reach", + "PF2.Trait.Weapon.Reach", "A weapon with this trait is long and can be used to attack creatures up to 3 meters away instead of only adjacent creatures. For creatures that already have reach with the limb or limbs that wield the weapon, the weapon increases their reach by 1.5 meters." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponShove, - "Trait.Weapon.Shove", + "PF2.Trait.Weapon.Shove", "A weapon with this trait can be used by a character to Shove with the Athletics skill even if they don't have a free hand. This uses the weapon's reach (if different from their own) and adds the weapon's item bonus to attack rolls as an item bonus to the Athletics check. If they critically fail a check to Shove using the weapon, they can drop the weapon to take the effects of a failure instead of a critical failure." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponSweep, - "Trait.Weapon.Sweep", + "PF2.Trait.Weapon.Sweep", "A weapon with this trait makes wide sweeping or spinning attacks, making it easier to attack multiple enemies. When a character attacks with this weapon, they gain a +1 circumstance bonus to their attack roll if they already attempted to attack a different target this turn using this weapon." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponThrown3m, - "Trait.Weapon.Thrown.3m", + "PF2.Trait.Weapon.Thrown.3m", "A weapon with this trait can be thrown as a ranged attack; it is a ranged weapon when thrown. The character adds their Strength modifier to damage as they would for a melee weapon. When this trait appears on a melee weapon, it uses a range increment of 3 meters. Ranged weapons with this trait use the range increment in the weapon's Range entry." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponThrown6m, - "Trait.Weapon.Thrown.6m", + "PF2.Trait.Weapon.Thrown.6m", "A weapon with this trait can be thrown as a ranged attack; it is a ranged weapon when thrown. The character adds their Strength modifier to damage as they would for a melee weapon. When this trait appears on a melee weapon, it uses a range increment of 6 meters. Ranged weapons with this trait use the range increment in the weapon's Range entry." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponTrip, - "Trait.Weapon.Trip", + "PF2.Trait.Weapon.Trip", "A weapon with this trait can be used to Trip with the Athletics skill even if the character doesn't have a free hand. This uses the weapon's reach (if different from their own) and adds the weapon's item bonus to attack rolls as an item bonus to the Athletics check. If they critically fail a check to Trip using the weapon, they can drop the weapon to take the effects of a failure instead of a critical failure." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponTwin, - "Trait.Weapon.Twin", + "PF2.Trait.Weapon.Twin", "Two weapons with this trait are used as a pair, complementing each other. When a character attacks with a twin weapon, they add a circumstance bonus to the damage roll equal to the weapon's number of damage dice if they have previously attacked with a different weapon of the same type this turn. The weapons must be of the same type to benefit from this trait, but they don't need to have the same runes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponTwoHandD8, - "Trait.Weapon.Two-hand.D8", + "PF2.Trait.Weapon.Two-hand.D8", "A weapon with this trait can be wielded with two hands. Doing so changes its weapon damage die to a D8. This change applies to all the weapon's damage dice, such as those from striking runes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponTwoHandD10, - "Trait.Weapon.Two-hand.D10", + "PF2.Trait.Weapon.Two-hand.D10", "A weapon with this trait can be wielded with two hands. Doing so changes its weapon damage die to a D10. This change applies to all the weapon's damage dice, such as those from striking runes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponTwoHandD12, - "Trait.Weapon.Two-hand.D12", + "PF2.Trait.Weapon.Two-hand.D12", "A weapon with this trait can be wielded with two hands. Doing so changes its weapon damage die to a D12. This change applies to all the weapon's damage dice, such as those from striking runes." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponUnarmed, - "Trait.Weapon.Unarmed", + "PF2.Trait.Weapon.Unarmed", "An unarmed attack uses a character's body rather than a manufactured weapon. An unarmed attack isn't a weapon, though it's categorized with weapons for weapon groups, and it might have weapon traits. Since it's part of a character's body, an unarmed attack can't be Disarmed. It also doesn't take up a hand, though a fist or other grasping appendage generally works like a free-hand weapon." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponVersatileBludgeoning, - "Trait.Weapon.Versatile.Bludgeoning", + "PF2.Trait.Weapon.Versatile.Bludgeoning", "A weapon with this trait can be used to deal Bludgeoning (B) damage instead of the type of damage listed in the Damage entry. The character chooses the damage type each time they make an attack." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponVersatilePiercing, - "Trait.Weapon.Versatile.Piercing", + "PF2.Trait.Weapon.Versatile.Piercing", "A weapon with this trait can be used to deal Piercing (P) damage instead of the type of damage listed in the Damage entry. The character chooses the damage type each time they make an attack." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponVersatileSlashing, - "Trait.Weapon.Versatile.Slashing", + "PF2.Trait.Weapon.Versatile.Slashing", "A weapon with this trait can be used to deal Slashing (S) damage instead of the type of damage listed in the Damage entry. The character chooses the damage type each time they make an attack." ) UE_DEFINE_GAMEPLAY_TAG_COMMENT( Pf2TagTraitWeaponVolley9m, - "Trait.Weapon.Volley.9m", + "PF2.Trait.Weapon.Volley.9m", "A ranged weapon with this trait is less effective at close distances. A character's attacks against targets that are at a distance of 9 meters take a –2 penalty." ) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/WeaponGroups.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/WeaponGroups.cpp index 4aeddc93c..ef30cdd4b 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/WeaponGroups.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/WeaponGroups.cpp @@ -16,18 +16,24 @@ // Weapon Groups // ===================================================================================================================== // From the Pathfinder 2E Core Rulebook, pages 280-282; Tables 6-6, 6-7, and 6-8. -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupAxe, "WeaponGroup.Axe") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupBomb, "WeaponGroup.Bomb") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupBow, "WeaponGroup.Bow") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupBrawling, "WeaponGroup.Brawling") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupClub, "WeaponGroup.Club") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupDart, "WeaponGroup.Dart") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupFlail, "WeaponGroup.Flail") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupHammer, "WeaponGroup.Hammer") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupKnife, "WeaponGroup.Knife") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupPick, "WeaponGroup.Pick") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupPolearm, "WeaponGroup.Polearm") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupShield, "WeaponGroup.Shield") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupSling, "WeaponGroup.Sling") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupSpear, "WeaponGroup.Spear") -UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupSword, "WeaponGroup.Sword") +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagWeapons, + "PF2.WeaponGroup", + "The broad categories of weapons by shape and type of attack (ranged vs. melee)." +) + +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupAxe, "PF2.WeaponGroup.Axe") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupBomb, "PF2.WeaponGroup.Bomb") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupBow, "PF2.WeaponGroup.Bow") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupBrawling, "PF2.WeaponGroup.Brawling") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupClub, "PF2.WeaponGroup.Club") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupDart, "PF2.WeaponGroup.Dart") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupFlail, "PF2.WeaponGroup.Flail") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupHammer, "PF2.WeaponGroup.Hammer") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupKnife, "PF2.WeaponGroup.Knife") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupPick, "PF2.WeaponGroup.Pick") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupPolearm, "PF2.WeaponGroup.Polearm") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupShield, "PF2.WeaponGroup.Shield") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupSling, "PF2.WeaponGroup.Sling") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupSpear, "PF2.WeaponGroup.Spear") +UE_DEFINE_GAMEPLAY_TAG(Pf2TagWeaponGroupSword, "PF2.WeaponGroup.Sword") diff --git a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2KeyAbilityTemlCalculationBase.h b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2KeyAbilityTemlCalculationBase.h index 866775db4..8fed01f2b 100644 --- a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2KeyAbilityTemlCalculationBase.h +++ b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2KeyAbilityTemlCalculationBase.h @@ -137,7 +137,7 @@ class OPENPF2GAMEFRAMEWORK_API UPF2KeyAbilityTemlCalculationBase : public UGamep * * @param SourceTags * The tags on the character. A tag in this list should indicate the character's Key Ability (e.g. - * "KeyAbility.Strength"). + * "PF2.KeyAbility.Strength"). * * @return * Either a capture definition that has a valid source attribute that can be used to capture the Key Ability diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Common.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Common.h new file mode 100644 index 000000000..223633d47 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Common.h @@ -0,0 +1,18 @@ +// OpenPF2 Game Framework for Unreal Engine, Copyright 2024, Guy Elsmore-Paddock. All Rights Reserved. +// +// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not +// distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. + +#pragma once + +#include + +// ===================================================================================================================== +// Top-level tag category definitions. +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagRoot) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEncounters) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilities) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffects) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencies) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraits) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Currencies.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Currencies.h index 0bfac01c7..5351c7799 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Currencies.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Currencies.h @@ -18,4 +18,5 @@ // Default Currency - "Coins" // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Chapter 6, page 271. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencies) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyCoins) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/CurrencyUnits.h b/Source/OpenPF2GameFramework/Public/GameplayTags/CurrencyUnits.h index 4a4faa20f..eaf700c03 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/CurrencyUnits.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/CurrencyUnits.h @@ -18,7 +18,9 @@ // Default Currency Units // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Chapter 6, page 271. -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoinsCopperPiece) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoinsSilverPiece) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoinsGoldPiece) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoinsPlatinumPiece) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnits) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoins) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoinCopperPiece) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoinSilverPiece) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoinGoldPiece) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCurrencyUnitCoinPlatinumPiece) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/DamageTypes.h b/Source/OpenPF2GameFramework/Public/GameplayTags/DamageTypes.h index 068c3f4b2..f88700518 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/DamageTypes.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/DamageTypes.h @@ -18,6 +18,7 @@ // Damage types // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Chapter 9, page 452, "Damage Types". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypes) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypePhysical) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypePhysicalBludgeoning) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagDamageTypePhysicalPiercing) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/AbilityTriggers.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/AbilityTriggers.h index 7bf171ec2..41495a419 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/AbilityTriggers.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/AbilityTriggers.h @@ -7,10 +7,17 @@ #include +// ===================================================================================================================== +// Tags that trigger Gameplay Abilities that can be used at any time. +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryAnytime) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryAnytimeAbilityBoost) + // ===================================================================================================================== // Tags that trigger Encounter-related Gameplay Abilities. // ===================================================================================================================== -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncountersEnterEncounter) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncountersStartTurn) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncountersEndTurn) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncountersLeaveEncounter) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncounters) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncounterEnterEncounter) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncounterStartTurn) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncounterEndTurn) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTriggerTagCategoryEncounterLeaveEncounter) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/CharacterStates.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/CharacterStates.h index fbef3a807..c4040588d 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/CharacterStates.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Encounters/CharacterStates.h @@ -10,6 +10,7 @@ // ===================================================================================================================== // Tags that apply to characters during encounters. // ===================================================================================================================== -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEncounterCharacterTurnActive) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEncounterCharacterPointsRefreshFrozen) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEncounterCharacterCooldownNextTurn) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEncounterCharacterStates) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEncounterCharacterStateTurnActive) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEncounterCharacterStatePointsRefreshFrozen) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEncounterCharacterStateCooldownNextTurn) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/AbilityTypes.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/AbilityTypes.h index 3a468e8ff..9f1ed027e 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/AbilityTypes.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/AbilityTypes.h @@ -10,6 +10,7 @@ // ===================================================================================================================== // Tags that Identify Gameplay Ability Types // ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityTypes) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityTypeAbilityBoost) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityTypeDefaultMovement) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityTypeDefaultFaceTarget) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/ActivationMetadata.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/ActivationMetadata.h index b31a9633c..0d8fd611f 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/ActivationMetadata.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/ActivationMetadata.h @@ -10,5 +10,6 @@ // ===================================================================================================================== // Tags that identify additional metadata that has been passed along for an ability activation. // ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityActivationMetadata) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityActivationMetadataHasTargetCharacter) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityActivationMetadataHasTargetLocation) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/WaitForEvents.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/WaitForEvents.h index 18548bc19..ec13fa204 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/WaitForEvents.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayAbilities/WaitForEvents.h @@ -10,7 +10,8 @@ // ===================================================================================================================== // Tags that identify events abilities can wait for during their activation. // ===================================================================================================================== -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityGameplayEventDamageReceived) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityGameplayEventFacingComplete) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityGameplayEventHitPointsChanged) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityGameplayEventMontageWeaponHit) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityWaitForEvents) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityWaitForEventDamageReceived) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityWaitForEventFacingComplete) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityWaitForEventHitPointsChanged) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayAbilityWaitForEventMontageWeaponHit) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayCues.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayCues.h index df1ccaf08..d99306e3e 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayCues.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayCues.h @@ -10,4 +10,6 @@ // ===================================================================================================================== // Gameplay Cues that provide special FX and sound FX in response to effect activations. // ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayCues) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayCueCharacters) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayCueCharacterInflictDamage) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/CalculationSources.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/CalculationSources.h index 32c0e9dd5..b14c690b0 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/CalculationSources.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/CalculationSources.h @@ -12,4 +12,5 @@ // // These should not be used on weapons, characters, or other objects that appear in the world. // ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectCalculationSources) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectCalculationSourceInitiative) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/SetByCallerParameters.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/SetByCallerParameters.h index 1c6d4103b..748b86980 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/SetByCallerParameters.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/SetByCallerParameters.h @@ -8,8 +8,9 @@ #include // ===================================================================================================================== -// Parameters passed in to "Set by caller" GEs +// Parameters passed into "Set by caller" GEs. // ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectParameters) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectParameterDamage) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectParameterResistance) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectParameterHealing) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/WeightGroups.h b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/WeightGroups.h index e0e93a0a7..046ce22c0 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/WeightGroups.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/GameplayEffects/WeightGroups.h @@ -12,6 +12,7 @@ // // @todo Deprecate and replace with a simpler system in https://github.com/OpenPF2/Plugin/issues/61. // ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectWeightGroups) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectWeightGroup00_InitializeBaseStats) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectWeightGroup05_PostInitializeBaseStats) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagGameplayEffectWeightGroup10_ManagedEffects) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureAlignments.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureAlignments.h index 1ceda3294..2ad23ca55 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureAlignments.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureAlignments.h @@ -18,6 +18,8 @@ // Creature Alignment - The indicator of the character's morality and personality. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, page 29, Table 1-2: The Nine Alignments. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignments) + OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentLawful) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentLawfulGood) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureAlignmentLawfulNeutral) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureSizes.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureSizes.h index 9660472a7..055c89ed8 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureSizes.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/CreatureSizes.h @@ -18,6 +18,7 @@ // Creature Size - The approximate physical amount of space a creature occupies. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, page 474, Table 9-1: Size and Reach. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureSizes) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureSizeTiny) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureSizeSmall) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagCreatureSizeMedium) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Equipment.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Equipment.h index 229fe3d60..1932f32a9 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Equipment.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Equipment.h @@ -14,10 +14,16 @@ #include +// ===================================================================================================================== +// The types of item(s) the character *currently* has equipped. +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEquipped) + // ===================================================================================================================== // The type of armor the character *currently* has equipped. // ===================================================================================================================== -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorEquippedUnarmored) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorEquippedLight) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorEquippedMedium) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorEquippedHeavy) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEquippedArmor) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEquippedArmorUnarmored) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEquippedArmorLight) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEquippedArmorMedium) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagEquippedArmorHeavy) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/KeyAbilities.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/KeyAbilities.h index 8ff0b75c2..de83ad451 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/KeyAbilities.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/KeyAbilities.h @@ -20,6 +20,7 @@ // Sources: // - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 68, "Key Ability". // - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", pages 72-232 ("Key Ability" sections in each class entry). +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagKeyAbilities) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagKeyAbilityStrength) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagKeyAbilityDexterity) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagKeyAbilityConstitution) @@ -38,6 +39,7 @@ OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagKeyAbilityCharisma // Sources: // - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 68, "Key Ability". // - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", pages 72-232 ("Key Ability" sections in each class entry). +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellcastingAbilities) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellcastingAbilityStrength) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellcastingAbilityDexterity) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellcastingAbilityConstitution) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Languages.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Languages.h index e7aceeffa..a9376ee16 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Languages.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Languages.h @@ -14,10 +14,16 @@ #include +// ===================================================================================================================== +// Languages - How characters communicate through hearing, speaking, writing, and reading. +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguages) + // ===================================================================================================================== // Common Languages - Languages regularly encountered in most places, even among those who aren’t native speakers. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, page 65, Table 2-1: Common Languages. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguagesCommon) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonCommon) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonDraconic) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonDwarven) @@ -35,6 +41,7 @@ OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageCommonUnde // interested in the associated cultures. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, page 65, Table 2-2: Uncommon Languages. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguagesUncommon) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonAbyssal) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonAklo) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonAquan) @@ -54,4 +61,5 @@ OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageUncommonTe // teaching the language to non-druids. // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, page 65, Table 2-3: Secret Languages. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguagesSecret) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagLanguageSecretDruidic) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Armor.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Armor.h index 0ddfe7faa..fe6c9ada0 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Armor.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Armor.h @@ -23,30 +23,32 @@ // - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 27, "Character Sheet". // - Pathfinder 2E Core Rulebook, Appendix, page 624, "Armor Class". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategories) + // === Unarmored -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryUnarmoredUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryUnarmoredTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryUnarmoredExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryUnarmoredMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryUnarmoredLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryUnarmoredUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryUnarmoredTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryUnarmoredExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryUnarmoredMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryUnarmoredLegendary) // === Light -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryLightUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryLightTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryLightExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryLightMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryLightLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryLightUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryLightTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryLightExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryLightMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryLightLegendary) // === Medium -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryMediumUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryMediumTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryMediumExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryMediumMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryMediumLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryMediumUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryMediumTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryMediumExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryMediumMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryMediumLegendary) // === Heavy -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryHeavyUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryHeavyTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryHeavyExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryHeavyMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagArmorCategoryHeavyLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryHeavyUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryHeavyTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryHeavyExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryHeavyMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyArmorCategoryHeavyLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/ClassDc.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/ClassDc.h index 5d49a4276..7e0ab3d22 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/ClassDc.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/ClassDc.h @@ -23,8 +23,9 @@ // - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 27, "Character Sheet". // - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 69, "Initial Proficiencies". // - Pathfinder 2E Core Rulebook, Appendix, page 624, "Class DC". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagClassDcUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagClassDcTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagClassDcExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagClassDcMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagClassDcLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyClassDc) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyClassDcUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyClassDcTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyClassDcExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyClassDcMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyClassDcLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Perception.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Perception.h index 6cdd6b53d..068cc8a78 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Perception.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Perception.h @@ -23,8 +23,9 @@ // - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 27, "Character Sheet". // - Pathfinder 2E Core Rulebook, Chapter 3: "Classes", page 69, "Initial Proficiencies". // - Pathfinder 2E Core Rulebook, Appendix, page 624, "Perception". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagPerceptionUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagPerceptionTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagPerceptionExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagPerceptionMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagPerceptionLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyPerception) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyPerceptionUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyPerceptionTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyPerceptionExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyPerceptionMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyPerceptionLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SavingThrows.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SavingThrows.h index 62603c3cc..b6edc6e43 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SavingThrows.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SavingThrows.h @@ -22,23 +22,27 @@ // - Pathfinder 2E Core Rulebook, Chapter 1: "Introduction", page 13, "Saving Throw (Save)" and "Proficiency". // - Pathfinder 2E Core Rulebook, Appendix, page 624, "Saving Throws". + // === Fortitude -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowFortitudeUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowFortitudeTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowFortitudeExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowFortitudeMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowFortitudeLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowFortitude) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowFortitudeUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowFortitudeTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowFortitudeExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowFortitudeMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowFortitudeLegendary) // === Reflex -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowReflexUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowReflexTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowReflexExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowReflexMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowReflexLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowReflex) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowReflexUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowReflexTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowReflexExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowReflexMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowReflexLegendary) // === Will -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowWillUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowWillTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowWillExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowWillMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSavingThrowWillLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowWill) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowWillUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowWillTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowWillExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowWillMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySavingThrowWillLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Skills.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Skills.h index db2c98160..18442b15a 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Skills.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Skills.h @@ -24,127 +24,145 @@ // - Pathfinder 2E Core Rulebook, Appendix, page 624, "Skills". // === Acrobatics -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAcrobaticsUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAcrobaticsTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAcrobaticsExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAcrobaticsMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAcrobaticsLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillAcrobatics) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillAcrobaticsUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillAcrobaticsTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillAcrobaticsExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillAcrobaticsMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillAcrobaticsLegendary) // === Arcana -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillArcanaUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillArcanaTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillArcanaExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillArcanaMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillArcanaLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillArcana) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillArcanaUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillArcanaTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillArcanaExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillArcanaMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillArcanaLegendary) // === Athletics -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAthleticsUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAthleticsTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAthleticsExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAthleticsMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillAthleticsLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillAthletics) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillAthleticsUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillAthleticsTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillAthleticsExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillAthleticsMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillAthleticsLegendary) // === Crafting -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillCraftingUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillCraftingTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillCraftingExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillCraftingMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillCraftingLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillCrafting) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillCraftingUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillCraftingTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillCraftingExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillCraftingMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillCraftingLegendary) // === Deception -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDeceptionUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDeceptionTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDeceptionExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDeceptionMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDeceptionLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillDeception) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillDeceptionUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillDeceptionTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillDeceptionExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillDeceptionMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillDeceptionLegendary) // === Diplomacy -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDiplomacyUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDiplomacyTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDiplomacyExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDiplomacyMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillDiplomacyLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillDiplomacy) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillDiplomacyUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillDiplomacyTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillDiplomacyExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillDiplomacyMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillDiplomacyLegendary) // === Intimidation -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillIntimidationUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillIntimidationTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillIntimidationExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillIntimidationMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillIntimidationLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillIntimidation) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillIntimidationUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillIntimidationTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillIntimidationExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillIntimidationMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillIntimidationLegendary) // === Lore1 -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore1Untrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore1Trained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore1Expert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore1Master) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore1Legendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillLore1) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillLore1Untrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillLore1Trained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillLore1Expert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillLore1Master) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillLore1Legendary) // === Lore2 -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore2Untrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore2Trained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore2Expert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore2Master) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillLore2Legendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillLore2) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillLore2Untrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillLore2Trained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillLore2Expert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillLore2Master) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillLore2Legendary) // === Medicine -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillMedicineUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillMedicineTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillMedicineExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillMedicineMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillMedicineLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillMedicine) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillMedicineUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillMedicineTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillMedicineExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillMedicineMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillMedicineLegendary) // === Nature -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillNatureUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillNatureTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillNatureExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillNatureMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillNatureLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillNature) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillNatureUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillNatureTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillNatureExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillNatureMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillNatureLegendary) // === Occultism -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillOccultismUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillOccultismTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillOccultismExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillOccultismMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillOccultismLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillOccultism) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillOccultismUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillOccultismTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillOccultismExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillOccultismMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillOccultismLegendary) // === Performance -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillPerformanceUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillPerformanceTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillPerformanceExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillPerformanceMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillPerformanceLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillPerformance) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillPerformanceUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillPerformanceTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillPerformanceExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillPerformanceMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillPerformanceLegendary) // === Religion -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillReligionUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillReligionTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillReligionExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillReligionMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillReligionLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillReligion) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillReligionUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillReligionTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillReligionExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillReligionMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillReligionLegendary) // === Society -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSocietyUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSocietyTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSocietyExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSocietyMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSocietyLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillSociety) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillSocietyUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillSocietyTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillSocietyExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillSocietyMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillSocietyLegendary) // === Stealth -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillStealthUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillStealthTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillStealthExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillStealthMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillStealthLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillStealth) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillStealthUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillStealthTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillStealthExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillStealthMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillStealthLegendary) // === Survival -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSurvivalUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSurvivalTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSurvivalExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSurvivalMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillSurvivalLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillSurvival) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillSurvivalUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillSurvivalTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillSurvivalExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillSurvivalMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillSurvivalLegendary) // === Thievery -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillThieveryUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillThieveryTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillThieveryExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillThieveryMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSkillThieveryLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillThievery) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillThieveryUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillThieveryTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillThieveryExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillThieveryMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySkillThieveryLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellAttacks.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellAttacks.h index 7b4ef1d89..a603d74c1 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellAttacks.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellAttacks.h @@ -18,8 +18,9 @@ // Proficiency Ranks for Spell Attacks (Spell Attack Roll). // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Appendix, page 627, "Spell Attack Roll". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellAttackUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellAttackTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellAttackExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellAttackMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellAttackLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySpellAttack) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySpellAttackUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySpellAttackTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySpellAttackExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySpellAttackMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySpellAttackLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellDc.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellDc.h index 8c099b959..d52dbb4ed 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellDc.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/SpellDc.h @@ -18,8 +18,9 @@ // Proficiency Ranks for Spell DC (Difficulty Class) and spellcasting (Spell DC). // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Appendix, page 627, "Spell DC". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellDcUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellDcTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellDcExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellDcMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpellDcLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySpellDc) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySpellDcUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySpellDcTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySpellDcExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySpellDcMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencySpellDcLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Weapons.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Weapons.h index eb23e5ce2..ecfb77bed 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Weapons.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/Proficiencies/Weapons.h @@ -14,6 +14,12 @@ #include +// ===================================================================================================================== +// Proficiency Ranks for Weapons +// ===================================================================================================================== +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeapon) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategory) + // ===================================================================================================================== // Proficiency Ranks for Unarmed Attacks // ===================================================================================================================== @@ -30,11 +36,12 @@ // - Chapter 3, page 179, "Attacks" for "Rogue" // - Chapter 3, page 191, "Attacks" for "Sorcerer" // - Chapter 3, page 203, "Attacks" for "Wizard" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryUnarmedUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryUnarmedTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryUnarmedExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryUnarmedMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryUnarmedLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryUnarmed) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryUnarmedUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryUnarmedTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryUnarmedExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryUnarmedMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryUnarmedLegendary) // ===================================================================================================================== // Proficiency Ranks for Simple Weapons @@ -51,77 +58,84 @@ OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyC // - Chapter 3, page 167, "Attacks" for "Ranger" // - Chapter 3, page 179, "Attacks" for "Rogue" // - Chapter 3, page 191, "Attacks" for "Sorcerer" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategorySimpleUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategorySimpleTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategorySimpleExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategorySimpleMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategorySimpleLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategorySimple) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategorySimpleUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategorySimpleTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategorySimpleExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategorySimpleMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategorySimpleLegendary) // ===================================================================================================================== // Proficiency Ranks for Advanced Weapons // ===================================================================================================================== // Weapon type mentioned in Pathfinder 2E Core Rulebook under: // - Chapter 3, page 141, "Attacks" for "Fighter" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvanced) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedLegendary) // ===================================================================================================================== // Proficiency Ranks for Advanced Dwarf Weapons // ===================================================================================================================== // From the Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity": // "For the purpose of determining your proficiency, [...] advanced dwarf weapons are martial weapons." -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedDwarfUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedDwarfTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedDwarfExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedDwarfMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedDwarfLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedDwarf) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedDwarfUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedDwarfTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedDwarfExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedDwarfMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedDwarfLegendary) // ===================================================================================================================== // Proficiency Ranks for Advanced Elf Weapons // ===================================================================================================================== // From the Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity": // "For the purpose of determining your proficiency, [...] advanced elf weapons are martial weapons." -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedElfUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedElfTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedElfExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedElfMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedElfLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedElf) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedElfUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedElfTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedElfExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedElfMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedElfLegendary) // ===================================================================================================================== // Proficiency Ranks for Advanced Gnome Weapons // ===================================================================================================================== // From the Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity": // "For the purpose of determining your proficiency, [...] advanced gnome weapons are martial weapons." -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGnomeUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGnomeTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGnomeExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGnomeMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGnomeLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedGnome) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedGnomeUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedGnomeTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedGnomeExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedGnomeMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedGnomeLegendary) // ===================================================================================================================== // Proficiency Ranks for Advanced Goblin Weapons // ===================================================================================================================== // From the Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity": // "For the purpose of determining your proficiency, [...] advanced goblin weapons are martial weapons." -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGoblinUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGoblinTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGoblinExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGoblinMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedGoblinLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedGoblin) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedGoblinUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedGoblinTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedGoblinExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedGoblinMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedGoblinLegendary) // ===================================================================================================================== // Proficiency Ranks for Advanced Halfling Weapons // ===================================================================================================================== // From the Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity": // "For the purpose of determining your proficiency, [...] advanced halfling weapons are martial weapons." -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedHalflingUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedHalflingTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedHalflingExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedHalflingMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryAdvancedHalflingLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedHalfling) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedHalflingUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedHalflingTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedHalflingExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedHalflingMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryAdvancedHalflingLegendary) // ===================================================================================================================== // Proficiency Ranks for Martial Weapons @@ -131,231 +145,253 @@ OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyC // - Chapter 3, page 105, "Attacks" for "Champion" // - Chapter 3, page 141, "Attacks" for "Fighter" // - Chapter 3, page 167, "Attacks" for "Ranger" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartial) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialLegendary) // ===================================================================================================================== // Proficiency Ranks for Martial Dwarf Weapons // ===================================================================================================================== // From the Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity": // "For the purpose of determining your proficiency, martial dwarf weapons are simple weapons..." -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialDwarfUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialDwarfTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialDwarfExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialDwarfMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialDwarfLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialDwarf) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialDwarfUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialDwarfTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialDwarfExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialDwarfMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialDwarfLegendary) // ===================================================================================================================== // Proficiency Ranks for Martial Elf Weapons // ===================================================================================================================== // From the Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity": // "For the purpose of determining your proficiency, martial elf weapons are simple weapons..." -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialElfUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialElfTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialElfExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialElfMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialElfLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialElf) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialElfUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialElfTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialElfExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialElfMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialElfLegendary) // ===================================================================================================================== // Proficiency Ranks for Martial Gnome Weapons // ===================================================================================================================== // From the Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity": // "For the purpose of determining your proficiency, martial gnome weapons are simple weapons..." -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGnomeUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGnomeTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGnomeExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGnomeMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGnomeLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialGnome) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialGnomeUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialGnomeTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialGnomeExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialGnomeMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialGnomeLegendary) // ===================================================================================================================== // Proficiency Ranks for Martial Goblin Weapons // ===================================================================================================================== // From the Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity": // "For the purpose of determining your proficiency, martial goblin weapons are simple weapons..." -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGoblinUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGoblinTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGoblinExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGoblinMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialGoblinLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialGoblin) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialGoblinUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialGoblinTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialGoblinExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialGoblinMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialGoblinLegendary) // ===================================================================================================================== // Proficiency Ranks for Martial Halfling Weapons // ===================================================================================================================== // From the Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity": // "For the purpose of determining your proficiency, martial halfling weapons are simple weapons..." -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialHalflingUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialHalflingTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialHalflingExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialHalflingMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCategoryMartialHalflingLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialHalfling) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialHalflingUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialHalflingTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialHalflingExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialHalflingMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCategoryMartialHalflingLegendary) // ===================================================================================================================== // Proficiency Ranks for Alchemical Bombs // ===================================================================================================================== // Weapon type mentioned in Pathfinder 2E Core Rulebook under: // - Chapter 3, page 71, "Attacks" for "Alchemist" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyAlchemicalBombUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyAlchemicalBombTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyAlchemicalBombExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyAlchemicalBombMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyAlchemicalBombLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponAlchemicalBomb) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponAlchemicalBombUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponAlchemicalBombTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponAlchemicalBombExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponAlchemicalBombMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponAlchemicalBombLegendary) // ===================================================================================================================== // Proficiency Ranks for Battle Axes // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyBattleAxeUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyBattleAxeTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyBattleAxeExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyBattleAxeMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyBattleAxeLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponBattleAxe) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponBattleAxeUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponBattleAxeTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponBattleAxeExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponBattleAxeMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponBattleAxeLegendary) // ===================================================================================================================== // Proficiency Ranks for Clubs // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 203, "Attacks" for "Wizard" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyClubUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyClubTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyClubExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyClubMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyClubLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponClub) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponClubUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponClubTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponClubExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponClubMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponClubLegendary) // ===================================================================================================================== // Proficiency Ranks for Composite Longbows // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeLongbowUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeLongbowTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeLongbowExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeLongbowMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeLongbowLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCompositeLongbow) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCompositeLongbowUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCompositeLongbowTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCompositeLongbowExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCompositeLongbowMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCompositeLongbowLegendary) // ===================================================================================================================== // Proficiency Ranks for Composite Shortbows // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeShortbowUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeShortbowTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeShortbowExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeShortbowMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCompositeShortbowLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCompositeShortbow) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCompositeShortbowUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCompositeShortbowTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCompositeShortbowExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCompositeShortbowMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCompositeShortbowLegendary) // ===================================================================================================================== // Proficiency Ranks for Crossbows // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 203, "Attacks" for "Wizard" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCrossbowUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCrossbowTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCrossbowExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCrossbowMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyCrossbowLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCrossbow) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCrossbowUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCrossbowTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCrossbowExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCrossbowMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponCrossbowLegendary) // ===================================================================================================================== // Proficiency Ranks for Daggers // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 203, "Attacks" for "Wizard" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDaggerUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDaggerTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDaggerExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDaggerMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDaggerLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponDagger) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponDaggerUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponDaggerTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponDaggerExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponDaggerMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponDaggerLegendary) // ===================================================================================================================== // Proficiency Ranks for Dogslicers // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDogslicerUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDogslicerTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDogslicerExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDogslicerMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyDogslicerLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponDogslicer) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponDogslicerUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponDogslicerTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponDogslicerExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponDogslicerMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponDogslicerLegendary) // ===================================================================================================================== // Proficiency Ranks for Falchions // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 58, "Orc Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyFalchionUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyFalchionTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyFalchionExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyFalchionMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyFalchionLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponFalchion) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponFalchionUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponFalchionTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponFalchionExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponFalchionMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponFalchionLegendary) // ===================================================================================================================== // Proficiency Ranks for Glaives // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGlaiveUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGlaiveTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGlaiveExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGlaiveMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGlaiveLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponGlaive) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponGlaiveUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponGlaiveTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponGlaiveExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponGlaiveMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponGlaiveLegendary) // ===================================================================================================================== // Proficiency Ranks for Greataxes // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 58, "Orc Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGreataxeUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGreataxeTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGreataxeExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGreataxeMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyGreataxeLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponGreataxe) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponGreataxeUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponGreataxeTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponGreataxeExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponGreataxeMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponGreataxeLegendary) // ===================================================================================================================== // Proficiency Ranks for Halfling Sling Staves // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHalflingSlingStaffUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHalflingSlingStaffTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHalflingSlingStaffExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHalflingSlingStaffMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHalflingSlingStaffLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHalflingSlingStaff) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHalflingSlingStaffUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHalflingSlingStaffTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHalflingSlingStaffExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHalflingSlingStaffMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHalflingSlingStaffLegendary) // ===================================================================================================================== // Proficiency Ranks for Heavy Crossbows // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 203, "Attacks" for "Wizard" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHeavyCrossbowUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHeavyCrossbowTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHeavyCrossbowExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHeavyCrossbowMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHeavyCrossbowLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHeavyCrossbow) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHeavyCrossbowUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHeavyCrossbowTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHeavyCrossbowExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHeavyCrossbowMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHeavyCrossbowLegendary) // ===================================================================================================================== // Proficiency Ranks for Horsechoppers // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 48, "Goblin Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHorsechopperUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHorsechopperTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHorsechopperExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHorsechopperMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyHorsechopperLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHorsechopper) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHorsechopperUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHorsechopperTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHorsechopperExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHorsechopperMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponHorsechopperLegendary) // ===================================================================================================================== // Proficiency Ranks for Kukris // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 44, "Gnome Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyKukriUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyKukriTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyKukriExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyKukriMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyKukriLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponKukri) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponKukriUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponKukriTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponKukriExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponKukriMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponKukriLegendary) // ===================================================================================================================== // Proficiency Ranks for Longbows // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 40, "Elven Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongbowUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongbowTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongbowExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongbowMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongbowLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponLongbow) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponLongbowUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponLongbowTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponLongbowExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponLongbowMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponLongbowLegendary) // ===================================================================================================================== // Proficiency Ranks for Longswords @@ -363,21 +399,23 @@ OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyL // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 2, page 40, "Elven Weapon Familiarity" // - Chapter 3, page 95, "Attacks" for "Bard" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongswordUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongswordTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongswordExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongswordMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyLongswordLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponLongsword) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponLongswordUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponLongswordTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponLongswordExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponLongswordMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponLongswordLegendary) // ===================================================================================================================== // Proficiency Ranks for Picks // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyPickUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyPickTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyPickExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyPickMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyPickLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponPick) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponPickUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponPickTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponPickExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponPickMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponPickLegendary) // ===================================================================================================================== // Proficiency Ranks for Rapiers @@ -386,11 +424,12 @@ OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyP // - Chapter 2, page 40, "Elven Weapon Familiarity" // - Chapter 3, page 95, "Attacks" for "Bard" // - Chapter 3, page 179, "Attacks" for "Rogue" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyRapierUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyRapierTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyRapierExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyRapierMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyRapierLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponRapier) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponRapierUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponRapierTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponRapierExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponRapierMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponRapierLegendary) // ===================================================================================================================== // Proficiency Ranks for Saps @@ -398,11 +437,12 @@ OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyR // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 95, "Attacks" for "Bard" // - Chapter 3, page 179, "Attacks" for "Rogue" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySapUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySapTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySapExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySapMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySapLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponSap) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponSapUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponSapTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponSapExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponSapMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponSapLegendary) // ===================================================================================================================== // Proficiency Ranks for Shortbows @@ -411,11 +451,12 @@ OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyS // - Chapter 2, page 40, "Elven Weapon Familiarity" // - Chapter 3, page 95, "Attacks" for "Bard" // - Chapter 3, page 179, "Attacks" for "Rogue" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortbowUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortbowTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortbowExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortbowMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortbowLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponShortbow) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponShortbowUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponShortbowTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponShortbowExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponShortbowMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponShortbowLegendary) // ===================================================================================================================== // Proficiency Ranks for Shortswords @@ -424,50 +465,55 @@ OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyS // - Chapter 2, page 52, "Halfling Weapon Familiarity" // - Chapter 3, page 95, "Attacks" for "Bard" // - Chapter 3, page 179, "Attacks" for "Rogue" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortswordUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortswordTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortswordExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortswordMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyShortswordLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponShortsword) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponShortswordUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponShortswordTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponShortswordExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponShortswordMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponShortswordLegendary) // ===================================================================================================================== // Proficiency Ranks for Slings // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 52, "Halfling Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySlingUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySlingTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySlingExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySlingMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencySlingLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponSling) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponSlingUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponSlingTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponSlingExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponSlingMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponSlingLegendary) // ===================================================================================================================== // Proficiency Ranks for Staves // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 203, "Attacks" for "Wizard" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyStaffUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyStaffTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyStaffExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyStaffMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyStaffLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponStaff) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponStaffUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponStaffTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponStaffExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponStaffMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponStaffLegendary) // ===================================================================================================================== // Proficiency Ranks for Warhammers // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, Chapter 2, page 36, "Dwarven Weapon Familiarity". -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWarhammerUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWarhammerTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWarhammerExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWarhammerMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWarhammerLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponWarhammer) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponWarhammerUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponWarhammerTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponWarhammerExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponWarhammerMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponWarhammerLegendary) // ===================================================================================================================== // Proficiency Ranks for Whips // ===================================================================================================================== // Weapon mentioned in Pathfinder 2E Core Rulebook, under: // - Chapter 3, page 95, "Attacks" for "Bard" -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWhipUntrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWhipTrained) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWhipExpert) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWhipMaster) -OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponProficiencyWhipLegendary) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponWhip) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponWhipUntrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponWhipTrained) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponWhipExpert) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponWhipMaster) +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagProficiencyWeaponWhipLegendary) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/SpecialSenses.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/SpecialSenses.h index 0a091ca07..99e06a5f2 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/SpecialSenses.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Stats/SpecialSenses.h @@ -21,6 +21,7 @@ // concealed conditions [...] when it comes to situations that foil average vision." // // Source: Pathfinder 2E Core Rulebook, page 465, "Special Senses". +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpecialSenses) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpecialSenseDarkvision) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpecialSenseGreaterDarkvision) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagSpecialSenseLowLightVision) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Abilities.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Abilities.h index db76267b3..0d7629692 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Abilities.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Abilities.h @@ -18,6 +18,7 @@ // Ability Traits // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilities) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityAlchemist) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityAttack) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitAbilityBarbarian) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Actions.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Actions.h index 08f318600..3fc3e0a6f 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Actions.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Actions.h @@ -18,6 +18,7 @@ // Action Traits // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActions) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActionAuditory) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActionConcentrate) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitActionFlourish) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Conditions.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Conditions.h index 0173195e0..d2b511570 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Conditions.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Conditions.h @@ -19,6 +19,8 @@ // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Conditions Appendix, pages 618-623. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditions) + // === Blinded OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitConditionBlinded) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Creatures.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Creatures.h index 6eca29924..ee8c7534e 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Creatures.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Creatures.h @@ -18,6 +18,7 @@ // Creature Traits // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Glossary, pages 628-638. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitCreatures) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitCreatureElf) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitCreatureHalfElf) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitCreatureHalfOrc) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Effects.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Effects.h index 650d84de1..6fc2675f9 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Effects.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Effects.h @@ -18,6 +18,7 @@ // Effect Traits // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, Conditions Appendix, pages 628-638. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitEffects) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitEffectDeath) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitEffectDisease) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitEffectLinguistic) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Weapons.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Weapons.h index 26eb2c70c..9bf5a15f4 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Weapons.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Weapons.h @@ -18,6 +18,7 @@ // Weapon Traits // ===================================================================================================================== // Source: Pathfinder 2E Core Rulebook, "Weapon Traits", pages 282-283. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeapons) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponAgile) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponAttachedToShield) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagTraitWeaponBackstabber) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/WeaponGroups.h b/Source/OpenPF2GameFramework/Public/GameplayTags/WeaponGroups.h index 2d4bf16e7..190ae960c 100644 --- a/Source/OpenPF2GameFramework/Public/GameplayTags/WeaponGroups.h +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/WeaponGroups.h @@ -18,6 +18,7 @@ // Weapon Groups // ===================================================================================================================== // From the Pathfinder 2E Core Rulebook, pages 280-282; Tables 6-6, 6-7, and 6-8. +OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroups) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupAxe) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupBomb) OPENPF2GAMEFRAMEWORK_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Pf2TagWeaponGroupBow) From 20afee23b2fb9982f94df67b4eea04ec589755fd Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Sun, 14 Jul 2024 20:00:05 -0400 Subject: [PATCH 03/16] [#60] Update Code References to Gameplay Tags for New Tag Names --- .../Attacks/PF2SimpleDamageExecution.cpp | 14 +- .../Attacks/PF2SpellAttackRollCalculation.cpp | 2 +- .../Abilities/PF2InteractableAbilityBase.cpp | 31 +- .../Components/PF2AbilitySystemComponent.cpp | 13 +- .../AbilityBoosts/PF2AbilityBoostBase.cpp | 6 +- .../PF2ApplyDamageFromSourceExecution.cpp | 17 +- .../PF2ArmorClassCalculation.cpp | 20 +- .../PF2CharacterAttributeSet.cpp | 9 +- .../PF2ClassDifficultyClassCalculation.cpp | 2 +- .../PF2KeyAbilityTemlCalculationBase.cpp | 2 +- .../PF2SpellDifficultyClassCalculation.cpp | 2 +- .../Private/Libraries/PF2TagLibrary.cpp | 6 +- .../ModesOfPlay/PF2ModeOfPlayRuleSetBase.cpp | 20 +- .../Private/PF2CharacterBase.cpp | 4 +- .../Utilities/PF2GameplayAbilityUtilities.cpp | 2 +- ...AbilityAsync_WaitCharacterConditionAdded.h | 2 +- ...ilityAsync_WaitCharacterConditionRemoved.h | 6 +- .../Async/PF2AbilityAsync_WaitConditionBase.h | 2 +- .../Attacks/PF2AttackAttributeStatics.h | 44 +- .../Attacks/PF2SimpleDamageExecution.h | 34 -- .../Abilities/PF2InteractableAbilityBase.h | 18 - .../Components/PF2AbilitySystemComponent.h | 17 - .../AbilityBoosts/PF2AbilityBoostBase.h | 5 - .../PF2ApplyDamageFromSourceExecution.h | 16 - .../CharacterStats/PF2ArmorClassCalculation.h | 2 +- .../CharacterStats/PF2CharacterAttributeSet.h | 26 - .../PF2CharacterAttributeStaticsBase.h | 44 +- .../PF2KeyAbilityTemlCalculationBase.h | 11 +- .../Public/Items/Weapons/PF2Weapon.h | 2 +- .../Public/Libraries/PF2AttackStatLibrary.h | 4 +- .../Public/Libraries/PF2TagLibrary.h | 6 +- .../ModesOfPlay/PF2ModeOfPlayRuleSetBase.h | 49 -- .../Public/PF2CharacterBase.h | 2 +- .../Public/PF2CharacterConstants.h | 16 +- .../Public/PF2MonetaryValue.h | 4 +- .../PF2SpellAttackRollCalculation.spec.cpp | 4 +- .../PF2PerceptionModifierCalculation.spec.cpp | 2 +- ...PF2SavingThrowModifierCalculation.spec.cpp | 5 +- .../PF2ArmorClassCalculation.spec.cpp | 4 +- ...F2ClassDifficultyClassCalculation.spec.cpp | 4 +- ...F2SpellDifficultyClassCalculation.spec.cpp | 6 +- .../PF2SkillModifierCalculation.spec.cpp | 5 +- .../Tests/Libraries/PF2TagLibrary.spec.cpp | 46 +- ...PF2ConditionsDyingRecoveryByCheck.spec.cpp | 475 +++++------------- ...2ConditionsDyingRecoveryByHealing.spec.cpp | 389 +++++--------- .../PF2ConditionsKnockoutAndDeath.spec.cpp | 290 ++++------- .../Private/Tests/PF2KeyAbilityBoost.spec.cpp | 2 +- .../Private/Tests/PF2SpecBase.cpp | 14 +- .../OpenPF2Tests/Public/Tests/PF2SpecBase.h | 16 +- 49 files changed, 537 insertions(+), 1185 deletions(-) diff --git a/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2SimpleDamageExecution.cpp b/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2SimpleDamageExecution.cpp index 73b6e2685..542e788cc 100644 --- a/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2SimpleDamageExecution.cpp +++ b/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2SimpleDamageExecution.cpp @@ -16,20 +16,20 @@ #include "CharacterStats/PF2TargetCharacterAttributeStatics.h" +#include "GameplayTags/GameplayEffects/SetByCallerParameters.h" + #include "Libraries/PF2AbilitySystemLibrary.h" #include "Utilities/PF2GameplayAbilityUtilities.h" -UPF2SimpleDamageExecution::UPF2SimpleDamageExecution() : - DamageParameterTag(FGameplayTag::RequestGameplayTag(this->DamageParameterTagName)), - ResistanceParameterTag(FGameplayTag::RequestGameplayTag(this->ResistanceParameterTagName)) +UPF2SimpleDamageExecution::UPF2SimpleDamageExecution() { #if WITH_EDITORONLY_DATA // Expose the damage parameter tag and resistance parameter tag for use in calculations in the editor. // The ValidTransientAggregatorIdentifiers property only exists for use in the editor. It does NOT exist at run-time // nor in Shipping builds. - this->ValidTransientAggregatorIdentifiers.AddTag(this->DamageParameterTag); - this->ValidTransientAggregatorIdentifiers.AddTag(this->ResistanceParameterTag); + this->ValidTransientAggregatorIdentifiers.AddTag(Pf2TagGameplayEffectParameterDamage); + this->ValidTransientAggregatorIdentifiers.AddTag(Pf2TagGameplayEffectParameterResistance); #endif } @@ -46,13 +46,13 @@ void UPF2SimpleDamageExecution::Execute_Implementation( UPF2AbilitySystemLibrary::BuildEvaluationParameters(Spec); ExecutionParams.AttemptCalculateTransientAggregatorMagnitude( - this->DamageParameterTag, + Pf2TagGameplayEffectParameterDamage, EvaluationParameters, IncomingDamage ); ExecutionParams.AttemptCalculateTransientAggregatorMagnitude( - this->ResistanceParameterTag, + Pf2TagGameplayEffectParameterResistance, EvaluationParameters, Resistance ); diff --git a/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2SpellAttackRollCalculation.cpp b/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2SpellAttackRollCalculation.cpp index baa7dce90..a465dfa1d 100644 --- a/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2SpellAttackRollCalculation.cpp +++ b/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2SpellAttackRollCalculation.cpp @@ -6,6 +6,6 @@ #include "Abilities/Attacks/PF2SpellAttackRollCalculation.h" UPF2SpellAttackRollCalculation::UPF2SpellAttackRollCalculation() : - UPF2KeyAbilityTemlCalculationBase(TEXT("SpellAttack"), TEXT("SpellcastingAbility")) + UPF2KeyAbilityTemlCalculationBase(TEXT("PF2.Proficiency.SpellAttack"), TEXT("PF2.SpellcastingAbility")) { } diff --git a/Source/OpenPF2GameFramework/Private/Abilities/PF2InteractableAbilityBase.cpp b/Source/OpenPF2GameFramework/Private/Abilities/PF2InteractableAbilityBase.cpp index 53144fff9..2f8e979e2 100644 --- a/Source/OpenPF2GameFramework/Private/Abilities/PF2InteractableAbilityBase.cpp +++ b/Source/OpenPF2GameFramework/Private/Abilities/PF2InteractableAbilityBase.cpp @@ -5,36 +5,15 @@ #include "Abilities/PF2InteractableAbilityBase.h" -#include "OpenPF2GameFramework.h" - #include "Abilities/PF2EffectCauseWrapper.h" +#include "GameplayTags/Traits/Abilities.h" + UPF2InteractableAbilityBase::UPF2InteractableAbilityBase(): Icon(nullptr) { - if (!CommonAbilityTag.IsValid()) - { - // Rather than crashing the game/engine, we soften this to a log error so that a game designer can still - // correct the error by possibly loading/defining tags. - const FGameplayTag Tag = FGameplayTag::RequestGameplayTag(CommonAbilityTagName, false); - - if (Tag.IsValid()) - { - CommonAbilityTag = Tag; - } - else - { - UE_LOG( - LogPf2Abilities, - Error, - TEXT("The common ability tag '%s' is missing."), - *(CommonAbilityTagName.ToString()) - ); - } - } - - // Default to "Trait.Ability.Common" on interactable abilities. Game designers can remove this tag on abilities that - // have a pre-req and/or are rare. - this->AbilityTags.AddTag(CommonAbilityTag); + // Default to "PF2.Trait.Ability.Common" on interactable abilities. Game designers can remove this tag on abilities + // that have a pre-req and/or are rare. + this->AbilityTags.AddTag(Pf2TagTraitAbilityCommon); } FString UPF2InteractableAbilityBase::GetIdForLogs() const diff --git a/Source/OpenPF2GameFramework/Private/Actors/Components/PF2AbilitySystemComponent.cpp b/Source/OpenPF2GameFramework/Private/Actors/Components/PF2AbilitySystemComponent.cpp index 747b86bb4..3b9fa37c6 100644 --- a/Source/OpenPF2GameFramework/Private/Actors/Components/PF2AbilitySystemComponent.cpp +++ b/Source/OpenPF2GameFramework/Private/Actors/Components/PF2AbilitySystemComponent.cpp @@ -13,14 +13,13 @@ #include "Abilities/PF2InteractableAbilityInterface.h" +#include "GameplayTags/GameplayAbilities/AbilityTypes.h" + #include "Utilities/PF2ArrayUtilities.h" #include "Utilities/PF2EnumUtilities.h" #include "Utilities/PF2InterfaceUtilities.h" #include "Utilities/PF2LogUtilities.h" -const FName UPF2AbilitySystemComponent::DefaultMovementAbilityTagName = FName(TEXT("GameplayAbility.Type.DefaultMovement")); -const FName UPF2AbilitySystemComponent::DefaultFaceTargetAbilityTagName = FName(TEXT("GameplayAbility.Type.DefaultFaceTarget")); - UPF2AbilitySystemComponent::UPF2AbilitySystemComponent() : Events(nullptr), bAreAbilitiesAvailable(false) { const FString DynamicTagsGeFilename = @@ -624,7 +623,7 @@ TArray> UPF2AbilitySystemComponent:: TArray MatchingGameplayAbilitySpecs; this->GetActivatableGameplayAbilitySpecsByAllMatchingTags( - FGameplayTagContainer(PF2GameplayAbilityUtilities::GetTag(FName("GameplayAbility.Type.AbilityBoost"))), + FGameplayTagContainer(Pf2TagGameplayAbilityTypeAbilityBoost), MatchingGameplayAbilitySpecs, false ); @@ -683,8 +682,7 @@ bool UPF2AbilitySystemComponent::HasDefaultMovementAbility() const FGameplayAbilitySpecHandle UPF2AbilitySystemComponent::FindDefaultMovementAbilityHandle(bool& bOutMatchFound) const { - const FGameplayTag MovementTag = PF2GameplayAbilityUtilities::GetTag(DefaultMovementAbilityTagName); - const FGameplayTagContainer SearchTags = FGameplayTagContainer(MovementTag); + const FGameplayTagContainer SearchTags = FGameplayTagContainer(Pf2TagGameplayAbilityTypeDefaultMovement); return this->FindAbilityHandleByTags(SearchTags, bOutMatchFound, false); } @@ -700,8 +698,7 @@ bool UPF2AbilitySystemComponent::HasDefaultFaceTargetAbility() const FGameplayAbilitySpecHandle UPF2AbilitySystemComponent::FindDefaultFaceTargetAbilityHandle(bool& bOutMatchFound) const { - const FGameplayTag FacingTag = PF2GameplayAbilityUtilities::GetTag(DefaultFaceTargetAbilityTagName); - const FGameplayTagContainer SearchTags = FGameplayTagContainer(FacingTag); + const FGameplayTagContainer SearchTags = FGameplayTagContainer(Pf2TagGameplayAbilityTypeDefaultFaceTarget); return this->FindAbilityHandleByTags(SearchTags, bOutMatchFound, false); } diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/AbilityBoosts/PF2AbilityBoostBase.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/AbilityBoosts/PF2AbilityBoostBase.cpp index 25731fd0d..fd4c4c51f 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/AbilityBoosts/PF2AbilityBoostBase.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/AbilityBoosts/PF2AbilityBoostBase.cpp @@ -10,19 +10,21 @@ #include "CharacterStats/AbilityBoosts/PF2AbilityBoostRuleOptionValidator.h" #include "CharacterStats/AbilityBoosts/PF2GameplayAbilityTargetData_BoostAbility.h" +#include "GameplayTags/GameplayAbilities/AbilityTypes.h" + UPF2AbilityBoostBase::UPF2AbilityBoostBase() { FAbilityTriggerData TriggerData; TriggerData.TriggerSource = EGameplayAbilityTriggerSource::GameplayEvent; - TriggerData.TriggerTag = GetTriggerTag(); + TriggerData.TriggerTag = Pf2TagGameplayAbilityTypeAbilityBoost; this->AbilityTriggers.Add(TriggerData); // We don't maintain any local state. this->InstancingPolicy = EGameplayAbilityInstancingPolicy::NonInstanced; - this->AbilityTags.AddTag(PF2GameplayAbilityUtilities::GetTag(FName("GameplayAbility.Type.AbilityBoost"))); + this->AbilityTags.AddTag(Pf2TagGameplayAbilityTypeAbilityBoost); } bool UPF2AbilityBoostBase::CheckCost( diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ApplyDamageFromSourceExecution.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ApplyDamageFromSourceExecution.cpp index b84a27027..9987c20f4 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ApplyDamageFromSourceExecution.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ApplyDamageFromSourceExecution.cpp @@ -18,6 +18,8 @@ #include "CharacterStats/PF2TargetCharacterAttributeStatics.h" +#include "GameplayTags/GameplayCues.h" + #include "Libraries/PF2AbilitySystemLibrary.h" #include "Utilities/PF2GameplayAbilityUtilities.h" @@ -33,11 +35,6 @@ UPF2ApplyDamageFromSourceExecution::UPF2ApplyDamageFromSourceExecution() { this->RelevantAttributesToCapture.Add(*Capture); } - - // Cache the tag to avoid lookup overhead. - this->InflictDamageCueTag = PF2GameplayAbilityUtilities::GetTag( - FName("GameplayCue.Character.InflictDamage") - ); } void UPF2ApplyDamageFromSourceExecution::Execute_Implementation( @@ -139,10 +136,7 @@ void UPF2ApplyDamageFromSourceExecution::Execute_Implementation( CueParams.RawMagnitude = EffectiveDamage; - TargetAsc->ExecuteGameplayCue( - this->InflictDamageCueTag, - CueParams - ); + TargetAsc->ExecuteGameplayCue(Pf2TagGameplayCueCharacterInflictDamage, CueParams); } } @@ -153,9 +147,6 @@ void UPF2ApplyDamageFromSourceExecution::Execute_Implementation( CueParams.RawMagnitude = 0; - TargetAsc->ExecuteGameplayCue( - this->InflictDamageCueTag, - CueParams - ); + TargetAsc->ExecuteGameplayCue(Pf2TagGameplayCueCharacterInflictDamage, CueParams); } } diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ArmorClassCalculation.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ArmorClassCalculation.cpp index a32aa635a..11074ba44 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ArmorClassCalculation.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ArmorClassCalculation.cpp @@ -17,6 +17,8 @@ #include "CharacterStats/PF2TargetCharacterAttributeStatics.h" #include "CharacterStats/PF2TemlCalculation.h" +#include "GameplayTags/Stats/Equipment.h" + #include "Libraries/PF2AbilitySystemLibrary.h" #include "Utilities/PF2GameplayAbilityUtilities.h" @@ -74,7 +76,7 @@ float UPF2ArmorClassCalculation::CalculateArmorTypeProficiencyBonus(const FGamep { const FGameplayTagContainer* SourceTags = Spec.CapturedSourceTags.GetAggregatedTags(); const FString ArmorType = DetermineArmorType(SourceTags), - ArmorTypeProficiencyPrefix = "Armor.Category." + ArmorType; + ArmorTypeProficiencyPrefix = TEXT("PF2.Proficiency.Armor.Category.") + ArmorType; const float ProficiencyBonus = FPF2TemlCalculation(ArmorTypeProficiencyPrefix, Spec).GetValue(); @@ -92,22 +94,22 @@ float UPF2ArmorClassCalculation::CalculateArmorTypeProficiencyBonus(const FGamep FString UPF2ArmorClassCalculation::DetermineArmorType(const FGameplayTagContainer* SourceTags) const { // Default to no armor. - FString ArmorType = "Unarmored"; + FString ArmorType = TEXT("Unarmored"); // Bypass additional checks if the character has no armor equipped, to avoid checking every armor type. - if (PF2GameplayAbilityUtilities::HasTag(SourceTags, FName("Armor.Equipped"))) + if (SourceTags->HasTag(Pf2TagEquippedArmor)) { - if (PF2GameplayAbilityUtilities::HasTag(SourceTags, FName("Armor.Equipped.Heavy"))) + if (SourceTags->HasTag(Pf2TagEquippedArmorHeavy)) { - ArmorType = "Heavy"; + ArmorType = TEXT("Heavy"); } - else if (PF2GameplayAbilityUtilities::HasTag(SourceTags, FName("Armor.Equipped.Medium"))) + else if (SourceTags->HasTag(Pf2TagEquippedArmorMedium)) { - ArmorType = "Medium"; + ArmorType = TEXT("Medium"); } - else if (PF2GameplayAbilityUtilities::HasTag(SourceTags, FName("Armor.Equipped.Light"))) + else if (SourceTags->HasTag(Pf2TagEquippedArmorLight)) { - ArmorType = "Light"; + ArmorType = TEXT("Light"); } } diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2CharacterAttributeSet.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2CharacterAttributeSet.cpp index aec07eecd..7308248f9 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2CharacterAttributeSet.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2CharacterAttributeSet.cpp @@ -22,6 +22,8 @@ #include "OpenPF2GameFramework.h" #include "PF2CharacterInterface.h" +#include "GameplayTags/GameplayAbilities/WaitForEvents.h" + #include "Libraries/PF2AbilitySystemLibrary.h" #include "Utilities/PF2InterfaceUtilities.h" @@ -100,9 +102,6 @@ UPF2CharacterAttributeSet::UPF2CharacterAttributeSet() : EncMaxReactionPoints(0.0f), TmpDamageIncoming(0.0f) { - // Cache the tags to avoid lookup overhead. - this->DamageReceivedEventTag = PF2GameplayAbilityUtilities::GetTag(DamageReceivedEventTagName); - this->HitPointsChangedEventTag = PF2GameplayAbilityUtilities::GetTag(HitPointsChangedEventTagName); } void UPF2CharacterAttributeSet::GetLifetimeReplicatedProps(TArray& OutLifetimeProps) const @@ -671,7 +670,7 @@ void UPF2CharacterAttributeSet::Native_OnDamageIncomingChanged(const FGameplayEf // Enable condition check GAs to react to incoming damage. this->EmitGameplayEvent( - DamageReceivedEventTag, + Pf2TagGameplayAbilityWaitForEventDamageReceived, LocalDamage, TargetCharacter, SourceEffectSpec @@ -726,7 +725,7 @@ void UPF2CharacterAttributeSet::Native_OnHitPointsChanged(const FGameplayEffectS } this->EmitGameplayEvent( - HitPointsChangedEventTag, + Pf2TagGameplayAbilityWaitForEventHitPointsChanged, ValueDelta, TargetCharacter, SourceEffectSpec diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ClassDifficultyClassCalculation.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ClassDifficultyClassCalculation.cpp index 158f2d7fc..72bb8446c 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ClassDifficultyClassCalculation.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ClassDifficultyClassCalculation.cpp @@ -6,6 +6,6 @@ #include "CharacterStats/PF2ClassDifficultyClassCalculation.h" UPF2ClassDifficultyClassCalculation::UPF2ClassDifficultyClassCalculation() : - UPF2KeyAbilityTemlCalculationBase(TEXT("ClassDc"), TEXT("KeyAbility"), 10.0f) + UPF2KeyAbilityTemlCalculationBase(TEXT("PF2.Proficiency.ClassDc"), TEXT("PF2.KeyAbility"), 10.0f) { } diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2KeyAbilityTemlCalculationBase.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2KeyAbilityTemlCalculationBase.cpp index d615a7ee2..4b4a37f0a 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2KeyAbilityTemlCalculationBase.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2KeyAbilityTemlCalculationBase.cpp @@ -24,7 +24,7 @@ UPF2KeyAbilityTemlCalculationBase::UPF2KeyAbilityTemlCalculationBase() : UPF2KeyAbilityTemlCalculationBase( TEXT(""), - TEXT("KeyAbility") + TEXT("PF2.KeyAbility") ) { } diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2SpellDifficultyClassCalculation.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2SpellDifficultyClassCalculation.cpp index 82413c43b..daf61d177 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2SpellDifficultyClassCalculation.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2SpellDifficultyClassCalculation.cpp @@ -6,6 +6,6 @@ #include "CharacterStats/PF2SpellDifficultyClassCalculation.h" UPF2SpellDifficultyClassCalculation::UPF2SpellDifficultyClassCalculation() : - UPF2KeyAbilityTemlCalculationBase(TEXT("SpellDc"), TEXT("SpellcastingAbility"), 10.0f) + UPF2KeyAbilityTemlCalculationBase(TEXT("PF2.Proficiency.SpellDc"), TEXT("PF2.SpellcastingAbility"), 10.0f) { } diff --git a/Source/OpenPF2GameFramework/Private/Libraries/PF2TagLibrary.cpp b/Source/OpenPF2GameFramework/Private/Libraries/PF2TagLibrary.cpp index 7ef5b5ec8..91c3aadeb 100644 --- a/Source/OpenPF2GameFramework/Private/Libraries/PF2TagLibrary.cpp +++ b/Source/OpenPF2GameFramework/Private/Libraries/PF2TagLibrary.cpp @@ -7,6 +7,8 @@ #include "OpenPF2GameFramework.h" +#include "Utilities/PF2GameplayAbilityUtilities.h" + FGameplayTag UPF2TagLibrary::FindChildTag(const FGameplayTagContainer& AllTags, const FGameplayTag& ParentTag, bool& bMatchFound) @@ -58,8 +60,8 @@ uint8 UPF2TagLibrary::ParseConditionLevel(const FGameplayTag& Tag, const FGamepl if (Tag.RequestDirectParent().MatchesTagExact(ParentTag)) { - // If ParentTag is "Condition.Dying" and the tag is "Condition.Dying.3", then starting at ParentTag.Len() + 1 - // in the tag should give us "3". + // If ParentTag is "PF2.Trait.Condition.Dying" and the tag is "PF2.Trait.Condition.Dying.3", then starting at + // ParentTag.Len() + 1 in the tag should give us "3". const FString ParentTagString = ParentTag.ToString(), SuffixString = Tag.ToString().Mid(ParentTagString.Len() + 1); diff --git a/Source/OpenPF2GameFramework/Private/ModesOfPlay/PF2ModeOfPlayRuleSetBase.cpp b/Source/OpenPF2GameFramework/Private/ModesOfPlay/PF2ModeOfPlayRuleSetBase.cpp index a0a5a970b..cb7f6ba4c 100644 --- a/Source/OpenPF2GameFramework/Private/ModesOfPlay/PF2ModeOfPlayRuleSetBase.cpp +++ b/Source/OpenPF2GameFramework/Private/ModesOfPlay/PF2ModeOfPlayRuleSetBase.cpp @@ -15,18 +15,13 @@ #include "Commands/PF2CharacterCommandInterface.h" #include "Commands/PF2CommandQueueInterface.h" +#include "GameplayTags/Traits/Conditions.h" + #include "Libraries/PF2CharacterCommandLibrary.h" #include "Libraries/PF2CharacterLibrary.h" #include "Utilities/PF2InterfaceUtilities.h" -APF2ModeOfPlayRuleSetBase::APF2ModeOfPlayRuleSetBase() -{ - this->DyingConditionTag = PF2GameplayAbilityUtilities::GetTag(DyingConditionTagName); - this->DeadConditionTag = PF2GameplayAbilityUtilities::GetTag(DeadConditionTagName); - this->UnconsciousConditionTag = PF2GameplayAbilityUtilities::GetTag(UnconsciousConditionTagName); -} - void APF2ModeOfPlayRuleSetBase::OnModeOfPlayStart(const EPF2ModeOfPlayType ModeOfPlay) { this->BP_OnModeOfPlayStart(ModeOfPlay); @@ -52,23 +47,28 @@ void APF2ModeOfPlayRuleSetBase::OnCharacterAddedToEncounter(const TScriptInterfa } else { + // The MoPRS listens for a tag of this type to be added to or removed from a character in order to fire the + // OnCharacterUnconscious() and OnCharacterConscious(), respectively. this->RegisterTagCallback( CharacterPtr, - this->UnconsciousConditionTag, + Pf2TagTraitConditionUnconscious, &APF2ModeOfPlayRuleSetBase::Native_OnCharacterUnconscious, &APF2ModeOfPlayRuleSetBase::Native_OnCharacterConscious ); + // The MoPRS listens for a tag of this type to be added to or removed from a character in order to fire the + // Native_OnCharacterDying() and Native_OnCharacterRecoveredFromDying(), respectively. this->RegisterTagCallback( CharacterPtr, - this->DyingConditionTag, + Pf2TagTraitConditionDying, &APF2ModeOfPlayRuleSetBase::Native_OnCharacterDying, &APF2ModeOfPlayRuleSetBase::Native_OnCharacterRecoveredFromDying ); + // The MoPRS listens for a tag of this type to be added to a character in order to fire OnCharacterDead(). this->RegisterTagCallback( CharacterPtr, - this->DeadConditionTag, + Pf2TagTraitConditionDead, &APF2ModeOfPlayRuleSetBase::Native_OnCharacterDead, nullptr ); diff --git a/Source/OpenPF2GameFramework/Private/PF2CharacterBase.cpp b/Source/OpenPF2GameFramework/Private/PF2CharacterBase.cpp index e84c371c1..ddc4ba9b9 100644 --- a/Source/OpenPF2GameFramework/Private/PF2CharacterBase.cpp +++ b/Source/OpenPF2GameFramework/Private/PF2CharacterBase.cpp @@ -24,6 +24,8 @@ #include "Commands/PF2CommandQueueComponent.h" +#include "GameplayTags/GameplayAbilities/AbilityTypes.h" + #include "Utilities/PF2InterfaceUtilities.h" #include "Utilities/PF2LogUtilities.h" @@ -466,7 +468,7 @@ void APF2CharacterBase::ActivateAbilityBoost( Asc->TriggerAbilityFromGameplayEvent( BoostSpec->Handle, Asc->AbilityActorInfo.Get(), - UPF2AbilityBoostBase::GetTriggerTag(), + Pf2TagGameplayAbilityTypeAbilityBoost, &BoostEventInfo, *Asc ); diff --git a/Source/OpenPF2GameFramework/Private/Utilities/PF2GameplayAbilityUtilities.cpp b/Source/OpenPF2GameFramework/Private/Utilities/PF2GameplayAbilityUtilities.cpp index 20279e9bd..34c1e91b5 100644 --- a/Source/OpenPF2GameFramework/Private/Utilities/PF2GameplayAbilityUtilities.cpp +++ b/Source/OpenPF2GameFramework/Private/Utilities/PF2GameplayAbilityUtilities.cpp @@ -32,7 +32,7 @@ namespace PF2GameplayAbilityUtilities FName GetWeightGroupOfGameplayEffect(const TSubclassOf GameplayEffect, const FName DefaultWeight) { FName WeightGroup; - const FGameplayTag WeightTagParent = GetTag(FName(TEXT("GameplayEffect.WeightGroup"))); + const FGameplayTag WeightTagParent = GetTag(FName(TEXT("PF2.GameplayEffect.WeightGroup"))); const UGameplayEffect* Effect = GameplayEffect.GetDefaultObject(); const FGameplayTagContainer WeightTags = Effect->GetAssetTags().Filter(FGameplayTagContainer(WeightTagParent)); diff --git a/Source/OpenPF2GameFramework/Public/Abilities/Async/PF2AbilityAsync_WaitCharacterConditionAdded.h b/Source/OpenPF2GameFramework/Public/Abilities/Async/PF2AbilityAsync_WaitCharacterConditionAdded.h index f6774a2d2..6b343e26c 100644 --- a/Source/OpenPF2GameFramework/Public/Abilities/Async/PF2AbilityAsync_WaitCharacterConditionAdded.h +++ b/Source/OpenPF2GameFramework/Public/Abilities/Async/PF2AbilityAsync_WaitCharacterConditionAdded.h @@ -57,7 +57,7 @@ class OPENPF2GAMEFRAMEWORK_API UPF2AbilityAsync_WaitCharacterConditionAdded : pu * @param Character * The character for which condition levels are being monitored. * @param ConditionParentTag - * The tag immediately above the tag that contains the integer condition level (e.g., "Trait.Condition.Dying"). + * The tag immediately above the tag that contains the integer condition level (e.g., "PF2.Trait.Condition.Dying"). * @param bFireImmediatelyIfAlreadySatisfied * Whether to evaluate the tag criterion upon starting this task and then fire the callback if has been satisfied. * @param bOnlyTriggerOnce diff --git a/Source/OpenPF2GameFramework/Public/Abilities/Async/PF2AbilityAsync_WaitCharacterConditionRemoved.h b/Source/OpenPF2GameFramework/Public/Abilities/Async/PF2AbilityAsync_WaitCharacterConditionRemoved.h index e2b35179e..5386ee103 100644 --- a/Source/OpenPF2GameFramework/Public/Abilities/Async/PF2AbilityAsync_WaitCharacterConditionRemoved.h +++ b/Source/OpenPF2GameFramework/Public/Abilities/Async/PF2AbilityAsync_WaitCharacterConditionRemoved.h @@ -49,8 +49,8 @@ class OPENPF2GAMEFRAMEWORK_API UPF2AbilityAsync_WaitCharacterConditionRemoved : * removed, and it will broadcast again on future removals unless "Only trigger once" is "false". If the character * does not have the specified condition when this task is started, the event will be broadcast immediately. * - * The task does not broadcast on changes to the level of a condition (e.g., going from "Trait.Condition.Dying.1" to - * "Trait.Condition.Dying.2"), only on a removal of the condition entirely. + * The task does not broadcast on changes to the level of a condition (e.g., going from "PF2.Trait.Condition.Dying.1" to + * "PF2.Trait.Condition.Dying.2"), only on a removal of the condition entirely. * * If "Fire Immediately If Already Satisfied" is "true" and the target character does not have the specified * condition, the "On Condition Removed" event will be broadcast immediately. @@ -58,7 +58,7 @@ class OPENPF2GAMEFRAMEWORK_API UPF2AbilityAsync_WaitCharacterConditionRemoved : * @param Character * The character for which condition levels are being monitored. * @param ConditionParentTag - * The tag immediately above the tag that contains the integer condition level (e.g., "Trait.Condition.Dying"). + * The tag immediately above the tag that contains the integer condition level (e.g., "PF2.Trait.Condition.Dying"). * @param bFireImmediatelyIfAlreadySatisfied * Whether to evaluate the tag criterion upon starting this task and then fire the callback if has been satisfied. * @param bOnlyTriggerOnce diff --git a/Source/OpenPF2GameFramework/Public/Abilities/Async/PF2AbilityAsync_WaitConditionBase.h b/Source/OpenPF2GameFramework/Public/Abilities/Async/PF2AbilityAsync_WaitConditionBase.h index c2e94a162..28ee2fb82 100644 --- a/Source/OpenPF2GameFramework/Public/Abilities/Async/PF2AbilityAsync_WaitConditionBase.h +++ b/Source/OpenPF2GameFramework/Public/Abilities/Async/PF2AbilityAsync_WaitConditionBase.h @@ -40,7 +40,7 @@ class OPENPF2GAMEFRAMEWORK_API UPF2AbilityAsync_WaitCharacterConditionBase : pub // Protected Fields // ================================================================================================================= /** - * The tag immediately above the tag that contains the integer condition level (e.g., "Trait.Condition.Dying"). + * The tag immediately above the tag that contains the integer condition level (e.g., "PF2.Trait.Condition.Dying"). */ FGameplayTag ConditionParentTag; diff --git a/Source/OpenPF2GameFramework/Public/Abilities/Attacks/PF2AttackAttributeStatics.h b/Source/OpenPF2GameFramework/Public/Abilities/Attacks/PF2AttackAttributeStatics.h index eee29f4cf..b35f60399 100644 --- a/Source/OpenPF2GameFramework/Public/Abilities/Attacks/PF2AttackAttributeStatics.h +++ b/Source/OpenPF2GameFramework/Public/Abilities/Attacks/PF2AttackAttributeStatics.h @@ -27,28 +27,28 @@ struct OPENPF2GAMEFRAMEWORK_API FPF2AttackAttributeStatics : FPF2AttributeStatic * Map from each damage type tag to the transient attack attribute for that damage type. */ inline static const TMap DamageTypeToTransientDamageAttributeMap = { - { "DamageType.Physical.Bludgeoning", "TmpDmgTypePhysicalBludgeoning" }, - { "DamageType.Physical.Piercing", "TmpDmgTypePhysicalPiercing" }, - { "DamageType.Physical.Slashing", "TmpDmgTypePhysicalSlashing" }, - - { "DamageType.Energy.Acid", "TmpDmgTypeEnergyAcid" }, - { "DamageType.Energy.Cold", "TmpDmgTypeEnergyCold" }, - { "DamageType.Energy.Electricity", "TmpDmgTypeEnergyElectricity" }, - { "DamageType.Energy.Fire", "TmpDmgTypeEnergyFire" }, - { "DamageType.Energy.Sonic", "TmpDmgTypeEnergySonic" }, - { "DamageType.Energy.Positive", "TmpDmgTypeEnergyPositive" }, - { "DamageType.Energy.Negative", "TmpDmgTypeEnergyNegative" }, - { "DamageType.Energy.Force", "TmpDmgTypeEnergyForce" }, - - { "DamageType.Alignment.Chaotic", "TmpDmgTypeAlignmentChaotic" }, - { "DamageType.Alignment.Evil", "TmpDmgTypeAlignmentEvil" }, - { "DamageType.Alignment.Good", "TmpDmgTypeAlignmentGood" }, - { "DamageType.Alignment.Lawful", "TmpDmgTypeAlignmentLawful" }, - - { "DamageType.Mental", "TmpDmgTypeMental" }, - { "DamageType.Poison", "TmpDmgTypePoison" }, - { "DamageType.Bleed", "TmpDmgTypeBleed" }, - { "DamageType.Precision", "TmpDmgTypePrecision" }, + { "PF2.DamageType.Physical.Bludgeoning", "TmpDmgTypePhysicalBludgeoning" }, + { "PF2.DamageType.Physical.Piercing", "TmpDmgTypePhysicalPiercing" }, + { "PF2.DamageType.Physical.Slashing", "TmpDmgTypePhysicalSlashing" }, + + { "PF2.DamageType.Energy.Acid", "TmpDmgTypeEnergyAcid" }, + { "PF2.DamageType.Energy.Cold", "TmpDmgTypeEnergyCold" }, + { "PF2.DamageType.Energy.Electricity", "TmpDmgTypeEnergyElectricity" }, + { "PF2.DamageType.Energy.Fire", "TmpDmgTypeEnergyFire" }, + { "PF2.DamageType.Energy.Sonic", "TmpDmgTypeEnergySonic" }, + { "PF2.DamageType.Energy.Positive", "TmpDmgTypeEnergyPositive" }, + { "PF2.DamageType.Energy.Negative", "TmpDmgTypeEnergyNegative" }, + { "PF2.DamageType.Energy.Force", "TmpDmgTypeEnergyForce" }, + + { "PF2.DamageType.Alignment.Chaotic", "TmpDmgTypeAlignmentChaotic" }, + { "PF2.DamageType.Alignment.Evil", "TmpDmgTypeAlignmentEvil" }, + { "PF2.DamageType.Alignment.Good", "TmpDmgTypeAlignmentGood" }, + { "PF2.DamageType.Alignment.Lawful", "TmpDmgTypeAlignmentLawful" }, + + { "PF2.DamageType.Mental", "TmpDmgTypeMental" }, + { "PF2.DamageType.Poison", "TmpDmgTypePoison" }, + { "PF2.DamageType.Bleed", "TmpDmgTypeBleed" }, + { "PF2.DamageType.Precision", "TmpDmgTypePrecision" }, }; public: diff --git a/Source/OpenPF2GameFramework/Public/Abilities/Attacks/PF2SimpleDamageExecution.h b/Source/OpenPF2GameFramework/Public/Abilities/Attacks/PF2SimpleDamageExecution.h index 96c386e4b..1565d1c73 100644 --- a/Source/OpenPF2GameFramework/Public/Abilities/Attacks/PF2SimpleDamageExecution.h +++ b/Source/OpenPF2GameFramework/Public/Abilities/Attacks/PF2SimpleDamageExecution.h @@ -22,40 +22,6 @@ class OPENPF2GAMEFRAMEWORK_API UPF2SimpleDamageExecution : public UGameplayEffec { GENERATED_BODY() -protected: - // ================================================================================================================= - // Protected Constants - // ================================================================================================================= - /** - * Name of the tag that is used to pass a dynamic damage amount into the calculation. - */ - const FName DamageParameterTagName = "GameplayEffect.Parameter.Damage"; - - /** - * Name of the tag that is used to pass a dynamic resistance amount into the calculation. - */ - const FName ResistanceParameterTagName = "GameplayEffect.Parameter.Resistance"; - - // ================================================================================================================= - // Protected Fields - // ================================================================================================================= - /** - * The tag for the parameter that is used to pass a dynamic damage amount into the calculation. - * - * The parameter is typically read from a set-by-caller tag-based value so that GAs can populate damage dynamically, - * unless the GE is expected to hard-code a specific amount of damage or read it from a data table. - */ - FGameplayTag DamageParameterTag; - - /** - * The tag that is used to pass a dynamic resistance amount into the calculation. - * - * The parameter should be provided via an attribute-based modifier that reads it from the appropriate resistance - * attribute of the character's attribute set (e.g., typically an attribute having a name that starts with "Rst", - * such as "RstPhysicalBludgeoning", "RstEnergyCold", etc.). - */ - FGameplayTag ResistanceParameterTag; - public: // ================================================================================================================= // Public Constructors diff --git a/Source/OpenPF2GameFramework/Public/Abilities/PF2InteractableAbilityBase.h b/Source/OpenPF2GameFramework/Public/Abilities/PF2InteractableAbilityBase.h index 7bcf9e5e1..f5311f0d8 100644 --- a/Source/OpenPF2GameFramework/Public/Abilities/PF2InteractableAbilityBase.h +++ b/Source/OpenPF2GameFramework/Public/Abilities/PF2InteractableAbilityBase.h @@ -35,24 +35,6 @@ class UPF2InteractableAbilityBase : GENERATED_BODY() protected: - // ================================================================================================================= - // Protected Constants - // ================================================================================================================= - /** - * The name of the gameplay tag that is applied to abilities any player can activate. - */ - static inline FName CommonAbilityTagName = FName(TEXT("Trait.Ability.Common")); - - // ================================================================================================================= - // Protected Static Fields - // ================================================================================================================= - /** - * The gameplay tag that applies to "common" abilities, which is the default for interactable abilities. - * - * This is cached for performance. - */ - inline static FGameplayTag CommonAbilityTag = FGameplayTag(); - // ================================================================================================================= // Protected Fields // ================================================================================================================= diff --git a/Source/OpenPF2GameFramework/Public/Actors/Components/PF2AbilitySystemComponent.h b/Source/OpenPF2GameFramework/Public/Actors/Components/PF2AbilitySystemComponent.h index 35c5e84b3..e889f4df0 100644 --- a/Source/OpenPF2GameFramework/Public/Actors/Components/PF2AbilitySystemComponent.h +++ b/Source/OpenPF2GameFramework/Public/Actors/Components/PF2AbilitySystemComponent.h @@ -30,23 +30,6 @@ class OPENPF2GAMEFRAMEWORK_API UPF2AbilitySystemComponent : GENERATED_BODY() protected: - // ================================================================================================================= - // Protected Constants - // ================================================================================================================= - /** - * The name of the tag that designates an ability the default movement ability. - * - * This ability is used to move a character to a location, such as within range of another actor/character. - */ - static const FName DefaultMovementAbilityTagName; - - /** - * The name of the tag that designates an ability the default "face target" ability. - * - * This ability is used to rotate a character to face another actor/character. - */ - static const FName DefaultFaceTargetAbilityTagName; - // ================================================================================================================= // Protected Fields // ================================================================================================================= diff --git a/Source/OpenPF2GameFramework/Public/CharacterStats/AbilityBoosts/PF2AbilityBoostBase.h b/Source/OpenPF2GameFramework/Public/CharacterStats/AbilityBoosts/PF2AbilityBoostBase.h index 77862111b..04b189639 100644 --- a/Source/OpenPF2GameFramework/Public/CharacterStats/AbilityBoosts/PF2AbilityBoostBase.h +++ b/Source/OpenPF2GameFramework/Public/CharacterStats/AbilityBoosts/PF2AbilityBoostBase.h @@ -60,11 +60,6 @@ class OPENPF2GAMEFRAMEWORK_API UPF2AbilityBoostBase : public UGameplayAbility, p public: UPF2AbilityBoostBase(); - FORCEINLINE static FGameplayTag GetTriggerTag() - { - return PF2GameplayAbilityUtilities::GetTag(FName("GameplayAbility.Type.AbilityBoost")); - }; - // ================================================================================================================= // Public Methods - UGameplayAbility Implementation // ================================================================================================================= diff --git a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2ApplyDamageFromSourceExecution.h b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2ApplyDamageFromSourceExecution.h index 6a8382f38..f2d80051a 100644 --- a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2ApplyDamageFromSourceExecution.h +++ b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2ApplyDamageFromSourceExecution.h @@ -28,11 +28,6 @@ class OPENPF2GAMEFRAMEWORK_API UPF2ApplyDamageFromSourceExecution : public UGame { GENERATED_BODY() - /** - * The gameplay tag for gameplay cues that activate upon damage being inflicted to the target. - */ - FGameplayTag InflictDamageCueTag; - public: // ================================================================================================================= // Constructors @@ -50,17 +45,6 @@ class OPENPF2GAMEFRAMEWORK_API UPF2ApplyDamageFromSourceExecution : public UGame FGameplayEffectCustomExecutionOutput& OutExecutionOutput) const override; protected: - /** - * Gets the gameplay tag for gameplay cues that activate upon damage being inflicted to the target. - * - * @return - * The gameplay tag for the damage cue. - */ - FORCEINLINE const FGameplayTag& GetInflictDamageCueTag() const - { - return this->InflictDamageCueTag; - } - /** * Populates parameters from a gameplay cue from the parameters of the current GE execution. * diff --git a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2ArmorClassCalculation.h b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2ArmorClassCalculation.h index da7994abc..6f97a5bc1 100644 --- a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2ArmorClassCalculation.h +++ b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2ArmorClassCalculation.h @@ -79,7 +79,7 @@ class OPENPF2GAMEFRAMEWORK_API UPF2ArmorClassCalculation : public UGameplayModMa * * @param SourceTags * The tags on the character. A tag in this list should indicate the character's equipped armor (e.g. - * "Armor.Equipped.Unarmored", "Armor.Equipped.Light", etc.). + * "PF2.Equipped.Armor.Unarmored", "PF2.Equipped.Armor.Light", etc.). * * @return * The name of the armor type ("Unarmored", "Light", "Medium", or "Heavy"). diff --git a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2CharacterAttributeSet.h b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2CharacterAttributeSet.h index ba73f3243..cc2651aef 100644 --- a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2CharacterAttributeSet.h +++ b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2CharacterAttributeSet.h @@ -1054,32 +1054,6 @@ class OPENPF2GAMEFRAMEWORK_API UPF2CharacterAttributeSet : public UAttributeSet virtual void OnRep_EncMaxMultipleAttackPenalty(const FGameplayAttributeData& OldValue); protected: - // ================================================================================================================= - // Protected Constants - // ================================================================================================================= - /** - * The name of the gameplay tag for events to notify passive condition check GAs about incoming damage. - */ - inline static const FName DamageReceivedEventTagName = TEXT("GameplayAbility.GameplayEvent.DamageReceived"); - - /** - * The name of the gameplay tag for events to notify passive condition check GAs about changes in hit points. - */ - inline static const FName HitPointsChangedEventTagName = TEXT("GameplayAbility.GameplayEvent.HitPointsChanged"); - - // ================================================================================================================= - // Protected Fields - // ================================================================================================================= - /** - * The gameplay tag for events to notify passive condition check GAs about changes in hit points. - */ - FGameplayTag DamageReceivedEventTag; - - /** - * The gameplay tag for events to notify passive condition check GAs about changes in hit points. - */ - FGameplayTag HitPointsChangedEventTag; - // ================================================================================================================= // Protected Methods // ================================================================================================================= diff --git a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2CharacterAttributeStaticsBase.h b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2CharacterAttributeStaticsBase.h index ebf963165..fa6318844 100644 --- a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2CharacterAttributeStaticsBase.h +++ b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2CharacterAttributeStaticsBase.h @@ -31,28 +31,28 @@ struct OPENPF2GAMEFRAMEWORK_API FPF2CharacterAttributeStaticsBase : FPF2Attribut * Map from each damage type tag to the attribute that tracks a character's resistance to that damage type. */ inline static const TMap DamageTypeToResistanceAttributeMap = { - { "DamageType.Physical.Bludgeoning", "RstPhysicalBludgeoning" }, - { "DamageType.Physical.Piercing", "RstPhysicalPiercing" }, - { "DamageType.Physical.Slashing", "RstPhysicalSlashing" }, - - { "DamageType.Energy.Acid", "RstEnergyAcid" }, - { "DamageType.Energy.Cold", "RstEnergyCold" }, - { "DamageType.Energy.Electricity", "RstEnergyElectricity" }, - { "DamageType.Energy.Fire", "RstEnergyFire" }, - { "DamageType.Energy.Sonic", "RstEnergySonic" }, - { "DamageType.Energy.Positive", "RstEnergyPositive" }, - { "DamageType.Energy.Negative", "RstEnergyNegative" }, - { "DamageType.Energy.Force", "RstEnergyForce" }, - - { "DamageType.Alignment.Chaotic", "RstAlignmentChaotic" }, - { "DamageType.Alignment.Evil", "RstAlignmentEvil" }, - { "DamageType.Alignment.Good", "RstAlignmentGood" }, - { "DamageType.Alignment.Lawful", "RstAlignmentLawful" }, - - { "DamageType.Mental", "RstMental" }, - { "DamageType.Poison", "RstPoison" }, - { "DamageType.Bleed", "RstBleed" }, - { "DamageType.Precision", "RstPrecision" }, + { "PF2.DamageType.Physical.Bludgeoning", "RstPhysicalBludgeoning" }, + { "PF2.DamageType.Physical.Piercing", "RstPhysicalPiercing" }, + { "PF2.DamageType.Physical.Slashing", "RstPhysicalSlashing" }, + + { "PF2.DamageType.Energy.Acid", "RstEnergyAcid" }, + { "PF2.DamageType.Energy.Cold", "RstEnergyCold" }, + { "PF2.DamageType.Energy.Electricity", "RstEnergyElectricity" }, + { "PF2.DamageType.Energy.Fire", "RstEnergyFire" }, + { "PF2.DamageType.Energy.Sonic", "RstEnergySonic" }, + { "PF2.DamageType.Energy.Positive", "RstEnergyPositive" }, + { "PF2.DamageType.Energy.Negative", "RstEnergyNegative" }, + { "PF2.DamageType.Energy.Force", "RstEnergyForce" }, + + { "PF2.DamageType.Alignment.Chaotic", "RstAlignmentChaotic" }, + { "PF2.DamageType.Alignment.Evil", "RstAlignmentEvil" }, + { "PF2.DamageType.Alignment.Good", "RstAlignmentGood" }, + { "PF2.DamageType.Alignment.Lawful", "RstAlignmentLawful" }, + + { "PF2.DamageType.Mental", "RstMental" }, + { "PF2.DamageType.Poison", "RstPoison" }, + { "PF2.DamageType.Bleed", "RstBleed" }, + { "PF2.DamageType.Precision", "RstPrecision" }, }; public: diff --git a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2KeyAbilityTemlCalculationBase.h b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2KeyAbilityTemlCalculationBase.h index 8fed01f2b..4b01da6e6 100644 --- a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2KeyAbilityTemlCalculationBase.h +++ b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2KeyAbilityTemlCalculationBase.h @@ -44,11 +44,11 @@ class OPENPF2GAMEFRAMEWORK_API UPF2KeyAbilityTemlCalculationBase : public UGamep * boost. * * @param StatGameplayTagPrefix - * The tag prefix to use for checking a character's training in the stat. For example, "ClassDc", "SpellAttack", - * or "SpellDc". + * The tag prefix to use for checking a character's training in the stat. For example, "PF2.Proficiency.ClassDc", + * "PF2.Proficiency.SpellAttack", or "PF2.Proficiency.SpellDc". * @param KeyAbilityGameplayTagPrefix - * The tag prefix to use to determine the key ability for this stat. For the Class DC, this is "KeyAbility". For - * Spell Attack and Spell DC, this is "SpellcastingAbility". + * The tag prefix to use to determine the key ability for this stat. For the Class DC, this is "PF2.KeyAbility". + * For Spell Attack and Spell DC, this is "PF2.SpellcastingAbility". * @param BaseValue * The base value for this stat. For DC stats, this is usually "10". For other stats (e.g. Spell Attack Roll), * this is 0. @@ -114,7 +114,8 @@ class OPENPF2GAMEFRAMEWORK_API UPF2KeyAbilityTemlCalculationBase : public UGamep * This is used to ensure we can retrieve the modifier for the specified ability later in the calculation phase. * * @param KeyAbilityTagName - * The name of the gameplay tag that a character must have for the ability to be considered "key". + * The name of the gameplay tag that a character must have for the ability to be considered "key". For example, + * "PF2.KeyAbility.Strength" or "PF2.SpellcastingAbility.Intelligence". * @param Attribute * The definition of the attribute to capture. */ diff --git a/Source/OpenPF2GameFramework/Public/Items/Weapons/PF2Weapon.h b/Source/OpenPF2GameFramework/Public/Items/Weapons/PF2Weapon.h index e36dea157..03a719299 100644 --- a/Source/OpenPF2GameFramework/Public/Items/Weapons/PF2Weapon.h +++ b/Source/OpenPF2GameFramework/Public/Items/Weapons/PF2Weapon.h @@ -190,7 +190,7 @@ class OPENPF2GAMEFRAMEWORK_API UPF2Weapon : public UPF2Item, public IPF2WeaponIn UPROPERTY( EditDefaultsOnly, BlueprintReadOnly, - meta=(Categories="Trait.Weapon"), + meta=(Categories="PF2.Trait.Weapon"), Category="OpenPF2 - Weapon Statistics" ) FGameplayTagContainer Traits; diff --git a/Source/OpenPF2GameFramework/Public/Libraries/PF2AttackStatLibrary.h b/Source/OpenPF2GameFramework/Public/Libraries/PF2AttackStatLibrary.h index 04fadfdb2..580f930a5 100644 --- a/Source/OpenPF2GameFramework/Public/Libraries/PF2AttackStatLibrary.h +++ b/Source/OpenPF2GameFramework/Public/Libraries/PF2AttackStatLibrary.h @@ -39,8 +39,8 @@ class OPENPF2GAMEFRAMEWORK_API UPF2AttackStatLibrary final : public UBlueprintFu /** * The maximum level for a character's "dying" condition trait. * - * This level actually signifies that the character is dead. It is therefore synonymous with "Trait.Condition.Dead", - * which is an OpenPF2 extension to "Dying 4" ("Trait.Condition.Dying.4") from the Core Rulebook. + * This level actually signifies that the character is dead. It is therefore synonymous with "PF2.Trait.Condition.Dead", + * which is an OpenPF2 extension to "Dying 4" ("PF2.Trait.Condition.Dying.4") from the Core Rulebook. */ static constexpr uint8 MaxDyingConditionLevel = 4; diff --git a/Source/OpenPF2GameFramework/Public/Libraries/PF2TagLibrary.h b/Source/OpenPF2GameFramework/Public/Libraries/PF2TagLibrary.h index 17b19e46f..8805e6dcf 100644 --- a/Source/OpenPF2GameFramework/Public/Libraries/PF2TagLibrary.h +++ b/Source/OpenPF2GameFramework/Public/Libraries/PF2TagLibrary.h @@ -48,8 +48,8 @@ class OPENPF2GAMEFRAMEWORK_API UPF2TagLibrary final : public UBlueprintFunctionL /** * Finds the condition trait tag having the specified parent tag and parses the condition level into an integer. * - * For example, given a container with the following tags and a parent tag of "Condition.Dying", this would parse - * and return a value of "3": + * For example, given a container with the following tags and a parent tag of "PF2.Trait.Condition.Dying", this + * would parse and return a value of "3": * - CreatureSize.Medium * - CreatureAlignment.Neutral.Good * - KeyAbility.Intelligence @@ -80,7 +80,7 @@ class OPENPF2GAMEFRAMEWORK_API UPF2TagLibrary final : public UBlueprintFunctionL /** * Parses the condition level suffix from a condition trait tag into an integer. * - * For example, this parses tags like "Trait.Condition.Dying.4" and "Trait.Condition.Wounded.3" into the values + * For example, this parses tags like "PF2.Trait.Condition.Dying.4" and "PF2.Trait.Condition.Wounded.3" into the values * "4" and "3", respectively. * * @param Tag diff --git a/Source/OpenPF2GameFramework/Public/ModesOfPlay/PF2ModeOfPlayRuleSetBase.h b/Source/OpenPF2GameFramework/Public/ModesOfPlay/PF2ModeOfPlayRuleSetBase.h index 7c5f1af3d..e38e69fd8 100644 --- a/Source/OpenPF2GameFramework/Public/ModesOfPlay/PF2ModeOfPlayRuleSetBase.h +++ b/Source/OpenPF2GameFramework/Public/ModesOfPlay/PF2ModeOfPlayRuleSetBase.h @@ -27,64 +27,15 @@ class OPENPF2GAMEFRAMEWORK_API APF2ModeOfPlayRuleSetBase : public AActor, public GENERATED_BODY() protected: - // ================================================================================================================= - // Protected Constants - // ================================================================================================================= - /** - * The name of the root of tags that indicate that a character is in the process of dying. - */ - inline static const FName DyingConditionTagName = FName("Trait.Condition.Dying"); - - /** - * The name of the tag that indicates a character is dead. This is equivalent to Trait.Condition.Dying.4. - */ - inline static const FName DeadConditionTagName = FName("Trait.Condition.Dead"); - - /** - * The name of the tag that indicates a character is no longer conscious. - */ - inline static const FName UnconsciousConditionTagName = FName("Trait.Condition.Unconscious"); - // ================================================================================================================= // Protected Fields // ================================================================================================================= - /** - * The root of tags that signify a character is dying. - * - * An MoPRS listens for a tag of this type to be added to or removed from a character in order to fire the - * Native_OnCharacterDying() and Native_OnCharacterRecoveredFromDying(), respectively. - */ - FGameplayTag DyingConditionTag; - - /** - * The tag that signifies a character is dead. - * - * An MoPRS listens for a tag of this type to be added to a character in order to fire OnCharacterDead(). - */ - FGameplayTag DeadConditionTag; - - /** - * The tag that signifies a character is unconscious. - * - * An MoPRS listens for a tag of this type to be added to or removed from a character in order to fire the - * OnCharacterUnconscious() and OnCharacterConscious(), respectively. - */ - FGameplayTag UnconsciousConditionTag; - /** * Map of handles for callback delegates on condition tags. */ TMap, TMap> ConditionCallbackHandles; public: - // ================================================================================================================= - // Public Constructor - // ================================================================================================================= - /** - * Default constructor for APF2ModeOfPlayRuleSetBase. - */ - explicit APF2ModeOfPlayRuleSetBase(); - // ================================================================================================================= // Public Methods - IPF2ModeOfPlayRuleSetInterface Implementation // ================================================================================================================= diff --git a/Source/OpenPF2GameFramework/Public/PF2CharacterBase.h b/Source/OpenPF2GameFramework/Public/PF2CharacterBase.h index fdf3526f8..5766c1c16 100644 --- a/Source/OpenPF2GameFramework/Public/PF2CharacterBase.h +++ b/Source/OpenPF2GameFramework/Public/PF2CharacterBase.h @@ -172,7 +172,7 @@ class OPENPF2GAMEFRAMEWORK_API APF2CharacterBase : * Each value is a gameplay effect and the key is the weight group of that GE (sorted alphanumerically). The weight * controls the order that all GEs are applied. Lower weights are applied earlier than higher weights. * - * The names of each group are exposed as tags in the "GameplayEffect.WeightGroup" tag list so that they can be + * The names of each group are exposed as tags in the "PF2.GameplayEffect.WeightGroup" tag list so that they can be * applied to GEs by game designers to control the default group that a GE gets added to. A GE can also be * explicitly added to a group via the AddPassiveGameplayEffectWithWeight() method on the Character ASC. */ diff --git a/Source/OpenPF2GameFramework/Public/PF2CharacterConstants.h b/Source/OpenPF2GameFramework/Public/PF2CharacterConstants.h index fef144ae2..af38f8802 100644 --- a/Source/OpenPF2GameFramework/Public/PF2CharacterConstants.h +++ b/Source/OpenPF2GameFramework/Public/PF2CharacterConstants.h @@ -16,7 +16,7 @@ namespace PF2CharacterConstants * Weight groups are evaluated in the order that their names are sorted. Placing different GEs in different groups * allows game designers to control the order that GEs are applied to an OpenPF2 character. * - * For consistency, each name in this list must exactly match a tag in the "GameplayEffect.WeightGroup" group. This + * For consistency, each name in this list must exactly match a tag in the "PF2.GameplayEffect.WeightGroup" group. This * ensures that game designers have the same options for placing a GE in a weight group as exists in backend code. */ namespace GeWeightGroups @@ -24,40 +24,40 @@ namespace PF2CharacterConstants /** * The weight group used for GEs that initialize base stats. */ - static const FName InitializeBaseStats = FName(TEXT("GameplayEffect.WeightGroup.00_InitializeBaseStats")); + static const FName InitializeBaseStats = FName(TEXT("PF2.GameplayEffect.WeightGroup.00_InitializeBaseStats")); /** * The weight group used for GEs provided by the game designer that have to run right after base stats. */ static const FName PostInitializeBaseStats = - FName(TEXT("GameplayEffect.WeightGroup.05_PostInitializeBaseStats")); + FName(TEXT("PF2.GameplayEffect.WeightGroup.05_PostInitializeBaseStats")); /** * The weight group used for GEs generated from other values on this character (managed by ASC logic). */ - static const FName ManagedEffects = FName(TEXT("GameplayEffect.WeightGroup.10_ManagedEffects")); + static const FName ManagedEffects = FName(TEXT("PF2.GameplayEffect.WeightGroup.10_ManagedEffects")); /** * The default weight group for custom, passive GEs from a game designer; applied before ability boosts. */ - static const FName PreAbilityBoosts = FName(TEXT("GameplayEffect.WeightGroup.15_PreAbilityBoosts")); + static const FName PreAbilityBoosts = FName(TEXT("PF2.GameplayEffect.WeightGroup.15_PreAbilityBoosts")); /** * The weight group used for ability boosts selected by the player or a game designer. */ - static const FName AbilityBoosts = FName(TEXT("GameplayEffect.WeightGroup.20_AbilityBoosts")); + static const FName AbilityBoosts = FName(TEXT("PF2.GameplayEffect.WeightGroup.20_AbilityBoosts")); /** * The weight group used for custom GEs provided by the game designer that must run before the last group of * stats GEs. */ - static const FName PreFinalizeStats = FName(TEXT("GameplayEffect.WeightGroup.25_PreFinalizeStats")); + static const FName PreFinalizeStats = FName(TEXT("PF2.GameplayEffect.WeightGroup.25_PreFinalizeStats")); /** * The weight group used for GEs that need to run last because they heavily depend on the results of earlier * GEs. */ - static const FName FinalizeStats = FName(TEXT("GameplayEffect.WeightGroup.30_FinalizeStats")); + static const FName FinalizeStats = FName(TEXT("PF2.GameplayEffect.WeightGroup.30_FinalizeStats")); } /** diff --git a/Source/OpenPF2GameFramework/Public/PF2MonetaryValue.h b/Source/OpenPF2GameFramework/Public/PF2MonetaryValue.h index 6997c17b9..8957b55f1 100644 --- a/Source/OpenPF2GameFramework/Public/PF2MonetaryValue.h +++ b/Source/OpenPF2GameFramework/Public/PF2MonetaryValue.h @@ -7,6 +7,8 @@ #include "GameplayTagContainer.h" +#include "GameplayTags/CurrencyUnits.h" + #include "Utilities/PF2GameplayAbilityUtilities.h" #include "PF2MonetaryValue.generated.h" @@ -49,7 +51,7 @@ struct FPF2MonetaryValue FPF2MonetaryValue(const float Amount, const FGameplayTag MonetaryUnit) : Amount(Amount), MonetaryUnit(MonetaryUnit) { checkf( - PF2GameplayAbilityUtilities::HasTag(&MonetaryUnit.GetSingleTagContainer(), FName("CurrencyUnit")), + MonetaryUnit.MatchesTag(Pf2TagCurrencyUnits), TEXT("Monetary unit must be a CurrencyUnit tag.") ); } diff --git a/Source/OpenPF2Tests/Private/Tests/Abilities/Attacks/PF2SpellAttackRollCalculation.spec.cpp b/Source/OpenPF2Tests/Private/Tests/Abilities/Attacks/PF2SpellAttackRollCalculation.spec.cpp index ee8af3714..82a7ca1aa 100644 --- a/Source/OpenPF2Tests/Private/Tests/Abilities/Attacks/PF2SpellAttackRollCalculation.spec.cpp +++ b/Source/OpenPF2Tests/Private/Tests/Abilities/Attacks/PF2SpellAttackRollCalculation.spec.cpp @@ -79,7 +79,7 @@ void FPF2SpellAttackRollCalculationsSpec::Define() { BeforeEach([=, this]() { - this->ApplyUnreplicatedTag(FString::Format(TEXT("SpellcastingAbility.{0}"), {SpellAbilityName})); + this->ApplyUnreplicatedTag(TEXT("PF2.SpellcastingAbility.") + SpellAbilityName); }); for (auto& BoostedAbility : this->AllAbilityModifierAttributes) @@ -108,7 +108,7 @@ void FPF2SpellAttackRollCalculationsSpec::Define() BeforeEach([=, this]() { - this->ApplyUnreplicatedTag(FString::Format(TEXT("SpellAttack.{0}"), {ProficiencyLevel})); + this->ApplyUnreplicatedTag(TEXT("PF2.Proficiency.SpellAttack.") + ProficiencyLevel); }); if (SpellAbilityName == BoostedAbilityName) diff --git a/Source/OpenPF2Tests/Private/Tests/CharacterStats/AbilityModifiers/PF2PerceptionModifierCalculation.spec.cpp b/Source/OpenPF2Tests/Private/Tests/CharacterStats/AbilityModifiers/PF2PerceptionModifierCalculation.spec.cpp index 3ee88c2ef..98b0d0848 100644 --- a/Source/OpenPF2Tests/Private/Tests/CharacterStats/AbilityModifiers/PF2PerceptionModifierCalculation.spec.cpp +++ b/Source/OpenPF2Tests/Private/Tests/CharacterStats/AbilityModifiers/PF2PerceptionModifierCalculation.spec.cpp @@ -114,7 +114,7 @@ void FPF2PerceptionModifierCalculationSpec::VerifyPerceptionModifier(const float const FGameplayAttributeData* PcpAttribute = Attributes[this->PcpModAttributeName]; const TSubclassOf& EffectBP = this->LoadGE(); - this->ApplyUnreplicatedTag(FString::Format(TEXT("Perception.{0}"), {ProficiencyLevel})); + this->ApplyUnreplicatedTag(TEXT("PF2.Proficiency.Perception.") + ProficiencyLevel); this->InitializeAttributeAndApplyEffect(*AbModAttribute, AbModScore, EffectBP); TestEqual( diff --git a/Source/OpenPF2Tests/Private/Tests/CharacterStats/AbilityModifiers/PF2SavingThrowModifierCalculation.spec.cpp b/Source/OpenPF2Tests/Private/Tests/CharacterStats/AbilityModifiers/PF2SavingThrowModifierCalculation.spec.cpp index 775410771..c16205d86 100644 --- a/Source/OpenPF2Tests/Private/Tests/CharacterStats/AbilityModifiers/PF2SavingThrowModifierCalculation.spec.cpp +++ b/Source/OpenPF2Tests/Private/Tests/CharacterStats/AbilityModifiers/PF2SavingThrowModifierCalculation.spec.cpp @@ -178,7 +178,10 @@ void FPF2SavingThrowModifierCalculationSpec::VerifySavingThrowModifier(const FSt const FGameplayAttributeData* SavingAttribute = Attributes[SavingModAttributeName]; const TSubclassOf& EffectBP = this->LoadGE(); - this->ApplyUnreplicatedTag(FString::Format(TEXT("SavingThrow.{0}.{1}"), {SavingModAttributeFriendlyName, ProficiencyLevel})); + this->ApplyUnreplicatedTag( + FString::Format(TEXT("PF2.Proficiency.SavingThrow.{0}.{1}"), {SavingModAttributeFriendlyName, ProficiencyLevel}) + ); + this->InitializeAttributeAndApplyEffect(*AbModAttribute, AbModScore, EffectBP); TestEqual( diff --git a/Source/OpenPF2Tests/Private/Tests/CharacterStats/PF2ArmorClassCalculation.spec.cpp b/Source/OpenPF2Tests/Private/Tests/CharacterStats/PF2ArmorClassCalculation.spec.cpp index ab0c752e2..7ac174430 100644 --- a/Source/OpenPF2Tests/Private/Tests/CharacterStats/PF2ArmorClassCalculation.spec.cpp +++ b/Source/OpenPF2Tests/Private/Tests/CharacterStats/PF2ArmorClassCalculation.spec.cpp @@ -77,7 +77,7 @@ void FPF2ArmorClassCalculationSpec::Define() { BeforeEach([=, this]() { - this->ApplyUnreplicatedTag(FString::Format(TEXT("Armor.Equipped.{0}"), {ArmorClassEquipped})); + this->ApplyUnreplicatedTag(TEXT("PF2.Equipped.Armor.") + ArmorClassEquipped); }); for (auto& ArmorClassProficient : this->ArmorClasses) @@ -95,7 +95,7 @@ void FPF2ArmorClassCalculationSpec::Define() { this->ApplyUnreplicatedTag( FString::Format( - TEXT("Armor.Category.{0}.{1}"), + TEXT("PF2.Proficiency.Armor.Category.{0}.{1}"), {ArmorClassProficient, ProficiencyLevel} ) ); diff --git a/Source/OpenPF2Tests/Private/Tests/CharacterStats/PF2ClassDifficultyClassCalculation.spec.cpp b/Source/OpenPF2Tests/Private/Tests/CharacterStats/PF2ClassDifficultyClassCalculation.spec.cpp index f4babb4ae..79e10d7f3 100644 --- a/Source/OpenPF2Tests/Private/Tests/CharacterStats/PF2ClassDifficultyClassCalculation.spec.cpp +++ b/Source/OpenPF2Tests/Private/Tests/CharacterStats/PF2ClassDifficultyClassCalculation.spec.cpp @@ -75,7 +75,7 @@ void FPF2ClassDifficultyClassCalculationSpec::Define() { BeforeEach([=, this]() { - this->ApplyUnreplicatedTag(FString::Format(TEXT("KeyAbility.{0}"), {KeyAbilityName})); + this->ApplyUnreplicatedTag(TEXT("PF2.KeyAbility.") + KeyAbilityName); }); for (auto& BoostedAbility : this->AbilityModifierAttributes) @@ -104,7 +104,7 @@ void FPF2ClassDifficultyClassCalculationSpec::Define() BeforeEach([=, this]() { - this->ApplyUnreplicatedTag(FString::Format(TEXT("ClassDc.{0}"), {ProficiencyLevel})); + this->ApplyUnreplicatedTag(TEXT("PF2.Proficiency.ClassDc.") + ProficiencyLevel); }); if (KeyAbilityName == BoostedAbilityName) diff --git a/Source/OpenPF2Tests/Private/Tests/CharacterStats/PF2SpellDifficultyClassCalculation.spec.cpp b/Source/OpenPF2Tests/Private/Tests/CharacterStats/PF2SpellDifficultyClassCalculation.spec.cpp index 3fa22d92c..71eddf027 100644 --- a/Source/OpenPF2Tests/Private/Tests/CharacterStats/PF2SpellDifficultyClassCalculation.spec.cpp +++ b/Source/OpenPF2Tests/Private/Tests/CharacterStats/PF2SpellDifficultyClassCalculation.spec.cpp @@ -79,7 +79,7 @@ void FPF2SpellDifficultyClassCalculationsSpec::Define() { BeforeEach([=, this]() { - this->ApplyUnreplicatedTag(FString::Format(TEXT("SpellcastingAbility.{0}"), {SpellAbilityName})); + this->ApplyUnreplicatedTag(TEXT("PF2.SpellcastingAbility.") + SpellAbilityName); }); for (auto& BoostedAbility : this->AllAbilityModifierAttributes) @@ -108,7 +108,9 @@ void FPF2SpellDifficultyClassCalculationsSpec::Define() BeforeEach([=, this]() { - this->ApplyUnreplicatedTag(FString::Format(TEXT("SpellDc.{0}"), {ProficiencyLevel})); + this->ApplyUnreplicatedTag( + TEXT("PF2.Proficiency.SpellDc.") + ProficiencyLevel + ); }); if (SpellAbilityName == BoostedAbilityName) diff --git a/Source/OpenPF2Tests/Private/Tests/CharacterStats/Skills/PF2SkillModifierCalculation.spec.cpp b/Source/OpenPF2Tests/Private/Tests/CharacterStats/Skills/PF2SkillModifierCalculation.spec.cpp index d2a1b0890..68e9b7184 100644 --- a/Source/OpenPF2Tests/Private/Tests/CharacterStats/Skills/PF2SkillModifierCalculation.spec.cpp +++ b/Source/OpenPF2Tests/Private/Tests/CharacterStats/Skills/PF2SkillModifierCalculation.spec.cpp @@ -403,7 +403,10 @@ void FPF2SkillModifierCalculationSpec::VerifySkillModifier(const FString& AbModA const FGameplayAttributeData* SkillAttribute = Attributes[SkillModAttributeName]; const TSubclassOf& EffectBP = this->LoadGE(); - this->ApplyUnreplicatedTag(FString::Format(TEXT("Skill.{0}.{1}"), {SkillModAttributeFriendlyName, ProficiencyLevel})); + this->ApplyUnreplicatedTag( + FString::Format(TEXT("PF2.Proficiency.Skill.{0}.{1}"), {SkillModAttributeFriendlyName, ProficiencyLevel}) + ); + this->InitializeAttributeAndApplyEffect(*AbModAttribute, AbModScore, EffectBP); TestEqual( diff --git a/Source/OpenPF2Tests/Private/Tests/Libraries/PF2TagLibrary.spec.cpp b/Source/OpenPF2Tests/Private/Tests/Libraries/PF2TagLibrary.spec.cpp index 9f270eae4..df3e76dac 100644 --- a/Source/OpenPF2Tests/Private/Tests/Libraries/PF2TagLibrary.spec.cpp +++ b/Source/OpenPF2Tests/Private/Tests/Libraries/PF2TagLibrary.spec.cpp @@ -3,12 +3,14 @@ // This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not // distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. +#include "GameplayTags/Stats/CreatureAlignments.h" +#include "GameplayTags/Stats/CreatureSizes.h" +#include "GameplayTags/Traits/Conditions.h" + #include "Libraries/PF2TagLibrary.h" #include "Tests/PF2SpecBase.h" -#include "Utilities/PF2GameplayAbilityUtilities.h" - BEGIN_DEFINE_PF_SPEC(FPF2TagLibrarySpec, "OpenPF2.Libraries.Tag", EAutomationTestFlags::ProductFilter | EAutomationTestFlags::ApplicationContextMask) @@ -16,26 +18,26 @@ END_DEFINE_PF_SPEC(FPF2TagLibrarySpec) void FPF2TagLibrarySpec::Define() { - static const TArray TagNames = { - "CreatureSize.Medium", - "Trait.Condition.Dying.4", - "Trait.Condition.Wounded.3", - "Trait.Condition.Wounded.2", - "CreatureAlignment.Chaotic.Good" + static const TArray Tags = { + Pf2TagCreatureSizeMedium, + Pf2TagTraitConditionDying4, + Pf2TagTraitConditionWounded3, + Pf2TagTraitConditionWounded2, + Pf2TagCreatureAlignmentChaoticGood, }; - static const FGameplayTag DoomedTag = FGameplayTag::RequestGameplayTag("Trait.Condition.Doomed"), - DyingParentTag = FGameplayTag::RequestGameplayTag("Trait.Condition.Dying"), - WoundedParentTag = FGameplayTag::RequestGameplayTag("Trait.Condition.Wounded"), - ConditionTag = FGameplayTag::RequestGameplayTag("Trait.Condition"), - Dying4Tag = FGameplayTag::RequestGameplayTag("Trait.Condition.Dying.4"), - Wounded3Tag = FGameplayTag::RequestGameplayTag("Trait.Condition.Wounded.3"); + static const FGameplayTag DoomedTag = Pf2TagTraitConditionDoomed, + DyingParentTag = Pf2TagTraitConditionDying, + WoundedParentTag = Pf2TagTraitConditionWounded, + ConditionTag = Pf2TagTraitConditions, + Dying4Tag = Pf2TagTraitConditionDying4, + Wounded3Tag = Pf2TagTraitConditionWounded3; static FGameplayTagContainer TagList; - for (const FName& TagName : TagNames) + for (const FGameplayTag& Tag : Tags) { - TagList.AddTag(FGameplayTag::RequestGameplayTag(TagName)); + TagList.AddTag(Tag); } Describe(TEXT("FindChildTag"), [=, this] @@ -73,7 +75,9 @@ void FPF2TagLibrarySpec::Define() FGameplayTag Result; AddExpectedError( - TEXT("More than one child tag \\('Trait\\.Condition\\.Wounded\\.3, Trait\\.Condition\\.Wounded\\.2'\\) matched parent tag \\('Trait\\.Condition\\.Wounded'\\)\\."), + TEXT("More than one child tag \\('PF2\\.Trait\\.Condition\\.Wounded\\.3, " + "PF2\\.Trait\\.Condition\\.Wounded\\.2'\\) matched parent tag " + "\\('PF2\\.Trait\\.Condition\\.Wounded'\\)\\."), EAutomationExpectedErrorFlags::Exact, 1 ); @@ -106,7 +110,9 @@ void FPF2TagLibrarySpec::Define() int8 Result; AddExpectedError( - TEXT("More than one child tag \\('Trait\\.Condition\\.Dying\\.4, Trait\\.Condition\\.Wounded\\.3, Trait\\.Condition\\.Wounded.2'\\) matched parent tag \\('Trait\\.Condition'\\)\\."), + TEXT("More than one child tag \\('PF2\\.Trait\\.Condition\\.Dying\\.4, " + "PF2\\.Trait\\.Condition\\.Wounded\\.3, PF2\\.Trait\\.Condition\\.Wounded.2'\\) matched parent tag " + "\\('PF2\\.Trait\\.Condition'\\)\\."), EAutomationExpectedErrorFlags::Exact, 1 ); @@ -134,7 +140,9 @@ void FPF2TagLibrarySpec::Define() int8 Result; AddExpectedError( - TEXT("More than one child tag \\('Trait\\.Condition\\.Wounded\\.3, Trait\\.Condition\\.Wounded\\.2'\\) matched parent tag \\('Trait\\.Condition\\.Wounded'\\)\\."), + TEXT("More than one child tag \\('PF2\\.Trait\\.Condition\\.Wounded\\.3, " + "PF2\\.Trait\\.Condition\\.Wounded\\.2'\\) matched parent tag " + "\\('PF2\\.Trait\\.Condition\\.Wounded'\\)\\."), EAutomationExpectedErrorFlags::Exact, 1 ); diff --git a/Source/OpenPF2Tests/Private/Tests/ModesOfPlay/Encounter/Conditions/PF2ConditionsDyingRecoveryByCheck.spec.cpp b/Source/OpenPF2Tests/Private/Tests/ModesOfPlay/Encounter/Conditions/PF2ConditionsDyingRecoveryByCheck.spec.cpp index 6545c2a7c..b64650fca 100644 --- a/Source/OpenPF2Tests/Private/Tests/ModesOfPlay/Encounter/Conditions/PF2ConditionsDyingRecoveryByCheck.spec.cpp +++ b/Source/OpenPF2Tests/Private/Tests/ModesOfPlay/Encounter/Conditions/PF2ConditionsDyingRecoveryByCheck.spec.cpp @@ -3,6 +3,8 @@ // This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not // distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. +#include "GameplayTags/Traits/Conditions.h" + #include "Libraries/PF2DiceLibrary.h" #include "ModesOfPlay/Encounter/PF2EncounterModeOfPlayRuleSetBase.h" @@ -191,7 +193,7 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() this->DestroyWorld(); }); - Describe("when a character is starting a turn with a 'Trait_Condition_Dying_1' tag (DC: 10 + 1 = 11)", [=, this] + Describe("when a character is starting a turn with a 'PF2_Trait_Condition_Dying_1' tag (DC: 10 + 1 = 11)", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -210,35 +212,25 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return 6; } ); - Describe("when the character does not have any 'Trait_Condition_Wounded' tags", [=, this] + Describe("when the character does not have any 'PF2_Trait_Condition_Wounded' tags", [=, this] { - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_1' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_1' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 1 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 1); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_1' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_1' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -247,33 +239,23 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded1_Effect })); } ); - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_2' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_2' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 2 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 2); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_2' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_2' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -282,33 +264,23 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded2_Effect })); } ); - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_3' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_3' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 3 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 3); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_3' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_3' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -317,33 +289,23 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded3_Effect })); } ); - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_4' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_4' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 4 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 4); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_4' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_4' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -352,29 +314,19 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded4_Effect })); } ); - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("retains the 'Trait_Condition_Wounded_4' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Wounded_4' gameplay tag on the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 4 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 4); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); }); @@ -389,35 +341,25 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return 13; } ); - Describe("when the character does not have any 'Trait_Condition_Wounded' tags", [=, this] + Describe("when the character does not have any 'PF2_Trait_Condition_Wounded' tags", [=, this] { - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_1' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_1' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 1 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 1); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_1' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_1' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -426,33 +368,23 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded1_Effect })); } ); - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_2' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_2' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 2 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 2); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_2' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_2' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -461,33 +393,23 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded2_Effect })); } ); - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_3' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_3' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 3 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 3); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_3' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_3' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -496,33 +418,23 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded3_Effect })); } ); - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_4' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_4' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 4 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 4); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_4' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_4' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -531,29 +443,19 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded4_Effect })); } ); - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("retains the 'Trait_Condition_Wounded_4' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Wounded_4' gameplay tag on the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 4 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 4); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); }); @@ -568,21 +470,14 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return 1; } ); - It("replaces the 'Trait_Condition_Dying_1' gameplay tag with 'Trait_Condition_Dying_2' on the character", [=, this] + It("replaces the 'PF2_Trait_Condition_Dying_1' gameplay tag with 'PF2_Trait_Condition_Dying_2' on the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")), - 2 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionDying, 2); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); @@ -596,26 +491,19 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return 20; } ); - It("replaces the 'Trait_Condition_Dying_1' gameplay tag with 'Trait_Condition_Dying_3' on the character", [=, this] + It("replaces the 'PF2_Trait_Condition_Dying_1' gameplay tag with 'PF2_Trait_Condition_Dying_3' on the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")), - 3 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionDying, 3); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); }); - Describe("when a character is starting a turn with a 'Trait_Condition_Dying_2' tag (DC: 10 + 2 = 12)", [=, this] + Describe("when a character is starting a turn with a 'PF2_Trait_Condition_Dying_2' tag (DC: 10 + 2 = 12)", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -634,35 +522,25 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return 6; } ); - Describe("when the character does not have any 'Trait_Condition_Wounded' tags", [=, this] + Describe("when the character does not have any 'PF2_Trait_Condition_Wounded' tags", [=, this] { - It("removes the 'Trait_Condition_Dying_2' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_2' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_1' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_1' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 1 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 1); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_1' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_1' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -671,33 +549,23 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded1_Effect })); } ); - It("removes the 'Trait_Condition_Dying_2' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_2' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_2' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_2' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 2 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 2); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_2' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_2' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -706,33 +574,23 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded2_Effect })); } ); - It("removes the 'Trait_Condition_Dying_2' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_2' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_3' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_3' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 3 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 3); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_3' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_3' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -741,33 +599,23 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded3_Effect })); } ); - It("removes the 'Trait_Condition_Dying_2' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_2' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_4' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_4' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 4 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 4); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_4' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_4' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -776,29 +624,19 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded4_Effect })); } ); - It("removes the 'Trait_Condition_Dying_2' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_2' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("retains the 'Trait_Condition_Wounded_4' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Wounded_4' gameplay tag on the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 4 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 4); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); }); @@ -813,21 +651,14 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return 9; } ); - It("replaces the 'Trait_Condition_Dying_2' gameplay tag with 'Trait_Condition_Dying_1' on the character", [=, this] + It("replaces the 'PF2_Trait_Condition_Dying_2' gameplay tag with 'PF2_Trait_Condition_Dying_1' on the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")), - 1 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionDying, 1); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); @@ -841,21 +672,14 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return 13; } ); - It("replaces the 'Trait_Condition_Dying_2' gameplay tag with 'Trait_Condition_Dying_3' on the character", [=, this] + It("replaces the 'PF2_Trait_Condition_Dying_2' gameplay tag with 'PF2_Trait_Condition_Dying_3' on the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")), - 3 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionDying, 3); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); @@ -871,15 +695,12 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() It("kills the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); }); - Describe("when a character is starting a turn with a 'Trait_Condition_Dying_3' tag (DC: 10 + 3 = 13)", [=, this] + Describe("when a character is starting a turn with a 'PF2_Trait_Condition_Dying_3' tag (DC: 10 + 3 = 13)", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, @@ -898,21 +719,14 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return 6; } ); - It("replaces the 'Trait_Condition_Dying_3' gameplay tag with 'Trait_Condition_Dying_1' on the character", [=, this] + It("replaces the 'PF2_Trait_Condition_Dying_3' gameplay tag with 'PF2_Trait_Condition_Dying_1' on the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")), - 1 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionDying, 1); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); @@ -926,21 +740,14 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() { return 0; } ); - It("replaces the 'Trait_Condition_Dying_3' gameplay tag with 'Trait_Condition_Dying_2' on the character", [=, this] + It("replaces the 'PF2_Trait_Condition_Dying_3' gameplay tag with 'PF2_Trait_Condition_Dying_2' on the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")), - 2 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionDying, 2); }); - It("retains the 'Trait_Condition_Unconscious' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Unconscious' gameplay tag on the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); @@ -956,10 +763,7 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() It("kills the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); @@ -975,15 +779,12 @@ void FPF2ConditionsDyingRecoveryByCheck::Define() It("kills the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); }); - Describe("when a character is starting a turn with a 'Trait_Condition_Dying_4' tag (DC: 10 + 4 = 14)", [=, this] + Describe("when a character is starting a turn with a 'PF2_Trait_Condition_Dying_4' tag (DC: 10 + 4 = 14)", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeStartOfTurn, diff --git a/Source/OpenPF2Tests/Private/Tests/ModesOfPlay/Encounter/Conditions/PF2ConditionsDyingRecoveryByHealing.spec.cpp b/Source/OpenPF2Tests/Private/Tests/ModesOfPlay/Encounter/Conditions/PF2ConditionsDyingRecoveryByHealing.spec.cpp index 1d3f9a4cf..ca276eca8 100644 --- a/Source/OpenPF2Tests/Private/Tests/ModesOfPlay/Encounter/Conditions/PF2ConditionsDyingRecoveryByHealing.spec.cpp +++ b/Source/OpenPF2Tests/Private/Tests/ModesOfPlay/Encounter/Conditions/PF2ConditionsDyingRecoveryByHealing.spec.cpp @@ -8,6 +8,9 @@ #include "CharacterStats/PF2CharacterAttributeSet.h" +#include "GameplayTags/GameplayEffects/SetByCallerParameters.h" +#include "GameplayTags/Traits/Conditions.h" + #include "Tests/PF2SpecBase.h" BEGIN_DEFINE_PF_SPEC(FPF2ConditionsDyingRecoveryByHealing, @@ -133,7 +136,7 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() this->DestroyWorld(); }); - Describe("when a character has a 'Trait_Condition_Dying_1' gameplay tag", [=, this] + Describe("when a character has a 'PF2_Trait_Condition_Dying_1' gameplay tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -144,35 +147,25 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() Describe("when the character receives healing", [=, this] { - Describe("when the character does not have any 'Trait_Condition_Wounded' tags", [=, this] + Describe("when the character does not have any 'PF2_Trait_Condition_Wounded' tags", [=, this] { - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_1' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_1' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 1 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 1); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_1' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_1' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -181,33 +174,23 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded1_Effect })); } ); - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_2' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_2' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 2 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 2); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_2' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_2' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -216,33 +199,23 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded2_Effect })); } ); - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_3' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_3' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 3 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 3); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_3' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_3' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -251,33 +224,23 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded3_Effect })); } ); - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_4' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_4' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 4 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 4); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_4' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_4' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -286,35 +249,25 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded4_Effect })); } ); - It("removes the 'Trait_Condition_Dying_1' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_1' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("retains the 'Trait_Condition_Wounded_4' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Wounded_4' gameplay tag on the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 4 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 4); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); }); }); - Describe("when a character has a 'Trait_Condition_Dying_2' gameplay tag", [=, this] + Describe("when a character has a 'PF2_Trait_Condition_Dying_2' gameplay tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -325,35 +278,25 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() Describe("when the character receives healing", [=, this] { - Describe("when the character does not have any 'Trait_Condition_Wounded' tags", [=, this] + Describe("when the character does not have any 'PF2_Trait_Condition_Wounded' tags", [=, this] { - It("removes the 'Trait_Condition_Dying_2' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_2' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_1' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_1' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 1 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 1); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_1' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_1' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -362,33 +305,23 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded1_Effect })); } ); - It("removes the 'Trait_Condition_Dying_2' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_2' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_2' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_2' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 2 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 2); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_2' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_2' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -397,33 +330,23 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded2_Effect })); } ); - It("removes the 'Trait_Condition_Dying_2' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_2' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_3' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_3' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 3 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 3); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_3' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_3' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -432,33 +355,23 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded3_Effect })); } ); - It("removes the 'Trait_Condition_Dying_2' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_2' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_4' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_4' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 4 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 4); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_4' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_4' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -467,35 +380,25 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded4_Effect })); } ); - It("removes the 'Trait_Condition_Dying_2' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_2' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("retains the 'Trait_Condition_Wounded_4' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Wounded_4' gameplay tag on the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 4 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 4); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); }); }); - Describe("when a character has a 'Trait_Condition_Dying_3' gameplay tag (DC: 10 + 3 = 13)", [=, this] + Describe("when a character has a 'PF2_Trait_Condition_Dying_3' gameplay tag (DC: 10 + 3 = 13)", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -506,35 +409,25 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() Describe("when the character receives healing", [=, this] { - Describe("when the character does not have any 'Trait_Condition_Wounded' tags", [=, this] + Describe("when the character does not have any 'PF2_Trait_Condition_Wounded' tags", [=, this] { - It("removes the 'Trait_Condition_Dying_3' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_3' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_1' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_1' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 1 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 1); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_1' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_1' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -543,33 +436,23 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded1_Effect })); } ); - It("removes the 'Trait_Condition_Dying_3' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_3' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_2' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_2' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 2 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 2); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_2' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_2' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -578,33 +461,23 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded2_Effect })); } ); - It("removes the 'Trait_Condition_Dying_3' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_3' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_3' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_3' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 3 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 3); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_3' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_3' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -613,33 +486,23 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded3_Effect })); } ); - It("removes the 'Trait_Condition_Dying_3' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_3' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("applies the 'Trait_Condition_Wounded_4' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Wounded_4' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 4 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 4); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_4' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_4' tag", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -648,35 +511,25 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { return PF2ArrayUtilities::Concatenate(**Previous, TArray({ BP_Wounded4_Effect })); } ); - It("removes the 'Trait_Condition_Dying_3' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Dying_3' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); - It("retains the 'Trait_Condition_Wounded_4' gameplay tag on the character", [=, this] + It("retains the 'PF2_Trait_Condition_Wounded_4' gameplay tag on the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Wounded")), - 4 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionWounded, 4); }); - It("removes the 'Trait_Condition_Unconscious' gameplay tag from the character", [=, this] + It("removes the 'PF2_Trait_Condition_Unconscious' gameplay tag from the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); }); }); }); - Describe("when a character has a 'Trait_Condition_Dying_4' gameplay tag (DC: 10 + 4 = 14)", [=, this] + Describe("when a character has a 'PF2_Trait_Condition_Dying_4' gameplay tag (DC: 10 + 4 = 14)", [=, this] { REDEFINE_LET( GameplayEffectsToApplyBeforeTest, @@ -689,16 +542,8 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() { It("has no effect because the character is already dead", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")), - 4 - ); - - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionDying, 4); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); }); @@ -706,13 +551,11 @@ void FPF2ConditionsDyingRecoveryByHealing::Define() void FPF2ConditionsDyingRecoveryByHealing::HealTestCharacter(const float HealingAmount) const { - FGameplayEffectSpecHandle EffectSpecHandle; - - EffectSpecHandle = + const FGameplayEffectSpecHandle EffectSpecHandle = this->BuildEffectSpec( this->HealEffect, { - {"GameplayEffect.Parameter.Healing", HealingAmount}, + {Pf2TagGameplayEffectParameterHealing, HealingAmount}, } ); diff --git a/Source/OpenPF2Tests/Private/Tests/ModesOfPlay/Encounter/Conditions/PF2ConditionsKnockoutAndDeath.spec.cpp b/Source/OpenPF2Tests/Private/Tests/ModesOfPlay/Encounter/Conditions/PF2ConditionsKnockoutAndDeath.spec.cpp index a841490ad..261cee812 100644 --- a/Source/OpenPF2Tests/Private/Tests/ModesOfPlay/Encounter/Conditions/PF2ConditionsKnockoutAndDeath.spec.cpp +++ b/Source/OpenPF2Tests/Private/Tests/ModesOfPlay/Encounter/Conditions/PF2ConditionsKnockoutAndDeath.spec.cpp @@ -5,6 +5,9 @@ #include "Abilities/PF2DegreeOfSuccess.h" +#include "GameplayTags/Traits/Conditions.h" +#include "GameplayTags/Traits/Effects.h" + #include "Libraries/PF2AttackStatLibrary.h" #include "ModesOfPlay/Encounter/PF2EncounterModeOfPlayRuleSetBase.h" @@ -273,34 +276,25 @@ void FPF2ConditionsKnockoutAndDeath::Define() ); }); - It("does not apply the 'Trait_Condition_Unconscious' gameplay tag to the character", [=, this] + It("does not apply the 'PF2_Trait_Condition_Unconscious' gameplay tag to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); - Describe("when the character does not have any 'Trait_Condition_Wounded' tags", [=, this] + Describe("when the character does not have any 'PF2_Trait_Condition_Wounded' tags", [=, this] { - It("does not apply any 'Trait_Condition_Dying' gameplay tags to the character", [=, this] + It("does not apply any 'PF2_Trait_Condition_Dying' gameplay tags to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); It("does not kill the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_1' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_1' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -309,24 +303,18 @@ void FPF2ConditionsKnockoutAndDeath::Define() { return TArray{ *Wounded1GeSpec }; } ); - It("does not apply any 'Trait_Condition_Dying' gameplay tags to the character", [=, this] + It("does not apply any 'PF2_Trait_Condition_Dying' gameplay tags to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); It("does not kill the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_2' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_2' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -335,24 +323,18 @@ void FPF2ConditionsKnockoutAndDeath::Define() { return TArray{ *Wounded2GeSpec }; } ); - It("does not apply any 'Trait_Condition_Dying' gameplay tags to the character", [=, this] + It("does not apply any 'PF2_Trait_Condition_Dying' gameplay tags to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); It("does not kill the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_3' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_3' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -361,24 +343,18 @@ void FPF2ConditionsKnockoutAndDeath::Define() { return TArray{ *Wounded3GeSpec }; } ); - It("does not apply any 'Trait_Condition_Dying' gameplay tags to the character", [=, this] + It("does not apply any 'PF2_Trait_Condition_Dying' gameplay tags to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); It("does not kill the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_4' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_4' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -387,20 +363,14 @@ void FPF2ConditionsKnockoutAndDeath::Define() { return TArray{ *Wounded4GeSpec }; } ); - It("does not apply any 'Trait_Condition_Dying' gameplay tags to the character", [=, this] + It("does not apply any 'PF2_Trait_Condition_Dying' gameplay tags to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); It("does not kill the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); }); @@ -427,34 +397,25 @@ void FPF2ConditionsKnockoutAndDeath::Define() ); }); - It("does not apply the 'Trait_Condition_Unconscious' gameplay tag to the character", [=, this] + It("does not apply the 'PF2_Trait_Condition_Unconscious' gameplay tag to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); - Describe("when the character does not have any 'Trait_Condition_Wounded' tags", [=, this] + Describe("when the character does not have any 'PF2_Trait_Condition_Wounded' tags", [=, this] { - It("does not apply any 'Trait_Condition_Dying' gameplay tags to the character", [=, this] + It("does not apply any 'PF2_Trait_Condition_Dying' gameplay tags to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); It("does not kill the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_1' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_1' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -463,24 +424,18 @@ void FPF2ConditionsKnockoutAndDeath::Define() { return TArray{ *Wounded1GeSpec }; } ); - It("does not apply any 'Trait_Condition_Dying' gameplay tags to the character", [=, this] + It("does not apply any 'PF2_Trait_Condition_Dying' gameplay tags to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); It("does not kill the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_2' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_2' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -489,24 +444,18 @@ void FPF2ConditionsKnockoutAndDeath::Define() { return TArray{ *Wounded2GeSpec }; } ); - It("does not apply any 'Trait_Condition_Dying' gameplay tags to the character", [=, this] + It("does not apply any 'PF2_Trait_Condition_Dying' gameplay tags to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); It("does not kill the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_3' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_3' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -515,24 +464,18 @@ void FPF2ConditionsKnockoutAndDeath::Define() { return TArray{ *Wounded3GeSpec }; } ); - It("does not apply any 'Trait_Condition_Dying' gameplay tags to the character", [=, this] + It("does not apply any 'PF2_Trait_Condition_Dying' gameplay tags to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); It("does not kill the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_4' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_4' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -541,20 +484,14 @@ void FPF2ConditionsKnockoutAndDeath::Define() { return TArray{ *Wounded4GeSpec }; } ); - It("does not apply any 'Trait_Condition_Dying' gameplay tags to the character", [=, this] + It("does not apply any 'PF2_Trait_Condition_Dying' gameplay tags to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); It("does not kill the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); }); @@ -566,7 +503,7 @@ void FPF2ConditionsKnockoutAndDeath::Define() TagsAppliedToAbilityBeforeAttack, FGameplayTagContainer, [this], - {return FGameplayTagContainer(FGameplayTag::RequestGameplayTag("Trait.Effect.Nonlethal")); } + {return FGameplayTagContainer(Pf2TagTraitEffectNonlethal); } ); It("has no effect on the initiative position of the character", [=, this] @@ -582,20 +519,14 @@ void FPF2ConditionsKnockoutAndDeath::Define() ); }); - It("does not apply the 'Trait_Condition_Unconscious' gameplay tag to the character", [=, this] + It("does not apply the 'PF2_Trait_Condition_Unconscious' gameplay tag to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); - It("does not apply any 'Trait_Condition_Dying' gameplay tag to the character", [=, this] + It("does not apply any 'PF2_Trait_Condition_Dying' gameplay tag to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); }); }); @@ -651,27 +582,20 @@ void FPF2ConditionsKnockoutAndDeath::Define() ); }); - It("applies the 'Trait_Condition_Unconscious' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Unconscious' gameplay tag to the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); - Describe("when the character does not have any 'Trait_Condition_Wounded' tags", [=, this] + Describe("when the character does not have any 'PF2_Trait_Condition_Wounded' tags", [=, this] { - It("applies the 'Trait_Condition_Dying_1' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Dying_1' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")), - 1 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionDying, 1); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_1' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_1' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -680,17 +604,13 @@ void FPF2ConditionsKnockoutAndDeath::Define() { return TArray{ *Wounded1GeSpec }; } ); - It("applies the 'Trait_Condition_Dying_2' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Dying_2' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")), - 2 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionDying, 2); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_2' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_2' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -699,17 +619,13 @@ void FPF2ConditionsKnockoutAndDeath::Define() { return TArray{ *Wounded2GeSpec }; } ); - It("applies the 'Trait_Condition_Dying_3' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Dying_3' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")), - 3 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionDying, 3); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_3' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_3' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -720,14 +636,11 @@ void FPF2ConditionsKnockoutAndDeath::Define() It("kills the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_4' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_4' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -738,10 +651,7 @@ void FPF2ConditionsKnockoutAndDeath::Define() It("kills the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); }); @@ -768,27 +678,20 @@ void FPF2ConditionsKnockoutAndDeath::Define() ); }); - It("applies the 'Trait_Condition_Unconscious' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Unconscious' gameplay tag to the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); - Describe("when the character does not have any 'Trait_Condition_Wounded' tags", [=, this] + Describe("when the character does not have any 'PF2_Trait_Condition_Wounded' tags", [=, this] { - It("applies the 'Trait_Condition_Dying_2' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Dying_2' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")), - 2 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionDying, 2); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_1' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_1' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -797,17 +700,13 @@ void FPF2ConditionsKnockoutAndDeath::Define() { return TArray{ *Wounded1GeSpec }; } ); - It("applies the 'Trait_Condition_Dying_3' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Dying_3' gameplay tag to the character", [=, this] { - TestCharacterHasConditionLevel( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")), - 3 - ); + TestCharacterHasConditionLevel(this->TestCharacter, Pf2TagTraitConditionDying, 3); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_2' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_2' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -818,14 +717,11 @@ void FPF2ConditionsKnockoutAndDeath::Define() It("kills the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_3' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_3' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -836,14 +732,11 @@ void FPF2ConditionsKnockoutAndDeath::Define() It("kills the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); - Describe("when the character has the 'Trait_Condition_Wounded_4' tag", [=, this] + Describe("when the character has the 'PF2_Trait_Condition_Wounded_4' tag", [=, this] { REDEFINE_LET( EffectSpecsAppliedToTargetBeforeAttack, @@ -854,10 +747,7 @@ void FPF2ConditionsKnockoutAndDeath::Define() It("kills the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dead")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionDead); }); }); }); @@ -869,7 +759,7 @@ void FPF2ConditionsKnockoutAndDeath::Define() TagsAppliedToAbilityBeforeAttack, FGameplayTagContainer, [this], - {return FGameplayTagContainer(FGameplayTag::RequestGameplayTag("Trait.Effect.Nonlethal")); } + {return FGameplayTagContainer(Pf2TagTraitEffectNonlethal); } ); It("moves the initiative position of the character directly before the turn in which they were reduced to 0 HP", [=, this] @@ -885,20 +775,14 @@ void FPF2ConditionsKnockoutAndDeath::Define() ); }); - It("applies the 'Trait_Condition_Unconscious' gameplay tag to the character", [=, this] + It("applies the 'PF2_Trait_Condition_Unconscious' gameplay tag to the character", [=, this] { - TestCharacterHasCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Unconscious")) - ); + TestCharacterHasCondition(this->TestCharacter, Pf2TagTraitConditionUnconscious); }); - It("does not apply any 'Trait_Condition_Dying' gameplay tag to the character", [=, this] + It("does not apply any 'PF2_Trait_Condition_Dying' gameplay tag to the character", [=, this] { - TestCharacterNotHaveCondition( - this->TestCharacter, - FGameplayTag::RequestGameplayTag(TEXT("Trait.Condition.Dying")) - ); + TestCharacterNotHaveCondition(this->TestCharacter, Pf2TagTraitConditionDying); }); }); }); @@ -926,7 +810,7 @@ void FPF2ConditionsKnockoutAndDeath::ApplyDamageToTestCharacter( Attacker, AttackAbility, { - {"GameplayEffect.Parameter.Damage", DamageAmount}, + {"PF2.GameplayEffect.Parameter.Damage", DamageAmount}, } ); diff --git a/Source/OpenPF2Tests/Private/Tests/PF2KeyAbilityBoost.spec.cpp b/Source/OpenPF2Tests/Private/Tests/PF2KeyAbilityBoost.spec.cpp index 16437c1db..04fefa92f 100644 --- a/Source/OpenPF2Tests/Private/Tests/PF2KeyAbilityBoost.spec.cpp +++ b/Source/OpenPF2Tests/Private/Tests/PF2KeyAbilityBoost.spec.cpp @@ -57,7 +57,7 @@ void FKeyAbilityBoostSpec::Define() const UPF2CharacterAttributeSet* AttributeSet = this->TestPawnAsc->GetSet(); FAttributeCapture Attributes = CaptureAbilityAttributes(AttributeSet); FGameplayAttributeData* KeyAbilityAttribute = Attributes[KeyAbilityAttributeName]; - const FString TagName = FString::Format(TEXT("KeyAbility.{0}"), {KeyAbilityName}); + const FString TagName = TEXT("PF2.KeyAbility.") + KeyAbilityName; const TSubclassOf& EffectBP = this->LoadGE(); // Start all attributes from a known value. diff --git a/Source/OpenPF2Tests/Private/Tests/PF2SpecBase.cpp b/Source/OpenPF2Tests/Private/Tests/PF2SpecBase.cpp index bb14beb7a..46ac9253c 100644 --- a/Source/OpenPF2Tests/Private/Tests/PF2SpecBase.cpp +++ b/Source/OpenPF2Tests/Private/Tests/PF2SpecBase.cpp @@ -192,19 +192,15 @@ FActiveGameplayEffectHandle FPF2SpecBase::ApplyGameplayEffectToTestCharacter( FGameplayEffectSpecHandle FPF2SpecBase::BuildEffectSpec( const TSubclassOf& EffectClass, - const TMap& SetByCallerMagnitudesMap) const + const TMap& SetByCallerMagnitudesMap) const { - FGameplayEffectSpecHandle EffectSpec; - - EffectSpec = this->TestCharacterAsc->MakeOutgoingSpec(EffectClass, 1.0, FGameplayEffectContextHandle()); + FGameplayEffectSpecHandle EffectSpec = + this->TestCharacterAsc->MakeOutgoingSpec(EffectClass, 1.0, FGameplayEffectContextHandle()); for (const auto& [ParameterTag, ParameterValue] : SetByCallerMagnitudesMap) { - EffectSpec = UAbilitySystemBlueprintLibrary::AssignTagSetByCallerMagnitude( - EffectSpec, - FGameplayTag::RequestGameplayTag(ParameterTag), - ParameterValue - ); + EffectSpec = + UAbilitySystemBlueprintLibrary::AssignTagSetByCallerMagnitude(EffectSpec, ParameterTag, ParameterValue); } return EffectSpec; diff --git a/Source/OpenPF2Tests/Public/Tests/PF2SpecBase.h b/Source/OpenPF2Tests/Public/Tests/PF2SpecBase.h index 2dba786e6..95504d206 100644 --- a/Source/OpenPF2Tests/Public/Tests/PF2SpecBase.h +++ b/Source/OpenPF2Tests/Public/Tests/PF2SpecBase.h @@ -341,14 +341,14 @@ class OPENPF2TESTS_API FPF2SpecBase : public FEnhancedAutomationSpecBase * @param EffectClass * The type of GE for which a spec is desired. * @param SetByCallerMagnitudesMap - * An optional map of set-by-caller-magnitudes/parameters to parameters, to pass into the GE. + * An optional map of set-by-caller-magnitudes/parameters to parameter values, to pass into the GE. * * @return * The server-side handle of the GE specification. */ FGameplayEffectSpecHandle BuildEffectSpec( const TSubclassOf& EffectClass, - const TMap& SetByCallerMagnitudesMap = {}) const; + const TMap& SetByCallerMagnitudesMap = {}) const; /** * Builds a Gameplay Effect (GE) specification for the given GE type, instigated by the given ability and character. @@ -516,7 +516,7 @@ class OPENPF2TESTS_API FPF2SpecBase : public FEnhancedAutomationSpecBase * @param Character * The character to test. * @param ConditionTag - * The parent condition level tag (e.g., "Trait.Condition.Dying", "Trait.Condition.Wounded", etc.). + * The parent condition level tag (e.g., "PF2.Trait.Condition.Dying", "PF2.Trait.Condition.Wounded", etc.). */ void TestCharacterHasCondition( const TScriptInterface& Character, @@ -534,7 +534,7 @@ class OPENPF2TESTS_API FPF2SpecBase : public FEnhancedAutomationSpecBase * @param AbilitySystemComponent * The ASC to test. * @param ConditionTag - * The parent condition level tag (e.g., "Trait.Condition.Dying", "Trait.Condition.Wounded", etc.). + * The parent condition level tag (e.g., "PF2.Trait.Condition.Dying", "PF2.Trait.Condition.Wounded", etc.). */ void TestAscHasCondition( const FString& WhatAsc, @@ -550,7 +550,7 @@ class OPENPF2TESTS_API FPF2SpecBase : public FEnhancedAutomationSpecBase * @param Character * The character to test. * @param ConditionTag - * The parent condition level tag (e.g., "Trait.Condition.Dying", "Trait.Condition.Wounded", etc.). + * The parent condition level tag (e.g., "PF2.Trait.Condition.Dying", "PF2.Trait.Condition.Wounded", etc.). */ void TestCharacterNotHaveCondition( const TScriptInterface& Character, @@ -567,7 +567,7 @@ class OPENPF2TESTS_API FPF2SpecBase : public FEnhancedAutomationSpecBase * @param AbilitySystemComponent * The ASC to test. * @param ConditionTag - * The parent condition level tag (e.g., "Trait.Condition.Dying", "Trait.Condition.Wounded", etc.). + * The parent condition level tag (e.g., "PF2.Trait.Condition.Dying", "PF2.Trait.Condition.Wounded", etc.). */ void TestAscNotHaveCondition( const FString& WhatAsc, @@ -580,7 +580,7 @@ class OPENPF2TESTS_API FPF2SpecBase : public FEnhancedAutomationSpecBase * @param Character * The character to test. * @param ParentTag - * The parent condition level tag (e.g., "Trait.Condition.Dying", "Trait.Condition.Wounded", etc.). + * The parent condition level tag (e.g., "PF2.Trait.Condition.Dying", "PF2.Trait.Condition.Wounded", etc.). * @param ExpectedLevel * The condition level expected for the tag. */ @@ -597,7 +597,7 @@ class OPENPF2TESTS_API FPF2SpecBase : public FEnhancedAutomationSpecBase * @param AbilitySystemComponent * The ASC to test. * @param ParentTag - * The parent condition level tag (e.g., "Trait.Condition.Dying", "Trait.Condition.Wounded", etc.). + * The parent condition level tag (e.g., "PF2.Trait.Condition.Dying", "PF2.Trait.Condition.Wounded", etc.). * @param ExpectedLevel * The condition level expected for the tag. */ From 77ab2c9801f6a8935ad6171b8945f17b7fb7661b Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Sun, 14 Jul 2024 20:04:22 -0400 Subject: [PATCH 04/16] [#65] Fix Text Wrap --- .../Public/Utilities/PF2GameplayAbilityUtilities.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Source/OpenPF2GameFramework/Public/Utilities/PF2GameplayAbilityUtilities.h b/Source/OpenPF2GameFramework/Public/Utilities/PF2GameplayAbilityUtilities.h index c36f9b534..0ab754d9c 100644 --- a/Source/OpenPF2GameFramework/Public/Utilities/PF2GameplayAbilityUtilities.h +++ b/Source/OpenPF2GameFramework/Public/Utilities/PF2GameplayAbilityUtilities.h @@ -103,7 +103,9 @@ namespace PF2GameplayAbilityUtilities * @return * The capture definition for the specified attribute. */ - OPENPF2GAMEFRAMEWORK_API FGameplayEffectAttributeCaptureDefinition BuildSourceCaptureFor(const FGameplayAttribute& Attribute); + OPENPF2GAMEFRAMEWORK_API FGameplayEffectAttributeCaptureDefinition BuildSourceCaptureFor( + const FGameplayAttribute& Attribute + ); /** * Gets the name of the default weight group into which the given GE should be placed. @@ -150,7 +152,9 @@ namespace PF2GameplayAbilityUtilities * @return * A pointer to the Ability System Component for the actor described by the given info. */ - OPENPF2GAMEFRAMEWORK_API UAbilitySystemComponent* GetAbilitySystemComponent(const FGameplayAbilityActorInfo* ActorInfo); + OPENPF2GAMEFRAMEWORK_API UAbilitySystemComponent* GetAbilitySystemComponent( + const FGameplayAbilityActorInfo* ActorInfo + ); /** * Gets the OpenPF2 character attribute set of the given actor. @@ -164,7 +168,8 @@ namespace PF2GameplayAbilityUtilities * A pointer to the OpenPF2 attribute set. */ OPENPF2GAMEFRAMEWORK_API const UPF2CharacterAttributeSet* GetCharacterAttributeSet( - const FGameplayAbilityActorInfo* ActorInfo); + const FGameplayAbilityActorInfo* ActorInfo + ); /** * Determines which OpenPF2 character an activated GE has targeted. From a497c2566827a228099b4bab14c6aaf480ba081a Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Sun, 14 Jul 2024 20:12:20 -0400 Subject: [PATCH 05/16] [#60] Simplify Logic for Convertering Tag Name to String --- .../Private/CharacterStats/PF2TemlCalculation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp index 5df134fa9..526d12220 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp @@ -39,7 +39,7 @@ FPF2TemlCalculation::FPF2TemlCalculation(const FGameplayTag TagPrefix, // option. if (CharacterTags->HasTag(TagPrefix)) { - const FString TagPrefixString = TagPrefix.GetTagName().GetPlainNameString(); + const FString TagPrefixString = TagPrefix.ToString(); // "When attempting a check that involves something you have some training in, you will also add your // proficiency bonus. This bonus depends on your proficiency rank: untrained, trained, expert, master, or From ab3b9caf343b0ae53b24d99c86d5c3bd2345a7c5 Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Sun, 14 Jul 2024 20:14:50 -0400 Subject: [PATCH 06/16] Fix Missing Import --- .../Private/Libraries/PF2AbilitySystemLibrary.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Source/OpenPF2GameFramework/Private/Libraries/PF2AbilitySystemLibrary.cpp b/Source/OpenPF2GameFramework/Private/Libraries/PF2AbilitySystemLibrary.cpp index e0f393937..d524de426 100644 --- a/Source/OpenPF2GameFramework/Private/Libraries/PF2AbilitySystemLibrary.cpp +++ b/Source/OpenPF2GameFramework/Private/Libraries/PF2AbilitySystemLibrary.cpp @@ -16,6 +16,8 @@ #include "Items/Weapons/PF2WeaponInterface.h" +#include "Utilities/PF2InterfaceUtilities.h" + bool UPF2AbilitySystemLibrary::WasEventTriggeredByAbility(const FGameplayEventData& EventData) { const FGameplayEffectContextHandle ContextHandle = EventData.ContextHandle; From 1f9cf60d873b7a692b771ccc0e524d288d6074f5 Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Sun, 14 Jul 2024 21:11:01 -0400 Subject: [PATCH 07/16] [#60] Switch to Explicit Trigger Tag for Ability Boost GAs --- .../AbilityBoosts/PF2AbilityBoostBase.cpp | 3 ++- .../GameplayTags/Encounters/AbilityTriggers.cpp | 15 +++++++++++++++ .../Private/PF2CharacterBase.cpp | 3 ++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/AbilityBoosts/PF2AbilityBoostBase.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/AbilityBoosts/PF2AbilityBoostBase.cpp index fd4c4c51f..ebe93c506 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/AbilityBoosts/PF2AbilityBoostBase.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/AbilityBoosts/PF2AbilityBoostBase.cpp @@ -10,6 +10,7 @@ #include "CharacterStats/AbilityBoosts/PF2AbilityBoostRuleOptionValidator.h" #include "CharacterStats/AbilityBoosts/PF2GameplayAbilityTargetData_BoostAbility.h" +#include "GameplayTags/Encounters/AbilityTriggers.h" #include "GameplayTags/GameplayAbilities/AbilityTypes.h" UPF2AbilityBoostBase::UPF2AbilityBoostBase() @@ -17,7 +18,7 @@ UPF2AbilityBoostBase::UPF2AbilityBoostBase() FAbilityTriggerData TriggerData; TriggerData.TriggerSource = EGameplayAbilityTriggerSource::GameplayEvent; - TriggerData.TriggerTag = Pf2TagGameplayAbilityTypeAbilityBoost; + TriggerData.TriggerTag = Pf2TagTriggerTagCategoryAnytimeAbilityBoost; this->AbilityTriggers.Add(TriggerData); diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/AbilityTriggers.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/AbilityTriggers.cpp index 555e98a1e..c8e86f263 100644 --- a/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/AbilityTriggers.cpp +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Encounters/AbilityTriggers.cpp @@ -8,6 +8,21 @@ // The UE editor requires these tags to be under a root tag of `TriggerTagCategory` in order for them to be selectable // in the UI. +// ===================================================================================================================== +// Tags that trigger Gameplay Abilities that can be used at any time. +// ===================================================================================================================== +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTriggerTagCategoryAnytime, + "TriggerTagCategory.PF2.Anytime", + "Tags that trigger Gameplay Abilities that can be used at any time." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagTriggerTagCategoryAnytimeAbilityBoost, + "TriggerTagCategory.PF2.Anytime.AbilityBoost", + "Tag to trigger ." +) + // ===================================================================================================================== // Tags that trigger Encounter-related Gameplay Abilities. // ===================================================================================================================== diff --git a/Source/OpenPF2GameFramework/Private/PF2CharacterBase.cpp b/Source/OpenPF2GameFramework/Private/PF2CharacterBase.cpp index ddc4ba9b9..09aa72fbc 100644 --- a/Source/OpenPF2GameFramework/Private/PF2CharacterBase.cpp +++ b/Source/OpenPF2GameFramework/Private/PF2CharacterBase.cpp @@ -24,6 +24,7 @@ #include "Commands/PF2CommandQueueComponent.h" +#include "GameplayTags/Encounters/AbilityTriggers.h" #include "GameplayTags/GameplayAbilities/AbilityTypes.h" #include "Utilities/PF2InterfaceUtilities.h" @@ -468,7 +469,7 @@ void APF2CharacterBase::ActivateAbilityBoost( Asc->TriggerAbilityFromGameplayEvent( BoostSpec->Handle, Asc->AbilityActorInfo.Get(), - Pf2TagGameplayAbilityTypeAbilityBoost, + Pf2TagTriggerTagCategoryAnytimeAbilityBoost, &BoostEventInfo, *Asc ); From d526d91fbb80e153a74d01c9982af42df2c9feb9 Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Sun, 14 Jul 2024 21:36:20 -0400 Subject: [PATCH 08/16] [#60] Re-save All Blueprints to Pickup Tag Changes --- .../GA_BoostAbility_ConstitutionOrCharisma_And_Free_x1.uasset | 4 ++-- ...BoostAbility_ConstitutionOrIntelligence_And_Free_x1.uasset | 4 ++-- .../GA_BoostAbility_ConstitutionOrWisdom_And_Free_x1.uasset | 4 ++-- .../GA_BoostAbility_DexterityOrCharisma_And_Free_x1.uasset | 4 ++-- ...GA_BoostAbility_DexterityOrConstitution_And_Free_x1.uasset | 4 ++-- ...GA_BoostAbility_DexterityOrIntelligence_And_Free_x1.uasset | 4 ++-- .../GA_BoostAbility_DexterityOrWisdom_And_Free_x1.uasset | 4 ++-- .../AbilityBoosts/GA_BoostAbility_Free_x1.uasset | 4 ++-- .../AbilityBoosts/GA_BoostAbility_Free_x2.uasset | 4 ++-- .../AbilityBoosts/GA_BoostAbility_Free_x4.uasset | 4 ++-- .../GA_BoostAbility_IntelligenceOrCharisma_And_Free_x1.uasset | 4 ++-- .../GA_BoostAbility_IntelligenceOrWisdom_And_Free_x1.uasset | 4 ++-- .../GA_BoostAbility_StrengthOrCharisma_And_Free_x1.uasset | 4 ++-- .../GA_BoostAbility_StrengthOrConstitution_And_Free_x1.uasset | 4 ++-- .../GA_BoostAbility_StrengthOrDexterity_And_Free_x1.uasset | 4 ++-- .../GA_BoostAbility_StrengthOrIntelligence_And_Free_x1.uasset | 4 ++-- .../GA_BoostAbility_StrengthOrWisdom_And_Free_x1.uasset | 4 ++-- .../GA_BoostAbility_WisdomOrCharisma_And_Free_x1.uasset | 4 ++-- .../CharacterStats/AbilityBoosts/GE_BoostAbCharisma.uasset | 4 ++-- .../AbilityBoosts/GE_BoostAbConstitution.uasset | 4 ++-- .../CharacterStats/AbilityBoosts/GE_BoostAbDexterity.uasset | 4 ++-- .../AbilityBoosts/GE_BoostAbIntelligence.uasset | 4 ++-- .../CharacterStats/AbilityBoosts/GE_BoostAbStrength.uasset | 4 ++-- .../Core/CharacterStats/AbilityBoosts/GE_BoostAbWisdom.uasset | 4 ++-- .../CharacterStats/AbilityBoosts/MMC_AbBoostCharisma.uasset | 4 ++-- .../AbilityBoosts/MMC_AbBoostConstitution.uasset | 4 ++-- .../CharacterStats/AbilityBoosts/MMC_AbBoostDexterity.uasset | 4 ++-- .../AbilityBoosts/MMC_AbBoostIntelligence.uasset | 4 ++-- .../CharacterStats/AbilityBoosts/MMC_AbBoostStrength.uasset | 4 ++-- .../CharacterStats/AbilityBoosts/MMC_AbBoostWisdom.uasset | 4 ++-- .../AbilityModifiers/GE_CalcAbilityModifiers.uasset | 4 ++-- .../CharacterStats/AbilityModifiers/MMC_AbModCharisma.uasset | 4 ++-- .../AbilityModifiers/MMC_AbModConstitution.uasset | 4 ++-- .../CharacterStats/AbilityModifiers/MMC_AbModDexterity.uasset | 4 ++-- .../AbilityModifiers/MMC_AbModIntelligence.uasset | 4 ++-- .../CharacterStats/AbilityModifiers/MMC_AbModStrength.uasset | 4 ++-- .../CharacterStats/AbilityModifiers/MMC_AbModWisdom.uasset | 4 ++-- .../CharacterStats/Ancestries/GE_CalcAncestryFeatLimit.uasset | 4 ++-- .../Core/CharacterStats/GE_ApplyBaseCharacterStats.uasset | 4 ++-- .../OpenPF2/Core/CharacterStats/GE_ApplyDynamicTags.uasset | 4 ++-- Content/OpenPF2/Core/CharacterStats/GE_CalcArmorClass.uasset | 4 ++-- .../Core/CharacterStats/GE_CalcClassDifficultyClass.uasset | 4 ++-- .../OpenPF2/Core/CharacterStats/GE_CalcKeyAbilityBoost.uasset | 4 ++-- .../Core/CharacterStats/GE_CalcPerceptionModifier.uasset | 4 ++-- .../Core/CharacterStats/GE_CalcSavingThrowModifiers.uasset | 4 ++-- .../OpenPF2/Core/CharacterStats/GE_CalcSpellAttackRoll.uasset | 4 ++-- .../Core/CharacterStats/GE_CalcSpellDifficultyClass.uasset | 4 ++-- .../Core/CharacterStats/GE_GrantCharacterBaseAbilities.uasset | 4 ++-- Content/OpenPF2/Core/CharacterStats/MMC_PerceptionMod.uasset | 4 ++-- .../Core/CharacterStats/MMC_SavingThrowMod_Fortitude.uasset | 4 ++-- .../Core/CharacterStats/MMC_SavingThrowMod_Reflex.uasset | 4 ++-- .../Core/CharacterStats/MMC_SavingThrowMod_Will.uasset | 4 ++-- .../Core/CharacterStats/Skills/GE_CalcSkillModifiers.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModAcrobatics.uasset | 4 ++-- .../OpenPF2/Core/CharacterStats/Skills/MMC_SkModArcana.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModAthletics.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModCrafting.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModDeception.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModDiplomacy.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModIntimidation.uasset | 4 ++-- .../OpenPF2/Core/CharacterStats/Skills/MMC_SkModLore1.uasset | 4 ++-- .../OpenPF2/Core/CharacterStats/Skills/MMC_SkModLore2.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModMedicine.uasset | 4 ++-- .../OpenPF2/Core/CharacterStats/Skills/MMC_SkModNature.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModOccultism.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModPerformance.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModReligion.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModSociety.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModStealth.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModSurvival.uasset | 4 ++-- .../Core/CharacterStats/Skills/MMC_SkModThievery.uasset | 4 ++-- .../Conditionals/AboutStats/CAR_HaveNonZeroHitPoints.uasset | 4 ++-- .../Core/Conditionals/AboutStats/CAR_HaveZeroHitPoints.uasset | 4 ++-- .../CAR_IncomingAttack_IsAnySuccess.uasset | 4 ++-- .../CAR_IncomingAttack_IsCriticalSuccess.uasset | 4 ++-- .../DuringIncomingAttack/CAR_IncomingAttack_IsLethal.uasset | 4 ++-- .../CAR_IncomingAttack_IsNonLethal.uasset | 4 ++-- .../CAR_IncomingAttack_IsNotCriticalSuccess.uasset | 4 ++-- Content/OpenPF2/Core/GA_ConditionCheck.uasset | 4 ++-- .../Core/GameplayEffects/Anytime/GE_Condition_Dead.uasset | 4 ++-- .../GameplayEffects/Anytime/GE_Condition_Dying_Level1.uasset | 4 ++-- .../GameplayEffects/Anytime/GE_Condition_Dying_Level2.uasset | 4 ++-- .../GameplayEffects/Anytime/GE_Condition_Dying_Level3.uasset | 4 ++-- .../GameplayEffects/Anytime/GE_Condition_Dying_Level4.uasset | 4 ++-- .../GameplayEffects/Anytime/GE_Condition_Unconscious.uasset | 4 ++-- .../Anytime/GE_Condition_Wounded_Level1.uasset | 4 ++-- .../Anytime/GE_Condition_Wounded_Level2.uasset | 4 ++-- .../Anytime/GE_Condition_Wounded_Level3.uasset | 4 ++-- .../Anytime/GE_Condition_Wounded_Level4.uasset | 4 ++-- Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Heal.uasset | 4 ++-- .../Anytime/GE_IncrementDyingFromWounded.uasset | 4 ++-- .../Core/GameplayEffects/Anytime/GE_IncrementWounded.uasset | 4 ++-- .../GE_ApplyIncomingDamageFromSource.uasset | 4 ++-- .../DuringIncomingAttack/GE_BecomeKnockedOut.uasset | 4 ++-- .../GE_BecomeKnockedOut_OnIncomingCriticalSuccess.uasset | 4 ++-- .../GE_BecomeKnockedOut_OnIncomingNonCriticalSuccess.uasset | 4 ++-- .../GE_IncrementDying_OnIncomingCriticalSuccess.uasset | 4 ++-- .../GE_IncrementDying_OnIncomingNonCriticalSuccess.uasset | 4 ++-- .../DuringIncomingAttack/GE_ReactToDamageWhileDying.uasset | 4 ++-- .../DuringOutgoingAttack/GE_RollOutgoingWeaponDamage.uasset | 4 ++-- .../Core/GameplayEffects/WhenDying/GE_RecoverFromDying.uasset | 4 ++-- .../GameplayEffects/WhenDying/GE_WakeUpFromKnockOut.uasset | 4 ++-- .../Encounter/GA_TurnStart_DyingRecoveryCheck.uasset | 4 ++-- Content/OpenPF2/Developers/GuyEP/BP_LuckBlade.uasset | 4 ++-- Content/OpenPF2/Developers/GuyEP/BP_TestAIController.uasset | 4 ++-- .../Developers/GuyEP/BTDecorator_TestHasCommand.uasset | 4 ++-- .../OpenPF2/Developers/GuyEP/BTTask_TestClearCommand.uasset | 4 ++-- .../OpenPF2/Developers/GuyEP/BTTask_TestExecuteCommand.uasset | 4 ++-- .../OpenPF2/Developers/GuyEP/GE_BonusToPerceptionRolls.uasset | 4 ++-- Content/OpenPF2/Developers/GuyEP/TestMeleeWeapon.uasset | 4 ++-- .../GuyEP/TestMeleeWeapon_WithAdditionalSimpleDamage.uasset | 4 ++-- Content/OpenPF2/Developers/GuyEP/TestRangedWeapon.uasset | 4 ++-- .../Optional/Abilities/Attacks/AN_GameplayEvent.uasset | 4 ++-- .../Optional/Abilities/Attacks/BPML_AttackAbility.uasset | 4 ++-- .../Optional/Abilities/Attacks/BPML_MeleeAttackAbility.uasset | 4 ++-- .../Abilities/Attacks/BPML_RangedAttackAbility.uasset | 4 ++-- .../Optional/Abilities/Attacks/GA_AttackAbilityBase.uasset | 4 ++-- .../Abilities/Attacks/GA_MeleeAttackAbilityBase.uasset | 4 ++-- .../OpenPF2/Optional/Abilities/Attacks/GA_MeleeStrike.uasset | 4 ++-- .../Abilities/Attacks/GA_RangedAttackAbilityBase.uasset | 4 ++-- .../Optional/Abilities/Attacks/GCN_InflictDamage.uasset | 4 ++-- .../Optional/Abilities/Attacks/WBP_DamageCallout.uasset | 4 ++-- .../Optional/Abilities/Attacks/WC_DamageCallout.uasset | 4 ++-- Content/OpenPF2/Optional/Abilities/BPML_Ability.uasset | 4 ++-- Content/OpenPF2/Optional/Abilities/Movement/GA_Stride.uasset | 4 ++-- Content/OpenPF2/Optional/BTTask_PrintMessage.uasset | 4 ++-- .../Ancestries/Human/GE_Ancestry_Human_Base.uasset | 4 ++-- .../Ancestries/Human/GE_Ancestry_Human_HalfElf.uasset | 4 ++-- .../Ancestries/Human/GE_Ancestry_Human_HalfOrc.uasset | 4 ++-- .../Ancestries/Human/GE_Ancestry_Human_Versatile.uasset | 4 ++-- .../Ancestries/Human/GE_ApplyHumanAncestryBaseStats.uasset | 4 ++-- Content/OpenPF2/Optional/Characters/BPFL_Character.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyAlignmentChaoticDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyAlignmentEvilDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyAlignmentGoodDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyAlignmentLawfulDamage.uasset | 4 ++-- .../GameplayEffects/Anytime/Damage/GE_ApplyBleedDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyEnergyAcidDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyEnergyColdDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyEnergyElectricityDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyEnergyFireDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyEnergyForceDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyEnergyNegativeDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyEnergyPositiveDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyEnergySonicDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyMentalDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyPhysicalBludgeoningDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyPhysicalPiercingDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyPhysicalSlashingDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyPoisonDamage.uasset | 4 ++-- .../Anytime/Damage/GE_ApplyPrecisionDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistAlignmentChaoticDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistAlignmentEvilDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistAlignmentGoodDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistAlignmentLawfulDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistBleedDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistEnergyAcidDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistEnergyColdDamage.uasset | 4 ++-- .../Resistance/GE_ResistEnergyElectricityDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistEnergyFireDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistEnergyForceDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistEnergyNegativeDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistEnergyPositiveDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistEnergySonicDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistMentalDamage.uasset | 4 ++-- .../Resistance/GE_ResistPhysicalBludgeoningDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistPhysicalPiercingDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistPhysicalSlashingDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistPoisonDamage.uasset | 4 ++-- .../Anytime/Resistance/GE_ResistPrecisionDamage.uasset | 4 ++-- .../Optional/ModesOfPlay/Downtime/BP_MoPRS_Downtime.uasset | 4 ++-- .../Optional/ModesOfPlay/Encounter/BP_MoPRS_Encounter.uasset | 4 ++-- .../BTDecorator_ArePlayableCharactersAvailable.uasset | 4 ++-- .../Encounter/BTDecorator_CanActiveCharacterEndTurn.uasset | 4 ++-- .../BTDecorator_DoesActiveCharacterHaveActionPoints.uasset | 4 ++-- .../BTDecorator_DoesAnyCharacterHaveQueuedActions.uasset | 4 ++-- .../Encounter/BTDecorator_HaveActiveCharacter.uasset | 4 ++-- .../Encounter/BTDecorator_IsActiveCharacterInEncounter.uasset | 4 ++-- .../Encounter/BTTask_PerformNextQueuedAction.uasset | 4 ++-- .../Encounter/BTTask_StartTurnForNextCharacter.uasset | 4 ++-- .../Optional/ModesOfPlay/Encounter/GA_EnterEncounter.uasset | 4 ++-- .../OpenPF2/Optional/ModesOfPlay/Encounter/GA_TakeTurn.uasset | 4 ++-- .../Optional/ModesOfPlay/Encounter/GE_Cost_FreeAction.uasset | 4 ++-- .../Encounter/GE_Cost_MultipleAttackPenalty.uasset | 4 ++-- .../Optional/ModesOfPlay/Encounter/GE_Cost_Reaction.uasset | 4 ++-- .../ModesOfPlay/Encounter/GE_Cost_SingleAction.uasset | 4 ++-- .../ModesOfPlay/Encounter/GE_Cost_SingleAction_Attack.uasset | 4 ++-- .../ModesOfPlay/Encounter/GE_Cost_ThreeAction_Activity.uasset | 4 ++-- .../ModesOfPlay/Encounter/GE_Cost_ThreeAction_Attack.uasset | 4 ++-- .../ModesOfPlay/Encounter/GE_Cost_TwoAction_Activity.uasset | 4 ++-- .../ModesOfPlay/Encounter/GE_Cost_TwoAction_Attack.uasset | 4 ++-- .../ModesOfPlay/Encounter/GE_EncounterTurnActive.uasset | 4 ++-- .../ModesOfPlay/Encounter/GE_EncounterTurnCooldown.uasset | 4 ++-- .../ModesOfPlay/Encounter/GE_InitializeEncounterPoints.uasset | 4 ++-- .../Encounter/GE_ResetEncounterPoints_Instant.uasset | 4 ++-- .../Encounter/GE_ResetEncounterPoints_Periodic.uasset | 4 ++-- .../Encounter/MovementGrid/BPI_MovementGrid.uasset | 4 ++-- .../Encounter/MovementGrid/BPI_MovementGridCell.uasset | 4 ++-- .../Encounter/MovementGrid/BP_SquareMovementGrid.uasset | 4 ++-- .../Encounter/MovementGrid/BP_SquareMovementGridCell.uasset | 4 ++-- .../ModesOfPlay/Exploration/BP_MoPRS_Exploration.uasset | 4 ++-- .../Optional/Placeables/BP_PeriodicDamageVolume.uasset | 4 ++-- .../Optional/UI/AbilityBoosts/WBP_BoostSelectDialog.uasset | 4 ++-- .../Optional/UI/AbilityBoosts/WBP_BoostSelectRow.uasset | 4 ++-- Content/OpenPF2/Optional/UI/WBP_DialogBoxBase.uasset | 4 ++-- 205 files changed, 410 insertions(+), 410 deletions(-) diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_ConstitutionOrCharisma_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_ConstitutionOrCharisma_And_Free_x1.uasset index 650c1ac78..427bcba74 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_ConstitutionOrCharisma_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_ConstitutionOrCharisma_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6cc520dfda26955f1505166c477d4dffe53509b3292c9d2d89b5af2a967a8189 -size 15979 +oid sha256:1fe412f3a279e6af38bd396daeb978b3cf9f8d089b9fb3c53e935ba1f8a213d6 +size 16012 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_ConstitutionOrIntelligence_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_ConstitutionOrIntelligence_And_Free_x1.uasset index 5467b936b..24e17cb0e 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_ConstitutionOrIntelligence_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_ConstitutionOrIntelligence_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f1036c4222d727c05c590f3be2a4ed52388566855b3679882c9600713de8f30e -size 16039 +oid sha256:28ac17110d112ec395b5c5cfc70a4628daac157e568674c5d62a19e7f79259f3 +size 16072 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_ConstitutionOrWisdom_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_ConstitutionOrWisdom_And_Free_x1.uasset index 921174a50..8748476dd 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_ConstitutionOrWisdom_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_ConstitutionOrWisdom_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9ce23033fb3cc27ce25eba143f6dfc9df2733fd733e19663ba38aa04348520bd -size 15949 +oid sha256:28e32170840aff807e955ca56e1df02ec81a567c5d4e5bf7511d7e596a73c527 +size 15982 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrCharisma_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrCharisma_And_Free_x1.uasset index d6e19ac2f..e16001145 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrCharisma_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrCharisma_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ad3e039fb143108d245411a6b3a341385051304f66b24757dd8fc2cbef135a7 -size 15934 +oid sha256:edb4b143eed702b711404f86c841c1b5dd5542a7eb22d18f573a7feec05991f7 +size 15967 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrConstitution_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrConstitution_And_Free_x1.uasset index d17ee9e60..e1eb7c627 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrConstitution_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrConstitution_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8cfc8d3fdad4fa175e4a8fd7c449fc7b6cb57b229b0fa6e268798e612e6e486c -size 15994 +oid sha256:3ea0a3fce0a0d011ce4947766c52b5edb55d8734fadf0ac84fd1c9047e7fc1e5 +size 16027 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrIntelligence_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrIntelligence_And_Free_x1.uasset index ed64fc25b..54ef1ccd2 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrIntelligence_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrIntelligence_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:71e080c44df3fe4eb3926dab24bf61b00597644e42e20e3195956f4444df6ac1 -size 15994 +oid sha256:cc943dff54d15d1a45b5eeacb80b1588e8ea4a72b314ec269d763d73356c3bb6 +size 16027 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrWisdom_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrWisdom_And_Free_x1.uasset index 5075b297e..8b609ca27 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrWisdom_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_DexterityOrWisdom_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e039d55c7db97ab4e61fc7eda308b77f026bfc5b1cd45c55f57be5b4efb5d97 -size 15904 +oid sha256:df110c9766f9ead9223b432250a91097b2c53683c575e909b9e04a8c7b878999 +size 15937 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_Free_x1.uasset index 7e3ff2bea..da2e71774 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e47a264f8723bf19eff876721cf6114f525e5aa7085c8c5c744f6b48e21a4f5 -size 15896 +oid sha256:beb877aa283e63a1a26d91700a850453452d738189da21e787799f38f8c608cb +size 15929 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_Free_x2.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_Free_x2.uasset index dbab1d76e..4a5a55bfb 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_Free_x2.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_Free_x2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9744637fc39146dfab7d32cf24ae535f2c65153888b56cbcfba60835b7d7f21d -size 15433 +oid sha256:07aed6c29af44ad90a2f5a21e7acb8aca2133beec405bdc4ce3be7c53f941897 +size 15466 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_Free_x4.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_Free_x4.uasset index a3231d7b6..1f60719e4 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_Free_x4.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_Free_x4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:48e2239189f8b9d86ebe110d39a6c350d536f5a8b400871582e55e29f95242fc -size 15584 +oid sha256:7f0041b967fd769abaac07b60821d76107f4f64f7e5044758454f6c7d7874cb8 +size 15617 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_IntelligenceOrCharisma_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_IntelligenceOrCharisma_And_Free_x1.uasset index 19dd9fc24..7a2f1b02d 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_IntelligenceOrCharisma_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_IntelligenceOrCharisma_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0a7eec243e35da7f33c6e86f387f543fa2cf292705ac37dfb5f84c800f237de -size 15979 +oid sha256:784201697c1fcf3b2738bcb4e0e3c13705f41011339aa3215b5ca77f35324540 +size 16012 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_IntelligenceOrWisdom_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_IntelligenceOrWisdom_And_Free_x1.uasset index 8267f03ef..56fee01be 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_IntelligenceOrWisdom_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_IntelligenceOrWisdom_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4190be314d79b278693e16c0e8d97f7097e3b23921aba7eb554056f13e2701ba -size 15949 +oid sha256:7fcf3aa7e822dc2d3e70e81bdeb06eee06e15051bd6b9edb1e9c67f494829984 +size 15982 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrCharisma_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrCharisma_And_Free_x1.uasset index 52f57bff9..e7b6d10c1 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrCharisma_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrCharisma_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05ee3dc001adccc7bfbced01d36d984862bb689e8e583eaeddffe3800b953d8c -size 15919 +oid sha256:845fd318ce8f9cb67c0e3ca22470557bbef81a61d3057df80599cc17c3078983 +size 15952 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrConstitution_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrConstitution_And_Free_x1.uasset index 61ad5a826..50b8a5c51 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrConstitution_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrConstitution_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52303aa9e72a51e38c5fe07165068bad10b5fa360eca6c761163778b2c6d12a7 -size 15979 +oid sha256:69a03519350a22638504072f04ecf3b08cde5346430f9d97bb66c52fd793a575 +size 16012 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrDexterity_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrDexterity_And_Free_x1.uasset index 77216e0db..cc0d436a1 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrDexterity_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrDexterity_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9786655b429a4cffa230361d3a03496d4c0d42efe055e1b26ae787f1bfe9824 -size 15934 +oid sha256:79f550d79216c779c4e2f366eba10cae5a467eca05db36300fd9575e476b1c86 +size 15967 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrIntelligence_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrIntelligence_And_Free_x1.uasset index 48c8a1e3a..c81303315 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrIntelligence_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrIntelligence_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:251a3116458da0958c88f7c9180b234d26e4d2130547459e0b77d1e6693bf2fa -size 15979 +oid sha256:35c4ecad8434f3bf3ce3cc358f75f69ebeee23c7846f5638051e4a4b7cfff6c1 +size 16012 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrWisdom_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrWisdom_And_Free_x1.uasset index 8537308ac..397684971 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrWisdom_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_StrengthOrWisdom_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07e2f577ab48b294ed18d1b94b3b7d26cf0192dee81ef836e61d9808faa08664 -size 15889 +oid sha256:77ad703e05f886d0fe6188d8da7f509efaf32b7a4bb0981397d9f5ca2f9bfba3 +size 15922 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_WisdomOrCharisma_And_Free_x1.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_WisdomOrCharisma_And_Free_x1.uasset index cf8ab7ef4..cfde16a14 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_WisdomOrCharisma_And_Free_x1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GA_BoostAbility_WisdomOrCharisma_And_Free_x1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:34014084fc90c6c2cd19765f7b9223eb65f467cef2494935505b3ec01f4b06b8 -size 15889 +oid sha256:40d2d7fba0a96436f25839b172a38f70cb0642ffd8701a958bdc771f8d9c1ae0 +size 15922 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbCharisma.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbCharisma.uasset index d9cae30fd..9ea9d6195 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbCharisma.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbCharisma.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f934381314c6766a0e6dec0608771e9259755c5aeb2d79efd62c0eba37598fe -size 17795 +oid sha256:cfd0f03c8b59881cd3d9f69c98205808ae88186ce6410f94b79b3730fab8ad15 +size 17788 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbConstitution.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbConstitution.uasset index c54c36be3..c14056631 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbConstitution.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbConstitution.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:216988c0e60e05ed0d2dd4f49b3872f117bf83fa225f08547b727f7cc5248968 -size 17867 +oid sha256:95cca80671e877ade8a8b3316f64df2cf289e4ffd4852d21a77de8d44e99ed71 +size 17860 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbDexterity.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbDexterity.uasset index e76202ee7..bfdf379a1 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbDexterity.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbDexterity.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a417082e157c0e15189b13a38fee9a97a99eea32b5907a1f5103280001762dd0 -size 17813 +oid sha256:c14cee0b5cc812ca6e2ca2338bcdd784a8e1cb69337553144cde9f2a97b23d82 +size 17806 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbIntelligence.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbIntelligence.uasset index d81c0fd6c..107336377 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbIntelligence.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbIntelligence.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:62b1cf2614f019e35cf62cd2655e8dac69c29a37109b25a0b1ad1b2d36550a3b -size 17867 +oid sha256:f84777efdf72f5eafeebe7c8f51620d621911425eb26c001b1980e4e1328f81f +size 17860 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbStrength.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbStrength.uasset index 187cfc198..23c770911 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbStrength.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbStrength.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5485f412d797e1bcc2a9870515e71391484a129add92ed863eb91d9f2aa6106 -size 17795 +oid sha256:94b320a4efb1e5340ba623d1a37606dae661649fe66ab9261f4a59c5af39225d +size 17788 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbWisdom.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbWisdom.uasset index e0c1959c4..256b71997 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbWisdom.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/GE_BoostAbWisdom.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:344d28031ecd84b85c0d7cbf0b11d2b2703a16d6fb9e5eaf1205a6895720474f -size 18211 +oid sha256:11593d26a234bff8d88419da43b2d7656bef507b2e93f6c7a61ccdf402b32096 +size 18204 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostCharisma.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostCharisma.uasset index 500d4c852..7b6311e30 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostCharisma.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostCharisma.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9523b79b928e000986eba72985445b90eede1c5d9f49d83c4d49f7f25e42612a -size 7334 +oid sha256:f18ed1c877e9ba97a7c343e9853101634fc412c38e942c245d93336df7bffa4d +size 7367 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostConstitution.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostConstitution.uasset index 1c1fdcc51..ed93f6f31 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostConstitution.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostConstitution.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:baeda1df29b607ccdf9190112ac10314843a9219bef1555898a6f6ef643eb6ad -size 6924 +oid sha256:67ffcaae5e51c8c5909ecaa55fbc3652c054584812e6da5aae5513dd4c553d99 +size 6957 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostDexterity.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostDexterity.uasset index 5d4a24c41..fafe45d2a 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostDexterity.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostDexterity.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a6b31a443a6d4ae92d2c8b9a250670c889225029ef4ac6d281c5a13c19f220e6 -size 6876 +oid sha256:8adf9ce59f6111a42d0a0e996e67c8c78313b33bb81579c3438c5bc9aa648aca +size 6909 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostIntelligence.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostIntelligence.uasset index 950e889ab..b8a169e57 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostIntelligence.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostIntelligence.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b5713ae140cd1a789b66644b2eaf4a2fde89fc9403aab0a67f970c4b46a6d60 -size 6924 +oid sha256:68f294221cbe783f4f48da141e68efcf3620679a0e46e8a6e20cc386223102b2 +size 6957 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostStrength.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostStrength.uasset index 4c2917a39..6dce161f7 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostStrength.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostStrength.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:965c2b4126d6a6a8885fcecd4add754b77d48256db030d1e22e625fbb726ac90 -size 6860 +oid sha256:3365b7d58de4206cfe50d4917b4193cbd512f7bfbbf33c6791f090f1db8d03b5 +size 6893 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostWisdom.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostWisdom.uasset index b2213d660..f5d954596 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostWisdom.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityBoosts/MMC_AbBoostWisdom.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20cae03f2226f7a19f0857fdfbac4fa8f94ee153dcb84c843ab3cfb29304c9bc -size 6828 +oid sha256:fb7051d2144199c57a4120555a8bf2f13d58654e0152c7232e24d38a9c0718e1 +size 6861 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/GE_CalcAbilityModifiers.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/GE_CalcAbilityModifiers.uasset index 1ba0e422e..eec9d1e3d 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/GE_CalcAbilityModifiers.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/GE_CalcAbilityModifiers.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61945f1dd6f01431f167c71ba93be7481002daaf8c8d7fa5757c5820db31e99a -size 37580 +oid sha256:a383fbea6f3c6a4fc6f67b3c05e659bf3a806e62aa46aa699020ab9299f8c805 +size 37557 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModCharisma.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModCharisma.uasset index f910fe081..5b59527d5 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModCharisma.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModCharisma.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2801479600c80769cead84cc294c6341490369fff0e947b4f71a8e7004dcefcc -size 6979 +oid sha256:c6b25a95c936b2ef088519c0049649bc11fcfe0d39a33fd4849d37e7c5ccba9b +size 7012 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModConstitution.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModConstitution.uasset index b006275a0..04e87a8c6 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModConstitution.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModConstitution.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ebed4891a52b7c1a5f6329b1527cb331f5c56cf916f52fe095d181067987fdb -size 7043 +oid sha256:c0aa7207ffd7777982712e26de5f51310eb2df832982682e01b03afee672ed58 +size 7076 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModDexterity.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModDexterity.uasset index 2ff27a777..13572f6ae 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModDexterity.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModDexterity.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:11085d0d43ac86216f37359ca677d161b3caef9cfc479578ac27dd199c16aa5d -size 6995 +oid sha256:9b634bf84548eb014799900af7eb526cc6816f070d1f07d55b73685458d4a2a9 +size 7028 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModIntelligence.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModIntelligence.uasset index f24e22d4c..88a222c1c 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModIntelligence.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModIntelligence.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:234778214d3ea1e6cd5ac78644ab385150bc7d155c838e6bb56919d9208e37fd -size 7043 +oid sha256:2bc73f242a3d1aab330c9bcb13b206501c24df7be9121aeab52bf189cf99b184 +size 7076 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModStrength.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModStrength.uasset index d15480aff..c4a45e2c3 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModStrength.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModStrength.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4216105915f78972adbb91ed51fcd9c2f79135cfc673546c3cfb669748777a8c -size 7453 +oid sha256:29e6c0676c226ba92fb2beb3dc8a7c1c19c4e20d86a387341f06b7363c642690 +size 7486 diff --git a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModWisdom.uasset b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModWisdom.uasset index 164b7a189..0ade4485d 100644 --- a/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModWisdom.uasset +++ b/Content/OpenPF2/Core/CharacterStats/AbilityModifiers/MMC_AbModWisdom.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e8b5190fc562e104df43661fd88687733c6413bdf748098a39a49a8142894b4f -size 6947 +oid sha256:bd013a1e8bc57f1954451c257892ef5116ec2d6f8355aa292d0dd5ebaf5df697 +size 6980 diff --git a/Content/OpenPF2/Core/CharacterStats/Ancestries/GE_CalcAncestryFeatLimit.uasset b/Content/OpenPF2/Core/CharacterStats/Ancestries/GE_CalcAncestryFeatLimit.uasset index fcc4ef8f8..bceae7317 100644 --- a/Content/OpenPF2/Core/CharacterStats/Ancestries/GE_CalcAncestryFeatLimit.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Ancestries/GE_CalcAncestryFeatLimit.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44ecb761f757e77cf7e85054ee1edf590abc2d1764dff477943e26db8b11873e -size 14058 +oid sha256:4dde095e734d6d5b7a7ca380706c962a44e212df55072bb2b329fb2e9fed1a97 +size 14059 diff --git a/Content/OpenPF2/Core/CharacterStats/GE_ApplyBaseCharacterStats.uasset b/Content/OpenPF2/Core/CharacterStats/GE_ApplyBaseCharacterStats.uasset index 5cfaa3b1c..05712cc35 100644 --- a/Content/OpenPF2/Core/CharacterStats/GE_ApplyBaseCharacterStats.uasset +++ b/Content/OpenPF2/Core/CharacterStats/GE_ApplyBaseCharacterStats.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8eddd2b6e9e4af9b32a6261715903955b174675522646b18e6699525c44e5378 -size 50348 +oid sha256:c5f0c97a2545aefb549fb5b6818d5fad71b4be6818e2a8ccf7844420c72abcb2 +size 50345 diff --git a/Content/OpenPF2/Core/CharacterStats/GE_ApplyDynamicTags.uasset b/Content/OpenPF2/Core/CharacterStats/GE_ApplyDynamicTags.uasset index 48662c613..ef53207ab 100644 --- a/Content/OpenPF2/Core/CharacterStats/GE_ApplyDynamicTags.uasset +++ b/Content/OpenPF2/Core/CharacterStats/GE_ApplyDynamicTags.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d8599db869ccd1cbbebf3540d67d4627a5a19a60707f79225c795ba252ec6ca -size 6725 +oid sha256:bf9d3c054b4ab749919636e0c80626ef0d259adf4de728617e858a5fc0e153d5 +size 6713 diff --git a/Content/OpenPF2/Core/CharacterStats/GE_CalcArmorClass.uasset b/Content/OpenPF2/Core/CharacterStats/GE_CalcArmorClass.uasset index a7076727b..1940421c0 100644 --- a/Content/OpenPF2/Core/CharacterStats/GE_CalcArmorClass.uasset +++ b/Content/OpenPF2/Core/CharacterStats/GE_CalcArmorClass.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:95a2588bb4b21fd2544598dd254c97f0318d25bb9478ccbd5d97916363ef128d -size 14500 +oid sha256:d01e094e05db447cc7f5d04ef72aed64a84e4b4b6154bdb4a2f63f14e356024e +size 14501 diff --git a/Content/OpenPF2/Core/CharacterStats/GE_CalcClassDifficultyClass.uasset b/Content/OpenPF2/Core/CharacterStats/GE_CalcClassDifficultyClass.uasset index 950ff1762..87fba3bc8 100644 --- a/Content/OpenPF2/Core/CharacterStats/GE_CalcClassDifficultyClass.uasset +++ b/Content/OpenPF2/Core/CharacterStats/GE_CalcClassDifficultyClass.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ac03e047db3d5efdbeb3d562b92e30aeddea6c9148858c1d2da5d94dd75fe41 -size 14218 +oid sha256:20a7db30c7520d73c64eb5e6ab95899689eb807a366acb773dbdab6010f15d84 +size 14219 diff --git a/Content/OpenPF2/Core/CharacterStats/GE_CalcKeyAbilityBoost.uasset b/Content/OpenPF2/Core/CharacterStats/GE_CalcKeyAbilityBoost.uasset index ef5612d18..bb23bf7b8 100644 --- a/Content/OpenPF2/Core/CharacterStats/GE_CalcKeyAbilityBoost.uasset +++ b/Content/OpenPF2/Core/CharacterStats/GE_CalcKeyAbilityBoost.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:45b13f62f55c4222a723b343a734ac425336f3bddeb5abc5553708550d61e453 -size 10371 +oid sha256:6099e35b34225b91adbe7c74f59dae2c2dec5cec88b43fd62115c417e8411104 +size 10363 diff --git a/Content/OpenPF2/Core/CharacterStats/GE_CalcPerceptionModifier.uasset b/Content/OpenPF2/Core/CharacterStats/GE_CalcPerceptionModifier.uasset index e119c799c..448a2150b 100644 --- a/Content/OpenPF2/Core/CharacterStats/GE_CalcPerceptionModifier.uasset +++ b/Content/OpenPF2/Core/CharacterStats/GE_CalcPerceptionModifier.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:802ad4b2941433f32bbfec05bd4841ea42fca04d3e9db50475ea67fe83d3f6f4 -size 14730 +oid sha256:6dceecfadeb4df865219e5482e9159c9314dfb23c8cade2839107a8ffeb2f070 +size 14727 diff --git a/Content/OpenPF2/Core/CharacterStats/GE_CalcSavingThrowModifiers.uasset b/Content/OpenPF2/Core/CharacterStats/GE_CalcSavingThrowModifiers.uasset index a8ed4779c..738040d4c 100644 --- a/Content/OpenPF2/Core/CharacterStats/GE_CalcSavingThrowModifiers.uasset +++ b/Content/OpenPF2/Core/CharacterStats/GE_CalcSavingThrowModifiers.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1956331863160cd8961324f784f1a9211c53a55a3618e5f73ad0424ac872c2f0 -size 24047 +oid sha256:2268121ec041b17e24ff196683e91fab1236fa82f0efcba92bcd3aa508d97b3e +size 24036 diff --git a/Content/OpenPF2/Core/CharacterStats/GE_CalcSpellAttackRoll.uasset b/Content/OpenPF2/Core/CharacterStats/GE_CalcSpellAttackRoll.uasset index 2890b5f00..558317342 100644 --- a/Content/OpenPF2/Core/CharacterStats/GE_CalcSpellAttackRoll.uasset +++ b/Content/OpenPF2/Core/CharacterStats/GE_CalcSpellAttackRoll.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ffb79791fb5d9d6e1893bdfcbe1fa3cf32b51badbb5ed04e3ad34899ca32df4 -size 14585 +oid sha256:2c0ead6454e8cf3926319baf52d650c14af3acdf0fa1172b764b249af9f1870d +size 14586 diff --git a/Content/OpenPF2/Core/CharacterStats/GE_CalcSpellDifficultyClass.uasset b/Content/OpenPF2/Core/CharacterStats/GE_CalcSpellDifficultyClass.uasset index 6dc953bf4..2445bc916 100644 --- a/Content/OpenPF2/Core/CharacterStats/GE_CalcSpellDifficultyClass.uasset +++ b/Content/OpenPF2/Core/CharacterStats/GE_CalcSpellDifficultyClass.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53b34566f9d852cb872906a7cb0cbf8d0f9b53d63004ea68776da6dce02bf457 -size 14218 +oid sha256:02dbf0590d13e186e372a272d792bf5436ee072badd4ba21576d721217c4f05d +size 14219 diff --git a/Content/OpenPF2/Core/CharacterStats/GE_GrantCharacterBaseAbilities.uasset b/Content/OpenPF2/Core/CharacterStats/GE_GrantCharacterBaseAbilities.uasset index 97f07a03e..0cb5a36bf 100644 --- a/Content/OpenPF2/Core/CharacterStats/GE_GrantCharacterBaseAbilities.uasset +++ b/Content/OpenPF2/Core/CharacterStats/GE_GrantCharacterBaseAbilities.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8fad17dc097d80988a861eb7ca0b503bc22d6100267e5401b9d87f20cdd03a20 -size 9514 +oid sha256:28c9b4fc8e35bf310985245441325266846e9985f897b1f6714a8da66c4226f7 +size 9502 diff --git a/Content/OpenPF2/Core/CharacterStats/MMC_PerceptionMod.uasset b/Content/OpenPF2/Core/CharacterStats/MMC_PerceptionMod.uasset index 26dba1395..3705f5e67 100644 --- a/Content/OpenPF2/Core/CharacterStats/MMC_PerceptionMod.uasset +++ b/Content/OpenPF2/Core/CharacterStats/MMC_PerceptionMod.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c319831eb2a8406a75a0869d120a3bc0a35fbd9a32fc785d3e9c57cfc30e8ad -size 7638 +oid sha256:6acc9a44ca8b191146373b87fd79b2ba350ce57eeabd78bb5f10476e48280e40 +size 7687 diff --git a/Content/OpenPF2/Core/CharacterStats/MMC_SavingThrowMod_Fortitude.uasset b/Content/OpenPF2/Core/CharacterStats/MMC_SavingThrowMod_Fortitude.uasset index 3ef75723a..05d8d6f64 100644 --- a/Content/OpenPF2/Core/CharacterStats/MMC_SavingThrowMod_Fortitude.uasset +++ b/Content/OpenPF2/Core/CharacterStats/MMC_SavingThrowMod_Fortitude.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:545d3f99020c795f7770c5b1c4db4d6397e2985eabfda2053f2f6ac6d53873da -size 7342 +oid sha256:1306a73fe493c524cda2d4439e54aa69da1019a6a2d177e30e0da86a32f906b0 +size 7391 diff --git a/Content/OpenPF2/Core/CharacterStats/MMC_SavingThrowMod_Reflex.uasset b/Content/OpenPF2/Core/CharacterStats/MMC_SavingThrowMod_Reflex.uasset index 6358aa01e..55c71c318 100644 --- a/Content/OpenPF2/Core/CharacterStats/MMC_SavingThrowMod_Reflex.uasset +++ b/Content/OpenPF2/Core/CharacterStats/MMC_SavingThrowMod_Reflex.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36f52785469faa17741b79fca4e8450b7180dbed3589ecea4c92b855db441325 -size 7291 +oid sha256:7a71e7a3eb3df64b2457587e323a3548899c817327d5922855281cc3f4fee53c +size 7340 diff --git a/Content/OpenPF2/Core/CharacterStats/MMC_SavingThrowMod_Will.uasset b/Content/OpenPF2/Core/CharacterStats/MMC_SavingThrowMod_Will.uasset index 4fc954eeb..9aa41a1ff 100644 --- a/Content/OpenPF2/Core/CharacterStats/MMC_SavingThrowMod_Will.uasset +++ b/Content/OpenPF2/Core/CharacterStats/MMC_SavingThrowMod_Will.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0e729d4c5a22b448a986125879793789bfcfc293ff1215c6e301c273602b4c2b -size 7728 +oid sha256:205033ef62713285f2b191dfed185b34b9c9cd0ea192aeb2d83182eaf4646ce8 +size 7777 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/GE_CalcSkillModifiers.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/GE_CalcSkillModifiers.uasset index 5cdd845a4..a9ac89f8b 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/GE_CalcSkillModifiers.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/GE_CalcSkillModifiers.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:058e4598987c74d8bbad3f9cfe6deebb034579930b46a2f26386d837dc2e33d0 -size 93058 +oid sha256:45563eeb9fb18d3f774c04520ff221b459f6036bd9f6c09cc0a6fdc0fcae5707 +size 92987 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModAcrobatics.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModAcrobatics.uasset index 4b3d1c05c..8f157cd6c 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModAcrobatics.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModAcrobatics.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ab648f00dcc173e78f24bb2c1d9206a1afa37dd661c1aa759b2217e522d319b -size 7670 +oid sha256:3659251cbc60da5146d245eeaa3ec9d58dc7924499b05be1c3421d0641ef4b93 +size 7719 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModArcana.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModArcana.uasset index 90e18cc49..3c7086bf5 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModArcana.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModArcana.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0efdf392b54cc702d67f875113758eff9df698f830a70fbf954ab2033ecf1292 -size 7149 +oid sha256:4b83585721374df62f2fc0fd55332b2f576934504f4d774f26c067ea68a3439b +size 7198 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModAthletics.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModAthletics.uasset index ab09d5cf3..5d75e7654 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModAthletics.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModAthletics.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:553d6cc48c43fcb52c37476a9cd49a0ecb1c263a1e58dc6f1f2e8a7032ddfd86 -size 7179 +oid sha256:6f5acbf56c30d5db91a4a097bea4045bafe01922626698af33a82f5186d8681d +size 7228 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModCrafting.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModCrafting.uasset index ed2808306..be587d07d 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModCrafting.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModCrafting.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c529a21d18d516af8aeeabbdb83d5dc66834d9310a412bd56fb6b10b42a95478 -size 7177 +oid sha256:356835f32f0d1bb1cf7fd67cc9e7837206980d7d6657bce76b7c30419a24685c +size 7226 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModDeception.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModDeception.uasset index cc1e6f845..8f2af012a 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModDeception.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModDeception.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94edb58038c11f1e1847ff3e3e78e23fd829a7c8305158dffc9a5fbb20228da8 -size 7179 +oid sha256:ec7c1c984cfe6c743a1618189507a456cb098f929ff0b671bbc0a85f65975f58 +size 7228 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModDiplomacy.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModDiplomacy.uasset index 09a81b949..9652a2693 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModDiplomacy.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModDiplomacy.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b5cdd05054ef1144d026c11cf74a6256ddc705779004b8e7200d5096af17f7e -size 7179 +oid sha256:4ff17b5cf1275a35efdd12bffef5fe0c384e7a655dfd6dbc2f882206bbdfccb6 +size 7228 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModIntimidation.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModIntimidation.uasset index fdde21755..e161f313f 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModIntimidation.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModIntimidation.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:797ae02821e5cd39030c3341b62755fb47ac12d4bc1128e69fcc28c7dc0ae722 -size 7221 +oid sha256:9f336f1f3a032510a28f78a3b49403ddf8e6c1978c25d6f302e2c9d41315396e +size 7270 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModLore1.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModLore1.uasset index 7f2c85a33..22da00138 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModLore1.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModLore1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:356f54e8701b9d18b6c8e5d5ff74fb31f61d668083220e7d966a9604b1c95c2b -size 7135 +oid sha256:b129a4f591505ff9fd248bde917d37923636ce939b4134c7b15150f0194482eb +size 7184 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModLore2.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModLore2.uasset index 375853dab..7c0ba2d7f 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModLore2.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModLore2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9d8e3096d18fc164121ba0d4f0adfad02262aa5b08316b099b99ded3181bac93 -size 7135 +oid sha256:66b7ec801829bb6f8dc3c3fc5e378614185a36f91c0c59c2e39f53417aa4941b +size 7184 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModMedicine.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModMedicine.uasset index 32796d699..1a296f040 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModMedicine.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModMedicine.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:33fbd66bd9764486691632feead497aa37d9a184eaefff7c9b22bf0673c95160 -size 7159 +oid sha256:68085e4f1ac35457c7ce00ef26612e52a0fb05076beb17e9d0bdf049d7ccd5db +size 7208 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModNature.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModNature.uasset index c51123a1b..b22397736 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModNature.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModNature.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5001523258159e5d7da149cbf62f9d45c4ab4efb4514b62bba44092b111e840b -size 7131 +oid sha256:64fdc5d9c3dd676b2cd580b98583f8e83ba6f93ac85534e26f27d97ca00fdc97 +size 7180 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModOccultism.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModOccultism.uasset index a2d15873e..7638347b9 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModOccultism.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModOccultism.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d7d1965b3d3d4f084cc099bba74d6ecb0282f091259985d0ef98fd90faf7d3c0 -size 7191 +oid sha256:c21c239ef7fcd4e50de6fda6ddb90396bc6b6edb94cc3657f192605069e4066f +size 7240 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModPerformance.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModPerformance.uasset index ac9d8044d..977a779f0 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModPerformance.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModPerformance.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1a0bcd648b2827c74f75b401c988ae0d45c83f7694a16d31d2eda214ffd3d7ff -size 7207 +oid sha256:dc6e10fc0ada70faae1b94221dfa370cf13bb267ec3268c17d93b339cf8305c7 +size 7256 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModReligion.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModReligion.uasset index 27c0fa0b3..bfa148f6d 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModReligion.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModReligion.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:986ad3301f77d216245a7757a8c9e09e673e0542688332d5c76f1e479351d6e2 -size 7159 +oid sha256:de19968c1b59796a218a7b172fed58fb21a808c3431f13fc43e65ec49ebcec1f +size 7208 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModSociety.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModSociety.uasset index 2f8b3e53e..8df33c456 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModSociety.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModSociety.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5d9a0b9137e356e18f3ef33dc44d093d41ed1596cb1d58485c77687fa37aac72 -size 7163 +oid sha256:db428b15c8b31981a557b332e7fd2c5ab7680c3012575b7965b6d69e28087c09 +size 7212 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModStealth.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModStealth.uasset index 3fd899359..946e4f0a0 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModStealth.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModStealth.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a9cb5a44e016161e08fb20008702e5d16c653f2383ef504cbcf23c529c68a368 -size 7154 +oid sha256:6a2b3a56569a998d4f59d408605855f7e63c83a2c6d61c8d2d7df49330fe25d7 +size 7203 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModSurvival.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModSurvival.uasset index 47c218dcc..76254d865 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModSurvival.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModSurvival.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:14146f1050c57b5c9202269edbf66cf429964dd53bbae1ab72ff046e2ab0e3da -size 7159 +oid sha256:5263c721b1e587ac70817a55a71e09bb32ff39be70ceb7e3c2edc8f0e71e6a59 +size 7208 diff --git a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModThievery.uasset b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModThievery.uasset index c8b5b9043..249520323 100644 --- a/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModThievery.uasset +++ b/Content/OpenPF2/Core/CharacterStats/Skills/MMC_SkModThievery.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e7bb9b5a4619ea5af7a5238659b9b8e6e087ce3727fc13341906bed2fb833d52 -size 7168 +oid sha256:0b351b0272b29710836b0ba16c9ef3e6689171f1964dc5d85e1f9b55c1924926 +size 7217 diff --git a/Content/OpenPF2/Core/Conditionals/AboutStats/CAR_HaveNonZeroHitPoints.uasset b/Content/OpenPF2/Core/Conditionals/AboutStats/CAR_HaveNonZeroHitPoints.uasset index e54ca653d..7d77987b4 100644 --- a/Content/OpenPF2/Core/Conditionals/AboutStats/CAR_HaveNonZeroHitPoints.uasset +++ b/Content/OpenPF2/Core/Conditionals/AboutStats/CAR_HaveNonZeroHitPoints.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b5249e434f7d4a34c618f63dcb2e1f63960633cc8e4ab37e646e832ba91bc0fa -size 33210 +oid sha256:e39d14c5a81d112cce9b5f3403c114a8b674749e39dad811f6c046b2a16e0dca +size 33270 diff --git a/Content/OpenPF2/Core/Conditionals/AboutStats/CAR_HaveZeroHitPoints.uasset b/Content/OpenPF2/Core/Conditionals/AboutStats/CAR_HaveZeroHitPoints.uasset index f84dda3ea..b97336cb8 100644 --- a/Content/OpenPF2/Core/Conditionals/AboutStats/CAR_HaveZeroHitPoints.uasset +++ b/Content/OpenPF2/Core/Conditionals/AboutStats/CAR_HaveZeroHitPoints.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38eb55e75516ea276fb3ceb56144f2718a6c23b42579094d59c3d6e5fcf215b2 -size 33267 +oid sha256:d07656cdcfc1395ac66cdea32bc38240da96175a1f2637c38fe6d32701fc665b +size 33327 diff --git a/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsAnySuccess.uasset b/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsAnySuccess.uasset index 039e8fccc..26e52d71c 100644 --- a/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsAnySuccess.uasset +++ b/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsAnySuccess.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff5dc3e037742f27f4910a3680db72d261dd37ff35e921c97076a682454782e5 -size 35925 +oid sha256:305f1e6e920a380b1fec8603ded12f3d4667211c0bba466c998a35f372a7c322 +size 36003 diff --git a/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsCriticalSuccess.uasset b/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsCriticalSuccess.uasset index daba1751e..6395e7d21 100644 --- a/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsCriticalSuccess.uasset +++ b/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsCriticalSuccess.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:303ebe6e7486ff0dba3eeca4e8bdd6e6a8cbf81b6205dc2252c9c9adef239f90 -size 31599 +oid sha256:9b653f0ee7da1d07451c8d134868e5f73428b2f353e10f35da93d2c164a342c9 +size 31677 diff --git a/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsLethal.uasset b/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsLethal.uasset index 479d1d879..0da0bd92f 100644 --- a/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsLethal.uasset +++ b/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsLethal.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:339250de258dfe5f9b09319d5c5483fd76189a367882aeac3c38cacbec478cb5 -size 30851 +oid sha256:40901a63708f240cd891338d59a2d7debd90c5de48c30ade4b9ebcb4bf0cafca +size 30880 diff --git a/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsNonLethal.uasset b/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsNonLethal.uasset index eafbae1f6..3f9f7b3c8 100644 --- a/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsNonLethal.uasset +++ b/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsNonLethal.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d1a0b725f3cdb924ae40743273f06bfd03add7f776f45ed89381e8b655d436b -size 29043 +oid sha256:1b728b48de586650e5de3afa88076eea9a22786ef94ce613cf9f65ec7cdf1be5 +size 29072 diff --git a/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsNotCriticalSuccess.uasset b/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsNotCriticalSuccess.uasset index 4005b5c21..d45c441f9 100644 --- a/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsNotCriticalSuccess.uasset +++ b/Content/OpenPF2/Core/Conditionals/DuringIncomingAttack/CAR_IncomingAttack_IsNotCriticalSuccess.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5641bdcfdd913cba9c160825bc23753d2d8e5773ecbc2135d4919e4e8e32293d -size 33674 +oid sha256:83e4079ca5dd246b32eed9648a3acc478f9cceab7f4369ef0e9d55fc059a2bf8 +size 33752 diff --git a/Content/OpenPF2/Core/GA_ConditionCheck.uasset b/Content/OpenPF2/Core/GA_ConditionCheck.uasset index a5653ee52..2506bc561 100644 --- a/Content/OpenPF2/Core/GA_ConditionCheck.uasset +++ b/Content/OpenPF2/Core/GA_ConditionCheck.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3507b589fb8414218147f2ea31a90917865a247331cb71c17c53f61cafaa3e94 -size 120236 +oid sha256:e6db8820e3db4fec4064584995d6623e008c5454cc80dfde047824dc8febf172 +size 118644 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dead.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dead.uasset index 89b1bbc4c..ca282da84 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dead.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dead.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7c75b4565b66c92a08ac945a0d2577b0b317a111ee0ec1d72106f391ad2ee86 -size 8025 +oid sha256:487c3266f78da0178c89c0cdd6b37934c3f3255c36e0b49c6a24efbb91e652ad +size 8021 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level1.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level1.uasset index 57028235d..bea39727b 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level1.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31ae2210ddbafcbbe72f0abbfbc09fffb37f4dcbc945c5ebdcc3200c5bfae0fb -size 10241 +oid sha256:d4ee67f3675c867d104aa8a1a1900b94b0df2e9d65b8fdd691497fd715af66f7 +size 10237 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level2.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level2.uasset index 252315e3e..da12f8ca0 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level2.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6d01d28bcaa3687c17ae4c106771dbe7f69a90a7bb114ee14e37d0f46e50f54 -size 10241 +oid sha256:02547ace55d3120a8e36afafe6dc83e8e86c9b9ddc81b3bf9384909f805dddc2 +size 10237 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level3.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level3.uasset index b7acfdf49..435b87c80 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level3.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22054eaed7c580402936e899eb48ce4bc64c26d22f7d263006874349256c8c10 -size 10241 +oid sha256:e9311cf1fa1a6e9f77765a75938ae4dd4311f19c97d4ed22ab19b4ec29d49601 +size 10237 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level4.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level4.uasset index db035a584..00b95a4cc 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level4.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Dying_Level4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b55d00b9d6d3d03ef33c69cf2f3f1c149490a562ec8beae66ed9e827fdc4e506 -size 10241 +oid sha256:9ac5afc575b72e42c44ff9075439e4947fc018d7a3bb1afa63d95a5a5f77cccd +size 10237 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Unconscious.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Unconscious.uasset index a08e9ac13..6f24d2755 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Unconscious.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Unconscious.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6889fc481e354e7c9ee44b8adacbf2059a4475f36eb2d555fd0adf11cbb22be3 -size 8123 +oid sha256:bd3cecedb7ccc464db00dfe33cf1aaaf2c7d9ede88382cdf2b697db2db9d6efc +size 8119 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level1.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level1.uasset index d758ddb19..d163afebe 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level1.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1ebce1bc6ef788e1996cd0208b6569eb0e4e60f36aea18288fd0322b77fef2b -size 10749 +oid sha256:d044e7e385e91cf20cefac05528524b7d921efe7eaad7ffe9e8ccf0623cc699b +size 10745 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level2.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level2.uasset index 24772a8b4..dc41e7e7b 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level2.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level2.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b85f944bbbfca4b09d105041ab0b7220779328bc4ba302c12f2d049b305e3965 -size 10275 +oid sha256:6ca7fad4668838beeb4a821d10772a5611d761c868c238fc01d0cb71bc3715ad +size 10271 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level3.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level3.uasset index f24b94898..6d489fc2b 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level3.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level3.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f470363c540820bd0f1efcc9a122f13c54205cf022e9d60efb5d654d6a3906e -size 10275 +oid sha256:0baa11e312f77e1653654743f22bcecbfa4045db671e2f8682f897f1ca7b3760 +size 10271 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level4.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level4.uasset index fb65bab14..9fa41de65 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level4.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Condition_Wounded_Level4.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e283ef91b863da4c55d6c8ef45f628380c5f964097f4cbebd79ab79cf0f3043 -size 10275 +oid sha256:7cf60655732145dceda3a5ff9e75dfb35edc620e25a6e948413d064c6fbec31a +size 10271 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Heal.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Heal.uasset index c438e3c30..12f28c987 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Heal.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_Heal.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c9c3c5e8de4b1f596dfcbda83d5b19de79f646500e867ac2d52f2851d229dcdc -size 13093 +oid sha256:03bb173915fd9215a33ba39e44796103b2e220f4a5906f7c4024df54e84d0c23 +size 13094 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_IncrementDyingFromWounded.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_IncrementDyingFromWounded.uasset index 5f5776cf8..0009ff3cf 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_IncrementDyingFromWounded.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_IncrementDyingFromWounded.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f166ca50f9a3207990be1823d253d6029ebda57d2544efb7f86658439f2c343b -size 13329 +oid sha256:e3c41a1ef622e4587b8779b2e0692a46adb3db2a7bcc068c48dd3e6eac601995 +size 13342 diff --git a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_IncrementWounded.uasset b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_IncrementWounded.uasset index 3d4c96e5a..4731e7eb9 100644 --- a/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_IncrementWounded.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/Anytime/GE_IncrementWounded.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9ec88fdad2e5657165cbc41771676ebf874a16627c5b492c7e4f00b06723818 -size 13074 +oid sha256:84d1a6bf75bd8837ecbb6e30af64742d2141c1caed462463c60a2f94d947a99e +size 13071 diff --git a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_ApplyIncomingDamageFromSource.uasset b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_ApplyIncomingDamageFromSource.uasset index f069f57a5..912681a30 100644 --- a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_ApplyIncomingDamageFromSource.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_ApplyIncomingDamageFromSource.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db58617d3c949e4ff04d199dedb28b5baaedf2acdb76c4c0ba09866218b4137e -size 7260 +oid sha256:c2a4c6cec05c482564c47b4c37e8d9d486f4c6fdabc6d287b5fca8347bb74608 +size 7257 diff --git a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_BecomeKnockedOut.uasset b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_BecomeKnockedOut.uasset index 4884a721a..09b3d5557 100644 --- a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_BecomeKnockedOut.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_BecomeKnockedOut.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ebd19fc8a162a0aca84e4df0f30f4be4362acac2b4d86a178ee352bab873b001 -size 13188 +oid sha256:881a5e768e13a4be3f8abda8ecaf7f5d3c322bc64d4124c79ea09affeae055a0 +size 13168 diff --git a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_BecomeKnockedOut_OnIncomingCriticalSuccess.uasset b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_BecomeKnockedOut_OnIncomingCriticalSuccess.uasset index fb6cd7b41..be7f0d821 100644 --- a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_BecomeKnockedOut_OnIncomingCriticalSuccess.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_BecomeKnockedOut_OnIncomingCriticalSuccess.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:94991d6a0bd5e66c978ae56422c4323f28e204680fa7582f2112698ff10ac76e -size 12202 +oid sha256:7e7f20541ee89c47970524b6c52afcd6c0a48194a18f413e7b6e85f6530eee20 +size 12174 diff --git a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_BecomeKnockedOut_OnIncomingNonCriticalSuccess.uasset b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_BecomeKnockedOut_OnIncomingNonCriticalSuccess.uasset index 906c69cc3..12725d5f0 100644 --- a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_BecomeKnockedOut_OnIncomingNonCriticalSuccess.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_BecomeKnockedOut_OnIncomingNonCriticalSuccess.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:331b7fdad0f857a38786eb6ba609d1c61d7dea4d114b5453d2d7dd544a9d5d3a -size 12409 +oid sha256:4b3c82f0b7fe3a49de52cfcbc6d7985cc4af4b63c23bcf0c6010d346e638aae5 +size 12381 diff --git a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_IncrementDying_OnIncomingCriticalSuccess.uasset b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_IncrementDying_OnIncomingCriticalSuccess.uasset index 98a67642c..98c71dce3 100644 --- a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_IncrementDying_OnIncomingCriticalSuccess.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_IncrementDying_OnIncomingCriticalSuccess.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d7de261759b8d4fca91b19e8f68b4867b8136e421c45d3fa481ca5d099cf1ed -size 13222 +oid sha256:a427bab0bb9f3100dba9dc696c566388ecdfa12bc1603070c74ee508f4d7dcb3 +size 13219 diff --git a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_IncrementDying_OnIncomingNonCriticalSuccess.uasset b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_IncrementDying_OnIncomingNonCriticalSuccess.uasset index 7918186c2..ff26a5466 100644 --- a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_IncrementDying_OnIncomingNonCriticalSuccess.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_IncrementDying_OnIncomingNonCriticalSuccess.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:891e998fbcf13ee698f527618c62dc43e32108afbf893353bdcfd0e0b13e9fa3 -size 14084 +oid sha256:8c8dc83c1bd2fc39393170e5994d1a4aed9e99951c4f76cbda8a810933f8cb52 +size 14077 diff --git a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_ReactToDamageWhileDying.uasset b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_ReactToDamageWhileDying.uasset index f28c7ab54..4548b762e 100644 --- a/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_ReactToDamageWhileDying.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/DuringIncomingAttack/GE_ReactToDamageWhileDying.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9489f0378b55b84952c0a5147a4a43eacf5258dfc0dfe525d1ff23254cafe4c -size 12551 +oid sha256:e0ea37b22e626c2a27ab3205ca5f02cffbf82585fc5ef2160801b8e5efc41d80 +size 12527 diff --git a/Content/OpenPF2/Core/GameplayEffects/DuringOutgoingAttack/GE_RollOutgoingWeaponDamage.uasset b/Content/OpenPF2/Core/GameplayEffects/DuringOutgoingAttack/GE_RollOutgoingWeaponDamage.uasset index 1babed5cd..bf3315d17 100644 --- a/Content/OpenPF2/Core/GameplayEffects/DuringOutgoingAttack/GE_RollOutgoingWeaponDamage.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/DuringOutgoingAttack/GE_RollOutgoingWeaponDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d07e6632611db46c7cd7d1c3fb0890f6e7a86896001d21f7f3b151143cd087cb -size 7548 +oid sha256:5b0d3ba227848283f666efd11f3819a88caf29dca2589926728cba1569030fd5 +size 7545 diff --git a/Content/OpenPF2/Core/GameplayEffects/WhenDying/GE_RecoverFromDying.uasset b/Content/OpenPF2/Core/GameplayEffects/WhenDying/GE_RecoverFromDying.uasset index e822fe75f..a0402809f 100644 --- a/Content/OpenPF2/Core/GameplayEffects/WhenDying/GE_RecoverFromDying.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/WhenDying/GE_RecoverFromDying.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2868b166b74f66b48453f65d4601d1f3fc2a24793447eb83173430dd49d942e3 -size 9480 +oid sha256:c423b19355ca7df4f903f96c737f688a57a044c6d1c5761e1f49d600865cc558 +size 9472 diff --git a/Content/OpenPF2/Core/GameplayEffects/WhenDying/GE_WakeUpFromKnockOut.uasset b/Content/OpenPF2/Core/GameplayEffects/WhenDying/GE_WakeUpFromKnockOut.uasset index 859d63ec6..176c284c6 100644 --- a/Content/OpenPF2/Core/GameplayEffects/WhenDying/GE_WakeUpFromKnockOut.uasset +++ b/Content/OpenPF2/Core/GameplayEffects/WhenDying/GE_WakeUpFromKnockOut.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db483cef5bafd3f9ed4ad73f4fd91b3a86a81d4cd9fa518d4549d1c2486d5c57 -size 13206 +oid sha256:310eec6e38823f291c049bcc7be09cdf8fe9bdee290f54ecd236eed18685789e +size 13202 diff --git a/Content/OpenPF2/Core/ModesOfPlay/Encounter/GA_TurnStart_DyingRecoveryCheck.uasset b/Content/OpenPF2/Core/ModesOfPlay/Encounter/GA_TurnStart_DyingRecoveryCheck.uasset index 59e36c13d..93d878261 100644 --- a/Content/OpenPF2/Core/ModesOfPlay/Encounter/GA_TurnStart_DyingRecoveryCheck.uasset +++ b/Content/OpenPF2/Core/ModesOfPlay/Encounter/GA_TurnStart_DyingRecoveryCheck.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d2851395472db850286c364ddb9b30e7dde9d72c4e88faa0d44e9764e4fd4567 -size 67652 +oid sha256:2ebeec615489ebffa526d14efecf59cb58bb0fb0b1a6262a17b4520443315669 +size 67523 diff --git a/Content/OpenPF2/Developers/GuyEP/BP_LuckBlade.uasset b/Content/OpenPF2/Developers/GuyEP/BP_LuckBlade.uasset index 2d0675afb..8a0b73de6 100644 --- a/Content/OpenPF2/Developers/GuyEP/BP_LuckBlade.uasset +++ b/Content/OpenPF2/Developers/GuyEP/BP_LuckBlade.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f913285cb3ed73da019fdeae97975e0c65681e07a9367782d4daaf14a4e18f10 -size 6555 +oid sha256:9f7fd8867f90cba41d8c3d71092ad97670522db354c003032f6a8343d383d080 +size 6577 diff --git a/Content/OpenPF2/Developers/GuyEP/BP_TestAIController.uasset b/Content/OpenPF2/Developers/GuyEP/BP_TestAIController.uasset index 15db74a38..b92e9163e 100644 --- a/Content/OpenPF2/Developers/GuyEP/BP_TestAIController.uasset +++ b/Content/OpenPF2/Developers/GuyEP/BP_TestAIController.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43c7d656e6863ca71b1160a65b9672f11092890b120b9751c7377c1ed60bb3d4 -size 24469 +oid sha256:d240d4ca70523f178d046a628c0bae9c97978220cf2aaa1ac130344d36bd6efd +size 25582 diff --git a/Content/OpenPF2/Developers/GuyEP/BTDecorator_TestHasCommand.uasset b/Content/OpenPF2/Developers/GuyEP/BTDecorator_TestHasCommand.uasset index fadd89bc9..b09ae674f 100644 --- a/Content/OpenPF2/Developers/GuyEP/BTDecorator_TestHasCommand.uasset +++ b/Content/OpenPF2/Developers/GuyEP/BTDecorator_TestHasCommand.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7702f2f871b35334e6230c95a25afe5535042e78e71980883130798395f3dd1d -size 26869 +oid sha256:cc6058f2d224c32eaa34b03685ddbb9e4025edde783739bf6608989f2293a44c +size 26825 diff --git a/Content/OpenPF2/Developers/GuyEP/BTTask_TestClearCommand.uasset b/Content/OpenPF2/Developers/GuyEP/BTTask_TestClearCommand.uasset index 248e7b427..a972b5597 100644 --- a/Content/OpenPF2/Developers/GuyEP/BTTask_TestClearCommand.uasset +++ b/Content/OpenPF2/Developers/GuyEP/BTTask_TestClearCommand.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:203dde239b5150efcb3ad2242b6c6031b81780f6973c8d2644993af5e981a853 -size 27894 +oid sha256:7f559ed458ed37ad48a63ea0ab53f925d150fa280d748bd74608e319a0e37edc +size 28124 diff --git a/Content/OpenPF2/Developers/GuyEP/BTTask_TestExecuteCommand.uasset b/Content/OpenPF2/Developers/GuyEP/BTTask_TestExecuteCommand.uasset index dc11bf9c6..8cf62f75c 100644 --- a/Content/OpenPF2/Developers/GuyEP/BTTask_TestExecuteCommand.uasset +++ b/Content/OpenPF2/Developers/GuyEP/BTTask_TestExecuteCommand.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed01cd81d8c721295258f98cf954e97068b98959c3cc218a47524d439ac28623 -size 41952 +oid sha256:16a0bb5c0231191aee817c8ce58e46c521371b34fc698e75ace2f595b32c6859 +size 41934 diff --git a/Content/OpenPF2/Developers/GuyEP/GE_BonusToPerceptionRolls.uasset b/Content/OpenPF2/Developers/GuyEP/GE_BonusToPerceptionRolls.uasset index 3b95ff893..b5d9db609 100644 --- a/Content/OpenPF2/Developers/GuyEP/GE_BonusToPerceptionRolls.uasset +++ b/Content/OpenPF2/Developers/GuyEP/GE_BonusToPerceptionRolls.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f413e19941357dfead4b501c378cd0d7f2c92d65dc73edec523a70d1ccdcd3be -size 12583 +oid sha256:c6a142ac843cb68f0af127d70e974f539528f7cf8bc586dff3e6c376a0ab58a7 +size 13508 diff --git a/Content/OpenPF2/Developers/GuyEP/TestMeleeWeapon.uasset b/Content/OpenPF2/Developers/GuyEP/TestMeleeWeapon.uasset index bfde99b78..c6f44c64c 100644 --- a/Content/OpenPF2/Developers/GuyEP/TestMeleeWeapon.uasset +++ b/Content/OpenPF2/Developers/GuyEP/TestMeleeWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:22d0aa3c474c8b474ee887faf0c6c461dba793d01514a4c7bd4683dd4812af88 -size 7840 +oid sha256:e33070e2b1480e3f2aff9d30879c810304f45d88b0de1c023f5c680b3b0eb433 +size 7878 diff --git a/Content/OpenPF2/Developers/GuyEP/TestMeleeWeapon_WithAdditionalSimpleDamage.uasset b/Content/OpenPF2/Developers/GuyEP/TestMeleeWeapon_WithAdditionalSimpleDamage.uasset index ddd22fd25..2b703e01c 100644 --- a/Content/OpenPF2/Developers/GuyEP/TestMeleeWeapon_WithAdditionalSimpleDamage.uasset +++ b/Content/OpenPF2/Developers/GuyEP/TestMeleeWeapon_WithAdditionalSimpleDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:244c95fa1a64663c48d5756c651be278256bded34ba002b3978541c9ac231801 -size 58881 +oid sha256:77db37616769fd9dd53f197e31e5084e8a15599abf16d38abcce97224d16bc5d +size 58828 diff --git a/Content/OpenPF2/Developers/GuyEP/TestRangedWeapon.uasset b/Content/OpenPF2/Developers/GuyEP/TestRangedWeapon.uasset index 9ebd6a68b..9bf984168 100644 --- a/Content/OpenPF2/Developers/GuyEP/TestRangedWeapon.uasset +++ b/Content/OpenPF2/Developers/GuyEP/TestRangedWeapon.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4659f4dc05a52367f215641409ce6f22cd3d149512dadf1c669cd7e545db8c50 -size 9768 +oid sha256:6b94c3926b9b5bccb166ef8834acf89341a28bf073d392674f23648a9f880efb +size 6534 diff --git a/Content/OpenPF2/Optional/Abilities/Attacks/AN_GameplayEvent.uasset b/Content/OpenPF2/Optional/Abilities/Attacks/AN_GameplayEvent.uasset index 414f54d76..52c18b06a 100644 --- a/Content/OpenPF2/Optional/Abilities/Attacks/AN_GameplayEvent.uasset +++ b/Content/OpenPF2/Optional/Abilities/Attacks/AN_GameplayEvent.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:36a83254e474495f67d951c2c597adf05a39759a9f5b1c88c1fdf19fa71a36e1 -size 64906 +oid sha256:16fe7ed461891b37d8a1a14c3efd8d179fcee69044a02077e0238e55ea43b160 +size 64025 diff --git a/Content/OpenPF2/Optional/Abilities/Attacks/BPML_AttackAbility.uasset b/Content/OpenPF2/Optional/Abilities/Attacks/BPML_AttackAbility.uasset index 54ac59d2c..2af706927 100644 --- a/Content/OpenPF2/Optional/Abilities/Attacks/BPML_AttackAbility.uasset +++ b/Content/OpenPF2/Optional/Abilities/Attacks/BPML_AttackAbility.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:da63d7ed42e2008712b39f6a903caa3008ca91fd2f10775a0fe8d454cc4b9bdc -size 44048 +oid sha256:b7e924428e356dd006db14b855ec5bb1ed058c70531623b8945bbd40d92f8779 +size 44038 diff --git a/Content/OpenPF2/Optional/Abilities/Attacks/BPML_MeleeAttackAbility.uasset b/Content/OpenPF2/Optional/Abilities/Attacks/BPML_MeleeAttackAbility.uasset index 1298e4dd7..5e75bb074 100644 --- a/Content/OpenPF2/Optional/Abilities/Attacks/BPML_MeleeAttackAbility.uasset +++ b/Content/OpenPF2/Optional/Abilities/Attacks/BPML_MeleeAttackAbility.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd20328abedf8507a389926b62fabe44807e2fec9bf661439b6767ce1c7bdc34 -size 23140 +oid sha256:5a6229a06a1a880f8a0f78a05f93ffda5d433f9759e3261802859d7a1f38e81e +size 23114 diff --git a/Content/OpenPF2/Optional/Abilities/Attacks/BPML_RangedAttackAbility.uasset b/Content/OpenPF2/Optional/Abilities/Attacks/BPML_RangedAttackAbility.uasset index 08c0e35af..f1320f881 100644 --- a/Content/OpenPF2/Optional/Abilities/Attacks/BPML_RangedAttackAbility.uasset +++ b/Content/OpenPF2/Optional/Abilities/Attacks/BPML_RangedAttackAbility.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2ad8c77617cbaa4f0fc7aec32543f45982c938b83c2d837a87e0176e822e91ac -size 22939 +oid sha256:a4a631ee8194b65599c0d1801dc863856118e144f9c843ce8f01be1d32cc7fc2 +size 22913 diff --git a/Content/OpenPF2/Optional/Abilities/Attacks/GA_AttackAbilityBase.uasset b/Content/OpenPF2/Optional/Abilities/Attacks/GA_AttackAbilityBase.uasset index 5d85a8d7c..eac7b2085 100644 --- a/Content/OpenPF2/Optional/Abilities/Attacks/GA_AttackAbilityBase.uasset +++ b/Content/OpenPF2/Optional/Abilities/Attacks/GA_AttackAbilityBase.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4f6a0b1ea97186e57445190e41d4a18ff3cfb701b88c5b3ef56f33a089d0984f -size 192654 +oid sha256:810acc20ca8fc2f3e0b5ebac6ee8f8198d76274d9120f305a10f6f9aef2896ce +size 192837 diff --git a/Content/OpenPF2/Optional/Abilities/Attacks/GA_MeleeAttackAbilityBase.uasset b/Content/OpenPF2/Optional/Abilities/Attacks/GA_MeleeAttackAbilityBase.uasset index 61adab7b4..3d95603b1 100644 --- a/Content/OpenPF2/Optional/Abilities/Attacks/GA_MeleeAttackAbilityBase.uasset +++ b/Content/OpenPF2/Optional/Abilities/Attacks/GA_MeleeAttackAbilityBase.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d4ac0f5667fded1bdb9757e4f5e3c4b2d55bd48d614196183520469ac7419fd5 -size 218897 +oid sha256:e86c8884c81884bf99fa48562d3deff6924e7fc4bd5520be3853f6263b6948ad +size 219014 diff --git a/Content/OpenPF2/Optional/Abilities/Attacks/GA_MeleeStrike.uasset b/Content/OpenPF2/Optional/Abilities/Attacks/GA_MeleeStrike.uasset index 79424ea9e..f8c6c66a8 100644 --- a/Content/OpenPF2/Optional/Abilities/Attacks/GA_MeleeStrike.uasset +++ b/Content/OpenPF2/Optional/Abilities/Attacks/GA_MeleeStrike.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1d85a5fbf566dd0f3ee9eef5822ee630a30f17ea4dad4e0483039f96fde0c371 -size 160428 +oid sha256:6a9eb63928a51ef31c5b522ce1863d82d19a1bcfe0020b3d38ce2e71da3c2491 +size 159025 diff --git a/Content/OpenPF2/Optional/Abilities/Attacks/GA_RangedAttackAbilityBase.uasset b/Content/OpenPF2/Optional/Abilities/Attacks/GA_RangedAttackAbilityBase.uasset index c3808c3ba..11b31f37a 100644 --- a/Content/OpenPF2/Optional/Abilities/Attacks/GA_RangedAttackAbilityBase.uasset +++ b/Content/OpenPF2/Optional/Abilities/Attacks/GA_RangedAttackAbilityBase.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c46e20a46b947513b506406a559f214ec36efb5817d2e3b70e7b693a9631995 -size 206225 +oid sha256:54c57b76d35a0834288336ba220561213bfaac9c3f0fdc2305a454500d0b7b9d +size 206270 diff --git a/Content/OpenPF2/Optional/Abilities/Attacks/GCN_InflictDamage.uasset b/Content/OpenPF2/Optional/Abilities/Attacks/GCN_InflictDamage.uasset index 6d9852857..150d8f3f2 100644 --- a/Content/OpenPF2/Optional/Abilities/Attacks/GCN_InflictDamage.uasset +++ b/Content/OpenPF2/Optional/Abilities/Attacks/GCN_InflictDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8e500c7ad261c7d920ab43106d8368473f4be2088ab813cde55dcc1dac3b713d -size 63550 +oid sha256:c99b8ad377e482fd44be788315492a147c9304932d90fe28701bf3e21c565056 +size 63187 diff --git a/Content/OpenPF2/Optional/Abilities/Attacks/WBP_DamageCallout.uasset b/Content/OpenPF2/Optional/Abilities/Attacks/WBP_DamageCallout.uasset index f7f755913..28dbd317d 100644 --- a/Content/OpenPF2/Optional/Abilities/Attacks/WBP_DamageCallout.uasset +++ b/Content/OpenPF2/Optional/Abilities/Attacks/WBP_DamageCallout.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bec9952137af1f0cf0682d9e0cd7e52fa8cfe5614e748bb8cecd3d3dfdaee045 -size 76725 +oid sha256:204525e4864a2e75aaae9434e5c18be4ff5e0d368524996c42a2a6b86994d4ed +size 76697 diff --git a/Content/OpenPF2/Optional/Abilities/Attacks/WC_DamageCallout.uasset b/Content/OpenPF2/Optional/Abilities/Attacks/WC_DamageCallout.uasset index 4f26bf5be..5f25cc988 100644 --- a/Content/OpenPF2/Optional/Abilities/Attacks/WC_DamageCallout.uasset +++ b/Content/OpenPF2/Optional/Abilities/Attacks/WC_DamageCallout.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d709080ed2872cc93fe611d8ce34be0e01a936c06139aeadf3f39dc351a2741d -size 122613 +oid sha256:49a79731a3f7a7201b7526778408f6ae23d8ce4c9adef4c132be94557fdc68b2 +size 122589 diff --git a/Content/OpenPF2/Optional/Abilities/BPML_Ability.uasset b/Content/OpenPF2/Optional/Abilities/BPML_Ability.uasset index 617ca1b19..9a31501be 100644 --- a/Content/OpenPF2/Optional/Abilities/BPML_Ability.uasset +++ b/Content/OpenPF2/Optional/Abilities/BPML_Ability.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d5b65ec9e0ce00f5f0c840bfdc0699cc07ad65b6400e369db9f52503a17e82a0 -size 90355 +oid sha256:9b8b4a67cac5cc6fd3191bf1b00c6d3615d87d9c4c3174babf987a1230c9f67a +size 90450 diff --git a/Content/OpenPF2/Optional/Abilities/Movement/GA_Stride.uasset b/Content/OpenPF2/Optional/Abilities/Movement/GA_Stride.uasset index ec9260789..59e3ad141 100644 --- a/Content/OpenPF2/Optional/Abilities/Movement/GA_Stride.uasset +++ b/Content/OpenPF2/Optional/Abilities/Movement/GA_Stride.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0046ced4d88103bdd9bdc5869ec9c1d6eb6a66c8371e525873e0a5a7a3735197 -size 78605 +oid sha256:05249158c9beef9fb93e4175e9063aee0879b6ffc0e34b539422c720291faa27 +size 78001 diff --git a/Content/OpenPF2/Optional/BTTask_PrintMessage.uasset b/Content/OpenPF2/Optional/BTTask_PrintMessage.uasset index e7d3b66cc..97e554cad 100644 --- a/Content/OpenPF2/Optional/BTTask_PrintMessage.uasset +++ b/Content/OpenPF2/Optional/BTTask_PrintMessage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3d2670876afb22cc437ad2e06bd776e5f39abc820e35d56a9424b57f4e06a3c2 -size 27884 +oid sha256:4e265855598211950f4b8c4582646ff64a8001ed6df5d5e381c84a2d4b417a13 +size 27686 diff --git a/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_Base.uasset b/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_Base.uasset index d26f3c6de..17216c055 100644 --- a/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_Base.uasset +++ b/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_Base.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:20ad94e61985c87d04e58492e53b1597b4ee80dab3fcd9a7f914f0e926aa12e7 -size 11244 +oid sha256:4e165e60f7710d629fbd635aae7af5c973efe2c62ad7c4c26f76850c2ddd19d9 +size 11292 diff --git a/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_HalfElf.uasset b/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_HalfElf.uasset index 51f02459a..c6c05b2c2 100644 --- a/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_HalfElf.uasset +++ b/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_HalfElf.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e2ca8d17296945a56e66598b786bd1b2f1665cfca6e7529d4d00485da2354ec -size 8861 +oid sha256:667009001aedcd5c53be3ffbf3edba06a658308bc58bc672a87f234c445a7aab +size 8890 diff --git a/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_HalfOrc.uasset b/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_HalfOrc.uasset index 10b6bd1c6..6ed5c9b1e 100644 --- a/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_HalfOrc.uasset +++ b/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_HalfOrc.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24ce3516c77c7d298c5a255c42e707555de18694eb2366568c62671ae1d1d1e7 -size 8387 +oid sha256:4b92f4afa2551613357eba1beb95257829324c1214aa2ca41ce94dda7f84e9d8 +size 8416 diff --git a/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_Versatile.uasset b/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_Versatile.uasset index 7343621a5..00f604396 100644 --- a/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_Versatile.uasset +++ b/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_Ancestry_Human_Versatile.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:710f42940c2503cf83dfc00c79aa4584b7270a2eadd7289dc0a087b1ac7ebf25 -size 14891 +oid sha256:1a902b3e62553d144341a502131c157817bf35aede89d6e6a1aad8056c6024d5 +size 14890 diff --git a/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_ApplyHumanAncestryBaseStats.uasset b/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_ApplyHumanAncestryBaseStats.uasset index 8b80bf123..beacbcba4 100644 --- a/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_ApplyHumanAncestryBaseStats.uasset +++ b/Content/OpenPF2/Optional/CharacterStats/Ancestries/Human/GE_ApplyHumanAncestryBaseStats.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:51b3a866dedeb9d393f82b112d9bd374137d47db3ea7a23fb97eb8a21c2a575d -size 31455 +oid sha256:e04537f30d0a6fab0666d5b5d671e5b243c70588acf1e17bbc3357c10a8ce22a +size 31484 diff --git a/Content/OpenPF2/Optional/Characters/BPFL_Character.uasset b/Content/OpenPF2/Optional/Characters/BPFL_Character.uasset index e562d1466..5f6085a3c 100644 --- a/Content/OpenPF2/Optional/Characters/BPFL_Character.uasset +++ b/Content/OpenPF2/Optional/Characters/BPFL_Character.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72533469a4028b23570446c1c7a712f435acd0562170b8fc4e7c7b79d5eb0dae -size 51170 +oid sha256:e254850fd0bc6267a3cfe3df0b67163737f62f1ffb596cd3b5055db076c600d1 +size 51158 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentChaoticDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentChaoticDamage.uasset index 19e42bb24..8d6280e34 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentChaoticDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentChaoticDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f3c0e119f35a4b389b7a25bacbd7f5ddcf3e51dbd044c647d781efa64bc83940 -size 19900 +oid sha256:e1cc6daa3e0cc694f5283b4473be4c5f524f1aae989cd105c77dbac3d5950a32 +size 19909 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentEvilDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentEvilDamage.uasset index 3251c7eb6..1851a77ad 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentEvilDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentEvilDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cea4de0426f369ada9a3a023b8cf66809b055af74ba9c8ec375d3b216f086e93 -size 19849 +oid sha256:561c8342f444f8c235ccd6c2572a5101864b53893091aba7d52b9f474d82f023 +size 19858 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentGoodDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentGoodDamage.uasset index 0d5c698ae..9e511501c 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentGoodDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentGoodDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8efa480e32d1b7e05fd055a99db9a97e03cd53daff277eb165f7a66be2521d7 -size 19849 +oid sha256:a116205d255fc105a183850029f3551f1cebf805a1da805d1b4c891a8b47557e +size 19858 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentLawfulDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentLawfulDamage.uasset index 7fe9aeac7..513d1ca85 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentLawfulDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyAlignmentLawfulDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac350aa66ba167d8b9d129da46b741c23dc598752607ea5dd4dd4ed492133c4c -size 19883 +oid sha256:eea4138f202f285584abebf30627bcbd49f3b58e0957a82a45ab505b38846a36 +size 19892 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyBleedDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyBleedDamage.uasset index 828632f68..3a58acccb 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyBleedDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyBleedDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64963531f1c6aac8410ad22b9ae3f442ea0f90ed82541aae9bfa0c51d3ca3f3e -size 19712 +oid sha256:79e28eab870311dfadc13b2e9168db735793d49671dcf396b62bcfa4db8c3cb0 +size 19721 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyAcidDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyAcidDamage.uasset index f63fb86c3..ef91d361a 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyAcidDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyAcidDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:230c76b32823e91d55203349f3605c61338fe7de19391977f56ec44640b3e59b -size 19798 +oid sha256:e9e0482bae0cd440c453076e44be8bea0d587bf1d1770c7a7401bedadf7ccc2a +size 19807 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyColdDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyColdDamage.uasset index 5de422a64..fedbc3ff1 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyColdDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyColdDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e887285a4561f983ced090644492c67d8c3495b9ed8a730a1b8bf931f73b7205 -size 19798 +oid sha256:e2b6151daf8d0212cdc74d3a925c97ed5a3cf34da14561f952b78ab9924d5634 +size 19807 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyElectricityDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyElectricityDamage.uasset index 5348b9d93..bb763a327 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyElectricityDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyElectricityDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:78bf3a9431e38cbabd4b7f14dde10f19aaf44aba076c25f2af63d6a399f3d7b9 -size 19932 +oid sha256:5ce32a6ad35cc3149e5d961489b107ebcc5c907d035d5f0bdc650f7f7e6edafd +size 19941 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyFireDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyFireDamage.uasset index 99ac256d9..3e9bc77d7 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyFireDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyFireDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:465a5c616ffe80251787001b47c0698578d1e1f59f4d488e099d50ab244486fe -size 20250 +oid sha256:1b9490ea167c21e29a4aa69cd8051fbeb70a414df61063ad519dd34ad71fdc4a +size 20259 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyForceDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyForceDamage.uasset index ad8d04411..796e1fe2d 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyForceDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyForceDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c13880e9cd618f5d36801ae665aad63eec7e51fd33518d2009545d1858650bd2 -size 19815 +oid sha256:cd66da4d412f193052ba0f4048a45234fc01afc338adf4240530a46d0ae1120d +size 19824 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyNegativeDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyNegativeDamage.uasset index 922464dc4..683f40806 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyNegativeDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyNegativeDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c12c815675e3761dcb7314789b5430721c22bd7d8a6b962e7249fae08c169cd -size 19866 +oid sha256:f4cd3a673606de964e54c3184912552db5288579f6232d109f269a016a0899c8 +size 19875 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyPositiveDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyPositiveDamage.uasset index adeca6360..d64806869 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyPositiveDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergyPositiveDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:653e285ac90d326a5d2f945f40b70c7c6486af84f3a6625eaf6008cf0ca14dad -size 19866 +oid sha256:a45b200aa9c11f9733a0d760ffdad93bcf577397980d4e73e66e5910725de004 +size 19875 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergySonicDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergySonicDamage.uasset index 3ad165d31..f006c29ab 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergySonicDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyEnergySonicDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:832b73354fbb04dbe83e3a595516cb70c83e3e072b137311ebed407e09b440bc -size 19815 +oid sha256:8903ab318086d250f5489cd2d1477e198db819e20c12ee0ccd1637de16cf7d84 +size 19824 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyMentalDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyMentalDamage.uasset index bd029dfd9..dbd4a59ad 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyMentalDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyMentalDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2fddb1e74c808301f3c80afe9ed120c6fe9b30489008454a39f91d1dbfbef420 -size 19729 +oid sha256:3c1ba796d77bba88e9e13ab469499d40956c1da004a6ae7c3befeaa82df7f6c1 +size 19738 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPhysicalBludgeoningDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPhysicalBludgeoningDamage.uasset index bf9d52262..1d944fdd7 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPhysicalBludgeoningDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPhysicalBludgeoningDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a678edb24ec94c81e2160df4bb4aff99e7ec5d156b1b0a651baaabeedfb63425 -size 19951 +oid sha256:fe5d910c406d2dfa56673d3a3baf69b916857605b5ed8b5451038ff804540310 +size 19960 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPhysicalPiercingDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPhysicalPiercingDamage.uasset index d6c316267..f3b6176da 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPhysicalPiercingDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPhysicalPiercingDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f17c82bb77f335c58eaca0101e73b47df724ee7b08b89112aa69190040fe63a -size 19900 +oid sha256:72ad0de16132dba8a96cbaac810232690bdbf68cd82f447f5b7009e28540fbad +size 19909 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPhysicalSlashingDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPhysicalSlashingDamage.uasset index 06a26f3fb..faf5af2df 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPhysicalSlashingDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPhysicalSlashingDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2b9f3276d7d7daf3d53caa593b5767fc0320a2c7f566abfa2265b9e2fef3126 -size 19900 +oid sha256:a0253bc487c2cc3bc4a626457e08185b164f91cc6b276ed93b12d2d406cbf0b7 +size 19909 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPoisonDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPoisonDamage.uasset index 711a08d70..187e3abb9 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPoisonDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPoisonDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4af560ac5acfc2df219e000421b1c4275b29b4aa60669fc598eb2657583eaf46 -size 19729 +oid sha256:2b31d93129cefe3525e83e49c0ebf35295602ff01380cef66a7ad3599c268b21 +size 19738 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPrecisionDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPrecisionDamage.uasset index c9edbe5c6..519e00688 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPrecisionDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Damage/GE_ApplyPrecisionDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1b160f5941092f2a2da4ce2996dca9db963009a04e7a170e3fa8b81193eccf52 -size 19780 +oid sha256:966f8890d931428e05190295319e5678e7a943c657b4c1a67fab260a523daec6 +size 19789 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentChaoticDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentChaoticDamage.uasset index 0baf6e94f..5f96e41bc 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentChaoticDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentChaoticDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e14f6a59b5442148c4ec69c8a0c124fdcae581e86d7f57fb7358bb23a86be4a2 -size 13492 +oid sha256:b2d03979416856da0f255aea18eaef489e1d4f019f54a6b39066b06a45943939 +size 13493 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentEvilDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentEvilDamage.uasset index 1d7315714..136cd983b 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentEvilDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentEvilDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:438064e3de0fb6b9fabc1f3b9a9f9c21aa68dd33481fb1fea1b54ccadd8ba49c -size 13444 +oid sha256:1bd654d916dc318516c7fd7129d57572202a6f859fa5f0d2f7886172b179ec1f +size 13445 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentGoodDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentGoodDamage.uasset index c1493fc70..f4302fd9e 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentGoodDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentGoodDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eecccc2edd6e03d6adacba2ca598279beaffd0b57da4d7e4a9b590fc5ca53968 -size 13444 +oid sha256:f8474d53bee8de18cc687d8234e0cf862955fa85a377de1e7951f4cfb447dd4b +size 13445 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentLawfulDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentLawfulDamage.uasset index 2fcbe4736..f404de58d 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentLawfulDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistAlignmentLawfulDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:31c05446cae46417b7bf00fed51b0145a02dbc0b2efa7ee181eb8e6bf32f273d -size 13476 +oid sha256:e1ea6431cd547d8416c8b401dfca35baf617a64376149c185c61f8168d4444fe +size 13477 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistBleedDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistBleedDamage.uasset index 13d57f088..1089147b1 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistBleedDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistBleedDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:056ee0e6cb150516407325423a0401dd6d6dbf58ca78668c3bed42cb2429076b -size 13316 +oid sha256:f066ef98c411c4a8923c7aeaade6f2161c44a8115e9da3b4633698a036aad6e0 +size 13317 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyAcidDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyAcidDamage.uasset index 2fb0f2fa3..5ffdc07ce 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyAcidDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyAcidDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6a575be233cc531d92760c1e5358c7d64e5ac3456414092bffb57551c8bb3cc9 -size 13396 +oid sha256:0495b3114bf4b37ebddb1bae14f3a96497e79d0810f684c81c4e679cd84163d1 +size 13397 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyColdDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyColdDamage.uasset index f5d1e323b..43a3ce03c 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyColdDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyColdDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f9a9246a7a561ff777e1e2b1f2948a4a302738f9812e53189299d60d05f957c -size 13396 +oid sha256:d49a14a95913d9a381d8974327ffda698ef4b8d1aaa1402033d1c1b45d9976a3 +size 13397 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyElectricityDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyElectricityDamage.uasset index 8c138b333..67cdc1df9 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyElectricityDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyElectricityDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44d6bd48236e1bb6dea83b885e960772c75a492b7078f341d28fe7a25f7986fe -size 13508 +oid sha256:19f53b23a467b1dc1b7cdfdefd280b92f93672aff5ec5cbe92867650872b0a87 +size 13509 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyFireDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyFireDamage.uasset index d1d97f487..acb422d7a 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyFireDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyFireDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ee33b247ef28141f54001b07bee1d7e903480bfd53e02ab3da9a5b5322a0455e -size 13396 +oid sha256:0eeedac698e72207efe3bd4149c1d476f6ada13402aae419575efdfefbd7a6c2 +size 13397 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyForceDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyForceDamage.uasset index 7c82536d4..6018c58e2 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyForceDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyForceDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:039dc0c78fbd841d3df17d17277df91b808bfafd72a262a158fe5b5d98f908a1 -size 13412 +oid sha256:415b0c188f16fd738ac7fb6b20f06c547b098005db9eb37f9563e4db5de18b1d +size 13413 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyNegativeDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyNegativeDamage.uasset index 129818c2c..9e804cd3f 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyNegativeDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyNegativeDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5cd4c78ee9714db80a36e179b50224f2daa93c11f54396d5225391d08492bde0 -size 13460 +oid sha256:caa27f764272ea1e4e7fa368b2813f3350dd823cda2d6924391494290b176737 +size 13461 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyPositiveDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyPositiveDamage.uasset index 35413593b..d21f5a7eb 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyPositiveDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergyPositiveDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7694551763a0a78cc170885b76d1b4c336ced6a9843cb3c93d78c0b2a478abb3 -size 13460 +oid sha256:3fdd7544e3398f53b7354fca53c07fae54d61b80e685de2d303d0cfbee0d8868 +size 13461 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergySonicDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergySonicDamage.uasset index 171fee975..3385dba3d 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergySonicDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistEnergySonicDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1673416d5010ab055dce9a13e8c7ce556ba6b283bfe47fdc2966ead525148a45 -size 13412 +oid sha256:73caaa9da620d101635fefefdec2ee3da29fbe9046cdba695188de1de755c8a0 +size 13413 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistMentalDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistMentalDamage.uasset index 35557b081..c0204b9be 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistMentalDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistMentalDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1bb6a6036797ff4ee35f39b2a3a9002eec91a7bb6830c1367fbb92c4b23e59d -size 13332 +oid sha256:46291e29676e685e8f939d5bbc568e1f3c586ff29815e98db117727d11952870 +size 13333 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPhysicalBludgeoningDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPhysicalBludgeoningDamage.uasset index 78609b7e1..d0a7987db 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPhysicalBludgeoningDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPhysicalBludgeoningDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2c3c8618ec5ef07144c9fef3d88c717215ad5e15a897aca3ea3b5281c7c46129 -size 13540 +oid sha256:a9d47a442286b0b191a172481e40a95171717e2c02ea67a2a7a1882f7084bbb6 +size 13541 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPhysicalPiercingDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPhysicalPiercingDamage.uasset index d4609200d..759a1d7ac 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPhysicalPiercingDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPhysicalPiercingDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b6fc72d8dd1a373a4843b688841e16e56fbc10b5b6fb910de8efdd100ec2a0a0 -size 13492 +oid sha256:7ce7496319002126121c7d1ec563213afd5eb2a35bf2abc01105d8989b03e48d +size 13493 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPhysicalSlashingDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPhysicalSlashingDamage.uasset index 187fb89e6..22241ea46 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPhysicalSlashingDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPhysicalSlashingDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4ff35373f4669b5b3a1a1c9039b043088e3b6ae96f3d85c3d4904a215b098a32 -size 13492 +oid sha256:1505f34e30d8537bb676c3a0392c2ed2d70cd943336ababca560dc52287dcdf7 +size 13493 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPoisonDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPoisonDamage.uasset index 33b6b8621..c8daf766c 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPoisonDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPoisonDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:79bf246960b2e1cfb8981a396bdc154374d597684b44cbd90b75f39664421269 -size 13332 +oid sha256:440bd0ebfe9e6b401b0d79d658add76474e34434ab4f39f86e3016405cdb0349 +size 13333 diff --git a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPrecisionDamage.uasset b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPrecisionDamage.uasset index 99c5853dc..d4d9fd10a 100644 --- a/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPrecisionDamage.uasset +++ b/Content/OpenPF2/Optional/GameplayEffects/Anytime/Resistance/GE_ResistPrecisionDamage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:39b54d8ea8fc861705bdebeb6178ac352fd263c532bd715433619ffcf52bab30 -size 13380 +oid sha256:994b48f2692fc586565ac4b0433767a2bd1f05fd51a40f99511b74dafd8c9401 +size 13381 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Downtime/BP_MoPRS_Downtime.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Downtime/BP_MoPRS_Downtime.uasset index 3ba00ca6d..cc8e3ac65 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Downtime/BP_MoPRS_Downtime.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Downtime/BP_MoPRS_Downtime.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f718297cb76245c94a9c1777bd440b6ccd951deb913a44e6f9728213989e261 -size 23787 +oid sha256:afdd506af34c16c10e7a230936c9e07dc2faab016bb011ae6c47c8a053843651 +size 24712 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BP_MoPRS_Encounter.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BP_MoPRS_Encounter.uasset index 209d65028..d0a25665a 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BP_MoPRS_Encounter.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BP_MoPRS_Encounter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0d15892b19866115b8562991c906e41a2131cdf24f5beb643e6252ac11604a1b -size 291412 +oid sha256:a16c989b95879d1615e16313049880446a929c5f93f014d02f0002fcb3a1121b +size 291765 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_ArePlayableCharactersAvailable.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_ArePlayableCharactersAvailable.uasset index ad9a89b31..e7e89af1b 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_ArePlayableCharactersAvailable.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_ArePlayableCharactersAvailable.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d985aeb5000762798ad7b3a33e55a451a2c7fcad26a1d4f283bc9ad9e2d40812 -size 32273 +oid sha256:c0fff5012cf21f156d8d1c8a65ab5e77a36660cb2dad0c21c30996271efaf298 +size 32288 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_CanActiveCharacterEndTurn.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_CanActiveCharacterEndTurn.uasset index 8c7dce95d..bfd1abfc5 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_CanActiveCharacterEndTurn.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_CanActiveCharacterEndTurn.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5583c1f36ed2526a92fbd8bb2cb22f6d8c23325a7653bd1ea6fe279bf93c806d -size 60040 +oid sha256:fa5776e8fc357961a3413801341b8a78ff92da23013ddf104673904788a566ff +size 60089 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_DoesActiveCharacterHaveActionPoints.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_DoesActiveCharacterHaveActionPoints.uasset index 87f99ce79..4b445cb47 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_DoesActiveCharacterHaveActionPoints.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_DoesActiveCharacterHaveActionPoints.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9508d5c092ca87adfd49074d6777e99b8f0b976f270c3ce5087091ce4e38614 -size 64973 +oid sha256:e4270527e7b4322612ea930e622bc613278845a4f037a1abaf82180ae33553c0 +size 65042 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_DoesAnyCharacterHaveQueuedActions.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_DoesAnyCharacterHaveQueuedActions.uasset index 1d41fbf3d..55bd1c7b9 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_DoesAnyCharacterHaveQueuedActions.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_DoesAnyCharacterHaveQueuedActions.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:deb7b28cf05b985a002751fcd698300d0fbe1fa6cf9b94bf33ec15c57a40987c -size 56634 +oid sha256:b40a36b95d4ab3b6fc938814e46f0db1aa3ea37ec10b99c29a02fbcced47830a +size 56667 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_HaveActiveCharacter.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_HaveActiveCharacter.uasset index 6b14d86d2..e978050e4 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_HaveActiveCharacter.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_HaveActiveCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1326ebf97d0287d01bf4e2fafe86dad70b57c4d8ff4711a74fcea6c909510c58 -size 49255 +oid sha256:c02b15f93cf3e5bc10ce301e12e3c69bc4a526ff392981360e91eb8b4c12c7f6 +size 49288 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_IsActiveCharacterInEncounter.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_IsActiveCharacterInEncounter.uasset index 98f07e58f..707734f00 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_IsActiveCharacterInEncounter.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTDecorator_IsActiveCharacterInEncounter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fe1bf305a5491c07e88981bfeacff68fa547722a5dca0082d7248afff274ed09 -size 54555 +oid sha256:2ffa047c8cffe92381e57059ca957668acb5ed14322a3c81678f2c755fedd218 +size 54588 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTTask_PerformNextQueuedAction.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTTask_PerformNextQueuedAction.uasset index 9df1a1469..13557549d 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTTask_PerformNextQueuedAction.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTTask_PerformNextQueuedAction.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f828271c9f82781283e006403cba80056602d6f5fdaf6af33a95733940a5ad72 -size 70662 +oid sha256:cb89d815fad64fdefd5a2a57176b52356bfbb7a0cf7245d684d39372a76f5e7b +size 70713 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTTask_StartTurnForNextCharacter.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTTask_StartTurnForNextCharacter.uasset index e4d945ef9..8414059a0 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTTask_StartTurnForNextCharacter.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/BTTask_StartTurnForNextCharacter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f58a63cacdc16cd6bf069f4aa4231ea16615aab8653bb2939f052ba240914391 -size 86547 +oid sha256:73a37b52c1b666be9b79e3c5e3e166946e11793f0ea512388f870056ea7d569d +size 86580 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GA_EnterEncounter.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GA_EnterEncounter.uasset index 19eded7fd..cd9b719e9 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GA_EnterEncounter.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GA_EnterEncounter.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2118552fe4994de4138387d68c56420c0f4aac477c2b97617c1bf484a5974b8b -size 27677 +oid sha256:538e2f29bde30af22d838830ae94fb1d5b951929030bc25ce6edb2262826baf7 +size 27646 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GA_TakeTurn.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GA_TakeTurn.uasset index 07e0f9044..10d1f44a9 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GA_TakeTurn.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GA_TakeTurn.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dcae10c2d9915eab9b119c778c9ee20c498bb341b05646659ea6f3207f8cfb7b -size 41261 +oid sha256:536a39d0fb56c5e463852c45a1bdecf3258639dbae2ae64ecbba0a1d48d3b903 +size 41246 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_FreeAction.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_FreeAction.uasset index 16ff81cac..2af55c8e8 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_FreeAction.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_FreeAction.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e525f528c67f9db55e6f7c9147dc9d4705ae0162156cf94f1af83b38f55cb50 -size 17707 +oid sha256:e68ec2c47c8dedf236a2b1d57eb6f19d40b45ec74b3a689d8b16f6e030ffa348 +size 17700 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_MultipleAttackPenalty.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_MultipleAttackPenalty.uasset index 160ab4a14..704f61778 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_MultipleAttackPenalty.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_MultipleAttackPenalty.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8e2302047967c708f456232c39c74d8d16a77c29b4276a19555e79a5ed3f289 -size 13525 +oid sha256:7779d299161e6f581d423e15b6b2a22f251dec5ed11b93b820979f6f1a9a26d4 +size 13518 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_Reaction.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_Reaction.uasset index d53d414a3..fc04bac90 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_Reaction.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_Reaction.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fd810f6e284de0ea494434e0cbd71a3cd1d728a6437073904c131abb30fd66b4 -size 17677 +oid sha256:2c29cbdf2bf017647b0c2f72780f0153bcaf3074e413695cac32eb6644a1668b +size 17670 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_SingleAction.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_SingleAction.uasset index d0033dae8..fb9282d8d 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_SingleAction.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_SingleAction.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f0a05cf0f1dd79c28d9d4e03bad9058ae11941363c1756b79b5a36ea988e5fe7 -size 18189 +oid sha256:e38f2b590267f119dd6783c1fa77475f648755909f652a731903f8a123369987 +size 18182 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_SingleAction_Attack.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_SingleAction_Attack.uasset index 090429b99..c9dceee2e 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_SingleAction_Attack.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_SingleAction_Attack.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c3e839881f0873bb2ea3b4b8c9b8c0b1708bcc9f1ac6ba68fa7b3f7836bb88f -size 22640 +oid sha256:df10ce39e7e5716474e7b4b6bcbb98ec11847aa7454360cb8f7a0c60c388b331 +size 22621 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_ThreeAction_Activity.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_ThreeAction_Activity.uasset index bcaad93cc..211265de7 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_ThreeAction_Activity.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_ThreeAction_Activity.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:308aed3e644dcc3a33b4fc197bf3262b14ba61efb6fc9954bc3e0b94582861a0 -size 17855 +oid sha256:43c78204fbd4da0a1126e268a4387ae3d6688cf576a24bc92e11f75d271893d2 +size 17848 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_ThreeAction_Attack.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_ThreeAction_Attack.uasset index 62e176479..fd2615e78 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_ThreeAction_Attack.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_ThreeAction_Attack.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5e71c85f6b3f58c1e1a93f8fa8719e80289fecc225f0e6b22321b27e69db5fbb -size 22697 +oid sha256:a6539c5810b5e5a7b0672cadb263c1069ce09ddbdf2bd35d1d8a397bbca2c52c +size 22678 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_TwoAction_Activity.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_TwoAction_Activity.uasset index 3ddfc22e5..9f79687ff 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_TwoAction_Activity.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_TwoAction_Activity.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:408897bdb8a49195aee5939623d9534c0577d1e4199ce43d0195ff2f734fdaf2 -size 17825 +oid sha256:9f5cfca1eb13a9e166a8e8ac79bfcb614e37271e273f3f95fd78bc068d683335 +size 17818 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_TwoAction_Attack.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_TwoAction_Attack.uasset index 111e1af7d..f3c1dd992 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_TwoAction_Attack.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_Cost_TwoAction_Attack.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6cea037dafad0799f1c0286e14c7c8b6dfa4504b1cbe60fea598269dd04be294 -size 22653 +oid sha256:7604f3713898f41b64d571cc1855f3849ad6fca4d41961f27b867c42a8663bd9 +size 22634 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_EncounterTurnActive.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_EncounterTurnActive.uasset index 53d529618..0a9e70473 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_EncounterTurnActive.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_EncounterTurnActive.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c0d9f73edcd23f2e90d288e6203b4ffa4c4c40d6523aaf6cf9395855c5e5a25 -size 9639 +oid sha256:78c1d2a2f9eaa89e15ca590234aa466084fa13a721685e08bacd6c73da7df17f +size 9632 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_EncounterTurnCooldown.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_EncounterTurnCooldown.uasset index 9e4fa2ec9..fe901138a 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_EncounterTurnCooldown.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_EncounterTurnCooldown.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:41beeccea7ae6bb4b6732716b2d61a242be5b25d9461f51857808d3bdbe5baae -size 8251 +oid sha256:44d077e0d2294123e2327a79a413379b0c3b2d48ffb8d5ee876394e85325a097 +size 8244 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_InitializeEncounterPoints.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_InitializeEncounterPoints.uasset index 6fc86bd97..028df3c2b 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_InitializeEncounterPoints.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_InitializeEncounterPoints.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c5a7ea0547c13d8dd164329d6929b12e7d13634d19324ba637e16d8d161bd47 -size 36287 +oid sha256:1f71e684b814e10607e41cee10ea62588d914393c1ef565782f82e9cf0cd6778 +size 36280 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_ResetEncounterPoints_Instant.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_ResetEncounterPoints_Instant.uasset index 5bf5da2f0..55634703e 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_ResetEncounterPoints_Instant.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_ResetEncounterPoints_Instant.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4e072767f6152073419a07514c5954d4c1f2f4719edb50ef8aea02c7328f1343 -size 23526 +oid sha256:ba3e289c54b8a79dc584d06a33947d62201d54fc16b50c4eaea4682203d45c71 +size 23519 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_ResetEncounterPoints_Periodic.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_ResetEncounterPoints_Periodic.uasset index 73050b820..633b391a7 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_ResetEncounterPoints_Periodic.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/GE_ResetEncounterPoints_Periodic.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d1cfdf8e71269413e9eddfaa5d562a67d2dca34d1d34012e1024098200b6069a -size 25735 +oid sha256:955230917e021fdf785b6551e924696149ac9ccd4eaac1a6822196d63f5cc6b1 +size 25737 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BPI_MovementGrid.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BPI_MovementGrid.uasset index 8e880efe6..f80e1ee4f 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BPI_MovementGrid.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BPI_MovementGrid.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b04c595cf26e3bd194a8e15a461b03abbed92db3ecbcb1eaac4b83a36e4a3fd0 -size 44405 +oid sha256:d3024e064b811e35515609af48f8096f57df4cc7b4609bc255c44deaa8755263 +size 44393 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BPI_MovementGridCell.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BPI_MovementGridCell.uasset index d7dab1e4c..e65c3019b 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BPI_MovementGridCell.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BPI_MovementGridCell.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:920596bb754818701e5f4d545fe2489a8d713a5016412fefaaeebd6266a9935b -size 26342 +oid sha256:63c64a012cd38f6c2732812686b9d42bbaaea1847370cc6bb9c6db789e68d7ff +size 26330 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BP_SquareMovementGrid.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BP_SquareMovementGrid.uasset index f0676f433..74c9caf18 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BP_SquareMovementGrid.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BP_SquareMovementGrid.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:482b42a30942cb03a1754928bfe3b1a8408d14df496f265eaad35a25bb08a053 -size 437809 +oid sha256:eddb77db3c7d6461c3dcb26ea13bcfecc34e07d6c61bcd61a22e625b3dee0f5a +size 437705 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BP_SquareMovementGridCell.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BP_SquareMovementGridCell.uasset index d75a9b523..36b42566d 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BP_SquareMovementGridCell.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Encounter/MovementGrid/BP_SquareMovementGridCell.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:65ac9be12ebcacbcc59b6aa55a027e1658de6e91ec1601f921a415310ed7c4e8 -size 182702 +oid sha256:b5827e3e123395f903fd46a3b96fece71fc30cc61a160463361015577327620f +size 182662 diff --git a/Content/OpenPF2/Optional/ModesOfPlay/Exploration/BP_MoPRS_Exploration.uasset b/Content/OpenPF2/Optional/ModesOfPlay/Exploration/BP_MoPRS_Exploration.uasset index 7d53230f2..7bacb30ff 100644 --- a/Content/OpenPF2/Optional/ModesOfPlay/Exploration/BP_MoPRS_Exploration.uasset +++ b/Content/OpenPF2/Optional/ModesOfPlay/Exploration/BP_MoPRS_Exploration.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:86de48801ba0ff5906931201c0858ae6cab7e96d4edf70ff0dd468f4ad8ddbb1 -size 98941 +oid sha256:bca533e88673b99509987c726e5d4739445ee4b16687b4055052ee0510f47fef +size 99116 diff --git a/Content/OpenPF2/Optional/Placeables/BP_PeriodicDamageVolume.uasset b/Content/OpenPF2/Optional/Placeables/BP_PeriodicDamageVolume.uasset index 772f1a9d2..f7a96fb40 100644 --- a/Content/OpenPF2/Optional/Placeables/BP_PeriodicDamageVolume.uasset +++ b/Content/OpenPF2/Optional/Placeables/BP_PeriodicDamageVolume.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f16b67953edc06506db4ce19bf5f4a7f661eaf397245551a747fb5c2db2f031b -size 105933 +oid sha256:105a1f224eff504e8cf468f76e4b7174489ad20bae2885677e2e3d3bb603a4f7 +size 105956 diff --git a/Content/OpenPF2/Optional/UI/AbilityBoosts/WBP_BoostSelectDialog.uasset b/Content/OpenPF2/Optional/UI/AbilityBoosts/WBP_BoostSelectDialog.uasset index d0665f8e4..c99154583 100644 --- a/Content/OpenPF2/Optional/UI/AbilityBoosts/WBP_BoostSelectDialog.uasset +++ b/Content/OpenPF2/Optional/UI/AbilityBoosts/WBP_BoostSelectDialog.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:81f498ab18121494c70127bee172fad7ea5795a63c638090dd557ee29f5af702 -size 289988 +oid sha256:1360059ec8013c02906881cad7ac9b6399be9a72d6174a12cdd85ecbd485f63b +size 288930 diff --git a/Content/OpenPF2/Optional/UI/AbilityBoosts/WBP_BoostSelectRow.uasset b/Content/OpenPF2/Optional/UI/AbilityBoosts/WBP_BoostSelectRow.uasset index bb93572fb..023c54884 100644 --- a/Content/OpenPF2/Optional/UI/AbilityBoosts/WBP_BoostSelectRow.uasset +++ b/Content/OpenPF2/Optional/UI/AbilityBoosts/WBP_BoostSelectRow.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3593b1a39149c311cd6fc8430dabf7e366d01b5ceac083ea353f30652d4f2f28 -size 84847 +oid sha256:2e6688eb226f2e9a78e27fe8b29c758cfb57156e1067dc429c8e62fd7111b816 +size 84872 diff --git a/Content/OpenPF2/Optional/UI/WBP_DialogBoxBase.uasset b/Content/OpenPF2/Optional/UI/WBP_DialogBoxBase.uasset index e755c8fd7..1643abd9b 100644 --- a/Content/OpenPF2/Optional/UI/WBP_DialogBoxBase.uasset +++ b/Content/OpenPF2/Optional/UI/WBP_DialogBoxBase.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9d75fe8d319c513945dd797504c2f382c5c71200ed8b3c82721e7383aabe99e -size 41988 +oid sha256:02242ec4709629801b3d8fccb26fdaceecbd558488a68c119b805731c15ec321 +size 41976 From 0283bf818db0e974084e3a72f78e57d227ae82bc Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Tue, 16 Jul 2024 00:02:49 -0400 Subject: [PATCH 09/16] [#60] Eliminate `FGameplayTag::GetTag()` This was identical to `FGameplayTag::RequestGameplayTag()` in the `FName` case, and not that much extra effort to invoke `FName()` ourselves in the `FString` case, so it doesn't make sense for this to exist. --- .../Attacks/PF2AttackAttributeStatics.cpp | 2 +- .../Components/PF2AbilitySystemComponent.cpp | 4 +-- .../CharacterStats/PF2TemlCalculation.cpp | 4 +-- .../Utilities/PF2GameplayAbilityUtilities.cpp | 4 ++- .../Utilities/PF2GameplayAbilityUtilities.h | 32 ------------------- .../Private/Tests/PF2SpecBase.cpp | 4 +-- 6 files changed, 10 insertions(+), 40 deletions(-) diff --git a/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2AttackAttributeStatics.cpp b/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2AttackAttributeStatics.cpp index b4e593007..873529eb5 100644 --- a/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2AttackAttributeStatics.cpp +++ b/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2AttackAttributeStatics.cpp @@ -56,7 +56,7 @@ FGameplayTag FPF2AttackAttributeStatics::GetDamageTypeForDamageAttribute(const F { if (Pair.Value == Attribute.AttributeName) { - FoundTag = PF2GameplayAbilityUtilities::GetTag(Pair.Key); + FoundTag = FGameplayTag::RequestGameplayTag(Pair.Key); break; } } diff --git a/Source/OpenPF2GameFramework/Private/Actors/Components/PF2AbilitySystemComponent.cpp b/Source/OpenPF2GameFramework/Private/Actors/Components/PF2AbilitySystemComponent.cpp index 3b9fa37c6..e86e36211 100644 --- a/Source/OpenPF2GameFramework/Private/Actors/Components/PF2AbilitySystemComponent.cpp +++ b/Source/OpenPF2GameFramework/Private/Actors/Components/PF2AbilitySystemComponent.cpp @@ -429,7 +429,7 @@ bool UPF2AbilitySystemComponent::DeactivatePassiveGameplayEffects(const FName We Query.EffectTagQuery = FGameplayTagQuery::MakeQuery_MatchAnyTags( - FGameplayTagContainer(PF2GameplayAbilityUtilities::GetTag(WeightGroup)) + FGameplayTagContainer(FGameplayTag::RequestGameplayTag(WeightGroup)) ); NumRemoved = this->RemoveActiveEffects(Query); @@ -785,7 +785,7 @@ void UPF2AbilitySystemComponent::ActivatePassiveGameplayEffect( // Ensure that the GE spec is tagged with its weight no matter how the weight was set (either through API or through // a tag in the InheritableGameplayEffectTags field on the GE definition class itself). Without this, only the tag // from the GE definition spec would pass through. - GameplayEffectSpec->AddDynamicAssetTag(PF2GameplayAbilityUtilities::GetTag(WeightGroup)); + GameplayEffectSpec->AddDynamicAssetTag(FGameplayTag::RequestGameplayTag(WeightGroup)); // Special case: If the GE being activated is our "dummy" GE for dynamic tags, apply tags to it. // diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp index 526d12220..302e7fed4 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp @@ -15,12 +15,12 @@ #include "Utilities/PF2GameplayAbilityUtilities.h" FPF2TemlCalculation::FPF2TemlCalculation(const FString& TagPrefix, const FGameplayEffectSpec& Spec) : - FPF2TemlCalculation(PF2GameplayAbilityUtilities::GetTag(TagPrefix), Spec) + FPF2TemlCalculation(FName(TagPrefix), Spec) { } FPF2TemlCalculation::FPF2TemlCalculation(const FName TagPrefix, const FGameplayEffectSpec& Spec) : - FPF2TemlCalculation(PF2GameplayAbilityUtilities::GetTag(TagPrefix), Spec) + FPF2TemlCalculation(FGameplayTag::RequestGameplayTag(TagPrefix), Spec) { } diff --git a/Source/OpenPF2GameFramework/Private/Utilities/PF2GameplayAbilityUtilities.cpp b/Source/OpenPF2GameFramework/Private/Utilities/PF2GameplayAbilityUtilities.cpp index 34c1e91b5..cc83c09f7 100644 --- a/Source/OpenPF2GameFramework/Private/Utilities/PF2GameplayAbilityUtilities.cpp +++ b/Source/OpenPF2GameFramework/Private/Utilities/PF2GameplayAbilityUtilities.cpp @@ -13,6 +13,8 @@ #include "CharacterStats/PF2CharacterAbilitySystemInterface.h" +#include "GameplayTags/GameplayEffects/WeightGroups.h" + /** * Utility logic for working with Gameplay Abilities. */ @@ -32,7 +34,7 @@ namespace PF2GameplayAbilityUtilities FName GetWeightGroupOfGameplayEffect(const TSubclassOf GameplayEffect, const FName DefaultWeight) { FName WeightGroup; - const FGameplayTag WeightTagParent = GetTag(FName(TEXT("PF2.GameplayEffect.WeightGroup"))); + const FGameplayTag WeightTagParent = Pf2TagGameplayEffectWeightGroups; const UGameplayEffect* Effect = GameplayEffect.GetDefaultObject(); const FGameplayTagContainer WeightTags = Effect->GetAssetTags().Filter(FGameplayTagContainer(WeightTagParent)); diff --git a/Source/OpenPF2GameFramework/Public/Utilities/PF2GameplayAbilityUtilities.h b/Source/OpenPF2GameFramework/Public/Utilities/PF2GameplayAbilityUtilities.h index 0ab754d9c..a514aa2dc 100644 --- a/Source/OpenPF2GameFramework/Public/Utilities/PF2GameplayAbilityUtilities.h +++ b/Source/OpenPF2GameFramework/Public/Utilities/PF2GameplayAbilityUtilities.h @@ -26,38 +26,6 @@ class UPF2CharacterAttributeSet; */ namespace PF2GameplayAbilityUtilities { - /** - * Gets the specified tag out of the tags known to the project. - * - * The tag must already exist in one of the INI files under Config/Tags; otherwise, this will trigger an error. - * - * @param TagName - * The name of the tag, as an FName. - * - * @return - * The desired tag. - */ - FORCEINLINE OPENPF2GAMEFRAMEWORK_API FGameplayTag GetTag(const FName& TagName) - { - return FGameplayTag::RequestGameplayTag(TagName); - } - - /** - * Gets the specified tag out of the tags known to the project. - * - * The tag must already exist in one of the INI files under Config/Tags; otherwise, this will trigger an error. - * - * @param TagName - * The name of the tag, as a string. - * - * @return - * The desired tag. - */ - FORCEINLINE OPENPF2GAMEFRAMEWORK_API FGameplayTag GetTag(const FString& TagName) - { - return GetTag(FName(TagName)); - } - /** * Checks if a tag with the given name or prefix is present. * diff --git a/Source/OpenPF2Tests/Private/Tests/PF2SpecBase.cpp b/Source/OpenPF2Tests/Private/Tests/PF2SpecBase.cpp index 46ac9253c..92a7a4877 100644 --- a/Source/OpenPF2Tests/Private/Tests/PF2SpecBase.cpp +++ b/Source/OpenPF2Tests/Private/Tests/PF2SpecBase.cpp @@ -343,12 +343,12 @@ FActiveGameplayEffectHandle FPF2SpecBase::InitializeAttributeAndApplyEffect( void FPF2SpecBase::ApplyUnreplicatedTag(const FString& TagName) const { - this->TestPawnAsc->AddLooseGameplayTag(PF2GameplayAbilityUtilities::GetTag(TagName)); + this->TestPawnAsc->AddLooseGameplayTag(FGameplayTag::RequestGameplayTag(FName(TagName))); } void FPF2SpecBase::RemoveUnreplicatedTag(const FString& TagName) const { - this->TestPawnAsc->RemoveLooseGameplayTag(PF2GameplayAbilityUtilities::GetTag(TagName)); + this->TestPawnAsc->RemoveLooseGameplayTag(FGameplayTag::RequestGameplayTag(FName(TagName))); } void FPF2SpecBase::TestCharacterHasCondition(const TScriptInterface& Character, From 680aef6819b8418d6718a0a54b24ca718885373f Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Tue, 16 Jul 2024 00:05:33 -0400 Subject: [PATCH 10/16] [#60] Move `FGameplayAbilityUtilities::HasTag()` into `PF2TagLibrary`... ...as `ContainerHasTag()`. This makes more sense with the other tag-related utility methods in the library. We're also able to expose it to Blueprint, as long as we take in a const reference instead of a pointer. --- .../PF2KeyAbilityTemlCalculationBase.cpp | 5 +-- .../CharacterStats/PF2TemlCalculation.cpp | 10 +++-- .../Public/Libraries/PF2TagLibrary.h | 37 +++++++++++++++++++ .../Utilities/PF2GameplayAbilityUtilities.h | 37 ------------------- 4 files changed, 45 insertions(+), 44 deletions(-) diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2KeyAbilityTemlCalculationBase.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2KeyAbilityTemlCalculationBase.cpp index 4b4a37f0a..241ce1093 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2KeyAbilityTemlCalculationBase.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2KeyAbilityTemlCalculationBase.cpp @@ -18,6 +18,7 @@ #include "CharacterStats/PF2TemlCalculation.h" #include "Libraries/PF2AbilitySystemLibrary.h" +#include "Libraries/PF2TagLibrary.h" #include "Utilities/PF2GameplayAbilityUtilities.h" @@ -144,9 +145,7 @@ FGameplayEffectAttributeCaptureDefinition UPF2KeyAbilityTemlCalculationBase::Det for (auto PairIterator = this->KeyAbilityCaptureDefinitions.CreateConstIterator(); PairIterator; ++PairIterator) { - const FString TagName = PairIterator.Key(); - - if (PF2GameplayAbilityUtilities::HasTag(SourceTags, TagName)) + if (const FString TagName = PairIterator.Key(); UPF2TagLibrary::ContainerHasTag(*SourceTags, TagName)) { KeyAbilityCaptureDefinition = PairIterator.Value(); break; diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp index 302e7fed4..c98538e73 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp @@ -12,6 +12,8 @@ #include "CharacterStats/PF2TemlCalculation.h" +#include "Libraries/PF2TagLibrary.h" + #include "Utilities/PF2GameplayAbilityUtilities.h" FPF2TemlCalculation::FPF2TemlCalculation(const FString& TagPrefix, const FGameplayEffectSpec& Spec) : @@ -50,22 +52,22 @@ FPF2TemlCalculation::FPF2TemlCalculation(const FGameplayTag TagPrefix, // // Source: Pathfinder 2E Core Rulebook, page 444, "Step 1: Roll D20 and Identify The Modifiers, Bonuses, and // Penalties That Apply". - if (PF2GameplayAbilityUtilities::HasTag(CharacterTags, TagPrefixString + ".Legendary")) + if (UPF2TagLibrary::ContainerHasTag(*CharacterTags, TagPrefixString + ".Legendary")) { // Legendary -> Your level + 8 ProficiencyBonus = CharacterLevel + 8; } - else if (PF2GameplayAbilityUtilities::HasTag(CharacterTags, TagPrefixString + ".Master")) + else if (UPF2TagLibrary::ContainerHasTag(*CharacterTags, TagPrefixString + ".Master")) { // Master -> Your level + 6 ProficiencyBonus = CharacterLevel + 6; } - else if (PF2GameplayAbilityUtilities::HasTag(CharacterTags, TagPrefixString + ".Expert")) + else if (UPF2TagLibrary::ContainerHasTag(*CharacterTags, TagPrefixString + ".Expert")) { // Expert -> Your level + 4 ProficiencyBonus = CharacterLevel + 4; } - else if (PF2GameplayAbilityUtilities::HasTag(CharacterTags, TagPrefixString + ".Trained")) + else if (UPF2TagLibrary::ContainerHasTag(*CharacterTags, TagPrefixString + ".Trained")) { // Trained -> Your level + 2 ProficiencyBonus = CharacterLevel + 2; diff --git a/Source/OpenPF2GameFramework/Public/Libraries/PF2TagLibrary.h b/Source/OpenPF2GameFramework/Public/Libraries/PF2TagLibrary.h index 8805e6dcf..3a204e7b0 100644 --- a/Source/OpenPF2GameFramework/Public/Libraries/PF2TagLibrary.h +++ b/Source/OpenPF2GameFramework/Public/Libraries/PF2TagLibrary.h @@ -24,6 +24,43 @@ class OPENPF2GAMEFRAMEWORK_API UPF2TagLibrary final : public UBlueprintFunctionL GENERATED_BODY() public: + /** + * Checks if a tag with the given name or prefix is present in the given container. + * + * @param Tags + * The list of tags in which to search. + * @param TagNameOrPrefix + * The name of the tag or the prefix; as an FName. + * + * @return + * - TRUE if given a tag name, and a tag with the specified name is present in the tag list. + * - TRUE if given a tag prefix, and there is a tag present in the tag list that starts with that prefix. + * - FALSE, otherwise. + */ + UFUNCTION(BlueprintCallable, BlueprintPure, meta=(AutoCreateRefTerm="ParentTag"), Category="OpenPF2|Gameplay Tags") + static FORCEINLINE bool ContainerHasTag(const FGameplayTagContainer& Tags, const FName& TagNameOrPrefix) + { + return Tags.HasTag(FGameplayTag::RequestGameplayTag(TagNameOrPrefix)); + } + + /** + * Checks if a tag with the given name or prefix is present in the given container. + * + * @param Tags + * The list of tags in which to search. + * @param TagNameOrPrefix + * The name of the tag or the prefix; as a string. + * + * @return + * - TRUE if given a tag name, and a tag with the specified name is present in the tag list. + * - TRUE if given a tag prefix, and there is a tag present in the tag list that starts with that prefix. + * - FALSE, otherwise. + */ + static FORCEINLINE bool ContainerHasTag(const FGameplayTagContainer& Tags, const FString& TagNameOrPrefix) + { + return Tags.HasTag(FGameplayTag::RequestGameplayTag(FName(TagNameOrPrefix))); + } + /** * Locates the tag within the specified tag container that is a child of another tag. * diff --git a/Source/OpenPF2GameFramework/Public/Utilities/PF2GameplayAbilityUtilities.h b/Source/OpenPF2GameFramework/Public/Utilities/PF2GameplayAbilityUtilities.h index a514aa2dc..0702f105b 100644 --- a/Source/OpenPF2GameFramework/Public/Utilities/PF2GameplayAbilityUtilities.h +++ b/Source/OpenPF2GameFramework/Public/Utilities/PF2GameplayAbilityUtilities.h @@ -7,7 +7,6 @@ #include #include -#include #include "PF2CharacterConstants.h" @@ -26,42 +25,6 @@ class UPF2CharacterAttributeSet; */ namespace PF2GameplayAbilityUtilities { - /** - * Checks if a tag with the given name or prefix is present. - * - * @param Tags - * The list of tags in which to search. - * @param TagNameOrPrefix - * The name of the tag or the prefix; as an FName. - * - * @return - * - TRUE if given a tag name, and a tag with the specified name is present in the tag list. - * - TRUE if given a tag prefix, and there is a tag present in the tag list that starts with that prefix. - * - FALSE, otherwise. - */ - FORCEINLINE OPENPF2GAMEFRAMEWORK_API bool HasTag(const FGameplayTagContainer* Tags, const FName TagNameOrPrefix) - { - return Tags->HasTag(GetTag(TagNameOrPrefix)); - } - - /** - * Checks if a tag with the given name or prefix is present. - * - * @param Tags - * The list of tags in which to search. - * @param TagNameOrPrefix - * The name of the tag or the prefix; as a string. - * - * @return - * - TRUE if given a tag name, and a tag with the specified name is present in the tag list. - * - TRUE if given a tag prefix, and there is a tag present in the tag list that starts with that prefix. - * - FALSE, otherwise. - */ - FORCEINLINE OPENPF2GAMEFRAMEWORK_API bool HasTag(const FGameplayTagContainer* Tags, const FString& TagNameOrPrefix) - { - return Tags->HasTag(GetTag(TagNameOrPrefix)); - } - /** * Creates an attribute capture definition for the specified Gameplay Attribute. * From 83a88e39d37286079680d9cb60f479fdbdb98316 Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Tue, 16 Jul 2024 00:44:57 -0400 Subject: [PATCH 11/16] [#60] Implement `PF2TagLibrary::RequestCombinedTag*()` Methods This makes assembling a gameplay tag from a root tag and suffix name more efficient by using a `NameBuilder` for this instead of concatenation. --- .../CharacterStats/PF2TemlCalculation.cpp | 10 +- .../Public/Libraries/PF2TagLibrary.h | 170 ++++++++++++++++++ 2 files changed, 174 insertions(+), 6 deletions(-) diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp index c98538e73..089719402 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2TemlCalculation.cpp @@ -41,8 +41,6 @@ FPF2TemlCalculation::FPF2TemlCalculation(const FGameplayTag TagPrefix, // option. if (CharacterTags->HasTag(TagPrefix)) { - const FString TagPrefixString = TagPrefix.ToString(); - // "When attempting a check that involves something you have some training in, you will also add your // proficiency bonus. This bonus depends on your proficiency rank: untrained, trained, expert, master, or // legendary. If you’re untrained, your bonus is +0—you must rely on raw talent and any bonuses from the @@ -52,22 +50,22 @@ FPF2TemlCalculation::FPF2TemlCalculation(const FGameplayTag TagPrefix, // // Source: Pathfinder 2E Core Rulebook, page 444, "Step 1: Roll D20 and Identify The Modifiers, Bonuses, and // Penalties That Apply". - if (UPF2TagLibrary::ContainerHasTag(*CharacterTags, TagPrefixString + ".Legendary")) + if (CharacterTags->HasTag(UPF2TagLibrary::RequestCombinedTagByString(TagPrefix, TEXT("Legendary")))) { // Legendary -> Your level + 8 ProficiencyBonus = CharacterLevel + 8; } - else if (UPF2TagLibrary::ContainerHasTag(*CharacterTags, TagPrefixString + ".Master")) + else if (CharacterTags->HasTag(UPF2TagLibrary::RequestCombinedTagByString(TagPrefix, TEXT("Master")))) { // Master -> Your level + 6 ProficiencyBonus = CharacterLevel + 6; } - else if (UPF2TagLibrary::ContainerHasTag(*CharacterTags, TagPrefixString + ".Expert")) + else if (CharacterTags->HasTag(UPF2TagLibrary::RequestCombinedTagByString(TagPrefix, TEXT("Expert")))) { // Expert -> Your level + 4 ProficiencyBonus = CharacterLevel + 4; } - else if (UPF2TagLibrary::ContainerHasTag(*CharacterTags, TagPrefixString + ".Trained")) + else if (CharacterTags->HasTag(UPF2TagLibrary::RequestCombinedTagByString(TagPrefix, TEXT("Trained")))) { // Trained -> Your level + 2 ProficiencyBonus = CharacterLevel + 2; diff --git a/Source/OpenPF2GameFramework/Public/Libraries/PF2TagLibrary.h b/Source/OpenPF2GameFramework/Public/Libraries/PF2TagLibrary.h index 3a204e7b0..63868a60c 100644 --- a/Source/OpenPF2GameFramework/Public/Libraries/PF2TagLibrary.h +++ b/Source/OpenPF2GameFramework/Public/Libraries/PF2TagLibrary.h @@ -131,4 +131,174 @@ class OPENPF2GAMEFRAMEWORK_API UPF2TagLibrary final : public UBlueprintFunctionL UFUNCTION(BlueprintCallable, BlueprintPure, meta=(AutoCreateRefTerm="ParentTag"), Category="OpenPF2|Gameplay Tags") static uint8 ParseConditionLevel(const FGameplayTag& Tag, const FGameplayTag& ParentTag); + + /** + * Combines a tag with the name of a tag that is defined within/underneath it, and returns the resulting tag. + * + * For example, given a parent tag of "PF2.Trait.Condition" and a child tag fragment of "Dying.2", this returns the + * tag "PF2.Trait.Condition.Dying.2". + * + * The combined tag must be a valid tag that has been defined either in Gameplay Tags INI files or in static tags. + * + * @tparam T + * The type of text or string being used to represent the name of the child fragment. + * + * @param ParentTag + * The parent/prefix tag under which the target tag is defined. + * @param ChildTagFragment + * The name or fragment of the tag under the parent tag. + * + * @return + * The gameplay tag that corresponds to the combination of the give child tag under the given parent tag. + */ + template + FORCEINLINE static FGameplayTag RequestCombinedTag(const FGameplayTag& ParentTag, const T& ChildTagFragment) + { + return RequestCombinedTag(ParentTag.GetTagName(), ChildTagFragment); + } + + /** + * Concatenates the names of two tags together and returns the resulting tag. + * + * For example, given a parent tag of "PF2.Trait.Condition" and a child tag fragment of "Dying.2", this returns the + * tag "PF2.Trait.Condition.Dying.2". + * + * The combined tag must be a valid tag that has been defined either in Gameplay Tags INI files or in static tags. + * + * @tparam P + * The type of text or string being used to represent the name of the parent tag. + * @tparam C + * The type of text or string being used to represent the name of the child fragment. + * + * @param ParentTagName + * The name of the parent/prefix tag under which the target tag is defined. + * @param ChildTagFragment + * The name of the desired tag under the parent tag. + * + * @return + * The gameplay tag that corresponds to the combination of the give child tag under the given parent tag. + */ + template + static FGameplayTag RequestCombinedTag(const P& ParentTagName, const C& ChildTagFragment) + { + FNameBuilder TagNameBuilder; + + TagNameBuilder << ParentTagName; + TagNameBuilder << TEXT("."); + TagNameBuilder << ChildTagFragment; + + return FGameplayTag::RequestGameplayTag(FName(TagNameBuilder.ToString())); + } + + /** + * Combines a tag with the name of a tag that is defined within/underneath it, and returns the resulting tag. + * + * For example, given a parent tag of "PF2.Trait.Condition" and a child tag fragment of "Dying.2", this returns the + * tag "PF2.Trait.Condition.Dying.2". + * + * The combined tag must be a valid tag that has been defined either in Gameplay Tags INI files or in static tags. + * + * @param ParentTag + * The parent/prefix tag under which the target tag is defined. + * @param ChildTagFragment + * The name of the desired tag under the parent tag. + * + * @return + * The gameplay tag that corresponds to the combination of the give child tag under the given parent tag. + */ + UFUNCTION( + BlueprintCallable, + BlueprintPure, + meta=(AutoCreateRefTerm="ParentTag,ChildTagFragment"), + Category="OpenPF2|Gameplay Tags" + ) + static FORCEINLINE FGameplayTag RequestCombinedTagByName(const FGameplayTag& ParentTag, + const FName& ChildTagFragment) + { + return RequestCombinedTag(ParentTag, ChildTagFragment); + } + + /** + * Combines a tag with the name of a tag that is defined within/underneath it, and returns the resulting tag. + * + * For example, given a parent tag of "PF2.Trait.Condition" and a child tag fragment of "Dying.2", this returns the + * tag "PF2.Trait.Condition.Dying.2". + * + * The combined tag must be a valid tag that has been defined either in Gameplay Tags INI files or in static tags. + * + * @param ParentTag + * The parent/prefix tag under which the target tag is defined. + * @param ChildTagFragment + * The name of the desired tag under the parent tag. + * + * @return + * The gameplay tag that corresponds to the combination of the give child tag under the given parent tag. + */ + UFUNCTION( + BlueprintCallable, + BlueprintPure, + meta=(AutoCreateRefTerm="ParentTag,ChildTagFragment"), + Category="OpenPF2|Gameplay Tags" + ) + static FORCEINLINE FGameplayTag RequestCombinedTagByString(const FGameplayTag& ParentTag, + const FString& ChildTagFragment) + { + return RequestCombinedTag(ParentTag, ChildTagFragment); + } + + /** + * Concatenates the names of two tags together and returns the resulting tag. + * + * For example, given a parent tag of "PF2.Trait.Condition" and a child tag fragment of "Dying.2", this returns the + * tag "PF2.Trait.Condition.Dying.2". + * + * The combined tag must be a valid tag that has been defined either in Gameplay Tags INI files or in static tags. + * + * @param ParentTagName + * The name of the parent/prefix tag under which the target tag is defined. + * @param ChildTagFragment + * The name of the desired tag under the parent tag. + * + * @return + * The gameplay tag that corresponds to the combination of the give child tag under the given parent tag. + */ + UFUNCTION( + BlueprintCallable, + BlueprintPure, + meta=(AutoCreateRefTerm="ParentTagName,ChildTagFragment"), + Category="OpenPF2|Gameplay Tags" + ) + static FORCEINLINE FGameplayTag RequestCombinedTagFromNames(const FName& ParentTagName, + const FName& ChildTagFragment) + { + return RequestCombinedTag(ParentTagName, ChildTagFragment); + } + + /** + * Concatenates the names of two tags together and returns the resulting tag. + * + * For example, given a parent tag of "PF2.Trait.Condition" and a child tag fragment of "Dying.2", this returns the + * tag "PF2.Trait.Condition.Dying.2". + * + * The combined tag must be a valid tag that has been defined either in Gameplay Tags INI files or in static tags. + * + * @param ParentTagName + * The name of the parent/prefix tag under which the target tag is defined. + * @param ChildTagFragment + * The name of the desired tag under the parent tag. + * + * @return + * The gameplay tag that corresponds to the combination of the give child tag under the given parent tag. + */ + UFUNCTION( + BlueprintCallable, + BlueprintPure, + meta=(AutoCreateRefTerm="ParentTagName,ChildTagFragment"), + Category="OpenPF2|Gameplay Tags" + ) + static FORCEINLINE FGameplayTag RequestCombinedTagFromStrings(const FString& ParentTagName, + const FString& ChildTagFragment) + { + return RequestCombinedTag(ParentTagName, ChildTagFragment); + } }; From 0fdaed6a5eeb3ff5fa3f41e735b6b7c7757014e2 Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Tue, 16 Jul 2024 01:00:27 -0400 Subject: [PATCH 12/16] [#60] Update Damage Type Mappings for New Naming --- .../UI/Gameplay/DT_DamageTypeColors.csv | 38 +++++++++---------- .../UI/Gameplay/DT_DamageTypeColors.uasset | 4 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Content/OpenPF2/Optional/UI/Gameplay/DT_DamageTypeColors.csv b/Content/OpenPF2/Optional/UI/Gameplay/DT_DamageTypeColors.csv index 42331e1cf..16720e518 100644 --- a/Content/OpenPF2/Optional/UI/Gameplay/DT_DamageTypeColors.csv +++ b/Content/OpenPF2/Optional/UI/Gameplay/DT_DamageTypeColors.csv @@ -1,20 +1,20 @@ ---,Damage Type Tag,Color -DamageType.Physical.Bludgeoning,"(TagName=""DamageType.Physical.Bludgeoning"")","(B=0,G=102,R=204,A=255)" -DamageType.Physical.Piercing,"(TagName=""DamageType.Physical.Piercing"")","(B=128,G=128,R=128,A=255)" -DamageType.Physical.Slashing,"(TagName=""DamageType.Physical.Slashing"")","(B=0,G=0,R=139,A=255)" -DamageType.Energy.Acid,"(TagName=""DamageType.Energy.Acid"")","(B=51,G=255,R=102,A=255)" -DamageType.Energy.Cold,"(TagName=""DamageType.Energy.Cold"")","(B=255,G=153,R=153,A=255)" -DamageType.Energy.Electricity,"(TagName=""DamageType.Energy.Electricity"")","(B=255,G=255,R=0,A=255)" -DamageType.Energy.Fire,"(TagName=""DamageType.Energy.Fire"")","(B=0,G=153,R=255,A=255)" -DamageType.Energy.Sonic,"(TagName=""DamageType.Energy.Sonic"")","(B=0,G=69,R=255,A=255)" -DamageType.Energy.Positive,"(TagName=""DamageType.Energy.Positive"")","(B=102,G=255,R=255,A=255)" -DamageType.Energy.Negative,"(TagName=""DamageType.Energy.Negative"")","(B=255,G=102,R=204,A=255)" -DamageType.Energy.Force,"(TagName=""DamageType.Energy.Force"")","(B=255,G=102,R=0,A=255)" -DamageType.Alignment.Chaotic,"(TagName=""DamageType.Alignment.Chaotic"")","(B=153,G=51,R=255,A=255)" -DamageType.Alignment.Evil,"(TagName=""DamageType.Alignment.Evil"")","(B=51,G=0,R=102,A=255)" -DamageType.Alignment.Good,"(TagName=""DamageType.Alignment.Good"")","(B=0,G=204,R=255,A=255)" -DamageType.Alignment.Lawful,"(TagName=""DamageType.Alignment.Lawful"")","(B=153,G=51,R=51,A=255)" -DamageType.Mental,"(TagName=""DamageType.Mental"")","(B=255,G=0,R=153,A=255)" -DamageType.Poison,"(TagName=""DamageType.Poison"")","(B=0,G=128,R=128,A=255)" -DamageType.Bleed,"(TagName=""DamageType.Bleed"")","(B=34,G=34,R=178,A=255)" -DamageType.Precision,"(TagName=""DamageType.Precision"")","(B=0,G=165,R=255,A=255)" +PF2.DamageType.Physical.Bludgeoning,"(TagName=""PF2.DamageType.Physical.Bludgeoning"")","(B=0,G=102,R=204,A=255)" +PF2.DamageType.Physical.Piercing,"(TagName=""PF2.DamageType.Physical.Piercing"")","(B=128,G=128,R=128,A=255)" +PF2.DamageType.Physical.Slashing,"(TagName=""PF2.DamageType.Physical.Slashing"")","(B=0,G=0,R=139,A=255)" +PF2.DamageType.Energy.Acid,"(TagName=""PF2.DamageType.Energy.Acid"")","(B=51,G=255,R=102,A=255)" +PF2.DamageType.Energy.Cold,"(TagName=""PF2.DamageType.Energy.Cold"")","(B=255,G=153,R=153,A=255)" +PF2.DamageType.Energy.Electricity,"(TagName=""PF2.DamageType.Energy.Electricity"")","(B=255,G=255,R=0,A=255)" +PF2.DamageType.Energy.Fire,"(TagName=""PF2.DamageType.Energy.Fire"")","(B=0,G=153,R=255,A=255)" +PF2.DamageType.Energy.Sonic,"(TagName=""PF2.DamageType.Energy.Sonic"")","(B=0,G=69,R=255,A=255)" +PF2.DamageType.Energy.Positive,"(TagName=""PF2.DamageType.Energy.Positive"")","(B=102,G=255,R=255,A=255)" +PF2.DamageType.Energy.Negative,"(TagName=""PF2.DamageType.Energy.Negative"")","(B=255,G=102,R=204,A=255)" +PF2.DamageType.Energy.Force,"(TagName=""PF2.DamageType.Energy.Force"")","(B=255,G=102,R=0,A=255)" +PF2.DamageType.Alignment.Chaotic,"(TagName=""PF2.DamageType.Alignment.Chaotic"")","(B=153,G=51,R=255,A=255)" +PF2.DamageType.Alignment.Evil,"(TagName=""PF2.DamageType.Alignment.Evil"")","(B=51,G=0,R=102,A=255)" +PF2.DamageType.Alignment.Good,"(TagName=""PF2.DamageType.Alignment.Good"")","(B=0,G=204,R=255,A=255)" +PF2.DamageType.Alignment.Lawful,"(TagName=""PF2.DamageType.Alignment.Lawful"")","(B=153,G=51,R=51,A=255)" +PF2.DamageType.Mental,"(TagName=""PF2.DamageType.Mental"")","(B=255,G=0,R=153,A=255)" +PF2.DamageType.Poison,"(TagName=""PF2.DamageType.Poison"")","(B=0,G=128,R=128,A=255)" +PF2.DamageType.Bleed,"(TagName=""PF2.DamageType.Bleed"")","(B=34,G=34,R=178,A=255)" +PF2.DamageType.Precision,"(TagName=""PF2.DamageType.Precision"")","(B=0,G=165,R=255,A=255)" diff --git a/Content/OpenPF2/Optional/UI/Gameplay/DT_DamageTypeColors.uasset b/Content/OpenPF2/Optional/UI/Gameplay/DT_DamageTypeColors.uasset index 986a90bcd..3948d4b5f 100644 --- a/Content/OpenPF2/Optional/UI/Gameplay/DT_DamageTypeColors.uasset +++ b/Content/OpenPF2/Optional/UI/Gameplay/DT_DamageTypeColors.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7d485270813bb178aa4b2fdc6e702b0fb7f35656efcefccb5aa78d0e1a61cc00 -size 6587 +oid sha256:32a83c5c13a0a10f633dea9f8f6f691872a8cc15a1707c3246272f71ccc2cb1a +size 6647 From 1ca89fafd43257c3a1a6d5f3f6c2ce4140ed968b Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Tue, 16 Jul 2024 01:01:19 -0400 Subject: [PATCH 13/16] [#60] Gracefully Handle Missing Damage Type Previously, if a damage type passed in was not a recognized damage type, the damage callout would report `-999` as the damage. Now, it merely renders the proper damage amount in black text. --- .../Optional/Abilities/Attacks/WBP_DamageCallout.uasset | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content/OpenPF2/Optional/Abilities/Attacks/WBP_DamageCallout.uasset b/Content/OpenPF2/Optional/Abilities/Attacks/WBP_DamageCallout.uasset index 28dbd317d..4671e7b7f 100644 --- a/Content/OpenPF2/Optional/Abilities/Attacks/WBP_DamageCallout.uasset +++ b/Content/OpenPF2/Optional/Abilities/Attacks/WBP_DamageCallout.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:204525e4864a2e75aaae9434e5c18be4ff5e0d368524996c42a2a6b86994d4ed -size 76697 +oid sha256:425f078b8053b8b765ad0b49cf16b2d9c569c4641a4387113c4702b6a9a5e283 +size 81445 From ed3b16323d91e7cbf6fb19697a032bd7f02418b2 Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Thu, 18 Jul 2024 22:32:31 -0400 Subject: [PATCH 14/16] [#60] Switch to `GetSingleTagContainer()` --- .../Private/Utilities/PF2GameplayAbilityUtilities.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/OpenPF2GameFramework/Private/Utilities/PF2GameplayAbilityUtilities.cpp b/Source/OpenPF2GameFramework/Private/Utilities/PF2GameplayAbilityUtilities.cpp index cc83c09f7..78a7d7bf5 100644 --- a/Source/OpenPF2GameFramework/Private/Utilities/PF2GameplayAbilityUtilities.cpp +++ b/Source/OpenPF2GameFramework/Private/Utilities/PF2GameplayAbilityUtilities.cpp @@ -37,7 +37,7 @@ namespace PF2GameplayAbilityUtilities const FGameplayTag WeightTagParent = Pf2TagGameplayEffectWeightGroups; const UGameplayEffect* Effect = GameplayEffect.GetDefaultObject(); - const FGameplayTagContainer WeightTags = Effect->GetAssetTags().Filter(FGameplayTagContainer(WeightTagParent)); + const FGameplayTagContainer WeightTags = Effect->GetAssetTags().Filter(WeightTagParent.GetSingleTagContainer()); if (WeightTags.IsEmpty()) { From 1b24bf4e6c5852beb4266a35b9837869896447f1 Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Thu, 18 Jul 2024 22:58:20 -0400 Subject: [PATCH 15/16] [#60] Remove Gameplay Tags Step from `README.md` --- README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/README.md b/README.md index 39eb9e31c..4210c423d 100644 --- a/README.md +++ b/README.md @@ -195,9 +195,6 @@ For example, if a weapon has a range of 60 feet, then its range in OpenPF2 is }); ``` 7. Compile your project. -8. Copy the `Config/Tags/` folder from the plug-in into your project's `Config` folder. - _Even in UE 5.1+, this is still required. The engine - [does not automatically scan or package config files provided by plugins](https://docs.unrealengine.com/5.1/en-US/plugins-in-unreal-engine/#pluginsinprojects)._ ## Licensing From 9d9db8dee16a312d97c3ebd4c7793c58447a509b Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Fri, 19 Jul 2024 00:26:29 -0400 Subject: [PATCH 16/16] [#60] Switch Key Ability TEML Calcs. to Use Nat. Tags instead of Strings This makes the code less fragile if tags get renamed in the future, since the tag names no longer appear in the code as strings. If the variable name is wrong, it will fail to build, rather than it being a run-time error. --- .../Attacks/PF2SpellAttackRollCalculation.cpp | 5 ++- .../PF2ClassDifficultyClassCalculation.cpp | 5 ++- .../PF2KeyAbilityTemlCalculationBase.cpp | 45 +++++++++---------- .../PF2SpellDifficultyClassCalculation.cpp | 5 ++- .../PF2KeyAbilityTemlCalculationBase.h | 40 +++++------------ 5 files changed, 44 insertions(+), 56 deletions(-) diff --git a/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2SpellAttackRollCalculation.cpp b/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2SpellAttackRollCalculation.cpp index a465dfa1d..86e12c8be 100644 --- a/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2SpellAttackRollCalculation.cpp +++ b/Source/OpenPF2GameFramework/Private/Abilities/Attacks/PF2SpellAttackRollCalculation.cpp @@ -5,7 +5,10 @@ #include "Abilities/Attacks/PF2SpellAttackRollCalculation.h" +#include "GameplayTags/Stats/KeyAbilities.h" +#include "GameplayTags/Stats/Proficiencies/SpellAttacks.h" + UPF2SpellAttackRollCalculation::UPF2SpellAttackRollCalculation() : - UPF2KeyAbilityTemlCalculationBase(TEXT("PF2.Proficiency.SpellAttack"), TEXT("PF2.SpellcastingAbility")) + UPF2KeyAbilityTemlCalculationBase(Pf2TagProficiencySpellAttack, Pf2TagSpellcastingAbilities) { } diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ClassDifficultyClassCalculation.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ClassDifficultyClassCalculation.cpp index 72bb8446c..0d8cc7b26 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ClassDifficultyClassCalculation.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2ClassDifficultyClassCalculation.cpp @@ -5,7 +5,10 @@ #include "CharacterStats/PF2ClassDifficultyClassCalculation.h" +#include "GameplayTags/Stats/KeyAbilities.h" +#include "GameplayTags/Stats/Proficiencies/ClassDc.h" + UPF2ClassDifficultyClassCalculation::UPF2ClassDifficultyClassCalculation() : - UPF2KeyAbilityTemlCalculationBase(TEXT("PF2.Proficiency.ClassDc"), TEXT("PF2.KeyAbility"), 10.0f) + UPF2KeyAbilityTemlCalculationBase(Pf2TagProficiencyClassDc, Pf2TagKeyAbilities, 10.0f) { } diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2KeyAbilityTemlCalculationBase.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2KeyAbilityTemlCalculationBase.cpp index 241ce1093..aef5aad7f 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2KeyAbilityTemlCalculationBase.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2KeyAbilityTemlCalculationBase.cpp @@ -17,6 +17,8 @@ #include "CharacterStats/PF2CharacterAttributeSet.h" #include "CharacterStats/PF2TemlCalculation.h" +#include "GameplayTags/Stats/KeyAbilities.h" + #include "Libraries/PF2AbilitySystemLibrary.h" #include "Libraries/PF2TagLibrary.h" @@ -24,62 +26,56 @@ UPF2KeyAbilityTemlCalculationBase::UPF2KeyAbilityTemlCalculationBase() : UPF2KeyAbilityTemlCalculationBase( - TEXT(""), - TEXT("PF2.KeyAbility") + FGameplayTag(), + Pf2TagKeyAbilities ) { } -UPF2KeyAbilityTemlCalculationBase::UPF2KeyAbilityTemlCalculationBase( - const FString& StatGameplayTagPrefix, - const FString& KeyAbilityGameplayTagPrefix, - const float BaseValue) : - StatGameplayTagPrefix(StatGameplayTagPrefix), +UPF2KeyAbilityTemlCalculationBase::UPF2KeyAbilityTemlCalculationBase(const FGameplayTag& StatPrefixTag, + const FGameplayTag& KeyAbilityPrefixTag, + const float BaseValue) : + StatPrefixTag(StatPrefixTag), BaseValue(BaseValue) { this->DefineKeyAbilityCapture( - KeyAbilityGameplayTagPrefix + ".Strength", + UPF2TagLibrary::RequestCombinedTagByString(KeyAbilityPrefixTag, TEXT("Strength")), UPF2CharacterAttributeSet::GetAbStrengthModifierAttribute() ); this->DefineKeyAbilityCapture( - KeyAbilityGameplayTagPrefix + ".Dexterity", + UPF2TagLibrary::RequestCombinedTagByString(KeyAbilityPrefixTag, TEXT("Dexterity")), UPF2CharacterAttributeSet::GetAbDexterityModifierAttribute() ); this->DefineKeyAbilityCapture( - KeyAbilityGameplayTagPrefix + ".Constitution", + UPF2TagLibrary::RequestCombinedTagByString(KeyAbilityPrefixTag, TEXT("Constitution")), UPF2CharacterAttributeSet::GetAbConstitutionModifierAttribute() ); this->DefineKeyAbilityCapture( - KeyAbilityGameplayTagPrefix + ".Intelligence", + UPF2TagLibrary::RequestCombinedTagByString(KeyAbilityPrefixTag, TEXT("Intelligence")), UPF2CharacterAttributeSet::GetAbIntelligenceModifierAttribute() ); this->DefineKeyAbilityCapture( - KeyAbilityGameplayTagPrefix + ".Wisdom", + UPF2TagLibrary::RequestCombinedTagByString(KeyAbilityPrefixTag, TEXT("Wisdom")), UPF2CharacterAttributeSet::GetAbWisdomModifierAttribute() ); this->DefineKeyAbilityCapture( - KeyAbilityGameplayTagPrefix + ".Charisma", + UPF2TagLibrary::RequestCombinedTagByString(KeyAbilityPrefixTag, TEXT("Charisma")), UPF2CharacterAttributeSet::GetAbCharismaModifierAttribute() ); } -void UPF2KeyAbilityTemlCalculationBase::DefineKeyAbilityCapture( - const FString& KeyAbilityTagName, - const FGameplayAttribute& Attribute) +void UPF2KeyAbilityTemlCalculationBase::DefineKeyAbilityCapture(const FGameplayTag& KeyAbilityTag, + const FGameplayAttribute& Attribute) { const FGameplayEffectAttributeCaptureDefinition CaptureDefinition = PF2GameplayAbilityUtilities::BuildSourceCaptureFor(Attribute); - this->KeyAbilityCaptureDefinitions.Add( - KeyAbilityTagName, - CaptureDefinition - ); - + this->KeyAbilityCaptureDefinitions.Add(KeyAbilityTag, CaptureDefinition); this->RelevantAttributesToCapture.Add(CaptureDefinition); } @@ -96,7 +92,7 @@ float UPF2KeyAbilityTemlCalculationBase::CalculateBaseMagnitude_Implementation(c // Spell DC = 10 + your spellcasting ability modifier + proficiency bonus + other bonuses + penalties" // // Source: Pathfinder 2E Core Rulebook, page 298, "Spell Attack Roll and Spell DC". - const float ProficiencyBonus = FPF2TemlCalculation(this->StatGameplayTagPrefix, Spec).GetValue(), + const float ProficiencyBonus = FPF2TemlCalculation(this->StatPrefixTag, Spec).GetValue(), KeyAbilityModifier = this->CalculateKeyAbilityModifier(Spec), AbilityScore = this->BaseValue + ProficiencyBonus + KeyAbilityModifier; @@ -104,7 +100,7 @@ float UPF2KeyAbilityTemlCalculationBase::CalculateBaseMagnitude_Implementation(c LogPf2Stats, VeryVerbose, TEXT("Calculated key ability score ('%s'): %f + %f + %f = %f"), - *(this->StatGameplayTagPrefix), + *(this->StatPrefixTag.ToString()), this->BaseValue, ProficiencyBonus, KeyAbilityModifier, @@ -119,6 +115,7 @@ float UPF2KeyAbilityTemlCalculationBase::CalculateKeyAbilityModifier(const FGame float KeyAbilityModifier = 0.0f; const FGameplayTagContainer* SourceTags = Spec.CapturedSourceTags.GetAggregatedTags(); + // ReSharper disable once CppTooWideScopeInitStatement const FGameplayEffectAttributeCaptureDefinition KeyAbilityCaptureDefinition = this->DetermineKeyAbility(SourceTags); @@ -145,7 +142,7 @@ FGameplayEffectAttributeCaptureDefinition UPF2KeyAbilityTemlCalculationBase::Det for (auto PairIterator = this->KeyAbilityCaptureDefinitions.CreateConstIterator(); PairIterator; ++PairIterator) { - if (const FString TagName = PairIterator.Key(); UPF2TagLibrary::ContainerHasTag(*SourceTags, TagName)) + if (const FGameplayTag Tag = PairIterator.Key(); SourceTags->HasTag(Tag)) { KeyAbilityCaptureDefinition = PairIterator.Value(); break; diff --git a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2SpellDifficultyClassCalculation.cpp b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2SpellDifficultyClassCalculation.cpp index daf61d177..f982d5872 100644 --- a/Source/OpenPF2GameFramework/Private/CharacterStats/PF2SpellDifficultyClassCalculation.cpp +++ b/Source/OpenPF2GameFramework/Private/CharacterStats/PF2SpellDifficultyClassCalculation.cpp @@ -5,7 +5,10 @@ #include "CharacterStats/PF2SpellDifficultyClassCalculation.h" +#include "GameplayTags/Stats/KeyAbilities.h" +#include "GameplayTags/Stats/Proficiencies/SpellDc.h" + UPF2SpellDifficultyClassCalculation::UPF2SpellDifficultyClassCalculation() : - UPF2KeyAbilityTemlCalculationBase(TEXT("PF2.Proficiency.SpellDc"), TEXT("PF2.SpellcastingAbility"), 10.0f) + UPF2KeyAbilityTemlCalculationBase(Pf2TagProficiencySpellDc, Pf2TagSpellcastingAbilities, 10.0f) { } diff --git a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2KeyAbilityTemlCalculationBase.h b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2KeyAbilityTemlCalculationBase.h index 4b01da6e6..4c0d8fc1d 100644 --- a/Source/OpenPF2GameFramework/Public/CharacterStats/PF2KeyAbilityTemlCalculationBase.h +++ b/Source/OpenPF2GameFramework/Public/CharacterStats/PF2KeyAbilityTemlCalculationBase.h @@ -43,10 +43,10 @@ class OPENPF2GAMEFRAMEWORK_API UPF2KeyAbilityTemlCalculationBase : public UGamep * proficiency bonus, and TEML tags on the character that have the specified prefix determine the magnitude of the * boost. * - * @param StatGameplayTagPrefix + * @param StatPrefixTag * The tag prefix to use for checking a character's training in the stat. For example, "PF2.Proficiency.ClassDc", * "PF2.Proficiency.SpellAttack", or "PF2.Proficiency.SpellDc". - * @param KeyAbilityGameplayTagPrefix + * @param KeyAbilityPrefixTag * The tag prefix to use to determine the key ability for this stat. For the Class DC, this is "PF2.KeyAbility". * For Spell Attack and Spell DC, this is "PF2.SpellcastingAbility". * @param BaseValue @@ -54,9 +54,9 @@ class OPENPF2GAMEFRAMEWORK_API UPF2KeyAbilityTemlCalculationBase : public UGamep * this is 0. */ explicit UPF2KeyAbilityTemlCalculationBase( - const FString& StatGameplayTagPrefix, - const FString& KeyAbilityGameplayTagPrefix, - const float BaseValue = 0.0f); + const FGameplayTag& StatPrefixTag, + const FGameplayTag& KeyAbilityPrefixTag, + const float BaseValue = 0.0f); // ================================================================================================================= // Public Methods - UGameplayModMagnitudeCalculation Implementation @@ -70,7 +70,7 @@ class OPENPF2GAMEFRAMEWORK_API UPF2KeyAbilityTemlCalculationBase : public UGamep /** * The tag prefix to use for checking a character's training in this stat. */ - FString StatGameplayTagPrefix; + FGameplayTag StatPrefixTag; /** * The base value for this stat. @@ -82,28 +82,10 @@ class OPENPF2GAMEFRAMEWORK_API UPF2KeyAbilityTemlCalculationBase : public UGamep /** * Map from Key Ability tag names to capture definitions. * - * Each key in the map is a gameplay tag, which corresponds to a key character ability; and the value is the + * Each key in the map is a gameplay tag that corresponds to a key character ability, while the value is the * definition for capturing the modifier of that ability. */ - TMap KeyAbilityCaptureDefinitions; - - /** - * The name of the gameplay tag that indicates the character's Key Ability. - * - * From the Pathfinder 2E Core Rulebook, page 67: - * "This is the ability score that a member of your class cares about the most. Many of your most useful and - * powerful abilities are tied to this ability in some way. - * - * For instance, this is the ability score you’ll use to determine the Difficulty Class (DC) associated with your - * character’s class features and feats. This is called your class DC. If your character is a member of a - * spellcasting class, this Key Ability is used to calculate spell DCs and similar values. - * - * Most classes are associated with one Key Ability score, but some allow you to choose from two options. For - * instance, if you’re a fighter, you can choose either Strength or Dexterity as your Key Ability. A fighter who - * chooses Strength will excel in hand-to-hand combat, while those who choose Dexterity prefer ranged or finesse - * weapons." - */ - FString KeyAbilityGameplayTag; + TMap KeyAbilityCaptureDefinitions; // ================================================================================================================= // Protected Methods @@ -113,13 +95,13 @@ class OPENPF2GAMEFRAMEWORK_API UPF2KeyAbilityTemlCalculationBase : public UGamep * * This is used to ensure we can retrieve the modifier for the specified ability later in the calculation phase. * - * @param KeyAbilityTagName - * The name of the gameplay tag that a character must have for the ability to be considered "key". For example, + * @param KeyAbilityTag + * The gameplay tag that a character must have for the ability to be considered "key". For example, * "PF2.KeyAbility.Strength" or "PF2.SpellcastingAbility.Intelligence". * @param Attribute * The definition of the attribute to capture. */ - void DefineKeyAbilityCapture(const FString& KeyAbilityTagName, const FGameplayAttribute& Attribute); + void DefineKeyAbilityCapture(const FGameplayTag& KeyAbilityTag, const FGameplayAttribute& Attribute); /** * Calculates the Key Ability modifier for the character.