Jump to content

Harper's Call bug?


Recommended Posts

Yes, confirmed. The damage is correct; the bug reporter's 15 damage is a difficulty-related issue. However, Harper's Call is missing the attribute penalties. Fixed as following:

 

// Harper's Call not draining stats
COPY_EXISTING ~spja01.spl~ ~override~
 PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files
   READ_LONG  0x64 "abil_off"
   READ_SHORT 0x68 "abil_num"
   READ_LONG  0x6a "fx_off"
   SET "new_fx" = 6
   FOR (index = 0; index < abil_num; index = index + 1) BEGIN
     READ_SHORT  ("%abil_off%" + 0x1e + (0x28 * "%index%")) "abil_fx_num"
     WRITE_SHORT ("%abil_off%" + 0x1e + (0x28 * "%index%")) ("%abil_fx_num%" + "%new_fx%")
     READ_SHORT  ("%abil_off%" + 0x20 + (0x28 * "%index%")) "abil_fx_idx"
     SET         "abil_fx_idx" = ("%abil_fx_idx%" + ("%new_fx%" * "%index%"))
     WRITE_SHORT ("%abil_off%" + 0x20 + (0x28 * "%index%")) "%abil_fx_idx%"
     FOR (index2 = 0; index2 < new_fx; index2 = index2 + 1) BEGIN
       INSERT_BYTES  ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 0x30
         WRITE_BYTE  ("%fx_off%" + 0x02 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 2            // target: preset target
         WRITE_BYTE  ("%fx_off%" + 0x03 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 3            // power
         WRITE_LONG  ("%fx_off%" + 0x04 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 0xfffffffb   // -5 penalty
         WRITE_BYTE  ("%fx_off%" + 0x0d + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 3            // dispel/bypass
         WRITE_LONG  ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 60           // 60 seconds
         WRITE_BYTE  ("%fx_off%" + 0x12 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 100          // probability
     END
     WRITE_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 44 // str bonus
     WRITE_SHORT ("%fx_off%" + 0x30 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 15 // dex bonus
     WRITE_SHORT ("%fx_off%" + 0x60 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 10 // con bonus
     WRITE_SHORT ("%fx_off%" + 0x90 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 19 // int bonus
     WRITE_SHORT ("%fx_off%" + 0xc0 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 49 // wis bonus
     WRITE_SHORT ("%fx_off%" + 0xf0 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%")))  6 // chr bonus
   END
 END
 BUT_ONLY_IF_IT_CHANGES

 

Included in alpha 5.

 

edit: Fixed some logic flaws in the patch--applying atribute penalties prior to the resurrection effect was not very effective. :thumbsup:

Link to comment

Archived

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

×
×
  • Create New...