---------------- UPDATED DOWNLOAD --------------------
http://www.solidfile...5/ZodiacUpdate_(6-15-14).qst
--------------------------------------------------------------------------
So mostly new stuff this time. The return to the Leo Zone is very plotty. This means a bunch of new custom bosses, cutscenes, and a new corridor... lots of work. All pretty well done now. There are some hiccups in a few places, but it works.
One request: IF YOU GET AS FAR AS THE PANDORA, PLEASE DON'T POST PLOT POINTS. A lot of things get revealed at this point, and though there's much more to come, there are pretty major spoilers accessible in the file now.
EDIT - Okay, so this is making me nuts.
When a boss dies in Zodiac, I have to trigger the secrets in the room, ensure the secrets carryover to another room, and get the player to another room without the boss. I originally did this by spawning a "kill all enemies" item and giving it to the player. Then I started clearing the enemies manually and moving the player to a different screen with Warp commands. The cleanest way is to just hit "Screen->TriggerSecrets()." Sometimes that doesn't seem to stick, so I started combining "Screen->TriggerSecrets()" with another step; all walkable tiles become Secret Combo 16, which is set to a walk->trigger combo that, in turn, has a Secret Flag 17 on it. Then, the next step the player takes should manually trigger secrets on the screen. Secret Combo 17, is, finally, the direct warp tile we want.
So, why do I have so many different ways of ending a boss battle? BECAUSE NOT ONE OF THESE TECHNIQUES SEEMS TO WORK ALL THE TIME. It's getting supremely irritating. Each time I make a boss, particularly in the flying levels, I have to test out multiple different combinations of script endings and room setups before I find one that hits the carryover I need AND actually moves the player. I don't know why it's a bigger problem with flying levels, but it seems to be. I'm especially annoying with Screen->TriggerSecrets() because it should work ALWAYS, but for some reason there are times when it just... doesnt.
If anyone knows what the poop is going on, by all me means, tell me what I'm missing here.
EDIT2 - I think some of my problems stem from how ZScript treats pointers to NPCs. Someone can correct me if I'm wrong, but it appears that when an NPC dies, the pointer previously pointing to that NPC will immediately switch to point at a different NPC on the same screen. In other words, as long as some enemy is alive, NPC->isValid(); will never return false. Is that right?
That doesn't solve all the problems, though. Why doesn't Screen->TriggerSecrets() automatically trigger carryovers? Why do I have to put manual triggers on the screen too if I want to make that work? Ugh.
I'd like to find a general "Enemy_Defeated" algorithm that works all the time. Then I can go back and streamline the boss code a great deal. This is going to be really important, because I'm getting near the endgame now, which will involve me coding lots and lots of new bosses and corridors before I'm done. I need to gather my efficiencies now.
Edited by C-Dawg, 17 June 2014 - 09:55 AM.