Re: your mail

From: Skylar (skylar@acy.digex.net)
Date: 01/23/95


On Sun, 22 Jan 1995, Sean P. Mountcastle wrote:

> 
>      I am sorry for posting that lame question about variable
> assignment.  But now I have another question that I hope will
> test your C Programming knowledge a bit more.
>      I have changed the levelling routine so that you can only
> gain levels while with in your guild (well, any guild for that
> matter).  It seems to work the way intended when the character
> does not meet the criterion for advancing.  But if the character
> is able to advance then it just swallows the command (as if the
> player had just hit return).  I have included the code so that
> hopefully someone can spot my mistake.
>      Thanks in advance, for any help you could offer.
> 
> 
--stuff deleted--

>      if ((GET_CLASS(ch) == (CLASS_MAGIC_USER || CLASS_CLERIC || CLASS_DRUID))
>         && (GET_REL(ch) == REL_NONE)) 
>      {
>         can_level = FALSE;
>         send_to_char("You must declare a religion before the guild will allow you to advance any further.\r\n",ch); 
>      }
>      else
>        can_level = TRUE;
>      return 1;
>      }
          ^
You're returning right here, and not getting any farther.

You probably want to instead, return if they fail your checks along the 
way and dispense with that can_level variable, since if they make it 
passed all the checks, they obviously can.    

> 
>      if ((can_level) && GET_LEVEL(ch) < LVL_HERO &&
>      GET_EXP(ch) >= exp_needed(GET_CLASS(ch), GET_LEVEL(ch) + 1)) 
>      {
>      while (GET_LEVEL(ch) < LVL_HERO &&
>            GET_EXP(ch) >= exp_needed(GET_CLASS(ch), GET_LEVEL(ch) + 1)) 
>      {
>            send_to_char("You rise a level!\r\n", ch);
>            GET_LEVEL(ch) += 1;
>            advance_level(ch);
>            is_altered = TRUE;
>            return 1; 
>      } 
>      }
>      else {
>      send_to_char("Sorry you are unable to gain levels at this time.\r\n",ch);
>      return 1; 
>      }
>   } return 0;
> }



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