If that's the case, maybe I can figure things out myself. I usually play solo so I find the EE spawns really disappointing - you'll never see a Winter Wolf for example, and the Gnoll Stronghold being defended by a total of 15 Gnolls is... yeah.
Basically, there are two main problems with the mod now: one, enemies sometimes spawn just as you close in on the spawn point. I assume simply increasing the spawn range from 60 to 90 would do the job.
Two, the new formula seems a bit TOO aggressive? I managed to run into a Vampire Wolf in area SS from Beregost. My average level couldn't have been higher than 2-3... it's not like it's impossible, in fact I love the XP and drops(scrolls) but it kind of, well, immersion-breaking. I have no idea how the level scaling actually works, but I assume it's just some kind of table, so stretching it by 100% would make for a nice middle ground.
Anyway, I understand you can't be bothered with the mod anymore, so I wondered if there's maybe a way for me to make these adjustments myself, if you could only tell me where in the files I can find the variables.
@blackchimes - There's no table. It's just a pile of scripts. You can modify the scripts to increase the level limits or change out the creatures spawned. If you're good with regexps, you can probably write an awk script to automate the process.
If that's the case, maybe I can figure things out myself. I usually play solo so I find the EE spawns really disappointing - you'll never see a Winter Wolf for example, and the Gnoll Stronghold being defended by a total of 15 Gnolls is... yeah.
Basically, there are two main problems with the mod now: one, enemies sometimes spawn just as you close in on the spawn point. I assume simply increasing the spawn range from 60 to 90 would do the job.
Two, the new formula seems a bit TOO aggressive? I managed to run into a Vampire Wolf in area SS from Beregost. My average level couldn't have been higher than 2-3... it's not like it's impossible, in fact I love the XP and drops(scrolls) but it kind of, well, immersion-breaking. I have no idea how the level scaling actually works, but I assume it's just some kind of table, so stretching it by 100% would make for a nice middle ground.
Anyway, I understand you can't be bothered with the mod anymore, so I wondered if there's maybe a way for me to make these adjustments myself, if you could only tell me where in the files I can find the variables.
Always on the hunt for a good spawn mod [thanks AstroBryGuy]. However, this mod needs DVs added to creatures or the Range(O:Object*,I:Range*) triggers in the scripts are ignored. With permission, I can attach a zip with a fix. Also, you can change ALL 384 scripts spawn ranges with Notepadd++ (using WeiDU Highlighter for Notepad++) in one shot with find and replace - powerful tool to edit .BAF files I changed the range from 60 to 75 by replacing ,60) with ,75). Not going to buy SoD, so this mod is good for me.
With permission from AstroBryGuy...I can attach a updated fix zip [missing DVs in order for Range to work in the scripts] and increased the trigger distance from 60 to 75 [using Notepad++ with WeiDU Highlighter to do all at once via find/replace]. I assume this mod is still a go for those that don't have SoD like me
TP2 needs many of these for Range(O:Object*,I:Range*):
I just want to say that this is one of my favourite mods (of the mods I have tried, it is my favourite; however, I'm getting a new computer soon, and I plan to check out more mods with that); I don't like facing hordes of tough enemies just because I have a full party, and this mod alleviates that problem (for the most part, at least). Honestly, I'm not sure what else could be added, but I still hope that someone else picks up this project. Thank you @AstroBryGuy for making this truly necessary mod!
It's too bad no-one is working on this mod anymore; I think it might be incompatible with the 2.5 patch. I was playing the v2.5 beta with both this mod and the Reveal Hidden Gameplay Options mod and was experiencing frequent crashes (I think the last one may have permanently slowed down my computer); without those two mods, no crashes. I really hope someone is able to either verify or corroborate my story . . .
EDIT: Mods don't seem to be the problem anymore, as I just had a crash last night with no mods installed. I filed a Redmine ticket thinking that it might be some weird, new compatibility issue with Intel HD Graphics cards and/or drivers. Still, I wish that either someone else would take up this project, or that I had the knowledge to be able to.
Better late than never Here is an updated version of this mod as v0.5. Added 90 death variables to TP2, extended range from 60 to 75 in scripts, and updated EXE to WeiDU v246.
Note that I discovered that the vertex is backwards for Top/Bottom. DLTCEP reports Regions >> Bounding box >> Recalculate flips the numbers around so that the small number is Top and large number is Bottom. Not sure how this impacts the trigger, but maybe it needs fixing down the road...?
Quick note...since this mod deactivates all area spawn points, there are two NPC areas that don't have scripts for spawn triggers: OH2000.ARE and OH3000.ARE. You'll need to turn the spawn points back on after install by going into Near Infinity and answering Yes (1) to "Is active?" for each. OH2000 has Spawn points 0-7 and OH3000 has 0-2 that will need edited [back] post install.
Yes, tw'od be nice to beef up the scripts and creatures like bgspawn mod, but that is a lot of tiny work! Best to use SCS [can always do a "wimp" install that will still update monster scripts] and maybe edit some of the creatures with Near Infinity to be more challenging. Example: many bandits are level ONE! Maybe bump them to level two
ok AstroBryGuy. Maybe I will do something when I have time but I no 0 about modding O_o.
The problem with SCS is that it only makes some specifics fights harder. . So 85% of the game remain a walk in the park even with SCS. ( especially in BG1)
Just played around with this mod on a clean install (2.5). Seems like just what I was looking for to increase random encounters. Thanks, @AstroBryGuy and @solar_one.
I was wondering if this mod can be altered to have the spawns at max level from the start? I would like to play the game with the spawns like they are in the tutu version and this is the only mod I could find that seems to be able to do it.
I managed to change all the spawn triggers to work on difficulty level and set the spawns exactly the same as in easytutu, so if you are like me and used to the harder spawns of easytutu you will enjoy this. I'll add this as an option to this mod as post it as v 0.6 soon I figure out how to do it. (new to weidu modding).
The 0.6 version is basically the same as the 0.5 version but now it has 2 options for the spawn system. Option 1 is the same as the original 0.5 mod, no changes. Option 2 is what I added and is game difficulty based & same spawn sizes as easytutu.
I have personally tested various different values, and the monsters always spawn in the same place when Range is set to 30 or higher. Using lower values does have an effect, but then they spawn even closer to the party.
The main problem is that the maximum value of 30 is kind of low in its own. It makes monsters spawn close enough that a pack of archers can immediately fire at your characters and kill the protagonist, if you are unlucky.
One way to "fix" this is to remove the Range trigger all together, but this will make the monsters spawn only once when entering the area, and will effectively disable all future respawns, which may be undesirable. However, I have not been able to find any better solution, at least for now.
Actually, the monsters do respawn with no Range specified. With this in mind, it may possibly be better to use a negation of !Range(30) in place of Range(30), which will make them respawn only when you are further than 30 feet from the spawn point. This should prevent them from spawning directly in your face.
I've came back to BGEE I installed it correctly and I am at the Ulcaster School. I wander a bit and move into a bunch of skeletons then another and a double size of kobold commandos all on the same screen at the same time is there suppose to be that many enemies? Without the BG Leveled Spawn Mods the area is a ghost town only come upon 5 or 6 skeletons 3 hobgoblins and the one wraith at the entrance to the school. Both easy tutu 0.6 and average level look to do the same thing.
Quick note...since this mod deactivates all area spawn points, there are two NPC areas that don't have scripts for spawn triggers: OH2000.ARE and OH3000.ARE. You'll need to turn the spawn points back on after install by going into Near Infinity and answering Yes (1) to "Is active?" for each. OH2000 has Spawn points 0-7 and OH3000 has 0-2 that will need edited [back] post install.
Is there a way via the WeiDU installer while it's going through the process of deactivating spawn points to get it to detect that it's working on these particular spawn points and skip, or reactivate them after the fact? If I hadn't read this "note" of yours, I would have never known this, not to mention that this can get old and tiring after a bit of needing to go back and manually reactivate stuff after every tweak of a mod install setup. Much better if these types of things can be handled by the mod installer (if possible) rather than asking folks to manually perform the steps.
I have personally tested various different values, and the monsters always spawn in the same place when Range is set to 30 or higher. Using lower values does have an effect, but then they spawn even closer to the party.
The main problem is that the maximum value of 30 is kind of low in its own. It makes monsters spawn close enough that a pack of archers can immediately fire at your characters and kill the protagonist, if you are unlucky.
One way to "fix" this is to remove the Range trigger all together, but this will make the monsters spawn only once when entering the area, and will effectively disable all future respawns, which may be undesirable. However, I have not been able to find any better solution, at least for now.
Actually, the monsters do respawn with no Range specified. With this in mind, it may possibly be better to use a negation of !Range(30) in place of Range(30), which will make them respawn only when you are further than 30 feet from the spawn point. This should prevent them from spawning directly in your face.
I tried testing this for myself, going through and editing all the Range([PC], 75) lines (from v0.6) to !Range([PC],30), as well as removing the lines completely and I was unable to notice an appreciable difference. They won't spawn until the center of the spawn point comes within view, so if the spawn will be a group of 6, at best (if auto-pause on visible enemy is enabled) you'll be able to stop with only 4 showing (and this is creeping up on the spawn point one step at a time; normally walking around you'll almost always be close enough for the whole group to be visible by the time it pops).
Now mind you, this is only from editing the .baf files in the scripts folder. I think in an earlier post AstroBryGuy mentioned something about using undetectable traps to trigger the spawns, so I don't know if they have a separate range somewhere (or if those were their ranges) or if he changed the trigger mechanism at some point (or I'm misunderstanding what he meant). I don't have anything to read the .vtx or .nfp files (and honestly have no idea what they would contain anyway), and from what little I understand of the .tp2 (WeiDU installer) file, I didn't see anything in there that stood out, but could have definitely missed something.
______________________________
For anyone interested in giving me a hand on understanding scripting, what lead me to looking into this was that I'm trying to do a solo run right now, but as this mod doesn't take party size into account, many of the spawns are way too tough for me to deal with. It's seeing my average party level as 4 (I'm playing f/m/t and am currently 3/3/4), and so many of the spawns are coming as groups of 6. I feel like some of these, if I was actually running around in a party of 4 or 6, I'd be able to handle em, but solo they're creaming me.
I'd like to make a change that takes party count into account as well. I've done some reading on the scripting this engine uses and think I have some understanding, but there are still a few points I'm unsure of, if anyone could answer them?
1) Am I able to grab the actual values for average party level and party count so I can perform arithmetic with them? (I feel as though if this is not possible, then I'm not going to bother as I have no interest in duplicating all of the blocks in the scripts multiple times over in almost 400 files just to do variations of NumInParty() checks.)
2) Assuming 1 is possible, is storing this to a variable for use as simple as:
And is LOCALS even the right var type here, or should I be using a GLOBAL?
3) Finally, the material I was reading on vars left me a little confused on the relationship between setting a variable and when it's actually usable? So, assuming 1 and 2 above are possible, which of the below methods would be appropriate for setting (and then using in a later block) the variable?
1st method:
IF
GLOBAL("myvar",LOCALS,0)
THEN
RESPONSE #100
//set the variable here
END
//If my understanding is correct, the script then "restarts" from the beginning
Or 2nd method:
IF
TRUE()
THEN
RESPONSE #100
//set the variable here
CONTINUE()
END
//If my understanding is correct, the script then continues on to the next IF block
I'm not even sure at what point the var gets reset (if at all), so maybe I should use method 2 without the CONTINUE() statement (call that method 3)? Or is there a completely different method I should be using to set the variable?
Quick post about the Range() Trigger for the benefit of anyone who liked this mod, other than the fact that spawned creatures appear well within line of sight (and very close indeed if you're hasted).
The Range() Trigger is not completely broken for ranges over the default visual range of 30. What matters is the type of parameter used to identify the object you are attempting to locate with that trigger.
This mod used Range([PC]) to check how far PCs are from the trap regions it uses as spawn points. That doesn't work because [PC] is an object identifier, and object identifiers only evaluate creatures within default visual range.
However, the Range() Trigger will accept an object reference as a parameter, and object references do work outside of the default visual range of 30. Player1 is one such example of an object reference.
This being so, if anyone looking for more control over the difficulty of random spawns is still interested in this mod, it can be made to work by replacing the Range([PC],XX) triggers with the following:
I can confirm that, with the above distance, the scripts have time to populate a spawn point so that the autopause catches creatures at the very limit of visual range, exactly like the vanilla spawn points (tested using the Godbow AND with the G3 Tweak that doubles movement outside of combat; that is one very fast-moving PC!).
One could arguably settle on a different value above 30 but below 50, but I myself don't want to mess around with nailing down the 'best' value to use. Others who know more than me might be able to chime in with reasons why Player1 etc fails under certain circumstances. If I'm wrong, I'd like to know!
I might add that the original mod is good, and the changes made by MachoGrande are very good. If I wanted a mod that replaced the existing spawn points with a system that was similar, but which gave me more control over the difficulty of the spawns, I'd be delighted to use this mod.
Is there anyone able to update this mod with the changes suggested by The_Baffled_King? So that monsters won't spawn in your face. I am unfortunately clueless as to how, or I would do it.
Tweaked the range checks to decrease mob popping in.
Added automatic INI preset options
Added an INI option to keep the vanilla spawnpoints enabled (to allow it playing nicely with the BG Enemy Randomizer mod)
Added Project Infinity metadata
Comments
If that's the case, maybe I can figure things out myself. I usually play solo so I find the EE spawns really disappointing - you'll never see a Winter Wolf for example, and the Gnoll Stronghold being defended by a total of 15 Gnolls is... yeah.
Basically, there are two main problems with the mod now: one, enemies sometimes spawn just as you close in on the spawn point. I assume simply increasing the spawn range from 60 to 90 would do the job.
Two, the new formula seems a bit TOO aggressive? I managed to run into a Vampire Wolf in area SS from Beregost. My average level couldn't have been higher than 2-3... it's not like it's impossible, in fact I love the XP and drops(scrolls) but it kind of, well, immersion-breaking. I have no idea how the level scaling actually works, but I assume it's just some kind of table, so stretching it by 100% would make for a nice middle ground.
Anyway, I understand you can't be bothered with the mod anymore, so I wondered if there's maybe a way for me to make these adjustments myself, if you could only tell me where in the files I can find the variables.
Example of edit needed in TP2:
COPY_EXISTING ~ANKHEG.CRE~ ~override~ // Assign death variable
WRITE_ASCII 0x280 ~ANKHEG~ #32
BUT_ONLY
Always run Near Infinity Tools --> Check --> Scripts after installs to catch errors...how I found.
TP2 needs many of these for Range(O:Object*,I:Range*):
COPY_EXISTING ~ANKHEG.CRE~ ~override~ // Assign death variable
WRITE_ASCII 0x280 ~ANKHEG~ #32
BUT_ONLY
It's too bad no-one is working on this mod anymore; I think it might be incompatible with the 2.5 patch. I was playing the v2.5 beta with both this mod and the Reveal Hidden Gameplay Options mod and was experiencing frequent crashes (I think the last one may have permanently slowed down my computer); without those two mods, no crashes. I really hope someone is able to either verify or corroborate my story . . .EDIT: Mods don't seem to be the problem anymore, as I just had a crash last night with no mods installed. I filed a Redmine ticket thinking that it might be some weird, new compatibility issue with Intel HD Graphics cards and/or drivers. Still, I wish that either someone else would take up this project, or that I had the knowledge to be able to.
Note that I discovered that the vertex is backwards for Top/Bottom. DLTCEP reports Regions >> Bounding box >> Recalculate flips the numbers around so that the small number is Top and large number is Bottom. Not sure how this impacts the trigger, but maybe it needs fixing down the road...?
Yes, tw'od be nice to beef up the scripts and creatures like bgspawn mod, but that is a lot of tiny work! Best to use SCS [can always do a "wimp" install that will still update monster scripts] and maybe edit some of the creatures with Near Infinity to be more challenging. Example: many bandits are level ONE! Maybe bump them to level two
The problem with SCS is that it only makes some specifics fights harder. . So 85% of the game remain a walk in the park even with SCS. ( especially in BG1)
We should make it with EET in mind because it would allow to use BG2 creatures.
edit: I used solar's v 0.5.
However, there is a problem with the Range(O:Object*,I:Range*) trigger. According to https://gibberlings3.github.io/iesdp/scripting/triggers/bgeetriggers.htm#0x4018, the value is limited to 30. This means than setting it to anything higher than that (like 60 or 75) has no effect.
I have personally tested various different values, and the monsters always spawn in the same place when Range is set to 30 or higher. Using lower values does have an effect, but then they spawn even closer to the party.
The main problem is that the maximum value of 30 is kind of low in its own. It makes monsters spawn close enough that a pack of archers can immediately fire at your characters and kill the protagonist, if you are unlucky.
One way to "fix" this is to remove the Range trigger all together, but this will make the monsters spawn only once when entering the area, and will effectively disable all future respawns, which may be undesirable. However, I have not been able to find any better solution, at least for now.
Actually, the monsters do respawn with no Range specified. With this in mind, it may possibly be better to use a negation of !Range(30) in place of Range(30), which will make them respawn only when you are further than 30 feet from the spawn point. This should prevent them from spawning directly in your face.
Is there a way via the WeiDU installer while it's going through the process of deactivating spawn points to get it to detect that it's working on these particular spawn points and skip, or reactivate them after the fact? If I hadn't read this "note" of yours, I would have never known this, not to mention that this can get old and tiring after a bit of needing to go back and manually reactivate stuff after every tweak of a mod install setup. Much better if these types of things can be handled by the mod installer (if possible) rather than asking folks to manually perform the steps.
I tried testing this for myself, going through and editing all the Range([PC], 75) lines (from v0.6) to !Range([PC],30), as well as removing the lines completely and I was unable to notice an appreciable difference. They won't spawn until the center of the spawn point comes within view, so if the spawn will be a group of 6, at best (if auto-pause on visible enemy is enabled) you'll be able to stop with only 4 showing (and this is creeping up on the spawn point one step at a time; normally walking around you'll almost always be close enough for the whole group to be visible by the time it pops).
Now mind you, this is only from editing the .baf files in the scripts folder. I think in an earlier post AstroBryGuy mentioned something about using undetectable traps to trigger the spawns, so I don't know if they have a separate range somewhere (or if those were their ranges) or if he changed the trigger mechanism at some point (or I'm misunderstanding what he meant). I don't have anything to read the .vtx or .nfp files (and honestly have no idea what they would contain anyway), and from what little I understand of the .tp2 (WeiDU installer) file, I didn't see anything in there that stood out, but could have definitely missed something.
______________________________
For anyone interested in giving me a hand on understanding scripting, what lead me to looking into this was that I'm trying to do a solo run right now, but as this mod doesn't take party size into account, many of the spawns are way too tough for me to deal with. It's seeing my average party level as 4 (I'm playing f/m/t and am currently 3/3/4), and so many of the spawns are coming as groups of 6. I feel like some of these, if I was actually running around in a party of 4 or 6, I'd be able to handle em, but solo they're creaming me.
I'd like to make a change that takes party count into account as well. I've done some reading on the scripting this engine uses and think I have some understanding, but there are still a few points I'm unsure of, if anyone could answer them?
1) Am I able to grab the actual values for average party level and party count so I can perform arithmetic with them? (I feel as though if this is not possible, then I'm not going to bother as I have no interest in duplicating all of the blocks in the scripts multiple times over in almost 400 files just to do variations of NumInParty() checks.)
2) Assuming 1 is possible, is storing this to a variable for use as simple as:
GLOBAL("myvar",LOCALS,formula-for-result)
or do I need to do something more like:
result=formula-for-result
GLOBAL("myvar",LOCALS,result)
And is LOCALS even the right var type here, or should I be using a GLOBAL?
3) Finally, the material I was reading on vars left me a little confused on the relationship between setting a variable and when it's actually usable? So, assuming 1 and 2 above are possible, which of the below methods would be appropriate for setting (and then using in a later block) the variable?
1st method:
IF
GLOBAL("myvar",LOCALS,0)
THEN
RESPONSE #100
//set the variable here
END
//If my understanding is correct, the script then "restarts" from the beginning
Or 2nd method:
IF
TRUE()
THEN
RESPONSE #100
//set the variable here
CONTINUE()
END
//If my understanding is correct, the script then continues on to the next IF block
I'm not even sure at what point the var gets reset (if at all), so maybe I should use method 2 without the CONTINUE() statement (call that method 3)? Or is there a completely different method I should be using to set the variable?
The Range() Trigger is not completely broken for ranges over the default visual range of 30. What matters is the type of parameter used to identify the object you are attempting to locate with that trigger.
This mod used Range([PC]) to check how far PCs are from the trap regions it uses as spawn points. That doesn't work because [PC] is an object identifier, and object identifiers only evaluate creatures within default visual range.
However, the Range() Trigger will accept an object reference as a parameter, and object references do work outside of the default visual range of 30. Player1 is one such example of an object reference.
This being so, if anyone looking for more control over the difficulty of random spawns is still interested in this mod, it can be made to work by replacing the Range([PC],XX) triggers with the following:
I can confirm that, with the above distance, the scripts have time to populate a spawn point so that the autopause catches creatures at the very limit of visual range, exactly like the vanilla spawn points (tested using the Godbow AND with the G3 Tweak that doubles movement outside of combat; that is one very fast-moving PC!).
One could arguably settle on a different value above 30 but below 50, but I myself don't want to mess around with nailing down the 'best' value to use. Others who know more than me might be able to chime in with reasons why Player1 etc fails under certain circumstances. If I'm wrong, I'd like to know!
I might add that the original mod is good, and the changes made by MachoGrande are very good. If I wanted a mod that replaced the existing spawn points with a system that was similar, but which gave me more control over the difficulty of the spawns, I'd be delighted to use this mod.
Version 0.7: https://github.com/GraionDilach/BGEESpawn/releases/latest
Tweaked the range checks to decrease mob popping in.
Added automatic INI preset options
Added an INI option to keep the vanilla spawnpoints enabled (to allow it playing nicely with the BG Enemy Randomizer mod)
Added Project Infinity metadata