fuzzball-muck / fuzzball

Ongoing development of the Fuzzball MUCK server software and associated functionality.
Other
47 stars 27 forks source link

WHO/QUIT during MUF READ #589

Closed wyld-sw closed 3 years ago

wyld-sw commented 3 years ago

I'm honestly not sure if this is something that people rely on. To me, it's confusing at best and prevents certain input at worst.

It seems when a READ result includes WHO or QUIT, the command is executed and the program goes back to a READ state. I understand QUIT a bit more than WHO, but they both might be an artifact of command processing. WHO during READ is just weird, in my opinion.

This is similar to @Q, which must exist in some form - but WHO/QUIT during READ means that those exact strings can never be read.

Not strictly a MUF READ, but the lsedit program parses " and : at the beginning of a (trimmed) READ result as an instruction to say or pose. This may just be expected at this point, but leads to not being able to easily create prop lists with lines beginning with these characters.

Is there something to improve on here? If so, what's a good alternative?

tanabi commented 3 years ago

So various feedback.

I have no idea the logic behind 'WHO' being a magic keyword. Intercepted keyword? Whatever. That makes no sense to me, I'd say definitely kill that.

'QUIT' is probably the way newbies exit MUF programs when they don't know about @Q. I know the Q command isn't something I learned about until way, way late in the game so I've QUIT out of things in the past. Perhaps that should be kept as I believe the intent of the all-caps QUIT is to make sure the player always has a way out? (i.e. you can't override QUIT with an exit, etc.)

Re. lsedit's parsing of " and : ... I utterly hate that and always have. If you read the .h documentation, you'll see you can escape those with . (." and .:) but I remember when I first "discovered" this lsedit behavior and I was profoundly confused. I've also witnessed other people pasting in descriptions and emitting random lines of text in public because they didn't know you can't start a line with a " (which is a surprisingly common occurance).

HOWEVER we have a "legacy" problem if we change lsedit. I've got a few descriptions in files that have lsedit escapes in them. If we remove the behavior from lsedit, those descriptions will "break" (I think lsedit will say invalid command because you escape lines starting with . with .. if I recall correctly). But fixing them will be easy, though it means the result will be incompatible with old MUCKs. I suppose we could ignore : and " but also still accept .: and ." which is both having and eating cake unless you see some kind of problem with this.

But yeah I've never known someone actually using pose/say from within lsedit -- I think that is an artefact of dumb terminal days where you probably weren't copying/pasting from a text editor. Even then, the idea of trying to hold a conversation while editing text sounds profoundly miserable to me. I'm sure someone's done it though, but do they still do it? .... I'd like to say probably not, but, you never know :)

wyld-sw commented 3 years ago

Ok, so to summarize:

Did I get that right?

Wrangling the WHO/!WHO portion of do_command into something readable has been on my list for quite some time, so I may try to tackle that too.

tanabi commented 3 years ago

Yep! That's my opinion anyway :)

wyld-sw commented 3 years ago

Well, crap. I switched machines recently to one without a separate remote for my fork, and committed directly. Fixing it now.

The commit is 014ad571c861c9e991a2c0fd15b2b4431e75653f.

I left do_command alone for now; I feel it's a rabbit hole I don't want to go down yet, because I know I'll want to rewrite many out-of-scope things.

If the above commit is approved, I'll make the change to lib-editor in the fuzzball-muf repo.

tanabi commented 3 years ago

@wyld-sw This looks good to me!

I will try to have Docker squared away this weekend in an unrelated topic.

wyld-sw commented 3 years ago

More WHO shenanigans! I discovered that WHO on the welcome screen now crashes the server (but not in my dev environment?!), so I took the opportunity to slightly refactor. Now,

Oddly, !WHO = WHO for non-wizards (unless I'm wyldly mistaken), so I have a comment in place to consider getting rid of !WHO in that context. Other that that, !WHO falls back to the server WHO for wizards.

I think everything else is intact, but please verify!

https://github.com/fuzzball-muck/fuzzball/pull/591