FANDOM



Conditional Area Transitions

Description

I had an area in a module where I needed to do something similar to the end of the Charwood quest, but I wanted a clean and simple script to do it. I found using an Area Transition trigger easier than using a door transition for this, although the programmer in me wants to work on that.

Notes

Use these scripts if you have a puzzle in an area change the appearance of the area and you don't want the player to be able to re-enter the old area once they've solved the puzzle, but you don't care if they re-enter the new area.

You first build the old area, then make a copy of it and name it something different. Then put a unique waypoint in the old area (WP_AT_OLDAREA), and another one in the copied and modified area (WP_AT_NEWAREA). Although of course you can name them anything you want -- just make sure the scripts accurately reflect the waypoints.

To use them, have the puzzle set the variable to the module.

The Scripts

On Click script of the Area Transition

//
// Script: cond_area_trans1.nss
// Author: Trinity
// Date: 20 November 2002
//
// This script goes into the On Click script for the 
// area transition trigger. Some people click on
// AT triggers.
//
void main()
{
// Assign the variables
object oPC = GetClickingObject();
object oWP = GetWaypointByTag("WP_AT_NEWAREA");
object oWP1 = GetWaypointByTag("WP_AT_OLDAREA");
int iVar1 = GetLocalInt(GetModule(), "iVar");
// Now we test to make sure at iVar1 is what you need to
// go into the new area. If it isn't, you go to the old.
if (iVar1 != number)
{
    AssignCommand(oPC, JumpToObject(oWP1));
}
else
{
    AssignCommand(oPC, JumpToObject(oWP));
}
}

The On Enter script slot of the area transition

//
// Script: cond_area_trans2.nss
// Author: Trinity
// Date: 20 November 2002
//
// This script goes into the On Enter script for the 
// area transition trigger. Some people just enter 
// AT triggers.
//
void main()
{
// Assign the variables.
object oPC = GetEnteringObject();
object oWP = GetWaypointByTag("WP_AT_NEWAREA");
object oWP1 = GetWaypointByTag("WP_AT_OLDAREA");
int iVar1 = GetLocalInt(GetModule(), "iVar");
// Now we test to make sure at iVar1 is what you need to
// go into the new area. If it isn't, you go to the old.
if (iVar1 != number)
{
    AssignCommand(oPC, JumpToObject(oWP1));
}
else
{
    AssignCommand(oPC, JumpToObject(oWP));
}
}

Trinity

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.