Skip to content

Developer Resources

Element Seven RPG edited this page Dec 10, 2025 · 11 revisions

These references are for developers to maintain internal consistency.

Scripts

Scripts for the mod can be found here: Khonsu, Osiris.

Skills

Skills have been converted to better match the ability they use in PF2e. This is how they're used vs their ID - significant mismatches are marked with an asterix (*).

2e Skill BG3 Skill Ability
Acrobatics Acrobatics Dex
Arcana Arcana Int
Athletics Athletics Str
Crafting* Nature Int
Deception Deception Cha
Diplomacy Persuasion Cha
Intimidation Intimidation Cha
Lore History Int
Medicine Medicine Wis
Nature* AnimalHandling Wis
Occultism* Investigation Int
Performance Performance Cha
Religion* Insight Wis
Society* Religion Int
Stealth Stealth Dex
Survival Survival Wis
Thievery SleightOfHand Dex

Bonus Stacking

A tag can apply a status, item, or circumstance bonus from a boost, so that they can stack properly. Source: PF2e_BonusStacking

Tag(OFF_GUARD) makes a creature off-guard to all attacks, which can be checked with the OffGuard() function.

If you want to add a more specific stacked bonus, you can check if you have the general tags to not apply the bonus. Here's an example from ItemBonus1ReflexSaves:

IF(not Tagged('ITEM_BON_2SAVES') and not Tagged('ITEM_BON_1SAVES') ):RollBonus(SavingThrow,1,Dexterity)

List of tags

//Item bonuses
ITEM_BON_1AC
ITEM_BON_2AC

ITEM_BON_1SAVES
ITEM_BON_2SAVES

ITEM_BON_1FORT
ITEM_BON_2FORT
ITEM_BON_1REFLEX
ITEM_BON_2REFLEX
ITEM_BON_1WILL
ITEM_BON_2WILL

//Item penalties
ITEM_PEN_1SAVES
ITEM_PEN_2SAVES

ITEM_PEN_2REFLEX
ITEM_PEN_1WILL

//Status bonuses
STAT_BON_1ATTACK
STAT_BON_2ATTACK

STAT_BON_1SPELLATTACK

STAT_BON_1DAMAGE
STAT_BON_2DAMAGE
STAT_BON_3DAMAGE

STAT_BON_1AC
STAT_BON_2AC

STAT_BON_1SAVES
STAT_BON_2SAVES
STAT_BON_1WILL
STAT_BON_2WILL
STAT_BON_1REFLEX
STAT_BON_2REFLEX
STAT_BON_1FORT
STAT_BON_2FORT

STAT_BON_1[5e Skill Name]
STAT_BON_2[5e Skill Name]

STAT_BON_SPEED_05
STAT_BON_SPEED_10
STAT_BON_SPEED_15
STAT_BON_SPEED_20

//Status penalties
STAT_PEN_1ATTACK
STAT_PEN_2ATTACK

STAT_PEN_1DAMAGE

STAT_PEN_1AC
STAT_PEN_2AC
STAT_PEN_3AC

STAT_PEN_1SAVES
STAT_PEN_2SAVES

STAT_PEN_1DC
STAT_PEN_2DC

STAT_PEN_1REFLEX
STAT_PEN_2REFLEX
STAT_PEN_3REFLEX
STAT_PEN_1WILL
STAT_PEN_2WILL
STAT_PEN_3WILL
STAT_PEN_1FORT
STAT_PEN_2FORT
STAT_PEN_3FORT

STAT_PEN_1[5e Skill Name]
STAT_PEN_2[5e Skill Name]

STAT_PEN_SPEED_05
STAT_PEN_SPEED_10

//Circumstance bonuses
CIRC_BON_1ATTACK
CIRC_BON_2ATTACK

CIRC_BON_1AC
CIRC_BON_2AC

CIRC_BON_1SAVES
CIRC_BON_2SAVES

CIRC_BON_1REFLEX
CIRC_BON_2REFLEX
CIRC_BON_1WILL
CIRC_BON_2WILL
CIRC_BON_1FORT
CIRC_BON_2FORT

//Circumstance penalties
CIRC_PEN_1ATTACK
CIRC_PEN_2ATTACK

CIRC_PEN_1AC
CIRC_PEN_2AC

Dev note: Are we missing anything here?

Resistances

Resistances are handled through Osiris (Story) databases. This allows them to stack appropriately, with the actual effects calculated and turned into an output status. In the main mod, they're defined in the INIT section of the PF2e_BonusStacking script.

Input Statuses

