From c9914822e30fafbcb7bf236b3aba522de12123ee Mon Sep 17 00:00:00 2001 From: Guy Elsmore-Paddock Date: Sun, 30 Jun 2024 22:57:46 -0400 Subject: [PATCH] [#60] WIP: Migrate Tags from `*.ini` Files to Native C++ Tags --- Config/Tags/PF2CoreStats.ini | 133 ------- Config/Tags/PF2Traits.ini | 196 --------- .../CoreStats/CreatureAlignments.cpp | 89 +++++ .../GameplayTags/CoreStats/CreatureSizes.cpp | 24 ++ .../GameplayTags/CoreStats/Equipment.cpp | 41 ++ .../GameplayTags/CoreStats/KeyAbilities.cpp | 104 +++++ .../GameplayTags/CoreStats/Proficiencies.cpp | 374 ++++++++++++++++++ .../Private/GameplayTags/Traits/Abilities.cpp | 109 +++++ .../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 ++++++++++++ .../CoreStats/CreatureAlignments.h | 34 ++ .../GameplayTags/CoreStats/CreatureSizes.h | 26 ++ .../Public/GameplayTags/CoreStats/Equipment.h | 20 + .../GameplayTags/CoreStats/KeyAbilities.h | 46 +++ .../GameplayTags/CoreStats/Proficiencies.h | 81 ++++ .../Public/GameplayTags/Traits/Abilities.h | 36 ++ .../Public/GameplayTags/Traits/Actions.h | 29 ++ .../Public/GameplayTags/Traits/Conditions.h | 190 +++++++++ .../Public/GameplayTags/Traits/Creatures.h | 26 ++ .../Public/GameplayTags/Traits/Effects.h | 26 ++ .../Public/GameplayTags/Traits/Weapons.h | 60 +++ 24 files changed, 2114 insertions(+), 329 deletions(-) delete mode 100644 Config/Tags/PF2CoreStats.ini delete mode 100644 Config/Tags/PF2Traits.ini create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/CreatureAlignments.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/CreatureSizes.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/Equipment.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/KeyAbilities.cpp create mode 100644 Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/Proficiencies.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/Public/GameplayTags/CoreStats/CreatureAlignments.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/CreatureSizes.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/Equipment.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/KeyAbilities.h create mode 100644 Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/Proficiencies.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 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/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/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/CreatureAlignments.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/CreatureAlignments.cpp new file mode 100644 index 000000000..e3bd2976b --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/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/CoreStats/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/CoreStats/CreatureSizes.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/CreatureSizes.cpp new file mode 100644 index 000000000..51de78d09 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/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/CoreStats/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/CoreStats/Equipment.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/Equipment.cpp new file mode 100644 index 000000000..76781ef19 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/Equipment.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/CoreStats/Equipment.h" + +// ===================================================================================================================== +// Type of Armor that is *Currently* Equipped by the Character +// ===================================================================================================================== +// Source: TBD +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_ARMOR_EQUIPPED_UNARMORED, + "Armor.Equipped.Unarmored", + "Character has no armor equipped" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_ARMOR_EQUIPPED_LIGHT, + "Armor.Equipped.Light", + "Character has Light armor equipped" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_ARMOR_EQUIPPED_MEDIUM, + "Armor.Equipped.Medium", + "Character has Medium armor equipped" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_ARMOR_EQUIPPED_HEAVY, + "Armor.Equipped.Heavy", + "Character has Heavy armor equipped" +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/KeyAbilities.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/KeyAbilities.cpp new file mode 100644 index 000000000..50d0d4234 --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/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/CoreStats/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( + TAG_KEYABILITY_STRENGTH, + "KeyAbility.Strength", + "Character's key ability is Strength" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_KEYABILITY_DEXTERITY, + "KeyAbility.Dexterity", + "Character's key ability is Dexterity" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_KEYABILITY_CONSTITUTION, + "KeyAbility.Constitution", + "Character's key ability is Constitution" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_KEYABILITY_INTELLIGENCE, + "KeyAbility.Intelligence", + "Character's key ability is Intelligence" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_KEYABILITY_WISDOM, + "KeyAbility.Wisdom", + "Character's key ability is Wisdom" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_KEYABILITY_CHARISMA, + "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( + TAG_SPELLCASTINGABILITY_STRENGTH, + "SpellcastingAbility.Strength", + "Character's spellcasting ability is Strength" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_SPELLCASTINGABILITY_DEXTERITY, + "SpellcastingAbility.Dexterity", + "Character's spellcasting ability is Dexterity" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_SPELLCASTINGABILITY_CONSTITUTION, + "SpellcastingAbility.Constitution", + "Character's spellcasting ability is Constitution" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_SPELLCASTINGABILITY_INTELLIGENCE, + "SpellcastingAbility.Intelligence", + "Character's spellcasting ability is Intelligence" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_SPELLCASTINGABILITY_WISDOM, + "SpellcastingAbility.Wisdom", + "Character's spellcasting ability is Wisdom" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_SPELLCASTINGABILITY_CHARISMA, + "SpellcastingAbility.Charisma", + "Character's spellcasting ability is Charisma" +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/Proficiencies.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/Proficiencies.cpp new file mode 100644 index 000000000..7d3159f4e --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/CoreStats/Proficiencies.cpp @@ -0,0 +1,374 @@ +// 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/CoreStats/Proficiencies.h" + +// ===================================================================================================================== +// Class DC Proficiency Rank - The character's aptitude in their Difficulty Class. +// ===================================================================================================================== +// Source: TBD +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagClassDcUntrained, + "ClassDc.Untrained", + "Untrained in Class Difficulty Class (Class DC)" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagClassDcTrained, + "ClassDc.Trained", + "Trained in Class Difficulty Class (Class DC)" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagClassDcExpert, + "ClassDc.Expert", + "Expert in Class Difficulty Class (Class DC)" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagClassDcMaster, + "ClassDc.Master", + "Master in Class Difficulty Class (Class DC)" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagClassDcLegendary, + "ClassDc.Legendary", + "Legendary in Class Difficulty Class (Class DC)" +) + +// ===================================================================================================================== +// Proficiency Ranks for Different Classes of Armor (Unarmored, Light, Medium, or Heavy) +// ===================================================================================================================== +// Source: TBD + +// === Unarmored +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryUnarmoredUntrained, + "Armor.Category.Unarmored.Untrained", + "Untrained in Unarmored Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryUnarmoredTrained, + "Armor.Category.Unarmored.Trained", + "Trained in Unarmored Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryUnarmoredExpert, + "Armor.Category.Unarmored.Expert", + "Expert in Unarmored Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryUnarmoredMaster, + "Armor.Category.Unarmored.Master", + "Master in Unarmored Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryUnarmoredLegendary, + "Armor.Category.Unarmored.Legendary", + "Legendary in Unarmored Defense" +) + +// === Light +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryLightUntrained, + "Armor.Category.Light.Untrained", + "Untrained in Light Armor Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryLightTrained, + "Armor.Category.Light.Trained", + "Trained in Light Armor Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryLightExpert, + "Armor.Category.Light.Expert", + "Expert in Light Armor Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryLightMaster, + "Armor.Category.Light.Master", + "Master in Light Armor Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryLightLegendary, + "Armor.Category.Light.Legendary", + "Legendary in Light Armor Defense" +) + +// === Medium +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryMediumUntrained, + "Armor.Category.Medium.Untrained", + "Untrained in Medium Armor Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryMediumTrained, + "Armor.Category.Medium.Trained", + "Trained in Medium Armor Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryMediumExpert, + "Armor.Category.Medium.Expert", + "Expert in Medium Armor Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryMediumMaster, + "Armor.Category.Medium.Master", + "Master in Medium Armor Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryMediumLegendary, + "Armor.Category.Medium.Legendary", + "Legendary in Medium Armor Defense" +) + +// === Heavy +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryHeavyUntrained, + "Armor.Category.Heavy.Untrained", + "Untrained in Heavy Armor Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryHeavyTrained, + "Armor.Category.Heavy.Trained", + "Trained in Heavy Armor Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryHeavyExpert, + "Armor.Category.Heavy.Expert", + "Expert in Heavy Armor Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryHeavyMaster, + "Armor.Category.Heavy.Master", + "Master in Heavy Armor Defense" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagArmorCategoryHeavyLegendary, + "Armor.Category.Heavy.Legendary", + "Legendary in Heavy Armor Defense" +) + +// ===================================================================================================================== +// Spell Attack Proficiency Rank - The character's aptitude in spell attacks (Spell Attack Roll). +// ===================================================================================================================== +// Source: TBD +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellAttackUntrained, + "SpellAttack.Untrained", + "Untrained in spell attacks" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellAttackTrained, + "SpellAttack.Trained", + "Trained in spell attacks" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellAttackExpert, + "SpellAttack.Expert", + "Expert in spell attacks" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellAttackMaster, + "SpellAttack.Master", + "Master in spell attacks" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellAttackLegendary, + "SpellAttack.Legendary", + "Legendary in spell attacks" +) + +// ===================================================================================================================== +// Spell DC Proficiency Rank - The character's aptitude in spellcasting (Spell DC). +// ===================================================================================================================== +// Source: TBD +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellDcUntrained, + "SpellDc.Untrained", + "Untrained in spellcasting" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellDcTrained, + "SpellDc.Trained", + "Trained in spellcasting" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellDcExpert, + "SpellDc.Expert", + "Expert in spellcasting" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellDcMaster, + "SpellDc.Master", + "Master in spellcasting" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSpellDcLegendary, + "SpellDc.Legendary", + "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. + +// === Fortitude +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowFortitudeUntrained, + "SavingThrow.Fortitude.Untrained", + "Untrained in Fortitude" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowFortitudeTrained, + "SavingThrow.Fortitude.Trained", + "Trained in Fortitude" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowFortitudeExpert, + "SavingThrow.Fortitude.Expert", + "Expert in Fortitude" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowFortitudeMaster, + "SavingThrow.Fortitude.Master", + "Master in Fortitude" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowFortitudeLegendary, + "SavingThrow.Fortitude.Legendary", + "Legendary in Fortitude" +) + +// === Reflex +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowReflexUntrained, + "SavingThrow.Reflex.Untrained", + "Untrained in Reflex" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowReflexTrained, + "SavingThrow.Reflex.Trained", + "Trained in Reflex" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowReflexExpert, + "SavingThrow.Reflex.Expert", + "Expert in Reflex" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowReflexMaster, + "SavingThrow.Reflex.Master", + "Master in Reflex" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowReflexLegendary, + "SavingThrow.Reflex.Legendary", + "Legendary in Reflex" +) + +// === Will +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowWillUntrained, + "SavingThrow.Will.Untrained", + "Untrained in Will" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowWillTrained, + "SavingThrow.Will.Trained", + "Trained in Will" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowWillExpert, + "SavingThrow.Will.Expert", + "Expert in Will" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowWillMaster, + "SavingThrow.Will.Master", + "Master in Will" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagSavingThrowWillLegendary, + "SavingThrow.Will.Legendary", + "Legendary in Will" +) + +// === Perception +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagPerceptionUntrained, + "Perception.Untrained", + "Untrained in Perception" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagPerceptionTrained, + "Perception.Trained", + "Trained in Perception" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagPerceptionExpert, + "Perception.Expert", + "Expert in Perception" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagPerceptionMaster, + "Perception.Master", + "Master in Perception" +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + Pf2TagPerceptionLegendary, + "Perception.Legendary", + "Legendary in Perception" +) diff --git a/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Abilities.cpp b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Abilities.cpp new file mode 100644 index 000000000..a758d9d0e --- /dev/null +++ b/Source/OpenPF2GameFramework/Private/GameplayTags/Traits/Abilities.cpp @@ -0,0 +1,109 @@ +// 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" + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_ALCHEMIST, + "Trait.Ability.Alchemist", + "This indicates abilities from the alchemist class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_ATTACK, + "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( + TAG_TRAIT_ABILITY_BARBARIAN, + "Trait.Ability.Barbarian", + "This indicates abilities from the barbarian class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_BARD, + "Trait.Ability.Bard", + "This indicates abilities from the bard class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_CHAMPION, + "Trait.Ability.Champion", + "This indicates abilities from the champion class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_CLERIC, + "Trait.Ability.Cleric", + "This indicates abilities from the cleric class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_COMMON, + "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( + TAG_TRAIT_ABILITY_DRUID, + "Trait.Ability.Druid", + "This indicates abilities from the druid class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_FIGHTER, + "Trait.Ability.Fighter", + "This indicates abilities from the fighter class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_INCAPACITATION, + "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( + TAG_TRAIT_ABILITY_MONK, + "Trait.Ability.Monk", + "Abilities with this trait are from the monk class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_RANGER, + "Trait.Ability.Ranger", + "This indicates abilities from the ranger class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_ROGUE, + "Trait.Ability.Rogue", + "This indicates abilities from the rogue class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_SECRET, + "Trait.Ability.Secret", + "The GM rolls the check for this ability in secret." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_SORCERER, + "Trait.Ability.Sorcerer", + "This indicates abilities from the sorcerer class." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ABILITY_WIZARD, + "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..f710d8f5e --- /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( + TAG_TRAIT_ACTION_AUDITORY, + "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( + TAG_TRAIT_ACTION_CONCENTRATE, + "Trait.Action.Concentrate", + "An action with this trait requires a degree of mental concentration and discipline." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ACTION_FLOURISH, + "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( + TAG_TRAIT_ACTION_MANIPULATE, + "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( + TAG_TRAIT_ACTION_METAMAGIC, + "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( + TAG_TRAIT_ACTION_MOVE, + "Trait.Action.Move", + "An action with this trait involves moving from one space to another." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_ACTION_OPEN, + "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( + TAG_TRAIT_ACTION_PRESS, + "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( + TAG_TRAIT_ACTION_STANCE, + "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..a4a501380 --- /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( + TAG_TRAIT_CONDITION_BLINDED, + "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( + TAG_TRAIT_CONDITION_BROKEN, + "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( + TAG_TRAIT_CONDITION_CLUMSY, + "Trait.Condition.Clumsy", + "Your movements become clumsy and inexact. Clumsy always includes a value." +) + +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_CLUMSY_1, "Trait.Condition.Clumsy.1") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_CLUMSY_2, "Trait.Condition.Clumsy.2") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_CLUMSY_3, "Trait.Condition.Clumsy.3") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_CLUMSY_4, "Trait.Condition.Clumsy.4") + +// === Concealed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_CONCEALED, + "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( + TAG_TRAIT_CONDITION_CONFUSED, + "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( + TAG_TRAIT_CONDITION_CONTROLLED, + "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( + TAG_TRAIT_CONDITION_DAZZLED, + "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( + TAG_TRAIT_CONDITION_DEAFENED, + "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( + TAG_TRAIT_CONDITION_DOOMED, + "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(TAG_TRAIT_CONDITION_DOOMED_1, "Trait.Condition.Doomed.1") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_DOOMED_2, "Trait.Condition.Doomed.2") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_DOOMED_3, "Trait.Condition.Doomed.3") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_DOOMED_4, "Trait.Condition.Doomed.4") + +// === Drained +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_DRAINED, + "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(TAG_TRAIT_CONDITION_DRAINED_1, "Trait.Condition.Drained.1") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_DRAINED_2, "Trait.Condition.Drained.2") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_DRAINED_3, "Trait.Condition.Drained.3") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_DRAINED_4, "Trait.Condition.Drained.4") + +// === Dying +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_DYING, + "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(TAG_TRAIT_CONDITION_DYING_1, "Trait.Condition.Dying.1") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_DYING_2, "Trait.Condition.Dying.2") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_DYING_3, "Trait.Condition.Dying.3") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_DYING_4, "Trait.Condition.Dying.4") + +// === Encumbered +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_ENCUMBERED, + "Trait.Condition.Encumbered", + "You are carrying more weight than you can manage." +) + +// === Enfeebled +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_ENFEEBLED, + "Trait.Condition.Enfeebled", + "You're physically weakened. Enfeebled always includes a value." +) + +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_ENFEEBLED_1, "Trait.Condition.Enfeebled.1") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_ENFEEBLED_2, "Trait.Condition.Enfeebled.2") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_ENFEEBLED_3, "Trait.Condition.Enfeebled.3") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_ENFEEBLED_4, "Trait.Condition.Enfeebled.4") + +// === Fascinated +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_FASCINATED, + "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( + TAG_TRAIT_CONDITION_FATIGUED, + "Trait.Condition.Fatigued", + "You're tired and can't summon much energy." +) + +// === Flat footed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_FLAT_FOOTED, + "Trait.Condition.FlatFooted", + "You're distracted or otherwise unable to focus your full attention on defense." +) + +// === Fleeing +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_FLEEING, + "Trait.Condition.Fleeing", + "You're forced to run away due to fear or some other compulsion." +) + +// === Friendly +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_FRIENDLY, + "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( + TAG_TRAIT_CONDITION_FRIGHTENED, + "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(TAG_TRAIT_CONDITION_FRIGHTENED_1, "Trait.Condition.Frightened.1") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_FRIGHTENED_2, "Trait.Condition.Frightened.2") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_FRIGHTENED_3, "Trait.Condition.Frightened.3") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_FRIGHTENED_4, "Trait.Condition.Frightened.4") + +// === Grabbed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_GRABBED, + "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( + TAG_TRAIT_CONDITION_HELPFUL, + "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( + TAG_TRAIT_CONDITION_HIDDEN, + "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( + TAG_TRAIT_CONDITION_HOSTILE, + "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( + TAG_TRAIT_CONDITION_IMMOBILIZED, + "Trait.Condition.Immobilized", + "You can't use any action with the move trait." +) + +// === Indifferent +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_INDIFFERENT, + "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( + TAG_TRAIT_CONDITION_INVISIBLE, + "Trait.Condition.Invisible", + "While invisible, you can't be seen. You're undetected to everyone." +) + +// === Observed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_OBSERVED, + "Trait.Condition.Observed", + "Anything in plain view is observed by you." +) + +// === Paralyzed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_PARALYZED, + "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( + TAG_TRAIT_CONDITION_PETRIFIED, + "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( + TAG_TRAIT_CONDITION_PRONE, + "Trait.Condition.Prone", + "You're lying on the ground. You are flat-footed." +) + +// === Quickened +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_QUICKENED, + "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( + TAG_TRAIT_CONDITION_RESTRAINED, + "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( + TAG_TRAIT_CONDITION_SICKENED, + "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(TAG_TRAIT_CONDITION_SICKENED_1, "Trait.Condition.Sickened.1") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_SICKENED_2, "Trait.Condition.Sickened.2") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_SICKENED_3, "Trait.Condition.Sickened.3") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_SICKENED_4, "Trait.Condition.Sickened.4") + +// === Slowed +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_SLOWED, + "Trait.Condition.Slowed", + "You have fewer actions. Slowed always includes a value." +) + +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_SLOWED_1, "Trait.Condition.Slowed.1") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_SLOWED_2, "Trait.Condition.Slowed.2") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_SLOWED_3, "Trait.Condition.Slowed.3") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_SLOWED_4, "Trait.Condition.Slowed.4") + +// === Stunned +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_STUNNED, + "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(TAG_TRAIT_CONDITION_STUNNED_1, "Trait.Condition.Stunned.1") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_STUNNED_2, "Trait.Condition.Stunned.2") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_STUNNED_3, "Trait.Condition.Stunned.3") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_STUNNED_4, "Trait.Condition.Stunned.4") + +// === Stupefied +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_STUPEFIED, + "Trait.Condition.Stupefied", + "Your thoughts and instincts are clouded. Stupefied always includes a value." +) + +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_STUPEFIED_1, "Trait.Condition.Stupefied.1") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_STUPEFIED_2, "Trait.Condition.Stupefied.2") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_STUPEFIED_3, "Trait.Condition.Stupefied.3") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_STUPEFIED_4, "Trait.Condition.Stupefied.4") + +// === Unconscious +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_UNCONSCIOUS, + "Trait.Condition.Unconscious", + "You're sleeping, or you've been knocked out. You can't act." +) + +// === Undetected +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_CONDITION_UNDETECTED, + "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( + TAG_TRAIT_CONDITION_UNFRIENDLY, + "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( + TAG_TRAIT_CONDITION_UNNOTICED, + "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( + TAG_TRAIT_CONDITION_WOUNDED, + "Trait.Condition.Wounded", + "You have been seriously injured." +) + +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_WOUNDED_1, "Trait.Condition.Wounded.1") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_WOUNDED_2, "Trait.Condition.Wounded.2") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_WOUNDED_3, "Trait.Condition.Wounded.3") +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_WOUNDED_4, "Trait.Condition.Wounded.4") + +// The following conditions do not appear in the Core Rulebook but were added by OpenPF2. + +// === Dead +UE_DEFINE_GAMEPLAY_TAG(TAG_TRAIT_CONDITION_DEAD, "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..eba36405a --- /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( + TAG_TRAIT_CREATURE_ELF, + "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( + TAG_TRAIT_CREATURE_HALFELF, + "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( + TAG_TRAIT_CREATURE_HALFORC, + "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( + TAG_TRAIT_CREATURE_HUMAN, + "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( + TAG_TRAIT_CREATURE_HUMANOID, + "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( + TAG_TRAIT_CREATURE_ORC, + "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..04e61459e --- /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( + TAG_TRAIT_EFFECT_DEATH, + "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( + TAG_TRAIT_EFFECT_DISEASE, + "Trait.Effect.Disease", + "An effect with this trait applies one or more diseases. A disease is typically an affliction." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_EFFECT_LINGUISTIC, + "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( + TAG_TRAIT_EFFECT_NONLETHAL, + "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( + TAG_TRAIT_EFFECT_POISON, + "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( + TAG_TRAIT_EFFECT_SONIC, + "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..a99e4550c --- /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( + TAG_TRAIT_WEAPON_AGILE, + "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( + TAG_TRAIT_WEAPON_ATTACHED_TO_SHIELD, + "Trait.Weapon.Attached.ToShield", + "A weapon with this trait must be combined with a shield to be used." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_WEAPON_BACKSTABBER, + "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( + TAG_TRAIT_WEAPON_BACKSWING, + "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( + TAG_TRAIT_WEAPON_DEADLY_D6, + "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( + TAG_TRAIT_WEAPON_DEADLY_D8, + "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( + TAG_TRAIT_WEAPON_DEADLY_D10, + "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( + TAG_TRAIT_WEAPON_DISARM, + "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( + TAG_TRAIT_WEAPON_DWARF, + "Trait.Weapon.Dwarf", + "A weapon with this trait is crafted and used by Dwarves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_WEAPON_ELF, + "Trait.Weapon.Elf", + "A weapon with this trait is crafted and used by Elves." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_WEAPON_FATAL_D8, + "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( + TAG_TRAIT_WEAPON_FATAL_D10, + "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( + TAG_TRAIT_WEAPON_FATAL_D12, + "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( + TAG_TRAIT_WEAPON_FINESSE, + "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( + TAG_TRAIT_WEAPON_FORCEFUL, + "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( + TAG_TRAIT_WEAPON_FREEHAND, + "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( + TAG_TRAIT_WEAPON_GNOME, + "Trait.Weapon.Gnome", + "A weapon with this trait is crafted and used by Gnomes." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_WEAPON_GOBLIN, + "Trait.Weapon.Goblin", + "A weapon with this trait is crafted and used by Goblins." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_WEAPON_HALFLING, + "Trait.Weapon.Halfling", + "A weapon with this trait is crafted and used by Halflings." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_WEAPON_JOUSTING_D6, + "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( + TAG_TRAIT_WEAPON_MONK, + "Trait.Weapon.Monk", + "A weapon with this trait monks often learn to use." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_WEAPON_NONLETHAL, + "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( + TAG_TRAIT_WEAPON_ORC, + "Trait.Weapon.Orc", + "A weapon with this trait is crafted and used by Orcs." +) + +UE_DEFINE_GAMEPLAY_TAG_COMMENT( + TAG_TRAIT_WEAPON_PARRY, + "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( + TAG_TRAIT_WEAPON_PROPULSIVE, + "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( + TAG_TRAIT_WEAPON_REACH, + "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( + TAG_TRAIT_WEAPON_SHOVE, + "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( + TAG_TRAIT_WEAPON_SWEEP, + "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( + TAG_TRAIT_WEAPON_THROWN_3M, + "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( + TAG_TRAIT_WEAPON_THROWN_6M, + "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( + TAG_TRAIT_WEAPON_TRIP, + "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( + TAG_TRAIT_WEAPON_TWIN, + "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( + TAG_TRAIT_WEAPON_TWOHAND_D8, + "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( + TAG_TRAIT_WEAPON_TWOHAND_D10, + "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( + TAG_TRAIT_WEAPON_TWOHAND_D12, + "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( + TAG_TRAIT_WEAPON_UNARMED, + "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( + TAG_TRAIT_WEAPON_VERSATILE_BLUDGEONING, + "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( + TAG_TRAIT_WEAPON_VERSATILE_PIERCING, + "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( + TAG_TRAIT_WEAPON_VERSATILE_SLASHING, + "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( + TAG_TRAIT_WEAPON_VOLLEY_9M, + "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/Public/GameplayTags/CoreStats/CreatureAlignments.h b/Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/CreatureAlignments.h new file mode 100644 index 000000000..7ad73c773 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/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/CoreStats/CreatureSizes.h b/Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/CreatureSizes.h new file mode 100644 index 000000000..dc5631c38 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/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/CoreStats/Equipment.h b/Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/Equipment.h new file mode 100644 index 000000000..1ed7cb9f7 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/Equipment.h @@ -0,0 +1,20 @@ +// 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 + +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_ARMOR_EQUIPPED_UNARMORED) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_ARMOR_EQUIPPED_LIGHT) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_ARMOR_EQUIPPED_MEDIUM) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_ARMOR_EQUIPPED_HEAVY) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/KeyAbilities.h b/Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/KeyAbilities.h new file mode 100644 index 000000000..eb71ade81 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/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). +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_KEYABILITY_STRENGTH) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_KEYABILITY_DEXTERITY) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_KEYABILITY_CONSTITUTION) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_KEYABILITY_INTELLIGENCE) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_KEYABILITY_WISDOM) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_KEYABILITY_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_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_SPELLCASTINGABILITY_STRENGTH) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_SPELLCASTINGABILITY_DEXTERITY) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_SPELLCASTINGABILITY_CONSTITUTION) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_SPELLCASTINGABILITY_INTELLIGENCE) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_SPELLCASTINGABILITY_WISDOM) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_SPELLCASTINGABILITY_CHARISMA) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/Proficiencies.h b/Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/Proficiencies.h new file mode 100644 index 000000000..e9dd433a1 --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/CoreStats/Proficiencies.h @@ -0,0 +1,81 @@ +// 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 + +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(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(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(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(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(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(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(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(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(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(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/Traits/Abilities.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Abilities.h new file mode 100644 index 000000000..e6c286787 --- /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. +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_ALCHEMIST) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_ATTACK) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_BARBARIAN) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_BARD) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_CHAMPION) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_CLERIC) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_COMMON) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_DRUID) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_FIGHTER) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_INCAPACITATION) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_MONK) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_RANGER) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_ROGUE) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_SECRET) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_SORCERER) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ABILITY_WIZARD) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Actions.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Actions.h new file mode 100644 index 000000000..5680789e9 --- /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. +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ACTION_AUDITORY) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ACTION_CONCENTRATE) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ACTION_FLOURISH) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ACTION_MANIPULATE) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ACTION_METAMAGIC) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ACTION_MOVE) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ACTION_OPEN) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ACTION_PRESS) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_ACTION_STANCE) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Conditions.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Conditions.h new file mode 100644 index 000000000..fbcbf288d --- /dev/null +++ b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Conditions.h @@ -0,0 +1,190 @@ +// 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 +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_BLINDED) + +// === Broken +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_BROKEN) + +// === Clumsy +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_CLUMSY) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_CLUMSY_1) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_CLUMSY_2) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_CLUMSY_3) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_CLUMSY_4) + +// === Concealed +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_CONCEALED) + +// === Confused +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_CONFUSED) + +// === Controlled +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_CONTROLLED) + +// === Dazzled +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DAZZLED) + +// === Deafened +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DEAFENED) + +// === Doomed +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DOOMED) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DOOMED_1) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DOOMED_2) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DOOMED_3) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DOOMED_4) + +// === Drained +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DRAINED) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DRAINED_1) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DRAINED_2) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DRAINED_3) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DRAINED_4) + +// === Dying +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DYING) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DYING_1) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DYING_2) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DYING_3) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DYING_4) + +// === Encumbered +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_ENCUMBERED) + +// === Enfeebled +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_ENFEEBLED) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_ENFEEBLED_1) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_ENFEEBLED_2) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_ENFEEBLED_3) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_ENFEEBLED_4) + +// === Fascinated +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_FASCINATED) + +// === Fatigued +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_FATIGUED) + +// === Flat footed +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_FLAT_FOOTED) + +// === Fleeing +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_FLEEING) + +// === Friendly +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_FRIENDLY) + +// === Frightened +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_FRIGHTENED) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_FRIGHTENED_1) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_FRIGHTENED_2) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_FRIGHTENED_3) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_FRIGHTENED_4) + +// === Grabbed +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_GRABBED) + +// === Helpful +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_HELPFUL) + +// === Hidden +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_HIDDEN) + +// === Hostile +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_HOSTILE) + +// === Immobilized +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_IMMOBILIZED) + +// === Indifferent +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_INDIFFERENT) + +// === Invisible +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_INVISIBLE) + +// === Observed +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_OBSERVED) + +// === Paralyzed +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_PARALYZED) + +// === Petrified +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_PETRIFIED) + +// === Prone +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_PRONE) + +// === Quickened +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_QUICKENED) + +// === Restrained +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_RESTRAINED) + +// === Sickened +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_SICKENED) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_SICKENED_1) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_SICKENED_2) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_SICKENED_3) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_SICKENED_4) + +// === Slowed +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_SLOWED) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_SLOWED_1) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_SLOWED_2) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_SLOWED_3) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_SLOWED_4) + +// === Stunned +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_STUNNED) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_STUNNED_1) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_STUNNED_2) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_STUNNED_3) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_STUNNED_4) + +// === Stupefied +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_STUPEFIED) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_STUPEFIED_1) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_STUPEFIED_2) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_STUPEFIED_3) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_STUPEFIED_4) + +// === Unconscious +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_UNCONSCIOUS) + +// === Undetected +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_UNDETECTED) + +// === Unfriendly +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_UNFRIENDLY) + +// === Unnoticed +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_UNNOTICED) + +// === Wounded +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_WOUNDED) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_WOUNDED_1) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_WOUNDED_2) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_WOUNDED_3) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_WOUNDED_4) + +// The following conditions do not appear in the Core Rulebook but were added by OpenPF2. +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CONDITION_DEAD) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Creatures.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Creatures.h new file mode 100644 index 000000000..b8135508c --- /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. +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CREATURE_ELF) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CREATURE_HALFELF) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CREATURE_HALFORC) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CREATURE_HUMAN) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CREATURE_HUMANOID) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_CREATURE_ORC) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Effects.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Effects.h new file mode 100644 index 000000000..4ffc098cb --- /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. +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_EFFECT_DEATH) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_EFFECT_DISEASE) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_EFFECT_LINGUISTIC) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_EFFECT_NONLETHAL) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_EFFECT_POISON) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_EFFECT_SONIC) diff --git a/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Weapons.h b/Source/OpenPF2GameFramework/Public/GameplayTags/Traits/Weapons.h new file mode 100644 index 000000000..21fcafa72 --- /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. +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_AGILE) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_ATTACHED_TO_SHIELD) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_BACKSTABBER) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_BACKSWING) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_DEADLY_D6) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_DEADLY_D8) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_DEADLY_D10) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_DISARM) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_DWARF) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_ELF) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_FATAL_D8) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_FATAL_D10) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_FATAL_D12) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_FINESSE) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_FORCEFUL) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_FREEHAND) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_GNOME) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_GOBLIN) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_HALFLING) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_JOUSTING_D6) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_MONK) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_NONLETHAL) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_ORC) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_PARRY) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_PROPULSIVE) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_REACH) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_SHOVE) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_SWEEP) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_THROWN_3M) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_THROWN_6M) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_TRIP) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_TWIN) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_TWOHAND_D8) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_TWOHAND_D10) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_TWOHAND_D12) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_UNARMED) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_VERSATILE_BLUDGEONING) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_VERSATILE_PIERCING) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_VERSATILE_SLASHING) +UE_DECLARE_GAMEPLAY_TAG_EXTERN(TAG_TRAIT_WEAPON_VOLLEY_9M)