Tabletop Simulator

Tabletop Simulator

Gloomhaven - Fantasy Setup (Scripted UI)
Suggestions for Updates
My group and I have been playing with this mod for a while, and I at least have some ideas for suggestions that could make it a little better.

1) Spots for additional little items. By 9th level you can hold 5 little items, but there's only spots for 3.
2) Quick add for Curse/Bless cards. A little button somewhere to add one of those to your modifier deck automatically would be nice. Maybe even in the battle interface?
3) Visual indicator of long rest other than in the text log. Like, a little icon between the two initiative cards or something? I keep having to double check the text log to make sure someone is resting.
4) Hotkeys for conditions. I actually wrote a little script for this myself, where it'll drop the token on a mini when I press a button (I currently have them gamekeyed to the keyboard numbers, which works until I try to draw cards). But something to make conditions a little quicker, especially since the stacks tend to be pretty far below the map. Could add to the battle interface as well buttons for adding/removing conditions from yourself.
5) A way to set the level of a monster mini. There are a couple scenarios where something is like a boss, but is described as an "X, but one level higher than the scenario level" or similar. I haven't been able to figure out a good way of accomplishing this; spawning a monster just matched the current scenario level, even if I changed it there. Maybe this could be an additional toggle when you click the health bar to switch between normal/elite?
6) Similarly, a way to change up the help texts that appear on monster minis. Occasionally, this will miss things like shield or something. I'd like to have a way to add that manually so that we don't forget.
7) Hover text over traps on the map to detail what kind they are, and a button on the traps to 'trigger' them, and remove them from the game.
8) Add a "Loot" action. Ideally, this would be context menu, but I'm not sure that's feasible with TTS current state. So, maybe another condition? Like, we can have a Loot 1, Loot 2, Loot 3, or Loot 4 condition, and when you have that condition and end your turn, you grab all coins/treasure from that distance away? We've kind of been grabbing all the coins and stacking them in the spot we're going to end our turn (because it's quicker than dragging it all to the mat), but a quicker way of doing that would be awesome.
9) I'd love it if the initiative GUI could show you the PC cards as well. Right now, we use PiP to see our own cards while looking at the map, But being able to see them in the initiative would be cool too.
10) Similarly, buttons in the battle interface to Discard/Active/Lose PC cards. Since buttons in PiP don't work, we still have to pan down to the game mat to get rid of them. Alternatively, maybe just discard anything still on the mat when "End Round" is pressed?
11) A short rest button on the gui. I left this for last because of the whole "take a damage to change your lost card" thing, which makes it a bit questionable, but I could see it working. One button to start short rest, then two buttons replace it, one to finish short rest, and one to replace the lost card and finish the short rest. This isn't huge by any means, but anything to speed up play.

Lots of ideas, mostly fairly small I would imagine. I really do like this mod, but as with anything you use fairly often, you tend to get these little "wouldn't it be nice if..."s going on.
< >
Showing 1-1 of 1 comments
Spitler Apr 8, 2021 @ 7:07am 
Hello,

some nice suggestions indeed, ive been working on some of them for our own save, and like to share. let me know if i have to post them elsewhere or do more stuff otherwise

2) Draw bless/curse
i just posted to another thread ( Adding Player/Monster Curses ) my code that does exactly that :)



3) visual indicator for long rest

indeed we find ourselves often waiting for someone thats long resting x) so we wanted a solution

heres a screenshot Potential spoiler? (i tried to remove all spoilers so theres only the play area and 2 base classes to see, but well..)
So you can see that the green player takes a long rest so the light goes on :) (and some more stuff ill return to below ..)

i used the pointlight from the mod Lights.
they are placed beneath the played-cards spots (between the active/discard/lost buttons) for each player
at y=1.7, z=-27, and x= {-15,-7.75,7.75,15,22.75} (we play an adapted version of the 5player-mod)
given range=1, and the respective player colors

They are handled using two functions in global.ttslua
function setSpotlightOnOff( color, onoff ) -- Note color is the color of the player local onIntensity = 30 local offIntensity = 0 -- Set obj spotlight_obj = getSpotlightObject( color ) -- Set Intensity if onoff == 1 or onoff == 'on' then intensity = onIntensity spotlight_obj.addTag( 'on' ) spotlight_obj.removeTag( 'off' ) else intensity = offIntensity spotlight_obj.addTag( 'off' ) spotlight_obj.removeTag( 'on' ) end spotlight_obj.call('setProperties',{intensity=intensity}) end function getSpotlightObject( color ) local spotlight_obj_guid if color == 'Green' then spotlight_obj_guid = 'ad0e99' elseif color == 'Blue' then spotlight_obj_guid = '039549' elseif color == 'Red' then spotlight_obj_guid = '2f23e0' elseif color == 'White' then spotlight_obj_guid = '11dbc7' elseif color == 'Purple' then spotlight_obj_guid = '8cc28c' else print("color "..color.." not found!") end spotlight_obj = getObjectFromGUID(spotlight_obj_guid) return spotlight_obj end

Note you have to add the light sources and then hardcode the guids in the function getSpotlightObject()


Now, the function longRest() in global.ttslua, line ~550, is adapted with the following (some more notes below)
function longRest(player, value, id) local color if id == nil then color = player.color else color = id end local class = getClassFromColor(color) -- check longresting local found = false for k,v in pairs(tableInilist) do if v[3] == class and v[1] == 99 then found = true tableInilist[k] = nil -- delete break end end if found then broadcastToAll(class .. " is Long Resting no more.", colorToPlayer[color].color) setSpotlightOnOff( color, 'off' ) else broadcastToAll(class .. " takes a Long Rest.", colorToPlayer[color].color) table.insert(tableInilist, {99, 99, class}) setSpotlightOnOff( color, 'on' ) end end

and at the start of the round, all lights are turned off
in global.ttslua, function reveal(), line ~190, after the broadcastToAll(new round started..), in the for loop over the players
add: setSpotlightOnOff( colors, "off" )

> Notes:
first, note that the function longRest() has been adapted such that if you press the button again, the longrest is undone. (! very useful imho)

second, you may notice the "Ready" button in the battle interface (in the screenshot). This is to indicate to the other players that you are .. ready :) (sometimes you put cards/longrest but are still thinking/listening to fellow players). for example: in the screenshot, the blue player has put cards and is ready
it calls the following function, turning the light on/off (in global.ttslua)
function setReady(player, value, id) local color if id == nil then color = player.color else color = id end spotlight_obj = getSpotlightObject( color ) if spotlight_obj.hasTag('on') then setSpotlightOnOff( color, 'off' ) else setSpotlightOnOff( color, 'on' ) end end



6) missing help-text on minis

yes, we notice this happens mostly (exclusively?) when "summoning" monsters by hand (i.e., drawing them from the deck)
our "workaround" is to click on the healthbar, then on normal/elite (whichever you want) then the help-icons appear :)
Last edited by Spitler; Apr 8, 2021 @ 7:18am
< >
Showing 1-1 of 1 comments
Per page: 1530 50