Jump to content

Hell bonuses fixes


Recommended Posts

Many of the spells used to grant bonuses in the hell trials had an alignment change effect along with mis-timing on many of the bonuses. This is what cause any evil creature to become NE if they behaved evilly in the trials; BD's solution was to remove the effect from the spells themselves and use the area script to handle the alignment change.

 

// hell spell fixes; many had spurious change alignment effects and wrong timing on bonuses
COPY_EXISTING ~spin747.spl~ ~override~ // selfish, evil
             ~spin749.spl~ ~override~ // wrath, evil
             ~spin750.spl~ ~override~ // wrath, good
             ~spin751.spl~ ~override~ // pride, evil
             ~spin753.spl~ ~override~ // fear, evil
             ~spin755.spl~ ~override~ // greed, evil
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 READ_LONG  0x6a "fx_off"
 WHILE ("%abil_num%" > 0) BEGIN
   SET "abil_num" = ("%abil_num%" - 1)
   READ_SHORT ("%abil_off%" + (0x28 * "%abil_num%")) "type"
   PATCH_IF ("%type%" = 1) BEGIN // if melee
     READ_SHORT ("%abil_off%" + 0x1e + (0x28 * "%abil_num%")) "fx_num"
     READ_SHORT ("%abil_off%" + 0x20 + (0x28 * "%abil_num%")) "fx_idx"
     WHILE ("%fx_num%" > 0) BEGIN
       SET "fx_num" = ("%fx_num%" - 1)
       READ_SHORT ("%fx_off%" +        (0x30 * ("%fx_idx%" + "%fx_num%"))) "opcode"
       PATCH_IF ("%opcode%" = 57) BEGIN // change alignment
         WRITE_LONG ("%fx_off%" + 0x12 + (0x30 * ("%fx_idx%" + "%fx_num%"))) 0 // probability: zero
       END
       PATCH_IF (("%opcode%" = 6)  OR ("%opcode%" = 10)  OR ("%opcode%" = 44) // CHR/CON/STR bonus
              OR ("%opcode%" = 49) OR ("%opcode%" = 104) OR ("%opcode%" = 108)) BEGIN // WIS/XP bonus, rep change
         WRITE_BYTE ("%fx_off%" + 0x0c + (0x30 * ("%fx_idx%" + "%fx_num%"))) 1 // timing: inst/perm
       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...