Giter Club home page Giter Club logo

forged_in_obsidian's Introduction

Readme

Welcome to my Starforged Starter Vault! I set this up to play Starforged in a way that fits me best.

Change Log

I did a terrible job keeping track earlier, here are the files that you should change to get everything working to v1.5 and beyond.

v1.5.5

  • Added the StarsmithAssets.JSON file in the main folder which has all the Starsmith: Assets and Starsmith: Mecha Mercs assets in it.
  • Fixed a typo in the README file

v1.5.4

  • Updated README.md
  • Updated starforged_stats.sfile.md and starforged_moves.sfile.md
  • Added Starsmith: Mecha Mercs material in Mech and Mech_Module folders inside the Asset folder.
  • Added all Starsmith: Assets including Crew Member, Flash Fox, Furball, Nano-Swarm, Waterwyrm in the Companion folder, Immortal Coil, Indefatigable, Soulless, Traveler in the Deed folder, Aeroponics, Armory, Drones, External Refit, Holodeck, Stabiliziers, Tractor Beam, Mech Printer in the Module folder, Constable, Cosmic Constructor, Enhanced, Linguist, Logistician, Precog, Psionic, Quantum Tunneler, Rebel, Rocketeer, Scientist, Security Guard, Telepath, Voidshifter, Wealth Management, Well-Connected in the Path folder, and Aquatic HOV in the Support_Vehicle folder.

v1.5.3

  • Updated README.md
  • Updated starforged_progress.sfile.md, starforged_stats.sfile.md, and starforged_moves.sfile.md in Support/inline Scripts folder to fix a bug in the RegEx for the move command and a bug where it grabbed the first created character by default rather than the first listed alphabetically.

v1.5.2

  • Updated README.md
  • Updated starforged_progress.sfile.md, starforged_stats.sfile.md, and starforged_moves.sfile.md in Support/inline Scripts folder which fixed Withstand Damage, fixed a bug of 0 values in frontmatter returning NULL instead of 0, altered Burn Momentum to give max and reset value on return, and added in new shortcuts of Stat Check, Auto Strong Hit, Auto Weak Hit, Auto Miss, and Roll for generic die rolls like 1d100 or 3d6. See documented shortcuts below.
  • Note: For Withstand Damage on your command vehicle or when suffer/take integrity for your command vehicle, you can refer to the asset as "cv" instead of "Starship" if you want.

v1.5.1

  • Updated README.md
  • Updated starforged_progress.sfile.md in the Support/inlineScripts folder
  • Updated snippets.css in the .obsidian/snippets folder to get the icon for the new Clocks folder
  • Added the new Clocks folder with Clocks1.md inside as a demo
  • Added Clocks_Template to the Templates folder
  • Updated the data.json file in .obsidian/plugins/templater-obsidian folder to account for the new Clocks_Template file
  • Added the ProgressClocks folder to the Images/Shortcut_Images folder which has all the progress clock SVG files

v1.5

  • Updated README.md
  • Updated starforged_moves.sfile.md, starforged_stats.sfile.md, starforged_progress.sfile.md in the Support/inlineScripts folder
  • Updated snippets.css in the .obsidian/snippets folder
  • Added Character_Template and Mech_Template files in the Templates folder
  • Optional: Updated data.json in the .obsidian/plugins/templater-obsidian folder to account for the new Character_Template file
  • Removed Vault_Info file from Support folder
  • Renamed Character folder to Characters
  • Removed Bonds, Discoveries, Quests, Stats, Meters, Conditions, and Character_Sheet from the Character folder
  • All player characters now have a single file for their character sheet and stats which should be created using the Character_Template

Fonts

For the headings, I'm using Xolonium font and Noto Sans as the interface font.

Plugins

This vault only works with the Dataview, Templater, and most importantly: Inline Scripts plugins.

CSS Snippet

The snippets.css file contains all the folder icons, color coding of new callout boxes, title and header fonts, fixing the tasks so they don't strike through when marked, and an inversion code so that the SVG files will invert black/white based on light/dark mode.

