Aller au contenu

Photo

Elanee first encounter bugfixes


  • Veuillez vous connecter pour répondre
6 réponses à ce sujet

#1
WRFan

WRFan
  • Members
  • 114 messages
The area where you encounter Elanee for the first time (the bladeling ambush) is full of bugs. Fixed most of them, here's a list:

1) If you cast invisibility sphere on self, run away to buff yourself for the fight and save the game, if you then restore the savegame, the cutscene will be replayed every time you restore the savegame. That's because the game doesn't check if the cutscene has already been played. To check, you can either check for Elanee's faction or for the bladeling's faction, which are changed during the cutscene. Like this:

1200_Highcliff.mod, 1216_clienter.NSS:

object oPC = GetFirstEnteringPC();
object oBladeling = GetObjectByTag("12_elanee3_blade");
if(GetIsObjectValid(oBladeling) && !GetIsEnemy(oBladeling,oPC))
{ 
...//play the cutscene


2) There's a worldmap transition trigger in this area, if you go stealthy, run away and simply exit the area before the enemies are dead, you are instant-teleported to Highcliff, bypassing the Elanee conversation. This totally messes up the entire game, all variables, everything! Why the hell is there even a worldmap trigger in this area? Once you kill all enemies, Elanee will take you to the Glade automatically! No need to use the world map! So to fix, I used the generic world map trigger script, gtr_world_map_en.NSS:

object oArea=GetArea(GetEnteringObject());
if( GetTag(oArea)=="TheMereofDeadMenRoadElanee1"  ) //why the hell is there even a worldmap trigger in this area?
{
object oTarget = GetFirstObjectInArea(oArea);
while (GetIsObjectValid(oTarget))
{
if (GetObjectType(oTarget)==OBJECT_TYPE_CREATURE)
{  
if (GetIsEnemy(oTarget, oPC)==TRUE)
{
AssignCommand(oPC,SpeakString("Cannot leave while enemies still present"));
return;
}
}
oTarget = GetNextObjectInArea(oArea);
} 
}

This will prevent the PC from triggering the world map as long as enemies are present in the area. Once all enemies are dead, Elanee will automatically initiate conversation and take you to the Glade area. Bug fixed.

3) The enemies are supposed to be entangled by Elanee's Entangle spell for the duration of 30 sec (5 rounds) once the cutscene is over, but this doesn't work, because both the conversation script and the Entangle spell script are totally broken:

1200_Highcliff.mod, cut_elanee_3.NSS:

- Applying the Entangle effect to the bladeling and his thralls before they are changed to hostile faction will not work, because non-hostile NPCs cannot be harmed by hostile spells. Besides, only the EffectEntangle effect is applied, the entangled VFX is missing.
-The duration of the Entangle AoE is too short, cause Elanee's level is too low, so it wears off before the cutscene is over.
-The Entangle spell AoE OnEnter script is missing completely, it seems in the last 5 years nobody bothered to write it

4) Enemies'  generic AI scripts are overridden, the script forces them to attack the player party. Why? Why not the badger?

5) Elanee's badger is actually not really her animal companion. Technically, it is an independent object, players can notice this, because once Elanee joins the party, she can summon a badger, resulting in two badgers being in the area

6) Naloch the badger is set as plot character, resulting in him taking no damage whatsoever. Didn't Obsidian think players would become suspicious if the badger stays at full health?

7) Pathfinding AI sucks as always, when  the player party enters the area, Neeshka promptly bumps into Khelgar and gets stuck

So I went ahead and fixed all these bugs, like this:

1) Fixing the Entangle effect + fixing enemy combat AI. Instead of overriding the AI, forcing to attack the player party (so unfair!), let's use generic AI::

1200_Highcliff.mod, cut_elanee_3.NSS, Node 11:

object oBladeling = GetObjectByTag("12_elanee3_blade"); 
effect eAOE = EffectAreaOfEffect(AOE_PER_ENTANGLE); 
location lTarget = GetLocation(oBladeling); 
effect eHold = EffectEntangle();
effect eEntangle = EffectVisualEffect(VFX_DUR_ENTANGLE);
//Link Entangle and Hold effects
effect eLink = EffectLinkEffects(eHold, eEntangle);
 
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAOE, lTarget, RoundsToSeconds(5)); //oBladeling will be considered the original AreaofEffectCreator!

object oEnemies=GetFirstInGroup(sGroupName);
while (GetIsObjectValid(oEnemies))
{
if(!GetHasSpellEffect(SPELL_ENTANGLE, oEnemies))
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oEnemies, RoundsToSeconds(5));
}
//AssignCommand(oEnemies, DetermineCombatRound());
AssignCommand(oEnemies, HenchDetermineCombatRound()); //requires updated AI script hench_i0_ai from SoZ
oEnemies=GetNextInGroup(sGroupName);
}

