Menu

#45 flag?, various small issues

open
nobody
None
5
2005-09-14
2003-08-27
Moritz Voss
No

ProtoMUCK 2.0b3 (Muck2.2fb6.00rc9 -- Neon2.17)

There are various issues with flags in MUF, I'll try to
summarize them all here in the categories they belong.

Category 1: Unsettable flags cannot be tested against
using the flag? primitive. Seems to be true for various
flags, including E and F, probably all of them, in fact.

Example code:

me @ "PLAYER" flag?
if
me @ "Thought so" notify
else
me @ "Proto needs work ;-)" notify
then

Category 2: Some flags do not have a single character
shortcut, in particular LISTENER, TRUEIDLE, and
COMMAND ... tilde, slash, and some other characters are
still available, aren't they?

Additionally, it is somewhat misleading to have "W"
mean "W2" in some cases and "W1" in others.

an example:

@set #666=W
Wizard level set.
ex #666
Wyrm(#666PW2) ...

@set #666=W1
Wizard level set.
ex #666
Wyrm(#666PW) ...

I'd suggest allowing the use of mlevels for @set and
flag? purposes, e.g.

@set Avatar=8

equals

@set Avatar=BOY and @set Avatar=W4

#2 "8" flag?

would then return true. This could be implemented down
to Meeper as '1' and '0' would clear all bits (is there even
a 'right' way to clear those bits at the moment? W0
seems to work, as does !M) :)

Category 3: A few things I found in the documentation.

"man flag?" - flag? will NOT abort if encountering a flag
such as "ü" or "protomuckfan" ^.^, it will just return
false on the stack - this could also be a bug...?!

"man flaglist" - some possibly misleading formatting errors

Cya, Thygrrr!

Discussion

  • Chris Brine

    Chris Brine - 2003-08-27

    Logged In: YES
    user_id=26433

    1) First of all, you cannot find out if an object is a player,
    thing, etc. by the flag? prim, it has always been that way.
    The P tag is not actually a true flag. You have to use
    specific primitives to check this, such as Player?, Thing?,
    etc. Each object type has its own primitive.

    2) Some flags are not supposed to have single characters.
    They're internal flags. In fact, other MUCK servers don't
    even allow for you to check to see if they're even there.
    ProtoMUCK is an exception.

    Plus, W is W2. Why? W is short for WIZARD. W1 is not a
    wizard, W is a mage. Which a mage does not have an
    onslaught of wizard abilities. W1 is more like a... staff
    member, or a helper. They can't really do much damage to
    the system. It has always been like this. It was actually
    decided to be made this way during the Neon/Glow days. For
    compatability purposes as well, this should remain unchanged,
    in my view.

    Setting by the mlevel isn't a bad idea though. :) Place it in
    the feature idea section maybe?

    3) Huh. Weird. That used to abort I believe. Now that is a
    bug for sure.

     
  • Michael Pratte

    Michael Pratte - 2003-08-28

    Logged In: YES
    user_id=340748

    For compatibility with the old standard of FLAG?, it was
    changed not to abort, but to return false if the flag doesn't
    exist, it's just the documentation that needs to be updated.

    -Hinoserm

     
  • Moritz Voss

    Moritz Voss - 2003-08-28

    Logged In: YES
    user_id=72124

    1) moose, yeah, I'm well aware of the 'player?' and 'thing?'
    and whatnot primitives. But what is wrong with enabling flag?
    to test for all the FLAGS (duh???) listed in man flaglist and
    help flags* :) Just because it has always been this way
    shouldn't be the argument here, especially since adding the
    additional features would not take away any functionality but
    instead contribute to a more fleshed out 'completeness' of
    proto.

    2) Same here, sticking to the good technique of having a
    short symbol for EVERYTHING is IMHO worth a discussion.
    Especially since it is not about setting those flags like
    trueidle, but finding them in examine and unparseobj strings,
    where they should definitely belong.

    As for the W vs W2 flag, maybe I'm to dull for this (quite
    likely, hehe) but I think you exactly even reproduced the kind
    of misconception I said one could fear to encounter with the
    way it is now: "Plus, W is W2. Why? W is short for WIZARD.
    W1 is not a wizard, W is a mage." That's exactly what I
    meant!!! While @set foo=W will yield a W2 in foo's flag list,
    @set foo=W1 will lead to a W in its flag list - It just looks
    wrong being the crossover way it is now (and so far, nearly
    every aspiring wizard I knew was confuesd by the
    staytement "if you set something W, it becomes W2-bitted,
    and if you @set it W1, it becomes W-bitted). This is not
    about the roles of mages vs. those of wizards, sorry if I was u
    nable to get my point across. As an additional comment,
    GlowMUCK *did* it the other way, though I couldn't care less
    for Glow now that Proto is so nice :)

    2.5) "Setting by the mlevel isn't a bad idea though. :)"

    Will do ^.^

     
  • Michael Pratte

    Michael Pratte - 2005-09-14
    • labels: 102879 -->
     
  • Michael Pratte

    Michael Pratte - 2005-09-14

    Logged In: YES
    user_id=340748

    Outside of the documentation errors, this isn't really a bug
    anymore. I agree that FLAG? could stand to be able to
    check mlevels and object types, so I'll move this over to
    feature requests for further debate.

    -Hinoserm

     

Log in to post a comment.

Monday.com Logo