Skip to content

[(BGEE) BUG] Massive item bug list

CamDawgCamDawg Member, Developer Posts: 3,438
edited August 2012 in Fixed
This is a whole mess of item fixes, from the major to the anal-retentive, flagged from my item debugger. I've excluded items that don't actually appear in BGEE and while I've done my best to make sure these haven't been reported, I'm sure I've inevitably missed some.
BOW08.ITM: Ability #0 has an effect with incorrect/unknown timing (effect #0, opcode 1)
The eagle bow should have zero effects attached to its launcher ability. Delete the extraneous attacks per round on the launcher ability.
BOWNON.ITM: Ability #0 has an effect with incorrect/unknown timing (effect #0, opcode 1)
The attacks per round effect needs to be moved from the launcher ability to a global, equipped effect. Reindex effects.
GHOST.ITM: Global Effect #6 (opcode 40) has an incorrect timing mode
GHOST2.ITM: Global Effect #7 (opcode 40) has an incorrect timing mode
The slow effects on various ghosts can actually expire. Make these instant/while equipped with 0 duration.
GHOUL1.ITM Warning: Limited duration effects on ability #0 have mismatching durations
The ghoul un-paralyzation sound plays two rounds too late; duration should be 30 instead of 42.
IDART01.ITM: Ability #0 has an effect with incorrect/unknown timing (effect #0, opcode 1)
The attacks per round bonus should be a global effect, not on the ranged ability. Reindex effects.
MISC1G.ITM error: Carried Icon does not exist (CMISC1G.bam)
MISC1H.ITM error: Carried Icon does not exist (CMISC1H.bam)
MISC1I.ITM error: Carried Icon does not exist (CMISC1I.bam)
MISC2A.ITM error: Carried Icon does not exist (CMISC2A.bam)
MISC2B.ITM error: Carried Icon does not exist (CMISC2B.bam)
MISC2C.ITM error: Carried Icon does not exist (CMISC2C.bam)
MISC2D.ITM error: Carried Icon does not exist (CMISC2C.bam)
MISC2E.ITM error: Carried Icon does not exist (CMISC2C.bam)
MISC2F.ITM error: Carried Icon does not exist (CMISC2F.bam)
MISC2G.ITM error: Carried Icon does not exist (CMISC2G.bam)
MISC2H.ITM error: Carried Icon does not exist (CMISC2H.bam)
MISC2I.ITM error: Carried Icon does not exist (CMISC2I.bam)
MISC2K.ITM error: Carried Icon does not exist (CMISC2K.bam)
MISC2L.ITM error: Carried Icon does not exist (CMISC2L.bam)
MISC2M.ITM error: Carried Icon does not exist (CMISC2M.bam)
MISC2N.ITM error: Carried Icon does not exist (CMISC2N.bam)
MISC2P.ITM error: Carried Icon does not exist (cmisc2p.bam)
MISC91.ITM error: Carried Icon does not exist (CMISC91.bam)
MISC92.ITM error: Carried Icon does not exist (CMISC92.bam)
MISC94.ITM error: Carried Icon does not exist (CMISC94.bam)
MISC95.ITM error: Carried Icon does not exist (CMISC95.bam)
MISC98.ITM error: Carried Icon does not exist (CMISC98.bam)
PLAT08.ITM error: Carried Icon does not exist (CPLAT08.bam)
SHLD19.ITM error: Carried Icon does not exist (CSHLD19.bam)
SHLD20.ITM error: Carried Icon does not exist (CSHLD20.bam)
SLNG03.ITM error: Carried Icon does not exist (CSLNG03.bam)
STAF05.ITM error: Carried Icon does not exist (CSTAF05.bam)
STAF06.ITM error: Carried Icon does not exist (CSTAF06.bam)
STAF07.ITM error: Carried Icon does not exist (CSTAF07.bam)
All these missing BAMs are in BG1 but are not making it to BGEE.
SQUIRP.ITM error: Icon does not exist (Isquir.bam)
MISC1H.ITM error: Ground Icon does not exist (GBLUN02.bam)
POTN41.ITM error: Ground Icon does not exist (GPOTN41.bam)
SQUIRP should be looking for ISQUIRL, POTN41 should be looking for GPOTN01, and MISC1H can be changed to GBLUN01.
MISC2P.ITM Warning: Limited duration effects on ability #0 have mismatching durations
Greagan's Harp is supposed to charm for 12 hours, but the portrait icon and un-charm sound play too early (set duration to 3600).
POTN45.ITM Warning: Limited duration effects on ability #0 have mismatching durations
The portrait icon for the potion of freedom expires too soon; duration should be 600. The potion of freedom also needs all of the effects listed in this thread.
RINGWOLF.ITM: Global Effect #0 (opcode 98) has an incorrect timing mode
The regeneration effect should be applied as instant/while equipped without a duration. As I recall, applying regen as instant/limited on an equipped item means it gets re-applied and stacked if the game gets reloaded in the creature area--this is what led to the well-nigh invincible lycanthropes in BG2.
SCRL3G.ITM error: Ability #1 appears in wrong place
The ability location learn the spell should be in an item slot (3), not weapon slot (1).
AX1H04.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
AX1H05.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
AX1H06.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
BLUN01.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
BLUN04.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
BLUN06.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
BLUN10.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
BOW02.ITM: Global Effect #0 (opcode 7) has an incorrect timing mode
BOW02.ITM: Global Effect #1 (opcode 7) has an incorrect timing mode
BOW05.ITM: Global Effect #0 (opcode 7) has an incorrect timing mode
BOW05.ITM: Global Effect #1 (opcode 7) has an incorrect timing mode
BOW05.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
BOW06.ITM: Global Effect #0 (opcode 7) has an incorrect timing mode
BOW06.ITM: Global Effect #1 (opcode 7) has an incorrect timing mode
BOWNON.ITM: Global Effect #0 (opcode 7) has an incorrect timing mode
BOWNON.ITM: Global Effect #1 (opcode 7) has an incorrect timing mode
CATTAC1.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
CLOWN.ITM: Global Effect #5 (opcode 9) has an incorrect timing mode
DAGG04.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
DAGG05.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
DAGGSHIT.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
HALB01.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
HAMM01.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
HELM03.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
HELM03.ITM: Global Effect #3 (opcode 7) has an incorrect timing mode
HELM03.ITM: Global Effect #4 (opcode 7) has an incorrect timing mode
HELM04.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
HELM04.ITM: Global Effect #3 (opcode 7) has an incorrect timing mode
HELM07.ITM: Global Effect #8 (opcode 7) has an incorrect timing mode
HELM07.ITM: Global Effect #9 (opcode 7) has an incorrect timing mode
IAX1H01.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
IBLUN04.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
IBOW03.ITM: Global Effect #0 (opcode 7) has an incorrect timing mode
IBOW03.ITM: Global Effect #1 (opcode 7) has an incorrect timing mode
IHAMM01.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
PLYMSTAR.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
SW1H08.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
SW1H14.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
SW2H01.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
SW2H01B.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
SW2H02.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
SW2H05.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
XBOW01.ITM: Global Effect #0 (opcode 7) has an incorrect timing mode
XBOW01.ITM: Global Effect #1 (opcode 7) has an incorrect timing mode
XBOW01.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
XBOW02.ITM: Global Effect #3 (opcode 1) has an incorrect timing mode
XBOW03.ITM: Global Effect #0 (opcode 7) has an incorrect timing mode
XBOW03.ITM: Global Effect #1 (opcode 7) has an incorrect timing mode
XBOW03.ITM: Global Effect #2 (opcode 7) has an incorrect timing mode
These are cosmetic issues when equipping items--essentially the colors (7) or glow (9) of an item don't 'stick' because they've been set with the wrong timing (all of these should be using instant/while equipped (2) with a duration of 0). Items with multiple listings have multiple color opcodes incorrect.

