**************WARNING!!!!!! Before reading this, IT IS
LONG!***************************
Arg! I have been working on this guild special to no avail! I have a
struct of:
a) struct new_guild_info {
int guild_room;
int class;
}
b) struct new_guild_info guilds[] = {
{330, CLASS_THIEF},
{340, CLASS_PALADIN},
{-1,-1}
};
and I am using this special procedure for guilds:
SPECIAL(guild)
{
int found, skill_num, percent,i;
extern struct spell_info_type spell_info[];
extern struct int_app_type int_app[];
found = FALSE;
if (IS_NPC(ch))
return 0;
if (!CMD_IS("practice") && !CMD_IS("gain"))
return 0;
for(i=0;guilds[i].class != -1;i++)
if (GET_CLASS(ch) == guilds[i].class && world[ch->in_room].number ==
guilds[i].guild_room) {
found = TRUE;
continue;
}else
i++;
if(CMD_IS("practice") && found == TRUE) {
skip_spaces(&argument);
if (!*argument) {
list_skills(ch);
return 1;
}
if (GET_PRACTICES(ch) <= 0) {
send_to_char("You do not seem to be able to practice now.\r\n", ch);
return 1;
}
skill_num = find_skill_num(argument);
if (skill_num < 1 ||
GET_LEVEL(ch) < spell_info[skill_num].min_level[(int) GET_CLASS(ch)]) {
sprintf(buf, "You do not know of that %s.\r\n", SPLSKL(ch));
send_to_char(buf, ch);
return 1;
}
if (GET_SKILL(ch, skill_num) >= LEARNED(ch)) {
send_to_char("You are already learned in that area.\r\n", ch);
return 1;
}
send_to_char("You practice for a while...\r\n", ch);
GET_PRACTICES(ch)--;
percent = GET_SKILL(ch, skill_num);
percent += MIN(MAXGAIN(ch), MAX(MINGAIN(ch), int_app[GET_INT(ch)].learn));
SET_SKILL(ch, skill_num, MIN(LEARNED(ch), percent));
if (GET_SKILL(ch, skill_num) >= LEARNED(ch))
send_to_char("You are now learned in that area.\r\n", ch);
return 1;
}
else if(CMD_IS("gain") && found == TRUE) {
if(GET_EXP(ch) < exp_to_level(ch)) {
send_to_char("You need more experience to level.\r\n", ch);
return 0;
}
else if(GET_EXP(ch) >= exp_to_level(ch)) {
if(GET_LEVEL(ch) >= (LVL_IMMORT - 1)) {
send_to_char("You can't gain anymore levels!\r\n", ch);
return 0;
}
}
else if(GET_LEVEL(ch) < (LVL_IMMORT - 1)) {
GET_LEVEL(ch) += 1;
advance_level(ch);
send_to_char("You gain a level!\r\n", ch);
return 1;
}
}
else
return FALSE;
}
It won't recognize a person in their guild. Any ideas?
Chuck Reed
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST