Jump to content

PartyRested() or DreamScript in IWD2?


Domi

Recommended Posts

I am looking for a way to code the talks to be somehow attached to Rest - before or after - I will take either. PartyRested() was my hope, but IWD2 does not have it on TRIGGER.IDS. By obvious reasons, Dream Scripts aren't there either. Any suggestions will be appreciated!

Link to comment

either put this in baldur.bcs (which exists in iwd2)

 

IF

Checkstat(Player1,0,FATIGUE)

THEN

RESPONSE #100

Displaystring(Player1,2) // ~Beetle~

Changestat(Player1,FATIGUE,1,SET)

END

 

Or this in the player who needs action:

 

IF

Checkstat(myself,0,FATIGUE)

THEN

RESPONSE #100

Displaystring(myself,2) // ~Beetle~

Changestat(myself,FATIGUE,1,SET)

END

Link to comment

So will this script enable PartyRested() if I add it to TRIGGER.IDS or does it need to set the Global instead of DisplayString to bring up the conversation?

 

Cierrek, I have been browsing your excellent tables, but I am a bit confused in regards to these:

 

268 lists RealSetGlobalTimer in BG2, while in IWD1/2 it is the ClearParty().

 

BG2: 0x4086 AreaType(I:Number*AREATYPE) is GlobalORGlobal(S:Name1*,S:Area1*,S:Name2*,S:Area2*) in IWD2

 

Does these mean that the overlaping Actions or Triggers cannot be added to IWD2?

Link to comment
So will this script enable PartyRested() if I add it to TRIGGER.IDS or does it need to set the Global instead of DisplayString to bring up the conversation?

...

Does these mean that the overlaping Actions or Triggers cannot be added to IWD2?

1. yes, you can do anything in place of the displaystring :suspect:

2. yes, sadly this means, the missing actions/triggers are really missing (in most of the time).

Link to comment
Cierrek, I have been browsing your excellent tables,

 

Thanks :suspect: I needed a little practice with VLOOKUP in Excel. The tables were one of the results.

 

but I am a bit confused in regards to these:

 

268 lists RealSetGlobalTimer in BG2, while in IWD1/2 it is the ClearParty().

 

BG2: 0x4086 AreaType(I:Number*AREATYPE) is GlobalORGlobal(S:Name1*,S:Area1*,S:Name2*,S:Area2*) in IWD2

 

Does these mean that the overlaping Actions or Triggers cannot be added to IWD2?

 

Avenger got it.

 

If one game has one trigger/action and the other game has another listed, then you can't add the trigger/action from the first game to the second game.

 

There are a few cases where the actions/triggers are very close, e.g., one game requires a string for that action/trigger and another game requires a string and an integer. In those cases it may be possible to get the engines to interpret the trigger/action the same way by modifying the .ids files. But, you would have to test it to figure out if you were getting the result that you were looking for.

Link to comment

No, I think I was out of luck, as all my "matches" did not really match. I substituted for what i could substitute for. PartyRested() was the only irreplaceable one, but it ate Avenger's Check without complaints, so I hope it will work!

Link to comment

IWD2's equivalent of AreaCheck is CurrentAreaIs(Object;I:AreaNum), were the syntaxis will be actually Area's number, ie 1100.

 

I am unsuccessful with the "At Rest/After waking up script though. I added this block to one of the character's scripts:

 

IF
InParty(Myself)
Global("P#AtRest","GLOBAL",0)
CheckStat(Myself,0,FATIGUE)
THEN
RESPONSE #100
SetGlobal("P#AtRest","GLOBAL",1)
StartDialogueNoSet(Myself)
ChangeStat(Myself,FATIGUE,1,SET)
END

 

It resulted in P#AtRest being set to 1 immediately, not waiting on resting/waking up. Am I doing something wrong with it?

Link to comment
IWD2's equivalent of AreaCheck is CurrentAreaIs(Object;I:AreaNum), were the syntaxis will be actually Area's number, ie 1100.

 

I am unsuccessful with the "At Rest/After waking up script though. I added this block to one of the character's scripts:

 

IF
InParty(Myself)
Global("P#AtRest","GLOBAL",0)
CheckStat(Myself,0,FATIGUE)
THEN
RESPONSE #100
SetGlobal("P#AtRest","GLOBAL",1)
StartDialogueNoSet(Myself)
ChangeStat(Myself,FATIGUE,1,SET)
END

 

It resulted in P#AtRest being set to 1 immediately, not waiting on resting/waking up. Am I doing something wrong with it?

 

1. Move changestat before startdialogue.

2. I think, for the first time no one is fatigued at all.

So set fatigue to 1 before testing.

Link to comment

Aha, great!

 

IF
Global("P#JustStarted","GLOBAL",0)
CheckStat(Myself,0,FATIGUE)
THEN
RESPONSE #100
SetGlobal("P#JustStarted","GLOBAL",1)
ChangeStat(Myself,FATIGUE,1,SET)
END

IF
InParty(Myself)
Global("P#AtRest","GLOBAL",0)
Global("P#JustStarted","GLOBAL",1)
CheckStat(Myself,0,FATIGUE)
THEN
RESPONSE #100
SetGlobal("P#AtRest","GLOBAL",1)
ChangeStat(Myself,FATIGUE,1,SET)
StartDialogueNoSet(Myself)
END

 

This combination produced the desired result :) Thank you very much! Take that, IWD2! No PartyRested(), ha!

Link to comment

great :)

 

Btw, if you revealed anything interesting about IWD scripting, please tell me.

Including:

1. actions/triggers that exist but not listed in ids.

2. actions/triggers that work differently in bg2.

3. any difference compared to IESDP.

Link to comment

Archived

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

×
×
  • Create New...