Transition Problem

Just tried to play Calm Before the Storm using the latest EE Retail version. It seems that the transition areas do not highlight so they can be used. Tried jumping to the first destination tag, but the return does not work either.

Does anyone know if there is a fix or workaround for this problem.

Many thanks for any help.

The message is quite old, is the problem still there? If yes, can you give me an example for a nonworking transition?

edit -------------------------------------------------------------------
Forget it, I already found it (the western transition in Flexy). The transition-target points to a trigger of the type areatransition, instead to a waypoint. That is something EE can’t handle. I recently had a similar issue with a french module. The bug seems to be well known.

Yes, as reported on the project page itself.

If someone has the time, I suspect a generic script could be written to fix all such modules. The pseudo-code is

For all areas
  For all triggers and doors
    If GetTransitionTarget is trigger
      - Create waypoint at target location
      - SetTransitionTarget to waypoint

Run in DebugMode and save.

Now here it gets messy. We know that the 1.69 engine jumps the player to the target trigger, but is that always exactly the same location that is returned by GetLocation? That function was never very helpful with triggers. Needs a lot of testing.

If the simple solution doesn’t work, drop the target trigger into json for analysis?

Try contacting @Birger and asks him to fix the modules.

Hi everyone :slightly_smiling_face:

I’m sorry to hear that you’ve encountered a bug.
Unfortunately, I can’t prioritize making updates for NWN: Enhanced Edition (which is why I wrote the blue “IMPORTANT” message on each of my modules).

The best I can do is recommending you to play mine, and other older modules; with the old Diamond version of NWN. This older version is included in the NWN:EE version which you can buy from GOG: https://www.gog.com/game/neverwinter_nights_enhanced_edition_pack

Regards and happy new year to all of you,
/ Erik Birger Karlsson

Many thanks for all your responses - very much appreciated.

I have got used to EE, so I guess I will stick to mods that work under EE.

1 Like

Might write that script to fix it now we have a script window…should be easy to do.

Hi Birger,

Thanks for a great mod with an really dense atmosphere.

I already fixed it for myself, there are only about 10 relevant area transitions. (And I tossed out the extremly annoying bell tower ring. :slight_smile: )

It can’t be redistributed, the permission doesn’t allow changes.Too bad.

At last a script like this could be used to find all relevant triggers and make sure, that all are amended.

You’re welcome, glad you liked it. :slight_smile:

That’s great news! You know what? If you email me the module with your fixes (I’d prefer if you return the bell sounds in this version), then I could add that to as a seperate NWN EE-download on the module page: erik.birger.karlsson@gmail.com

I’ll give you credit for the changes, of course. :slight_smile: What name would you like displayed? Any website or link you want to add?

I’ll send it to you tomorrow. Need to reinstall the bells again :slight_smile: Thanks

This issue was bugged to Beamdog a little over a week ago. It uses an old way of drawing transitions, the quirky design worked in older 1.69 modules but at some point, got borked in Enhanced Edition.

FP!

Small script that should fix it (untested but hopefully the logic is fine) as suggested by Proleric. Run it in the script console in game with the void main() {} tickbox on. If it TMI’s then, well, let’s just say it’d need some more code.

string sResRef = "nw_waypoint001";
int nType, nAmount;
object oObject, oTarget, oNewTarget, oArea = GetFirstArea();
while(GetIsObjectValid(oArea))
{
    object oObject = GetFirstObjectInArea(oArea);
    while(GetIsObjectValid(oObject))
    {
        nType = GetObjectType(oObject);
        if(nType == OBJECT_TYPE_TRIGGER ||
           nType == OBJECT_TYPE_DOOR)
        {
            oTarget = GetTransitionTarget(oObject);
            nType = GetObjectType(oTarget);
            if(GetIsObjectValid(oTarget) &&
               nType != OBJECT_TYPE_DOOR &&
               nType != OBJECT_TYPE_WAYPOINT)
            {
                oNewTarget = CreateObject(OBJECT_TYPE_WAYPOINT, sResRef, GetLocation(oTarget), FALSE, "newwptarget" + IntToString(++nAmount));
                SetTransitionTarget(oObject, oNewTarget);
            }
        }
        oObject = GetNextObjectInArea(oArea);
    }
    oArea = GetNextArea();
}
1 Like

Package is underway.

Mmmm, how to make a loop over all areas??

It already does but it won’t fix a mod file, it’ll fix an already running game.

Right, I see. “Get First/Next Area” isn’t available in 1.69 / Diamond

Too bad

Given the problem is only present in EE I’m not sure that matters!

1 Like

One could use GetNearestObjectToLocation() and Get*ObjectInShape() instead of GetFirstObjectInArea() to iterate only triggers and doors in each area. Using a switch should also shave some instructions:

oTarget = GetTransitionTarget(oObject);
switch(GetObjectType(oTarget))
{
	case OBJECT_TYPE_INVALID:
	case OBJECT_TYPE_DOOR:
	case OBJECT_TYPE_WAYPOINT:	break
	default:
	{
		// CreateObject...
	}
}

What I meant was you would have to use function and delay command it running for each area. The functions you mentioned are really not going to make much of a difference due to how they work.

1 Like