597 {
598 f32 bombetteX, bombetteZ;
599 f32 enemyX, enemyZ;
600 f32 x, y, z, dist;
601 f32 angle, distance;
602 f32 enemyRadius, blastRadius;
604 s32 enemyHit;
605
606 if (!N(IsBlasting)) {
607 return FALSE;
608 }
609
610 enemyX = enemy->
pos.
x;
611 enemyZ = enemy->
pos.
z;
612
613 bombetteX = bombette->
pos.
x;
614 bombetteZ = bombette->
pos.
z;
615
616 x = enemyX - bombetteX;
618 z = enemyZ - bombetteZ;
619
621 blastRadius = 35.0f;
623 enemyHit = FALSE;
624
625 if (dist < (enemyRadius + blastRadius)) {
626 enemyHit = TRUE;
627 }
628
629 angle =
atan2(enemyX, enemyZ, bombetteX, bombetteZ);
630 distance =
dist2D(enemyX, enemyZ, bombetteX, bombetteZ);
631
632
637
638 if (hasCollision) {
639 return FALSE;
640 }
641
642 return enemyHit;
643}
f32 dist2D(f32 ax, f32 ay, f32 bx, f32 by)