- for (r = 0; r < 2; r++){
- if ((guns[r] || car[r]) && crew[2] && ready[r] <= 0 && !ptr1 -> struck && ((closest[r] = closestenemy(ship, (r ? 'r' : 'l'), 0)) != 30000) && range(closest[r], ship) <= range(ship, closestenemy(ship, (r ? 'r' : 'l'), 1))){
- if ((target = range(ship, closest[r])) <= 10 && !scene[game].ship[closest[r]].file -> struck && (guns[r] || (car[r] && target < 3))){
- load[r] = ROUND;
- if (target == 1 && loadwith[ship] == GRAPE)
- load[r] = GRAPE;
- if (target <= 3 && scene[game].ship[closest[r]].file -> FS)
- load[r] = CHAIN;
- if (target == 1 && load[r] != GRAPE)
- load[r] = DOUBLE;
- if (load[r] > CHAIN && target < 6){
- shootat[r] = HULL;
- }
- else {
- shootat[r] = RIGGING;
- }
- rakehim = gunsbear(ship, closest[r]) && !gunsbear(closest[r], ship);
- temp = portside(closest[r], ship, 1) - pos[closest[r]].dir + 1;
- if (temp < 1)
- temp += 8;
- if (temp > 8)
- temp -= 8;
- sternrake = temp > 4 && temp < 6;
- index = guns[r];
- if (target < 3){
- index += car[r];
- }
- index = (index - 1)/3;
- index = index > 8 ? 8 : index;
- if (!rakehim){
- hit[r] = HDT[index][target-1];
- }
- else {
- hit[r] = HDTrake[index][target-1];
- }
- if (rakehim && sternrake){
- hit[r]++;
- }
- hit[r] += QUAL[index][ptr1 -> captured < 0 ? ptr -> qual-1 : specs[scene[game].ship[ptr1 -> captured].shipnum].qual -1];
- for (n=0; n < 3 && ptr1 -> captured < 0; n++)
- if (!crew[n]){
- if (index <= 5)
- hit[r]--;
- else
- hit[r] -= 2;
- }
- if (ready[r] <= -30000){
- if (index <= 3)
- hit[r]++;
- else
- hit[r] += 2;
- }
- if (ptr1 -> captured > -1){
- if (index <= 1)
- hit[r]--;
- else
- hit[r] -= 2;
- }
- hit[r] += AMMO[index][load[r] - 1];
- if (((temp = ptr -> class) >= 5 || temp == 1) && windspeed == 5)
- hit[r]--;
- if (windspeed == 6 && temp == 4)
- hit[r] -= 2;
- if (windspeed == 6 && temp <= 3)
- hit[r]--;
- if (hit[r] >= 0){
- if (load[r] != GRAPE)
- hit[r] = hit[r] > 10 ? 10 : hit[r];
- roll[r] = die();
- table(shootat[r], load[r], hit[r], closest[r], ship, roll[r]);
- }
- load[r] = 0;
- if (!r)
- ptr1 -> readyL = 0;
- else
- ptr1 -> readyR = 0;
- }
- }