It seems like Isaac’s Greater Missile Storm and some other spells stop working in certain areas or against certain enemies. I’ve noticed it with Lesser Missile Storm too as well as Negative Energy Burst, Flame Strike, and more. The missile storm spells are unmodified. The enemies in question have no spellcraft skill either. You know how that goes: magic missile stops working and suddenly you’re completely screwed. Even if you’re only fighting rats.
This has been bugging me for a while. Any insight would be appreciated. The spells do their cast and conjure animations and VFX like normal except the impact effect and damage. The missile storm VFX play as though there are no enemies around. You know like a couple tiny magical bits come out of the hands instead of the usual cascade. It just looks like magical misfire. I’m trying to be specific.
Missile storm spells (firebrand, igms, ilms, ball of lightning) are special in the fact that you can cast them near target you can hear, but they will not find and affect such target. Perhaps this is your issue?
If the target is hiding then you are rolling listen and spot. If you find the target via listen instead of spot, he appears a bit transparent and direct cast of spells onto him will fail with the message that you can’t see him. Casting aoe spels near his position works, but not with missile storm spells.
I just tried it in offline mode with True Seeing and 40 Listen and Spot. No area skill modifiers and low skill on the monsters. It’s still not working. I’m not getting any prompt either apart from “Trens Mirndt casts Isaac’s Lesser Missile Storm”. I am using a spell recording system and have 2 dozen local ints on myself.
I lied. I’m using CEP not CPP. I’m certain CEP isn’t the cause b/c it happened before I started using CEP. Though I think you just figured it out. The enemies in question have Aura of Menace and Tyrant Fog Zombie Mist. I turned off Aura of Menace and put on a true seeing robe with my spot and listen maxed out (I’m using a Necromancer so no True Seeing or See Invisibility spells) it seems to be a 95% fix. I’m not sure what the other 5% was. I just hope it’s not my local ints because I use those for recording buffs with metamagic and I definitely don’t want to give that up.
The Aura of Menace script from CPP doesn’t seem to help. Am I doing this right?
Copied text from the header file 70_inc_spells.nss into a new script in my module then saved it as “70_inc_spells”.
Overwrote the two Aura of Menace Scripts (with #include “70_inc_spells” at the top). Verified that they compiled correctly.
I tried the regular header file and the nwnx version both in offline and both in online mode. I suppose I can just use Curse Song instead, but it’d be a shame to have to leave out Auras.
I’ve recently seen this issue with those spell types now too, in places where visibility is not an issue regarding the target. Not using anything besides CEP for custom content.
Have tickets been created for this phenomenon? We’ve had multiple issues with auras recently – both in targeting but also with just shutting down NPC AI. Seems to be kind of game breaking.
So this whole time I’ve been fighting 15 ghouls each with Aura of Menace. I decided to make a copy of my module with the CPP Aura of Menace scripts and the CPP Isaac’s Greater Missile Storm script. I overwrote all header files (the subjects of the code #include"insertheaderfilename") linked to these scripts with the corresponding CPP header file scripts. I included all header files linked to the header files too.
Then I started mowing down 15 ghouls at a time using Isaac’s Greater Missile Storm and True Seeing in each module, 3 times in the control module and 3 times in the CPP module. I didn’t notice any difference at first, so I added a 66% failure rate to Aura of Menace for both modules in order to reduce the amount of auras (by rolling a d3 in the beginning of the script and if I didn’t roll a 3 “return;” to stop the script). This didn’t make a difference either. So I set the Aura of Menace failure rate to 80% then to 90% and it seemed like the CPP worked better for both trials. However not perfectly; the few ghouls that did have auras were invulnerable to the missile storm the whole time. When it was down to just them the missile storm still stopped working. The difference was that in the control there were a few ghouls with no aura that were bugged. In the CPP version all ghouls died except the ones with auras. It seems like CPP is an improvement, but Aura of Menace is still causing a problem.
I never had problems with Aura of Fear and greater missile storm though, so not all auras are a problem just a few of them.
Why not try to install CPP instead? I had no issues with my workaround at all, no matter how many npcs with auras there were.
I mean, why are you reinventing the wheel? The bug was documented, described and workarounded. All you need to do is install CPP, but for some reason you are trying everything else than that and thus your results varies.
I never had problems with Aura of Fear and greater missile storm though, so not all auras are a problem just a few of them.
You are absolutely wrong, all auras causing this issue, and not just this, and the bug is also causing npcs to go completely invisible too sometimes, also stopping cleave to work and dozen of functions cannot find the objects when there is npc with aura (which is why the spells aren’t working properly in first place)
The problem is that this is not IGMS bug, but engine bug and so all spellscripts had to be changed to workaround it.
Anyway, just having the spellscripts for the spell that doesn’t work propertly should be enough. As long as the spellscript is not overwriten by module/hak version. Also you should not compile it after adding - if you did that you might have break the fix - this is because you are ripping it and because there are lot of depedancies like include scripts that needs to be added too if you aren’t going to install it the way it is supposed.
BTW, scripts are exactly why 99% module builders aren’t using CPP. There is not much else than that. Scripts are the most “gamebreaking” stuff from it according to many, so if you installed all scripts, what else do you fear of ?
How else do you install the scripts? I added all of the include files that the spell and aura use. Not all of the header files but about a dozen of them. I managed to make NWNX work, so is this any different? I thought the only way to install scripts was by copying them into the toolset. I just installed CPP following the instructions in “HOW TO INSTALL.txt” and it still isn’t working.
Okay I see now that the scripts go into nwn’s installation folder. I finally got it working!! It turns out I was using the wrong version of CPP. It doesn’t work on the copy of my module that had the changed header files but it does on the regular copy. Thanks a lot. My only question now is what does this mean for my modified scripts? Do they need to be updated with the functions you wrote, or do the fixes you made still apply if I edit them as they appear in the toolset?
Yes they need to be updated. At the very least, you need to replace GetFirst/NextObjectInShape with FIX_GetFirst/NextObjectInShape - that is what fixes this bug with auras (or rather the one aspect of the bug). If they use these functions, single target or non offensive spells aren’t a problem.
I recommend to rewrite it completely though, but that could be very time consuming. Alternatively you can also use different approach to the rewrite - see this:
void SpellChanges()
{
SetLocalInt(OBJECT_SELF,IntToString(SPELL_CURE_MINOR_WOUNDS)+“_METAMAGIC_OVERRIDE”,METAMAGIC_MAXIMIZE);//cure minor wounds cures always 4hp
SetLocalInt(OBJECT_SELF,IntToString(SPELL_SUNBEAM)+“_DAMAGE_TYPE_OVERRIDE”,DAMAGE_TYPE_POSITIVE);//sunbeam damage type to positive
SetLocalInt(OBJECT_SELF,IntToString(SPELL_SUNBURST)+“_DAMAGE_TYPE_OVERRIDE”,DAMAGE_TYPE_POSITIVE);//sunburst damage type to positive
SetLocalInt(OBJECT_SELF,IntToString(SPELL_ISAACS_LESSER_MISSILE_STORM)+“_LIMIT_OVERRIDE”,7);//ilms 7 missiles max
SetLocalInt(OBJECT_SELF,IntToString(SPELL_ISAACS_GREATER_MISSILE_STORM)+“_LIMIT_OVERRIDE”,15);//igms 15 missiles max
SetLocalInt(OBJECT_SELF,IntToString(SPELL_HEALING_STING)+“_SAVING_THROW_OVERRIDE”,SAVING_THROW_TYPE_NONE);//healing sting no save
SetLocalInt(OBJECT_SELF,IntToString(SPELL_DIVINE_FAVOR)+“_LIMIT_OVERRIDE”,3);//divine favor max +3
}
I am running this functiion in OnModuleLoad event and it alters the spells without touching their spellscript.