Jump to content

Onox

Members
  • Posts

    31
  • Joined

  • Last visited

Posts posted by Onox

  1. Hi,

    I read that there used to be a PnP THAC0 table that let the base THAC0 go into negative values, but that there were problems with it [here] ; however, with the current tweak, THAC0 only decreases up to 1, whereas in the unmodded 2DA table provided with BG2:EE, it does go down to 0. This means that the tweak is actually a slight nerf for fighters and monks after level 20 ! Anyway, the tweak description, “THAC0 can now progress until it reaches zero instead of no longer improving once you hit level 20”, is wrong. (“once you hit level 20” is also inaccurate because in the original THAC0.2DA file, fighters get their THAC0 of 0 at level 21, and mages and shamans still get a decrease when they reach level 22.)

    In the linked post above, Miloch had written he believed that a THAC0 value of 0 was still valid for the engine even though IESDP says 1-25, and I also think that’s true. Some creatures, like fire giants, have a base THAC0 of 0, too

    So, shouldn’t this be changed ?

  2. 37 minutes ago, Christian said:

    Why would he be chaotic good??

    I was thinking of the Helm of Opposite Alignment, but you only find in BG 1 (edit : no, it seems that this helm also switches your alignment between Chaotic/Lawful, so that wouldn’t work.) Or, as Angel suggested on Discord, it might be a leftover of a time when the developers had planned to include an alignment change for Korgan too, like Sarevok ? 🤔

  3. Hi,

    I started a new Throne of Bhaal game (EE), and I noticed that I couldn’t properly drop Korgan from my party and recruit him again later : he won’t say anything. Nice people on the Discord server have figured out that this is because of the tweak “Change Korgan to Neutral Evil Alignment” : the kick out dialogue in KORGA25P.DLG contains conditions for Korgan to be either Chaotic Evil or Chaotic Good. I’ve checked that changing his alignment back to CE with EEKeeper makes the leave/join process work again

  4. 1 hour ago, DavidW said:

    You can do imperative-style loops in WEIDU if you like, and most people do. I just like recursion.

    I agree that recursion is nice 😄

    Your function works ! I just had a little trouble passing the arguments at first, and another problem is that the items are numbered starting with 01, not 1, so I had to add an extra step :

    DEFINE_ACTION_FUNCTION find_unique_name INT_VAR try_next=1 STR_VAR prefix="" ext="" RET name BEGIN
    
      PRINT "find_unique_name arguments : %prefix%, %try_next%, %ext%"
      
      // Items are actually numbered starting with 01 and not 1 :
      ACTION_IF try_next < 10 THEN BEGIN
        OUTER_TEXT_SPRINT s_try_next "0%try_next%" // OUTER_SET s_try_next = "0%try_next%" does not work here : « ERROR: cannot convert 0%try_next% or %0%try_next%% to an integer » (why?)
      END ELSE BEGIN
        OUTER_SET s_try_next = try_next
      END
    
      ACTION_IF FILE_EXISTS_IN_GAME "%prefix%%s_try_next%.%ext%" BEGIN
        OUTER_SET try_next +=1
        LAF find_unique_name INT_VAR try_next STR_VAR prefix ext RET name END
      END ELSE BEGIN
        OUTER_TEXT_SPRINT name "%prefix%%try_next%.%ext%"
      END
    END
    
    LAUNCH_ACTION_FUNCTION find_unique_name STR_VAR prefix = "chan" ext = "itm" RET name END
    PRINT "returned value : %name%"

    I realise now that it’s a little silly and brittle to do it like this, especially when uninstalling, but I just wanted to train a little with the syntax and see if I could make it work. I will use unique names with a prefix like you advised me

    Now, I’ll try to make an install script for a spell. And after that, I have another item where I needed to add a projectile. I didn’t know how to do that with DLTCEP and I stopped at that point three years ago… I might have to ask another question then

    Thank you all for your answers ! 🙂

  5. 29 minutes ago, Mike1072 said:

    You could do it with a for loop.  (You'd use OUTER_FOR.)

    The SAY command is what's adding strings to dialog.tlk, not COPY.

    Ah, thank you, I had only seen FOR and missed OUTER_FOR !

    Ok, so SAY first gets a new string reference if we need one, and then writes the strref inside the itm file (the documentation only says "The string-ref associated with String is written at offset.") ? That makes more sense 🙂

  6. On 6/13/2019 at 3:13 AM, DavidW said:

    It depends on what counts as 'too complicated'. Here's a function (not tested) that does it, but you'd need enough WEIDU (or general programming) experience to be comfortable with functions (and with recursion, if you want to understand how the function works).

     

    
    	DEFINE_ACTION_FUNCTION find_unique_name INT_VAR try_next=1 STR_VAR prefix="" ext="" RET name BEGIN
    	       ACTION_IF FILE_EXISTS_IN_GAME "%prefix%%try_next%.%ext%" BEGIN
    	               OUTER_SET try_next +=1
    	               LAF find_unique_name INT_VAR try_next STR_VAR prefix ext RET name END
    	      END ELSE BEGIN
    	             OUTER_SPRINT name "%prefix%%try_next%.%ext%"
    	      END
    	END
    	

     

    Thank you so much ! 😃 Yes, I have some programming experience and I understand the general idea of your function, although if we do it this way, I would rather have expected a FOR loop instead of a recursive function, but after a look at the documentation, I get the impression that loops in WeiDU are different than in other programming languages

    I’d like to ask a question about the COPY action to make sure my understanding is correct. I understood what the SAY do, but is it COPY itself that automatically gets a new strref at the end of the dialog.tlk file if we give a new string as the second argument of SAY ? It seems that the documentation doesn’t tell this explicitly, or I have missed it

     

  7. Thanks a lot for the answers !

    48 minutes ago, DavidW said:

    WEIDU can do that, certainly - but accepted best practice is instead to give your items a (more or less) guaranteed unique name by choosing a ‘modder prefix’ that your files start with. E.g. all new files I create in my mods start with ‘dw’. There is a prefix registration page somewhere (I don’t have the link handy, sorry).

    Incidentally, the engine doesn’t care whether a suit of chainmail starts with ‘chan’.

    Okay, so, I can actually choose any name for my file, and only the item type and stats matter ? I will test it tomorrow ! I wasn’t really planning to share those little mods (except perhaps an item that could be interesting ?) Nevertheless, it’s good to know that this “modder prefix” system was set up 🙂

    I’d still be interested to know how to do that, out of curiosity. If it’s not too complicated. I already had a look at some parts of the documentation for WeiDU, but I started with a simple tutorial because the doc is a little overwhelming.

    It’s nice to see that you are still here, Jarno. I remember you 🙂

  8. Hi 😃 I’m back to play Baldur’s Gate after a very long break, and I started learning WeiDU to create installers for a couple of items and spells I created or modified with DLTCEP a few years ago.

    My first installer worked, but I have a question : the new item I created is chan22.itm. I simply had a look at what chan__ items already existed, and picked the next available number, 22. But if I installed my mod after another one that also added this item, it would override it… so I was wondering whether WeiDU can be made to choose the next available number automatically ?

    This the COPY part of my improved_white_dragon_scale.tp2 file :

    // Add the item to the game
    COPY ~improved_white_dragon_scale/chan22.itm~ ~override/chan22.itm~
      SAY NAME1 #6677 // unidentified name
      SAY NAME2 @1 // identified name
      SAY UNIDENTIFIED_DESC #6679
      SAY DESC @2

    Is there a way to tell WeiDU to check what chan__.itm files already exist, and choose the (biggest number already in use + 1) for the file name that it copies inside the override folder, instead of hardcoding 22 ?

    Thank you

×
×
  • Create New...