Source: If Error Throw New Brick
The issue reported here has been debugged and fixed. The short answer for those not interested in the details is that I was using an API in libtcod wrong and that API was doing the wrong thing and corrupting its internal state. Get the newest libtcod-net here.
For those who are more technically minded, here's the story.
In between libtcod 1.5.0b2 and 1.5.0rc1, the C API changed for creating
Source: If Error Throw New Brick
Update: See this for a solution.
I've spent half of today debugging this issue. It appears that there is an issue I'm hitting in magecrawl where a TCODRandom gets stuck in a state where it returns 0's for every GetRandomInt call. I'm working with the maintainers of libtcod, but it appears the issue is one underlying libtcod itself.
The workaround is to use the constructor that takes an enum
Source: If Error Throw New Brick
libtcod-net 1.5.0rc1 has been released (same day as base library libtcod itself may I add :) ).
The major changes include TCODPathFinding being removed. It's been split up into TCODAStrPathFinding and TCODDijkstraPathFinding. This is obviously an API break, but one that can be replaced with a simple find a replace. Beyond that:
TCODSystem::GetCurrentFontSize
New random number generator type and
Source: If Error Throw New Brick
(Your regularly scheduled roguelike posts will continue after this brief announcement.)
Magecrawl uses libtcod-net heavily both for graphics display and in the game engine (pathfinding, LOS, etc). libtcod-net is just a thin c# wrapper layer around libtcod that I wrote before starting Magecrawl.. I think for any new roguelike, written in either in a managed or unmanaged language, libtcod is a