Pillars of Eternity Wiki
(Updates to the ability infobox to better support Deadfire)
 
No edit summary
Line 4: Line 4:
 
Replies should go directly below (above the line) with suggestions, ideas, opinions, etc. [[User:Macklin|Macklin]] ([[User talk:Macklin|talk]]) 18:36, 17 April 2020 (UTC)
 
Replies should go directly below (above the line) with suggestions, ideas, opinions, etc. [[User:Macklin|Macklin]] ([[User talk:Macklin|talk]]) 18:36, 17 April 2020 (UTC)
   
  +
:This is an amazing piece of work! I've looked over some of it, but I'm sure you have a better idea of what is sensible here, so I trust your decisions. The only comment I have is about this:
−  
  +
:* ability_range -> range
  +
:Perhaps my memory is fuzzy now, but I thought "range" was a protected word in Cargo. I know they introduced many protected words after I made some of the infoboxes, which broke them and resulted in error messages. If range is one of them, we can't use it. [[User:Pangaearocks|Pangaearocks]] ([[User talk:Pangaearocks|talk]]) 17:50, 19 April 2020 (UTC)
   
 
{{hr}}
 
{{hr}}

Revision as of 17:50, 19 April 2020

Updating the ability infobox for Deadfire

Alright, figured we should have a dedicated talk page for this discussion. I've done a quick pass of the fields here, have added some notes for their relevancy in poe2, as well as some general information about what they are and where they come from.

Replies should go directly below (above the line) with suggestions, ideas, opinions, etc. Macklin (talk) 18:36, 17 April 2020 (UTC)

This is an amazing piece of work! I've looked over some of it, but I'm sure you have a better idea of what is sensible here, so I trust your decisions. The only comment I have is about this:
  • ability_range -> range
Perhaps my memory is fuzzy now, but I thought "range" was a protected word in Cargo. I know they introduced many protected words after I made some of the infoboxes, which broke them and resulted in error messages. If range is one of them, we can't use it. Pangaearocks (talk) 17:50, 19 April 2020 (UTC)

What to include? What is an "ability"?

Deadfire uses the concept of abilities for almost everything. A majority of these "abilities" are hidden and are a result of enchantments, enemy attacks, consumables, etc. Naturally when a player thinks of an ability, they think of something their character can cast - so we'll only want to include those that are "usable" by the player or party. Unfortunately the game files don't make this distinction very clear, but for a start we can refer to the default progression tables, which are a set of rules that govern which abilities are given to the character.

Name ID
Talents 25f42f57-6bfb-4c30-bdfa-857a95fd5fd5
Racials b2afaada-c140-42c3-9f02-2f919e45b49d
Proficiencies a01f1324-4484-4548-a2b3-602a28dca631
Classes
Fighter dcc7b7db-c31b-4075-869c-bd660bfe4ee2
Rogue 958174ed-bef9-4d9b-9bc0-25bef1864623
Priest a52e8b61-9343-4716-8a55-3168be143cc4
Wizard 8b5635bf-28b1-4836-9712-66c99553ccf2
Barbarian 67621a56-397e-4fae-8e04-59890b25c7fc
Ranger d574de6c-f4cb-4948-9a71-fb372700e6a5
Druid 879d3662-bdf7-4585-99e4-0af2df117c50
Paladin 7af80bf4-f8fc-48ff-b02e-884b2e7b12f9
Monk dc561d91-7bc9-4314-acff-837511566964
Cipher 12ba861c-8f31-45af-869f-e02a9a677484
Chanter 6b722b30-d930-43ae-b936-248a1616f48e

After this, we have a few more options to narrow down player-only abilities:

  • Remove abilities that aren't shown in UI (where the HideFromUI field is true).
  • Remove abilities that don't have a description or display name

Even then, we'll still be left with a large number of enchantment abilities - for example Missile Cache is an enchantment (ability) that grants a set amount of charges of the actual ability "Minoletta's Bounding Missles". At the moment my inclination is that the remaining abilities will need to be examined manually to determine if they should be added as a page or not.

Types to consider

All abilities are stored in abilities.gamedatabundle (one for each expansion). The game data here only specifies the most-derived class, so we have to determine what should be used from the derivatives of the following classes. Alternatively we can use all gamedata containing a GenericAbilityComponent or PhraseComponent

