A downloadable module

Buy Now$4.99 USD or more

šŸŽ² Foundry

Foundry is a virtual tabletop for online role playing games. This module requires a Foundry license and a live instance stood up. Instances can be self-hosted or subscribed to from a service provider (e.g. The Forge).

šŸ–³Terminal

A customizable interactive terminal from which players can read and reveal journal entries. Works great in any Sci-Fi or modern settings.

šŸ“ƒ Usage

1. Create a new tile

2. link any journal entry to the tile using the Terminal tab and check the "enabled" checkbox also found in the Terminal tab.

3. walk onto the tile with any token. This will open a UI which allows players to interact with the pages of the Journal in an immersive way.  

šŸ”Ž Details

If the player lacks permission to the Journal they will be given Observer. Upon leaving the tile they will be prompted to share the Journal with their party. If they do the Journal will become Observer for everyone.

This works as an alternative solution to map notes. I personally found map notes to be annoying in that they could be easily misconfigured with permissions or not even viewable when checked off from the controls. This solves both those issues by handling permissions all automatically and when you give the tile a custom image it integrates with much greater immersion.

See the project website for more details

 

šŸ•¶ļø Preview

Want to see demonstrations?

Here is the major features of version 2.0


šŸ”‘ Access

This content is purchasable right here (creating an account is not required and PayPal can be used). Once purchased enter your key into your Foundry account you have permanent access to the module as well as any future updates for free.

For extra details on how to add keys follow Foundry's guide. Expand the section for "Content Key" and follow the listed steps.


šŸ“° Updates

You can follow me for updates, Following my account will give you emails for any future updates. As well as emails about new projects I create. If you do not want to create a itch.io account you could also use a GitHub account and watch the repo for immediate emails about new versions.


Purchase

Buy Now$4.99 USD or more

In order to download this module you must purchase it at or above the minimum price of $4.99 USD. You will get access to the following files:

mod
External

Development log

View all posts

Comments

Log in with itch.io to leave a comment.

Hi!

I just bought your module - but sadly immediately ran into a problem. The "click style" link to journal entry wonĀ“t work with monkĀ“s enhanced journal. At least it seems so, because when monk is active, i canĀ“t click a journal entry. But when i disable monk, it works. Is it just incompatible all in all or is this just for me now? Is it possible to activate the "old style journal select" as i saw in a video?

Thank you! :)

Definitely can try and get that fixed for you. I unfortunately was not able to replicate that on my end. I tested in V12.

Iā€™m guessing our setup is different.

Go ahead and use ā€œReport a Bugā€ button. Itā€™s fine to leave the content blank. This will email me more information for your system (e.g. Foundry version, modules, browser).

Thank you! Will send it <3

Just a small heads-up i did not notice (yeah, iĀ“m blind) At the loading of the module, libwrapper says "Terminal and Monk Journal modify the same FoundryVTT and ar more likely to conflict". 

But also. i use V11 of foundry for cyberpunk red. Is it possible to use an older v11 version for the time being? May spare you some hassle - but this bug could raise up again.

(1 edit)

Oh that explains it. I have a fix for this in v3.1.4 but that requires a minimum Foundry of v12.

Iā€™ll put out a fix that you can download for this later today

EDIT: itā€™s released under 2.6.8 should fix your issue.

It works! Thank you very much for this fast support. Awesome! :)

(1 edit)

This module is so cool!
I recently made a very poorly looking  and poorly scripted module (im not a developer) that allows players to see what im writting in real time? Kind of in like the matrix/hulk movie where the terminal has someone on the other side typing and you can see it, this is a way they communicate with an ancient AI on their ship! 

I would love it if that was a possibility to add into your module! It's like an oracle cause sometimes i don't reply to them and my players get so excited when i do lol.

Regardless, this is super cool and you made my life 100000x easier

That sounds cool. I do think there is another module (itā€™s free) which does something like what youā€™re describing. Have you seen console? Let me know if that works for you.

(1 edit)

Ah! Thats such a cool module thank you for the recommendation
The one i made has like real time updating on their screen as i type with like a decrypting animation as i type but this one also works super well!

These 2 combined will be so cool to use for my game im so excited. 

Do you happen to know more cool sci-fi themed  modules specifically that are cool to use? Im very new to foundry and i would like to browse some cool stuff for my players!

Also no pressure if not! Still getting to know more people in the community and trying to be less awkward about asking haha ā¤ā¤

(6 edits)

I havenā€™t found any free sci-fi modules. Most Foundry games are fantasy games and the module community reflects that. There is a map module I created, which is free, found here. I wrote up what I use for my modules:

