/*Sorry for the wall of text, but I've also given this a lot of thought. Enjoy!*/
I've been looking into combat in most roguelikes as I develop something close to one of my own, and combat came up as quite a tricky thing. As it is going to be quite the foundation of my game, so too will items/spells/movement/visual range/etc all follow.
Items are very important. While a good cloak of Acid Damage protection may seem like a good idea on a level with slimes or some other corrosive substance, it'll be useless on that one Dragon boss level. A variety of damage types, such as acid, fire, cold, electricity, etc will be very important. Gonna fight with your fists? Better get a variety of gloves, because you do not want to touch a live wire monster with your bare skin, just as you don't want to smack a living ball of fire with your measly unprotected fists. Let people throw potions, scrolls, and daggers, let them do unusual things. Don't limit people.
Magic is tricky. On one hand, it is a very important aspect of a game, on the other, it can be very unbalanced if not done right. I'm not to sharp on all the ideas, but a few things you definitely need are: Limits on how much you can cast (Don't make it too free or restrictive), define how you learn and cast spells, and make the spells varied. Don't limit it to combat, you want everyone to sample your magic. The best thing you can do is balance everything. Play test ALOT.
Something you are going to need to do eventually is decide on a time system. Is it real-time or turn based? Does everyone move at the same speed (not recommended for you, from what I think you want) or do certain creatures move faster or slower? Also consider, for added realism, how long it takes for projectiles to hit. Maybe magic is faster than the speed of light, so it takes 0 time(or turns, depending on what you want) to get to the target. Maybe arrows are faster than darts, so while a dart may travel 5 squares in 1 turn/second, an arrow will travel 10 squares in 1 turn/second. That kind of stuff is pretty important in tactical fighting.
After you have that figured out, think about Field of View (FOV). If ranged combat is a large part of your game, use something like Permissive FOV (Brogue uses it). Basically what that does is if a square isn't obstructed by walls (or large ferns, if your game has that kinda thing) you can see it. You can use FOV's like Shadowcasting (DoomRL uses it?), but that won't help at all with tactical combat. It's a-symmetric, meaning that anyone approaching you from the sides will be invisible until they're just a few squares away, while anyone approaching from above or below is visible for miles. Try playing some different games until you see one you like.
One thing about combat is, if you do everything to code, or to book, it won't be fun. Add something sufficiently awesome that people will never have seen before. For example, I'm adding something to my project (which I won't tell you) that I have personally never seen before playing rogue-likes or googling around. So play lots, and google more!