UTTERLY INCOMPLETE AND UNLINKED TABLE OF CONTENTS
General Comments and Frequently Asked Questions
…install mods (manual)
…export vanilla content
…make new cards/items
…make Prestige Decks
…make new skins
…make new cardbacks
…make new Obelisk Challenge card packs
…make new traits
…make new heroes
…make new enemies
…make new enemies appear in combats
…make new choices for existing events
…make new events
…make new quests
…make new nodes (and roads)
…make new zones (and conditional map changes)
This is a
work in progress. Feedback is very welcome!
Obeliskial Content can only import
.png images and
.wav audio; if you need to import any other file types, ping me in the AtO Discord and I’ll see what I can do.
test
-
Q. How do I get help?
A. Ping @stiffmeds in the #modding channel of the official Across the Obelisk Discord.
-
Q. How do I load custom content?
A. Obeliskial Content will load any content in the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\ folder, as well as any content packs that either (a) are registered with Obeliskial Essentials (requires the _contentFolder property); or (b) have a mod metadata JSON in the Across the Obelisk\BepInEx\config\Obeliskial_importing\ folder.
-
Q. I can’t find my BepInEx folder!
A. If you are using r2modman, it stores your BepInEx folder in a different location.
-
Q. Can I edit vanilla content?
A. Yes! Any custom content (loaded from the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\ folder) will overwrite any vanilla content with the same ID.
-
Q. Can I make completely new character models, rather than just editing existing ones?
A. Not yet. I am still relatively new to Unity modding and have no experience at all creating character models, so this is beyond my current ability. If you would like to see this functionality, please help me get some support from the devs by letting them now that you’re interested!
- Install Obeliskial Essentials
- Run Across the Obelisk.
- At the main menu, press F5 to open the Config Manager.
- Select Obeliskial Essentials on the left-hand side.
- Enable Export Vanilla Content and save.
- Restart Across the Obelisk. Export may take a few minutes.
- Right-click Across the Obelisk in Steam and select Manage→Browse local files…
- Navigate to BepInEx\config\Obeliskial_exported\ to find the exported content.
-
If your package includes JSON files:
- Create a folder to store all of your mod content and name it after your mod. Put your custom content (your “card”, “trait”, “subclass”, etc folders) inside this folder.
- Put the new folder that you created inside an Obeliskial_importing folder.
- Put the Obeliskial_importing folder inside a config folder.
- Put the config folder inside a BepInEx folder.
-
If your package does not contain a DLL plugin, in the Obeliskial_importing folder that you created above, make a JSON file containing your mod’s metadata in the following format:
{
"Name": "My Cool Mod (no hyphens)",
"Author": "Me (no hyphens)",
"Description": "Description of mod.",
"Version": "Current version number (no hyphens)",
"Date": YYYYMMDD (e.g. 20231225 for 25 December 2023),
"Link": "JSON-escaped link to mod (ideally on Thunderstore)",
"Dependencies": [
"dependencies in Thunderstore format"
],
"ContentFolder": "Name of folder made in first step above",
"Priority": 100 (higher number loads earlier - use 100 unless you have a good reason),
"Type": [
"hero",
"card",
"npc"
],
"Comment": "Any additional comments.",
"Enabled": true
}
- Example mod folder.
-
If your package includes a DLL plugin (i.e. code):
-
Ensure that you use the BepInDependency attribute to specify a dependency on Obeliskial Essentials and Obeliskial Content. For example:
namespace MyCoolMod
{
[BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)]
[BepInDependency("com.stiffmeds.obeliskialessentials")] // declare dependency on Obeliskial Essentials
[BepInDependency("com.stiffmeds.obeliskialcontent")] // declare dependency on Obeliskial Content
[BepInProcess("AcrossTheObelisk.exe")]
public class Plugin : BaseUnityPlugin
{
// your mod code
-
In your plugin’s Awake method, call the RegisterMod function. The minimum that you need to specify is the name of your plugin, but you should ideally fill in as many properties as possible. For example:
private readonly Harmony harmony = new(PluginInfo.PLUGIN_GUID);
internal static ManualLogSource Log;
private void Awake()
{
Log = Logger; // set up logging
Log.LogInfo($"{PluginInfo.PLUGIN_GUID} {PluginInfo.PLUGIN_VERSION} has loaded!");
// register with Obeliskial Essentials
Obeliskial_Essentials.Essentials.RegisterMod(
_name: PluginInfo.PLUGIN_NAME,
_author: "myname",
_description: "My cool mod, which gives all heroes sunglasses.",
_version: PluginInfo.PLUGIN_VERSION,
_date: 20231225, // 25 December 2023
_link: @"https://across-the-obelisk.thunderstore.io/package/myname/My_Cool_Mod/",
_contentFolder: "MyCoolModFolder",
_type: new string[1] { "hero" }
);
// apply patches
harmony.PatchAll();
}
-
Some of the properties that you might use (all strings unless specified otherwise):
- _name: name of the mod. Cannot contain hyphens!
- _author: your name. Cannot contain hyphens!
- _description: a (brief) description of your mod.
- _version: current mod version. Cannot contain hyphens!
- _date: an integer with the your mod’s most recent release date in the format YYYYMMDD.
- _link: a link to your mod’s website (preferably the Thunderstore page).
- _contentFolder: name of folder made in first step above (Obeliskial Content will try and load your custom content JSONs from this folder).
- _type: a string array listing the types of content included in your mod e.g. "hero", "card", "item", "npc", "event".
- _comment: any additional comments regarding your mod.
- Make a plugins folder. Put your DLL in it, then put the plugins folder into the BepInEx folder that you created above.
- Make a zip containing the BepInEx folder created above and other components of a Thunderstore package. Make sure you are zipping the new BepInEx folder that you made - you made a new one to store your content so that you are only distributing your content (and not every mod you have ever downloaded)!
-
Example zip structure:
myname-MyCoolMod-1.0.0.zip
├─ CHANGELOG.md
├─ icon.png
├─ LICENSE
├─ manifest.json
├─ README.md
├─ BepInEx/
│ ├─ config/
│ │ ├─ Obeliskial_importing/
│ │ │ ├─ (note that MyCoolMod.json is not required here, because we have a DLL plugin below. If there were no DLL plugin, it would be required)
│ │ │ ├─ MyCoolMod/
│ │ │ │ ├─ subclass/
│ │ │ │ │ ├─ CoolMalukah.json
│ │ │ │ │ ├─ CoolWilbur.json
│ │ │ │ │ ├─ CoolZek.json
│ │ │ │ ├─ trait/
│ │ │ │ │ ├─ coolinventor.json
│ │ │ │ │ ├─ coolpestilence.json
│ │ │ │ │ ├─ coolvoodoo.json
│ ├─ plugins/
│ │ ├─ MyCoolMod.dll
- Distribute your mod (ideally to Thunderstore)!
- Download the example Prestige Deck.
-
Fill in the properties:
- ID: a unique identifier for your Prestige Deck. Lowercase only, no spaces.
- Name: the name of the Prestige Deck. Players can search for this in the Magic Forge to find all cards in the deck.
- Traits: a list of IDs for the hero traits that allow access to this deck. The example makes Wilbur’s L5 trait Energizer and Evelyn’s innate trait Temperate give access to the deck.
- Cards: a list of IDs for the cards that this deck gives access to. You only need to enter the unupgraded card’s ID and Obeliskial Content will automatically include the blue/yellow/corrupt upgrades. Your deck needs to contain at least one card of each rarity (Common, Uncommon, Rare, Epic, Mythic)!
- Rename the file to match the ID.
- Put the file in the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\prestigeDecks\ folder.
(if this folder does not exist, run AtO at least once with Obeliskial Content installed, or make the folder yourself)
- Export vanilla skin sprites using Obeliskial Essentials.
-
Edit the .png images:
- Skin: the actual in-combat appearance
- SpritePortrait: the smaller portrait image, used in the speed bar at the top during combat.
- SpritePortraitGrande: the larger portrait image, used in the hero images on the left side of the world map.
- SpriteSilueta: the smaller non-portrait image, used in the hero selection screen.
- SpriteSiluetaGrande: the larger non-portrait image, used in the combat rewards screen.
- Place your png images in the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\sprite\ folder.
(if this folder does not exist, run AtO at least once with Obeliskial Content installed, or make the folder yourself)
- Download the example GameObject.
-
Fill in the properties:
-
BaseGameObjectID: the ID of the vanilla GameObject that you are making a new version of.
A list of hero skin GameObjects can be found in the DataText Reference SkinData tab in the SkinGO column.
A list of enemy GameObjects can be found in the DataText Reference NPCData tab in the GameObjectAnimated column. The example GameObject uses lordhansek-shadow, which we can see in the NPCData tab is the GameObject for Lord Hanshek’s shadow clones.
- NewGameObjectID: a unique identifier for your new GameObject. Lowercase only, no spaces.
-
SpriteToUse: the filename for the Skin sprite that you edited in the previous step.
Do not include the .png file extension! If your file is myNewSkin.png, enter myNewSkin.
If this is left empty, the sprite will not be replaced (i.e. the GameObject will look the same as the original).
- ScaleX: multiplier for the width of the GameObject (e.g. making this 0.5 would make the character model half as wide).
- ScaleY: multiplier for the height of the GameObject (e.g. making this 2 would make the character model twice as tall).
- Flip: if set to true, flips the character model from left to right (or vice versa).
By default, heroes face right and enemies face left, so if you want to use an enemy as a hero skin you need to flip them around to face the right (as you can see in the example file).
- Rename the file to match the NewGameObjectID.
- Put the file in the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\gameObject\ folder.
(if this folder does not exist, run AtO at least once with Obeliskial Content installed, or make the folder yourself)
- Download the example SkinData.
-
Fill in the properties:
- SkinID: a unique identifier for your skin. Lowercase only, no spaces.
- SkinName: the name of the skin, displayed in the skin selection screen.
- SkinGO: the ID of the GameObject to use for your skin. If you made a new GameObject using the above instructions, this should be the same as your NewGameObjectID.
- SkinSubclass: the ID of the class that the skin is for. A list of IDs can be found in the SubClassData tab of the DataText Reference – e.g. mercenary in the example is Magnus.
- BaseSkin: set to true if this is the default skin for that class and false otherwise.
- PerkLevel: required class rank to unlock this skin. Vanilla AtO unlocks new skins at ranks 16 and 32.
- SkinOrder: the order in which this skin appears in the skin selection screen.
- Sku: ID of the DLC required to unlock this skin, in case you want a Wolf Wars-specific unlock for your future Gorio character.
- SpritePortrait: the smaller portrait image you created above.
- SpritePortraitGrande: the larger portrait image you created above.
- SpriteSilueta: the smaller non-portait image you created above.
- SpriteSiluetaGrande: the larger non-portriat image you created above.
- SteamStat: Steam stat required to unlock this skin (e.g. for only unlocking a skin when the player gets a specific Steam achievement).
- Rename the file to match the SkinID.
- Put the file in the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\skin folder.
(if this folder does not exist, run AtO at least once with Obeliskial Content installed, or make the folder yourself)
Then you can load into the game and show off your new fashion!
- Create a new cardback image and place it in the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\sprite\ folder.
(if this folder does not exist, run AtO at least once with Obeliskial Content installed, or make the folder yourself)
- Download the example cardback.
-
Fill in the properties:
- AdventureLevel: the Adventure Mode madness level that must be completed to unlock the cardback.
- BaseCardback: set to true if this is the default cardback for that class and false otherwise.
- CardbackID: a unique identifier for your cardback. Lowercase only, no spaces.
- CardbackName: the name of the cardback, displayed in the cardback selection screen.
- CardbackOrder: the order in which this cardback appears in the cardback selection screen.
- CardbackSprite: the filename for the cardback sprite that you created in the previous step.
Do not include the .png file extension! If your file is myNewCardback.png, enter myNewCardback.
- CardbackSubclass: the ID of the class that the skin is for; leave blank to make this cardback available to all classes. A list of IDs can be found in the SubClassData tab of the DataText Reference – e.g. mercenary in the example is Magnus.
- Locked: set to false to have the cardback unlocked by default.
- ObeliskLevel: the Obelisk Challenge madness level that must be completed to unlock the cardback.
- RankLevel: the subclass rank required to unlock this class. Vanilla AtO unlocks new cardbacks at ranks 8, 24 and 40.
- ShowIfLocked: set to false to hide the cardback from the cardback selection screen if it hasn’t been unlocked.
- Sku: ID of the DLC required to unlock this skin, in case you want a Wolf Wars-specific unlock for your future Gorio character.
- SteamStat: [chk, but I think:] Steam stat required to unlock this skin (e.g. for only unlocking a skin when the player gets a specific Steam achievement).
- Rename the file to match the CardbackID.
- Put the file in the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\cardback\ folder.
(if this folder does not exist, run AtO at least once with Obeliskial Content installed, or make the folder yourself)
There are two kinds of Obelisk Challenge Card packs:
Starter packs, which are the five cards that the hero starts with every time; and
Choice packs, which are the options you can choose from to fill out the deck.
-
Creating Starter Packs
- Download the example starter card pack
-
Fill in the properties:
- Card0 through Card4: IDs for the five cards that the hero will always start with.
- PackClass: Warrior/Scout/Mage/Healer. For dualclass characters, use the primary class.
- PackID: unique identifier for this card pack; lowercase only, no spaces. Ideally the character’s name.
- PackName: Character’s name.
- RequiredClass: ID for the character’s subclass (e.g. mercenary for Magnus).
- Leave the Card5, CardSpecial0, CardSpecial1 and PerkList properties blank.
- Rename the file to match the ID.
- Put the file in the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\pack\ folder.
(if this folder does not exist, run AtO at least once with Obeliskial Content installed, or make the folder yourself)
-
Creating Choice Packs
- Download the example choice card pack
-
Fill in the properties:
- Card0 through Card5: IDs for the base/unupgraded versions of six cards that are randomly split into two groups of three (initially shown and then rerolled).
- CardSpecial0 and CardSpecial1: IDs for the base/unupgraded versions of two cards that are given as choices in the final/“special” card selection. CardSpecial0 is given as a choice if the player selects the un-rerolled pack; CardSpecial1 is given as a choice if the player selects the rerolled pack.
- PackClass: Warrior/Scout/Mage/Healer.
- PackID: unique identifier for this card pack; lowercase only, no spaces.
- PackName: Name of the pack, shown on the pack selection screen.
- PerkList: unused, can be ignored.
- Leave RequiredClass empty.
- Rename the file to match the ID.
- Put the file in the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\pack\ folder.
(if this folder does not exist, run AtO at least once with Obeliskial Content installed, or make the folder yourself)
There are two kinds of traits:
effect traits, which provide a special effect; and
card traits, which give the hero a special card. Vanilla AtO classes have
effect traits for the passive and levels 3 and 5 (5
effect traits total) and
card traits at levels 2 and 4 (4
card traits total).
-
Creating effect traits
-
Most effect traits need to be manually programmed into Obeliskial Content (sorry – I do want to make these accessible to non-programmers, but neither I nor the AtO devs have worked out a way to do this yet!).
- Submit a trait request in [the AtO Discord thread] and I will add your trait as soon as I can. Please make sure to use the template provided, because that will make it significantly easier for me!
- If you have any bright ideas for a flexible, non-programmer-friendly method of trait creation, let me know!
- If you are a programmer (or want to learn), look at the example trait mod.
-
Effects that do not require programming:
- +charges for (up to three) auras/curses
- Immunity to (up to three) auras/curses
- +damage for (up to three) damage types
- +%damage for (up to three) damage types
- +heal
- +%heal
- +heal received
- +%heal received
- +-%resistances for (up to three) damage types
- (one of) speed, max HP, starting energy, energy per turn
- Download the example effect trait.
-
Fill in the properties:
- ID: Unique identifier for your trait. Lowercase only, no spaces.
- TraitName: The name of the trait. Appears on the level up screen and when the trait is activated.
- Activation: When the (programmed) effect for this trait activates. Acceptable values [TBD from Enums, thanks]
- AuraCurseBonus1: Aura/curse that AuraCurseBonusValue1 applies to.
- AuraCurseBonus2: Aura/curse that AuraCurseBonusValue2 applies to.
- AuraCurseBonus3: Aura/curse that AuraCurseBonusValue3 applies to.
- AuraCurseBonusValue1: Increase(/decrease? unsure if that works) in charges for the aura/curse specified in AuraCurseBonus1.
- AuraCurseBonusValue2: Increase(/decrease? unsure if that works) in charges for the aura/curse specified in AuraCurseBonus2.
- AuraCurseBonusValue3: Increase(/decrease? unsure if that works) in charges for the aura/curse specified in AuraCurseBonus3.
- AuraCurseImmune1: Aura/curse that the hero becomes immune to when they select this trait.
- AuraCurseImmune2: Aura/curse that the hero becomes immune to when they select this trait.
- AuraCurseImmune3: Aura/curse that the hero becomes immune to when they select this trait.
- CharacterStatModified: Character stat that CharacterStatModifiedValue applies to. Acceptable values: None (if not used), Hp (for max HP), Speed, Energy (for starting Energy), EnergyTurn (for Energy per turn).
- CharacterStatModifiedValue: Flat increase/decrease to the stat in CharacterStatModified.
- DamageBonusFlat: Damage type that DamageBonusFlatValue applies to. Acceptable values: None (if not used), All (for all damage types), Slashing, Blunt, Piercing, Fire, Cold, Lightning, Holy, Dark, Mind.
- DamageBonusFlat2: Damage type that DamageBonusFlatValue2 applies to. Acceptable values: None (if not used), All (for all damage types), Slashing, Blunt, Piercing, Fire, Cold, Lightning, Holy, Dark, Mind.
- DamageBonusFlat3: Damage type that DamageBonusFlatValue3 applies to. Acceptable values: None (if not used), All (for all damage types), Slashing, Blunt, Piercing, Fire, Cold, Lightning, Holy, Dark, Mind.
- DamageBonusFlatValue: Flat increase/decrease to damage of type DamageBonusFlat.
- DamageBonusFlatValue2: Flat increase/decrease to damage of type DamageBonusFlat2.
- DamageBonusFlatValue3: Flat increase/decrease to damage of type DamageBonusFlat3.
- DamageBonusPercent: Damage type that DamageBonusPercentValue applies to. Acceptable values: None (if not used), All (for all damage types), Slashing, Blunt, Piercing, Fire, Cold, Lightning, Holy, Dark, Mind.
- DamageBonusPercent2: Damage type that DamageBonusPercentValue2 applies to. Acceptable values: None (if not used), All (for all damage types), Slashing, Blunt, Piercing, Fire, Cold, Lightning, Holy, Dark, Mind.
- DamageBonusPercent3: Damage type that DamageBonusPercentValue3 applies to. Acceptable values: None (if not used), All (for all damage types), Slashing, Blunt, Piercing, Fire, Cold, Lightning, Holy, Dark, Mind.
- DamageBonusPercentValue: Percentage increase/decrease to damage of type DamageBonusPercent.
- DamageBonusPercentValue2: Percentage increase/decrease to damage of type DamageBonusPercent2.
- DamageBonusPercentValue3: Percentage increase/decrease to damage of type DamageBonusPercent3.
- Description: A short description of the trait; appears on the level up screen.
- HealFlatBonus: Flat increase/decrease in healing done by this character.
- HealPercentBonus: Percentage increase/decrease in healing done by this character.
- HealReceivedFlatBonus: Flat increase/decrease in heal received.
- HealReceivedPercentBonus: Percentage increase/decrease in heal received.
- ResistModified1: Damage type that ResistModifiedValue1 applies to. Acceptable values: None (if not used), All (for all damage types), Slashing, Blunt, Piercing, Fire, Cold, Lightning, Holy, Dark, Mind.
- ResistModified2: Damage type that ResistModifiedValue2 applies to. Acceptable values: None (if not used), All (for all damage types), Slashing, Blunt, Piercing, Fire, Cold, Lightning, Holy, Dark, Mind.
- ResistModified3: Damage type that ResistModifiedValue3 applies to. Acceptable values: None (if not used), All (for all damage types), Slashing, Blunt, Piercing, Fire, Cold, Lightning, Holy, Dark, Mind.
- ResistModifiedValue1: Percentage increase/decrease to resistance ResistModified1.
- ResistModifiedValue2: Percentage increase/decrease to resistance ResistModified2.
- ResistModifiedValue3: Percentage increase/decrease to resistance ResistModified3.
- TimesPerRound: Number of times per combat round that this trait can activate.
- TimesPerTurn: Number of times per hero turn that this trait can activate.
- The TraitCard and TraitCardForAllHeroes properties are only used for card traits (see below).
- Rename the file to match the ID.
- Put the file in the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\trait\ folder.
(if this folder does not exist, run AtO at least once with Obeliskial Content installed, or make the folder yourself)
-
Creating card traits:
- Download the example card trait.
-
Fill in the properties:
- ID: Unique identifier for your trait. Lowercase only, no spaces.
- TraitName: The name of the trait. Appears on the level up screen and when the trait is activated.
- TraitCard: The ID of the card to be given to this hero only when this trait is selected.
- TraitCardForAllHeroes: The ID of the card to be given to all heroes when this trait is selected.
- All other properties should remain as-is; they’re only used for effect traits.
- Rename the file to match the ID.
- Put the file in the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\trait\ folder.
(if this folder does not exist, run AtO at least once with Obeliskial Content installed, or make the folder yourself)
-
Create at least one skin using the above instructions.
- Make sure you set one skin as the default using the BaseSkin property!
- Optional: create cardbacks using the above instructions.
-
Optional: create (at least) one Starter card, which is unique to this class.
- Set the Starter property in the card to true. If using the Card Creator, you can find the Starter property in the Advanced section (which can be displayed using the cog in the top right).
-
Optional: create a unique item for this class.
- Set the DropOnly property in the item to true so that it doesn’t appear in shops or loot rewards. If using the Card Creator, you can find the DropOnly property in the Advanced section (which can be displayed using the cog in the top right).
- Optional: create Obelisk Challenge card packs using the above instructions.
-
Create traits using the above instructions.
-
Create a new SubClassData:
- Download the example subclass.
-
Fill in the properties:
- ActionSound: [NB: consider removing from subclassdatatext?] The sound that the character makes when performing an action. Not used, as far as I can tell? It has instead been replaced by sounds on cards.
- Cards: An array showing the 15 cards that the subclass starts with. There can be a maximum of 7 different cards, and at least one of these should be a unique/starter card. The example subclass starts with 3*mass invisibility (wow!), 2*ice lance, 3*shadow bolt, 1*mana gem, 2*charge battery, 3*frost bolt and 1 examplestartercard.
- ChallengePack0: The first pack option in Obelisk Challenge mode.
- ChallengePack1: The second pack option in Obelisk Challenge mode.
- ChallengePack2: The third pack option in Obelisk Challenge mode.
- ChallengePack3: The fourth pack option in Obelisk Challenge mode.
- ChallengePack4: The fifth pack option in Obelisk Challenge mode.
- ChallengePack5: The sixth pack option in Obelisk Challenge mode.
- ChallengePack6: The seventh pack option in Obelisk Challenge mode (NB: the final/eighth pack option is random).
- CharacterDescription: A short description of the character, which appears when the character is selected in the Hero Selection screen.
- CharacterDescriptionStrength: A one-line description of the character’s strengths.
- CharacterName: The character’s name.
- Energy: The character’s starting energy.
- EnergyTurn: The amount of energy the character gains each turn.
- Female: Set to _true_ if the character should use female action sounds on cards where available (e.g. Battle Cry makes a different noise when Bree plays it than when Magnus plays it).
- FluffOffsetX: Horizontal offset for fluff text on played cards.
- FluffOffsetY: Vertical offset for fluff text on played cards.
- GameObjectAnimated: [NB: remove per Friday changes to SubclassDataText?]
- HeroClass: The character’s class.
- HeroClassSecondary: The character’s secondary class, or _None_ if they have only one class.
- HitSound: Sound made when the character takes damage.
- HP: Base max HP.
- ID: A unique identifier for your character. Lowercase only, no spaces. TEMPORARY NOTE: NEEDS TO BE THE SAME AS THE SUBCLASSNAME
- Item: The ID for this character’s unique item
- MaxHP: An array of numbers corresponding to the increase in max HP per level. The example subclass gets 6 additional max HP at each level from 2 to 5.
- OrderInList: The order that this character appears within its class (e.g. the example subclass appears in slot 5 in the Mage section). Slots 1-4 (corresponding to values 0-3 in this property) are used for vanilla classes.
- ResistSlashing: Base slashing resistance (%).
- ResistBlunt: Base blunt resistance (%).
- ResistPiercing: Base piercing resistance (%).
- ResistFire: Base fire resistance (%).
- ResistCold: Base cold resistance (%).
- ResistLightning: Base lightning resistance (%).
- ResistHoly: Base holy resistance (%).
- ResistShadow: Base shadow resistance (%).
- ResistMind: Base mind resistance (%).
- Speed: Base speed.
- SpriteBorderLocked: The filename for the image shown on the Hero Selection screen when the character has not yet been unlocked.
Do not include the .png file extension! If your file is mySpriteBorderLocked.png, enter mySpriteBorderLocked.
- StickerBase: The filename for the character’s base sticker (used with the “target” and “heal” emotes).
Do not include the .png file extension! If your file is myStickerBase.png, enter myStickerBase.
- StickerAngry: The filename for the character’s “angry” sticker.
Do not include the .png file extension! If your file is myStickerAngry.png, enter myStickerAngry.
- StickerIndifferent: The filename for the character’s “indifferent” sticker.
Do not include the .png file extension! If your file is myStickerIndifferent.png, enter myStickerIndifferent.
- StickerLove: The filename for the character’s “love” sticker.
Do not include the .png file extension! If your file is myStickerLove.png, enter myStickerLove.
- StickerSurprise: The filename for the character’s “surprised” sticker.
Do not include the .png file extension! If your file is myStickerSurprise.png, enter myStickerSurprise.
- StickerOffsetX: Horizontal offset for stickers.
- SubclassName: The name of the character’s class (e.g. Mercenary, Cleric, Elementalist), shown on the Hero Selection screen when they are selected. TEMPORARY NOTE: NEEDS TO BE THE SAME AS THE ID (but can have different case e.g. capital first letter)
- Trait0: The ID for the character’s innate trait.
- Trait1A: The ID for the character’s left-hand Level 2 trait option.
- Trait1B: The ID for the character’s right-hand Level 2 trait option.
- Trait2A: The ID for the character’s left-hand Level 3 trait option.
- Trait2B: The ID for the character’s right-hand Level 3 trait option.
- Trait3A: The ID for the character’s left-hand Level 4 trait option.
- Trait3B: The ID for the character’s right-hand Level 4 trait option.
- Trait4A: The ID for the character’s left-hand Level 5 trait option.
- Trait4B: The ID for the character’s right-hand Level 5 trait option.
- Rename the file to match the SubclassID.
- Put the file in the Across the Obelisk\BepInEx\config\Obeliskial_importing\TESTING\subclass\ folder.
(if this folder does not exist, run AtO at least once with Obeliskial Content installed, or make the folder yourself)