/* 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 "plw.h" #include "sound.h" #include "main.h" #include "maps.h" // generated #include "spider.h" #include "entities.h" #include "et_spider.h" #include "et_player.h" void draw_spider() { if (!*it_frame) put_sprite4(spider[1], *it_x, *it_y, 1, 0); else { // draws the thread if (!(*it_param & 128)) it_k = *it_param & 127; else it_k = *it_extra - (*it_param & 127); it_k >>= 3; while (it_k) { put_sprite4(spider[2], *it_x, *it_y - (it_k << 3), 1, 0); --it_k; } put_sprite4(spider[0], *it_x, *it_y, 2, 0); erase_sprite(*it_ox, *it_oy, 2); } } void update_spider() { // waiting if (!*it_frame) { if (!magic && life && py > *it_y && abs_sub(*it_x, px) < 9 && abs_sub(*it_y, py) < 48) { *it_frame = 1; PLW_PlaySoundEffectP(EFX_SPIDER); } else return; } // limit and change direction if ((*it_param & 127) == *it_extra) { // back up if (*it_param & 128) { erase_sprite(*it_x, *it_y + 8, 1); *it_frame = 0; *it_param = 0; goto spider_done; } else // touch bottom *it_param = 128; } if (*it_param & 128) { *it_y -= 1; *it_param += 1; } else { *it_y += 8; *it_param += 8; } spider_done: // only going down if (!(*it_param & 128) && check_for_player(16)) player_hit(1); }