Announcement: Be excellent to each other.


Caravel Forum : DROD Boards : Bugs : Import Player bugs
New Topic New Poll Post Reply
Poster Message
Remlin
Level: Master Delver
Rank Points: 181
Registered: 04-28-2005
IP: Logged

File: Remlin.player (7.5 MB)
Downloaded 40 times.
License: Public Domain
icon Import Player bugs (+1)  
I tried importing my JtRH player into TCB today, and hit multiple problems that are pretty easy to reproduce from the .player file, which I'm attaching. Here's steps to reproduce - hope this helps tracking down some bugs.

Do a fresh install of 3.1, start it up, and import the attached player.

1: Import the hold The Monsters Cave, and then reimport the player. TCB should crash.

2: Delete The Monsters Cave, import the hold Beethro's Generic Quest, and then reimport the player. drod.err should get a bunch of these:
Assertion error in line 6519 of .\DbRooms.cpp: "!pMonster || pMonster->wType != wMotherType || wTile == wTarType"

3: Delete Beethro's Generic Quest, import the hold Caverns of Animus, and then reimport the player. drod.err should get some of these:
Assertion error in line 5022 of .\CurrentGame.cpp: "this->bIsGameActive"

4: And finally a no demo recording bug. Delete Caverns of Animus, import the hold MetDROiD Echoes, and then reimport the player. Restore to Dungeon Cells, Entrance. (There are two levels with that name, you want the second one, with just one room and a bunch of slayers.) You should be in a position where you can just run to the exit stairs without having to do anything - but no demo gets recorded.
10-14-2007 at 01:15 AM
View Profile Send Private Message to User Show all user's posts Quote Reply
schep
Level: Smitemaster
Avatar
Rank Points: 865
Registered: 03-01-2005
IP: Logged
icon Re: Import Player bugs (+2)  
Investigating. Notes for myself and the curious:

1: The Monsters Cave has a room with a scroll tile but no scroll data. A NULL pointer is passed to CCurrentGame::ExpandText(), which crashes. I'm thinking an early return in ExpandText().

2: A number of rooms Beethro's Generic Quest create the situation where two tar mother eyes exist in the room, neither starts with tar underneath, Beethro is invisible, and only one of the eyes smells Beethro when the clock hand points to zero.

The assert error reported above is CDbRoom::GrowTar() essentially saying "Hey, I thought I already put tarstuff under all the same-type mothers." But no, it only put tarstuff under the mothers who were aware there's an enemy in the room. Now to figure out what AE/JtRH did in this situation....

3: Caverns of Animus has a room with staircases at a reachable room edge. There is a length-zero victory demo of entering at that edge. (That demo's wEndTurnNo is -1. Not sure if that's normal or not.) CDbDemo::Test() calls GetSavedCurrentGame(), which sets the game as exited-level and inactive while processing turn zero, and then Test() fails to notice that, causing two assertions.


[Last edited by schep at 10-18-2007 05:12 AM]
10-17-2007 at 01:33 AM
View Profile Send Private Message to User Send Email to User Show all user's posts This architect's holds Quote Reply
schep
Level: Smitemaster
Avatar
Rank Points: 865
Registered: 03-01-2005
IP: Logged
icon Re: Import Player bugs (+1)  
Fixed issues 1 and 2.

There's an uncommon gameplay issue related to number 2: TCB acted differently from JtRH when you combine invisibility with tarstuff mothers which aren't on tarstuff. In Beethro's Generic Quest, the bug only caused assertions, but in other holds it could have also broken demos. With this fix, things now match the 2.0 behavior: tar and mud will appear underneath ALL mothers of the same type before the tarstuff grows. (Related rarer change: if an unaware gel mother is next to gel but not on gel, and the nearby gel is being grown by a different gel mother, it may grow underneath the unaware gel mother.)

Still looking at 3 and 4, but it seemed like a good idea to get these fixes in before the next testing build.


[Last edited by schep at 11-09-2007 12:39 AM]
11-09-2007 at 12:38 AM
View Profile Send Private Message to User Send Email to User Show all user's posts This architect's holds Quote Reply
schep
Level: Smitemaster
Avatar
Rank Points: 865
Registered: 03-01-2005
IP: Logged
icon Re: Import Player bugs (0)  
When a room is conquered AND exited on turn zero (most likely the player entered the room without monsters on a staircase), and Victory Demos are enabled:

AE and 2.0.* record an invalid victory demo that claims its length is zero but contains the commands from the previous room. They also put a handful of error messages in drod.err.

3.* does not record any demo.

None of this is quite ideal, but since length zero demos are so rare and most of the code really doesn't want to think about the possibility, I'm just making a change to consider demos invalid if the player leaves on turn zero.

11-29-2007 at 02:13 AM
View Profile Send Private Message to User Send Email to User Show all user's posts This architect's holds Quote Reply
schep
Level: Smitemaster
Avatar
Rank Points: 865
Registered: 03-01-2005
IP: Logged
icon Re: Import Player bugs (0)  
4. The saved game on the checkpoint in that room claims that the room was previously conquered. So it's not a bug that DROD doesn't save a victory demo now. The real question is, how did the saved game get that way? The Room Start saved game for the same room is correct... Does anyone (especially Mike) recall a 2.0 bugfix that would explain wrongly saving the current room in ConqueredRooms?
11-29-2007 at 04:11 AM
View Profile Send Private Message to User Send Email to User Show all user's posts This architect's holds Quote Reply
New Topic New Poll Post Reply
Caravel Forum : DROD Boards : Bugs : Import Player bugs
Surf To:


Forum Rules:
Can I post a new topic? No
Can I reply? No
Can I read? Yes
HTML Enabled? No
UBBC Enabled? Yes
Words Filter Enable? No

Contact Us | CaravelGames.com

Powered by: tForum tForumHacks Edition b0.98.8
Originally created by Toan Huynh (Copyright © 2000)
Enhanced by the tForumHacks team and the Caravel team.