Jump to content

v12b Dynaheir endgame (spoilers)


Gorilym

Recommended Posts

OK, let's try some things.

 

1. Recompile the end of the cutscene with

IF
True()
THEN RESPONSE #100
CutSceneId(Player1)
ClearAllActions()
SmallWait(3)
DisplayStringHead("X#JONI",@0)
ActionOverride("dynaheir",LeaveParty())
ActionOverride("X#JONI",ReallyForceSpell("dynaheir",WIZARD_POWER_WORD_KILL))
ActionOverride("dynaheir",DestroySelf())
ActionOverride("X#BODHI",ForceSpell(Player1,VAMPIRE_DOMINATION))
SmallWait(2)
ActionOverride("X#BODHI",ReallyForceSpell("X#BODHI",DRYAD_TELEPORT))
ActionOverride("X#JONI",ReallyForceSpell("X#JONI",DRYAD_TELEPORT))
ActionOverride("X#LASSA",ReallyForceSpell("X#LASSA",DRYAD_TELEPORT))
ActionOverride("X#TANOV",ReallyForceSpell("X#TANOV",DRYAD_TELEPORT))
ActionOverride("X#VALEN",ReallyForceSpell("X#VALEN",DRYAD_TELEPORT))
ActionOverride("X#ULVAR",ReallyForceSpell("X#ULVAR",DRYAD_TELEPORT))
ActionOverride("X#CUTVA1",ReallyForceSpell("X#CUTVA1",DRYAD_TELEPORT))
ActionOverride("X#CUTVA2",ReallyForceSpell("X#CUTVA2",DRYAD_TELEPORT))
ActionOverride("X#CUTVA3",ReallyForceSpell("X#CUTVA3",DRYAD_TELEPORT))
ActionOverride("X#CUTVA4",ReallyForceSpell("X#CUTVA4",DRYAD_TELEPORT))
DisplayStringHead(Player1,@1) 
Wait(2)
SetGlobal("endofBG1","GLOBAL",3)
ActionOverride(Player6,ReallyForceSpell(Player6,DRYAD_TELEPORT))
ActionOverride(Player5,ReallyForceSpell(Player5,DRYAD_TELEPORT))
ActionOverride(Player4,ReallyForceSpell(Player4,DRYAD_TELEPORT))
ActionOverride(Player3,ReallyForceSpell(Player3,DRYAD_TELEPORT))
ActionOverride(Player2,ReallyForceSpell(Player2,DRYAD_TELEPORT))
ActionOverride(Player1,ReallyForceSpell(Player1,DRYAD_TELEPORT))
EndCutSceneMode()
StartMovie("_NDCRDIT")
EndCredits()
END

 

 

As for the Maze:

Please open up _WINSKI2.cre and see if the DV got assigned - it did on my install, but y'never know... I'll be right back with a new shot at the Winski Maze code, too.

 

Big "duh I don't understand" moment -- my install of EasyTutu does not have spell resource SPWI713 in the override, which is finger of death according to the IESDP... so if it doesn't exist, it won't play? My spell.ids has completely different entries - 2713 is WIZARD_FINGER_OF_DEATH, SPWI912 Power Word Kill is listed as 2912 WIZARD_POWER_WORD_KILL, and it is also not in override. Must be pulling from a default .bif.

 

 

Try swapping in this

 

SpellNoDec("winski",WIZARD_DEATH_SPELL)

 

and see what happens, but I bet there is something odd going with _winski2.cre and his DV. Try changing his dv in SK or NI to "winski2", then adjusting the BCS to

 

SpellNoDec("winski2",WIZARD_DEATH_SPELL)

ActionOverride("winski2",DestroySelf())

 

It has to be the winski DV. Perhaps we need to change that to winski2 and rebuild.

Link to comment
OK, let's try some things.

 

1. Recompile the end of the cutscene with