A good piece of advice is to not download any of these but first see what you are needing. Definitely donā€™t install a module I put in the ā€œhard to setupā€ category without knowing that you need something like that first. Your time is precious as a GM, and creating sessions is time consuming.

Essential

  • Dice so nice! = essential!
  • Zoom/Pan Options = Gives touchpad users a nicer way to pan (they have to select touchpad in the settings)
  • Monkā€™s player settings = better manage settings, can set player module settings for them by using the ā€œall playersā€ dropdown

Easy and low risk

  • carousel combat tracker = adds a portraits for each combatant
  • Quick Insert = my previous search tool, I now use ā€œSpotlight Omnisearchā€ (seen in next section). This one works great. Iā€™d also recommend turning on Journal indexing. The only reason I switched to Omnisearch is because it can index headers in journal pages.
  • Tile Scroll = create incredible parallax effects, moving background effects.
  • Sweet Nothings = adds a UI and a shortcut (alt+w) for players to whisper and reply to each other in secret
  • Popout! = allows windows to be popped out, useful to add the PDF of the rules. Then pop that window out
  • Monkā€™s Active Tile Triggers = best scripting module
  • minimal UI = gets rid of Foundry logo and changes things for a cleaner look.
  • Mass Edit = adds a shortcut (shift + e) to edit multiple items at once on the scene

Either hard to setup or have a risk of unintended behavior

  • Spotlight Omnisearch = An alternative to ā€œQuick Insertā€ I really like this one but the defaults are not great. I change the shortcut to ctrl + shift + space. I change click to dismiss on. I toggle on Full Compendium Journal Index. I donā€™t recommend this one unless you also install ā€œMonkā€™s player settingsā€. Because players will join without click to dismiss on, and have trouble getting rid of the popup. Using that setting module you can ensure nothing annoying happens with this one. Once through all that I transcribe the important rules of the system into journal pages. This takes hours but is amazing during games. For example, if I donā€™t remember what ā€œstunnedā€ does, as long as you write it as header in a observable journal page. Anyone can search and can jump to it with tab + enter. My players use it all the time in a complicated game system like Lancer. Which is ideal really to have your players empowered to be able to answer questions themselves.
  • Splatter = blood effects, can sometimes need you to set how it reads the actorā€™s health. For example in Alien Game System I needed to use ā€œheader.health.valueā€
  • Moulinette Core = dependency to tiles
  • Moulinette Tiles = allows me to drop images down as tiles easily. The setup process is a real pain. But now that itā€™s setup I use it all the time
  • Token Action HUD Core = I only recommend this one if you can find the complimentary ā€œToken Action HUD for $GAME_SYSTEMā€. Adds quick access buttons the common actions
  • Shared Vision = I generally want allies to see what other allies see, this module adds that ability (I set it so tokens that are friendly have shared vision)
  • limits = I donā€™t like the default way that lights can be seen from any distance, I use limits to limit this
  • item piles = can put lootable items on the scene
  • chat reactions = players can use emojis and custom reactions to things in chat
  • automated animations = if an itemā€™s name matches something here, and the user has a token targeted, the animation is used

Settings

  • carousel combat tracker = set size to x-large (this is not a global setting, needs to be done per machine or use ā€œMonkā€™s player settingsā€)
  • Core Foundry Setting > Permission Configuration = disable GM mouse cursor (just needs to be done by GM)
  • Shared Vision = TOKEN.FRIENDLY = Vision (just needs to be done by GM)

These are more optional but I like these changes too: change action hud size. popout to only show icon. Minimal UI to auto hide player list, start navigation as visible, set control sub-menu to auto-hide plus

shortcuts

  • 1-5 = run the macro on the hotbar
  • alt + 1-5 = switch macro page
  • ctrl + drag = measure (need to be on token controls)
  • alt + drop = places hidden token
  • shift + c = focus chat

Useful sites

  • token maker
  • free ai images (they rate limit you to about ~20 few days)
  • find the Discord for your game system. There is usually a resource hub. Where you can find more useful resources

Patreon

While there are no sci-fi modules I know of. There are several sci-fi patreon battlemap creators.

Tips

I usually have a journal with rules, tips, and other helpful things for my players. Here is what those look like. You can toggle the source mode for a journal and put the html code in to copy these

  1. messaging html code | preview
  2. rolls html code | preview
  3. tips html code | preview

Something in the works

I do have another module Iā€™ll probably release this year. Related to Sci-Fi map generation (map as in travel map, not battle map). So, give me a follow on Itch for future updates on that.