The remaining errors have no actual impact, but if you're feeling ambitious:
CLCK11.ITM error: Ability #0 is extraneous Default(0) type
MISC16.ITM error: Ability #0 appears in wrong place
MISC17.ITM error: Ability #0 appears in wrong place
MISC18.ITM error: Ability #0 appears in wrong place
MISC19.ITM error: Ability #0 appears in wrong place
MISC20.ITM error: Ability #0 appears in wrong place
MISC21.ITM error: Ability #0 appears in wrong place
MISC22.ITM error: Ability #0 appears in wrong place
MISC23.ITM error: Ability #0 appears in wrong place
MISC24.ITM error: Ability #0 appears in wrong place
MISC25.ITM error: Ability #0 appears in wrong place
MISC26.ITM error: Ability #0 appears in wrong place
MISC27.ITM error: Ability #0 appears in wrong place
MISC28.ITM error: Ability #0 appears in wrong place
MISC29.ITM error: Ability #0 appears in wrong place
MISC30.ITM error: Ability #0 appears in wrong place
MISC31.ITM error: Ability #0 appears in wrong place
MISC32.ITM error: Ability #0 appears in wrong place
MISC33.ITM error: Ability #0 appears in wrong place
MISC34.ITM error: Ability #0 appears in wrong place
MISC35.ITM error: Ability #0 appears in wrong place
MISC36.ITM error: Ability #0 appears in wrong place
MISC37.ITM error: Ability #0 appears in wrong place
MISC38.ITM error: Ability #0 appears in wrong place
MISC39.ITM error: Ability #0 appears in wrong place
MISC86.ITM error: Ability #0 appears in wrong place
POTN27.ITM error: Ability #1 is extraneous Default(0) type
POTN28.ITM error: Ability #1 is extraneous Default(0) type
POTN29.ITM error: Ability #1 is extraneous Default(0) type
POTN30.ITM error: Ability #1 is extraneous Default(0) type
POTN31.ITM error: Ability #1 is extraneous Default(0) type
POTN32.ITM error: Ability #1 is extraneous Default(0) type
POTN33.ITM error: Ability #1 is extraneous Default(0) type
POTN34.ITM error: Ability #1 is extraneous Default(0) type
POTN35.ITM error: Ability #1 is extraneous Default(0) type
POTN36.ITM error: Ability #1 is extraneous Default(0) type
POTN37.ITM error: Ability #1 is extraneous Default(0) type
POTN38.ITM error: Ability #1 is extraneous Default(0) type
POTN40.ITM error: Ability #1 is extraneous Default(0) type
POTN41.ITM error: Ability #1 is extraneous Default(0) type
POTN42.ITM error: Ability #1 is extraneous Default(0) type
POTN43.ITM error: Ability #1 is extraneous Default(0) type
POTN44.ITM error: Ability #1 is extraneous Default(0) type
POTN45.ITM error: Ability #1 is extraneous Default(0) type
POTN46.ITM error: Ability #1 is extraneous Default(0) type
In BG1, items couldn't stack unless they had ability headers. Delete anything in these items of ability type (0) or if the header has zero effects attached to it (i.e. all of the magical headers on the gems).
GBERRY.ITM: Ability #0 has a permanent effect with non-zero duration (effect #0, opcode 17)
IPOTN08.ITM: Ability #0 has a permanent effect with non-zero duration (effect #0, opcode 17)
JELLGR1.ITM: Ability #0 has a permanent effect with non-zero duration (effect #0, opcode 7)
POTN08.ITM: Ability #0 has a permanent effect with non-zero duration (effect #0, opcode 17)
POTN13.ITM: Ability #0 has a permanent effect with non-zero duration (effect #0, opcode 12)
POTN13.ITM: Ability #0 has a permanent effect with non-zero duration (effect #2, opcode 12)
POTN33.ITM: Ability #0 has a permanent effect with non-zero duration (effect #1, opcode 58)
POTN55.ITM: Ability #0 has a permanent effect with non-zero duration (effect #0, opcode 17)
WAND05.ITM: Ability #0 has a permanent effect with non-zero duration (effect #0, opcode 12)
WAND05.ITM: Ability #0 has a permanent effect with non-zero duration (effect #1, opcode 12)
Any effect that is applied permanently should have duration 0.
Post edited by Bhryaen on

