Jump to content

Illegal Item Offsets


Milamber

Recommended Posts

I had some problems with installing Tougher Sendei-Component, due to some items with illegal offsets I circumvented the problem by placing dummy file (renamed copy of a legel item) into the overide folder.

 

After the installation was complete, I overode the dummy-files with the originals.

 

So my question is will this cause problems? ;)

 

P.S. Is it a bug, if an item has an illegal offset? Should I report this in there respective forums?

Link to comment
P.S. Is it a bug, if an item has an illegal offset? Should I report this in there respective forums?

These items with illegal offsets are mod items, then? Which mod? Let me know what to look for, and I'll see if I can figure out the problem.

Link to comment

I have had this problem, it stemmed from the item upgrade pack, whatever the name of the item that combined the two clubs is, blackblood or something. It happened with another item, the problem seemed to stem from the Tougher Sendai component looking for level drain items and mistaking the weird splinter/bleeding damage on the club (the other might have been valygar's upgraded katana, but I forget) for level drain. When it tried to patch the item, weidu reported an premature EOF error (or something similiar), since there wasn't actually a level drain ability present.

 

Just removing the item from the override folder, running Tougher Sendai and then putting the item back in works fine.

Link to comment

CamDawg -- As part of my "collecting stuff I don't understand and comparing it against something I understand even less so I can get more confused" project, I have a snippet of code from (I think) one of your posts at PPG fixing this temporarily by working on level drain:

 

COPY_EXISTING_REGEXP GLOB ~^.+\.itm$~ ~override~
PATCH_IF (SOURCE_SIZE > 0x71)
    /* AND (NOT (("%SOURCE_RES%" STRING_COMPARE_CASE "C2BLUN02") = 0)) */ THEN BEGIN // protects against invalid files
  READ_LONG   0x64 "abil_off"
  READ_SHORT  0x68 "abil_num"
  READ_LONG   0x6a "fx_off"
  READ_SHORT  0x70 "fx_num"
  SET "delta" = 0
  FOR (index3 = 0; index3 < fx_num; index3 = index3 + 1) BEGIN // looks through global effects
    READ_SHORT  ("%fx_off%" +        ("%index3%" * 0x30)) "opcode" ELSE 0
    PATCH_IF ("%opcode%" = 216) BEGIN // level drain
      READ_ASCII ("%fx_off%" +        ("%index3%" * 0x30)) "clone" (0x30)
      SET "fx_num" = "%fx_num%"  + 1
      SET "index3" = "%index3%"  + 1
      INSERT_BYTES            ("%fx_off%" +        (("%index3%") * 0x30)) 0x30 // new effect
        WRITE_EVALUATED_ASCII ("%fx_off%" +        (("%index3%") * 0x30)) "%clone%" #48
        WRITE_SHORT           ("%fx_off%" +        (("%index3%") * 0x30)) 233 // modify prof opcode
        WRITE_BYTE            ("%fx_off%" + 0x03 + (("%index3%") * 0x30)) 4   // power
        WRITE_LONG            ("%fx_off%" + 0x04 + (("%index3%") * 0x30)) 1   // value
        WRITE_LONG            ("%fx_off%" + 0x08 + (("%index3%") * 0x30)) 134 // script state/prof
      SET "delta" = ("%delta%" + 1)
    END
  END
  WRITE_SHORT  0x70 "%fx_num%"
  FOR (index = 0; index < abil_num; index = index + 1) BEGIN // loop through abilities
    READ_SHORT  ("%abil_off%" + 0x1e + ("%index%" * 0x38)) "abil_fx_num" ELSE 0
    READ_SHORT  ("%abil_off%" + 0x20 + ("%index%" * 0x38)) "abil_fx_idx" ELSE 0
    SET "abil_fx_idx" = ("%abil_fx_idx%" + "%delta%")
    WRITE_SHORT  ("%abil_off%" + 0x20 + ("%index%" * 0x38)) "%abil_fx_idx%"
    FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN // looks for effects for abilities
      READ_SHORT  ("%fx_off%" +        (("%abil_fx_idx%" + "%index2%") * 0x30)) "opcode" ELSE 0
      PATCH_IF ("%opcode%" = 216) BEGIN // level drain
        READ_ASCII ("%fx_off%" +        (("%abil_fx_idx%" + "%index2%") * 0x30)) "clone" (0x30)
        SET "abil_fx_num" = "%abil_fx_num%"  + 1
        SET "index2" = "%index2%"  + 1
        INSERT_BYTES            ("%fx_off%" +        (("%abil_fx_idx%" + "%index2%") * 0x30)) 0x30 // new effect
          WRITE_EVALUATED_ASCII ("%fx_off%" +        (("%abil_fx_idx%" + "%index2%") * 0x30)) "%clone%" #48
          WRITE_SHORT           ("%fx_off%" +        (("%abil_fx_idx%" + "%index2%") * 0x30)) 233 // modify prof opcode
          WRITE_BYTE            ("%fx_off%" + 0x03 + (("%abil_fx_idx%" + "%index2%") * 0x30)) 4   // power
          WRITE_LONG            ("%fx_off%" + 0x04 + (("%abil_fx_idx%" + "%index2%") * 0x30)) 1   // value
          WRITE_LONG            ("%fx_off%" + 0x08 + (("%abil_fx_idx%" + "%index2%") * 0x30)) 134 // script state/prof
        SET "delta" = ("%delta%" + 1)
      END
    END
    WRITE_SHORT  ("%abil_off%" + 0x1e + ("%index%" * 0x38)) "%abil_fx_num%"
  END
END
BUT_ONLY_IF_IT_CHANGES

 

Does it still apply?

Link to comment

I wanted to add some other items, which prevented oversight from installing. All NeJ2-items. I could email them, if you want.

 

So here it goes...

 

 

Cittern.itm

DagSeb.itm

DeRing3.itm

DeRing5.itm

Elfwine.itm

InvCloak.itm

Misc73N.itm

SERPSCA.itm

TuPotnD1.itm

wcwight.itm

ZZA7CD.itm

Link to comment

Archived

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

×
×
  • Create New...