A set of statuses (_RESIST_INPUT and _WEAK_INPUT) use their duration as the resistance values and last for one turn. An example of this is the critical effect of Frostbite, where the target has weakness equal to the spell's rank for one turn.

Databases

DB_ResistValue(damage type, status ID, value)
DB_WeakValue(damage type, status ID, value)

These databases give a fixed resistance/weakness value to a given status, such as Resist Energy.

DB_ResistStacks(damage type, status ID)
DB_VulnStacks(damage type, status ID)

These databases make a status give resistance/weakness equal to its duration, like the input statuses listed above, but the input status can have any duration. An example (though a complex one) is Elemental Betrayal, which lasts indefinitely and is removed when the timing status expires.

DB_IntrinsicResistance(damage type, passive ID, value)
DB_AncestryResistance(damage type, passive ID)

Unlike the values for statuses, these do not assign the output status. Damage reduction should be handled by the passive itself. Instead, they tell the script to take the value of the passive into account.

Short Rest Statuses

If you need to apply a status that clears on short rest, simply add it to DB_ClearStatusOnShortRest in PF2e_GLO.

Sustain

Sustained spells add a status on the owner that allows the user to recast them.

Here is an example of Requirement Conditions for a spell with a "sustained" duration. These conditions allow you to sustain the spell on condition duration 1 - "once per turn on subsequent turns". The Once per Turn cooldown is not necessary, but is good practice to put.

 "RequirementConditions" "HasStatus('AnimatedAssault_Owner') and OwnerCanSustain('AnimatedAssault_Owner')"

Some spells with "sustained" duration instead care about maintaining a specific status on the target, such as most witch hexes. In this case, both the owner and the target need to have a 2-duration status, but only the target's status duration matters for targeting. There shouldn't be a once-per-turn spell limit, as multiple instances of the spell can be sustained at once.

"TargetConditions" "CanSustainTarget('SHROUDOFNIGHT')"

Some spells do not have a sustained duration, and instead the Sustain action represents an action that can be taken during that spell's duration.

Style

These are principles that I (Kraken) follow when making content.

Focus spells (not cantrips) should have their level be their lowest rank. This is documented on the spell's Nethys entry.

If possible, use "action" style icons for focus spells rather than "spell" styled icons, so that they can stand out in contrast to the many slotted spells a caster has prepared. Spell icons have a brush strokes effect and they have a constant gray/brown background rather than matching the spell's color. As art assets are limited, this is more a suggestion, but it helps to keep it in mind.

Scroll Templates

TODO: Add all scroll templates to the scroll template regeneration script by XiphiasRex

A

(ITEMROOT)LOOT_SCROLL_AcidArrow_0fa4bdab-9ef1-4575-b063-b3e9d359d593
(ITEMROOT)LOOT_SCROLL_Aid_3e85f140-2284-430b-b11f-2126cd85b567
(ITEMROOT)LOOT_SCROLL_AnimalFriendship_3d992632-dc98-43b1-85e5-b59ba5a6aa9a
(ITEMROOT)LOOT_SCROLL_AnimateDead_8b9b4657-93f3-4382-b6e0-a587902abcba
(ITEMROOT)LOOT_SCROLL_ArcaneEye_DONOTUSE_5314d1eb-5771-47b5-80a7-2ee093ef4618
(ITEMROOT)LOOT_SCROLL_ArcaneLock_05da1a09-2d22-4299-b4a0-c4538a91f91c

B

(ITEMROOT)LOOT_SCROLL_Banishment_82719943-71e0-4eb2-bc4f-c8c0dd02c47c
(ITEMROOT)LOOT_SCROLL_BestowCurse_48fbab09-ede1-4093-9223-38c9e172c061
(ITEMROOT)LOOT_SCROLL_BlackTentacles_e9fae419-8c7a-4d5d-950f-94675a2aff07
(ITEMROOT)LOOT_SCROLL_Blight_e0ee9263-3740-44fe-80da-4315cb836aef
(ITEMROOT)LOOT_SCROLL_Blindness_2c6caac0-1684-4324-abba-0b849a9add74
(ITEMROOT)LOOT_SCROLL_Blink_d3800e05-635f-47b3-80b1-1a7c4161cf89
(ITEMROOT)LOOT_SCROLL_Blur_a8b34fd5-d643-49ad-98d3-d5841492b338
(ITEMROOT)LOOT_SCROLL_BurningHands_bc00df72-3c98-4bf2-9650-28e08f79b57c

C

