Hi all I've discovered that when you add new classes, and wish to have more than one class train at the same guildmaster, you run into a problem; We added a lich class who should train at the mage guild along with the mages. To let them in, we added the following in class.c: ... {CLASS_MAGIC_USER, 3075, SCMD_UP}, + {CLASS_LICH, 3075, SCMD_UP}, ... The guildguard specproc, however, wasn't capable of handling the situation, and refused to let liches enter the guild (it returned prematurely). Here's a quick fix: SPECIAL(guild_guard) { - int i; + int i, found = FALSE, block = FALSE; struct char_data *guard = (struct char_data *) me; const char *buf = "The guard humiliates you, and blocks your way.\r\n"; const char *buf2 = "The guard humiliates $n, and blocks $s way."; if (!IS_MOVE(cmd) || AFF_FLAGGED(guard, AFF_BLIND)) return (FALSE); if (GET_LEVEL(ch) >= LVL_IMMORT) return (FALSE); + if (IS_NPC(ch)) + return (FALSE); - for (i = 0; guild_info[i][0] != -1; i++) { - if ((IS_NPC(ch) || GET_CLASS(ch) != guild_info[i][0]) && - GET_ROOM_VNUM(IN_ROOM(ch)) == guild_info[i][1] && - cmd == guild_info[i][2]) { + for (i = 0;!found && guild_info[i][0] != -1; i++) + if (GET_ROOM_VNUM(IN_ROOM(ch)) == guild_info[i][1]) + if (GET_CLASS(ch) != guild_info[i][0]) { + if (cmd == guild_info[i][2]) + block = TRUE; + } else { + found = TRUE; + block = FALSE; + } + + if (block) { send_to_char(buf, ch); act(buf2, FALSE, ch, 0, 0, TO_ROOM); return (TRUE); } } Welcor -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/05/01 PST