Jump to content

Fuinril

Members
  • Posts

    8
  • Joined

  • Last visited

Posts posted by Fuinril

  1. On 4/25/2021 at 10:32 PM, Guest kimmuryiel said:

    does this version also fix the fact that the "no traps or locks" doesn't actually unlock anything in the "anthology" version? Hasn't for awhile. I always have to go to the specific "bg2tweaks" for it to work in BG1 (at least, can't remember about for BG2). It will install, but I go to loot the Candlekeep Inn and everything is still locked.

    Not putting my head on the bill on this one but I can confirm this version includes parts of the fix I provided last year (better written), including the fix of the main bug rendering this specific mod nonfunctionnal.

  2. 2 hours ago, Jarno Mikkola said:

    In particular, I would advice that the traps that the thieves can detect to be removed. Yes, there are a bunch that aren't exactly actual traps ... but we aren't talking about those.

    Well, I did a quick check about detectable traps not already changed by the component. There's such traps here (and only here) :

     

    BG1 :  

    - sarevok fight, 8 traps, skull pattern

    BG2 :

    - planar prison : 2 traps just before the prisonners, disabled by the key you loot on boss (the key element is not directly related to the trap but in the BCS, making detecting it a pain)

    - irenicus dungeon lvl2 : 6 traps in the pillars room, disabled by putting the correct wand in containers (like previously, pretty hard to detect).

    - bodhi hunt lvl1 : 2 traps the squish ones

    IWD :

    - final fight room, 6 traps on the mosaic

    IWD2 :

    none

    PST :

    Did not check

     

    That's not a lot...

     

     

    Edit   : like previously stated I do not own SoD, so there can be more in it

  3. 8 hours ago, Jarno Mikkola said:

    Could you optionalize the component to allow ALL traps, not just the ones the thief could ? I know, I know, it's a thing only a readme can explain best, and for that people need to read them, which I never do..

    I would recommend against it. Technically speaking there's a lot of "traps" attached to events and disable them might lead to game breaking bugs.

  4. 1 hour ago, Guest Ludwig said:

    I'm an SCS soloer that always uses this component. I would install both of Fuinril's components regardless. However, if there are some ground traps that can't be disarmed using disarm trap skill, then I would rather have them not removed, due to the difficulty reason you mentioned. I'm not sure if there's a way to understand which traps can be disarmed or not though.

    That's how the mod works (for traps, chests and doors) : if you're not supposed to be able to disarm or lockpick it, there's no change.

     

    I have to say that I didn't know one cannot disarm the majority of the traps used in battle, so the separation is way less relevant I though it was.

  5. 1 hour ago, CamDawg said:

    A huge thanks for all of this! For the most part, I've incorporated this, with two notable exceptions:

    • Even though lock difficulties get set to zero, I'm retaining the locked flag as it serves as an important indicator to the player. E.g. in many homes, the guards will be called when opening locked containers, and removing the flag means the player has no warning to be careful.
    • For now I'm going to keep it as one component as I've not seen any demand for these to be separated (and the more natural separation is likely traps vs. locks). If someone out there wants these as separate components, let me know, and also how you'd like them separated.

     

    The though behind the separation was this component is - I think - mainly used for playthroughs without thief. However ground traps, whle often a hindrance, are also used as battle elements like against Sarevok or in the room with the mummy mosaic in Athkatla. That beeing said I understand very well giving too many options in  such a huge mod is a problem of its own, so feel free to do as you see fit.

  6. 1 hour ago, Guest Ludwig said:

    Wow, Fuinril, this is a very welcome change, at least from me as I always use this component even though it's broken.

    Just a question though, do your changes fix the issue I mentioned here:

    https://www.gibberlings3.net/forums/topic/30512-bug-no-traps-or-locks/

    Thanks a lot for sharing this

    I do not own SoD so I cannot be sure. It may still be broken if beamdog did something unexpected. I'll be able to answer you (and possibly fix it) if you give me a dump of the native hellevator values (ctrl+m in debug mode) on the topic you opened. The other ones are fixed.

    Beware if you decide to use this fix on your installation, you'll need a text entry for value 313100 in the languages/[your mod installation language]/setup.tra file

  7. Hello! 

    I'm all new here. I downloaded this mod mainly for the no traps and no locks component which is sadly broken and do not work at all as of v9 (at least in BG2 EE - but I strongly doubt it works with any IE game due to some offset errors).

    So I rolled up my sleeves, cast an eye about how IE modding worked, learnt some bits of Weidu and fixed it.

     

    I'm all willing to push it on github, however I think it's more polite to ask before emitting a wild PR. Moreover I did some structural changes: I separated the component in two : ground traps and container/door traps and locks... and I'm not sure it will be welcome. So I post here and wait for an answer.

    Here the complete patchnote :

    • disable trigger (ground) traps can now be installed as a stand alone component
    • update doors "locked" flag if needed (fix doors still being locked with a 0 lockpick difficulty)
    • update container "locked" flag if needed (fix chests still being locked with 0 lockpick difficulty)
    • update doors "hidden located" flag for hidden doors, making them instantly visible (the "Detection difficulty" parameters does not seem to be used by the game engine)
    • fix the offset for reading "key" parameter used to check if a door or a container has a key (and if so not remove the lock)
    • add some checks to not override uneeded files (not sure if needed)

    I wanted to play with the force difficulty to allow to not remove locks but allow to force any container or door at 25 str but had no success for now

    Finally the code :

    /////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\
    /////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\
    /////                                                  \\\\\
    ///// No ground traps                                  \\\\\
    /////                                                  \\\\\
    /////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\
    /////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\
    
    BEGIN @313000 DESIGNATED 3130
    GROUP @4
    
    ACTION_IF GAME_IS ~iwd2~ BEGIN OUTER_SET off = 0x10 END ELSE BEGIN OUTER_SET off = 0 END // outside of this, patch works for v1.0 and v9.1 areas
    COPY_EXISTING_REGEXP GLOB ~^.+\.are$~ ~override~
      READ_SHORT (0x5a + off) trig_num
      READ_LONG  (0x5c + off) trig_off
      FOR (index = 0 ; index < trig_num ; ++index) BEGIN // cycle through triggers
        READ_SHORT (trig_off + 0x6a + (0xc4 * index)) trap_diff
        PATCH_IF ((trap_diff > 0) AND (trap_diff < 100)) BEGIN
          WRITE_SHORT (trig_off + 0x6c + (0xc4 * index)) 0 // is not a trap
        END
      END
      BUT_ONLY
    
    /////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\
    /////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\
    /////                                                  \\\\\
    ///// No locked/hidden door or chest                   \\\\\
    /////                                                  \\\\\
    /////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\
    /////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\/////\\\\\
    
    BEGIN @313100 DESIGNATED 3131
    GROUP @4
    
    ACTION_IF GAME_IS ~iwd2~ BEGIN OUTER_SET off = 0x10 END ELSE BEGIN OUTER_SET off = 0 END // outside of this, patch works for v1.0 and v9.1 areas
    COPY_EXISTING_REGEXP GLOB ~^.+\.are$~ ~override~
      READ_SHORT (0x74 + off) cont_num
      READ_LONG  (0x70 + off) cont_off
      READ_LONG  (0xa4 + off) door_num
      READ_LONG  (0xa8 + off) door_off
      FOR (index2 = 0 ; index2 < cont_num ; ++index2) BEGIN // cycle through containers
        READ_ASCII  (cont_off + 0x78 + (index2 * 0xc0)) key // key
        PATCH_IF (("%key%" STRING_COMPARE_CASE "" = 0) OR ("%key%" STRING_COMPARE_CASE "None" = 0)) BEGIN
          READ_SHORT  (cont_off + 0x26 + (index2 * 0xc0)) lock_diff // lock difficulty
          PATCH_IF ((lock_diff != 0) AND (lock_diff != 100)) BEGIN
    	       READ_BYTE  (cont_off + 0x28 + (index2 * 0xc0)) cont_flags // container flags
    	       PATCH_IF ((cont_flags BAND 0b0000000000000001) = 0b0000000000000001) BEGIN // if container has locked flag
    		       WRITE_BYTE  (cont_off + 0x28 + (index2 * 0xc0)) (cont_flags BXOR 0b0000000000000001) // container flag unlocked
    	       END
             WRITE_SHORT  (cont_off + 0x26 + (index2 * 0xc0)) 0 // lock difficulty
          END
        END
        READ_SHORT  (cont_off + 0x2c + (index2 * 0xc0)) trap_diff // trap difficulty
        PATCH_IF ((trap_diff != 0) AND (trap_diff != 100)) BEGIN
          WRITE_SHORT (cont_off + 0x30 + (index2 * 0xc0)) 0 // is not a trap
        END
      END
      FOR (index3 = 0 ; index3 < door_num ; ++index3) BEGIN // cycle through doors
        READ_SHORT (door_off + 0x6e + (index3 * 0xc8)) trap_diff // detect diff
        PATCH_IF ((trap_diff != 0) AND (trap_diff != 100)) BEGIN
          WRITE_SHORT (door_off + 0x70 + (index3 * 0xc8)) 0 // is not a trap
        END
        READ_SHORT (door_off + 0x28 + (index3 * 0xc8)) door_flags //door flags
    	SET new_flags_value = door_flags
        READ_ASCII (door_off + 0x78 + (index3 * 0x8c)) key // key
        PATCH_IF (("%key%" STRING_COMPARE_CASE "" = 0) OR ("%key%" STRING_COMPARE_CASE "None" = 0)) BEGIN
          READ_LONG  (door_off + 0x8c + (index3 * 0xc8)) lock_diff // lock diff
          PATCH_IF ((lock_diff != 0) AND (lock_diff != 100)) BEGIN
            WRITE_LONG  (door_off + 0x8c + (index3 * 0xc8)) 0 // lock diff
            PATCH_IF ((door_flags BAND 0b0000000000000010) = 0b0000000000000010) BEGIN // if flag door locked
    	      SET new_flags_value = new_flags_value BXOR 0b0000000000000010 // flag door unlocked
    	    END
          END
        END
    
        PATCH_IF ((door_flags BAND 0b0000000010000000) = 0b0000000010000000) BEGIN // if secret door
          SET new_flags_value = new_flags_value BOR 0b0000000100000000 // secret door detected
    	  WRITE_LONG (door_off + 0x88 + (index3 * 0xc8)) 0  // detect secret doors diff - seems ununsed
        END
        PATCH_IF (door_flags != new_flags_value) BEGIN //if door flags changed
          WRITE_SHORT (door_off + 0x28 + (index3 * 0xc8)) new_flags_value
        END
      END
      BUT_ONLY

     

×
×
  • Create New...