Describe BugReport722 here.
2.3.2 - Submitted by CurtCook
In orc caves.. (but presumably anywhere) if you have a purple staircase that teleports you to a different dungeon and a trap of teleport stairs.. the resulting movement of purple stairs not only regenerates the targeted location but also has the ability to point to null. I have a save file located at:
http://web.mit.edu/curtcook/www/bugAlkie
that demonstrates this. The stair trap is on the Rune[Arrow] and obviously the movements determine the random seed for the stair movement.
If this is unclear (as i'm a little groggy) There is a:
Purple Teleport Dungeon Staircase >
Trap of Move Stair/Teleport Stair on the floor below the blue Rune ?
Depending on the random walk to the trap, purple stairs:
1. Change location (expected)
2. Change target destination (probably expected)
3. Sometimes point to a null location, crashing the program
4. Sometimes point to recall (in this case, Bree)
NOTE: if you cant get it to reproduce, you can try to step on the trap more than once
- Was able to get this to reproduce on 2.3.1. -Dogun
2.3.3 - Submitted by CurtCook
Was able to get it to reproduce in 2.3.3 as well Using the save file provided, move in this sequence
2n, 2w, 2n, w, s (stairs will move)
n,s (stairs will move)
n,s (stairs will move)
n,s (stairs will move)
7w, 2s game will crash without even going down the staircase
NeilStevens: We know what's causing this, and in essence the trap is broken by design. Maybe we should release a new ToME 2, that removes this trap.
was working with dogun on this, and if you just transfer the special over it seems to work b/c it doesnt regenerate the purple stairs. i'll get him to paste what he did here
[dogun]
--- tome-231-src.orig/src/traps.c 2004-12-29 16:24:30.000000000 -0800
+++ tome-231-src/src/traps.c 2006-10-16 00:52:03.000000000 -0700
@@ -1110,6 +1110,7 @@
s16b cnt = 0;
s16b cnt_seen = 0;
s16b tmps, tmpx;
+ s16b tmpspecial, tmpspecial2;
u32b tmpf;
bool seen = FALSE;
s16b index_x[20], index_y[20]; /* 20 stairs per level is enough? */
@@ -1167,11 +1168,17 @@
tmpx = cv_ptr2->mimic;
tmps = cv_ptr2->info;
tmpf = cv_ptr2->feat;
+ tmpspecial = cv_ptr2->special;
+ tmpspecial2 = cv_ptr2->special2;
cave[cy][cx].mimic = cv_ptr->mimic;
cave[cy][cx].info = cv_ptr->info;
+ cave[cy][cx].special = cv_ptr->special;
+ cave[cy][cx].special2 = cv_ptr->special2;
cave_set_feat(cy, cx, cv_ptr->feat);
cv_ptr->mimic = tmpx;
cv_ptr->info = tmps;
+ cv_ptr->special = tmpspecial;
+ cv_ptr->special2 = tmpspecial2;
cave_set_feat(index_y[i], index_x[i], tmpf);
/* if we are placing walls in rooms, make them rubble instead */
This seems to solve the problem. I have no idea what those two fields do, but I'm guessing that not copying them was the bug. You sure this is broken by design?
ToME Wiki