IF
True()
THEN RESPONSE #100
CutSceneId(Player1)
ClearAllActions()
SmallWait(3)
DisplayStringHead("X#JONI",@0)
ActionOverride("dynaheir",LeaveParty())
ActionOverride("X#JONI",ReallyForceSpell("dynaheir",WIZARD_POWER_WORD_KILL))
ActionOverride("dynaheir",DestroySelf())
ActionOverride("X#BODHI",ForceSpell(Player1,VAMPIRE_DOMINATION))
SmallWait(2)
ActionOverride("X#BODHI",ReallyForceSpell("X#BODHI",DRYAD_TELEPORT))
ActionOverride("X#JONI",ReallyForceSpell("X#JONI",DRYAD_TELEPORT))
ActionOverride("X#LASSA",ReallyForceSpell("X#LASSA",DRYAD_TELEPORT))
ActionOverride("X#TANOV",ReallyForceSpell("X#TANOV",DRYAD_TELEPORT))
ActionOverride("X#VALEN",ReallyForceSpell("X#VALEN",DRYAD_TELEPORT))
ActionOverride("X#ULVAR",ReallyForceSpell("X#ULVAR",DRYAD_TELEPORT))
ActionOverride("X#CUTVA1",ReallyForceSpell("X#CUTVA1",DRYAD_TELEPORT))
ActionOverride("X#CUTVA2",ReallyForceSpell("X#CUTVA2",DRYAD_TELEPORT))
ActionOverride("X#CUTVA3",ReallyForceSpell("X#CUTVA3",DRYAD_TELEPORT))
ActionOverride("X#CUTVA4",ReallyForceSpell("X#CUTVA4",DRYAD_TELEPORT))
DisplayStringHead(Player1,@1) 
Wait(2)
SetGlobal("endofBG1","GLOBAL",3)
EndCutSceneMode()
ActionOverride(Player6,ReallyForceSpell(Player6,DRYAD_TELEPORT))
ActionOverride(Player5,ReallyForceSpell(Player5,DRYAD_TELEPORT))
ActionOverride(Player4,ReallyForceSpell(Player4,DRYAD_TELEPORT))
ActionOverride(Player3,ReallyForceSpell(Player3,DRYAD_TELEPORT))
ActionOverride(Player2,ReallyForceSpell(Player2,DRYAD_TELEPORT))
ActionOverride(Player1,ReallyForceSpell(Player1,DRYAD_TELEPORT))
StartMovie("_NDCRDIT")
EndCredits()
END

 

Alright! With this code everyone (including the party) is successfully D-Doored out - and the game proceeds to clear data and display the end credits. Basically, this part is now done. There is one caveat though - things now happen so quickly that if I didn't already know what was happening, I wouldn't know what was happening. :mad: I changed the second SmallWait to 3 and the final wait to 4 - which left me enough time to read the "you've been abducted etc" string, but now the game "ended" before the party was d-doored out. A compromise might work, or maybe we'll just have to accept that this scene won't be "perfect".

 

As for the Maze:

Please open up _WINSKI2.cre and see if the DV got assigned - it did on my install, but y'never know... I'll be right back with a new shot at the Winski Maze code, too.

 

Big "duh I don't understand" moment -- my install of EasyTutu does not have spell resource SPWI713 in the override, which is finger of death according to the IESDP... so if it doesn't exist, it won't play? My spell.ids has completely different entries - 2713 is WIZARD_FINGER_OF_DEATH, SPWI912 Power Word Kill is listed as 2912 WIZARD_POWER_WORD_KILL, and it is also not in override. Must be pulling from a default .bif.

 

 

Try swapping in this

 

SpellNoDec("winski",WIZARD_DEATH_SPELL)

 

and see what happens, but I bet there is something odd going with _winski2.cre and his DV. Try changing his dv in SK or NI to "winski2", then adjusting the BCS to

 

SpellNoDec("winski2",WIZARD_DEATH_SPELL)

ActionOverride("aravaata",Kill("winski2"))

 

It has to be the winski DV. Perhaps we need to change that to winski2 and rebuild.

 

_Winski2.cre has the script name of "winski" - death variable = script name, right? I noticed that _Winski.cre has the same script name, and it occured to me that it might be a problem. I'll try changing the appropriate references to winski2, and if it it doesn't work I'll change the spell as well.

 

 

 

 

