void execute_leap( event_data* event ) { char_data* ch = (char_data*) event->owner; char_data* victim = (char_data*) event->pointer; extract( event ); if( ch->position <= POS_SLEEPING ) return; if( ch->fighting != NULL || ch->active.time != -1 ) return; ch->shown = 1; passive_action( ch ); if( ch->active.time != -1 ) return; leap_message( ch, victim ); ch->fighting = victim; react_attack( ch, victim ); fight_round( ch ); }
void Battle_AI_Object::start_fight(Fighter* fighter){ if(fighter == NULL){ return; } // own start fight if(fighter != owner_){ return; } begin_time_ = Time_Value::gettimeofday(); fight_round_ = 0; fight_round(fighter); int skill_id = this->ai_select_skill(); fighter->set_first_used_skill(skill_id); }
void next_action( event_data* event ) { char_data* ch = (char_data*) event->owner; if( ch->position <= POS_SLEEPING ) return; ch->shown = 1; passive_action( ch ); if( !ch->Is_Valid( ) || ch->active.time != -1 || ( ch->fighting == NULL && is_empty( ch->aggressive ) ) ) return; if( ch->fighting != NULL ) fight_round( ch ); else init_attack( ch, ch->aggressive[0] ); }