(ITEMROOT)LOOT_SCROLL_ChainLightning_13105f7d-55fa-4292-abfe-b9d80054b48e
(ITEMROOT)LOOT_SCROLL_CharmPerson_2315f935-a188-4665-9ae0-986c7a9b0021
(ITEMROOT)LOOT_SCROLL_ChillTouch_79faf049-d503-46eb-a018-69e1975777d7
(ITEMROOT)LOOT_SCROLL_ChromaticOrb_c6aef37e-bc4d-46e7-a963-15b4cd8163bd
(ITEMROOT)LOOT_SCROLL_ChromaticOrb_d338fcb9-aaf5-48b1-8333-2dd4d9f70e1b
(ITEMROOT)LOOT_SCROLL_CircleOfDeath_ad31110a-aa9a-4427-925a-9952bfbef45a
(ITEMROOT)LOOT_SCROLL_Cloudkill_0e793d2d-1cd7-4b90-a71b-821423e50969
(ITEMROOT)LOOT_SCROLL_CloudOfDaggers_33421d4f-1cac-4196-a85e-0b07bcb3ecf2
(ITEMROOT)LOOT_SCROLL_ColorSpray_c7c92bc3-e856-4403-b509-9b0491f455cd
(ITEMROOT)LOOT_SCROLL_ConeOfCold_e81e7b31-8e7a-4fc1-977d-9a9a58fdd4a0
(ITEMROOT)LOOT_SCROLL_Confusion_7634cc33-d16b-4640-ba7c-8c6a26653591
(ITEMROOT)LOOT_SCROLL_ConjureElemental_c0e92dfa-29cf-46e8-8b35-8bded679df64
(ITEMROOT)LOOT_SCROLL_ConjureMinorElemental_a30864e5-06f0-4d14-9ea4-cb6870c0ddfe
(ITEMROOT)LOOT_SCROLL_Counterspell_DONOTUSE_17f828a4-5684-42dd-9f08-ff99ba43358a
(ITEMROOT)LOOT_SCROLL_CrownOfMadness_701a7df0-728e-494a-ab2f-146aed4e8c7f

D

(ITEMROOT)LOOT_SCROLL_Darkness_caa812b9-9362-4c38-aef0-e3f6eb288dba
(ITEMROOT)LOOT_SCROLL_Darkvision_0d737a55-c337-4e8f-b31f-a17273099013
(ITEMROOT)LOOT_SCROLL_DetectThoughts_126cc673-1151-4113-b1bf-98457233441b
(ITEMROOT)LOOT_SCROLL_DimensionDoor_75452ba5-5758-417c-b661-8832eb64df66
(ITEMROOT)LOOT_SCROLL_DisguiseSelf_b3376ca4-393c-4191-aa67-a02c94d6a236
(ITEMROOT)LOOT_SCROLL_Disintegrate_3f737706-57ca-45e6-b0d1-45238da76329
(ITEMROOT)LOOT_SCROLL_DispelMagic_DONOTUSE_bc5c0bcf-144f-46ed-bcde-e6bd1225efb9
(ITEMROOT)LOOT_SCROLL_DominatePerson_3b447e07-3e73-4906-9f7e-63a87e2da909

E

(ITEMROOT)LOOT_SCROLL_Enlarge_7c4c3ae1-26ac-4765-a5d5-586976e0e458
(ITEMROOT)LOOT_SCROLL_ExpeditiousRetreat_eedf0539-6a47-480e-8b23-a133b222241f
(ITEMROOT)LOOT_SCROLL_Eyebite_cecb1802-b2c0-4d65-aa08-aa15ca3619eb

F

(ITEMROOT)LOOT_SCROLL_FalseLife_7d76665a-3b9e-4495-a3c6-a05340704194
(ITEMROOT)LOOT_SCROLL_Fear_4cdb2434-0ffa-4fb1-9c42-d6451978f35b
(ITEMROOT)LOOT_SCROLL_FeatherFall_82cbfcd2-cf80-4acd-9f1f-51835693b0e6
(ITEMROOT)LOOT_SCROLL_FeignDeath_6e13fbf8-3db5-4420-8691-653d5ecb753e
(ITEMROOT)LOOT_SCROLL_FindFamiliar_fb975b01-40d5-49a3-b60a-d2f13a1f8009
(ITEMROOT)LOOT_SCROLL_Fireball_79d2bb95-53fc-4e41-a004-5e1b83db8de7
(ITEMROOT)LOOT_SCROLL_FireBolt_fdfe5d75-0e8b-47f8-b128-d57081cb8981
(ITEMROOT)LOOT_SCROLL_FireShield_Chill_DONOTUSE_5d2e1c40-e85e-4027-aefe-b9731a2de2c9
(ITEMROOT)LOOT_SCROLL_FireShield_Warm_6b87f7b4-441c-41cf-92c3-29e258747454
(ITEMROOT)LOOT_SCROLL_FlameBlade_a6d216e9-c9e9-4310-b155-0e4f50682377
(ITEMROOT)LOOT_SCROLL_FlamingSphere_0922de82-149f-4cac-aa98-e26222fd7714
(ITEMROOT)LOOT_SCROLL_FleshToStone_a9135751-3a8a-4070-9f3a-11d24d123a3f
(ITEMROOT)LOOT_SCROLL_Fly_1df15994-c860-4930-beed-3135b74025fa
(ITEMROOT)LOOT_SCROLL_FogCloud_dcb51bec-90bd-4d0a-942d-72034782bdf5
(ITEMROOT)LOOT_SCROLL_FreezingSphere_74d0e4f0-de97-4097-a7e7-f5759a375c81

