Jump to content

The deal with Coran and generic wyverns


Ascension64

Recommended Posts

OK, partial install (no PIDs, no romances) given the above code, a perusal of the dialog and script files touched, and a quick CLUAConsole of the following order into CandleKeep in the Prologue:

 

_coran5

 

talk refuse to join

talk join

talk again (no response as expected)

 

x#corwyv

 

talk again (no response as expected)

 

Death of x#corwyv

 

talk again (no response as expected)

pick up head

 

Coran approaches and says his piece

slight pause

Coran initiates his BG1NPC talk (and I can't believe this has not been playing - this is great...)

 

talk again (no response as expected)

_keldda

 

talk to K, and the quest (and coran's interjections) play perfectly

 

talk to C, no response (expected)

 

Tomorrow I will go through and try it with folks in different orders, expire the timer and test the triggers, etc (but to do that will need to leave out the BG1NPC edits that use REPLACE_TRIGGER for the two warning talks).

 

But as far as I can see, this works fine. I am assuming that having two blocks (one from UB and one from BG1NPC) will do no harm... if that would be bad, we can just add to the top of the tp2 order of Coran fixes:

 

/* If UB or other fixes already in place  */
 COPY_EXISTING ~%CORAN_BCS%.bcs~ ~override~
DECOMPILE_BCS_TO_BAF
  REPLACE_TEXTUALLY CASE_INSENSITIVE
~Dead("X#CoranWyvern")~ ~False()~
 COMPILE_BAF_TO_BCS
 BUT_ONLY_IF_IT_CHANGES

 

Looking for eachother by component or tp2 or flag won't work so well on this, as older versions without this fix will have the same id.

Link to comment

Looking good. The only convolution I can see with the current method is that the player kills the wyverns without getting their heads, then picks up Coran, then kills a random encounter wyvern, obtaining its head, then going to Keldath with that head rather than the cave wyverns. Both are fixable (extra dialogue for Coran + idiosyncratise MISC52.ITM), but it doesn't sound too serious to be worth fix up.

 

As for doubling of script blocks, I'm inclined to just flag the components incompatible with each other.

 

I've implemented all changes into BGT (below) except for the missing Coran trigger script block, so there shouldn't be any compatibility problems with BGT.

 

REPLACE_TRIGGER_TEXT ~CORANJ~ ~!Dead("Wyvern")~ ~!Dead("X#CoranWyvern")~
ADD_STATE_TRIGGER ~KELDDA~ 6 ~Dead("X#CoranWyvern") InParty("Coran")~

//compatibility with BG1NPC
COPY_EXISTING ~WYVERN.CRE~ ~override/X#CORWYV.CRE~
 WRITE_ASCII 0x280 ~X#CoranWyvern~ #32 //script name

COPY_EXISTING ~AR8501.ARE~ ~override~
 READ_LONG 0x54 actors_off
 READ_SHORT 0x58 actors_num
 FOR (i = 0; i < %actors_num%; i += 1) BEGIN
READ_ASCII (%actors_off% + %i% * 0x110 + 0x80) actor_resref
PATCH_IF !(%actor_resref% STRING_COMPARE_CASE "WYVERN") BEGIN
  WRITE_ASCII (%actors_off% + %i% * 0x110 + 0x80) X#CORWYV (8)
END
 END
BUT_ONLY_IF_IT_CHANGES

Link to comment

Archived

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

×
×
  • Create New...