1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-08-27 16:02:19 +00:00

ru:: bottom spikes

This commit is contained in:
Zeno Rogue 2025-07-31 16:50:02 +02:00
parent d2ef8d1caa
commit 4664591e3a
3 changed files with 12 additions and 6 deletions

View File

@ -104,6 +104,7 @@ void entity::apply_walls() {
for(int x = obb.minx; x < obb.maxx; x++) for(int y = obb.maxy; y < jbb.maxy; y++) {
eWall b = current_room->at(x, y);
if(walls[b].flags & W_DOWNWARD) continue;
if(walls[b].flags & blocking) {
if(walls[b].flags & W_BOUNCY) { vel.y = -vel.y; apply_grav(); apply_grav(); if(vel.y > 0) vel.y = 0; on_bounce = true; goto again; }
on_floor = true;
@ -154,6 +155,7 @@ void entity::apply_walls() {
for(int x = obb.maxx; x < jbb.maxx; x++) for(int y = jbb.miny; y < jbb.maxy; y++) {
eWall b = current_room->at(x, y);
if((walls[b].flags & W_DOWNWARD) && b == current_room->at(x-1, y)) continue;
if(walls[b].flags & W_BLOCK) {
if(walls[b].flags & W_BOUNCY) { vel.x = -vel.x; on_bounce = true; goto again; }
if(freezing()) { hit_wall(); }
@ -170,6 +172,7 @@ void entity::apply_walls() {
for(int x = jbb.minx; x < obb.minx; x++) for(int y = jbb.miny; y < jbb.maxy; y++) {
eWall b = current_room->at(x, y);
if((walls[b].flags & W_DOWNWARD) && b == current_room->at(x+1, y)) continue;
if(walls[b].flags & W_BLOCK) {
if(walls[b].flags & W_BOUNCY) { vel.x = -vel.x; on_bounce = true; goto again; }
if(freezing()) { hit_wall(); }

View File

@ -58,7 +58,8 @@ struct ruwall {
enum eWall {
wAir, wWall, wBouncy, wSpike, wWater, wFrozen, wDoor, wSmashedDoor,
wLockedDoor, wFountain, wBluePortal, wOrangePortal, wPlatform, wStaircase,
wColumn, wForge, wWoodWall, wShopDoor, wSecretPassage, wSign, wWallSign, wTimeDoor, wGUARD };
wColumn, wForge, wWoodWall, wShopDoor, wSecretPassage, wSign, wWallSign, wTimeDoor,
wBottomSpike, wGUARD };
flagtype W_BLOCK = 1;
flagtype W_TRANS = 2;
@ -69,6 +70,7 @@ flagtype W_BOUNCY = 32;
flagtype W_FROZEN = 64;
flagtype W_BLOCKBIRD = 128;
flagtype W_STABLE = 256;
flagtype W_DOWNWARD = 512;
constexpr int qwall = int(wGUARD);
@ -95,6 +97,7 @@ ruwall walls[qwall] = {
{"sign", "X", 0xFFFF40FF, W_TRANS, "You need to wait close to this sign to read it."},
{"wall sign", "X", 0xFFFFC0FF, W_BLOCK, "You need to wait close to this sign to read it."},
{"time door", "#", 0x8080FFFF, W_BLOCK | W_STABLE, "A powerful door, opened by a mechanism."},
{"bottom spike", "v", 0xC08080FF, W_TRANS | W_PAIN | W_BLOCKBIRD | W_DOWNWARD, "A downward-pointing spike. You can fall from above through it safely, but otherwise, it is very dangerous."},
};
int sel = 1;

View File

@ -2055,7 +2055,7 @@ ROOM Long Rope I
A staircase
. air
- platform
^ spike
^ bottom spike
MAP
########....................^.........^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
########------------........^.........^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^....
@ -2103,7 +2103,7 @@ MOVE 2 Central Cavern Left
ROOM Long Rope Ib
# wall
. air
^ spike
^ bottom spike
MAP
^^^^...^.......#################################################################
......^........#################################################################
@ -2151,7 +2151,7 @@ MOVE 0 Long Rope I
ROOM Long Rope II
# wall
. air
^ spike
^ bottom spike
MAP
######################......................####################################
#####################........................###################################
@ -2201,7 +2201,7 @@ ROOM Long Rope IIb
# wall
- staircase
. air
^ spike
^ bottom spike
MAP
################################################################################
################################################################################
@ -2251,7 +2251,7 @@ ROOM Long Rope IIc
- platform
. air
A bouncy wall
^ spike
^ bottom spike
| column
MAP
################################################################################