1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-12-31 17:39:03 +00:00

snake improvements

This commit is contained in:
Zeno Rogue
2025-12-22 14:01:43 +01:00
parent 6f7e3b869d
commit 96a6f8a721
2 changed files with 8 additions and 3 deletions

View File

@@ -639,7 +639,10 @@ struct snake : public enemy {
int base_xp() override { return 10; }
int max_hp() override { return 30; }
virtual int bite() { return 25; }
virtual void hs(stater& s) override { enemy::hs(s); s.act("dir", dir, respawn_dir); }
xy default_vel() override {
auto dat = get_dat(); return {dat.d * dat.modv * dir, 0};
}
virtual void hs(stater& s) override { s.act("dir", dir, respawn_dir); enemy::hs(s); }
};
struct disnake : public snake {

View File

@@ -514,10 +514,12 @@ void ghost::act() {
void snake::act() {
stay_on_screen();
kino();
if(abs(vel.x) < 1e-6) {
if(on_floor) {
auto dat = get_dat();
if(abs(vel.x) < 1e-6) {
dir = -dir;
}
vel.x = zero_vel.x + dat.d * dat.modv * dir;
dir = -dir;
}
if(intersect(get_pixel_bbox(), m.get_pixel_bbox()) && gframeid > invinc_end) {
if(m.reduce_hp(bite())) addMessage("The snake bites you!");