Random note: I noticed that X#JONI is Chaotic Good - I guess he's copied from the Elminster-clone Irenicus? ;)

Link to comment

WHOOOT!!!! Only several years and several coding teams later, we have some success!

Try copying and using this version - let's see if we can get the movie to play correctly.

 

IF
True()
THEN RESPONSE #100
CutSceneId(Player1)
ClearAllActions()
SmallWait(3)
DisplayStringHead("X#JONI",@0)
ActionOverride("dynaheir",LeaveParty())
ActionOverride("X#JONI",ReallyForceSpell("dynaheir",WIZARD_POWER_WORD_KILL))
ActionOverride("dynaheir",DestroySelf())
ActionOverride("X#BODHI",ForceSpell(Player1,VAMPIRE_DOMINATION))
SmallWait(3)
ActionOverride("X#BODHI",ReallyForceSpell("X#BODHI",DRYAD_TELEPORT))
ActionOverride("X#JONI",ReallyForceSpell("X#JONI",DRYAD_TELEPORT))
ActionOverride("X#LASSA",ReallyForceSpell("X#LASSA",DRYAD_TELEPORT))
ActionOverride("X#TANOV",ReallyForceSpell("X#TANOV",DRYAD_TELEPORT))
ActionOverride("X#VALEN",ReallyForceSpell("X#VALEN",DRYAD_TELEPORT))
ActionOverride("X#ULVAR",ReallyForceSpell("X#ULVAR",DRYAD_TELEPORT))
ActionOverride("X#CUTVA1",ReallyForceSpell("X#CUTVA1",DRYAD_TELEPORT))
ActionOverride("X#CUTVA2",ReallyForceSpell("X#CUTVA2",DRYAD_TELEPORT))
ActionOverride("X#CUTVA3",ReallyForceSpell("X#CUTVA3",DRYAD_TELEPORT))
ActionOverride("X#CUTVA4",ReallyForceSpell("X#CUTVA4",DRYAD_TELEPORT))
DisplayStringHead(Player1,@1) 
Wait(4)
ActionOverride(Player6,ReallyForceSpell(Player6,DRYAD_TELEPORT))
ActionOverride(Player5,ReallyForceSpell(Player5,DRYAD_TELEPORT))
ActionOverride(Player4,ReallyForceSpell(Player4,DRYAD_TELEPORT))
ActionOverride(Player3,ReallyForceSpell(Player3,DRYAD_TELEPORT))
ActionOverride(Player2,ReallyForceSpell(Player2,DRYAD_TELEPORT))
ActionOverride(Player1,ReallyForceSpell(Player1,DRYAD_TELEPORT))
SetGlobal("endofBG1","GLOBAL",3)
EndCutSceneMode()
Wait(2)
StartMovie("_NDCRDIT")
EndCredits()
END

 

@joniboy - yeah, i noticed that too... pretty weird :mad:

Link to comment

Your latest code variant left the party in "limbo" - the d-dooring of the party isn't followed up by... anything, they're instead left passive in indefinite cutscene mode. I've experimented with different wait values and event sequences, but there's always something that doesn't work properly (I did confirm that placing the LeaveParty ahead of PowerWordKill did result in a permanent death, so that's good to know). I'd say that the best variant is still the following, rather pacey though it may be: (from a roleplaying perspective this may even be a good thing - Dynaheir's death, the abduction etc. happens so quickly that Charname doesn't have have a chance to absorb it until he / she suddenly wakes up in Chateau Irenicus ;) )

 