Ah! Definitely following and i don't mind paid modules either.
Thank you so much for taking the time to put this list together!! I super duper appreciate it im so excited to see what else you make!

Super appreciate all the help.

Is there a way to easily pass the id of the user who activates a macro in the terminal?

I creating a tunnelling thing where the players can try and hack each others networks and connect to other terminals but skip over their target's terminal.

(2 edits)

I think the issue you might be getting is because Terminal uses a GM proxy for macros. If Iā€™m understanding right, I think you would be able to do what you want if the macro was simply ran on the userā€™s machine.

If thatā€™s the case, there is currently one way to run macros from Terminal without a GM proxy. This requires Foundry V12+ as it uses Regions.

  1. Create a Region, make sure its in a location no users can access, so as to avoid this going off when you donā€™t want it.
  2. setup the region as shown in the picture (left & top right windows)
  3. Then open the ā€œTrigger Regionsā€ button on Terminal. Link your Region to the Terminal (bottom right). Simulate the same event found in the behavior you created.
  4. Make sure the chosen macro is given observer for everyone.
  5. Youā€™re done, a new button will show in Terminal which can run macros on the Userā€™s side.

from there you can get the userā€™s id with game.user.id

Again, not totally sure if Iā€™m on the mark here. So, let me know more details if this isnā€™t what you had in mind.

Thanks for the reply. That would work but the macro I'm running needs arguments, mainly the target the macro pulls the shhs from. So I need a way to pass the user who is controlling the terminal to the macro which runs the gm side and emits the terminal for the user.

I know Monk's Active Tile Triggers has a way to do this but I already have a Run Triggers Button active and I don't want them to run at the same time.

(1 edit)

Gotcha. I think itā€™s about time I add a checkbox to allow my core macro feature to be optionally ran user/client side.

You can track progress here. Probably going to be a month before I get this change out.

An option to allow a macro to be ran by triggering player is in latest version.

However, Iā€™m bundling it with some other things which Iā€™m only planning on supporting Foundry v13+ with. So, it might be awhile but the feature will be waiting for you for when you upgrade to v13

Thanks so much for this awesome module! I have been trying to figure out a way to activate a terminal when clicked rather than when a token enters the tile. Is this possible? 

(+1)

There sure is, Terminal includes macros that can do this for you. This does require the use of Monkā€™s Active Tile Triggers as there currently is no way to supply arguments to macros in Foundry

Iā€™ve written up a guide that can walk you through how to run the included macros here

Idea: Would it be possible to get it to handle more than one secure shell? I'm thinking like doors. That way we could make it network and have like terminal-dungeons. :D

(9 edits) (+1)

You could do this in one of two ways.

The simplest is to chain the Terminals together. So, each Terminal can Secure Shell to the next one.

The more complicated way requires some scripting but Iā€™ll walk you through it. This way also requires using Foundry V12+, since it uses Regions. This will create a one-to-many relationship of Terminals. Youā€™ll need to create a new Region. Keep the Region in an area players canā€™t get to, it will only be used for scripting. Then create a ā€œRun Scriptā€ Behavior. For an example see the screenshot below. I created 2 Run Script Behaviors and renamed them to ā€œOpen Terminal 1ā€ and ā€œOpen Terminal 2ā€. I have the code later which youā€™ll want to enter for each Behavior.

Youā€™ll want to have each of your behaviors use a separate ā€œSubscribed Eventā€. For mine I used ā€œToken Entersā€ & ā€œToken Exitsā€.

Now we need to link these Event Behaviors to the parent Terminal. Open the tile config for your main Terminal tile. Then open the Trigger Regions window (see screenshot below of the opened window). Add the new Region. Youā€™ll want to add it multiple times (since Iā€™m only linking two Terminals, Iā€™ll add that same Region twice).

Then to finish the link, we need to edit the ā€œSimulated Eventā€ field to match, one to one, with those Behaviors we created. So, for me thatā€™s the ā€œToken Entersā€ & ā€œToken Exitsā€ events.

I know this gets a pretty complicated and likely confusing. Try and match what I have in the screenshots as best you can to just get it working.

What this does is every Region thatā€™s added here will become a button in the main Terminal. The button will simulate your chosen Region event. This trigger all Behaviors that are subscribed to that event (in our case itā€™s one-to-one). Since the Behaviors are script Behaviors this runs the code you have in the Run Script field.

Now, that everything is linked letā€™s go back to your ā€œRun Scriptā€ Behavior. You need to actually define the code to run. Copy this code into a notepad:

const TILE_UUID = "PUT_YOUR_TARGET_TILE_UUID_HERE"

