It's now later. Suck it up.
This should be enough for most encounters, and if it's not, well, tough tuckus. Said board is fully customisable, the Fortress Master can place NPCs at his leisure ("or her leisure." - "Shut up, Stan."), walls, objects and whatnot. Actually, the Fortress Master does everything. To prevent cheating, the client side is not interactive. That also decreases the network load and of course the amount of coding for me, for various reasons I will not name here.
Every tile can be assigned a name, a sprite and a level. For ease of use, tiles can be moved about the board with WASD rather than removing one and remaking it one tile over. That sounds tedious.
Any encounter can be saved to a .ini file, which can later be loaded or shared with others if one feels his encounter was just so. Very. Good. Saving an encounter is also the only thing the Client can actively do, if he finds a reason for it anyway. Saved are the background, all nonstandard (read: not empty) tiles, their levels and names. In other words, damn near everything.
Throwing dice is an integral part of DnD, and thus of TnF. But, throwing dice has many downsides: They can fall off the table, adding the numbers can take a long time if you're stupid (and oh, I know such people)... so, TnF comes with a handy tool that allows throwing X dice with Y sides, adding Z (e.g. 2d10+6) at the press of a button (seen in the upper right hand corner of the screenshot). I considered transmitting the result to the Clients, but... nah.
Area effects, you know them. It's not like a grenade only hurts if it directly hits you in the groin, it also hits you when, you know, you're standing too close. Both FM and Player get this feature, but it's usefulness is up for debate, since, well, the only objects that actually display such a radius are the Demoman's sticky bomb and the engineer's dispenser (though the latter for decidedly less lethal reasons, if you're on their team anyway.)
Fairly obvious if you think about it. Changes to the board can be transmitted to the players in two ways: Pressing Space, or activating this feature: Every four seconds, changes will be transmitted. As opposed to manual transmission, however, not the entire board is sent, literally only what is different. Which is decidedly less convenient for late players, as they would only see what's new, not the room itself. Auto Update is to be activated after the encounter was first set up and deactivated when a new one is built as to not show everything just a hint too early.
I can think of plenty of additional features. Most of them would be rather simple to implement, others not so much. More on that later, if I ever add any more. It's not exactly necessary: Practically everything needed to play is in there I assume.
- LMB: Choose sprite/Place sprite (and everything menu related)
- Shift+LMB: Change name
- Up/Down: Increase/Decrease level by 1
- Right/Left: Increase/Decrease level by 5
- RMB: Clear tile
- Return: Clear board
- PGUP/PGDWN: Next/Previous background
- Mouse Wheel: Scroll sprites
- WASD: Move tile
- Space: Send board to players
Not quite yet. Sorry.