Design Goals

Here were some specific design goals:

  1. Never Leave the Journal: I usually play solo-rpgs by writing long-form like in a story. For that reason, I wanted to minimize the number of times I'd have to leave the journal entry of the current play session. Inline Scripts allows me that freedom in all but a few cases (like creating a new vow).

  2. Minimize the Number of Reference Windows: Starforged has a lot more fiddly bits than Ironsworn which has really slowed down my play. I wanted to eliminate the friction by not having to sort through tons of reference windows or menus. To help with that, you can call a move reference directly into the journal and can access the oracles from an inline script. My workspace is a journal on the left, with the character sheet on the top-right and other reference note (like a move or oracles) on the bottom-right.

  3. Make Mechanics Distinct from Story: One of the things I've always done playing in a word processor is to have the mechanics as separate callouts so that you can see clearly what is fiction and what is game play. Therefore, nearly any inline script you call here will give results in a callout which can be unfolded for more details.

Setting up Your Campaign

To get started playing, you'll first want to set up your own character.

  1. Oracles: Not sure if this is necessary, but just in case, start by resetting the oracle files so that Inline Scripts gets all the updated oracles.

    [!NOTE] Reset the Oracles Type :: at the end of both commands below.

[!TIP] ;;tbl reset

[!TIP] ;;tbl add Oracles

  1. Character File: Under the Characters folder, you can add player characters (or a mech if using my Mecha Mercs supplement). Character files can be named anything using letters, numbers, or underscore. You can't include spaces in a character filename. You might want to make the filename short like Char1 if you are playing a multi-character game because you'll have to type the filename in each command. If you're playing solo, you can leave off the filename from most commands and it will default to the first filename in the Characters folder.

    • For each player character, set your stat values (Edge, Heart, Iron, Shadow, Wits) up in the frontmatter. The frontmatter is the section at the top of a note enclosed by --- marks. These act like variables for many of the Inline Scripts, so make sure these are accurate. You should also put your name in the frontmatter. Down in the body of the note, you'll see a place with all the stats, meters, impacts, etc.
  2. Character Assets: In each player character file, scroll down to the bottom of the note and embed whichever assets you want your character to have. Use the command ![[Ace]] to embed the Ace asset for example.

  3. Background Vow and Inciting Incident: To set your first vow, you can either right click on the Progress folder, create a new note, and manually fill out the frontmatter variables OR use the Inline Script in the Note box below. First, let me tell you about all the variables at the top of each file that will have a progress track (like vows, combat, etc.).

    • Filename: At the very top of the note is the file name which should be a single word using only letters or numbers or underscore. For example, Back_Vow or CombatGoal1 or AlienFriends are all fine where Background Vow or Find the Sword will cause the scripts to fail. I suggest short file names such as Combat1 or Prog2 only because you'll need to type out the full filename for Inline Scripts to access it later on.

    • Name: The name of your vow which can be any word or phrase such as Survive the Meteor Shower or Escape the Black Hole's Gravity.

    • Difficulty: The difficulty is Troublesome, Dangerous, Formidable, Extreme, or Epic. If typing manually, make sure to capitalize the first letter and spell the word correct for Inline Scripts to use.

    • Other Frontmatter: You don't need to worry about the other frontmatter variables as they are all automated.

    [!NOTE] Setting Your Background Vow To use Inline Scripts to set a new file with a progress track, type :: at the end of the command below. Let's create a file for your background vow now.

[!TIP] ;;createprogress

  1. Create a New Journal Note and Play!: Add a new note to the Journals folder, and start playing!

No Map?

I didn't do anything to set up a sector map because I never play with a map. There are other Obsidian vaults out there for Ironsworn and Starforged which you can use as a template for maps if you'd like.

Folder Structure

  1. Characters: All the Inline Scripts shortcut commands require that the Characters folder structure remain as it is now. Any character with stats that you need to access through moves should be in this folder.

  2. Images: All images are pulled from the Images folder. You can add additional folders and images, but don't change the structure of the images currently there.

  3. Progress: Any thing that will have a progress track must go in the Progress folder. This includes combat tracks, vows, bonds with NPCs, etc.

