Page 1 of 1

This 'if' is true in GZD but not in QZandronum.

Posted: Sun Oct 27, 2024 9:17 pm
by Ravick
Hi there.

I'm working in a map and the team ask me to keep it compatible with QZandronum, so I test it in both GZDoom and QZan.

We have a custom skill level as follows:

Code: Select all

skill neiguimere	//don't ask
{
   SpawnFilter = hard//5
   SpawnMulti
   Name = "NEIGUIMERE" //PicName = "M_FRAMI"
   TextColor = "black" //because Qzan actually shows it in the menu
   Key = "9"
   MustConfirm = "face the neiguimere"
   ACSReturn = 100
   PlayerRespawn
   NoMenu //Doesn't work in QZan
}
And in the map, I have a script with this check:

Code: Select all

//In coop or neiguimere, spawns um cybie, nimps and some ammo.
//I've made it this way because in QZAn actors tagged as mp-only does not show in neiguimere

If ((GameType() == GAME_NET_COOPERATIVE) || (GameSkill () == 100))
 {
	 //do stuff
 }
The check shoul '//do stuff' if the map is being played in cooperative or if it is being played in the skill neiguimere.
In GZDoom, the //do stuff part happens normally, but not in QZAndronum. I guess I'm missing some crucial difference between the two source ports, but what difference is it? And how could I get ir working in QZAndronum?

Thanks in advanced. :)

Re: This 'if' is true in GZD but not in QZandronum.

Posted: Mon Oct 28, 2024 12:17 am
by Graf Zahl
As a first step, which of the two sub-expressions fails? And what does GameSkill() return in Zandronum?

Re: This 'if' is true in GZD but not in QZandronum.

Posted: Sat Nov 02, 2024 12:20 am
by Ravick
The GameSkill() returns 100 properly, but I'm guessing the sub-expression that fails is the second one despite of it, because I actually don't know how to test a map in coop mode in single player in Zandronum (in GZDoom I just use 'map mapname coop' in the console, but it seems to not work in (Q)Zandronum).


I've made a small 'excerpt' of the map in question and adapted it to run as map01 here in hope that it may help. In the starting room, there is a switch that prints the current game skill, another that restart the level in skill 100 (and also another that attempts to set the skill to 100, but it does not work and can be ignored).

In the second room there are a 3 imps (and 2 revs, if skill 100 works properly), that, once killed, trigger an script to open a door to the next room. Entering the door, a very short cut scene happens, after which another door opens and an archvile enters it. If the script works fine (i.e. in GZDoom), nearly 3 seconds after it, a cyberdemon should spawn at the same door the archvile came from.

I'm lost here. I guess I'm missing something about Zandronum as I usually don't map for it. Thanks for helping.

Re: This 'if' is true in GZD but not in QZandronum.

Posted: Sat Nov 02, 2024 3:03 am
by Blue Shadow
Okay, what value does GameType() return when testing with Q/Zandronum in coop (tell your teammates to test it for you in coop)?