From 4664591e3a656b7a87c6d0c3070c860debb02adf Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Thu, 31 Jul 2025 16:50:02 +0200 Subject: [PATCH] ru:: bottom spikes --- rogueviz/ru/entity.cpp | 3 +++ rogueviz/ru/globals.cpp | 5 ++++- rogueviz/ru/map.ru | 10 +++++----- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/rogueviz/ru/entity.cpp b/rogueviz/ru/entity.cpp index 56b393bd..1d3c3f26 100644 --- a/rogueviz/ru/entity.cpp +++ b/rogueviz/ru/entity.cpp @@ -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(); } diff --git a/rogueviz/ru/globals.cpp b/rogueviz/ru/globals.cpp index 2a5c35af..8d3f4d7a 100644 --- a/rogueviz/ru/globals.cpp +++ b/rogueviz/ru/globals.cpp @@ -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; diff --git a/rogueviz/ru/map.ru b/rogueviz/ru/map.ru index 02281a24..d821776a 100644 --- a/rogueviz/ru/map.ru +++ b/rogueviz/ru/map.ru @@ -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 ################################################################################