Potencius
Offline
Gender:
I'm a llama! -- Yep, a llama.
Re:IETME - How to simulate a WMP without using the stinking WMP
« Reply #3 on: Tuesday Jun 11, 2002, 22:10:18 »
--------------------------------------------------------------------------------
Now comes DISTCALC.bcs...
This algorithm will take all the previous information and put it to use, increasing the game time by the amount specified in the global variable, "HoursToARYYYY."
If the time to get there is greater than 24, then script will run until it hits 0 or less than 0. It works great.
Finally, once that's all computed, the script switches back to the CRE's original MAPCRE1.bcs.
Code:
IF
!GlobalGT("DistanceToArea","GLOBAL",0)
THEN
RESPONSE#100
SetGlobal("DistanceToArea,"GLOBAL",0)
SetGlobal("CurrentHour","GLOBAL",0)
ChangeAIScript("MAPCRE1",OVERRIDE)
END
IF
Global("DistanceToArea","GLOBAL",1)
THEN
RESPONSE#100
DayNight(1)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",2)
THEN
RESPONSE#100
DayNight(2)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",3)
THEN
RESPONSE#100
DayNight(3)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",4)
THEN
RESPONSE#100
DayNight(4)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",5)
THEN
RESPONSE#100
DayNight(5)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",6)
THEN
RESPONSE#100
DayNight(6)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",7)
THEN
RESPONSE#100
DayNight(7)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",8)
THEN
RESPONSE#100
DayNight(
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",9)
THEN
RESPONSE#100
DayNight(9)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",10)
THEN
RESPONSE#100
DayNight(10)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",11)
THEN
RESPONSE#100
DayNight(11)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",12)
THEN
RESPONSE#100
DayNight(12)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",13)
THEN
RESPONSE#100
DayNight(13)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",14)
THEN
RESPONSE#100
DayNight(14)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",15)
THEN
RESPONSE#100
DayNight(15)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",16)
THEN
RESPONSE#100
DayNight(16)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",17)
THEN
RESPONSE#100
DayNight(17)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",18)
THEN
RESPONSE#100
DayNight(18)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",19)
THEN
RESPONSE#100
DayNight(19)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",20)
THEN
RESPONSE#100
DayNight(20)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",21)
THEN
RESPONSE#100
DayNight(21)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",22)
THEN
RESPONSE#100
DayNight(22)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
Global("DistanceToArea","GLOBAL",23)
THEN
RESPONSE#100
DayNight(23)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
IF
GlobalGT("DistanceToArea","GLOBAL",23)
THEN
RESPONSE#100
DayNight(0)
IncrementGlobal("DistanceToArea","GLOBAL",-24)
END
After the CRE's script is set back to CREMAP1.bcs, he resets all the used global variables and starts the cutscene moving the party to the specified area.
This would be ToARYYYY.bcs.
Code:
IF
True()
THEN
RESPONSE #100
CutSceneId(Player1)
FadeToColor([20.0],0)
LeaveAreaLUAPanic("ARYYYY","",[x.y],FACE)
LeaveAreaLUA("ARYYYY","",[x.y],FACE)
ActionOverride(Player2,LeaveAreaLUA("ARYYYY","",[x.y],FACE))
ActionOverride(Player3,LeaveAreaLUA("ARYYYY","",[x.y],FACE))
ActionOverride(Player4,LeaveAreaLUA("ARYYYY","",[x.y],FACE))
ActionOverride(Player5,LeaveAreaLUA("ARYYYY","",[x.y],FACE))
ActionOverride(Player6,LeaveAreaLUA("ARYYYY","",[x.y],FACE))
MultiPlayerSync()
MoveViewObject(Player1,INSTANT)
FadeFromColor([20.0],0)
Wait(1)
EndCutSceneMode()
END
And that's that. I know this *looks* complicated, but it's really not when put into practice. Maybe I'll put up an example area sooner or later.
Logged
--------------------------------------------------------------------------------
When I lost my mind, I knew I was in for a long day. -- Billy Corgan, Smashing Pumpkins
Vlad
Offline
Gender:
Re:IETME - How to simulate a WMP without using the stinking WMP
« Reply #4 on: Wednesday Jun 12, 2002, 14:02:24 »
--------------------------------------------------------------------------------
Any travel trigger located in a zone where you move between areas may do that. Inside the trigger script you may write how much time you would like to advance. For example, in my Travelers in Time, I have used such triggers constantly, but I didn't mention time. It's like feeding your characters. Why do you need 'real game time' for travelling between areas? Is it so important? I think it's better to teleport the party between areas. The time triggers work exactly the same way. There is a more serious problem I have experienced while triggering movement between custom areas. Even if you have a trigger, you may still point your cursor to an edge of the game window in any custom area where the corresponding transition between areas is allowed, and get the main WorldMap of Amn. Unfortunately, it is hard coded even if you make a new area from scratch. Obviously, it confuses players somehow, if your party is in another world or time. So may be you have some ideas how to solve this problem?
Logged
Potencius
Offline
Gender:
I'm a llama! -- Yep, a llama.
Re:IETME - How to simulate a WMP without using the stinking WMP
« Reply #5 on: Wednesday Jun 12, 2002, 18:06:11 »
--------------------------------------------------------------------------------
Of course... there's a number of ways to handle this.
The first thing that pops into my head is changing the worldmap's WMP and MOS as a menu screen to access different area-worldmaps. Another thing that could be done is having one large map of the world for the worldmap.mos file. The other area-worldmaps could be subdivisions of this world.
The distances travelled between areas is at least semi-important... it makes characters fatigued. You're not going to travel 400 miles and be ready to fight a war.
The parties *are* transported to areas via scripts. There is simply a few scripts that run before this that advance game time the specified amount. What I have posted is very easy... All that has to be done aside from this is setting how far other areas are when you enter a large area... it's not hard, just a few global variables set.
Logged
--------------------------------------------------------------------------------
When I lost my mind, I knew I was in for a long day. -- Billy Corgan, Smashing Pumpkins
Potencius
Offline
Gender:
I'm a llama! -- Yep, a llama.
Re:IETME - How to simulate a WMP without using the stinking WMP
« Reply #6 on: Wednesday Jun 12, 2002, 19:07:42 »
--------------------------------------------------------------------------------
Here's some more things I've been playing with...
For the MAPCRE1.bcs ... this makes it so that the players can't do anything stupid after they've activated the calculations/jump to area.
Code:
IF
Global("ToARYYYY","GLOBAL",1)
THEN
RESPONSE#100
ActionOverride(Player1,MakeUnselectable(10000))
ActionOverride(Player2,MakeUnselectable(10000))
ActionOverride(Player3,MakeUnselectable(10000))
ActionOverride(Player4,MakeUnselectable(10000))
ActionOverride(Player5,MakeUnselectable(10000))
ActionOverride(Player6,MakeUnselectable(10000))
SetGlobal("ToARYYYY","GLOBAL",2)
SmallWait(7)
ChangeAIScript("HOURCALC",OVERRIDE)
END
IF
Global("ToARYYYY","GLOBAL",2)
THEN
RESPONSE#100
SetGlobal("ToARYYYY","GLOBAL",0)
ClearAllActions()
StartCutSceneMode()
ActionOverride(Player1,MakeUnselectable(0))
ActionOverride(Player2,MakeUnselectable(0))
ActionOverride(Player3,MakeUnselectable(0))
ActionOverride(Player4,MakeUnselectable(0))
ActionOverride(Player5,MakeUnselectable(0))
ActionOverride(Player6,MakeUnselectable(0))
StartCutScene("ToARYYYY")
END
In the trigger's script on the area-worldmap...
Code:
IF
Clicked([ANYONE])
Global("HoursToARYYYY","GLOBAL",-1)
THEN
RESPONSE#100
DisplayStringHead(Myself,5684) //Destination Unreachable
END
IF
Clicked([ANYONE])
Global("ClickedARYYYYTimer","GLOBAL",0)
THEN
RESPONSE#100
DisplayStringHead(Myself,####) //Area name
SetGlobal("ClickedARYYYYTimer","GLOBAL",1)
SetGlobalTimer("ClickARYYYY","GLOBAL",3)
END
IF
GlobalTimerExpired("ClickARYYYY","GLOBAL")
Global("ClickedARYYYYTimer","GLOBAL",1)
THEN
RESPONSE#100
SetGlobal("ClickedARYYYYTimer","GLOBAL",0)
END
IF
Clicked([ANYONE])
Global("ClickedARYYYYTimer","GLOBAL",1)
!GlobalLT("HoursToARYYYY","GLOBAL",0)
THEN
RESPONSE#100
FadeToColor([20.0],0)
AddGlobals("DistanceToArea","HoursToARYYYY")
SetGlobal("ToARYYYY","GLOBAL",1)
END
IF
!GlobalLT("HoursToARYYYY","GLOBAL",0) //Destination Reachable
THEN
RESPONSE#100
CreateVisualEffectObject("SPPRISM2",Myself)
END
This displays a graphic over the area region if it is reachable... when you click a trigger region, it will display the area's name. If you click within 3 seconds after that, you will begin the jump to that area.
Logged
--------------------------------------------------------------------------------
When I lost my mind, I knew I was in for a long day. -- Billy Corgan, Smashing Pumpkins
Hendryk
Offline
I'm a sloth...
Re:IETME - How to simulate a WMP without using the stinking WMP
« Reply #7 on: Friday Dec 20, 2002, 05:05:03 »
--------------------------------------------------------------------------------
If I'm reading this right, a Worldmap.are of Amn wouldn't work if the intent was to allow a party in ToB to travel about on the SoA map from one area to another. When you departed any area at an exit point, it would try to return you to the actual (ToB, at this point) World Map, rather than Worldmap.are.
Would all the SoA area files have to be copied and the copies renamed to match the Worldmap.are? Then the exit points deleted and doors substituted? Or is there a way to script the area bcs so that if the chapter is greater than 7, the exit points are ignored and the party goes to Worldmap.are? Or is that what the hotkey is for?
Logged
Ghreyfain
Guest
Re:IETME - How to simulate a WMP without using the stinking WMP
« Reply #8 on: Friday Dec 20, 2002, 19:07:09 »
--------------------------------------------------------------------------------
If you wanted to have SoA and ToB together, you'd have to first create the Worldmap.are of both, complete with trigger regions to travel to the specific areas.
Then you'd have to edit every area with access to the worldmap so it's exit regions (teal in the search map) are covered by an exit region that leads to Worldmap.are.
Logged
Hendryk
Offline
I'm a sloth...
Re:IETME - How to simulate a WMP without using the stinking WMP
« Reply #9 on: Friday Dec 20, 2002, 19:07:28 »
--------------------------------------------------------------------------------
Thanks. That's what I thought. Two more questions, though.
It's just the outdoor areas with exits to the Worldmap.are that would have to be redone, right? Interiors wouldn't seem to need re-doing.
If you're already in the ToB part of the game, wouldn't the default worldmap for Tethyr still work normally? Seems like all that you'd need to do here is make a bridge (probably at Watcher's Keep) that would allow the party to return to the Amn Worldmap.are.
Logged
Ghreyfain
Guest
Re:IETME - How to simulate a WMP without using the stinking WMP
« Reply #10 on: Friday Dec 20, 2002, 20:08:08 »
--------------------------------------------------------------------------------
Yeah, you could do that.