G

(ITEMROOT)LOOT_SCROLL_GaseousForm_4c026e53-4000-4818-913c-a5662ee7c061
(ITEMROOT)LOOT_SCROLL_GlobeOfInvulnerability_8d4c06d1-e504-49b0-a4fa-5179ab717f1e
(ITEMROOT)LOOT_SCROLL_GlyphOfWarding_056f10e1-01e7-4622-907f-faad8d48bbe6
(ITEMROOT)LOOT_SCROLL_Goodberry_dff353d0-c1d4-43af-8664-bf08a9ffae07
(ITEMROOT)LOOT_SCROLL_Grease_094c9b7f-0b7d-4813-92ea-7267afb62b07
(ITEMROOT)LOOT_SCROLL_GustOfWind_6bedf433-994f-4624-bb2a-cdf6f46d539a

H

(ITEMROOT)LOOT_SCROLL_Haste_96d4aba5-bd76-4bae-a726-37a6c96776ab
(ITEMROOT)LOOT_SCROLL_HideousLaughter_8bc1a0d8-af28-45b2-b1ca-1f15e3c47b1b
(ITEMROOT)LOOT_SCROLL_HoldMonster_d621c19f-d5c8-433c-bc75-7f2eb87d2f0a
(ITEMROOT)LOOT_SCROLL_HoldPerson_5e077657-8b5e-4e69-ae2e-95eab691fa41
(ITEMROOT)LOOT_SCROLL_HypnoticPattern_bdf15fb0-d9df-4509-ad70-42b5fad11971

I-L

(ITEMROOT)LOOT_SCROLL_IceKnife_f26320fa-9a25-4f79-80fc-e356268cf474
(ITEMROOT)LOOT_SCROLL_IceStorm_e8c3ad4e-37f0-46c8-bf25-0ddc2dcb0139
(ITEMROOT)LOOT_SCROLL_Invisibility_6ed22182-90a6-418a-8aa7-909b9e77aa47
(ITEMROOT)LOOT_SCROLL_Invisibility_Greater_795e4282-27c3-4177-b532-9e6559a26531
(ITEMROOT)LOOT_SCROLL_IrresistibleDance_3c8db4fb-c10b-415d-b9cd-c3254265b778
(ITEMROOT)LOOT_SCROLL_Jump_e1f15103-bb95-476f-8b09-091f51b2f645
(ITEMROOT)LOOT_SCROLL_Knock_4c1a886a-7db5-4e00-bbc6-d4243534f057
(ITEMROOT)LOOT_SCROLL_LightningBolt_83600284-8f78-409f-a0e0-d262b2bdea64
(ITEMROOT)LOOT_SCROLL_Longstrider_82370a33-5243-4fad-9880-b0a8c2b5a225

M

(ITEMROOT)LOOT_SCROLL_MageArmor_2ccab07d-0ccb-45e6-8f43-8ffb6a62da11
(ITEMROOT)LOOT_SCROLL_MagicMissile_945cd4f0-991b-4663-b72e-790d49fee27e
(ITEMROOT)LOOT_SCROLL_MagicWeapon_ccf1bd99-e807-44e6-9a0a-7645ad533a8f
(ITEMROOT)LOOT_SCROLL_MirrorImage_019d8804-56ee-44eb-959a-db5377cda8ae
(ITEMROOT)LOOT_SCROLL_MistyStep_9a2a3fcc-d948-4463-b88b-a9d61b77b015

P

