/* Kitsune's Curse Copyright (C) 2020-2023 Juan J. Martinez This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include "splib.h" #include "main.h" #include "maps.h" // generated #include "vampire.h" #include "entities.h" #include "et_vampire.h" #include "et_player.h" void draw_vampire() { put_sprite4(vampire[player_frames[*it_frame]], *it_x, *it_y, 2, 0); erase_sprite(*it_ox, *it_oy, 2); } void update_vampire() { // waiting if (*it_frame == 4) { if (!magic && py > *it_y && abs_sub(*it_x, px) < 16 && abs_sub(*it_y, py) < 48) *it_frame = 0; else return; } if ((*it_delay)++) { *it_delay = 0; if (++(*it_frame) > WALK_CYCLE) *it_frame = 0; } // don't chase the player if dead if (!life) return; if (*it_x > px && !is_map_blocked(*it_x - 1, *it_y + 8)) *it_x -= 1; if (*it_x < px && !is_map_blocked(*it_x + 8, *it_y + 8)) *it_x += 1; if (*it_extra) { --(*it_extra); if (*it_y && !is_map_blocked(*it_x + 4, *it_y - 1)) *it_y -= 1; } else if (abs_sub(*it_x, px) < 64) { if (*it_y > py && !is_map_blocked(*it_x + 4, *it_y - 1)) *it_y -= 2; if (*it_y < py && !is_map_blocked(*it_x + 4, *it_y + 16)) *it_y += 2; } if (check_for_player(16)) { player_hit(1); *it_extra = WAS_HIT << 1; } }