Actually, after struggling with some characters against Morgoth in my variant, EVEN with PWMAngband's slowdown at 5k, I think the slowdown should "match" the base speed for questor monsters at their base depth. Remember that faster doesn't mean that YOU act faster, since idle turns are WASTED turns in real-time. If at your speed you act every 0.5s and press a key after 0.45s, you get a turn. If you INCREASE your speed to act faster and your speed allows you to act every 0.4s and you press a key after 0.45s, you lose a turn and actually act after 0.8s! Of course, Morgoth won't wait for you and get his turn... without wasting any of course!
Let's consider the two questors in MAngband: Sauron and Morgoth. To make the fight against them "fair" and not a matter of reflexes, you should be able to act at the same speed you would do in town, which is already a bit faster than the first few levels in the dungeon. The formula to compute the duration of player and monster turns is the following:
turn duration = energy to accumulate for a turn / (FPS * energy accumulated each frame) = 5 * value of level_speeds at current depth / (75 * value of extract_energy at current speed)
Players and monsters in town while unhasted will act every 5 * 75 / (75 * 10) = 0.5s, which is a good value for a standard turn. Now let's consider a Fast+20 monster at 4950ft (Sauron) and a Fast+30 monster at 5000ft (Morgoth). We'll assume that level speed below 5k is the same as for 5k.
Current MAngband turn duration (Sauron) = 5 * 200 / (75 * 30) = 0.44s
Current PWMAngband turn duration (Sauron) = 5 * 228 / (75 * 30) = 0.51s
Energy value for a standard 0.5s turn for a Fast+20 monster at 4950ft = 0.5 * 30 * 75 / 5 = 225
Current MAngband turn duration (Morgoth) = 5 * 200 / (75 * 38) = 0.35s
Current PWMAngband turn duration (Morgoth) = 5 * 230 / (75 * 38) = 0.4s
Energy value for a standard 0.5s turn for a Fast+30 monster at 5000ft = 0.5 * 38 * 75 / 5 = 285
For Sauron, the slowdown is almost perfect. Using PWMAngband's value would work well without slowing down characters too much (you need to have +20 speed to walk/run like in town, which is normal for that depth). For Morgoth, the only problem is that many players don't really pump speed over +30 unless actually fighting Morgoth. This means that the slowdown at 5k and below should probably occur only when Morgoth is on the level to avoid getting annoyingly slowed while diving for xp or loot.
An updated table for level speeds would be something like :
Code: Select all
u16b level_speeds[128] =
{
7500, 9000, 9100, 9200, 9300, 9400, 9500, 9600, 9700, 9800, /* Town - 450' */
9900, 10000, 10000, 10000, 10000, 10000, 10100, 10200, 10300, 10400, /* 500' - 950' */
10500, 10600, 10700, 10800, 10900, 11000, 11100, 11200, 11300, 11400, /* 1000' - 1450' */
11500, 11600, 11700, 11800, 11900, 12000, 12100, 12200, 12300, 12400, /* 1500' - 1950' */
12500, 12600, 12700, 12800, 12900, 13000, 13100, 13200, 13300, 13400, /* 2000' - 2450' */
13500, 13700, 13800, 13900, 14000, 14200, 14300, 14400, 14600, 14800, /* 2500' - 2950' */
15000, 15200, 15400, 15600, 15800, 16000, 16200, 16400, 16600, 16800, /* 3000' - 3450' */
17000, 17200, 17400, 17600, 17800, 18000, 18200, 18400, 18600, 18800, /* 3500' - 3950' */
19000, 19200, 19400, 19600, 19800, 20000, 20200, 20400, 20600, 20800, /* 4000' - 4450' */
21000, 21200, 21400, 21600, 21800, 22000, 22200, 22300, 22400, 22500, /* 4500' - 4950' */
22500, 22500, 22500, 22500, 22500, 22500, 22500, 22500, 22500, 22500, /* 5000' - 5450' */
22500, 22500, 22500, 22500, 22500, 22500, 22500, 22500, 22500, 22500, /* 5500' - 5950' */
22500, 22500, 22500, 22500, 22500, 22500, 22500, 22500 /* 6000' - 6350' */
};
In this case, the slowdown stops at 4950ft with a turn every 0.5s at base speed of +20. When fighting Morgoth, just add some "special fight" energy (adrenaline?) to the level speed to get a turn every 0.5s at base speed of +30.