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 .





Retour en haut