const terminalOpen = Array.from(foundry.applications.instances.values()).find(a => 
  TILE_UUID === a.context?.tuid
)

if (!terminalOpen) {
  new Terminal(TILE_UUID).render(true)
}

Replace the TILE_UUID variable with any one of the target child Terminalā€™s UUID. Then enter your edited code into the Behaviorā€™s Script field. That finishes one Behaviorā€™s ā€œRun Scriptā€ but we have multiple. For each child Terminal you want to link, update the TILE_UUID each time and paste your code into a different ā€œRun Scriptā€ Behavior.

That should be it. There are only a few extra considerations. This bypasses validation on your Terminal settings. This bypasses the initial Item and Skill checks (password should still work).

Eventually Iā€™m sure Foundry will support running Macros with arguments from Regions and this will be simpler but that isnā€™t happening anytime soon.

This works perfectly. It's not the simplest way, as you say, but it does the job!

Not understanding a word of code for this, what's the obstacle for making secure shell-function work like doors? I.e. you can just stack as many as you want in the same "secure shell"-function and it will just add more buttons in terminal.

(1 edit)

Thereā€™s two issues. Once is single entry variables are significantly simpler code wise to manage. Usually once you start using lists of entries, it takes doubles the lines of code.

Second, Iā€™d have to write a migrator script. Which would check for if any Terminalā€™s have the deprecated solution. Then migrate the data if they are. These make me a little nervous because itā€™s easy to accidentally code a bug for scripts like this (I wrote a similar one for v3.0,0 when Foundry V12 came out).

That being said, I will look more into this feature.

(2 edits)

Love the mod! Love it to bits. One problem with latest update though.
If one demands a password to log in, the window gets borked. I will provide an image.
This is regardless of style or theme. (Seems to work still with Alien Wayland, but afaik that's the only one)

(1 edit)

Looking into this!

EDIT: should be fixed now in v3.1.7 thanks for the report

Fixed it right up! Thanks a ton for the fast reply. Campaign starts on sunday. <3
Got this error when I updated the mod, don't know if it's a biggie, since the mod works.

Nice, no rush on this but if you have a GitHub account can you open up an issue here. That way we can get all the details.

Hey I reached out on discord because of an issue I am having. I cannot get the select journal dialogue to open when I try linking the terminal tile to a journal 

I changed the way journal linking works. Youā€™ll need to click the journal in the sidebar.

I just wanted to say, this is exactly what I was looking for. I've been struggling to find a terminal type asset that was customizable and I'm not a programmer by any means, this has taken care of all of that. Thank you, thank you, thank you!

šŸ˜Ž

Would the splash screen be able to also display images (whether in ascii art or just normal)? or allow for custom animations/designs to be imported into it?

I could see this working like a book/dream/vision for the player and they will see the title of the book, or have some neat image/animation for the splash screen (when dream/vision) then the information will be presented to them.

That would allow for more system agnostic setup as well, and allow for some fun roleplay and information gathering or backstory reveals, etc.

(1 edit)

The modules supports a large amount of customization. These are some of the things already in the module:

  • You can set the background to an image or video
  • you can define your own ASCII for the splash
  • you can define the colors for most things
  • you can set your own border for the window.
  • the audio for click, login, logout and ambient can be set

With these you should be able to get a theme close to what your describing.

I could put it on my list of things to look into for specifically defining a splash video. Which is only shown on startup and then would change to the standard background in use now.

(6 edits)

I have added a splash media setting that you can find on the style form. It has two ā€œmodesā€.

  1. If you upload a video it will replace the loading bar and ASCII entirely

  2. If you upload an image it will use that as a background while keeping the standard ASCII and loading bar

I still need to add more layouts, text animation, and default styles but itā€™s getting there.

EDIT (4 months later update): this behavior is NO LONGER TRUE as of 3.1.6+ (October 2024). Showing the ASCII art + Loading bar is now its own configurable setting in the style editor. Regardless of the file type used for the splash.

Awesome!, I will have to try it out soon. havent had time to install and setup foundry for sometime now. but will definitely check it out :)

I wonder if you could shed some light on a little problem I'm having. I'm trying to set up a terminal with a macro button that switches the enabled status of two other terminals sharing the same space, one for "power offline" and the other for "power restored". So the Generator terminal would execute something like

canvas.tiles.get("id of tile").document.flags.terminal.enabled = true/false

to turn on one and disable the other. And this works, but only so long as a token remains on the generator terminal. I can't seem to make the change stick once the token moves off.

(1 edit)

