> merc.h:2611: warning: `struct flag_type' declared inside parameter list > merc.h:2611: warning: its scope is only this definition or declaration, which is > probably not what you want.
This is the problem - in merc.h your definition of str_flag_string is using the errornous definition you have made in these lines - in all other modules, it is using another flag_type from somewhere else, and therefore... (probably flag_type is defined in merc.h further down the file) > bitsys.c:86: conflicting types for `str_flag_string' > merc.h:2611: previous declaration of `str_flag_string' > bitsys.c:344: warning: passing arg 5 of `do_flag_norm' makes pointer from > integer without a cast > > do_flag_norm( ch, victim, argument, type, victim->affected_by, > affect_flags ); > ....... > > Here's the function header for do_flag norm: > void do_flag_norm( CHAR_DATA *ch, CHAR_DATA *victim, char *argument, > char type, long *flag, const struct flag_type *flag_table ) > > relatedly, here's how victim->affected_by is laid out in merc.h: > FLAG affected_by; > and FLAG itself in merc.h is defined as: > typedef int FLAG; long *flag in one place, int affected_by in the other... > act_wiz.c: In function `do_mstat': > act_wiz.c:2464: warning: passing arg 1 of `STR_IS_ZERO' makes pointer from > integer without a cast > 2464: if ( !STR_IS_ZERO(victim->affected_by, AFF_FLAGS) ) > > In merc.h, STR_IS_ZERO is defined as: > bool STR_IS_ZERO args( ( FLAG *var, int size ) ); same problem here - your function requires a pointer to a FLAG (integer), and you call it with an integer. > act_wiz.c:2467: warning: passing arg 1 of `affect_str_bit_name' makes pointer > from integer without a cast > 2467: affect_str_bit_name(victim->affected_by)); and again ... /Reg.

