Foundry:Converting from Roll20
Contents
Conversion Process
- The following is a general overview of the process taken to convert modules so that those looking to do this personally can do so on their own.
- When working up worlds, its often best to work either from local session or ensure you have rapid access to the location's filestore to update and test.
- Please note that in Foundry the general term for an adventure or Module, is called a WORLD; and the term MODULE in Foundry refers to an add-on; or extension. Plutonium is a Module, Curse of Strahd is a World. If you are coming from Roll20 and used BetteR20, this could be confusing as Module was used to mean an adventure/campaign.
Resources Used
YOU ARE ADVISED TO INSTALL THESE PRIOR TO PROCEEDING TO THE CONVERSION
SOME OF THESE ARE PAID TOOLS..
It's best to familiarize yourself with them and their use prior to proceeding to trying this for the first time.
- Roll20 Tools:
- KaKaRaTo Offers a suite of tools to nearly seamlessly move your Roll20 Content into Foundry. A truly exceptional effort.
- R20 Exporter for Chrome; for exporting the Roll20.
- (outdated video guide here )
- R20Converter; which takes those exports and creates a world or compendium file from such into foundry (must be run on the Foundry server).
- JSON Editor:
- You will need an editor for the code (often JSON); if you do not already have one - please keep it simple.
- Download |Notepad++ or Sumblime
- Macro Help:
- Help converting R20 macros to Foundry VTT macros.
- Deduplicator Script
- Add-On Modules for Foundry
- Its advised to have these installed
- Plutonium
- The Furnace
- Automatic Journal Icon Numbers
- Better Text Drawings (For text labels/drawings multi-line (Effect doesn't require the world run the module but keeps the effect))
- Context Convenience
- FXMaster
- Laptop Form Fix (if working local from laptop or less than a 21" monitor)
- libWrapper
- TinyMCE toolbar config (easier editing options for Journal/text)
- Merge Walls
- Wall Cutter
- Multi-Level Tokens
- Parallaxia
- Search Anywhere
- Token HUD Wildcard (for multi-sided tokens)
- Card Support (unoffical) (for Decks)
- Grid Scaler
In Roll20
You will need resources mentioned above correctly installed to proceed. This document will not cover their installation. It is assumed you've already done such.
- 1) Open your game in Roll20; Make sure any any doors are marked in a different color, secret doors in yet another color and note them.
- 2) Go to Settings
- 3) Once the game HAS COMPLETELY LOADED (very important) choose Export Campaign to ZIP
- 4) While it proceeds, do NOT leave the page (as it says)
- 5) Open the R20 Converter, and navigate to the downloaded ZIP file
- Define the World/Module URL name (the folder's name)
- Define the Campaign name (this is long Name - if not provided, it defaults to the Zip file's name)
- Define the Walls and Door Colors used (Not needed if WoTC standard modules)
- YOU MAY (your choice) want to overwrite actor/Feat/Data from SRD compendium
- Check Mark No Duplicate Actor Items
- NOTE: If your converting an entity already part of 5e.Tools site adventures your World/Module URL name must match the
json
from the adventure's _meta
- 6) Click Convert Campaign
- 5) Open the R20 Converter, and navigate to the downloaded ZIP file
Prep Work
- 7) Read the Adventure and make a document to notate adventure details
- what the general "mood" is of campaign is
- Then break that down into the various scenes/maps;
- Notate the environments : underwater/towns/forests/arctic/ships & ocean/caves etc
- What are the Major NPCs & twists;
- Do you find Merchants with specific goods for sale, and locations for Loot boxes (containers / caches)
- What weather effects are helpful to consider (fog/rain/snow/sparks)
- Reference the Music collection, found <here>
- Reference the Weather/Effects patterns, found <here>
- Reference supplemental Icons, found <here>
- Does the Adventure use a Card Deck? If so ...
- Find Music and Graphics to fill in the missing elements
- Weather effects;
- Landing Page (typically the cover art for the adventure)
- Title Track(s)
- Additional Sounds/Sound Effects
- Item/Spell Icons
- 7) Read the Adventure and make a document to notate adventure details
- 8) Open the directory for world you will be working upon.
- 9) Copy of over the default files below into the root of the
worlds/<world's_name_dir>/
directory (where you find theworld.json
Readme.md
modules.json
checkdependencies.js
- 10) Create directories
- audio
- assets
- 11) place that landing Page graphic (typically the cover) and Title track
- Save/convert (See graphics below) the landing Page graphic to the world's
/scene/backgrounds/
directory as Start.webp - Save the cover track to
worlds/<world's_name_dir>/audio/
- Save/convert (See graphics below) the landing Page graphic to the world's
- 11) place that landing Page graphic (typically the cover) and Title track
- Leave the window connection open or make shortcut to this location; and make note of the
worlds/<world's_name_dir>/data
directory - you'll be working with it andworlds/<world's_name_dir>/packs/
(which is likely not there yet) directory contents later
- Leave the window connection open or make shortcut to this location; and make note of the
- 12) Open the Readme.md
In Foundry
- 13) Open Foundry Setup
- 14) Go to the world and define the world's description.
- Here is the snippet used at the end of all converted worlds we've done.
Product Information
System: D&D 5E (WorldSetting)
Starting Level: #-#
Length: One Shot/Campaign
DISCLAIMER: The use of this is meant for use for your personal use, and only if you legally possess such in accordance with your local laws.
- 15) Check the Installed Modules
- Plutonium
- The Furnace
- Better Text Drawings (For text labels/drawings multi-line (Effect doesn't require the world run the module but keeps the effect))
- Dancing Lights [Likely to be phased out in 0.7.x]
- Deselection
- Laptop Form Fix (if working local from laptop or less than a 21" monitor)
- libWrapper
- TinyMCE toolbar config (easier editing options for Journal/text)
- Merge Walls
- Multi-Level Tokens
- Parallaxia
- Search Anywhere
- Token HUD Wildcard (for multi-sided tokens)
- Card Support (unofficial) (for Decks)
- Soundboard
Game Settings
- 16) Launch World.
- 17) Head to Game Settings -> Manage Modules and enable
- Plutonium
- The Furnace
- Adventure Importer/Exporter
- Automatic Journal Icon Number
- Better Text Drawings (For text labels/drawings multi-line (Effect doesn't require the world run the module but keeps the effect))
- Context Convenience
- Dancing Lights
- Deselection
- Laptop Form Fix (if working local from laptop or less than a 21" monitor)
- libWrapper
- Loot Sheet NPC 5e
- TinyMCE toolbar config (easier editing options for Journal/text)
- Merge Walls
- Multi-Level Tokens
- Parallaxia
- Permission Viewer
- Search Anywhere
- Vehicles and Mechanisms (for Ships/Vehicles/rotating tiles/rooms)
- Token HUD Wildcard (for multi-sided tokens)
- Card Support (unoffical) (for Decks)
- Roofs & Overhead Tiles (For Towns/Villages)
- 18) Disable Modules listed in Plutonium Know compatibility issues
- 19) Enter Configure Settings -> Module Settings
- Merge Walls (starting point)
- Max angle Degree 2
- Max Segment Length 10
- Adventure Importer [Not implemented Publicly]
- Click Adventure Importer
- Download Foundations (5e or 5ePE depending upon target) from here
- Importer Adventure
- 19) Enter Configure Settings -> Module Settings
Compendium Packs
- 20) Make a Compendium Pack for each of the following entries:
- Actor; Item; Scene; Journal Entry; RollTable; Playlist;
- Which, should be simply named Actor; Item; Scene; Journal Entry; Table; or Playlist to start. (You're welcome to add Macro as well, but currently there are no included macros)
- (you may want additional version of Actor for Monsters
- 20) Make a Compendium Pack for each of the following entries:
Playlists
- 21) Head to the Playlist Sidebar
- 22) Make a START play and add the track you placed previously to
worlds/<world's_name_dir>/audio
. - 23) From the Notes make a playlist for each setting you discovered during reading.
- If you are ready go ahead and define the play lists; its helpful to choose the playlists as generic terms so it is reusable, but if you want to go selective use the scene names please for such.
- 24) Note each used Track used in the Readme.md
RollableTables
- 25) Unless you're sure of its use; remove the Card Deck
- 26) Add to your notes any Tokens/Actors that have tables for Multi-sided tokens
Items Directory
- 27) Head to the Items Directory and remove the Standard Decks element (if its there)
- Items will be addressed in data editing phase again.
Configure Plutonium
- 28) Click upon the (
) Settings
- Click UI in the left pane:
- Enable Streamer Mode;
- Disable Name Browser Tab After Active Scene and Display Detected Backend
- (this prevents myTab from causing problems)
- Click Journal Entries in the left pane:
- Enable Enable URL Embed and Enable Journal Embed
- Click Actors in the left pane:
- Enable Auto-Roll Multiattacks
- 28) Click upon the (
Import Foundations 5e Documents
- Not publicly available as yet
- 29) Open <link>
Actors
- 30) Create a Temp/Test Character with Vision settings for Dim/Bright
Scenes
- Here comes the big work.
- Create Start Scene
- 31) Create a scene and name it Start, modifying the configuration
- APPEARANCE:
- Set the Background Graphic to
worlds/<json_name>/scenes/backgrounds/Start.webp
and Backgroundcolor to something (Darker is better)
- Set the Background Graphic to
- APPEARANCE:
- GRID:
- Gridless
- GRID:
- LIGHTING and VISION
- Disable Token Vision & Fog Exploration
- Enable Global Illumination
- LIGHTING and VISION
- AMBIENCE and ATMOSPHERE
- Audio Playlist - Choose the Start Playlist
- AMBIENCE and ATMOSPHERE
- ACCESS
- Set Accessibility to All Players
- ACCESS
- 36) Remove the Token Scene from the navigation bar (if it exists -- [They are Unnecessary and there for Roll20 to address the problem with Roll20 disk quota and problems assigning tokens])
- 37) Add two Macros <link>
// Define Actors token bars. Bar 1 - hp. Bar 2 - <none> game.actors.updateAll(a => ({ "token.bar1.attribute": "attributes.hp", "token.bar2.attribute": "", "token.displayName": CONST.TOKEN_DISPLAY_MODES.OWNER, "token.displayBars": CONST.TOKEN_DISPLAY_MODES.ALWAYS }), a => a.data.type === "npc");
// Remove bar 2 for all tokens on map. const tokens = canvas.tokens.placeables.map(token => { return { _id: token.id, "bar2.attribute": "None", }; }); canvas.scene.updateEmbeddedEntity('Token', tokens)
- 38) Open 5eTools into the adventure or open the adventure locally for comparison to the resulting export.
- 39) Run the Fix for imported ACTORS (defines resources 2)
- 40) Go thru each scene.
- [a] Run Macro Fix for imported TOKENS (removes Bar 2)
- [b] If a map is missing tiles/background note this and proceed to the next map.
- [c] Check Map/Grid alignment & Scale (see step #41 if adjustments are needed)
- [d] Mark any difficult terrain. (update dependencies if used)
- [e] Click the Effects Control and Define the Effects (if any) you wish to use (update dependencies if used)
- Underwater; Fog; Embers;
- [f] Click upon Wall Controls (<image for it>) then, Click the Clean up Duplicate Walls (
) (from Tim Posney's excellent [Merge Walls](https://gitlab.com/tposney/mergewalls/tree/master) to address issues with the Roll20 exports (stacked walls and vertices creating to try to reduce the factors for Lighting):
- Run this at least 3 times per map; until the changes in wall segments is 30 or less in a pass; or until if the changes in the walls begin to disrupt functionality of the map.
- Manually fix Walls where needed.
- Go into Configure Settings for Merge wall changings its settings as below and run it again (until until the changes in wall segments is 50 or less in a pass; or until if the changes in the walls begin to disrupt functionality of the map.)
- Max angle Degree 8
- Max Segment Length 15
- Manually fix Walls where needed. (avoid making changes that are under 2ft (in relative scale) in length. ie make changes that have GAME mechanical impact, but avoid minutia configuration - remember that the lower end computers are more commonly used.)
- Check each maps doors, remove extra "tidbits" from doors (in general a door should only be one segement in length, redefining them as needed. Setting each door as locked, closed or open as is needed
- Define the Secret Doors, and simplify where possible
- Convert standard walls that are better turned into Terrain walls where needed (Columns; Trees; Boulders; objects which are 8ft of more in height) and long stairwells or sets of elevation changes (to mirror loss of vision from elevation changes)
- Add Invisible walls for Portcullis; Jails; Windows; etc.
- Add Ethereal walls for Illusionary walls; Tapestries; etc
function wallUpdate(data) { canvas.walls.controlled.map(wall => wall.update(data)); } let dialogEditor = new Dialog({ title: `Wall Type Picker`, content: `Pick the type of wall to change the selected wall to.`, buttons: { blockMove: { label: `Block Movement`, callback: () => { wallUpdate({"move": CONST.WALL_MOVEMENT_TYPES.NORMAL}); dialogEditor.render(true); } }, allowMove: { label: `Allow Movement`, callback: () => { wallUpdate({"move": CONST.WALL_MOVEMENT_TYPES.NONE}); dialogEditor.render(true); } }, blockPer: { label: `Block Perception`, callback: () => { wallUpdate({"sense": CONST.WALL_SENSE_TYPES.NORMAL}); dialogEditor.render(true); } }, limitPer: { label: `Limited Perception`, callback: () => { wallUpdate({"sense": CONST.WALL_SENSE_TYPES.LIMITED}); dialogEditor.render(true); } }, allowPer: { label: `Allow Perception`, callback: () => { wallUpdate({"sense": CONST.WALL_SENSE_TYPES.NONE}); dialogEditor.render(true); } }, isDoor: { label: `Make Door`, callback: () => { wallUpdate({"door": CONST.WALL_DOOR_TYPES.DOOR}); dialogEditor.render(true); } }, close: { icon: "", label: `Close` }, }, default: "close", close: () => {} }); dialogEditor.render(true)
- [g] Define Audio Sources
- Fires: Fireplaces; Workspaces;
- Water: Waterfalls; Rivers; Streams; Fountains;
- [h] Review Define Light Sources
- Check if the global lighting token vision or fog of war are needed for that scene.
- Define Candle/Torches with Dynamic Lighting's FIRE [THIS WILL BE REPLACED LARGELY IN 0.7.x]
- Colored lights (Glyphs; Lava; Magical lights
- [i] Define [Multi-Level Token]
- Level where the scene has multiple levels on the same scene
- In/Out where it moves between scenes
- Clone where one layer overlooks or below another map layer's overwatch position / mezzanine.
- [j] [1] to add visual effects (rolling waves/train moving/fog rolling in).
- Water/Wave - (and underwater)
- Snow -
- Rain -
- Train/Flying/ travel scenes
- [g] Define Audio Sources
PROPERTIES
Field | Function |
---|---|
Alpha | Set's opacity 1 = 100% |
X Scale & Y Scale | 1=100% scale; use fractions to reduce scale |
ΔX & ΔY | Rate of change along that axis |
X-Offset & Y-Offset | Example |
ΔX & ΔY Offset | Movement : values down or right +; up or left - |
CUSTOM SCRIPTs:
For rotation: next.rotation.z += 0.1;
(change value increase; decrease spin speed)
- [k] Refer to the notes for MultiSided Tokens, if one appears on the map/scene - set the HUD wildcard for the sides, if the token is a random table you'll need to set the directory for the token (typically
worlds/<json_name>/scenes/tokens/<###-<name>>
- [l] If a token appears multiple times the map, replace the token with a new pulled token from the ACTORs sheet. (regardless of the number of times a token appears - a unique token image was produced by the exporter - so if you have 100 goblins, you will have, at LEAST 100 copies of the Goblin token stored in
worlds/<json_name>/scenes/tokens/<scene_name>/
- [m] If you have chosen to - your notes about merchants or containers/stashes - add the Loot NPCs for such. Update the Readme.md with the LootNPC 5e if so.
- [k] Refer to the notes for MultiSided Tokens, if one appears on the map/scene - set the HUD wildcard for the sides, if the token is a random table you'll need to set the directory for the token (typically
- 41) Go into the the Scene's configuration;
- If adjustments were needed for scale or alignment you hopefully fixed that in 40b, if not you'll likely have to rebuild the scene once updates are applied as sounds/lights/tile/walls/tokens etc locations may shift relative to the background or tiles and no longer align as intended.
- Link the Journal Notes.
- Change the background color to a neutral background
- Review and change the Lighting and Vision as needed
- Set the Playlist & Weather effect as needed
- Change Accessibility / Navigation name as needed
- 41) Go into the the Scene's configuration;
- 42) Drop your Test User onto the map and test the settings, lighting, sound events, check walls and doors; and check Multilevel token areas (remembering where it occurs - to double check that your token was deleted when it moves to another scene and back.)
- 43) Fix any issues that were discovered
- 44) Update Readme with any notes about dependencies used etc.
- 45) Delete the Test user token
- 46) Repeat steps 40-45 until all scenes without missing tiles/backgrounds have been done.
- 47) If you did not have a missing graphic proceed to step # ; Otherwise. Fix bad imports and replace corrupted/missing maps. (It happens)
- Search for a copy of the Maps/Tiles from the Art Repo or pull from the website. (Try to use maps images that don't have tokens or secret doors marking clearly included, instead try to find DM versions of the maps without any tokens/locations).
- Save and convert it to a .webp type in the
worlds/<world's_name_dir>/scenes/backgrounds
- 47) If you did not have a missing graphic proceed to step # ; Otherwise. Fix bad imports and replace corrupted/missing maps. (It happens)
- 48) Exit Game & Navigate to the game's directory
worlds/
- 49) Make a backup zip of the
<world's_name_dir>
directory (This next part is potentially destructive) - calling it<world's_name_dir>
-v001.zip.
- 48) Exit Game & Navigate to the game's directory
File Manipulation
- Time to get a bit crazy.
- Time to convert the images within the directory this can be done two ways
- CLI thru FFmpeg (unix/VPS)
- CLI
ffmpeg -framerate 60 -i filename_%d.png -c:v libvpx-vp9 -pix_fmt yuva420p -b:v 2M -maxrate 2M -bufsize 1M output.webm
- CLI
- UI thru XnConvert (for localhosting/windows)
- Under Actions clear all metadata (enabled)
- Under Output: Filename set to {Filename}
- webP settings lossless
- Time to convert the images within the directory this can be done two ways
- Convert all the .PNG art work to .webP removing prior .PNGs
- If you're comfortable with your replacement of those Actor's tokens on the map; go into the \scenes\tokens\ directories and remove those duplicate images FOR ACTORS. (more about that later on)
- The world.json should already have updated Core and System versions from being opened, but check and if not replace as needed.
"coreVersion": "0.6.6", "minimumCoreVersion": "0.6.0", "compatibleCoreVersion": "0.7.2", "system": "dnd5e", "systemVersion": 0.96, "minimumSystemVersion": "0.90", "compatibleSystemVersion": "0.96",
- Replace the
scripts": [],
- line with
"script": ["./checkdependencies.js"],
- Replace the languages array (if its empty)
"languages": [ { "lang": "en", "name": "English", "path": "lang/en.json" } ],
- update the urls
"url": "", "manifest": "https://foundry.5e.tools/plutonium/#/world.json", "download": "https://foundry.5e.tools/plutonium/#/#.zip", "readme": "README.md",
"bugs": "",
"changelog": "https://wiki.5e.tools/index.php/Foundry:Changelog_Adventures",
- and id
"id": "#",
- replacing # with the name of the project (the directory name)
update the authors with whomever wrote or published the adventure
- Copy and add this section to the
world.json
json -- with the notes you've taken keep the ones that were used, remove the ones that were not. Make sure the final entry doesn't have a comma at the closing } (last element in the array of objects).- NOTE: dependencies is used to key off of for the dependencies script;
"dependencies": [ { "name": "plutonium", "manifest": "https://get.5e.tools/plutonium/module.json", "version": "1.10.2", "author": "Giddy" }, { "name": "DancingLights", "manifest": "https://raw.githubusercontent.com/BlitzKraig/fvtt-DancingLights/master/module.json", "version": "2.1.2", "author": "Blitzkraig" }, { "name": "multilevel-tokens", "manifest": "https://raw.githubusercontent.com/grandseiken/foundryvtt-multilevel-tokens/v0.3.0/module.json", "version": "0.3.0", "author": "grandseiken" }, { "name": "parallaxia", "manifest": "https://gitlab.com/reichler/parallaxia/raw/master/parallaxia/module.json", "version": "0.2.9", "author": "wonko" }, { "name": "Token HUD Wildcard", "manifest": "https://raw.githubusercontent.com/javieros105/FVTT-TokenHUDWildcard/master/token-hud-wildcard/module.json", "version": "1.0.0", "author": "javieros" },
{ "name": "Card Support (unofficial)", "manifest": "https://github.com/spacemandev-git/fvtt-card-support/releases/download/latest/module.json", "version": "1.5.2", "author": ["spacemandev"] }, { "name": "Loot Sheet NPC 5e", "manifest": "https://raw.githubusercontent.com/jopeek/fvtt-loot-sheet-npc-5e/master/module.json", "version": "2.1.1", "author": ["Jan Ole Peek (ChalkOne)", "Charles Miller (Kage)"] }, { "name": "Terrain Layer", "manifest": "https://raw.githubusercontent.com/wsaunders1014/TerrainLayer/master/module.json", "version": "0.0.1", "author": ["Will S"] }, { "name": "FXMaster", "manifest": "https://gitlab.com/mesfoliesludiques/foundryvtt-fxmaster/-/raw/master/module.json", "version": "0.8.0", "author": ["U-man"] },
{ "name": "polyglot", "manifest": "", "version": "0.6", "author": "KaKaRoTo" }, { "name": "trigger-happy", "manifest": "https://raw.githubusercontent.com/kakaroto/fvtt-module-trigger-happy/master/module.json", "version": "0.6", "author": "KaKaRoTo, tposney" } ],
- Check code through JSONonlint. Fix any errors that appear.
- Save the file when done.
- (This is preparatory work; this won't (as yet) enable the module - but it lays the groundwork for such... and you're here anyway)
- #) As with world.json Replace # with the name of the project (the directory name) wherever it appears (Ctrl+H) Find: # ; Replace with: <world's_directory_name>
- #) Type in the Project's Long Name. Replace ~ with the name of the project's Title wherever it appears (Ctrl+H) Find: ~ ; Replace with: <Title>
- #) Pack data should have been copied over, if so you can save the file. (You will be touching it once more)
- Check code through JSONonlint. Fix any errors that appear.
- Save the file when done.
- Modify the version of the readme listing.
- Check the readme's accuracy for the content you've worked upon.
- Check code through JSONonlint. Fix any errors that appear.
- Save the file when done.
- Open the /data/worlds/<directory_folder>/data
- items.db
- actors.db
- Open the /data/worlds/<directory_folder>/data
- Search files with a Find & Replace for
- find:
"
replace with:.
"
- find:
"
replace with:.
"
- find:
- Search files with a Find & Replace for
- Save the file when done.
- 55) Launch Foundry (this reloads the World index)
- If the world does not show up in the listing, you may have an issue with the JSON's structure - review and revise it, looking at JSONlint.
- 55) Launch Foundry (this reloads the World index)
In Foundry
Scenes
- Revisit the scenes and see if there are any broken graphics (Scene/Actor/Token/Tiles/Drawings)
- Check linked Journals
- Check Music and lighting
- Check permissions
- Check Multi-Level tokens
Actor
- Now for some Fine Tuning
- If you changed the import option from normal to "pull from SRD compendium" this won't be an issue... however you'll have to fix every instance of "multiattack" in each creature that has that, and give creatures with ranged weapons ammunition for those creatures.
- If you didn't (ie followed directions) you'll have to fix every instance of a versatile weapon.
- Now for some Fine Tuning
- Open each actor; if they have the Spellcasting trait, open the actor's spellbook and update their stated casting level and then the slots they have available.
- SOME CASTERS IN THE ADVENTURE ARE "NERF'D" to lower their DCs for a balanced combat - so reference the adventure to confirm. Do NOT add slots if they don't have them.
- If the importer screwed up their at will casting (not an uncommon thing) - you'll need to change the spell's usage manually.
- Open each actor; if they have the Spellcasting trait, open the actor's spellbook and update their stated casting level and then the slots they have available.
- Replace Actor's weapons (specifically versatile) with items from the Plutonium Compendium.
- If they have a ranged weapon, give them ammo of the appropriate sort (personal choice - you can ignore that if you wish) - there is a forth coming module that when a creature is defeated makes them into a loot box.
- Replace Actor's weapons (specifically versatile) with items from the Plutonium Compendium.
- Check Prototype Token and Confirm Resource bar 2 is set to AC or None (depending).
Decks
- Pending
Compendium
- Clean up:
- Make sure the test Actor is removed and that no token of it exists on any scene
- Check that all open doors are supposed to be open.
- IF that is all good you can proceed to backing up the data to Compendium
- Clean up:
- Grab THIS js Macro and execute it.
- Move all Actor; Scene; Item; JournalEntries; Rollable Tables and Playlist (if any) to their respective comendia you made back in step 20.
- Clean up part 2:
- Remove the Utility Macros that were used.
- Clean up part 2:
- Exit Foundry
Compendium
- Close out of
File Manipulation
- Making the Compendium work as a module (but from a single file)
- You should have access to and the data/worlds/<directory_name> folder
- Open all the files in the data/worlds/<directory_name>/packs/ directory in an editor
- #) In the data/worlds/
- Find and Replace all instances of
/data/worlds/
with/data/modules/
that appear across all those files.
- Find and Replace all instances of
- Save the file
- Open the world.json (if its not already open)
- Replace the
- Open the world.json (if its not already open)
"packs": [
with
"packs": [],
- Copy the the directory to data/modules/
- Relaunch Foundry (will reload the indexes)
- Open a game (any)
- (This is preparatory work; this won't (as yet) enable the module - but it lays the groundwork for such... and you're here anyway)
- #) As with world.json Replace # with the name of the project (the directory name) wherever it appears (Ctrl+H) Find: # ; Replace with: <world's_directory_name>
- #) Type in the Project's Long Name. Replace ~ with the name of the project's Title wherever it appears (Ctrl+H) Find: ~ ; Replace with: <Title>
- data/games/<>/data delete the sessions
- sessions.db
- users.db
- chat.db
- fog.db
- combat.db
- data/games/<>/data delete the sessions
IF your submitting it ...
- make a new Zip of directory <directory name>.zip (so that when unzipped it builds the directory and places all files under that directory.
Making things feel familiar
- Token Actions (aka Token Action Hud)
- Ping
- Editor Improvement
- Multi Sided Tokens
- Decks
- Better Rolls
- Chat Image
- deselection (Deselection)
- Health Aura (Token Aura)
- Better Text boxes this this and this
- Journal Rights viewing (Permission Viewer)
- OGL character Sheet (OGL Sheet)
- Token Magic (FX)
- Sorting features (Folder sorting)
- Journal Thumbnails