Jump to content

Moving PC and a party member in a dream cutscene and back


Kulyok

Recommended Posts

I've got a silly(maybe?) question I cannot find an answer to off the top of my head. When you want to create a cutscene where PC is alone, like a Dream Candlekeep SoA cutscene, or a Solar Conversation ToB cutscene you usually do something like this with the rest of the party(so that their dialogue/scripts/actions do not get in the way):

 

ActionOverride(Player2,LeaveAreaLUA("AR4500","",[715.1619],2))
ActionOverride(Player3,LeaveAreaLUA("AR4500","",[733.1691],14))
ActionOverride(Player4,LeaveAreaLUA("AR4500","",[801.1736],0))
ActionOverride(Player5,LeaveAreaLUA("AR4500","",[700.1730],4))
ActionOverride(Player6,LeaveAreaLUA("AR4500","",[651.1636],2))
MultiPlayerSync()
ActionOverride(Player2,MakeUnselectable(150000))
ActionOverride(Player3,MakeUnselectable(150000))
ActionOverride(Player4,MakeUnselectable(150000))
ActionOverride(Player5,MakeUnselectable(150000))
ActionOverride(Player6,MakeUnselectable(150000))
ActionOverride(Player2,ForceSpell(Player2,HOLD_PARTY))
ActionOverride(Player3,ForceSpell(Player3,HOLD_PARTY))
ActionOverride(Player4,ForceSpell(Player4,HOLD_PARTY))
ActionOverride(Player5,ForceSpell(Player5,HOLD_PARTY))
ActionOverride(Player6,ForceSpell(Player6,HOLD_PARTY))

 

Okay, fine, cool. But what if I want Player1 and and Xan to go somewhere in a cutscene together? I can't HOLD_PARTY Player2-Player6, because Xan is one of these. And I cannot NOT do anything to the rest of the party, because, well, there's a reason all those other cutscenes put Player2-Player6 on hold: something nasty may happen.

 

So, what should I do?

Link to comment

And it naturally goes for the area positions, too. I obviously can

 

ActionOverride(Player2,MakeUnselectable(150000))
ActionOverride(Player3,MakeUnselectable(150000))
ActionOverride(Player4,MakeUnselectable(150000))
ActionOverride(Player5,MakeUnselectable(150000))
ActionOverride(Player6,MakeUnselectable(150000))
ActionOverride(Player2,ForceSpell(Player2,HOLD_PARTY))
ActionOverride(Player3,ForceSpell(Player3,HOLD_PARTY))
ActionOverride(Player4,ForceSpell(Player4,HOLD_PARTY))
ActionOverride(Player5,ForceSpell(Player5,HOLD_PARTY))
ActionOverride(Player6,ForceSpell(Player6,HOLD_PARTY))
Wait(1)
ApplySpell("O#Xan",NOHOLD_PARTY)
ActionOverride("O#Xan",MakeUnselectable(1))
Wait(1)

 

- although it does seem unelegant. But what if I want all party members to remain in one area, and Xan and PC - in another? Do another pair of

LeaveAreaLUA("AR4500","",[651.1636],2)? It doesn't seem an optimal solution, either, so I hope for a better one.

Link to comment

This is what Weimer's Solaufein does for the fight with the Lolth's priestess. I don't understand why it covers only 4 other [PC], and you surely have to watch out for summoned creatures and the like (they also count as [PC], I think?), but it surely worked in the game to single out Solaufein for this fight (run from his script). The "nearest[PC]" is the PC because this triggers after a dialogue of Solaufein and the PC:

 

// gate out the party
IF
Global("SolaFoeSpawn","GLOBAL",3)
Detect(SecondNearest([PC]))
THEN
RESPONSE #100
	CreateVisualEffectObject("SPDIMNDR",SecondNearest([PC]))
	CreateVisualEffectObject("SPDIMNDR",ThirdNearest([PC]))
	CreateVisualEffectObject("SPDIMNDR",FourthNearest([PC]))
	CreateVisualEffectObject("SPDIMNDR",FifthNearest([PC]))
	ActionOverride(SecondNearest([PC]),MoveBetweenAreas("AR0000",[0.0],0))
	ActionOverride(ThirdNearest([PC]),MoveBetweenAreas("AR0000",[0.0],0))
	ActionOverride(FourthNearest([PC]),MoveBetweenAreas("AR0000",[0.0],0))
	ActionOverride(FifthNearest([PC]),MoveBetweenAreas("AR0000",[0.0],0))
END
// gate back in the party when it's over!, SolaFoeSpawn -> 6 after talk
IF
Global("SolaGateIn","GLOBAL",0)
CombatCounter(0)
Dead("SolaFoe")
THEN
RESPONSE #100
	ClearAllActions()
	AddXPObject(Myself,50000)
	IncrementGlobal("SolaGateIn","GLOBAL",1)
	SetGlobal("SolaFoeSpawn","GLOBAL",5)
	MoveGlobalObjectOffScreen(Player1,Myself)
	MoveGlobalObjectOffScreen(Player2,Myself)
	MoveGlobalObjectOffScreen(Player3,Myself)
	MoveGlobalObjectOffScreen(Player4,Myself)
	MoveGlobalObjectOffScreen(Player5,Myself)
	MoveGlobalObjectOffScreen(Player6,Myself)
	CreateVisualEffectObject("SPDIMNDR",Player1)
	CreateVisualEffectObject("SPDIMNDR",Player2)
	CreateVisualEffectObject("SPDIMNDR",Player3)
	CreateVisualEffectObject("SPDIMNDR",Player4)
	CreateVisualEffectObject("SPDIMNDR",Player5)
	CreateVisualEffectObject("SPDIMNDR",Player6)
	RealSetGlobalTimer("SolaTimer","GLOBAL",3200)
	StartDialogueNoSet(Player1)
END

Link to comment

I guess Wes singles out Solaufein first, moves him somewhere and then moves the rest of the party? (scratches head) Because I'm not sure how it'd work otherwise.

 

Sigh. In the end, I went with my second post here(see above), it sort of worked.

Link to comment

Good if it is sorted for you!

To answer to your question: The script block(s) are from Sola's script, so it has to be executed while he is still with the other ones, or the xth-nearest check doesn't make sense. The (not considered) "first nearest" would be the PC, as there was a "Dialog(Player1)" beforehand (so it is assuemd Sola and the PC are closest in comparison to the other party members). I don't recall what happened to the PC, I think he was immobilized during the fight, but I definitely remember the other party members being gone during that time.

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...