I just published the repository for Fsil, a little tool I've been writing for fun (and because I like to obsess about weapon and ability choices). Bug reports or other suggestions are welcome; it should be usable, but it's unpolished and hardly exhaustively tested.
From the README:
"Fsil is a simple fight simulator for the roguelike Sil (see
http://www.amirrorclear.net/flowers/game/sil/index.html). Apart from
wanting to get a bit of practical Haskell experience (this is my first actual
program) and play with the probability monad, I wrote Fsil to help answer
questions like the following:
-Should my character use this weapon or that? Two-handed or shield?
-Should I take subtlety?
-How risky is it for me to fight this monster in one-on-one combat?
-What are my odds of oneshotting this sleeping monster?
Fsil takes a Sil 1.1.1 character dump file and the name of a monster, and
computes approximate probability distributions for a few quantities:
-The amount of damage that the player deals to the monster in a single round
(both in terms of absolute damage and as a percentage of the monster's
maximum hitpoints)
-The number of extra damage dice that the player gets from critical hits
-The amount of damage that the monster deals to the player in a single blow"
Currently you need to compile it from source (quite easy; the README has instructions), but I could compile binaries for Windows and OS X if someone wants to play with this without having to install the haskell platform.
Here's some sample output pitting one of my former characters (the dump is included in the fsil repository) against a sleeping young cold-drake:
The first two tables are for the cold drake's two different attacks (bite and claw I think).
I gave my character a melee bonus of +5 to simulate Focused Attack. It's clear I'm nowhere near one-shotting, but I would deal a decent chunk of damage and probably get a Cruel Blow (come to think of it, I'll probably add 'probability of cruel blow' in the near future; it's not that hard to eyeball based on the number of crits, but it's annoying to look up monster will.) If I were actually considering this I would probably rerun Fsil without the '-a sleeping' flag and using the great sword in my inventory to see how much damage I can expect to deal/take once the drake wakes up. (Unfortunately this would currently require switching weapons in-game and making a different character dump.)
From the README:
"Fsil is a simple fight simulator for the roguelike Sil (see
http://www.amirrorclear.net/flowers/game/sil/index.html). Apart from
wanting to get a bit of practical Haskell experience (this is my first actual
program) and play with the probability monad, I wrote Fsil to help answer
questions like the following:
-Should my character use this weapon or that? Two-handed or shield?
-Should I take subtlety?
-How risky is it for me to fight this monster in one-on-one combat?
-What are my odds of oneshotting this sleeping monster?
Fsil takes a Sil 1.1.1 character dump file and the name of a monster, and
computes approximate probability distributions for a few quantities:
-The amount of damage that the player deals to the monster in a single round
(both in terms of absolute damage and as a percentage of the monster's
maximum hitpoints)
-The number of extra damage dice that the player gets from critical hits
-The amount of damage that the monster deals to the player in a single blow"
Currently you need to compile it from source (quite easy; the README has instructions), but I could compile binaries for Windows and OS X if someone wants to play with this without having to install the haskell platform.
Here's some sample output pitting one of my former characters (the dump is included in the fsil repository) against a sleeping young cold-drake:
Code:
./Fsil -a sleeping --meleebonus 5 kryft.txt 'Young cold' > nan.txt kryft vs Young cold-drake Player dark resistance: 1 Player singing: Quiet Monster alertness: Sleeping Player sees monster: True Damage dealt by monster: mean [4.775098,5.3398952], standard deviation [6.0640154,8.930798] Probability of dealing at least x damage: 0 1.000 1 0.517 2 0.494 3 0.462 4 0.434 5 0.403 6 0.368 7 0.334 8 0.297 9 0.262 10 0.229 11 0.194 12 0.165 13 0.136 14 0.112 15 0.091 16 0.072 17 0.056 18 0.042 19 0.032 20 0.023 21 0.016 22 0.012 23 0.009 24 0.005 25 0.004 26 0.003 27 0.002 28 0.001 0 1.000 1 0.362 2 0.353 3 0.342 4 0.328 5 0.316 6 0.305 7 0.290 8 0.275 9 0.259 10 0.244 11 0.229 12 0.215 13 0.201 14 0.182 15 0.168 16 0.151 17 0.137 18 0.125 19 0.112 20 0.100 21 0.090 22 0.080 23 0.069 24 0.061 25 0.053 26 0.046 27 0.039 28 0.034 29 0.028 30 0.024 31 0.021 32 0.018 33 0.015 34 0.013 35 0.011 36 0.009 37 0.008 38 0.006 39 0.005 40 0.004 41 0.003 42 0.002 43 0.002 44 0.002 45 0.001 46 0.001 Damage dealt by player: mean 18.54437, standard deviation 6.2824564 Probability of getting at least n critical hits: 2 1.000 3 0.974 4 0.832 5 0.574 6 0.265 7 0.071 Probability of dealing at least X% (of max hp) damage: 0 1.000 10 0.974 20 0.732 30 0.300 40 0.061 50 0.005 Probability of dealing at least x damage: 0 1.000 1 1.000 2 0.999 3 0.998 4 0.996 5 0.992 6 0.988 7 0.980 8 0.970 9 0.952 10 0.931 11 0.900 12 0.866 13 0.824 14 0.779 15 0.728 16 0.673 17 0.615 18 0.550 19 0.491 20 0.431 21 0.373 22 0.315 23 0.263 24 0.217 25 0.177 26 0.140 27 0.110 28 0.084 29 0.061 30 0.044 31 0.032 32 0.023 33 0.016 34 0.011 35 0.006 36 0.004 37 0.002 38 0.001
I gave my character a melee bonus of +5 to simulate Focused Attack. It's clear I'm nowhere near one-shotting, but I would deal a decent chunk of damage and probably get a Cruel Blow (come to think of it, I'll probably add 'probability of cruel blow' in the near future; it's not that hard to eyeball based on the number of crits, but it's annoying to look up monster will.) If I were actually considering this I would probably rerun Fsil without the '-a sleeping' flag and using the great sword in my inventory to see how much damage I can expect to deal/take once the drake wakes up. (Unfortunately this would currently require switching weapons in-game and making a different character dump.)
Comment