Jump to content

Monk's Haste Immunity


Drew

Recommended Posts

Did it the lazy way: added full immunity to every haste spell with fatigue penalties.

 

// monks shouldn't be fatigued by haste spell
COPY_EXISTING ~spcl814.spl~ ~override~ // innate immunity to haste and slow
 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"
   READ_LONG  0x34 "level"
   SET "delta" = 0
   FOR (index = 0; index < abil_num; index = index + 1) BEGIN
     READ_SHORT ("%abil_off%" + 0x1e + (0x28 * "%index%")) "abil_fx_num"
     READ_SHORT ("%abil_off%" + 0x20 + (0x28 * "%index%")) "abil_fx_idx"
     SET "abil_fx_idx" = ("%abil_fx_idx%" + "%delta%")
     WRITE_SHORT ("%abil_off%" + 0x20 + (0x28 * "%index%")) "%abil_fx_idx%"
     FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       PATCH_IF ("%opcode%" = 101) BEGIN // protection from effect
         READ_ASCII ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "clone" (48) // clones effect
         SET "index2" = "%abil_fx_num%" // kills FOR loop
         INSERT_BYTES            ("%fx_off%" +        (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) 0x30
           WRITE_EVALUATED_ASCII ("%fx_off%" +        (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) ~%clone%~    // dupes opcode 101 effect
           WRITE_SHORT           ("%fx_off%" +        (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) 206          // protection from spell
           SAY                   ("%fx_off%" + 0x04 + (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) #-1          // null string
           WRITE_EVALUATED_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) ~spin572~ #8 // haste
         INSERT_BYTES            ("%fx_off%" +        (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) 0x30
           WRITE_EVALUATED_ASCII ("%fx_off%" +        (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) ~%clone%~    // dupes opcode 101 effect
           WRITE_SHORT           ("%fx_off%" +        (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) 206          // protection from spell
           SAY                   ("%fx_off%" + 0x04 + (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) #-1          // null string
           WRITE_EVALUATED_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) ~spin828~ #8 // haste
         INSERT_BYTES            ("%fx_off%" +        (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) 0x30
           WRITE_EVALUATED_ASCII ("%fx_off%" +        (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) ~%clone%~    // dupes opcode 101 effect
           WRITE_SHORT           ("%fx_off%" +        (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) 206          // protection from spell
           SAY                   ("%fx_off%" + 0x04 + (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) #-1          // null string
           WRITE_EVALUATED_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) ~spra301~ #8 // haste
         INSERT_BYTES            ("%fx_off%" +        (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) 0x30
           WRITE_EVALUATED_ASCII ("%fx_off%" +        (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) ~%clone%~    // dupes opcode 101 effect
           WRITE_SHORT           ("%fx_off%" +        (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) 206          // protection from spell
           SAY                   ("%fx_off%" + 0x04 + (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) #-1          // null string
           WRITE_EVALUATED_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_num%" + "%abil_fx_idx%"))) ~spwi305~ #8 // haste
         SET "delta" = ("%delta%" + 4)
         WRITE_SHORT ("%abil_off%" + 0x1e + (0x28 * "%index%")) ("%abil_fx_num%" + 4)
       END
     END
   END
 END
 BUT_ONLY_IF_IT_CHANGES

Link to comment

Archived

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

×
×
  • Create New...