Пример #1
0
static bool
physics_in (struct anim *k)
{
  struct coord nc; struct pos np, pbf, pmbo, pbb;

  /* collision */
  if (is_colliding (&k->f, &k->fo, +12, true, &k->ci)
      && k->i == 0) {
    kid_sword_normal (k);
    return false;
  }

  /* fall */
  survey (_bf, pos, &k->f, &nc, &pbf, &np);
  survey (_mbo, pos, &k->f, &nc, &pmbo, &np);
  survey (_bb, pos, &k->f, &nc, &pbb, &np);
  if ((is_strictly_traversable (&pbf)
       || is_strictly_traversable (&pmbo)
       || is_strictly_traversable (&pbb))) {
    k->xf.b = NULL;
    kid_fall (k);
    return false;
  }

  return true;
}
Пример #2
0
static bool
flow (struct anim *k)
{
  if (k->oaction != kid_sword_hit) {
    k->i = -1;
    k->j = 0;
  }

  if (k->i == 4) {
    kid_sword_normal (k);
    return false;
  }

  select_frame (k, kid_sword_hit_frameset, k->i + 1);

  if (k->i == 0) k->j = 28;
  if (k->i == 1) k->j = 32;
  if (k->i == 2) k->j = 29;
  if (k->i == 3) k->j = 7;
  if (k->i == 4) k->j = 17;

  select_xframe (&k->xf, sword_frameset, k->j);

  if (k->i == 0) k->xf.dx = -12, k->xf.dy = +2;
  if (k->i == 1) k->xf.dy += -2;

  return true;
}
Пример #3
0
static bool
flow (struct anim *k)
{
  if (k->oaction != kid_sword_walkf) k->i = -1;

  if (k->i == 1) {
    kid_sword_normal (k);
    return false;
  }

  select_frame (k, kid_sword_walkf_frameset, k->i + 1);
  select_xframe (&k->xf, sword_frameset, 13);

  if (k->i == 0) k->xf.dx = -19;
  if (k->i == 1) k->xf.dx = -21;

  return true;
}
Пример #4
0
static bool
flow (struct anim *k)
{
  if (k->oaction != kid_sword_defense) k->i = -1;

  struct anim *ke = get_anim_by_id (k->enemy_id);
  if (k->i == 2) {
    kid_sword_attack (k);
    return false;
  } else if (k->i == 1 && ke && ke->attack_defended == 2
           && ke->counter_attacked != 2) {
    kid_sword_walkb (k);
    return false;
  } else if (k->i == 1 && ! (ke && ke->attack_defended == 2)) {
    kid_sword_normal (k);
    return false;
  }

  if (k->oaction == kid_sword_attack) {
    select_frame (k, kid_sword_walkb_frameset, 0);
    k->j = 10;
  } else if (k->f.b == kid_sword_walkb_frameset[0].frame) {
    select_frame (k, kid_sword_defense_frameset, 1);
    k->fo.dx += 7;
    k->j = 14;
  } else {
    select_frame (k, kid_sword_defense_frameset, k->i + 1);

    if (k->i == 0) k->j = 28;
    if (k->i == 1) k->j = 14;
    if (k->i == 2) k->j = 15;
  }

  select_xframe (&k->xf, sword_frameset, k->j);

  if (k->oaction == kid_sword_attack) k->fo.dx += +2;

  /* if (k->id == 0) */
  /*   printf ("kid_sword_defense: k->i = %i, k->fo.dx = %i\n", */
  /*           k->i, k->fo.dx); */

  return true;
}
Пример #5
0
static bool
flow (struct anim *k)
{
  if (k->oaction != kid_sword_walkb) k->i = -1;

  if (k->i == 1) {
    kid_sword_normal (k);
    return false;
  }

  if (k->i == -1) k->j = 10;
  if (k->i == 0) k->j = 17;

  if (k->f.b == kid_sword_attack_frameset[5].frame) k->i = 0;

  select_frame (k, kid_sword_walkb_frameset, k->i + 1);
  select_xframe (&k->xf, sword_frameset, k->j);

  return true;
}