Inline Script Commands

While you are free to use any and all of the commands the Inline Scripts offers out of the box, below are explainations of the specific scripts I set up in four different files. Remember that every Inline Scripts command starts with ;; and ends with :: by default. I won't be able to type the full commands as examples below because it would trigger the scripts.

Summary of Commands

  1. impact {condition} {optional: Which character filename?} - Toggle an impact on/off for the given character.

  2. burnmom {optional: Which character file?} - Burns and resets momentum for the given character.

  3. take {amount} {meter/stat/asset} {optional: Which character filename?} - Adds to given meter, stat, or asset track for the given character. If you are taking for the command vehicle integrity, you can either type "cv" or "Starship" as the asset name.

  4. suffer {amount} {meter/stat/asset} {optional: Which character filename?} - Subtracts from given meter or asset track for the given character. If you are suffering from the command vehicle integrity, you can either type "cv" or "Starship" as the asset name.

  5. move {initials} {stat/asset name} {add} {optional: Which character filename?} - Makes a challenge roll using the given stat or asset meter and add for the specified move for the given character. If you are using Withstand Damage for the command vehicle and thus rolling +integrity, you can either type "cv" or "Starship" as the asset name.

  6. moveref {initals} - Embed the text of a move.

  7. createprogress - Creates a new progress file for vows, combat tracks, bonds, etc. with popup inputs.

  8. markprogress {filename} {amount} {optional: Which character filename?} - Marks progress the given number of times on the track in the given file (for the given character if Bonds, Discoveries, or Quests in which case use ticks).

  9. clearprogress {filename} {amount of TICKS} {optional: Which character filename?} - Clears progress the given number of TICKS on the track in the given file (for the given character if Bonds, Discoveries, or Quests).

  10. setprogress {filename} {amount of TICKS} {optional: Which character filename?} - Set progress on the track in the given file (for the given character if Bonds, Discoveries, or Quests) to the amount of ticks, meaning the amount is out of 40.

  11. resetlegacies {optional: Which character filename?} - Resets all legacies tracks and XP earned to 0 for the given character.

  12. endprogress {filename} {optional: Which character filename?} - Makes the progress move and Fulfill Your Vow or Take Decisive Action on an objective (for the given character if Bonds, Discoveries, or Quests).

  13. createclock - Create a progress clock with popups.

  14. advanceclock {filename} {optional: # of times} - Advances the given clock the given number of times which defaults to filling one segment.

  15. setclock {filename} {segments to fill} - Takes an already existing clock and sets it to the given value.

  16. endclock {filename} - Marks the given clock as complete.

  17. oracle {question} - Ask a question and then select the oracle to roll from the popup menu.

  18. yesno {odds} {question} - Ask the oracle a yes/no question with the given odds.

  19. at {question} - Ask a question and get an Action/Theme result as an answer.

  20. df {question} - Ask a question and get a Descriptor/Focus result as an answer.

  21. ptp - Rolls on the oracle from the Pay the Price move.

  22. character - Rolls a full NPC with all the character oracles.

  23. faction - Rolls a full faction with all the faction oracles.

  24. sector - Rolls a full sector including planets and settlements.

  25. settlement - Rolls a full settlement using the settlement oracles.

  26. starship {region} - Rolls a full starship using the starship oracles in the given region.

  27. creature {environment} - Rolls a full creature using the creature oracles of the given environment.

  28. planet {class} {region} - Rolls a full planet of the given class in the given region.

  29. derelict - Rolls what you initially see at a derelict.

  30. vault - Rolls what you initially see at a precursor vault.

  31. mech - Adds a generic blue "Mechanics" box if there are some other random game mechanics that you want separated from the fiction.

  32. sh {move initials} {optional: character file name} - returns an automatic strong hit for the given move and character. Giving no character file name defaults to the first character in the Characters folder.

  33. wh {move initials} {optional: character file name} - returns an automatic weak hit for the given move and character. Giving no character file name defaults to the first character in the Characters folder.

  34. miss {move initials} {optional: character file name} - returns an automatic miss for the given move and character. Giving no character file name defaults to the first character in the Characters folder.

  35. stats {optional: character file name} - returns all the meter and stat values of the given character. Giving no character file name defaults to the first character in the Characters folder.

  36. roll {amount of dice}d{# of sides} - a generic dice roller that returns the sum of the dice rolled in the heading and the individual rolls in the body of the callout box.

Details of Individual Commands

  1. starforged_stats.sfile: This file contains several helper functions that you don't need to worry about as well as the following Inline Scripts commands.

    • impact {impact name} {optional: Which character filename?}: This command will turn on or off a condition such as Wounded or Traumatized. These are actually unicode open hex or close hex that live in the frontmatter of each character file, and this script flips the unicode symbol back and forth. NOTE: You must use Harmed instead of Permanently Harmed since frontmatter variables cannot have spaces in them.

      Example use: ;;impact wounded Char1


    • burnmom {optional: Which character filename?}: This command burns momentum for the given character and gives you a callout box to write out what this mechanically changed.

      Example use: ;;burnmom Char1


    • take {amount} {meter/stat/asset} {optional: Which character filename?}: This command adds to a specific meter like Health, stat like Iron, or an asset's track like a service module's Integrity or the Ammo on the Archer asset. It will make sure you don't go over the max amount. You use either the meter name (Health, Spirit, Supply, Wealth, or Momentum), stat name (Edge, Heart, Iron, Shadow, Will), or the asset name (Starship, Glowcat, Archer, etc.). This command used to be "gain", but I changed it to "take" so the command is the result of the move, like "take 2 Health".

      Example use: ;;take 2 Archer Char1 will add 2 Ammo to the Archer asset while ;;take 2 Momentum Char2 will add 2 Momentum to the character with filename Char2.


    • suffer {amount} {meter/stat/asset} {optional: Which character filename?}: The opposite command from above which will make sure you don't go below the minimum amount. If you need to lose more Health than you have, it will give you a message informing you so that you can decide if you need to lose more of something else (like Momentum) to compensate.

      Example use: ;;suffer 2 Momentum Char1 will subtract 2 Momentum from the character with filename Char1.

  2. starforged_moves.sfile: This file sets up shortcuts to use with moves. The commands are as follows:

    • getmovename {initials}: This is a helper function that you will never use directly, but it does explain how you need to reference moves. To use a move, use it's initials in the command unless it's only a single word move in which case you use the full name. This shortcut then expands it to the full name.

      For example, AYA will give "Aid Your Ally" while BATTLE is necessary for the "Battle" move. There are a few exceptions which are: - All the "Face Something" moves have the same initials of FD. Therefore, FD = Face Danger, FDEATH = Face Death, FDEFEAT = Face Defeat, and FDESOLATION = Face Desolation. - Fulfill Your Vow and Forsake Your Vow are both FYV, so they can be referenced with FULFILL and FORSAKE.


    • move {initials} {stat} {add} {optional: Which character filename?}: This command will be used frequently because it's how you perform moves. The {initials} were explained previously, but now you'll need to also give the {stat} you're using to make the challenge roll and an amount to {add} using 0 if there is no add. You also need to give it the character filename to pull the stats from if you have multiple characters. This returns a green callout box for a strong hit, orange for a weak hit, and red for a miss.

      Example use: ;;move saa wits 1 Char2 will make a challenge roll with Wits from the character with filename Char2 and an add of +1 on the Secure An Advantage move. ;;move compel iron 0 Char1 makes a challenge roll with Iron from the first character and no add on the Compel move.


    • moveref {initials}: Embeds a callout box with the text of the referenced move. This is incase you want to read the text of the move but not open a different note to do so.

      Example use: ;;moveref fd will embed the Face Danger move.


    • mech: Embeds a generic mechanics callout box in case you want to detail some mechanical consequence or action.

      Example use: ;;mech creates a blue callout box.

  3. starforged_progress.sfile: This file contains the commands necessary to interact with your vows, bonds, combat tracks, etc. Anything that uses a progress track should run through these commands.

    • createprogress: This command will create a new note in the Progress folder, apply the template, and use your inputs for the filename, name of the vow (or bond or combat), and the difficulty level.

      Example use: ;;createprogress will create a new progress track file in the Progress folder.


    • markprogress {either the filename that contains the progress track or use the one-word references of Bonds, Discoveries, or Quests} {amount} {optional: Which character filename?}: This command marks progress the given amount of times on the progress track contained within the given file. You give it the number of times to mark progress on a normal progress track (or the number of tick marks if marking Bonds, Discoveries, or Quests). For example, if you want to mark progress twice on a Dangerous vow, use 2 (progress) and not 16 (the # of ticks marked with two progress of two boxes each).

      Example use: ;;markprogress PirateFight1 1 will mark progress once filling in the appropriate number of tick marks depending on the Difficulty level of the vow.


    • clearprogress {either the filename that contains the progress track or use the one-word references of Bonds, Discoveries, or Quests} {amount of TICKS} {optional: Which character filename?}: This command clears progress the given amount of TICKS on the progress track contained within the given file. Some moves says clear progress boxes and others say units of progress, so I had to use the number of ticks. That means if it says to clear four boxes, you would use 16 ticks. If it's a dangerous vow that says to clear three units of progress, that would be six boxes meaning you would use 24 ticks.

      Example use: ;;clearprogress Bonds 2 Char2 will clear 2 ticks of progress on the Bonds track for the character with filename Char2.


    • setprogress {either the filename that contains the progress track or use the one-word references of Bonds, Discoveries, or Quests} {amount} {optional: Which character filename?}: With this command you can set any progress track to any value you need. The amount should be given in the number of ticks. That means for regular progress tracks it should be out of 40, and for Legacy tracks it should be out of 80.

      Example use: ;;setprogress Bonds 53 Char2 will set the Bonds track for the second character to 13 ticks becuase it rolled over at 40. It will also recalculate XP Earned at this time.


    • endprogress {either the filename that contains the progress track or use the one-word references of Bonds, Discoveries, or Quests} {optional: Which character filename?}: This command makes the final progress move to Fulfill Your Vow or Take Decisive Action on an objective and it marks the file as a completed vow.

      Example use: ;;endprogress PirateFight1 will roll the challenge dice and compare them to your current progress.


    • createclock: This command creates a new file in the Clocks fiolder to track a progress clock. Popup menus allow you to set the filename (like "Clock1"), a name for clock (like "Incoming Storm"), and how many total segments the clock should have (4, 6, 8, or 10).

      Example use: ;;createclock will create a new progress clock


    • advanceclock {filename} {optional: # of segments to fill}: This command advances the clock stored in the given filename the given number of segments. If not segments are given, it defaults to advancing the clock one pie wedge.

      Example use: ;;advanceclock Clock3 will advance the clock in the file Clock3 once. Alternately, you could say ;;advanceclock Clock3 2 to advance the clock twice (fill two pie wedges).


    • setclock {filename} {number of filled wedges}: This command sets the clock stored in the given filename to the given number of filled wedges.

      Example use: ;;setclock Clock3 7 will set the progress clock to have seven segements filled. If this is more than the maximum number of wedges you can have filled, it will set it to the max.


    • endclock {filename}: This command marks the progress clock stored in the given filename as complete. You can then add details as to what exactly this means in the callout box that is created.

      Example use: ;;endclock Clock3 will mark the progress clock stored in Clock3 as complete and then give you a callout box for you to add more details as to what the consequences of that are.

  4. starforged_oracles.sfile: This file contains all the shortcuts for rolling oracles.

    • getoracle {file path}: This is a helper function that you don't ever need to use. It is used by the other commands but needed to be an actual shortcut rather than a true JS function. The specific purpose of this function is to check for Action/Theme, Descriptor/Focus, or Roll Twice results and then substitute those new oracle results in.


    • oracle {question}: This command allows you to ask a question and then calls up the oracle selection menu where you can select the appropriate oracle.

      Example use: ;;oracle What is the next zone in the derelict? will bring of the oracle selection menu where you can select the appropriate Derelict oracle.


    • yesno {odds} {question}: This command is the basic Ask the Oracle move giving a yes/no answer based on the given odds. Use initials for the odds like AC = Almost Certain, L = Likely, FF = Fifty/Fifty, U - Unlikely, and SC - Small Chance. This does note results with a match and returns the number value rolled.

      Example use: ;;yesno FF Will there be hotdogs? answers the question with a 50/50 likelihood.


    • at {question}: Ask a question and get an Action/Theme response.

      Example use: ;;at What is the hidden agenda of the faction? will answer the question by rolling an Action/Theme.


    • df {question}: Ask a question and get a Descriptor/Focus response.

      Example use: ;;df What is the nature of the advanced technology? will answer the question by rolling a Descriptor/Focus.


    • ptp: Rolls on the Pay the Price oracle.

      Example use: ;;ptp gives a result such as "You are harmed" from the Pay the Price move.


    • sector: Gives a random sector including planets and settlements.

      Example use: ;;sector gives a full sector


    • character: Gives a new NPC including the Name, Callsign, First Look, Initial Disposition, Revealed Aspect, Role, and Goal.

      Example use: ;;character gives a full NPC


    • settlement: Rolls all the settlement oracles at once.

      Example use: ;;settlement gives a full settlement


    • faction: Rolls all the faction oracles at once.

      Example use: ;;faction gives a full faction


    • starship {optional: region}: Rolls all the starship oracles using results from the tables within the specific region (Terminus, Outlands, or Expanse). If you don't type in a region, it defaults to Terminus.

      Example use: ;;starship gives a starship in Terminus while the command ;;starship expanse gives a starship in the Expanse.


    • creature {optional: environment}: Rolls all the creature oracles for the given environment. If environment is left blank, it randomly rolls the environment first before rolling the rest of the oracles.

      Example use: ;;creature air gives a creature using Air as its environment while ;;creature gives a creature from a random environment.


    • derelict: Rolls the Location/Type, Outer First Look, Condition, and starting Zone of a derelict.

      Example use: ;;derelict gives the above listed oracle results.


    • vault: Rolls the Location, Outer First Look, Form, Scale, Material, and Shape of a precursor vault.

      Example use: ;;vault gives the above listed oracle results.


    • planet {class} {optional: region}: Rolls the oracles for a planet of the given class in the given region. Leaving the region blank will default to Terminus. If you want a random class of planet, type Random in the {class} section.

      Example use: ;;planet vital outlands gives the oracle results from a Vital planet in the Outlands while ;;planet random expanse gives a planet of a random class in the Expanse while ;;planet random gives a planet of a random class in Terminus sine no region is listed at the end of the command.

Support Folder

This folder contains all the Inline Script shortcut files. If you are making your own shortcut files, add them here.

Templates Folder

The Templates folder is necessary for creating new files with progress tracks. However, the Oracle, Move, and Asset templates were only used for importing JSON data and can safely be removed. You can also add any other templates to this file that you would like the Templater plugin to have access to.

Credits

All original Assets, Moves, and Oracles are from Dataforged, the official Starforged repository. Starsmith: Expanded Oracles, Starsmith: Mecha Merc assets, and Starsmith: Assets are my original works (available in PDF and print form on DriveThruRPG.)

Image, Map, and Stethoscope icons from Lucide

All other icons from game-icons.net by Delapouite, et. al.

This set-up only works with the Dataview, Templater, and most importantly: Inline Scripts plugins.

forged_in_obsidian's People

Contributors

ericbright2002 avatar pakoito avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.