[extension] Core Expanded: Steroids for your Homebrew Ruleset
Core Expanded v1.0.0 for Fantasy Grounds CoreRPG
Core Expanded is an extension for the Fantasy Grounds CoreRPG ruleset. It expands the generic CoreRPG sheet into a more automation-friendly toolkit for custom systems, homebrew games, and campaigns that need configurable attributes, rolls, effects, resources, and Combat Tracker integration without building a full ruleset.
ATTENTION: This extension is intended for use only with the vanilla CORE RPG ruleset. Rulesets based on CORE RPG are NOT supported.
LINK TO THE EXTENSION IN FORGE
TUTORIALS
Part 1: Attribute creation, Roll Types, Success Criteria, Dynamic Attributes and Customization.
Main Features
- Expanded attribute system
- Numeric attributes.
- Current/Max attributes, useful for HP, stamina, mana, ammunition, and similar resources.
- Checkbox attributes.
- Dotted attributes.
- Text attributes.
- Attribute categories with visual customization.
- Show/hide zero values.
- Allow/block negative values per field.
- Optional underlines and numeric ordering display.
- Dynamic values and formulas
- Attributes can calculate their value from other attributes.
- Supports formulas using operators such as +, -, *, /, ^.
- Supports functions such as sqrt, root, pow, abs, min, and max.
- Supports custom numeric values inside formulas.
- Includes circular dependency protection.
- Can use simple aliases created in the Master Control Panel definitions.
- Attribute rolls
- Attributes can have configurable roll behavior.
- Supports self checks.
- Supports checks against target attributes.
- Supports value-only rolls.
- Supports damage and healing value rolls.
- Supports multiple dice handling.
- Global options allow configuring default success method, default threshold, and how multiple dice are resolved.
- Ability system
- You can add rolls to abilities.
- Abilities can contain multiple rolls.
- Ability rolls can be checks or value rolls.
- Roll chains can continue based on success, failure or always conditions.
- Useful for attacks that roll a check first and damage only on success.
- Supports dynamic values inside abilities and ability rolls.
- Character and NPC templates
- Save character sheet templates.
- Apply templates to new sheets.
- NPC template support.
- Dynamic links are rewritten when templates are copied to a new actor.
- Dynamic values are recalculated after template application.
- Locks and permissions
- Lock individual character sheets.
- Lock or unlock all sheets.
- Host can grant full control over a sheet.
- Several editing actions respect lock/full-control state.
- Combat Tracker integration
- Add selected attributes to the Combat Tracker.
- Synchronize attribute labels, types, and values between sheet and CT.
- Current/Max, checkbox, and dotted attributes preserve their relevant fields in the CT.
- Roll Initiative button.
- Apply CT templates to new CT entries.
- Optional hiding of hostile attributes.
- Targeting helpers such as target allies, target non-allies, and clear targets.
- Item and Inventory effects
- Items can have effects that auto-apply while equipped.
- Weight Limit field in inventory.
- Weight limit field can be a dynamic value defined by the user.
- Master Control Panel
- Adds a sidebar Master Control Panel.
- Allows global effects that are always on while active.
- Supports scopes such as all PCs, PCs in CT, NPC's in CT, and everyone in CT.
- Supports resolve timing at actor start, actor end, round start, and round end.
- Reusable definitions
- Definitions can be used as reusable conditions.
- Definitions can be used as effect macros. EX: You could simplify the effect [REPEAT; HP: 1d6 damage] to a short name like 'Burn'.
- Definitions can be used as attribute aliases. Ex.: You could add a short name like HP to Hit Points to make writing effects easier.
- Short names are supported.
- Definitions are case-insensitive and include recursive loop protection.
- Custom effect engine
- Effects can run on character sheets, NPCs, CT entries, item effects, and MCP effects.
- Supports semicolon-separated effect components.
- Supports targeting tags such as [SELF] and [TARGET].
- Supports timing tags such as [RESOLVE STARTSELF], [RESOLVE ENDSELF], [RESOLVE STARTTARGET], and [RESOLVE ENDTARGET].
- Supports expenditure tags for normal effects: [ACTION], [ROLL], and [SINGLE].
- Supports conditionals: IF, IFT, ELSEIF, ELSEIFT, ELSE, and AND.
- Supports checks and internal rolls: CHECK, CHECKONCE, and ROLL.
- Supports modifiers such as MODCHECK.
- Supports PERMA, INSTANT, REPEAT, and LATEREPEAT.
- Supports attribute changes, set values, deltas, percentages, dice, formulas, current/max targeting, damage, and healing.
- Supports status tags through STATUS.
- Supports combat helpers: DAMAGEBONUS, DAMAGEREDUCE, SHIELD, and REFLECT.
- Supports rerolls through REROLL.
- Supports usage limits such as ONCEPERTURN and COOLDOWN.
- Supports save/removal logic through SAVECONDITION.
- Runtime condition flags
- HASTARGET
- TARGETCOUNT
- ROLLED
- ROLLED(Attribute)
- ROLLSUCCESS
- ROLLFAIL
- ROLLTYPE
- SOURCEHAS(Status)
- TARGETHAS(Status)
- ISPC
- ISNPC
- ISALLY
- ISENEMY
- HASMOVED
- Slash command help
There are a lot more effects than the ones listed here, so you can always use the console commands to check available effects, conditions, and tags.
- /ce effects lists the effect syntax quick reference.
- /ce <topic> shows detailed help for specific syntax topics.
- Examples: /ce perma, /ce tags, /ce definitions, /ce conditionflags.
Example Uses
Code:
Defense = Dexterity + Armor + Shield
Code:
IF: Hit Points <= 50%; Strength: +2
Code:
REPEAT; Hit Points: 1d4 damage
Code:
CHECKONCE: Dexterity -2; INSTANT; ELSE; Hit Points: -1d4 damage
Compatibility Disclaimer
This extension was made to be used with the base CoreRPG ruleset. It does not guarantee compatibility with other rulesets or with other extensions, especially extensions that modify the same character sheet, Combat Tracker, effect handling, item handling, or roll-processing systems.
Also, this is a huge extension with so many features that I had to run literally hundreds of tests until I was happy with the results; but because there are so many different possible scenarios, it's perfectly possible that something has slipped my attention and found it's way into the initial release, so, minor bugs might happen (hopefully not).
If you have any questions or suggestions, please leave your message here.
https://i.imgur.com/5yKPA3vm.png https://i.imgur.com/vmZH9xQm.png https://i.imgur.com/11qdNZsm.png https://i.imgur.com/7g3423Qm.png
https://i.imgur.com/lbs6D4gm.png https://i.imgur.com/lylswFNm.png https://i.imgur.com/Q5ezXOCm.png https://i.imgur.com/9XOPrNim.png
https://i.imgur.com/kC4SrdFm.png https://i.imgur.com/3XbhVLGm.png https://i.imgur.com/hDRL8avm.png https://i.imgur.com/coke1uCm.png
https://i.imgur.com/nYnikQKm.png https://i.imgur.com/a7N88wFm.png https://i.imgur.com/mT6uXJim.png https://i.imgur.com/7iGMe4rm.png