jmerry Posted February 1 Share Posted February 1 Level 1 of Watcher's Keep has a trigger in the area script to adjust its difficulty. If the party is too small or too low-level, half of the statues are removed. In addition, each of the four spawn points is replaced by a counterpart in exactly the same place that spawns easier monsters - mephits instead of mists, two sword spiders and two ettercaps instead of five sword spiders and three phase spiders, and so on. The problem? For the spawn points, this is done by deactivating the "hard" spawn points and activating the "easy" ones. That means that there's a brief window when you first enter the area before the script has a chance to run in which the "hard" spawn points are active. And one of those spawn points (the one that spawns a pack of mist creatures) is close enough to the entrance that it's likely to spawn its creatures during that window. If the creatures are already spawned, deactivating the spawn point they came from doesn't remove them. Have fun fighting vampiric wraiths with your undersized/underleveled party. Clearly, those mists aren't supposed to spawn when the party doesn't meet the size/level requirements (5+ party members, average level 14). But quite frequently (as attested by the no-reload thread at Beamdog), they do. What can be done about this longstanding bug? I'd say the best bet is to rework the difficulty trigger and have all of the spawn points start inactive. Activate the easy spawn points if it's a small or low-level party, activate the hard spawn points if it's a full party with sufficient levels. On the script side, follow this block: Spoiler IF Global("SetDifficulty","AR3001",0) // Watcher's Keep -- Altar level Global("StartMP","GLOBAL",0) OR(3) NumInPartyLT(5) GlobalGT("XPGiven","GLOBAL",500000) LevelPartyLT(14) THEN RESPONSE #100 SetGlobal("SetDifficulty","AR3001",1) // Watcher's Keep -- Altar level ActionOverride("gorsta03",DestroySelf()) ActionOverride("gorsta04",DestroySelf()) ActionOverride("gorsta05",DestroySelf()) ActionOverride("gorsta06",DestroySelf()) ActionOverride("gorsta11",DestroySelf()) ActionOverride("gorsta12",DestroySelf()) SetGlobal("SPRITE_IS_DEADgorsta03","GLOBAL",1) SetGlobal("SPRITE_IS_DEADgorsta04","GLOBAL",1) SetGlobal("SPRITE_IS_DEADgorsta05","GLOBAL",1) SetGlobal("SPRITE_IS_DEADgorsta06","GLOBAL",1) SetGlobal("SPRITE_IS_DEADgorsta11","GLOBAL",1) SetGlobal("SPRITE_IS_DEADgorsta12","GLOBAL",1) SpawnPtActivate("SpawnPoint5") SpawnPtActivate("SpawnPoint6") SpawnPtActivate("SpawnPoint7") SpawnPtActivate("SpawnPoint8") SpawnPtDeactivate("SpawnPoint1") SpawnPtDeactivate("SpawnPoint2") SpawnPtDeactivate("SpawnPoint3") SpawnPtDeactivate("SpawnPoint4") END with this one: Spoiler IF Global("SetDifficulty","AR3001",0) // Watcher's Keep -- Altar level Global("ActivateSpawns","AR3001",0) // Watcher's Keep -- Altar level THEN RESPONSE #100 SetGlobal("ActivateSpawns","AR3001",1) // Watcher's Keep -- Altar level SpawnPtActivate("SpawnPoint1") SpawnPtActivate("SpawnPoint2") SpawnPtActivate("SpawnPoint3") SpawnPtActivate("SpawnPoint4") END Or maybe that new "ActivateSpawns" variable gets a prefix. Since "SetDifficulty" is also tested by the altar's script, I needed a new variable to ensure this block only runs once. On the area side, the first four spawn points get their "Is active" fields flipped from 1 to 0. Sadly, there aren't any functions for altering spawn points in base WeiDU, so this needs either a new library addition or low-level work. I went low-level in my mod's spawn point components, so I don't have that new function ready to go. Quote Link to comment
Recommended Posts
Join the conversation
You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.