1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-06-26 07:02:49 +00:00

ru:: deadly traps

This commit is contained in:
Zeno Rogue 2025-05-16 23:51:09 +02:00
parent 355d98f80d
commit 65f0ce2f0e
4 changed files with 118 additions and 11 deletions

View File

@ -368,6 +368,14 @@ struct enemy : public entity {
virtual int base_xp() { return 0; }
};
struct vtrap : public entity {
xy siz() override { return {6, 18}; }
string glyph() override { return "^"; }
color_t color() override { return 0xD00000FF; }
void act() override;
string get_name() override { return "moving trap"; }
string get_help() override { return "A deadly but invisible trap."; }
};
struct boar : public enemy {
xy siz() override { return {18, 18}; }

View File

@ -581,6 +581,21 @@ void bat::act() {
}
}
void vtrap::act() {
auto v = vel;
stay_on_screen();
apply_walls_reflect();
if(v.y * vel.y < 0) {
auto dat = get_dat();
vel.y = (rand() % 100 + 100) * (vel.y > 0 ? 1 : -1) * 0.005 * dat.modv * dat.d;
}
apply_vel();
if(intersect(get_pixel_bbox(), m.get_pixel_bbox())) {
if(m.reduce_hp(200)) addMessage("The trap zaps you!");
}
}
void kestrel::attacked(int dmg) {
enemy::attacked(dmg);
if(where.x < m.where.x) vel.x = -abs(vel.x);

View File

@ -870,25 +870,26 @@ OK
MOVE 3 Central Cavern
ROOM Central Cavern Bottom Right
# wall
. air
- staircase
A platform
+ door
- staircase
. air
A platform
B secret passage
| column
MAP
....#....#.-..........-....#A..........#########################################
....#....+..-........-.....#A..........#########################################
....#....+...-......-......#A...........########################################
....##########AAAAA-########A............#######################################
....#.............-.#......#A.............######################################
....#............-..#......#A.............######################################
....#.............-.#......#A.............++....................................
....#............-..#......#A.............+b....................................
....#...........-...#......#A............#######################################
....#..........-....#......#A...........########################################
....#.........-.....+......#A..........#########################################
....#........-......+......#A........###########################################
....###AAAAA-###############A......#############################################
....|......-....|..........|A.....##############################################
....|.....-.....|..........|A..#################################################
....#..........-....#......#A...........##.#####################################
....#.........-.....+......#A..........##..#####################################
....#........-......+......#A........####..#####################################
....###AAAAA-###############A......######..#####################################
....|......-....|..........|A.....#######..#####################################
....|.....-.....|..........|A..##########..#####################################
....|....-......|..........|A.##################################################
....|...-.......|..........|####################################################
....|..-........|........#######################################################
@ -1376,3 +1377,77 @@ LOOT 1
fire
The giant frog extract will let you produce fire! But you need to take it to a magic fountain first.
OK
MOVE 4 Central Cavern Bottom Right
ROOM Bouncy Spike Maze
# wall
- staircase
. air
A wall sign
B bouncy wall
X sign
^ spike
| column
MAP
################################################################################
################################################################################
################################################################################
################################################################################
................................................................................
................................................................................
####............................................................................
####............................................................................
####....XXX.....................................................................
####.....|......................................................................
####.....|......................................................................
####--##########################################################################
####--##########################################################################
####-b............................................^^^^^......^..................
####--.................................^^.........^..........^..................
####-b................^...........................^..........^..................
####--#########--.............................^...^..........^.....--###########
####-b##########-.................................^..........^.....-############
####--###########.................................^..........^.....#############
####-b###########............................................^.....#############
####--###########...........^^^^^^............^..............^.....#############
####-b###########...........^b^b^b...........................^.....#############
####--###########.............................^..............^.....#############
####-b###########..................................................#############
####..........###.^...........................^....................#############
####..........###..................................................#############
####..........###..................................................#############
#######.......###.............................^....................#############
####..........###......................^^^^............^^^^^.......#############
####..........###.......................^b....^....................#############
####AAA##########BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB#############
################################################################################
################################################################################
################################################################################
################################################################################
#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b
################################################################################
#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b
################################################################################
#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b
NPC 76 77 0
@Forest Sign
DEADLY TRAPS AHEAD
NPC 43 232 0
@Floor Engraving
Ad Aerarium
VTRAP 145 56
VTRAP 160 56
VTRAP 175 56
VTRAP 200 56
VTRAP 210 56
VTRAP 220 56
VTRAP 230 56
VTRAP 280 56
VTRAP 290 56
VTRAP 300 56
VTRAP 310 56
VTRAP 400 56
VTRAP 410 56
VTRAP 420 56
VTRAP 430 56
OK

View File

@ -186,6 +186,15 @@ void load_room(fhstream& f, cell *c) {
b->respawn = b->where; b->postfix();
r.entities.emplace_back(std::move(b));
}
else if(cap == "VTRAP") {
auto b = std::make_unique<vtrap>();
sscanf(param.c_str(), "%lf%lf", &b->where.x, &b->where.y);
auto dat = b->get_dat();
b->vel.x = 0; b->vel.y = 150 * 0.005 * dat.modv * dat.d;
b->postfix();
r.entities.emplace_back(std::move(b));
}
else if(cap == "GRIDBUG") {
auto b = std::make_unique<gridbug>();
sscanf(param.c_str(), "%lf%lf", &b->where.x, &b->where.y);