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; }
static bool flow (struct anim *g) { struct pos pmt; bool vigilant = g->key.enter; if (g->oaction == guard_normal && g->current_lives <= 0 && anim_cycle > 0) { survey (_mt, pos, &g->f, NULL, &pmt, NULL); g->p = pmt; guard_die (g); return false; } if (g->oaction == guard_normal && vigilant && anim_cycle > 0) { guard_vigilant (g); return false; } g->fo.b = get_guard_normal_bitmap (g->type); g->fo.dx = g->fo.dy = +0; select_xframe (&g->xf, sword_frameset, 30); if (g->type == VIZIER) g->xf.dy += +4; if (g->type == SKELETON) g->xf.dx += -5, g->xf.dy += -6; return true; }
static bool flow (struct anim *g) { if (g->oaction != guard_walkb) g->i = -1; if (g->i == 1) { guard_vigilant (g); return false; } struct frameset *frameset = get_guard_walkb_frameset (g->type); select_frame (g, frameset, g->i + 1); if (g->i == 0) g->j = 10; if (g->i == 1) g->j = 3; select_xframe (&g->xf, sword_frameset, g->j); if (g->j == 10) g->xf.dx = -10, g->xf.dy = +16; if (g->type == SKELETON) g->xf.dy += -3; if (g->type == SHADOW) g->xf.dy += -2; return true; }
static bool flow (struct anim *g) { if (g->oaction != guard_fall) g->i = -1; g->i++; struct frameset *frameset = get_guard_fall_frameset (g->type); g->fo.b = frameset[g->i > 2 ? 2 : g->i].frame; g->fo.dx = frameset[g->i > 2 ? 2 : g->i].dx; g->fo.dy = frameset[g->i > 2 ? 2 : g->i].dy; if (g->i == 0) g->j = 28; if (g->i == 1) g->j = 32; if (g->i == 2 && g->type == SHADOW) g->j = 29; select_xframe (&g->xf, sword_frameset, g->j); if (g->i == 0) g->xf.dx = -12, g->xf.dy = +4; if (g->i >= 2 && g->type != SHADOW) g->xf.b = NULL; if (g->type == SKELETON) g->xf.dy += -3; if (g->type == SHADOW && g->i < 2) g->xf.dy += -2; return true; }
void put_at_attack_frame (struct anim *k) { k->enemy_defended_my_attack = 2; k->enemy_counter_attacked_myself = k->enemy_counter_attacked_myself ? 2 : 0; k->i_counter_defended = k->i_counter_defended ? 2 : 0; switch (k->type) { case NO_ANIM: default: break; case KID: if (k->i == 3) return; k->f = k->of; select_frame (k, kid_sword_attack_frameset, 0); next_frame (&k->f, &k->f, &k->fo); select_frame (k, kid_sword_attack_frameset, 1); next_frame (&k->f, &k->f, &k->fo); select_frame (k, kid_sword_attack_frameset, 2); k->fo.b = kid_sword_attack_defended; select_xframe (&k->xf, sword_frameset, 17); k->xf.dx = -21; k->xf.dy = +11; uncollide_back_fight (k); next_frame (&k->f, &k->f, &k->fo); break; case GUARD: case FAT_GUARD: case VIZIER: case SKELETON: case SHADOW: k->fo.b = get_guard_attack_defended_bitmap (k->type); k->fo.dx = +1; k->fo.dy = 0; select_xframe (&k->xf, sword_frameset, 8); k->xf.dx = -13; k->xf.dy = -14; uncollide_back_fight (k); next_frame (&k->f, &k->f, &k->fo); break; } }
void put_at_defense_frame (struct anim *k) { struct frameset *frameset; play_audio (&sword_defense_audio, NULL, k->id); switch (k->type) { case NO_ANIM: default: break; case KID: select_frame (k, kid_sword_defense_frameset, 0); next_frame (&k->f, &k->f, &k->fo); select_frame (k, kid_sword_defense_frameset, 1); struct anim *ke = get_anim_by_id (k->enemy_id); if (ke->type == KID) { select_xframe (&k->xf, sword_frameset, 11); k->xf.dx = -13; k->xf.dy = +5; } else select_xframe (&k->xf, sword_frameset, 14); k->action = kid_sword_defense; uncollide_back_fight (k); next_frame (&k->f, &k->f, &k->fo); break; case GUARD: case FAT_GUARD: case VIZIER: case SKELETON: case SHADOW: frameset = get_guard_defense_frameset (k->type); select_frame (k, frameset, 0); select_xframe (&k->xf, sword_frameset, 11); k->action = guard_defense; uncollide_back_fight (k); next_frame (&k->f, &k->f, &k->fo); break; } /* if (k->id == 0) */ /* printf ("%s: k->i = %i, k->fo.dx = %i\n", */ /* __func__, k->i, k->fo.dx); */ }
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; }
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; }
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; }
static bool flow (struct anim *k) { if (k->oaction != kid_keep_sword) k->i = -1, k->wait = 1; if (k->i < 8) k->i++; else if (k->i == 8 && k->wait > 0) k->wait--; else if (k->i == 8 && k->wait == 0) k->i++, k->wait = 2; else if (k->i == 9 && k->wait > 0) k->wait--; else { if (k->keep_sword_fast) { kid_normal (k); k->keep_sword_fast = false; return false; } else { /* kid turn will invert kid's direction */ k->f.dir = (k->f.dir == RIGHT) ? LEFT : RIGHT; kid_turn (k); return false; } } if (k->keep_sword_fast && k->i % 2 == 0) k->i++, k->wait = 0; k->j = 24 + k->i; select_frame (k, kid_keep_sword_frameset, k->i); if (k->i < 4) select_xframe (&k->xf, sword_frameset, k->j); if (k->i == 8 && k->wait < 1) k->fo.dx = 0; if (k->i == 9 && k->wait < 2) k->fo.dx = 0; if (k->keep_sword_fast && k->i % 2) k->fo.dx += kid_keep_sword_frameset[k->i - 1].dx; if (k->f.b == kid_sword_normal_00) k->fo.dx = +8; return true; }
static bool flow (struct anim *g) { if (g->oaction != guard_defense) g->i = -1; struct anim *ke = get_anim_by_id (g->enemy_id); if (g->i == 1) { guard_attack (g); return false; } else if (g->i == 0 && ke && ke->attack_defended == 2 && ke->counter_attacked != 2) { guard_walkb (g); return false; } else if (g->i == 0 && ! (ke && ke->attack_defended == 2)) { guard_vigilant (g); return false; } struct frameset *frameset = get_guard_defense_frameset (g->type); select_frame (g, frameset, g->i + 1); if (g->i == 0) g->j = 11; select_xframe (&g->xf, sword_frameset, g->j); if (g->i == 1) g->xf.b = NULL; if (g->oaction == guard_attack) g->fo.dx += +2; if (g->type == SKELETON) g->xf.dy += -3; if (g->type == SHADOW) g->xf.dy += -2; /* if (g->id == 0) */ /* printf ("guard_defense: g->i = %i, g->fo.dx = %i\n", */ /* g->i, g->fo.dx); */ return true; }
static bool flow (struct anim *g) { if (g->oaction != guard_attack) { /* if (g->id == 0) */ /* printf ("guard_attack: dx = %i, g->i = %i, g->f.b = %p\n", */ /* g->f.c.x - g->of.c.x, g->i, g->f.b); */ g->i = -1; g->of = g->f; } if (g->oaction == guard_defense) g->i = 1; if (g->i < 7 && g->i_counter_defended == 2) { g->i = 7; /* g->f = g->of; */ } if (g->i == 9) { guard_defense (g); return false; } else if (g->i == 7 && g->i_counter_defended != 2) { guard_vigilant (g); return false; } if (g->i == 4 && g->enemy_defended_my_attack) g->f.c.x += (g->f.dir == LEFT) ? +9 : -9; if (g->i == 3 && g->enemy_defended_my_attack) g->i = 4; struct frameset *frameset = get_guard_attack_frameset (g->type); select_frame (g, frameset, g->i + 1); if (g->i == 0) g->j = 12; if (g->i == 1) g->j = 0; if (g->i == 2) g->j = 5; if (g->i == 3) g->j = 1; if (g->i == 4) g->j = 2; if (g->i == 5) g->j = 6; if (g->i == 6) g->j = 7; if (g->i == 7) g->j = 3; if (g->i == 8) g->j = 9; if (g->i == 9) g->j = 10; select_xframe (&g->xf, sword_frameset, g->j); if (g->j == 1) g->xf.dy = +9; if (g->j == 7) g->xf.dx = +0, g->xf.dy = +23; if (g->j == 10) g->xf.dx = -10, g->xf.dy = +16; if (g->i == 5 && g->enemy_defended_my_attack) g->fo.dx = -2; if (g->type == SKELETON) g->xf.dy += -3; if (g->type == SHADOW) g->xf.dy += -2; return true; }
static bool flow (struct anim *k) { struct pos pmt; bool keep_sword = k->key.down; bool defense = k->key.up && ! k->key.shift && ! k->key.left && ! k->key.right; bool attack = k->key.shift && ! k->key.up && ! k->key.left && ! k->key.right; bool walkf = ((k->f.dir == RIGHT) && k->key.right) || ((k->f.dir == LEFT) && k->key.left); bool walkb = ((k->f.dir == RIGHT) && k->key.left) || ((k->f.dir == LEFT) && k->key.right); struct anim *ke = get_anim_by_id (k->enemy_id); k->keep_sword_fast = (k->enemy_id != -1 && ke->current_lives > 0 && ! is_anim_fall (&ke->f)); if (k->oaction != kid_sword_normal) k->i = -1; if (k->oaction == kid_sword_normal && k->current_lives <= 0) { survey (_mt, pos, &k->f, NULL, &pmt, NULL); k->p = pmt; kid_die (k); return false; } if (k->oaction == kid_sword_normal) { if (keep_sword) { /* keep_sword_fast = true; */ kid_keep_sword (k); return false; } if (defense) { kid_sword_defense (k); return false; } if (attack) { kid_sword_attack (k); return false; } if (walkf) { kid_sword_walkf (k); return false; } if (walkb) { kid_sword_walkb (k); return false; } } k->fo.b = kid_sword_normal_00; k->fo.dx = k->fo.dy = +0; select_xframe (&k->xf, sword_frameset, 13); if (k->f.b == kid_take_sword_frameset[3].frame) k->fo.dx = -4; if (k->f.b == kid_sword_walkf_frameset[1].frame) k->fo.dx = +5; if (k->f.b == kid_sword_walkb_frameset[1].frame) k->fo.dx = +2; k->i++; return true; }