Now we need to fix the Entangle spell, first the OnEnter effect, create a new script called nw_s0_entangleA, copy pretty much everything from nw_s0_entangleC.NSS, but here the target is
object oTarget = GetEnteringObject();

Fix Elanee's AoE creator status (in case party members enter Elanee's entangle AoE on hardcore difficulty), nw_s0_entangleA & nw_s0_entangleC:

if (GetTag(GetAreaOfEffectCreator())=="12_elanee3_blade") //this is the first Elanee encounter
{
oCreator=GetObjectByTag("elanee"); //for party members entering Elanee's AoE on hardcore
} 
else
 {
oCreator = GetAreaOfEffectCreator(); //standard entangle
 }

Remove Naloch's plot status, but set it immortal, if that's what Obsidian originally intended, even though I don't quite see the point:

1200_Highcliff.mod, cut_elanee_3.NSS, Node 10:

oWolf = GetTarget("12_elanee3_wolf"); //this is actually Elanee's badger, lol
SetPlotFlag(oWolf, FALSE);
SetImmortal(oWolf, TRUE);

Fix Neeshka's position in case she bumps into Khelgar at the beginning of the cutscene:

1200_Highcliff.mod, cut_elanee_3.NSS, Node 5:
object oPC = GetPCSpeaker();  //this is already defined above
object oNeeshka = GetTarget("neeshka"); //already defined above
AssignCommand(oNeeshka, ActionMoveToObject(oPC,FALSE,1.0));  //Neeshka moves to PC


Apart from the bugs, I fixed some additional things that really REALLY do annoy me:

1) AI sucks, let's disable it for Elanee once she joins the party:

1200_Highcliff.mod, cut_elanee_3.NSS, Node 11:

ChangeFaction(oElanee, GetObjectByTag("1216_faction_elanee"));
AssignCommand(oElanee, SetAssociateState(NW_ASC_MODE_PUPPET,TRUE)); //damn AI is as stupid as Britney Spears
AssignCommand(oElanee, SetAssociateState(NW_ASC_MODE_DEFEND_MASTER, FALSE));
AssignCommand(oElanee, SetAssociateState(NW_ASC_MODE_STAND_GROUND,TRUE));

Give Elanee a sling and let her equip it instead of the sickle to prevent attacks of opportunity while invisible, because that would dispel invisibility:

object oSling= CreateItemOnObject( "nw_wbwsl001", oElanee, 1,"",0 );
AssignCommand(oElanee, ActionEquipItem(oSling, INVENTORY_SLOT_RIGHTHAND)); //****ing attacks of opportunity dispel INV

Modifié par WRFan, 09 août 2010 - 04:37 .


#2
Sulhir

Sulhir
  • Members
  • 2 messages
Wonderful because Obsidion thinks that their 1.03 patch fixed the Elanee problems.  I have one suggestion that could improve your help.  If you could be a bit more detailed on what, where, and how you alter the specific files to resolve the issue.

At the moment I'm having to scour my computer for the appropriate files and so far I've guessed that I'm supposed to use the game's custom builder in order to modify the file.  I still don't know if this is right and I still don't know how I'm even supposed to find the specific section of code to change, if it will be labeled, if I'm supposed to just control+f the file name, ect.

So great for the solution but fail with the how-to.

Edit - 1 hour later and the combined effort of me and a friend have managed to fix the fail that Obsidian actually thinks it should get money for.  This is the sort of game I expect from a company that fired their Quality Control Department.

Modifié par Sulhir, 10 août 2010 - 12:19 .


#3
WRFan

WRFan
  • Members
  • 114 messages
ok, if you are interested, I've uploaded my Elanee fixes+Entangle fix here:



http://home.arcor.de...ee_Bugfixes.zip



I guess I'll release all my fixes to IGN NWN2 vault later, I'm damn lazy, I have at least 1 mio Morrowind, DAO, Oblivion and NWN2 fixes on my harddisk that should be released.



One more thing - When Elanee takes you to the Glade, you are attacked by 4 wolves, but you are not force-rested after the fight with the bladeling, which means you begin the wolf fight with 0 spells. Great! Usually, you are force-rested during area transitions, but this one is different, cause you don't use an area transition, instead Elanee takes you there, so it's technically different, but you should still be force-rested. Fixed that as well in my patch, if anyone wants to fix themselves, script is 12_cs_glade_enter.NSS, use GetFirstFactionMember and GetNextFactionMember to loop through party and apply ForceRest

#4
Funkjoker

Funkjoker
  • Members
  • 486 messages
This is interesting! What are the other NWN2 fixes? Do you restore cut content? I personally do not use the SoZ-OC makeover because it gives you penalties on harder difficulties, which are only changeable if you know how to do something with the toolset.