Comments

  • CamDawgCamDawg Member, Developer Posts: 3,438
    edited July 2012
    This should cover everything except those missing BG1 BAMs.


    // delete extraneous ApR on abilites
    COPY_EXISTING ~bow08.itm~ ~override~
    ~bownon.itm~ ~override~
    ~idart01.itm~ ~override~
    LAUNCH_PATCH_FUNCTION ~DELETE_ITEM_EFFECT~ INT_VAR
    opcode_to_delete = "1" // attacks per round
    END
    BUT_ONLY

    // add ApR as global
    COPY_EXISTING ~bownon.itm~ ~override~
    LAUNCH_PATCH_FUNCTION ~ADD_ITEM_EQEFFECT~ INT_VAR
    opcode = "1" // attacks per round
    target = "1" // target self
    timing = "2" // instand/while equipped
    parameter1 = "2" // 2 attacks
    parameter2 = "1" // set
    END
    BUT_ONLY

    // add ApR as global
    COPY_EXISTING ~idart01.itm~ ~override~
    LAUNCH_PATCH_FUNCTION ~ADD_ITEM_EQEFFECT~ INT_VAR
    opcode = "1" // attacks per round
    target = "1" // target self
    timing = "2" // instand/while equipped
    parameter1 = "3" // 3 attacks
    parameter2 = "1" // set
    END
    BUT_ONLY

    // fix badly timed un-paralyze sound from ghoul weapon
    COPY_EXISTING ~ghoul1.itm~ ~override~
    READ_LONG 0x64 "abil_off"
    READ_SHORT 0x68 "abil_num"
    READ_LONG 0x6a "fx_off"
    WHILE ("%abil_num%" > 0) BEGIN // looks for melee ability header
    SET "abil_num" = ("%abil_num%" - 1)
    READ_BYTE ("%abil_off%" + ("%abil_num%" * 0x38)) "type"
    PATCH_IF ("%type%" = 1) BEGIN // melee ability check
    READ_SHORT ("%abil_off%" + 0x1e + ("%abil_num%" * 0x38)) "abil_fx_num"
    READ_SHORT ("%abil_off%" + 0x20 + ("%abil_num%" * 0x38)) "abil_fx_idx"
    WHILE ("%abil_fx_num%" > 0) BEGIN // searches through fx for THAC0 bonus
    SET "abil_fx_num" = ("%abil_fx_num%" - 1)
    READ_SHORT ("%fx_off%" + (("%abil_fx_idx%" + "%abil_fx_num%") * 0x30)) "opcode"
    READ_BYTE ("%fx_off%" + 0x0c + (("%abil_fx_idx%" + "%abil_fx_num%") * 0x30)) "timing"
    PATCH_IF (("%opcode%" = 174) AND ("%timing%" = 4)) BEGIN // delayed sound effect
    WRITE_LONG ("%fx_off%" + 0x0e + (("%abil_fx_idx%" + "%abil_fx_num%") * 0x30)) 30 // duration
    END
    END
    END
    END
    BUT_ONLY_IF_IT_CHANGES

    // many items have effects not being applied due to bad timing modes
    COPY_EXISTING ~ax1h04.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~ax1h05.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~ax1h06.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~blun01.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~blun04.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~blun06.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~blun10.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~bow02.itm~ ~override~ // global effect #01 (opcode 7) has an incorrect timing mode
    ~bow05.itm~ ~override~ // global effect #0,1,2 (opcode 7) has an incorrect timing mode
    ~bow06.itm~ ~override~ // global effect #0,1 (opcode 7) has an incorrect timing mode
    ~bownon.itm~ ~override~ // global effect #0,1 (opcode 7) has an incorrect timing mode
    ~cattac1.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~clown.itm~ ~override~ // global effect #5 (opcode 9) has an incorrect timing mode
    ~dagg04.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~dagg05.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~daggshit.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~GHOST.ITM~ ~override~ // Global Effect #6 (opcode 40) has an incorrect timing mode
    ~GHOST2.ITM~ ~override~ // Global Effect #7 (opcode 40) has an incorrect timing mode
    ~halb01.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~hamm01.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~helm03.itm~ ~override~ // global effect #2,3,4 (opcode 7) has an incorrect timing mode
    ~helm04.itm~ ~override~ // global effect #2,3 (opcode 7) has an incorrect timing mode
    ~helm07.itm~ ~override~ // global effect #8,9 (opcode 7) has an incorrect timing mode
    ~iax1h01.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~iblun04.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~ibow03.itm~ ~override~ // global effect #0,1 (opcode 7) has an incorrect timing mode
    ~ihamm01.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~plymstar.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~ringwolf.itm~ ~override~ // fixes well-nigh invincible lycans
    ~sw1h08.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~sw1h14.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~sw2h01.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~sw2h01b.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~sw2h02.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~sw2h05.itm~ ~override~ // global effect #2 (opcode 7) has an incorrect timing mode
    ~xbow01.itm~ ~override~ // global effect #0,1,2 (opcode 7) has an incorrect timing mode
    ~xbow02.itm~ ~override~ // global effect #3 (opcode 1) has an incorrect timing mode
    ~xbow03.itm~ ~override~ // global effect #0,1,2 (opcode 7) has an incorrect timing mode
    PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN // protects against invalid files
    READ_LONG 0x6a "fx_off"
    READ_SHORT 0x70 "fx_num"
    FOR (index = 0; index < "%fx_num%"; index = index + 1) BEGIN // searches through global effects
    WRITE_BYTE ("%fx_off%" + 0x0c + ("%index%" * 0x30)) 2 // instant/while equipped
    WRITE_LONG ("%fx_off%" + 0x0e + ("%index%" * 0x30)) 0 // duration
    END
    END
    BUT_ONLY_IF_IT_CHANGES

    COPY_EXISTING ~SQUIRP.ITM~ ~override~ // error: Icon does not exist (Isquir.bam)
    WRITE_ASCII 0x3a ~isquirl~ #8
    BUT_ONLY_IF_IT_CHANGES

    COPY_EXISTING ~MISC1H.ITM~ ~override~ // error: Ground Icon does not exist (GBLUN02.bam)
    WRITE_ASCII 0x44 ~gblun01~ #8
    BUT_ONLY_IF_IT_CHANGES

    COPY_EXISTING ~POTN41.ITM~ ~override~ // error: Ground Icon does not exist (GPOTN41.bam)
    WRITE_ASCII 0x44 ~gpotn01~ #8
    BUT_ONLY_IF_IT_CHANGES

    // icon, sound too early for greagan's harp
    COPY_EXISTING ~misc2p.itm~ ~override~
    READ_LONG 0x64 "abil_off"
    READ_SHORT 0x68 "abil_num"
    READ_LONG 0x6a "fx_off"
    WHILE ("%abil_num%" > 0) BEGIN // looks for ability header
    SET "abil_num" = ("%abil_num%" - 1)
    READ_BYTE ("%abil_off%" + ("%abil_num%" * 0x38)) "type"
    PATCH_IF ("%type%" = 3) BEGIN // ability check
    READ_SHORT ("%abil_off%" + 0x1e + ("%abil_num%" * 0x38)) "abil_fx_num"
    READ_SHORT ("%abil_off%" + 0x20 + ("%abil_num%" * 0x38)) "abil_fx_idx"
    WHILE ("%abil_fx_num%" > 0) BEGIN
    SET "abil_fx_num" = ("%abil_fx_num%" - 1)
    READ_LONG ("%fx_off%" + 0x0e + (("%abil_fx_idx%" + "%abil_fx_num%") * 0x30)) "duration" // duration
    PATCH_IF ("%duration%" = 120) BEGIN // bad dur
    WRITE_LONG ("%fx_off%" + 0x0e + (("%abil_fx_idx%" + "%abil_fx_num%") * 0x30)) 3600 // duration
    END
    END
    END
    END
    BUT_ONLY_IF_IT_CHANGES

    // fix errors; full free action batch effects handled elsewhere
    COPY_EXISTING ~potn45.itm~ ~override~
    READ_LONG 0x64 "abil_off"
    READ_SHORT 0x68 "abil_num"
    READ_LONG 0x6a "fx_off"
    FOR (index = 0 ; index < abil_num ; index = index + 1) BEGIN
    READ_SHORT ("%abil_off%" + (0x38 * "%index%")) "type"
    READ_SHORT ("%abil_off%" + 0x20 + (0x38 * "%index%")) "abil_fx_idx"
    PATCH_IF ("%type%" = 3) BEGIN // magical ability only
    READ_SHORT ("%abil_off%" + 0x1e + (0x38 * "%index%")) "abil_fx_num"
    FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
    READ_SHORT ("%fx_off%" + (("%abil_fx_idx%" + "%index2%") * 0x30)) "fx_type"
    READ_LONG ("%fx_off%" + 0x08 + (("%abil_fx_idx%" + "%index2%") * 0x30)) "immunity"
    PATCH_IF (("%fx_type%" = 101) AND ("%immunity%" = 5)) BEGIN // change charm immunity to haste immunity
    WRITE_LONG ("%fx_off%" + 0x08 + (("%abil_fx_idx%" + "%index2%") * 0x30)) 16
    END ELSE
    PATCH_IF (("%fx_type%" = 101) AND ("%immunity%" = 45)) BEGIN // change stun immunity to hold immunity
    WRITE_LONG ("%fx_off%" + 0x08 + (("%abil_fx_idx%" + "%index2%") * 0x30)) 175
    END ELSE
    PATCH_IF (("%fx_type%" = 142) OR ("%fx_type%" = 163)) BEGIN // display portrait icon for free action
    WRITE_LONG ("%fx_off%" + 0x0e + (("%abil_fx_idx%" + "%index2%") * 0x30)) 600 // duration
    END
    END
    END
    END
    BUT_ONLY_IF_IT_CHANGES

    // misplaced ability icon
    COPY_EXISTING ~scrl3g.itm~ ~override~
    READ_LONG 0x64 "abil_off"
    READ_SHORT 0x68 "abil_num"
    FOR (index = 0 ; index < abil_num ; index = index + 1) BEGIN // looks for magical ability header
    READ_SHORT ("%abil_off%" + 0x02 + ("%index%" * 0x38)) "location"
    PATCH_IF ("%location%" = 1) BEGIN // weapon slot
    WRITE_SHORT ("%abil_off%" + 0x02 + ("%index%" * 0x38)) 3 // item slot
    WRITE_ASCII ("%abil_off%" + 0x04 + ("%index%" * 0x38)) ~iscrl2i~ #8 // assign icon while we're here
    END
    END
    BUT_ONLY_IF_IT_CHANGES

    // cleans up DLTCEP error messages
    COPY_EXISTING ~gberry.itm~ ~override~ // ability #0 has a permanent effect with non-zero duration (effect #0, opcode 17)
    ~ipotn08.itm~ ~override~ // ability #0 has a permanent effect with non-zero duration (effect #0, opcode 17)
    ~jellgr1.itm~ ~override~ // ability #0 has a permanent effect with non-zero duration (effect #0, opcode 7)
    ~potn08.itm~ ~override~ // ability #0 has a permanent effect with non-zero duration (effect #0, opcode 17)
    ~potn13.itm~ ~override~ // ability #0 has a permanent effect with non-zero duration (effect #0, opcode 12)
    ~potn13.itm~ ~override~ // ability #0 has a permanent effect with non-zero duration (effect #2, opcode 12)
    ~potn33.itm~ ~override~ // ability #0 has a permanent effect with non-zero duration (effect #1, opcode 58)
    ~potn55.itm~ ~override~ // ability #0 has a permanent effect with non-zero duration (effect #0, opcode 17)
    ~wand05.itm~ ~override~ // ability #0 has a permanent effect with non-zero duration (effect #0, opcode 12)
    ~wand05.itm~ ~override~ // ability #0 has a permanent effect with non-zero duration (effect #1, opcode 12)
    READ_LONG 0x64 "abil_off"
    READ_SHORT 0x68 "abil_num"
    READ_LONG 0x6a "fx_off"
    FOR (index = 0 ; index < abil_num ; index = index + 1) BEGIN
    READ_SHORT ("%abil_off%" + 0x20 + (0x38 * "%index%")) "abil_fx_idx"
    READ_SHORT ("%abil_off%" + 0x1e + (0x38 * "%index%")) "abil_fx_num"
    FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
    READ_BYTE ("%fx_off%" + 0x0c + (("%abil_fx_idx%" + "%index2%") * 0x30)) "timing"
    PATCH_IF (("%timing%" = 1) OR ("%timing%" = 9)) BEGIN // delayed sound effect
    WRITE_LONG ("%fx_off%" + 0x0e + (("%abil_fx_idx%" + "%index2%") * 0x30)) 0 // duration
    END
    END
    END
    BUT_ONLY_IF_IT_CHANGES

    // strips extraneous default(0) abiity headers from items to prevent nishruu eating
    COPY_EXISTING ~clck11.itm~ ~override~ // error: ability #0 is extraneous default(0) type
    ~misc16.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc17.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc18.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc19.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc20.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc21.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc22.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc23.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc24.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc25.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc26.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc27.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc28.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc29.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc30.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc31.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc32.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc33.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc34.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc35.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc36.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc37.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc38.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc39.itm~ ~override~ // error: ability #0 appears in wrong place
    ~misc86.itm~ ~override~ // error: ability #0 appears in wrong place
    ~potn27.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn28.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn29.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn30.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn31.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn32.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn33.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn34.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn35.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn36.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn37.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn38.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn40.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn41.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn42.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn43.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn44.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn45.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    ~potn46.itm~ ~override~ // error: ability #1 is extraneous default(0) type
    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_SHORT 0x70 "fx_num"
    SET "fx_delta" = 0
    FOR (index = 0 ; index < abil_num ; index = index + 1) BEGIN // looks for default ability header
    READ_BYTE ("%abil_off%" + ("%index%" * 0x38)) "type"
    PATCH_IF (("%type%" = 0) OR ("%abil_num%" = 1)) BEGIN // default ability check or if lone ability
    READ_SHORT (0x1e + "%abil_off%" + ("%index%" * 0x38)) "abil_fx_num"
    READ_SHORT (0x20 + "%abil_off%" + ("%index%" * 0x38)) "abil_fx_idx"
    DELETE_BYTES ("%fx_off%" + (0x30 * ("%abil_fx_idx%" - "%fx_delta%"))) (0x30 * "%abil_fx_num%") // deletes all associated effects
    DELETE_BYTES ("%abil_off%" + ("%index%" * 0x38)) 0x38 // deletes ability itself
    SET "fx_delta" = ("%fx_delta%" + "%abil_fx_num%")
    SET "abil_num" = ("%abil_num%" - 1)
    SET "index" = ("%index%" - 1)
    SET "fx_off" = ("%fx_off%" - 0x38)
    END ELSE BEGIN // if ability not to be deleted, adjust indices
    READ_SHORT (0x20 + "%abil_off%" + ("%index%" * 0x38)) "abil_fx_idx"
    WRITE_SHORT (0x20 + "%abil_off%" + ("%index%" * 0x38)) ("%abil_fx_idx%" - "%fx_delta%")
    END
    END
    WRITE_SHORT 0x68 "%abil_num%"
    WRITE_LONG 0x6a "%fx_off%"
    END
    BUT_ONLY_IF_IT_CHANGES
    Post edited by CamDawg on
  • BhryaenBhryaen Member Posts: 2,874
    Massive is definitely the name for it... But is this kind of fix actually just a copy-paste? Damn what a rapid massive fix that would be...
  • BalquoBalquo Member, Developer Posts: 2,746
    edited July 2012
    @Bhryaen Yup just copy paste. You could test all the code CamDawg posts by installing weidu, if you felt so inclined. But I suppose it is best to wait until the devs add it.
  • BhryaenBhryaen Member Posts: 2,874
    @Balquo
    Dammmn... :-) Gotta love it! See, I guess I've made myself more useful with NI, but that's the sort of fix I'd like to be issuing out: "Here, CTRL-C, CTRL-V. Next!" lol
  • AndreaColomboAndreaColombo Member Posts: 5,525
    @CamDawg - Awesome!!!

    Hopefully the missing BG1 BAMs will make it to BG:EE as well!
  • CamDawgCamDawg Member, Developer Posts: 3,438
    Well, there's a benefit to writing most of the code in the BG2 Fixpack--I know I've got code handy that either fixes something outright or is pretty close.
  • Avenger_teambgAvenger_teambg Member, Developer Posts: 5,862
    Yeah, it is good we got some automatised checking and BGEE has fixpackers in the beta tester team.
    A similar test run could be executed on syntax checking all scripts/dialogue? Or it has already been done?
  • CamDawgCamDawg Member, Developer Posts: 3,438
    Most of the script/dialogue fixes I've posted have been thanks to NI's automatic checks. Most had already been caught and reported by @Balquo, though, so I went back to digging through BG2FP for relevant stuff. :)

    Most of the G3 Debugging Suite was code I wrote to find bugs for Fixpack. I think @cmorgan already went through and posted the relevant bits from the creature inventory checker and I didn't see anything in the area or creature fixes that @Balquo hadn't already posted. I'm currently working on spells and items.

    In all seriousness, another great way to find dialogue/script bugs is simply to write a MODDER-flagged tp2 that decompiles and recompiles all the dialogues and scripts and check WeiDU's .debug.
  • CorianderCoriander Member Posts: 1,667
    i claim this bug as my very own.
  • WispWisp Member Posts: 1,102

    In all seriousness, another great way to find dialogue/script bugs is simply to write a MODDER-flagged tp2 that decompiles and recompiles all the dialogues and scripts and check WeiDU's .debug.
    Dibs?
    A preliminary check suggests there is quite a lot, but maybe someone else is eager to have all that fun.
  • CorianderCoriander Member Posts: 1,667
    0_o
  • CamDawgCamDawg Member, Developer Posts: 3,438
    edited July 2012

    In all seriousness, another great way to find dialogue/script bugs is simply to write a MODDER-flagged tp2 that decompiles and recompiles all the dialogues and scripts and check WeiDU's .debug.
    Dibs?
    A preliminary check suggests there is quite a lot, but maybe someone else is eager to have all that fun.
    I'm still checking the remaining item/spell bugs from BG2FP, so if you're feeling ambitious go for it. Keep in mind that WeiDU will throw out a lot of false positives--NI flags something like 2300 script warnings in 0709, but all but ten of them are from the leftover BG2 baldur.bcs or from the mysterious and unused oh*.bcs series of scripts.
  • NathanNathan Member Posts: 1,007
    Verified internally, @Coriander has made the changes present - this should make it into the next build.
  • TanthalasTanthalas Member Posts: 6,738
    Holy crap I'm not touching this one.
  • WispWisp Member Posts: 1,102
    Yeah, AURSTAFF is the creature weapon used by the Aurumach Rilmani in Watcher's Keep.
  • BhryaenBhryaen Member Posts: 2,874
    edited August 2012
    Confirmed Fixed, PART 1:

    - BOW08, BOWNON- APR effect moved from Launcher ability to global effects
    - GHOST, GHOST2- Timing mode now 2, Duration = 0
    - GHOUL1- Effect 10 Play Sound now set to 30
    - IDART01- APR effect moved from Ranged ability to global effects
    - CMISC(XX).BAM, CPLAT(XX).BAM, CSHLD(XX).BAM, CSLNG(XX).BAM, CSTAF(XX).BAM- all instances accounted for, but no multiple instances of CMISC2C (none in BG either)
    - As @Avenger_teambg mentioned, there is an ISQUIRL.BAM (plus a duplicate), and actually SQUIRP.ITM is looking for it specifically, so I suppose this is fixed...?
    - GBLUN01.BAM exists and implemented for MISC1H.ITM
    - GPOTN01.BAM exists and implemented for POTN41.ITM
    - MISC2P "Play Sound" changed from 120 to 3600
    - POTN45- Every bloody effect set to Duration = 600 except the Gulp! string, and the instant effects of Remove Paralysis, Cure Stun, Lighting Effects (141), and 1st instance of Play Sound (174).
    - RINGWOLF- Regen ability set to Timing Mode (2) Instant while equipped
    - SCRL3G- Learn Spell ability Ability Location changed from Weapon Slots (1) to Item Slots (3)
    - Timing Mode set to (2) Instant while equipped for the specified color effects of all these:

    AX1H04.ITM
    AX1H05.ITM
    AX1H06.ITM
    BLUN01.ITM
    BLUN04.ITM
    BLUN06.ITM
    BLUN10.ITM
    BOW02.ITM
    BOW05.ITM
    BOW06.ITM
    BOWNON.ITM (The color effects were actually #1 and #2 due to the other fix which placed the "Modify attacks per round" as Effect #0- but all three are set to Timing Mode (2))
    CATTAC1.ITM
    CLOWN.ITM
    DAGG04.ITM (vBG1 has 6 effects, #2, #3, #4 all with incorrect timing mode, but BGEE drops the last three, so...)
    DAGG05.ITM
    DAGGSHIT.ITM
    HALB01.ITM
    HAMM01.ITM
    HELM03.ITM (BGEE rearranges the effects, adds 2 extra color effects- all Timing Mode (2))
    HELM04.ITM (BGEE rearranges the effects, adds 3 extra color effects- all Timing Mode (2))
    HELM07.ITM (BGEE rearranges the effects, adds 3 extra color effects- all Timing Mode (2))
    IAX1H01.ITM
    IBLUN04.ITM
    IBOW03.ITM
    IHAMM01.ITM
    PLYMSTAR.ITM
    SW1H08.ITM
    SW1H14.ITM
    SW2H01.ITM
    SW2H01B.ITM
    SW2H02.ITM
    SW2H05.ITM
    XBOW01.ITM
    XBOW02.ITM (Global Effect #3 isn't a color effect (Modify APR), but yeah, was set wrong, now TM (2))
    XBOW03.ITM
    NOTE: What is it with botching Global Effect #2 when there are 3 color effects?


    NOTES:
    Found multiple instances of particular .BAMs, duplicates not present in vBG1 (likely more in different areas, only checked the specified ones). Not sure if this is an issue beyond clutter:

    CMISC01
    CMISC02
    CMISC03
    CMISC04
    CMISC07
    CMISC12
    CMISC14
    CMISC16
    CMISC19
    CMISC21
    CMISC22
    CMISC24
    CMISC2J
    CMISC46
    CMISC47
    CMISC48
    CMISC49
    CMISC50
    CMISC51
    CMISC52
    CMISC53
    CMISC54
    CMISC55
    CMISC56
    CMISC57
    CMISC58
    CMISC59
    CMISC60
    CMISC61
    CMISC62
    CMISC63
    CMISC64
    CMISC69
    CMISC70
    CMISC72
    CMISC73
    CMISC74
    CMISC79
    CMISC80
    CMISC83
    CMISC84
    CMISC85
    CMISC86
    CMISC87
    CMISC89
    CMISC93
    CMISC96
    CMISC97
    CPLAT01
    CPLAT02
    CPLAT04
    CPLAT05
    CPLAT06
    CSHIL01
    CSHLD01
    CSHLD02
    CSHLD03
    CSHLD04
    CSHLD05
    CSHLD06
    CSHLD07
    CSHLD08
    CSHLD09
    CSHLD10
    CSHLD17
    CSLNG01
    CSLNG02
    CSPER01
    CSPER02
    CSPER03
    CSTAF01
    CSTAF02
    ISQUIRL


  • BhryaenBhryaen Member Posts: 2,874
    edited August 2012
    Confirmed fixed (because I'm that ambitious... *gulp*), PART 2:

    CLCK11.ITM error: Ability #0 is extraneous Default(0) type
    - No Global abilities on this ITM either in vBG1 or BGEE, though BGEE adds needed effects.

    Uh oh... this better not be why all the gems now require Idenficiation...

    - All these ITMs had their "Item ability" removed:

    MISC16.ITM
    MISC17.ITM
    MISC18.ITM
    MISC19.ITM
    MISC20.ITM
    MISC21.ITM
    MISC22.ITM
    MISC23.ITM
    MISC24.ITM
    MISC25.ITM
    MISC26.ITM
    MISC27.ITM
    MISC28.ITM
    MISC29.ITM
    MISC30.ITM
    MISC31.ITM
    MISC32.ITM
    MISC33.ITM
    MISC34.ITM
    MISC35.ITM
    MISC36.ITM
    MISC37.ITM
    MISC38.ITM
    MISC39.ITM
    MISC86.ITM


    - The extraneous Item Ability #1 was removed for all these:

    POTN27.ITM
    POTN28.ITM
    POTN29.ITM
    POTN30.ITM
    POTN31.ITM
    POTN32.ITM
    POTN33.ITM
    POTN34.ITM
    POTN35.ITM
    POTN36.ITM
    POTN37.ITM
    POTN38.ITM
    POTN40.ITM
    POTN41.ITM
    POTN42.ITM
    POTN43.ITM
    POTN44.ITM
    POTN45.ITM
    POTN46.ITM


    - All of these had their Ability effects set to Duration = 0 (with included notes):
    -GBERRY.ITM
    -IPOTN08.ITM
    -JELLGR1.ITM
    -POTN08.ITM
    -POTN13.ITM
    (Effect numbers correspond to vBG1: BGEE removes Display string = Gulp!, so numbering off. Both Opcode (12) effects set to Duration = 0. )
    -POTN33.ITM
    (BGEE adds 10 "Protection from spell" effects (among other things), so numbering off. Opcode (58) effect set to Duration = 0.)
    -POTN55.ITM
    (Item not in vBG1.)
    -WAND05.ITM
  • BhryaenBhryaen Member Posts: 2,874
    @Avenger_teambg
    Did you want to open a new thread for those missed items?
  • Avenger_teambgAvenger_teambg Member, Developer Posts: 5,862
    Bhryaen said:

    @Avenger_teambg
    Did you want to open a new thread for those missed items?

    I don't mind either way. The title is 'massive' so i thought the more the merrier.
    If you think it is cleaner with a second less massive item list, that's ok too.
  • TanthalasTanthalas Member Posts: 6,738
    Its probably better if everything that is confirmed fixed be separated, because that's one scary list already.
Sign In or Register to comment.