mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-12-31 17:39:03 +00:00
snake improvements
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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!");
|
||||
|
||||
Reference in New Issue
Block a user