bool is_same_clan(CHAR_DATA * ch, CHAR_DATA * victim) { if (is_independent(ch)) return FALSE; else return (ch->clan == victim->clan); } /* end: is_same_clan */
set<State*> Automata::glue_states(DistinguashbleStatesCollection& dependentStates){ set<State*> mergedStates; set<State*>::iterator fstate=all_states.begin(); set<State*>::iterator fend=--all_states.end(); for(;fstate!=fend;++fstate){ set<State*>::iterator sstate=fstate;++sstate; for(;sstate!=all_states.end();++sstate){ State* fstate_p=(*fstate>*sstate)?*fstate:*sstate; //всегда оставляем старший State* sstate_p=(*fstate>*sstate)?*sstate:*fstate; if(!mergedStates.count(sstate_p) && !mergedStates.count(fstate_p)){ if(is_independent(fstate_p,sstate_p,dependentStates)){ merge_states(fstate_p,sstate_p); mergedStates.insert(sstate_p); } } } } return mergedStates; }
void do_loner(CHAR_DATA *ch, char *argument) { if(IS_NPC(ch)) return; if(ch->in_arena) { send_to_char("Now is ... not a good time.\n\r",ch); return; } if(ch->clan) { if(is_independent(ch)) send_to_char("You're already an independent pkiller.\n\r", ch); else send_to_char("You're already in a clan.\n\r", ch); return; } if(ch->level < 25) { send_to_char("You must be level 25 or higher to become a loner.\n\r",ch); return; } if(argument[0] == '\0') { send_to_char("Syntax: loner confirm\n\r" "\n\rWarning! This will make you PK-able!!!\n\r", ch); return; } if(!str_cmp(argument, "confirm")) { send_to_char("You are now a loner. Watch out!\n\r", ch); ch->clan = clan_lookup("loner"); ch->rank = 0; return; } return; }