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:
parent
355d98f80d
commit
65f0ce2f0e
@ -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}; }
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user