↳ ProgressionUnlockableGameData

↳ PhraseGameData (Phrases)
↳ GenericTalentGameData (unused)
↳ GenericAbilityGameData (covers most abilities)

Derivatives of GenericAbilityGameData. These only exist to provide additional fields.

↳ AttackLowestDefenseAbilityGameData
↳ AuraAbilityGameData (Auras)
↳ CoordinatedPositioningAbilityGameData (rogue's Coordinated Positioning)
↳ DeathblowsGameData (rogue's Deathblows)
↳ FinishingBlowAbilityGameData (rogue's Finishing Blow)
↳ FocusTraitGameData (cipher abilities that use focus)
↳ LinkedEffectAbilityGameData (only for a cipher's Defensive Mindweb)
↳ MirrorAbilityGameData (wizard's Mirrored Image, and others)
↳ SharedTargetAbilityGameData
↳ SpecialGenericAbilityGameData
↳ WeaponAttackAbilityGameData
↳ WoundsTraitAbilityGameData (monk Wounds abilities)

Unused derivatives of GenericAbilityGameData

↳ BackStabAbilityGameData (unused)
↳ BloodlustAbilityGameData (unused)
↳ ChantGameData (chants are editable and shouldn't be considered as abilities)
↳ DrainingTouchAbilityGameData (unused)
↳ EnervatingBlowsAbilityGameData (unused)
↳ FlankingAbilityGameData (unused)
↳ GenericAbilityWithExtraAttackOnMissAndEndGameData (unused)
↳ GenericAbilityWithPrimaryAttackOverridesGameData (unused)
↳ HeartOfFuryAbilityGameData (unused)
↳ MinorBlightsAbilityGameData (unused)
↳ OneStandsAloneAbilityGameData (unused)
↳ PowderBurnsAbilityGameData (unused)
↳ RighteousSoulAbilityGameData (unused)
↳ RiposteAbilityGameData (unused)
↳ SafeguardAbilityGameData (unused)
↳ SoulMirrorAbilityGameData (unused)
↳ TriggeredImmunityAbilityGameData (unused)
↳ VengefulDefeatAbilityGameData (unused)
↳ WeaponFocusAbilityGameData (unused)
↳ WeaponSpecializationGameData (unused)
↳ WeaponTypeSpecializationGameData (unused)
Talents

Some notes about talents, or at least what I can deduce:

  • A talent is any ability (usually passive) granted from being a certain subclass/race/subrace etc, or one that is granted through gameplay (e.g. NPC training, boons).
  • They usually provide permanent buffs or effects.
  • Unlike abilities, talents do not (always) appear in the ability hotbar, and will only appear in the "Current effects" section of the character sheet.
  • Many of these are listed in the "Permanent bonuses" section of Status effects (Deadfire).
  • Typically have an AbilityLearnLevel of 0 or 1 (but this isn't always the case)
  • The game doesn't actively use the word "talent" in-game - only passives or effects.

I think that the distinction of "talent" as a separate table is somewhat unnecessary. There are way too many abilities that can be classed as talents and talents that can be classed as abilities. They use a subset of the fields used for abilities, but do not add any more. We should list all talents in the abilities table and mark them as such with the ability_type field, as all talents are functionally abilities. This is something that is certainly open for discussion. See ability_type below for more.

Fields

Below I have outlined the current fields and have made some suggestions for new fields based on concepts introduced in Deadfire, grouped by type.

name
Cargo type Page
Description In-game name
Game data GenericAbilityComponent.DisplayName
Additional notes
icon
Cargo type File
Description File name of ability icon. File names should always have "_icon" added to the end of the name, before the extension.
Game data Game asset -> File:Poe2_SpellAbilityIcons.png
Additional notes Many of the icons are shared with poe1, so we might not need to upload them all (but this depends on whether they've available at a higher resolution in poe2).
description
Cargo type Wikitext
Description The in-game description, including upgrade descriptions (which appear below the description for abilities that are upgrades).
Game data Description + UpgradeDescriptions[0].String
Additional notes
added_in
Cargo type String
Description Same as other pages (see Template:Game)
Game data Based on exported directory prefix
Additional notes
Requirements/Prerequisites
class
Cargo type Page
Description The class this ability is specific to (if any)
Game data AbilityClassID
Additional notes
subclass Yes
Cargo type Page
Description The subclass this ability is specific to (if any)
Game data Inferred from progressiontables subclass prerequisites
Additional notes
race
Cargo type Page
Description The race this ability is specific to (if any)
Game data Contained in ApplicationPrerequisites
Additional notes
subrace
Cargo type Page
Description The subrace this ability is specific to (if any)
Game data Contained in ApplicationPrerequisites
Additional notes
activation
Cargo type String
Description Activation type of the ability. One of the following:
  • Active - for abilities that have to be triggered by the player
  • Passive - for abilities that are always-on or are self-activating
  • Modal - for abilities that can be toggled on or off
Game data Inferred from IsPassive and IsModal
Additional notes An ability where IsPassive and IsModal is false should always be an active ability.

In the infobox below I've moved this from the Requirements section to the ability section

activation_req
Cargo type String
Description Condition that must be met for the ability to be activated, e.g. Health Below 10%
Game data Contained in ActivationPrerequisites
Additional notes Should only include restrictions that cannot already be defined in the other fields. Should also include the rarely use fields CannotActivateWhileInvisible and CannotActivateWhileInStealth
combat_only Yes
Cargo type Boolean
Description "yes" if the ability can only be used in combat. If this value is "no" or anything else, the field will not be shown in the infobox.
Game data IsCombatOnly
Additional notes There is also a IsNonCombatOnly field, but it seems to only be used for trap effects. If there are other cases, they can be put in activation_req
Ability

Info about the ability type, how it is learned and at what level, as well as the upgrades for this ability

ability_type
Cargo type String
Description The type of ability without a plural. A fairly vague/broad field. Naming in-game is very inconsistent and irrelevant in places.
  • Leave empty or use "Ability" for anything that doesn't fit below
    • "Talent" - An ability (usually passive) that is exclusively granted as a result of being a specific race/class/subclass etc. These usually don't show up in the ability tree, but will appear in the character sheet.
      Talents can be used to customize your character beyond your class Ability choices. Some talents modify existing Abilities, but others add new Abilities of their own. A subset of Talents are class specific, but most can be taken by characters of any class.
    • "Proficiency" - A weapon proficiency is a special modal ability that can be selected on level-up, granting a toggleable effect whenever a weapon of a specific type is wielded.
    • "Item" - An ability that can only be granted with an item.
    • "Spell" - Used for abilities specific to the following classes. Only "Spell" should be used, as the class-specific naming is rarely - if ever - used (for example the character sheet shows "1st Level Cipher Spells")
      • Cipher ("Powers")
      • Druid ("Nature Spells")
      • Priest ("Faith Spells")
      • Wizard ("Arcane Spells")
    • "Ability" - Used for abilities specific to all other classes (with the exception of chanter phrases, and invocations).
      • Barbarian
      • Fighter
      • Monk
      • Paladin
      • Ranger
      • Rogue
  • Modal groups (can only activate one at a time)
    • "Phrase" - All chanter-specific phrases. The term "Chant" should not be used in the since it is only used to hold phrases, and can be changed/renamed to whatever the player wants.
      All chanters can continuously speak chants made up of magical phrases. Phrases produce passive effects and help build a chanter's power until they can use an invocation.
    • "Invocation" - All chanter-specific abilities
      Invocations are powerful magical effects that chanters can create after they have spoken a required number of phrases through their chants.
      Chanter invocations require and consume Phrases on use. Phrases are generated only during combat, as the chanter coalesces tiny spirit fragments, through chanting.
    • The use of following types are up for debate. They are groups of spells/abilities, but they don't represent the entirety of the abilities that can be used by a class. Perhaps they should be used in another field?
      • "Stance" - Fighter stances
      • "Presence" - Monk presences
      • "Spiritshift" - Druid spiritshift
      • "Zealous Aura" - Paladin zealous aura
      • "Style" - Similar to weapon specialization, but can be picked as an ability tree passive instead of as part of the level up process.
Game data Varies
Additional notes * Whether to use "Ability" or "Spell" is entirely dependent on the AbilityClassID.
  • Weapon Proficiencies are abilities with the keyword ID "bb68a03d-507e-4799-9a4e-abe7377d1e56"
  • Chants, Stances, Zealous Auras, can sometimes be inferred from the ModalGroupID.
    • Chants use MG_Chants or MG_Chants_NPC_AI_ONLY - 89b2bced-3cc8-4a62-99ca-b8233316ce19 / 12893e0e-33de-4dca-9e75-45a431ba4ecd
    • Stances use MG_Fighter_Stances - 745b0192-3bd1-4e78-b5bd-605a17fa2efd
    • Presences use MG_Monk_Presences - 56a9c7ab-12f8-45ff-8fc9-41bd39fd1d7d
    • Spiritshifts use MG_Spiritshift - be36d74d-1e36-446e-856d-544873e2c27b
    • Zealous Auras use MG_Zealous_Auras - 46ab2074-64f0-4a82-8a27-4c518ce74abb
  • Talents - The progression table "PT_Generic_Talents" is applied to all characters, and should be used as start for what to mark as a talent and what not to, at least in terms of the race/class/etc talents (there are only 32 of them). Some status effects and abilities are prefixed with "talent_". However, it should still be said that there are no functional differences between abilities and talents. Talents were all moved from the GenericTalentGameData to the GenericAbilityGameData class, and used to be present in the progression table "PT_Talents". You can still see all the old talents in abilities.gamedatabundle, but they are not filled out and are not used in-game. Along with the progression table, we can probably refer to these unused types too.

In the infobox, if the ability is a class ability, the field will be presented in the following format:

nth Level class ability_type

So for a level 1 wizard spell:

"1st Level Wizard Spell"

In addition, the ability_level field will not be shown for all class abilities.

ability_level
Cargo type Integer
Description The native power level of the ability in arabic numerals. This is listed on the far left side of the ability tree.
Game data AbilityLevel
Additional notes
learn_type
Cargo type String
Description How this ability is learned.
  • "Automatic" - Abilities that are automatically granted (as a result of being a certain class/race/etc)
  • "Optional" - Abilities that can be chosen by the player
Game data UnlockStyle field in progressiontables.
Additional notes Default class entries are "PT_<ClassName>" (or as above). Abilities that automatically unlock have the UnlockStyle "Unlock", abilities that are selected by the player have the UnlockStyle "AutoGrant" (kinda counter-intuitive, I know).
learn_level
Cargo type Integer
Description The level at which this ability can be learned as a single class character (assuming that its unlock is based on level)
Game data Inferred using AbilityLevel and this table
Additional notes This value differs depending on whether the character uses a single class or a multi class. This field is used for single class, while learn_level_mc is used for multi class
learn_level_mc Yes
Cargo type Integer
Description The level at which this ability can be learned as a multiclass character (assuming that its unlock is based on level)
Game data Inferred using AbilityLevel and this table
Additional notes This value differs depending on whether the character uses a single class or a multi class. We'll likely have to list both, be it in the same field or two different fields.
upgrades_from Yes
Cargo type Page
Description The page name of the ability this ability is upgraded from, with the usual label (e.g. Some Ability (Deadfire){{!}}Some Ability)
Game data UpgradedFromId (DisplayName of GenericAbilityGameData with this id)
Additional notes
upgrades_to Yes
Cargo type List (;) of Page
Description List of page names that this ability can be upgraded to
Game data The DisplayName of all other GenericAbilityGameData's where their UpgradedFromId field is this ability
Additional notes
keywords Yes
Cargo type List (,) of String
Description Keywords for this ability (used for many things, mainly power level boosts). List should be in the same format as in-game, with comma or comma-space delimiters.
Game data KeywordsIDs
Additional notes
counters Yes
Cargo type List (,) of String
Description Counters to the keywords of this ability. List should be in the same format as in-game, with comma or comma-space delimiters.
Game data KeywordsIDs
Additional notes Counters are determined using the OpposedKeywords object in AbilitySettingsGameData
Casting

Stats regarding the casting of this ability, cooldowns, usages, etc

source
Cargo type String
Description The resource pool used for this ability. This is only applicable to class-specific abilities, and is unique to each class:
  • Barbarian: Rage
  • Chanter: Spirits
  • Cipher: Psionics
  • Druid: Nature*
  • Fighter: Discipline
  • Monk: Mortification
  • Paladin: Zeal
  • Priest: Faith*
  • Ranger: Bond
  • Rogue: Guile
  • Wizard: Arcane*

Keep in mind however that Druids, Priests, and Wizards do not have a resource pool (they instead have x casts per ability power level depending on their current level - among other things). For these classes this field (and the source_cost field) should be left empty.

Game data Inferred from a UsageType of ClassPowerPool or ClassAccruedResource and the AbilityClassID
Additional notes
source_cost
Cargo type Integer
Description The amount of resource this ability takes to cast. Should be left empty if the ability does not draw from a resource pool or accrued resource.
Game data UsageValue
Additional notes Should be left empty if the UsageType isn't ClassPowerPool or ClassAccruedResource.
uses
Cargo type Integer
Description The amount of uses this ability has before it must be replenished.
Game data UsageValue
Additional notes The source field for this value is shared with source_cost
restoration
Cargo type String (allowed values=Encounter,Rest)
Description Defines when/how the uses are replenished. Typically "Encounter" or "Rest" - do not include "per"
Game data UsageType (only if it is PerEncounter or PerRest)
Additional notes If the UsageType is Charges, this should be left empty to signify that the ability cannot be restored.
cast_time Yes
Cargo type Float
Description Time it takes to cast this ability. Should always be expressed as a numeric value with at least one decimal (more if the value has more significant decimal places). Unit (seconds) should be omitted.
Game data Inferred from the AttackBaseComponent.CastSpeedID field of the AttackGameData with the AttackID
Additional notes Although this (and recovery time) are internally expressed as fixed values "Fast" (0.0), "Average" (3.0), "Slow" (4.5), and "Very Slow" (6.0) - they are shown as numerical values in-game.
recovery_time Yes
Cargo type Float
Description Time it takes after an ability to perform another action. Should always be expressed as a numeric value with at least one decimal (more if the value has more significant decimal places). Unit (seconds) should be omitted.
Game data Inferred from the AttackBaseComponent.RecoveryTimeID field of the AttackGameData with the AttackID
Additional notes Although this (and recovery time) are internally expressed as fixed values "Fast" (0.0), "Average" (3.0), "Slow" (4.5), and "Very Slow" (6.0) - they are shown as numerical values in-game.
range
Cargo type String
Description Maximum distance from the target position this ability can be cast from.

Numerical values must not use a decimal point for whole numbers, and must not include a unit (meters) - this will be added automatically. Non-numerical values may be used where applicable (jump targets, "weapon", "ranged", "melee", etc.).

If the ability is cast on self, do not include a range.

Game data Inferred from the AttackBaseComponent.AttackDistance field of the AttackGameData with the AttackID
Additional notes
area_of_effect
Cargo type String
Description The area of effect the ability will cover, typically a radius.

Numerical values must not use a decimal point for whole numbers, and must not include a unit (meters) - this will be added automatically. Non-numerical values may be used where applicable, and must include a unit "m" with no spaces (jump targets, "weapon", "ranged", "melee", etc.).

Game data Varies
Additional notes Inferred from a number of different sources:
  • Aura abilities use AuraAbilityComponent.AuraRadius
  • ...
noise_use Yes
Cargo type String (allowed values=Silent,Quiet,Loud,Extremely Loud)
Description Amount of noise made on cast
Game data NoiseLevel1ID
Additional notes
noise_impact Yes
Cargo type String (allowed values=Silent,Quiet,Loud,Extremely Loud)
Description Amount of noise made on impact.
Game data Inferred from the AttackBaseComponent.NoiseLevel1ID field of the AttackGameData with the AttackID
Additional notes In-game this is only shown if the noise level differs from that of noise_use, otherwise if they are the same only one value is shown.
interrupt
Cargo type String (allowed values=Hit,Crit)
Description Defines when the abilities attack should interrupt a foe casting.
Game data Inferred from the AttackBaseComponent.InterruptsOn field of the AttackGameData with the AttackID
Additional notes
effects
Cargo type List (;) of Wikitext
Description Describes what this ability does, who it effects, etc.
Game data References in-game effects block.
Additional notes The string constructor for the effects block in-game is way too complicated to replicate from just game-data. Unfortunately this will need to be manually filled from in-game data.

To move formatting from the effects to the infobox (so that we can avoid the requirement of having the effects block strictly formatted), we might want to instead list effects similar to the way Template:Infobox quest poe2 lists rewards, where we have x number of fields representing a target and the effects on that target:

| effects_target_1 = Self
| effects_1        = +20% Healing for 10.0 sec
| effects_target_2 = Target
| effects_2        = 200 {{burn}} damage

We would then simply do

{{#if: {{{effects_target_1|}}} | *{{{effects_target_1}}}:<br/>:{{{effects_1}}}}}
{{#if: {{{effects_target_2|}}} | *{{{effects_target_2}}}:<br/>:{{{effects_2}}}}}

(probably) Resulting in:

  • Self:
    +20% Healing for 10.0 sec
  • Target:
    200 Burn damage

Much better I reckon.

rel_quests Yes
Cargo type List (;) of Page
Description List of quests that might be related to this ability (for example if this ability is received as a quest reward).
Game data -
Additional notes
rel_abilities
Cargo type List (;) of Page
Description List of abilities that might be related to this one, that aren't already listed in the upgrades section
Game data -
Additional notes
rel_items
Cargo type List (;) of Page
Description List of items that are related to this ability, e.g. grant this ability on equip.
Game data -
Additional notes
internalname
Cargo type String
Description The internal name of this ability
Game data DebugName
Additional notes
guid
Cargo type String
Description The internal ID of this ability (GUID)
Game data ID
Additional notes Won't be shown in the infobox (too long), but it's a nice-to-have.

Summary

  • Added:
    • subclass
    • learn_level_mc
    • upgrades_from
    • upgrades_to
    • keywords
    • counters
    • cast_time
    • recovery_time
    • noise_use
    • noise_impact
    • rel_quests
    • guid
  • Removed:
    • speed (substituted with cast_time and recovery_time)
    • linger (not used in poe2?)
    • talents
    • learn_buycost (not used in poe2)
    • inventor (kind of redundant if it's in the title)
  • Renamed for consistency with other poe2 infoboxes:
    • ability_range -> range
    • area -> area_of_effect
    • abilities -> rel_abilities
    • items -> rel_items
  • Merged into effects:
    To avoid duplicating fields and to provide less restrictions, most of the attack-related data should be moved to the effects field. Using dedicated fields will get messy since the ability can have multiple durations, defenses, targets, etc. The in-game text should be copied verbatim.
    • accuracy_mod
    • duration
    • defense
    • defense_damage (unused)
    • defense_effect (unused)
    • damage
    • damage_type

Other possible additions not in the above table:

description_tb
Cargo type String
Description Alternate description for turn based mode
Game data DescriptionTactical
Additional notes The gamedatabundle also defines a description for an alternate description used in Turn-based mode (called "tactical" mode in many of the game files).

Alternatively we can skip this, and do what is usually done when multiple descriptions are present - provide the first in the infobox, and the remainder on the page itself. Doing it this way would save a field and a page variable declaration that would otherwise be rarely used.

Infobox

I've used the template Template:Infobox ability poe2/test for staging. Edits can be made here before it is copied over to the main template so the page history isn't filled with tests and changes.

{{Infobox ability poe2/test
| name           = 
| icon           = 
| description    = 
| added_in       = 
| class          = 
| subclass       = 
| race           = 
| subrace        = 
| activation     = 
| activation_req = 
| combat_only    = 
| ability_type   = 
| ability_level  = 
| learn_type     = 
| learn_level    = 
| learn_level_mc = 
| upgrades_from  = 
| upgrades_to    = 
| keywords       = 
| counters       = 
| source         = 
| source_cost    = 
| uses           = 
| restoration    = 
| cast_time      = 
| recovery_time  = 
| range          = 
| area_of_effect = 
| noise_use      = 
| noise_impact   = 
| interrupt      = 
| effects        = 
| rel_quests     = 
| rel_abilities  = 
| rel_items      = 
| internalname   = 
| guid           = 
}}

Example infoboxes

Template:Infobox ability poe2/test
{{Infobox ability poe2/test
| name           = Deadly Surprise
| icon           = deadly_surprise.png
| description    = The ranger's animal companion falls over and appears to be dead for a limited time. When the companion stands back up, they regain health from the time spent resting.

(Deadly Surprise) - Afterwards, the animal companion gains a large damage bonus on their next attack.
| added_in       = poe2
| class          = Ranger
| subclass       = 
| race           = 
| subrace        = 
| activation     = Active
| activation_req = Animal companion not unconscious
| combat_only    = yes
| ability_type   = Ability
| ability_level  = 7
| learn_type     = Optional
| learn_level    = 13
| learn_level_mc = 19
| upgrades_from  = Play Dead
| upgrades_to    = 
| keywords       = 
| counters       = 
| source         = Bond
| source_cost    = 2
| uses           = 
| restoration    = 
| cast_time      = 0.0
| recovery_time  = 4.0
| range          = 
| area_of_effect = 
| noise_use      = Loud
| noise_impact   = Quiet
| interrupt      = 
| effects        = Self (animal companion):<br/>Revive with 350 Health, +100% Damage, Play dead;Target:<br/>Immunity to Bonded Grief attacks for 10.0 sec
| rel_quests     = 
| rel_abilities  = 
| rel_items      = 
| internalname   = Deadly_Surprise
| guid           = c881ca20-4369-45be-b141-63cefa391f15
}}

Template:Infobox ability poe2/test

{{Infobox ability poe2/test
| name           = Flame Shield
| icon           = flame_shield icon.png
| description    = Engulfs the caster in fire, increasing their Freeze Armor Rating and causing Burn damage to anyone who damages them with a melee attack.
| added_in       = poe2
| class          = Wizard
| subclass       = 
| race           = 
| subrace        = 
| activation     = Active
| activation_req = 
| combat_only    = yes
| ability_type   = Spell
| ability_level  = 4
| learn_type     = Optional
| learn_level    = 3
| learn_level_mc = 4
| upgrades_from  = 
| upgrades_to    = 
| keywords       = Transmutation, Fire
| counters       = Water, Frost
| source         = 
| source_cost    = 
| uses           = 
| restoration    = 
| cast_time      = 3.0
| recovery_time  = 4.0
| range          = 10
| area_of_effect = 1.5m Radius
| noise_use      = Loud
| noise_impact   = Loud
| interrupt      = 
| effects        = AoE when damaged: 4 [[Burn]] Damage over 6.0 sec {{!}} [[Accuracy]] vs. [[Fortitude]]
| rel_quests     = 
| rel_abilities  = 
| rel_items      = 
| internalname   = Flame_Shield
| guid           = 8bf92fdc-06d1-4d71-a2bd-d590af138be5
}}

Template:Infobox ability poe2/test

{{Infobox ability poe2/test
| name           = Penetrating Empower
| icon           = ability_passive_penetration.png
| description    = Empowered attacks gain increased Penetration.
| added_in       = poe2
| class          = 
| subclass       = 
| race           = 
| subrace        = 
| activation     = Passive
| activation_req = 
| combat_only    = 
| ability_type   = Talent
| ability_level  = 7
| learn_type     = Optional
| learn_level    = 13
| learn_level_mc = 19
| upgrades_from  = 
| upgrades_to    = 
| keywords       = 
| counters       = 
| source         = 
| source_cost    = 
| uses           = 
| restoration    = 
| cast_time      = 
| recovery_time  = 
| range          = 
| area_of_effect = 
| noise_use      = 
| noise_impact   = 
| interrupt      = 
| effects        = Self: +1 [[Penetration]] with Empowered attacks
| rel_quests     = 
| rel_abilities  = 
| rel_items      = 
| internalname   = Penetrating_Empower
| guid           = 5fc04f38-9b74-480a-b624-c17cfd2cfdea
}}

Page format

The usual I suppose:

'''{{Pagename nd}}''' is an [[Pillars of Eternity II: Deadfire abilities|ability]] in {{poe2}}.

==Description==
{{Description|{{#var:description}}}}

==Effects==
{{#var:effects_formatted}} <-- This variable will be declared by the infobox, containing the effects formatted for display (assuming the alternate effects fields are used - see above)

==Notes==
* Some notes here if any

If an ability has multiple descriptions:

==Description==
{{Description|{{#var:description}}}}

'''Turn-based mode:'''
{{Description|The turn based mode description here}}}