#include "fighter.hpp"
void Fighter::make_shards() {
  phys.spd *= 1.6f; // от взрыва осколки ускоряются
  switch (a83::irand() % 3) {
    default:
    case 0: { // 3 осколка
      cauto old_deg = phys.deg;
      FOR (i, 3) {
        phys.set_deg(old_deg + a83::sfrand() * 90.0f);
        if (auto p = add_blt(BLT_FRAG_BLACK_S); p) {
          p->phys = phys;
          p->flags |= EF_DMG_ENEMY | EF_DMG_PLAYER | EF_DMG_BULLET
            | EF_KILL_TIMER;
          p->smoke = smoke_bank::small;
          p->expl = expl_bank::shard_crush;
          p->frame_timer = 10;
          // вращение осколка
          p->pf0 = &Enity::frag;
          p->data0.f0 = a83::getSign(a83::sfrand()) * 45.0f;
        }
      }
      break;
    }
    case 1: { // 2 осколка
      cauto old_deg = phys.deg;
      FOR (i, 2) {
        phys.set_deg(old_deg + a83::sfrand() * 45.0f);
        if (auto p = add_blt(BLT_FRAG_BLACK_M); p) {
          p->phys = phys;
          p->flags |= EF_DMG_ENEMY | EF_DMG_PLAYER | EF_DMG_BULLET
            | EF_KILL_TIMER;
          p->smoke = smoke_bank::small;
          p->expl = expl_bank::shard_crush;
          p->frame_timer = 10;
          // вращение осколка
          p->pf0 = &Enity::frag;
          p->data0.f0 = a83::getSign(a83::sfrand()) * 45.0f;
        }
      }
      break;
    }
    case 2: { // 1 большой осколок
      if (auto p = add_blt(BLT_FRAG_BLACK_B); p) {
        p->phys = phys;
        p->flags |= EF_DMG_ENEMY | EF_DMG_PLAYER | EF_DMG_BULLET
          | EF_KILL_TIMER;
        p->smoke = smoke_bank::big;
        p->expl = expl_bank::shard_crush;
        p->frame_timer = 10;
        // вращение осколка
        p->pf0 = &Enity::frag;
        p->data0.f0 = a83::getSign(a83::sfrand()) * 45.0f;
      }
      break;
    }
  } // switch shards
} // make_shards