Larian Banner: Baldur's Gate Patch 9
Previous Thread
Next Thread
Print Thread
Joined: Oct 2014
F
stranger
OP Offline
stranger
F
Joined: Oct 2014
Hey Guys,

quick question!

Is it possible to check two things in a Story 'IF' statement?

For example, i'm trying to check if i'm in a trigger before a global flag is active so at the moment i'm doing this...

IF
CharacterEnteredTrigger(CHARACTER_Player_01,TRIGGER_LakeTrigger)
AND
GlobalEventCleared("LakeVisited")
THEN
...

But it compiles with the following error:



----------------COMPILE ERROR---------------------------
'GlobalEventCleared': DIV event allowed only as the first condition of a rule
-----------------------------------------------------------


However if I then swap the two checks around...like so..

IF
GlobalEventCleared("LakeVisited")
AND
CharacterEnteredTrigger(CHARACTER_Player_01,TRIGGER_LakeTrigger)
THEN
....

Then it fails to compile once again, this time telling me it will only allow 'CharacterEntered' rule to be checked first.



---------------COMPILE ERROR--------------------------------
'CharacterEnteredTrigger': DIV event allowed only as the first condition of a rule
-------------------------------------------------------------



So...how can you check two things?
Im guessing its not done that way! :p

Last edited by FreddyK83; 28/10/14 08:58 PM.
Joined: Jul 2014
R
addict
Offline
addict
R
Joined: Jul 2014
CharacterEnteredTrigger and GlobalEventCleared are both Events that fire when something happens. The game can't check whether two events happen simultaneously (or in sequence) directly, so you need to create an intermediate boolean/flag after the first event in the sequence completes.

Code
IF
GlobalEventCleared("LakeVisited")
THEN
DB_LakeVisited(1);


IF
CharacterEnteredTrigger(CHARACTER_Player_01,TRIGGER_LakeTrigger)
AND
DB_LakeVisited(1)
THEN
//Stuff

Joined: Apr 2013
N
addict
Offline
addict
N
Joined: Apr 2013
... or use the trigger query function instead of the event like so (untested):
Code
IF
GlobalEventCleared("LakeVisited")
AND
CharacterIsInTrigger(CHARACTER_Player_01,TRIGGER_LakeTrigger)
THEN
...


Most events that the game can trigger are queryable from the engine without the need for intermediate vars.
Eg. event CharacterEnteredTrigger --> query CharacterIsInTrigger
event CharacterEnteredCombat --> query CharacterIsInCombat
(It seems that there is no query for GlobalEventCleared tho)

Joined: Oct 2014
F
stranger
OP Offline
stranger
F
Joined: Oct 2014
Rhidian, your approach worked. Thanks for that!

Norbyte, I tried to do your approach but Story editor doesn't recognise 'CharacterIsInTrigger' as a valid query..

It only lists:

CharacterIsBoss
CharacterIsDead
CharacterIsFemale
CharacterIsInCombat
CharacterIsInFightMode
CharacterIsInGroup
CharacterIsPartyMember
CharacterIsPlayer


Therefore I was not able to find a solution that way.

EDIT: It's wierd because there's a 'ItemIsInTrigger' query...odd that it doesn't check for 'Character' too

Last edited by FreddyK83; 28/10/14 11:53 PM.
Joined: Apr 2013
N
addict
Offline
addict
N
Joined: Apr 2013
Ah my bad, apparently CharacterIsInTrigger only works for char/item scripts, not for story scripts ...


Link Copied to Clipboard
Powered by UBB.threads™ PHP Forum Software 7.7.5