void hotkey_build_listing() { int y, enemy_team_mask; Num_lines = y = 0; enemy_team_mask = iff_get_attackee_mask(Player_ship->team); y = hotkey_build_team_listing(enemy_team_mask, y, false); y = hotkey_build_team_listing(enemy_team_mask, y, true); }
void emp_process_ship(ship *shipp) { object *objp; ai_info *aip; Assert(shipp != NULL); if(shipp == NULL){ return; } Assert(shipp->objnum >= 0); if(shipp->objnum < 0){ return; } objp = &Objects[shipp->objnum]; // if the emp intensity is < 0, there is no effect if(shipp->emp_intensity < 0.0f){ shipp->emp_intensity = -1.0f; return; } // reduce the emp effect shipp->emp_intensity -= shipp->emp_decr * flFrametime; // multiplayer clients should bail here if(MULTIPLAYER_CLIENT){ return; } // if this is a player ship, don't do anything wacky if(objp->flags & OF_PLAYER_SHIP){ return; } // lose lock time, etc, etc. Assert(shipp->ai_index >= 0); aip = &Ai_info[shipp->ai_index]; aip->aspect_locked_time = 0.0f; // hasn't gotten aspect lock at all aip->current_target_is_locked = 0; // isn't locked on his current target aip->ai_flags &= ~AIF_SEEK_LOCK; aip->nearest_locked_object = -1; // nothing near me, so I won't launch countermeasures // if he's not a fighter or bomber, bail now if(!(Ship_info[shipp->ship_info_index].flags & (SIF_FIGHTER | SIF_BOMBER))){ return; } // if he's docked, or ordered to not move, bail now if (object_is_docked(objp) || (aip->mode == AIM_STILL) || (aip->mode == AIM_PLAY_DEAD)){ return; } // pick targets randomly and wackily so that the ship flies crazily :) if(((int)f2fl(Missiontime) + (int)(EMP_INTENSITY_MAX * shipp->emp_intensity)) % mod_val == 0){ int ship_lookup = ship_get_random_team_ship(iff_get_attackee_mask(shipp->team)); // if we got a valid ship object to target if((ship_lookup >= 0) && (Ships[ship_lookup].objnum >= 0) && !(Objects[Ships[ship_lookup].objnum].flags & OF_PROTECTED)){ // attack the object ai_attack_object(objp, &Objects[Ships[ship_lookup].objnum], NULL); } } }
/** * Similar to above * * @param team_x Team of attacker * @param team_y Team of attackee * * @return >0 if true, 0 if false */ int iff_x_attacks_y(int team_x, int team_y) { return iff_matches_mask(team_y, iff_get_attackee_mask(team_x)); }