Re: [NEWBIE] bpl12 init_char

From: Sean Daley (sdaley@BBNPLANET.COM)
Date: 09/24/98

Take a look at the SET_SKILL macro in pl12

#define SET_SKILL(ch, i, pct)   { (ch)->player_specials->
                        saved.skills[i] = pct; }   (on two lines)

There's already a semi-colon at the end of it which is
why you don't need to add a semicolon there.
If you do place a semi-colon there, then it looks like you'd
be trying to execute two statements after an if and before
the else which is probably causing the errors.
Whereas the ; after the else isn't going to cause a problem
because it doesn't have a corresponding conditional statement
to mess it up.

for example
the macro gets substituted in like ...

   { (ch)->player_specials->saved.skills[i] = 0; }
   { (ch)->player_specials->saved.skills[i] = 100; }

If you want to check, you can try this out ...
        SET_SKILL(ch, i, 0);
} else
        SET_SKILL(ch, i, 100);

Or, just switch over to pl14 which is a little bit different
as you noticed.

At 06:44 PM 09/24/1998 +0200, you wrote:
>I'm using bpl12, and I noticed the following in db.c, in init_char:
>  for (i = 1; i <= MAX_SKILLS; i++) {
>    if (GET_LEVEL(ch) < LVL_IMPL)
>      SET_SKILL(ch, i, 0)           <---- No semi-colon!
>    else
>      SET_SKILL(ch, i, 100);
>  }
>There's a semi-colon "missing". The code works fine however, and
>it won't even work when I -do- add the semi-colon. I'm working on
>something I want to base on the skill system, and I came across this...
>Anyone know why there shouldn't be a semi-colon there?
>(I figure it has something to do with the macro, bpl14 -does- have
> a semi-colon there, and a slightly different macro, with

     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | |

This archive was generated by hypermail 2b30 : 12/15/00 PST