act_new change.
add long flag at the end of function name
after this
if ( type == TO_NOTVICT && (to == ch || to == vch) )
continue;
before this
point = buf;
str = format;
add this
// this will stop you from getting messages that are un-wanted.
if(flag != 0 && IS_SET(ch->ignore_flag, flag))
continue;
in macros.h change the act macro...
#define act(format,ch,arg1,arg2,type)\
act_new((format),(ch),(arg1),(arg2),(type),POS_RESTING, 0)
and add
#define combat_act(format,ch,arg1,arg2,type, flag)\
act_new((format),(ch),(arg1),(arg2),(type),POS_RESTING, (flag))
add in prototypes.h to the act_new function...
long flag
add these to defines.h
#define IGNORE_DODGE (A)
#define IGNORE_PARRY (B)
#define IGNORE_SHIELD (C)
#define IGNORE_MISS (D)
#define IGNORE_CASTING (E)
#define IGNORE_SKILLS (F)
in combat.c in check-parry
change the act statements to..
combat_act, and at the end, add this. IGNORE_DODGE
Go through and change all corosponding acts to the new system.
in act_info.c add this.
const struct flag_type filter_table[] = {
{ "dodge", IGNORE_DODGE, TRUE },
{ "parry", IGNORE_PARRY, TRUE },
{ "shield", IGNORE_SHIELD, TRUE },
{ "cast", IGNORE_CASTING, TRUE },
{ "skills", IGNORE_SKILLS, TRUE },
{ NULL, 0, FALSE},
};
// for filtering what act messages you get (cuts back on combat-spam)
// This can be used to filter out other things aswell But only time will tell how far we go with the filters!
COMMAND(cmd_filters) {
if(NullString(argument)) {
int col = 0;
for(int x = 0; filter_table[x].name != NULL; x++) {
ch->Sendf("%15s (%3s)\t", filter_table[x].name, IS_SET(ch->ignore_flags, filter_table[x].bit) ? "On" : "Off");
col++;
if(col == 3) {
col = 0;
ch->Sendf("\n\r");
}
}
ch->Sendf("Syntax: filter <name> to toggle on/off!\n\r");
return;
}
for(int x = 0; filter_table[x].name != NULL; x++) {
if(!str_cmp(argument, filter_table[x].name)) {
if(IS_SET(ch->ignore_flags, filter_table[x].bit))
REMOVE_BIT(ch->ignore_flags, filter_table[x].bit);
else
SET_BIT(ch->ignore_flags, filter_table[x].bit);
ch->Sendf("%s has been turned %s\r\n", filter_table[x].name, IS_SET(ch->ignore_flags, filter_table[x].bit) ? "On" : "Off");
return;
}
}
ch->Sendf("That filter does not exist!\r\n");
return;
}