Thatā€™s a cool implementation. I havenā€™t actually tried placing them on top of each other like that.

For updating the flags youā€™ll actually want to use Foundryā€™s setFlag() function. This is present on the document object of the tile.

Here is an example:

canvas.tiles.get("id of tile").document.setFlag("terminal", "enabled", false)

Let me know if that works better.

I am eventually adding a feature to open other Terminals. Itā€™s good to hear there will be some demand for that.

EDIT: this feature has been added by the name ā€œSecure Shellā€. There is also included compendium macros that can be used for opening a Terminal.

Hey, with your advice and a *little* help from the foundry discord I got it working to the point where I can even switch on a terminal in another scene:

const tile1 = game.scenes.get("other scene ID").tiles.get("tile ID");

const state1 = tile1.getFlag("terminal", "enabled") ?? false;

await tile1.setFlag("terminal", "enabled", !state1);

Using it again turns the remote terminal back off.

Thanks for your help, I love this little module! My Alien games are about to get much more interesting.

(1 edit)

Hey, can this be used to reveal the foundry scene map to players? thanks!

(1 edit)

Yes, when configuring the Terminal inside the Tile config. There will be a checkbox to add a button for any user that views the Terminal UI. This button when clicked will explore all the Fog of War for the current scene for all connected players.

Let me know if you have another other questions šŸ™‚

As a warning if you like to stay on the latest Foundry version I have yet to find a way to make this feature work on the unreleased version 12 (Which wonā€™t come out for another couple months). I reached out the Foundry devs but it doesnā€™t seem like they are going to help me find a solution to it. There are APIs I can hook into but they get complicated very fast.

So, just something to be aware of. This feature may only be here for a year if you stay on latest Foundry.

Thank you for the answer!
I hope you'll find a way to port the feature over to v12, as while it may be a while before i update to that (i'm the kind of guy who will update to v12 once v13 is around the corner basically), i will eventually do it at some point..
Hopefully the devs or someone else will be able to point you to the right direction!

I have a prototype of this working in v12. This feature is here to stay!

This was the last feature to be ported to v12 so this module is ready for whenever that happens.

This is great news!
Do you have any plans for new features to add maybe? i was thinking the other day it would be fun to have a foundry module that could provide some "hacking minigame" for the players to resolve, such as the ones that you can see in Alien Isolation, but i have no idea how feasible that would be lol

(1 edit)

I have a couple things brewing for new features. The three certain ones are related to cameras, passwords/keycards and lights.

Iā€™m implementing/taking some ideas from Starfinder. Which Iā€™ve never played but find their mechanics around terminals to be interesting. This includes things like: lockouts, alarms, data wipes, encrypted pages, accessing other computers from your current one.

Iā€™m going to be spending some time to see what is feasible from these ideas.

As far as puzzles or minigames Iā€™m a bit torn because that is a great idea. Even one I listed as a stretch goal on my github page for this.

However, it runs into a problem I havenā€™t really thought of a solution for. It steps on whatever game systemā€™s solution for accessing computers is. I donā€™t know a good solution around this, which has halted my progress on that.

Is it possible to use this module with Monk's Active Tile?

(+1)

Yes it is šŸŒž I do it all the time and would recommend.

How can I use Terminal with Monk's Active Tiles?

(1 edit)

thereā€™s a foundry guide

You can go to the setup screen of your Foundry instance. Go to the Add-on Modules tab. Click install modules button. Search ā€œMonkā€™s active tile triggersā€. Click install button.

Then in a world as a GM activate the module on the settings sidebar.

You can now place a tile and a new tab will be shown in the tile config. Itā€™s called triggers and there are numerous settings for how things can be configured at that point.

I think you misunderstood what I asked. I was asking how can I use Monk with Terminal. As in, is there a way to use Monk's to open the terminal or not

(5 edits)

I see what you mean. Well there wasnā€™t until today. Iā€™ve pushed a 1.3.3 version that can support this.

I am now exporting an instance of Terminal to the window. That means it can be opened with a macro and triggered with that by Monkā€™s Active Tiles.

This is a bit experimental since it loses a few features this way compared to having your players just walk onto the Terminal tile, so proceed with caution.

~~So, here is what youā€™ll need to do. You should create a macro and give it this contents (replacing the journal and tile ID)~~

~~Then add a trigger onto whatever tile your using to run the macro and it should open it. Keep in mind this macro must be ran by whoever you intend to have see the Terminal. It only opens up for the client that triggered the macro.~~

EDIT: I now have a supported macro which comes in an included module Compendium. For steps on how to use that. You can see the wiki