Edit: I see other topics you started stating bugs regarding the OC. Why don't you compile your fixes in a "fixpack"? It'd be really nice :)

Modifié par Jean-Funk Van Damme, 11 août 2010 - 03:58 .


#5
WRFan

WRFan
  • Members
  • 114 messages

What are the other NWN2 fixes? Why don't you compile your fixes in a "fixpack"? It'd be really nice :)


yes, I'll do this, I want to finish the game first. I mostly fix spells, there's still much to fix, even with RPGPlayer's fixes and the latest official patch. Like when you cast Touch of Idiocy or Ray of Enfeeblement the text window should actually display the penalty applied to target so that you can decide if that's enough or if you need to recast the spell unless you use the maximised version. My versions of sleep and deep slumber now display the total enemy HD for each enemy, so you know which enemies to coup de grace first (those with highest HD obviously, otherwise sleeping enemies exceed the total number of HD affected) and color spray now also displays the sleep/stun/blinded duration for each enemy, cause it's random. Enemies turned into chicken by Mass Fowl lose their immunites (like immunity to ability decrease if used on dead). Epic spells add the spellcaster's spell focuses to DC if applicable

Concerning cut content, I restored and fixed pretty much every cut spell, mostly spells from NWN1 that have been cut in NWN2 - Negative Energy Burst, Negative Energy Ray, Evil Blight, Tide of Battle, Clarity. Also all Symbol spells, like Symbol of Persuasion and Sleep etc. I am also trying to implement the D&D spell "Irresistable Dance" for NWN2, but no luck so far, some functions are missing in the game that are required for this spell to work properly. A pity, it's a very interesting spell.

I also created a spell that will display all relevant info about an enemy, very important for tacticians:

http://i467.photobuc...0810_165923.jpg

Created a mod that allow Amie to survive the Githyanki encounter, cause I needed a second mage to cast buffs on my wizardress, not enough slots at the beginning of the game and no Sand/Qara in party until you reach Neverwinter!

Concerning quests, fixed Safiya's dialogs, disabled annoying Autosaves in OC/MoB, various Berserker Lodge quest fixes in MoB. Added a possibility to rest in areas flagged as "resting not allowed" - mostly required for the Westgate campaign, where many areas are no-resting-allowed. Standard rest for the KoS fortress and Mob (no sleep interruption by random enemies, so annoying...)

Concerning AI, removed weird enemy random walking when you cast spells on enemies while invisible (they begin to search for you, even if you right there, in front of them, they just move around like morons).

Well, that's what I can think of at the moment, frankly, I don't even remember all the things I fix, cause I am too lazy to write down all the changes I make, lol.

Modifié par WRFan, 12 août 2010 - 04:21 .


#6
hauksdottir

hauksdottir
  • Members
  • 36 messages
"Standard rest for the KoS fortress and Mob (no sleep interruption by random enemies, so annoying...)"

Oh, dear... NO!

I like being interrupted!  In fact, I demand it! :devil:

How else does a level-deprived drow enchanter get enough xp to hit level 20 before dealing with Garius and the KoS?  Even doing every single side quest and soloing where possible to maximize points isn't enough... and those top spell slots are essential.

I only take spellcasters during that part of the game: Sand, Zhjaeve, Elanee, and Ammon.  After clearing out the bone spiders (they are constructs, so Elanee's Crumble works quite well), I set up the circle with me in the middle and the others spaced out.  Rest.  I've got aggro so the various enemies surround me.   5 spellcasters casting 2 AoE spells apiece (such as Undeath  to Death and Mass Heal and Sunshine) and they are dead again.  Rest.  Repeat and repeat and repeat.  I haven't run out of spells before a real rest happens.  I take notes along the way as to which enemies are immune to cold or which ones have really bad reflex saves, so when a crop blooms I know which pesticide to apply.  Occasionally, I'll let one of the others take center position, which will vary the spells thrown.

You can always tell by the laughter whether or not you'll get a refreshing nap, so a quick [pause] will allow you to get the first round of spells set up by the time the shadows have coalesced enough to be dangerous.

If they spawned in random places so that I had to chase them, it would be more of a game.  However, they are quite reliable... like fishing in a stocked lake.  It isn't very sporting, but I need those xp, and I'll take them where offered.:whistle:

Carolly

#7
Dynamomark

Dynamomark
  • Members
  • 1 009 messages

hauksdottir wrote...

"Standard rest for the KoS fortress and Mob (no sleep interruption by random enemies, so annoying...)"

Oh, dear... NO!


In that case, it might be a good idea to make two different versions of the pack. One that includes only fixes of things that do not work as intended. The other one could include everything or everything else. Some people maybe hesitant to install a fixpack because of just one thing they don't like.