Jump to content

K4thos

Modders
  • Posts

    1,420
  • Joined

  • Last visited

Posts posted by K4thos

  1. Jarno Mikkola, fair points.

    Quote

    and it might be useful to actually list mods that REQUIRE it to be installed before it. Added NPC mods, is a good assumption, but what else ? Yeah, the Widescreen mod is also best to install last... but it's hardly an exact requirement.

    - kits mods - installing kit after EET_End results in missing default biography text for this kit, also the kit data won't be copied among CAMPAIGN.2DA file variants, so it won't be selectable in some campaigns,
    - NPC mods - installing them after EET_End results in missing JOIN dlg merging and problems with PDIALOG.2DA (different 2da file is used in different campaigns, EET_End makes all necessary changes to 2da files automatically)
    - mods that reference particular JOIN DLG file names or JOIN dlg state numbers (other then BG2 SoA ones, since those files are used as a base for merging others)
    - mods that takes advantage of "K#IMPORT.2DA" items import feature (explained here)
    - tweaks that expects particular data in 2DA file that is altered by EET_End (can't think about any such mod, but there is a room for conflict here)
    - (only if you're interested in the "Save patcher" feature) mods that add new TLK entries that are referenced in save files - EET_End updates file that stores mod added strings during installation/re-installation, hence it should be installed after such mods

    Quote

    It would be nice to know which exact files the EET_end edits.

    I will make a list of 2da files and post them in this topic at a later date.

    Quote

    And nope, the SCS is not an GUI mod, so your edit has no clearing effect of where this stands at.

    I don't think SCS is a mod that must be installed before, especially in a modder test setup (in which "Save patcher" feature has 0 value)
     

  2. Not sure if I understand "explicitly allowed for EET compatibility" sentence correctly. Even mods with full EET compatibility are installed before EET_End since they expect state of the game (campaign related 2da files, NPC JOIN dlg file names and state numbers) present before this component alters it. Of course someone could create a mod that expects post EET_End state of the game but I'm not aware about any such mod.

    ------------

    Of course if mod does not affect the same stuff that EET_End modifies (or it's a test installation where it doesn't matter), installing them after EET_End won't be a problem.

    Even if other readme files also says to install different mod at the end, EET_end can't really brake such mods, so to avoid confusion and problems that's what EET readme says.

    edit:

    It would be silly to re-install the component each time player tests some new EE GUI or UI component, so readme file of mods like EEUITweaks Mod Collection actually mentions that it's ok to install it after EET_end IIRC (it doesn't matter if it's before or after it). When I'm releasing a weidu installer hotfix for some bug I'm also not expecting players to uninstall EET_end in order to install it. In other words it's a general rule (and it's always safe to follow it, regardless of what other mods readme files says), not necessity.

  3. Here is all that EET_End does: (hopefully I didn't miss anything important, it's been a while since I've touched this code)

    1. Save patcher - optional feature available only during first running EET_End on the current installation. It allows to make saves created on different EET installation (even with completely different mods selection) work on current installation without issues (by updating TLK references using TRA files generated during previous installation, removing non existing resources from saves and re-generating worldmap file from scratch, patching it with info from old map)

    2. generate and patch 2da files related to CAMPAIGN.2DA engine feature (e.g. campaign variants of PDIALOG.2DA)

    3. NPC's JOIN DLG files merging consisting of 3 steps:
    - reading whole content of the DLG file and adding proper trigger filtering depending on which part of the story they come from, using "chapter" variable. Dialogue file only receives filtering if the state can be called by script (which means already has some triggers).
    - combining JOIN DLG files
    - updating all DLG, BCS and CRE files that exists in game to change references to files and updating old state numbers into new ones

    4. generate lua code used for biography based on CLASTEXT.2da and RACETEXT.2da (used in GUI to display correct biography in different campaigns)

    5. generate extra code for item importation (other mods can append to K#IMPORT.2DA in order to make item transferable from SoD to SoA)

    6. export SAVES.TRA (traified TLK starting from string outside the vanilla game range) and SAVES.TXT - both used by Save patcher, updated each time the mod is installed/re-installed

    -------------------

    All of this stuff is something that has to be done after all other mods are installed (at least after those that modify affected 2DA files and/or stuff related to NPCs JOIN dialogs - including any state references to them). Preferably also after any mod that add strings to TLK file (otherwise Save patcher feature won't be reliable).

    The main reason why this code is at the end is the JOIN DLG files merging. Without it the open aspect of EET world (returning back to any previously visited area from later portions of the game) would not exist. Well ok, it could, but adding EET compatibility for mods that have not been designed with EET in mind would be a nightmare. More information is available in "Modder's Notes".

    -------------------

    As for the length, running EET_End on vanilla EET installation (without other mods) is pretty fast (about 1 min if I remember correctly). If having large installation extends the installation time so much in future I will change the code for state reference patching from weidu to Lua (like I did in main component). This should speed up the installation time drastically (with Lua code amount of mods installed should not longer affect how long regexp takes).

  4. there was a report like this recently here: https://github.com/K4thos/EET/issues/28

    I can't reproduce it on clean EET after loading a save attached in the linked topic, so I assumed it's a problem introduced by some other mod. In the linked save there was Tamoko NPC which may be related to the problem. Do you have her in the party?

    Weird thing is second time he had the Sword of Chaos +2 and it triggers the next phase when I picked it up.

    no idea which mod changes SoD start based on sword pickup, it's not EET though.

    Mods Installed via BWS:

    SCS + Ascension

    EET Tweaks - Total XP Cap Disabled/Wand Case

    Klatu's Tweaks and Fixes - Free Action does not prevent haste or movement rate bonus

     

    these mods seems harmless. Unkinhead, if you still have save made before the battle please upload it, so that I can test if I will be able to reproduce it.

  5. ERROR: Out of memory

    Retried about 10 times :

    • Avast actives : crash 100%
    • Avast turned off : crash 50 %

    I can backup this folder and continue :)

     

    Looks like Avast scanning at the same time and some other background programs take enough memory out of your computer that weidu is not able to finish the installation. Don't even try to install SCS. Either disable background running programs or use 64-bit weidu - you can find it in EET/bin/win32/x86_64/ directory. Rename weidu.exe that you will find there to setup-EET.exe replacing old file in your game directory. It's not done by default because there are still people who use 32-bit systems.
  6. then it's not related to EET at all ?!? Logic.

     

    if my assumption is correct and ALIEN will find LIGHTHOUSE_BLACKALARICSCAVE_BCS file in his override directory (for which he should run weidu File Changelog and send this information to that mod maintainer) then exactly the same problem would show up in vanilla game. This variable is the same for all platforms that use cpmvars (BG1, BGEE, Tutu, BGT, EET). Unrelated to EET in this context means it's not related to EET code, but a bug in some other mod.

  7. ZORDRAL.DLG File Changelog

     

    No need for that - the error doesn't mention ZORDRAL.DLG. Weidu fails on DECOMPILE_AND_PATCH use on filename "LIGHTHOUSE_BLACKALARICSCAVE_BCS". Which means such file likely exists in your override directory (some mod likely didn’t use %% properly in tp2). Unrelated to EET.

  8. minor update. RC 11.1 Changelog:

     

    - internalized hotfixes for remaining patch 2.5 issues (chapter 4, Marek and Lothander quest, SoD GUI HLAs) http://gibberlings3.net/forums/index.php?showtopic=28161&page=71&do=findComment&comment=262242
    - splstate.ids importation and patching
    - changes to tp2 code and TRA files related to IWD-in-EET (code unification, support for IWD:EE GUI)
    - cosmetic changes
    - changed arch_var code that caused crashing on macOS (needs testing)

     

    Thank goodness for Near Infinity. I simply changed SetGlobal("RumorTalkThalan","GLOBAL",1) to SetGlobal("RumorTalkThalan","GLOBAL",0) in two action states (6 and 18 for my install) and the problem was solved. I suspect that someone at Beamdog made the change for 2.5. Good intentions and all that.
    Anyhoo, I thought it was an interesting little quirk -- not necessarily an EET bug or anything. Simple solution to a conflict that completely breaks a great mod. I'll go report it on the Thalantyr Item Upgrade forum, unless y'all know of a particular place the report should go.

    unrelated to EET. Please report it to Thalantyr Item Upgrade mod maintainer. Doubt he is actively monitoring this topic.

  9. I've looked over similar threads on the forum and seen common answers, like needing SoD installed. Is there something I can look at to see how the path is being verified, or even better, specify it someplace other than the prompt (it appears that this was an option in the past)?

     

    installation code looks for the "movies/sodcin05.wbm" file inside the path you specified. Here is whole weidu code responsible for bgee path detection: https://github.com/K4thos/EET/blob/master/EET/lib/bgee_dir.tph
    Dunno how to help you with this.
  10. One more error in EE IESDP, this time opcode 12

    Warning: Using 'Magic Fire' or 'Magic Cold' as a damage type will result the game to crash if the damage kills the target.

     

     

    all damage types works fine and don't crash the game (tested by assigning it to Magic Missle and killing Charname, NPCs and random character)

     

    ---------

     

    Also this part of opcode #233 is wrong in EE games:

    Note: The Proficiency Modifier effect cannot increment or decrement proficiency points, it can only SET them.

     

    parameter2 can be treated as 2 short values:
    - first 2 bytes: Proficiency Type
    - last 2 bytes: Behavior (using labels from NI: 0 - Set if higher; 1 - Increment)
  11. 1. I think there was consensus that splprot.2da "Evasion check" didn't work outside IWD:EE engine mode. This is no longer the case in latest BG:EE and BG2:EE patches:

    https://i.imgur.com/kJa5fpn.jpg

     

    Use it the same way as it is used in IWD:EE (opcode 324)

     

    edit: see below posts

     

    2.

    #183 (0xB7) Item: Apply Effect Itemtype Variants: IWD2 PST
    Parameter #1: Undetermined
    Parameter #2: Type

    Description:
    Applies the effect specified by the resource key to the targeted creature(s) when an item of the item type specified by the 'Type' field is equipped.
    Warning: This effect has never been seen to work.

    This is wrong. Opcode #183 works perfectly fine in EE (tested on latest BG2:EE patch by applying permanent opcode #183 effect to creature - bonuses showed up only when particular item was equipped and were removed alongside the item type automatically). The only limitation that I'm aware of is that following item types are not detectable: Bows, Slings, Crossbows.

  12. You can artificially give EFF files a .SPL resource (by using 0x90 and 0x94, as described above). This makes them susceptible to being blocked by 206/318/324. This is what underpins my multiclass sorcerers mod, among many other things. In NI, in the 324 effect, you have to change the field type to "string" or "text" or whatever, and manually type in the resource name you put in 0x94 of the EFF. (I don't think it has to match the actual EFF filename, but I always do that for the sake of simplicity.) Again, 7 letters or less and all-caps.

     

    thanks, I wasn't aware about this trick.

    In that case I'm not entirely sure option 1 will work. But it might! Try it out. If it does work, it is WAY better than a hacky repeating effect.

     

    doesn't seems to work:
    - if you equip item before spell state is applied and later apply spell state then the effect won't work (since opcodes #318/#324 are not updated, even with timing mode = 2 and you're still protected from the EFF file)
    - if the item is equipped after spell state is active then opcodes #318/#324 will prevent the EFF from working (which is good thing, since that's what we're aiming for here) BUT
    - even if the spell state ends EFF file will still work (since opcodes #318/#324 are not updated)
    with such limitations this approach can't be used here, although I will probably find other use cases for this trick in future (for conditions that can't change dynamically), thanks.
    Apply opcode 177, to EA/all again, and have the EFF be 232, with condition = "hp < special %" and special = 102, and resource = your subspell. It will cast the subspell every round, with no weird text feedback, and without interfering with any other ongoing effects (including other 232 effects with the same conditions). So this can safely be applied in lots of circumstances without compatibility concerns.

     

    Waiting up to whole round (6 seconds) is not good enough. If the effect is not removed each second player could cheat by switching weapon while the effect is still applied and attack up to whole round with applied bonuses that shouldn't be there. So this implementation doesn't sound like an optimal apporach too.
    272 is buggy, always has been. If you have multiple 272 effects with different rates (your weapon effect at 1/second, and regeneration at 1/3 seconds, or poison over time, or whatever) then some of the will randomly not fire.
    Are you sure the problem is still there in EE engine? Is there a Beamdog redmine entry for this issue? If no, please consider creating one with a test case. Beamdog fixed tons of opcodes already, so there is a good chance they could handle this one too (especially considering opcode 272 is used in many places in original files - even SoD added items with those opcodes). I would do it myself but I'm not able to reproduce it - I've just added 5 more effects with different times, as described in this post, and all of them seems to work correctly.
  13. 1) Apply the effect via 177 with timing mode 2. The referenced EFF must have its own filename as its "parent resource" at 0x94, 7 letters max and must be capitalized. And the "resource type" at 0x90 set to "spell." Now add a 324 immunity effect before the 177 equipping effect, providing immunity to the EFF filename if you do not have the relevant stat.

     

    I think this information is missing something:

    - what opcode should be used on the EFF file?

    - how exactly the SPL effects will be removed after the item is no longer eqquipped if your proposed implementation doesn't use opcode #272?

    - you've mentioned #324 on ITM providing immunity to the EFF - in NI resource field only accepts ITM and SPL files, not EFF

     

    Do you have some example item that works exactly like this in one of your mods that I could use as a base to test it?

     

    edit:

    2) If you need something more complicated (say, you may gain or lose the stat while the item is equipped and it needs to recognize that and change in response): you would have to cast self-canceling spells through 326 via a repeating EFF (use 177 -> 232, not 272).

     

    what's the benefit in this implementation over the one I've posted in my previous post? Seems like it's the same thing, but harder to implement, unless I'm missing something. If one of your mods has such item I'd like to take a look how exactly it's implemented (timing modes and cancelling stuff).

     

    And yes, the effect should go away as soon as CRE is no longer under spell effect, even if the item is still equipped.

  14. regarding the above question - looks like Instant/While equipped doesn't work like that, no matter what, so as a workaround I've implemented it like this:

    ITM -> global opcode #272 (Apply Repeating EFF) -> once per 1 second

    EFF -> opcode #326 (Apply effects list) -> condition: spell state = x

    SPL -> melee opcode #1 (Modify attacks per round) limited duration = 1

     

    Works as expected, although if someone has better idea how to implement it feel free to post.

  15. thanks, I will test it. One more question:

     

    I'd like to implement an item that applies global effect (+1 attack per round) but only if character wearing that item is under specified spell state. The problem is that when I'm trying to use opcode 326 (Apply effects list) as a global item effect the same way as normally opcode 177 is used (Use EFF file) the effects of the applied spell are permanent even though I've set both 326 and the applied spell Timing Mode to 2 (Instant/While equipped). Any ideas how to make it work only when item is eqquipped? I've attached STAF01.ITM with opcode 326 (EA -> ANYONE condition) and the spell in case someone would like to test it in game. Thanks in advance.

    test.zip

  16. I'm looking for a reliable way to apply SPL or EFF effect on Self target only if character attacks (it should be applied even if character missed the attack). I've experimented with following opcodes without success:

    - Cast spell on condition (232) -> Target = self, parameter1 = 0 (Caster), parameter2 = When attacked (7)

    - Apply effects list (326) - I didn't find any splprot condition that would work for this

    - Melee hit effect (248) - this seems to work only when the attack hit the target and I need it to fire also on miss

     

    Is it even possible with current EE engine?

     

    edit: hmm, even if I scrap the idea to apply effect on miss Melee hit effect opcode (248) seems to be working only on Target that has been hit. Any ideas how to set it up to make it run on the creature from which the spell effect originated? Target = Original caster (9) doesn't seems to be working.

     

    edit2: new question: http://gibberlings3.net/forums/index.php?showtopic=29694&do=findComment&comment=263300

  17. I use Windows 7 32bits.

     

    just noticed it now that you're using 32-bit system. EET comes with 64-bit windows weidu by default. I thought windows would display some kind of error regarding lack of compatibility if you're trying to use 64-bit application on 32-bit system. Can anyone confirm that it's not the case? Try copying EET\bin\win32\weidu.exe (which is 32-bit weidu) to main game directory and rename it to setup-EET.exe, replacing old file.

     

    ERROR: Unix.Unix_error(20, "stat", "EET/temp/biff/CBUTT.BAM")

     

    There is a known problem with GoG incremental patch that doesn't have SoD related resources (if I remember correctly CBUTT.BAM is among them). To solve it full GoG release is needed to be installed. But the same should not be the case for Beamdog release (which is a version I'm using). No idea how to help if you're absolutely sure that you're using latest patches (see the readme file for exact patch number version that is required).

×
×
  • Create New...