From 2fbdf974338bde8576efdae40a819a76b2391033 Mon Sep 17 00:00:00 2001 From: "Juan J. Martinez" Date: Sun, 5 Nov 2023 11:22:55 +0000 Subject: Initial import of the open source release --- src/et_spider.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 src/et_spider.c (limited to 'src/et_spider.c') diff --git a/src/et_spider.c b/src/et_spider.c new file mode 100644 index 0000000..8373d79 --- /dev/null +++ b/src/et_spider.c @@ -0,0 +1,102 @@ +/* + 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); +} -- cgit v1.2.3