Page 1 of 1

[1.1.4]3d floor's ceiling doesn't alway raise fully

Posted: Sun Jun 08, 2008 1:36
by chopkinsca
This may be a bit hard to show, but in my project, Phocas Island 2, there is a cave that gets flooded with water. When I first released the project, the water alway rose to the proper height. Now that I'm redoing parts of the project, I find that the water doesn't always rise fully.

Now how to demonstrate the problem, which is tricky. First off, the mapset is here.
Start a new game, then on map03, warp to coords: x: 16500, Y -4123. You probably need to give yourself a weapon, and godmode. A bit further in the cave there are a ring of pillars with cracks on them, Hit each one until they break. The ceiling towards the back will fall down, gradually most of the chamber with the pillars will have been fallen down. The water is also raising. Right where you warped to, the water should raise high enough to reach the ledge above, but it usually doesn't.

Sorry for making it so difficult to see the problem (not even sure if it is broken 100% of the time). I tried to isolate it, but the bug went away. Maybe if you really need it, I'll try isolating it again.

Posted: Sun Jun 08, 2008 8:33
by Graf Zahl
Can you please point me to the script code and the sector numbers involved? Judging from your description I can't find it in an editor.

Posted: Sun Jun 08, 2008 11:08
by Enjay
I think it's this one:

Code: Select all

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//underground pillars
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
script 31 (int pillar) {	
	if (pillars[pillar - 1] <= 4){
		activatorsound("crackrock", 127);
		pillars[pillar - 1]++;
	}
	
	
	if (pillars[pillar - 1] >= pillarhittarget[pillar - 1] && pillardone[pillar - 1] != 1) {
		pillardone[pillar- 1] = 1;
		Radius_Quake(1, 64, 0, 10, 69);
		delay(10);
		SetLineTexture((21 + pillar), side_front, TEXTURE_MIDDLE, "");
		floor_lowerbyvalue(pillartids[pillar - 1], 128, 32);
		ceiling_raisebyvalue(pillartids[pillar - 1], 128, 56);
		
		pillars[pillar - 1] = 6;
	}
	
	for(int x = 0; x <=5; x++) {
		if(pillars[x] != 6) { terminate; }
	}
	
	if(underwaterquake == 1) { terminate; }
	underwaterquake = 1;
	delay(15);
	radius_quake(8, 312, 0, 25, 69);
	Ceiling_LowerAndCrush(85, 128, 1000);
	floor_lowerbyvalue(105, 256, 300);
	SetHudSize(512, 384, 0);
	hudmessage(s: "Uh oh... better run" 
		; 0 | HUDMSG_LOG, 2, cr_green, messagex, messagey, 3.0);
	
	ceiling_raisebyvalue(101, 4, 200); //raise water
	//floor_raisebyvalue(102, 4, 200);
	
	delay(35 * 4);
	ceiling_lowerandcrush(86, 128, 1000);
	delay(35 * 3);
	ceiling_lowerandcrush(87, 128, 1000);
	ceiling_lowerandcrush(103, 128, 1000);
	delay(35 * 1);
	ceiling_lowerandcrush(88, 128, 1000);
	ceiling_lowerandcrush(104, 128, 1000);
	
	//open up cross-cave
	floor_lowerbyvalue(117, 8, 80);
	ceiling_raisebyvalue(117, 8, 80);
	floor_lowerbyvalue(118, 8, 40);
	ceiling_raisebyvalue(118, 8, 40);
	
	
	for(int m = 89; m <= 100; m++) {
		floor_lowerbyvalue(m, 32, random(64, 155));
	}
	
	thing_deactivate(77);
	floor_lowerbyvalue(3, 64, 88);
	Floor_LowerByValue(46, 64, 88);
	delay(15);
	thing_deactivate(70);
	changemcount(2);
	ceiling_lowerbyvalue(164, 128, 114);
		
}
However, I keep getting crushed by the pillars, so I'm not quite sure which sector is the "ledge above".

BTW, as soon as you warp to the map, you seem to get taken to map20 automatically. However, typing

map map03
warp 16500 -4123

without closing the console takes you to the appropriate place.

Posted: Sun Jun 08, 2008 19:05
by chopkinsca
Enjay wrote:I think it's this one:
Yep, sector 101 (with the "raise water" comment").
Enjay wrote: However, I keep getting crushed by the pillars, so I'm not quite sure which sector is the "ledge above".
when you warp to the coordinates, if you check your map you can see there is a ledge with more cave above you.




Edit: I found out what was casuing the problem, but not sure why. go through map20 to get to map03 then warp to the coordinates. (or if you want to start straight on map03, change the script on line 161 from "if(gamemode == 1)" to "if(gamemode == 0)". This spawns a cacodemon that has too much health to kill. For some reason, if this cacodemon is present when the caves start to fall and flood, the water doesn't raise fully, but if you remove the cacodemon via a script right before the water raises, it raises fully. I found a fix so I suppose this doesn't matter, but it might be a bug so who know.s

edit: isolated the problem and created a example .wad which is attached

Posted: Sun Jun 08, 2008 20:00
by Enjay
Well it's definitely something to do with the Caco being alive. Although he can't be killed by conventional means "kill monsters" does it and as soon as he is dead, the water starts to rise. Whether it's actually a bug or not I guess Graf would be the one to confirm one way or the other.

Posted: Mon Jun 09, 2008 19:07
by Graf Zahl
fixed. Something seems to have changed when I added the 3DMIDTEX feature.