Jump to content

Duplicates of unique characters


NiGHTMARE

Recommended Posts

BMTOWN4.cre - this halfling man actually has a name assigned to his .cre (Stanet), yet there are two of him in the Bridge District!

 

GFTOWN02.cre - her dialogues with both Keldorn and Anomen identify her as a unique individual (the former governess of Anomen, and the current governess of Keldorn's kids, with the possible name of Mary or Marilyn), yet this .cre appears in the Government District three times. I'd suggest replacing two of them with GFTOWN01.cre, which currently only appears once.

 

 

EDIT: ah, it seems Stanet is already fixed by the Fixpack. The other one isn't though, AFAICT.

Link to comment

Added this to the existing ar1000 fix:

 

// changes guard references in ar1000 to not be the rubble-guarder type, enables one ambient, fixes multiple gftown02
COPY_EXISTING ~AR1000.ARE~ ~override~
 READ_LONG  0x54 "actor_off"
 READ_SHORT 0x58 "actor_num"
 READ_SHORT 0x82 "amb_num"
 READ_LONG  0x84 "amb_off"
 WHILE ("%actor_num%" > 0) BEGIN
   SET "actor_num" = ("%actor_num%" - 1)
   READ_ASCII ("%actor_off%" + 0x80 + ("%actor_num%" * 0x110)) "cre_file"
   PATCH_IF ("%cre_file%" STRING_COMPARE_CASE "AMNG1" = 0) BEGIN
     WRITE_ASCII ("%actor_off%" + 0x80 + ("%actor_num%" * 0x110)) ~AMNG2~ #8
   END ELSE
   PATCH_IF (("%cre_file%" STRING_COMPARE_CASE "victown1" = 0) OR
             ("%cre_file%" STRING_COMPARE_CASE "victown4" = 0)) BEGIN
     WRITE_LONG ("%actor_off%" + 0x28 + ("%actor_num%" * 0x110)) 9
   END ELSE 
   PATCH_IF ("%cre_file%" STRING_COMPARE_CASE "gftown02" = 0) BEGIN
     READ_SHORT ("%actor_off%" + 0x20 + ("%actor_num%" * 0x110)) "x_coord"
     READ_SHORT ("%actor_off%" + 0x22 + ("%actor_num%" * 0x110)) "y_coord"
     PATCH_IF (("%x_coord%" != 2265) AND ("%y_coord%" != 692)) BEGIN
       WRITE_ASCII ("%actor_off%" + 0x80 + ("%actor_num%" * 0x110)) ~gftown01~ #8
     END
   END
 END
 WHILE ("%amb_num%" > 0) BEGIN
   SET "amb_num" = ("%amb_num%" - 1)
   READ_SHORT ("%amb_off%" + 0x20 + ("%amb_num%" * 0xd4)) "x_coord"
   PATCH_IF ("%x_coord%" = 907) BEGIN
     WRITE_LONG ("%amb_off%" + 0x8C + ("%amb_num%" * 0xd4)) 0x001fffc0
   END
 END
 BUT_ONLY_IF_IT_CHANGES

Link to comment

Why are we setting the "use actor name as script name" bit for Nobleman VICTOWN1 and Noblewoman VICTOWN4?

   PATCH_IF (("%cre_file%" STRING_COMPARE_CASE "victown1" = 0) OR
		 ("%cre_file%" STRING_COMPARE_CASE "victown4" = 0)) BEGIN
 WRITE_LONG ("%actor_off%" + 0x28 + ("%actor_num%" * 0x110)) 9
  END ELSE

Link to comment

This flag sets the actor name (as specified in the header in the ARE file) as the script name.

 

We're giving them the script names "Nobleman" and "Noblewoman"...

   PATCH_IF (("%cre_file%" STRING_COMPARE_CASE "victown1" = 0) OR
		 ("%cre_file%" STRING_COMPARE_CASE "victown4" = 0)) BEGIN
 WRITE_ASCII ("%actor_off%" +		("%actor_num%" * 0x110)) "%cre_file%" #32
 WRITE_LONG  ("%actor_off%" + 0x28 + ("%actor_num%" * 0x110)) 9
  END ELSE

There, I fix it for you. ;)

Link to comment
This flag sets the actor name (as specified in the header in the ARE file) as the script name.

 

We're giving them the script names "Nobleman" and "Noblewoman"...

   PATCH_IF (("%cre_file%" STRING_COMPARE_CASE "victown1" = 0) OR
		 ("%cre_file%" STRING_COMPARE_CASE "victown4" = 0)) BEGIN
 WRITE_ASCII ("%actor_off%" +		("%actor_num%" * 0x110)) "%cre_file%" #32
 WRITE_LONG  ("%actor_off%" + 0x28 + ("%actor_num%" * 0x110)) 9
  END ELSE

There, I fix it for you. :D

WRITE_ASCIIE... :) I'm inclined to just patch the creature files directly, then, and drop this from the area patch.

Link to comment

Yeah. You don't use WRITE_ASCIIT, so I had to readjust my thinking to setting the write length manually and totally forgot about the evaluate.

 

I too only patch the CREs, which is why I initially had no idea what was going on with this patch.

Link to comment

Archived

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

×
×
  • Create New...