function windsurf_gotHit() /* entry=179 class_id=0x0337 slot=0x06 */
{
  entry:
    set_info(0x020C, *(arg_06));
    process_exclude();
    FREE.slot_35(arg_0C, arg_0A);
    if retval goto block_01B1;

  block_01AE:
    goto block_0483;

  block_01B1:
    if (Item.getMapNum(arg_06) != 0) goto block_046B;

  block_01C0:
    local_02 = arg_0A;
    if Item.getTypeFlagCrusader(0, local_02) goto block_01D5;

  block_01D2:
    goto block_0483;

  block_01D5:
    if (Item.getShape(local_02) != 0x01D9) goto block_01E8;

  block_01E5:
    goto block_0483;

  block_01E8:
    if (Item.overlaps(arg_0A, arg_06) != 0) goto block_01FC;

  block_01F9:
    goto block_0483;

  block_01FC:
    if (Item.getQHi(arg_06) != 0x00FF) goto block_020F;

  block_020C:
    goto block_0483;

  block_020F:
    if (Item.getZ(arg_06) != 0x00FE) goto block_0222;

  block_021F:
    goto block_0483;

  block_0222:
    if (Item.getNpcNum(arg_06) != 0x00FF) goto block_024A;

  block_0232:
    if (!Item.isNpc(local_02)) goto block_0247;

  block_023F:

  block_0247:
    goto block_0483;

  block_024A:
    if (local_08 == 0) {
      local_08 = 3;
    }
    else if (local_08 == 15) {
      local_08 = (3 + (World.gameDifficulty() * 2));
    }

  block_0295:
    if (local_0A == 0) {
      local_06 = -1;
    }
    else if (local_0A == 1) {
      local_06 = -2;
      local_04 = 1;
    }
    else if (local_0A == 2) {
      local_06 = -1;
      local_04 = 1;
    }
    else if (local_0A == 3) {
      local_06 = -1;
      local_04 = 2;
    }
    else if (local_0A == 4) {
      local_04 = 1;
    }
    else if (local_0A == 5) {
      local_04 = 2;
      local_06 = 1;
    }
    else if (local_0A == 6) {
      local_04 = 1;
      local_06 = 1;
    }
    else if (local_0A == 7) {
      local_04 = 1;
      local_06 = 2;
    }
    else if (local_0A == 8) {
      local_06 = 1;
    }
    else if (local_0A == 9) {
      local_06 = 2;
      local_04 = -1;
    }
    else if (local_0A == 10) {
      local_06 = 1;
      local_04 = -1;
    }
    else if (local_0A == 11) {
      local_06 = 1;
      local_04 = -2;
    }
    else if (local_0A == 12) {
      local_04 = -1;
    }
    else if (local_0A == 13) {
      local_04 = -2;
      local_06 = -1;
    }
    else if (local_0A == 14) {
      local_04 = -1;
      local_06 = -1;
    }
    else if (local_0A == 15) {
      local_04 = -1;
      local_06 = -2;
    }

  block_03B5:
    local_04 = (local_04 * local_08);
    local_06 = (local_06 * local_08);
    spawn FREE.slot_3B(pid, 2, 0x00000000);
    suspend;

  block_03DA:
    if 1 goto block_0442;

  block_03DF:
    local_0F = (Item.getX(local_02) + local_04);
    local_0D = (Item.getY(local_02) + local_06);
    local_0B = Item.getZ(local_02);
    spawn FREE.slot_3B(pid, 5, 0x00000000);
    suspend;
    if (Item.overlaps(arg_0A, arg_06) != 0) goto block_043F;

  block_043C:
    goto block_0442;

  block_043F:
    goto block_03DA;

  block_0442:
    if (Item.getZ(local_02) > 1) goto block_0468;

  block_0451:
    suspend;

  block_0468:
    goto block_0483;

  block_046B:
    spawn TRIGGER.slot_20(pid, 0, *(arg_06), arg_06);
    suspend;

  block_0483:
    return;

}
