void NewLocation(object oPC, location lPC, int iDirection, int iMapSkill); void main() { object oPC = OBJECT_SELF; object oMap = GetLocalObject(oPC,"oMapUsed"); DeleteLocalObject(oPC,"oMapUsed"); location lNewLoc1; location lNewLoc2; location lNewLoc3; location lNewLoc4; location lNewLoc5; location lNewLoc6; location lNewLoc7; location lNewLoc8; location lNewLoc9; location lNewLoc10; location lNewLoc11; location lNewLoc12; location lNewLoc13; location lNewLoc14; location lNewLoc15; location lNewLoc16; location lStartLoc = GetLocation(oPC); string sAreaTag = GetTag(GetArea(oPC)); string sAreaName = GetName(GetArea(oPC)); //Map location variables string sMapAreaTag = GetLocalString(oMap,"sMapAreaTag"); string sMapAreaName = GetLocalString(oMap,"sMapAreaName"); float fMapUsedX = GetLocalFloat(oMap,"fMapPositionX"); float fMapUsedY = GetLocalFloat(oMap,"fMapPositionY"); float fMapUsedZ = GetLocalFloat(oMap,"fMapPositionZ"); float fMapOrientation = GetFacing(oPC); object oMapArea = GetObjectByTag(sMapAreaTag); //May need to filter out all non-area object types in case of //tag-related issues.. i.e. area tag matching a sword item tag. vector vMap = Vector(fMapUsedX,fMapUsedY,fMapUsedZ); int iMapSkill = GetLocalInt(oMap,"iMapUsedSkill"); location lPC = Location(oMapArea,vMap,fMapOrientation); FloatingTextStringOnCreature("You unfurl the map and attempt to get your bearings...",oPC,FALSE); AssignCommand(oPC,ActionPlayAnimation(ANIMATION_FIREFORGET_READ,0.2,4.0)); if (sAreaTag!=sMapAreaTag) { AssignCommand(oPC,DelayCommand(4.1,FloatingTextStringOnCreature("This map does not apear to be for this area.",oPC,FALSE))); AssignCommand(oPC,DelayCommand(4.2,ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD,1.0,1.0))); return; } NewLocation(oPC,lPC,1,iMapSkill); lNewLoc1 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,2,iMapSkill); lNewLoc2 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,3,iMapSkill); lNewLoc3 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,4,iMapSkill); lNewLoc4 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,5,iMapSkill); lNewLoc5 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,6,iMapSkill); lNewLoc6 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,7,iMapSkill); lNewLoc7 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,8,iMapSkill); lNewLoc8 = GetLocalLocation(oPC,"lLoc1"); if (iMapSkill>700) { NewLocation(oPC,lPC,9,iMapSkill); lNewLoc9 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,10,iMapSkill); lNewLoc10 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,11,iMapSkill); lNewLoc11 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,12,iMapSkill); lNewLoc12 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,13,iMapSkill); lNewLoc13 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,14,iMapSkill); lNewLoc14 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,15,iMapSkill); lNewLoc15 = GetLocalLocation(oPC,"lLoc1"); NewLocation(oPC,lPC,16,iMapSkill); lNewLoc16 = GetLocalLocation(oPC,"lLoc1"); } DeleteLocalLocation(oPC,"lLoc1"); //This section of script provides an on-PC 'hook' so that //you can check for this varibale in any 'trigger' areas //So that the trigger is not activated by the PC being //sent to that trigger by this script.. since the PC is not //really at the trigger location. SetLocalInt(oPC,"iPCUsedMap",99); //------ This value is erased after the PC is sent back to //their original location. ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectCutsceneGhost(),oPC,9.0); //BlackScreen(oPC); AssignCommand(oPC,ActionJumpToLocation(lNewLoc1)); DelayCommand(0.5,AssignCommand(oPC,ActionJumpToLocation(lNewLoc2))); DelayCommand(1.0,AssignCommand(oPC,ActionJumpToLocation(lNewLoc3))); DelayCommand(1.5,AssignCommand(oPC,ActionJumpToLocation(lNewLoc4))); DelayCommand(2.0,AssignCommand(oPC,ActionJumpToLocation(lNewLoc5))); DelayCommand(2.5,AssignCommand(oPC,ActionJumpToLocation(lNewLoc6))); DelayCommand(3.0,AssignCommand(oPC,ActionJumpToLocation(lNewLoc7))); DelayCommand(3.5,AssignCommand(oPC,ActionJumpToLocation(lNewLoc8))); if (iMapSkill>700) { DelayCommand(4.0,AssignCommand(oPC,ActionJumpToLocation(lNewLoc9))); DelayCommand(4.5,AssignCommand(oPC,ActionJumpToLocation(lNewLoc10))); DelayCommand(5.0,AssignCommand(oPC,ActionJumpToLocation(lNewLoc11))); DelayCommand(5.5,AssignCommand(oPC,ActionJumpToLocation(lNewLoc12))); DelayCommand(6.0,AssignCommand(oPC,ActionJumpToLocation(lNewLoc13))); DelayCommand(6.5,AssignCommand(oPC,ActionJumpToLocation(lNewLoc14))); DelayCommand(7.0,AssignCommand(oPC,ActionJumpToLocation(lNewLoc15))); DelayCommand(7.5,AssignCommand(oPC,ActionJumpToLocation(lNewLoc15))); DelayCommand(8.0,AssignCommand(oPC,ActionJumpToLocation(lStartLoc))); DelayCommand(8.1,AssignCommand(oPC,DeleteLocalInt(oPC,"iPCUsedMap"))); DelayCommand(8.2,AssignCommand(oPC,FloatingTextStringOnCreature("You carefully study the map and get your bearings..",oPC,FALSE))); } else { DelayCommand(4.0,AssignCommand(oPC,ActionJumpToLocation(lStartLoc))); DelayCommand(4.1,AssignCommand(oPC,DeleteLocalInt(oPC,"iPCUsedMap"))); DelayCommand(4.2,AssignCommand(oPC,FloatingTextStringOnCreature("You carefully study the map and get your bearings..",oPC,FALSE))); } //DelayCommand(4.1,StopFade(oPC)); } void NewLocation(object oPC, location lPC, int iDirection, int iMapSkill) { location lNewLoc; location lSelf = lPC; vector vSelf = GetPositionFromLocation(lPC); object oArea = GetArea(oPC); vector vNewLoc; int vDirection; float fSelf; float fDistance; float fDistanceMax; location lSelf2; fSelf = GetFacing(oPC); fDistanceMax = 45.0; if (iDirection>8) { iDirection=iDirection-8; fDistanceMax=30.0; } switch (iDirection) { case 1:{fSelf=fSelf+45.0;break;} case 2:{fSelf=fSelf+90.0;break;} case 3:{fSelf=fSelf+135.0;break;} case 4:{fSelf=fSelf+180.0;break;} case 5:{fSelf=fSelf+225.0;break;} case 6:{fSelf=fSelf+270.0;break;} case 7:{fSelf=fSelf+315.0;break;} default:{break;} } fDistance = fDistanceMax / (1000.0/IntToFloat(iMapSkill)); vNewLoc = vSelf + (AngleToVector(fSelf) * fDistance); lSelf2 = Location(oArea,vNewLoc,fSelf); SetLocalLocation(oPC,"lLoc1",lSelf2); return; } /* void main() { object oPC = OBJECT_SELF; FloatingTextStringOnCreature("You unfurl the map and attempt to get your bearings...",oPC,FALSE); string sAreaResRef = GetResRef(GetArea(oPC)); string sAreaName = GetName(GetArea(oPC)); string sMapArea = GetLocalString(oPC,"sMapAreaResRef"); string sMapName = GetLocalString(oPC,"sMapAreaName"); DeleteLocalString(oPC,"sMapAreaResRef"); DeleteLocalString(oPC,"sMapAreaName"); AssignCommand(oPC,ActionPlayAnimation(ANIMATION_FIREFORGET_READ,0.2,10.0)); if (sAreaResRef!=sMapArea) { AssignCommand(oPC,DelayCommand(9.5,FloatingTextStringOnCreature("This map does not apear to be for this area.",oPC,FALSE))); AssignCommand(oPC,DelayCommand(10.0,ActionPlayAnimation(ANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD,1.0,1.0))); return; } AssignCommand(oPC,DelayCommand(9.5,FloatingTextStringOnCreature("You carefully study the map and get your bearings..",oPC,FALSE))); AssignCommand(oPC,DelayCommand(10.0,ActionPlayAnimation(ANIMATION_LOOPING_LOOK_FAR,1.0,4.0))); DelayCommand(10.0,ExploreAreaForPlayer(GetArea(oPC),oPC)); }