On Fri, 20 Mar 1998, Digital wrote: ->This works great if I set the class to warrior and the remort to Theif Real quick, now: "i before e except after c, or if the word is weird." ->checks for get_remort(ch) != get_class(ch) && get_remort(ch) != ->get_remort_two(ch) -> ->etc etc etc. ->I think it is in the check in spoec_procs.c but it still eludes me. What exactly did you add to spec_procs.c? My crystal ball is in the shop right now (damn Motorola's). Regardless, why would you add "get_class(ch) != get_remort(ch)"? That would seemingly only check if their class is not equal to their remort class, not whether they can see the spells of that class...This, BTW, seems more like a simple C/logic question (e.g., how to write 'if' clauses) rather than a valid CircleMUD question. Anyway, the original looks like, if (GET_LEVEL(ch) >= spell_info[i].min_level[(int) GET_CLASS(ch)]) { the replacement might look like, #define CLASS(ch, i) \ ((i) == 0 ? GET_CLASS(ch) : (i) == 1 ? GET_REMORT(ch) : \ (i) == 2 ? GET_REMORT_TWO(ch) : GET_REMORT_THREE(ch)) #define HAS_CLASS(ch, i) (CLASS((ch), (i)) != GET_CLASS(ch)) #define CLASS_SKILL(ch, i, skl) \ (HAS_CLASS((ch), (i)) && \ 30 >= spell_info[(skl)].min_level[CLASS((ch), (i))]) if (GET_LEVEL(ch) >= spell_info[i].min_level[(int) GET_CLASS(ch)] || CLASS_SKILL(ch, 1, i) || CLASS_SKILL(ch, 2, i) || CLASS_SKILL(ch, 3, i)) { ...all of that ugly macro work, BTW, was due to the fact that people are apparently allergic to arrays. If you had used a class array, say like, ubyte class[NUM_CLASSES]; in place of the current class variable, it might have taken a little more time to create the basic remort system, but it would certainly be better in the long run. -dak +------------------------------------------------------------+ | 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/15/00 PST