@Override
 public void generateBullet(
     float targetX, float targetY, float startX, float startY, float angle) {
   SuperAlienRifleBullet bullet =
       new SuperAlienRifleBullet(
           p,
           new PVector(startX, startY),
           "sdf.sdf",
           angle + p.random(-jitter, jitter),
           0xFFFFFFFF,
           caliber,
           60,
           this.bulletSpeed,
           this,
           this.weight / rackSize,
           new PVector(startX, startY));
   bullet.sprite = new Animation(this.bulletAnimation);
   this.bullets = (Bullet[]) PApplet.append(this.bullets, bullet);
   currentRackSize--;
   lastShotTime = p.millis();
 }
 @Override
 public void harmTarget(Harmable target, float distance) {
   target.harm(this.damage * PApplet.map(distance, 0, this.range, -1f, -0.5f) * (-1f));
 }