Also To Consider
- Does it only affect SoA or also ID1 and/or DoE?
- Is it only happening on this one map or in general?
- Is it only about the silver key or also the gold one? Or maybe even other items?
So far it looks like it's only happening in hip1m4 and only with the silver key, which makes the whole thing even weirder. That key might have special flags or something, maybe?
HIP1M4 Silver Key
I think I found the reason. On Easy the Silver Key always spawns without any problem, and there's a grunt or two in that room. On Normal and Hard, there's an Enforcer right next to the Silver Key, though not on top of it (I even opened the extracted .ent file as a .map in TrenchBroom to check) and this Enforcer is set to patrol that area using path_corners, as it's usually done.
By moving info_player_start into that room and restarting the map over and over, I noticed that besides the Silver Key not always spawning, this Enforcer is spawned somewhat differently, sometimes it looked like he was almost into the wall (but not really) and was not aggro'd by the sight of the player, and sometimes he was spawned kinda normally and was aware of the player immediately.
I don't know what causes this, must be something in QuakeC, because this problem does not happen in original or rerelease Hipnotic progs.dat.
However it can be fixed by finding this in the HIP1M4.ENT:
"origin" "16 976 -120"
and changing it to something like
"origin" "48 976 -120"
and it solves this particular issue.
Alright, at least that means it's not an issue with progs.dat. Would have been a surprise, anyway, as it only affects a specific map, so if it HAD been code-related, this should happen anywhere, ofc.
Thanks for already providing a fix for the glitch! Will just make an ent file for this map as well, then.
Forget what I wrote above. As you said, ofc it must have something to do with progs.dat since it doesn't happen without the mod.
It would probably make sense to search for what's causing this in the source files since it might also affect other maps, even though it seems to be a very specific case, possibly unique. We can't be sure, though.
I don't know anything about QuakeC but in your fixes you included the sources. I compared stuff like enforcer.qc and items.qc between id1 and hipnotic and there are some differences. Shouldn't they be the same? I think SOA-specific stuff is in hip*.qc?
I know you integrated a lot of QuakeC fixes into id1, but did you also integrate them (or all of it) into hipnotic/rogue?
I applied two different kinds of adjustments. First, I applied Maddes' QC fixes (by far not as many as for ID1, but most of those listed on his website), then I did a code cleanup to eliminate compiler warnings, which was often not much more than commenting out unused variables.
I did some first comparisons of the unchanged sourcefiles vs my first and second edits and couldn't find any critical deviations which could cause this. Natural suspects would be enforcer.qc or monsters.qc, maybe items.qc. You can compare original source with mine via WinMerge. Maybe someone with profound QC knowledge can do that.
Anyway, your ent fix works. Tested with it on skill 1+2, key appeared every time. I still feel a bit uncomfortable with it, though, knowing it just wouldn't happen in vanilla at all, without any map entity change.
Regarding The Other Thing
Yes, the mission packs share a lot of code with ID1, but there are still a lot of deviations even outside of the source files they added. Often they fixed flawed code or added some to make new features work. Under no circumstances can you just copy over ID1 stuff into the mission packs! You need to treat SoA/DoE stuff as something completely separate.
So far it looks like the hip1m4 is an isolated case. I am still curious which of my edits could trigger this. It would have to be something that makes enemies spawn at slightly different locations all the time, maybe to bypass a related problem with spawns in general.
Seven Helped Me
To identify the source of the issue. So it looks like items.qc is loaded too early in the compilation list. I will change that now and see if it fixes the problem without the need of a new ent file.
Appreciate your work on this dude.
Gotta Correct Myself
It's not about compilation order of items.qc in progs.src. It has rather to do with adjustments to monster AI which also affect item spawns. By making them appear later, potential conflicts can be avoided.
Hey, NightFright o/
There is something that has always bothered me about the armor code. If the player gets a yellow armor first, he can't get a green armor when his armor points are less than 100... is this considered a bug?
Green, Yellow and Red armor have different damage absorb percentages. Green has 30%, Yellow 60% and Red is 80%. That's why they also have different armor points values, otherwise Red and Yellow would just disappear too quickly.
Players in Yellow Armor cannot collect Green Armor unless their Armor points are below 50. This sort of makes sense because 50 points of 60% absorb is basically the same as 100 points of 30% absorb.
Players in Red Armor can only collect Yellow Armor when their Armor points are below 113, and Green Armor when they are below 38.
Basically, the code (perhaps not perfect) doesn't let you pick up worse armor than you currently have.
Not Everything That Feels "wrong"
is a bug. Same with losing armor when drowning. It might be a stupid concept, but still reduces drowning damage. Removing it would break maps which rely on this mechanic. Losing armor with active Pentagram... also an interesting topic, but it's rather something for gameplay mods like Copper.
Quake 2 solved this by having different armour types stack. That's not to say that it's solution is any more right and wrong than Quake's, it's just different. For better or worse the way Quake handles it is now a gameplay mechanic, and changing it could break existing gameplay.
"Green, Yellow and Red armor have different damage absorb percentages. Green has 30%, Yellow 60% and Red is 80"
I play quake since 1996 and never realized that! I always thought the only difference between them was the 100/150/200 armor points.
thanks for clarifying o/
In Doom Classic
Green and blue armor actually work in a similar way.
Fixed the issue with missing silver key in HIP1M4. Also tried to solve the Enforcer telefrag in E2M1, but it seems Quake Enhanced fixes don't work so well in other ports. Anyway.
Download Rev.5 (38.6 MB)
See readme for details
- Nextthink fixes are back without breaking HIP1M4
- Swimming up with +jump now as fast as moving
- Autoaiming no longer reset after loading new map
Download Rev.6 (38.6 MB)
See readme for details
- Progs.dat for ID1 rewritten entirely, with essential fixes included only (-40KB compiled code compared to previous versions)
- Removed start.ent to avoid conflicts with start.bsp used in many other mods
- More vital fixes for SoA and DoE (smooth plat movement which improves cart rides e.g. in HIP3M1 or R1M4, improved weapon switching, walkframe leak fix...)
Download Rev.7 (38.3 MB)
See readme for details
- Even though the ID1 progs.dat now does NOT include the full extent of the URQP fixes any longer, rest assured it still contains all fixes necessary for a good singleplayer and multiplayer experience.
- You should now not have problems any more with addons that come with their own start map (if named start.bsp).
If you want I can add your additional bugfixes to the Quake Info Pool list.
Provided you are able to figure out what I did. Because at this point, I'm afraid I can't...
Thanks for all the wonderful documentation at QIP. I learned a lot. However, I though the site was out of date (per a little message on one of the pages there).
Are you updating things now?
Holy crap you are updating the site! I should have just checked. Already some good links there. Nice to see.
After All These Years
Miracles can still happen!