I think the professional programmer types dislike it because it
is much cleaner and faster to do things in our programming control structures. (While rules repeats a lot of quasi-boilerplate for each row, you have to worry about getting potentially multiple conditions right, and and doing anything that requires nested
if structures gets miserable very quickly. Also if you ever need an
OR logic gate in the condition and don't have it, that's annoying.)
Similarly I've found that making long linear dialog chains ("continue" -> "continue" -> "continue") gets pretty bloated; here's an (atypically long, to be sure) example from one of my quests:

while doing this kind of thing in a script for the visual novel engine RenPy, you'd just write each text block in turn (example from
The Confines of the Crown):
nvnr "I took a roundabout route back to our assigned quarters, scouting my environment while never straying far enough out of bounds to attract attention. I wasn't looking for anything in particular; it's simply a habit. Learn your way around when you don't need to, so that the knowledge is there when it becomes useful. \n\nIt's only a coincidence that it allows me to put off reading the letter, right?\n\nI can almost make myself believe that."
nvl clear
nvnr "Oscar told me not to worry, which in itself probably means that I should. If he can say such a thing, he must know what the letter is. \n\nNot my family summoning me home. If he knew something like that, he would have wanted to talk about it earlier, I'm sure. He wouldn't keep that hidden. \n\nPerhaps it's not from my family, but from his?\n\nA secret assignment to be performed in Gwellinor?"
nvl clear
nvnr "Ah, well. Quickest begun is soonest done.\n\nI open the valise and carefully lift out folded items of clothing until I discover the cylinder of red leather. It has a more solid heft than I expected. Either the leather is very thick indeed, or there is something more than a letter inside.\n\nI unbuckle the cap and shake out an unsealed roll of parchment and a little blue velvet box.\n\nWhat is this?"
nvl clear
nvnr "{image=cgs/necklace.png}\n\nI open the box to find another piece of jewelry, though a far cry from the sparkling fantasy offered to Princess Cassidy.\n\nIt's a pendant, a polished stone wrapped in wire, its color a warm honey-gold speckled with light. But why is it here?\n\nI suppose I ought to read the letter."
One thing I do like about rules is that you can often inject alternative texts and options into other people's dialogs, thanks to how fire-by-trigger works.
Anyway if you're taking ideas Alex, here are a few:
- OR || for conditions (but I vaguely recall that I mentioned this a long time ago and it wasn't deemed worth doing?)
- The way option redirection (like when multiple dialog options all give the same result) works right now is ugly. $option = myOption 0; FireBest DialogOptionSelected
Could be a single rulecmd, like RedirectOption myOption or such. Ideally it should be possible to do this in the options column itself, but that would probably require completely redoing how option IDs work? Or maybe the InteractionDialogAPI could be given a map of option 'redirects'. - Maybe a custom syntax that allows highlights to be specified directly in the text instead of needing the Highlight cmd? IIRC MagicLib's bounty json uses
double square brackets (EDIT:) double equals, like ==highlight==. Easier and cleaner than making sure Highlight's params match the actual text exactly if the latter is lengthy and/or ever gets changed.