(ITEMROOT)LOOT_SCROLL_PhantasmalForce_2eb2147d-5bcb-4b0e-ac73-b2a4d1deeb77
(ITEMROOT)LOOT_SCROLL_PhantasmalKiller_3b802734-ad6e-45a4-988b-f7241636e5e9
(ITEMROOT)LOOT_SCROLL_PlanarBinding_6ac3b9ab-fdb4-47e8-8a35-91747de2afc8
(ITEMROOT)LOOT_SCROLL_Polymorph_389da9ab-bee7-447c-9bed-f1021ddc94d4
(ITEMROOT)LOOT_SCROLL_ProtectionFromEnergy_9f8502bf-727f-40c7-93a3-5fab6ba2e2f5
(ITEMROOT)LOOT_SCROLL_ProtectionFromEvilAndGood_03771ebc-83ca-45d2-8bd5-d382b6d6d824

R

(ITEMROOT)LOOT_SCROLL_RayOfEnfeeblement_cd1da9c5-c9ea-4d2a-93ce-e201c97eded9
(ITEMROOT)LOOT_SCROLL_RayOfFrost_f6cbfbb3-7eab-4f78-afde-073756c4e26d
(ITEMROOT)LOOT_SCROLL_RayOfSickness_22ef638a-206f-4874-8f68-e2a378df1158
(ITEMROOT)LOOT_SCROLL_RemoveCurse_dea31400-25e5-4e69-bb76-14430fe46673
(ITEMROOT)LOOT_SCROLL_ResilientSphere_f5bf39c0-2df3-4cd4-842c-c1862e6f80aa
(ITEMROOT)LOOT_SCROLL_Revivify_c1c3e4fb-d68c-4e10-afdc-d4550238d50e

S

(ITEMROOT)LOOT_SCROLL_ScorchingRay_577a83c9-0bb7-4670-b0e9-d9a4738f6a0a
(ITEMROOT)LOOT_SCROLL_SeeInvisibility_2e7fc397-cb84-4573-b6c7-1c7a8f2742d6
(ITEMROOT)LOOT_SCROLL_Seeming_d2573c9b-6de2-45bd-8032-b8a59432f4b5
(ITEMROOT)LOOT_SCROLL_Shatter_2ad118cb-b11f-45ca-a206-7575bbbaccc6
(ITEMROOT)LOOT_SCROLL_ShockingGrasp_a9ced623-a25d-4d2b-bca5-644b7230c869
(ITEMROOT)LOOT_SCROLL_Sleep_2ce88bf0-fe06-46bd-b71e-18bc6dc8eb9d
(ITEMROOT)LOOT_SCROLL_SleetStorm_be05f7d0-ffa0-46e3-a0d6-66e3333159f1
(ITEMROOT)LOOT_SCROLL_Slow_4c990ca3-01f6-4536-b8f3-c26cd9a0ca8b
(ITEMROOT)LOOT_SCROLL_SpeakWithDead_36d01b98-1702-4d00-81a9-1b8469dd67a5
(ITEMROOT)LOOT_SCROLL_StinkingCloud_0f0a7a12-1c77-423a-b16e-4a9a5480c05e
(ITEMROOT)LOOT_SCROLL_Stoneskin_7f39977f-bcab-4dda-933f-bd70cb333ecc
(ITEMROOT)LOOT_SCROLL_SummonQuasit_f912ea9b-0e2f-45b4-b12d-fa6ec89dc758
(ITEMROOT)LOOT_SCROLL_Sunbeam_049d70c4-7ea3-4b6c-af6f-44dab7813a89

T

(ITEMROOT)LOOT_SCROLL_Telekinesis_1d5ecaca-310b-4622-b302-81331c0a8e9e
(ITEMROOT)LOOT_SCROLL_Thunderwave_94caa680-50b8-46b1-b775-19150d783b2f
(ITEMROOT)LOOT_SCROLL_TrueResurrection_01d1b2b2-9e6b-4ad2-8d63-59f9caf1d389

V-W

(ITEMROOT)LOOT_SCROLL_VampiricTouch_6fd2d3d4-801c-4591-9c05-db8a68e51808
(ITEMROOT)LOOT_SCROLL_WallOfFire_0f3c7369-d0bd-4b97-960d-1407f4c8eebf
(ITEMROOT)LOOT_SCROLL_WallOfIce_e7dc56bc-b169-4a46-b8ee-cc6474dd7b15
(ITEMROOT)LOOT_SCROLL_WallOfStone_d13587f4-a1f4-4833-bd1e-da1c7951d680
(ITEMROOT)LOOT_SCROLL_Web_2eedb4ac-47fa-4039-9684-8b4bb0923a26
(ITEMROOT)LOOT_SCROLL_WitchBolt_e69f52a4-3d86-4f08-a9b4-c70ba4cc3070

Clone this wiki locally