IF
True()
THEN
RESPONSE #100
	CutSceneId(Player1)
	ClearAllActions()
	SmallWait(3)
	DisplayStringHead("X#JONI",x) // Wench, you have overstepped your ability; it is beyond you or anyone to wrest this subject from me.
	ActionOverride("dynaheir",LeaveParty())
	ActionOverride("X#JONI",ReallyForceSpell("dynaheir",WIZARD_POWER_WORD_KILL))
	ActionOverride("dynaheir",DestroySelf())
	ActionOverride("X#JONI",Kill("dynaheir"))
	ActionOverride("X#BODHI",ForceSpell(Player1,VAMPIRE_DOMINATION))
	SmallWait(2)
	ActionOverride("X#BODHI",ReallyForceSpell("X#BODHI",DRYAD_TELEPORT))
	ActionOverride("X#JONI",ReallyForceSpell("X#JONI",DRYAD_TELEPORT))
	ActionOverride("X#LASSA",ReallyForceSpell("X#LASSA",DRYAD_TELEPORT))
	ActionOverride("X#TANOV",ReallyForceSpell("X#TANOV",DRYAD_TELEPORT))
	ActionOverride("X#VALEN",ReallyForceSpell("X#VALEN",DRYAD_TELEPORT))
	ActionOverride("X#ULVAR",ReallyForceSpell("X#ULVAR",DRYAD_TELEPORT))
	ActionOverride("X#CUTVA1",ReallyForceSpell("X#CUTVA1",DRYAD_TELEPORT))
	ActionOverride("X#CUTVA2",ReallyForceSpell("X#CUTVA2",DRYAD_TELEPORT))
	ActionOverride("X#CUTVA3",ReallyForceSpell("X#CUTVA3",DRYAD_TELEPORT))
	ActionOverride("X#CUTVA4",ReallyForceSpell("X#CUTVA4",DRYAD_TELEPORT))
	DisplayStringHead(Player1,x) // You have been abducted! Your story continues in Baldur's Gate II, Shadows of Amn. Import your character from your final save into BG2.
	Wait(2)
	SetGlobal("endofBG1","GLOBAL",3)
	EndCutSceneMode()
	ActionOverride(Player6,ReallyForceSpell(Player6,DRYAD_TELEPORT))
	ActionOverride(Player5,ReallyForceSpell(Player5,DRYAD_TELEPORT))
	ActionOverride(Player4,ReallyForceSpell(Player4,DRYAD_TELEPORT))
	ActionOverride(Player3,ReallyForceSpell(Player3,DRYAD_TELEPORT))
	ActionOverride(Player2,ReallyForceSpell(Player2,DRYAD_TELEPORT))
	ActionOverride(Player1,ReallyForceSpell(Player1,DRYAD_TELEPORT))
	StartMovie("_NDCRDIT")
	EndCredits()
END

 

(Oh, and don't worry about me not mentioning the actual _ndcrdit movie playing - I've played BG1 & BG2 with movies disabled for years, and AFAIK the BG1 movies have never worked properly with the Mac version of Tutu.)

 

* The Aravaata script continues to frustrate - neither changing winskis DV, changing which spell Aravaata casts nor half a dozen other little tweaks has made it work right. I think we may need to try moving this sequence of events into a cutscene.

 

 

*Other miniscule notes:

 

_winski2.cre should use the same portrait as the other winskis.

 

Aravaata has an unfortunate (for him) tendency to paralyze himself. :mad: Probably an issue with the generic nabassu lacking proper immunities.

Link to comment

ok, tomorrow morning I will nail hthis down for a release with our best efforts. I will try out a cutscene script and post for you to try out!

 

Thanks so much for the work, Gorilym - it really helps (as I would have to get a saved game built that would allow it, and I have yet to play the darned thing through witth all of these changes!)

Link to comment
(Oh, and don't worry about me not mentioning the actual _ndcrdit movie playing - I've played BG1 & BG2 with movies disabled for years, and AFAIK the BG1 movies have never worked properly with the Mac version of Tutu.)

That's certainly the case for every tutu game I've tried. Do you know is it even necessary to keep the bg1movies around, or will it CTD?

Link to comment

Well, the bg1movies biff files ARE mapped to the chitin.key in the Tutu-ing process, so I wouldn't remove them unless I'd first removed the references to them from said keyfile... I haven't looked much into this though, mainly because the total size of the movies is so small compared to the data files.

Link to comment

Hey does anyone in the wide world of IE modding know of a true Cutscene Specialist who could help us on this (either) matter?

(The Dynaheir end-of-romance cutscene and a creature with a "sleeping man" animation not being able to be killed)

