Jump to content

Viconia proficiency fix


Recommended Posts

The last of the creatre fixes from Baldurdash. This grants Viconia's missing proficiencies at levels 8+. I've kept BD's choice of S&S at level 8-11 and S&S and flail for level 12+.

 

// Viconia proficiency fix
COPY_EXISTING ~viconi8.cre~  ~override~
             ~viconi9.cre~  ~override~
             ~viconi11.cre~ ~override~
             ~viconi13.cre~ ~override~
             ~viconi16.cre~ ~override~
 PATCH_IF (SOURCE_SIZE > 0x2d3) THEN BEGIN // protects against invalid files
   READ_BYTE 0x234 "level"
   READ_LONG 0x2a0 "kspl_off"
   READ_LONG 0x2a8 "minfo_off"
   READ_LONG 0x2b0 "mspl_off"
   READ_LONG 0x2b8 "itmslot_off"
   READ_LONG 0x2bc "itm_off"
   READ_LONG 0x2c4 "fx_off"
   READ_LONG 0x2c8 "fx_num"
   SET "delta" = 1
   INSERT_BYTES  "%fx_off%" 0x108 // inserting new prof effect
     WRITE_LONG  ("%fx_off%" + 0x08) 233    // opcode
     WRITE_LONG  ("%fx_off%" + 0x14) 1      // stars
     WRITE_LONG  ("%fx_off%" + 0x18) 112    // prof - sword & shield
     WRITE_LONG  ("%fx_off%" + 0x1c) 9      // timing
     WRITE_SHORT ("%fx_off%" + 0x24) 100    // prob
     WRITE_ASCII ("%fx_off%" + 0x68) ~None~ // vvc
   PATCH_IF ("%level%" > 12) BEGIN
     SET "delta" = 2
     INSERT_BYTES  "%fx_off%" 0x108 // inserting new prof effect
       WRITE_LONG  ("%fx_off%" + 0x08) 233    // opcode
       WRITE_LONG  ("%fx_off%" + 0x14) 1      // stars
       WRITE_LONG  ("%fx_off%" + 0x18) 100    // prof - flail
       WRITE_SHORT ("%fx_off%" + 0x24) 100    // prob
       WRITE_ASCII ("%fx_off%" + 0x68) ~None~ // vvc
   END
   WRITE_LONG 0x2c8 ("%fx_num%" + "%delta%")
   SET "offset" = ("%delta%" * 0x108)
   PATCH_IF NOT ("%fx_off%" > "%kspl_off%") BEGIN
     WRITE_LONG 0x2a0 ("%kspl_off%" + "%offset%")
   END
   PATCH_IF NOT ("%fx_off%" > "%minfo_off%") BEGIN
     WRITE_LONG 0x2a8 ("%minfo_off%" + "%offset%")
   END
   PATCH_IF NOT ("%fx_off%" > "%mspl_off%") BEGIN
     WRITE_LONG 0x2b0 ("%mspl_off%" + "%offset%")
   END
   PATCH_IF NOT ("%fx_off%" > "%itmslot_off%") BEGIN
     WRITE_LONG 0x2b8 ("%itmslot_off%" + "%offset%")
   END
   PATCH_IF NOT ("%fx_off%" > "%itm_off%") BEGIN
     WRITE_LONG 0x2bc ("%itm_off%" + "%offset%")
   END
 END
 BUT_ONLY_IF_IT_CHANGES

Link to comment

Included in alpha 3. Had a code correction:

 

// Viconia proficiency fix
COPY_EXISTING ~viconi8.cre~  ~override~
             ~viconi9.cre~  ~override~
             ~viconi11.cre~ ~override~
             ~viconi13.cre~ ~override~
             ~viconi16.cre~ ~override~
 PATCH_IF (SOURCE_SIZE > 0x2d3) THEN BEGIN // protects against invalid files
   READ_BYTE 0x234 "level"
   READ_LONG 0x2a0 "kspl_off"
   READ_LONG 0x2a8 "minfo_off"
   READ_LONG 0x2b0 "mspl_off"
   READ_LONG 0x2b8 "itmslot_off"
   READ_LONG 0x2bc "itm_off"
   READ_LONG 0x2c4 "fx_off"
   READ_LONG 0x2c8 "fx_num"
   SET "delta" = 1
   INSERT_BYTES  "%fx_off%" 0x108 // inserting new prof effect
     WRITE_LONG  ("%fx_off%" + 0x08) 233    // opcode
     WRITE_LONG  ("%fx_off%" + 0x14) 1      // stars
     WRITE_LONG  ("%fx_off%" + 0x18) 112    // prof - sword & shield
     WRITE_LONG  ("%fx_off%" + 0x1c) 9      // timing
     WRITE_SHORT ("%fx_off%" + 0x24) 100    // prob
     WRITE_ASCII ("%fx_off%" + 0x68) ~None~ // vvc
   PATCH_IF ("%level%" > 12) BEGIN
     SET "delta" = 2
     INSERT_BYTES  "%fx_off%" 0x108 // inserting new prof effect
       WRITE_LONG  ("%fx_off%" + 0x08) 233    // opcode
       WRITE_LONG  ("%fx_off%" + 0x14) 1      // stars
       WRITE_LONG  ("%fx_off%" + 0x18) 100    // prof - flail
       WRITE_LONG  ("%fx_off%" + 0x1c) 9      // timing
       WRITE_SHORT ("%fx_off%" + 0x24) 100    // prob
       WRITE_ASCII ("%fx_off%" + 0x68) ~None~ // vvc
   END
   WRITE_LONG 0x2c8 ("%fx_num%" + "%delta%")
   SET "offset" = ("%delta%" * 0x108)
   PATCH_IF NOT ("%fx_off%" > "%kspl_off%") BEGIN
     WRITE_LONG 0x2a0 ("%kspl_off%" + "%offset%")
   END
   PATCH_IF NOT ("%fx_off%" > "%minfo_off%") BEGIN
     WRITE_LONG 0x2a8 ("%minfo_off%" + "%offset%")
   END
   PATCH_IF NOT ("%fx_off%" > "%mspl_off%") BEGIN
     WRITE_LONG 0x2b0 ("%mspl_off%" + "%offset%")
   END
   PATCH_IF NOT ("%fx_off%" > "%itmslot_off%") BEGIN
     WRITE_LONG 0x2b8 ("%itmslot_off%" + "%offset%")
   END
   PATCH_IF NOT ("%fx_off%" > "%itm_off%") BEGIN
     WRITE_LONG 0x2bc ("%itm_off%" + "%offset%")
   END
 END
 BUT_ONLY_IF_IT_CHANGES

Link to comment

Archived

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

×
×
  • Create New...