Max:
Advancing game time based on where you're travelling to... This took some thinking. hehe.
First, each area, in it's script, will set how far it is from other areas... so the block might look like this:
(Unreachable areas use -1)
IF
Global("SetDistances","GLOBAL",0)
THEN
RESPONSE#100
SetGlobal("SetDistances","GLOBAL",1)
SetGlobal("HoursToARYYYY","GLOBAL",48) //2 days
SetGlobal("HoursToARZZZZ","GLOBAL",4) //4 hours
SetGlobal("HoursToARCCCC","GLOBAL",15) //15 hours
SetGlobal("HoursToARBBBB","GLOBAL",-1) //unreachable
END
Then comes the actual script for the worldmap ARE.
It goes (the rest of these examples will use ARYYY as the example)...
IF
Global("Spawn","MAPARE",0)
THEN
RESPONSE#100
SetGlobal("Spawn","MAPARE",1)
CreateCreature("MAPCRE1",[1.1],0) //invisible/immortal CRE that controls calculations
END
IF
!Global("SetDistances","GLOBAL",0)
THEN
RESPONSE#100
SetGlobal("SetDistances","GLOBAL",0)
END
Next is the script for the Transition Trigger...
IF
Clicked([ANYONE])
!GlobalLT("HoursToARYYY","GLOBAL",0)
THEN
RESPONSE#100
AddGlobals("DistanceToArea","HoursToARYYYY")
SetGlobal("ToARYYYY","GLOBAL",1)
END
IF
Clicked([ANYONE])
GlobalLT"HoursToARYYY","GLOBAL",0)
THEN
RESPONSE#100
DisplayStringHead(Myself,5684) //Destination Unreachable
END
Global("ARYYYY","GLOBAL",1) then triggers the calculating CRE's script...
Here's the CRE's script (MAPCRE1.bcs)... it is used first to set up the calculations, then to finalize the calculations and begin the cutscene to move you to the desired area.
//Start Calculations
IF
Global("ToARYYYY","GLOBAL",1)
THEN
RESPONSE#100
SetGlobal("ToARYYYY","GLOBAL",2)
SmallWait(7)
ChangeAIScript("HOURCALC",OVERRIDE)
END
//Finalize Calculations
IF
Global("ToARYYYY","GLOBAL",2)
THEN
RESPONSE#100
SetGlobal("ToARYYYY","GLOBAL",0)
ClearAllActions()
StartCutSceneMode()
StartCutScene("ToARYYYY")
END
Now, the calculations script... the first one is HOURCALC.bcs. It sets a global ("CurrentHour") to mark what time of day it is. When that's done, it switches the script to DISTCALC.bcs to figure out how far ahead to set the game time.
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(0)
THEN
RESPONSE#100
AddGlobals("DistanceToArea","CurrentHour")
SmallWait(7)
ChangeAIScript("DISTCALC",OVERRIDE)
END
IF
GlobalGT("CurrentHour","GLOBAL",0)
THEN
RESPONSE#100
AddGlobals("DistanceToArea","CurrentHour")
SmallWait(7)
ChangeAIScript("DISTCALC",OVERRIDE)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(1)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",1)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(2)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",2)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(3)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",3)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(4)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",4)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(5)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",5)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(6)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",6)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(7)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",7)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(

THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",8)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(9)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",9)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(10)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",10)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(11)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",11)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(12)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",12)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(13)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",13)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(14)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",14)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(15)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",15)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(16)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",16)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(17)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",17)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(18)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",18)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(19)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",19)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(20)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",20)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(21)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",21)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(22)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",22)
END
IF
Global("CurrentHour","GLOBAL",0)
TimeOfDay(23)
THEN
RESPONSE#100
SetGlobal("CurrentHour","GLOBAL",23)
END