Link to comment

IIRC Mae'Var's torture victim / prisoner - using the "sleeping man" animation - instantly dies when you enter the guild dungeon after accepting the mission to kill him... (Mae'Var that is) Maybe the scripting for that area / sequence could be helpful?

Link to comment

No luck there - that script uses

 

IF
 Global("KillArntra04","AR0307",1)
THEN
 RESPONSE #100
Setglobal("KillArntra04","AR0307",2)
ActionOverride("arntra04",Face(10))
Wait(1)
Forcespell("arntra04",CLERIC_FLAME_STRIKE)
Wait(1)
Kill("arntra04")
Createcreature("ARNTRA05",[3213.485],0)
END

 

hey - I just thought - if you are using a savedgame, the creatures are saved. Try going into the savegame itself and resetting Winski's DV. This might be working, and the saved creature just not doing it (unless you are starting with a cleared cache and from before you enter the whole maze...)

 

or perhaps I have the Linvale creature. Let me look again... nope, all of the AR0300 scripts are basically the same stuff. The setting in the script you were looking for is the clobbering of "lin" - he uses

 

ActionOverride("lin",Kill(Myself))

Link to comment

ummm.. ok, what happens to a creature that has straight 20s across all resistances Death/poison, wands, polymorph, breath, and spells? Perhaps this is one of the problems...

 

changing the tp2 to patch in Winski's regular values (perhaps we should drop some of them?

COPY_EXISTING ~_WINSKI2.CRE~ ~override~
 WRITE_BYTE 0x54 ~13~ // Save versus death (0-20) 
 WRITE_BYTE 0x55 ~9~ // Save versus wands (0-20) 
 WRITE_BYTE 0x56 ~11~ // Save versus polymorph (0-20) 
 WRITE_BYTE 0x57 ~13~ // Save versus breath attacks (0-20) 
 WRITE_BYTE 0x58 ~3~ // Save versus spells (0-20) 
 WRITE_ASCII 0x2cc ~_WINSKI~ #8
 WRITE_ASCII 0x280 ~winski~ #32

Link to comment
hey - I just thought - if you are using a savedgame, the creatures are saved. Try going into the savegame itself and resetting Winski's DV. This might be working, and the saved creature just not doing it (unless you are starting with a cleared cache and from before you enter the whole maze...)

 

Heh, I believe the appropriate word now would be whooops! ;) Having deleted the maze area from the testing save, the sequence plays out with Finger of Death (with that appropriate soul-leaving-the-body animation as well) casting and Winski dying... :mad: This is my local current script block:

 

IF
Global("X#DynaJournal","GLOBAL",10)
Global("X#TanarriKillsWinski","LOCALS",0)
THEN
RESPONSE #100
	SetGlobal("X#TanarriKillsWinski","LOCALS",1)
	SetGlobal("X#DynaJournal","GLOBAL",11)
	ActionOverride("aravaata",ReallyForceSpell("winski2",WIZARD_FINGER_OF_DEATH_IGNORE_RESISTANCE))
	Kill("winski2")
	Enemy()

 

This one isn't quite perfect in that the Kill action effectively triggers before the finger of death, but you won't even see that unless you're playing in "verbose mode".

 

I really don't think those stats are a problem, for our purposes awful saving throws should only mean that the finger of death will kill him 95 % of the time. I do suggest you add that Summon Cacofiend scroll to his inventory now though, and then add the amulet whenever it's ready (if necessary I'll research a suitable way to that with COPY_EXISTING).

Link to comment

does the Dynaheir talk trigger right afterwards? If so, we are seriously in business; I have put a last plea in to Grheyfain re: Sirine's Call interjections, and all we need now is an amulet for _winski2 to drop! I'll go look at some tutorials.

Link to comment
does the Dynaheir talk trigger right afterwards?

 

That it does not, you still have to initiate conversation yourself. Is it on a timer, and if so how short is it (supposed to be)? I added a note to my previous post about Winski's items before I saw your reply - see above.

Link to comment

Archived

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

×
×
  • Create New...