Jump to content

Reddbane

Members
  • Posts

    38
  • Joined

  • Last visited

Posts posted by Reddbane

  1. @subtledoctor

    I'm actually studying your Kensai revision, since it does use a script to apply a kit, after using a script to initiate a dialogue choice. I've been able to locate the relevant files (Spl, script, cre) files that initiate dialogue that begins the choice, but I wonder if you could help point me to the relevant script and creature files that apply the respective (weapon) kit change once the dialogue decision had been taken? That is what names shoud be looking for .BCS and .CRE, since all I could disover, so far, was D5_KENF.CRE and D5D5_KENF.BCS, which I assume is used to "create" the dialogue choice?

  2. I have another question, though this one requires something of a preface. A kit can be applied to a character at any time using utilities like EEkeeper; in fact a character can even retain a kit for a class different than their own, for example, a Fighter could have the Assassin Kit applied to him, and, even though it will not effect his fighter levels in any way, the game will remember that said character has that kit. Then if that fighter chooses to dual classes into a thief, rather than becoming a True-Class thief, he will start his second class as an Assassin, with all of it's unique class features and restrictions intact, and then will continue the game as a Fighter x / Assassin x dual. It is an interesting engine feature that I'm surprised has never been utilized in the main game.

     

    With that said, my question is how is the most direct way to apply a kit to a character, preferably via an opcode? I know there are opcodes to change alignment, sex, level, etc.

  3. In regards to certain spells that vary in effectiveness depending on the level of the target (ie death spells, certain HLAs, etc., I think maybe Tenser's T) is there any difference if a target is a Level 15 Mage or a Level 2 Fighter/ Level 15 Mage? To put it another way, would that 2 Fighter Levels have any effect the character (besides the obvious fighter skills), vs the same character that is a pure mage?

     

    Does anyone know about this?

  4. In regards to certain spells that vary in effectiveness depending on the level of the target (ie death spells, certain HLAs, etc., I think maybe Tenser's T) is there any difference if a target is a Level 15 Mage or a Level 2 Fighter/ Level 15 Mage? To put it another way, would that 2 Fighter Levels have any effect the character (besides the obvious fighter skills), vs the same character that is a pure mage?

     

    In regards to the summons, I wanted specifically to know how to make a summon that follows the party from map to map. And, moreover, can one make a summon that follows from room to room but still has a limited summon duration?

  5. Within the item files there are options to delineate the Item properties: Silver, Cold-Iron, and Adamantine. Does anyone have an in-depth guide/list to what these actually do in IE engine when applied to an item? And, in regards to overcoming defenses, how do they compare to the “Magical” property? Are they any way similar to how these materials work in 3e, in regards to Devils, Demons, Fey, and damage reduction?

     

    Next I want to ask some questions about dual-classed characters, specifically in regards to how their level is recognized by the game. I know caster level is determined by each respective class, but in regards to spells and attacks that detect “Hit Dice”, I’ve heard a dual classed character’s HD is determined by the average between the two classes, that is First Class Level + Second Class Level, divided by two. Is that true? The next thing I want to ask is, with a Dual-Classed character, how does the game “read” said character’s level in regards to scaling New NPCs as well as level-scaled enemies/challenges: does the game simply use the higher of the Dual-Classed character’s two levels, or does it actually add the two together?

     

    Next I want to ask how a summoning spell determines the status of the summoned creature, in regards to whether it is friendly, hostile, neutral, controlled, etc; but more importantly how it is determined whether a creature can follow the party from map to map (like a familiar) or is stuck in the map it is summoned (like a normal summon)? Is that determined in the spell file or the creature file, and what are the different options?

  6. One last note before moving on: the kit clab thing can be done in any number of ways, not all of which require the two-step process of creating an array and then doing actions based on the contents of that array. With INNER_ACTION you can do the work from right inside the kitlist COPY operation:

    COPY_EXISTING ~kitlist.2da~ ~override~
      COUNT_2DA_COLS cols
      READ_2DA_ENTRIES_NOW ~r2en_kitlist~ cols
      FOR (row = 2; row < r2en_kitlist; row += 1) BEGIN
        READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 5 class_ab
        READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 8 class_num
        PATCH_IF (class_num == 12) OR (class_num == 18) BEGIN  // rangers
          INNER_ACTION BEGIN
            APPEND ~%class_ab%.2da~ ~ABILITYXT AP_XTRNGOF~ UNLESS ~ABILITYXT~
          END
        END
      END
    BUT_ONLY

    (I think you also had too any ENDs in your earlier code, which might have been screwing it up.) So you ask, why deal with those arrays? The answer is simply that I figured out how to do it, and implemented those arrays, before I knew about INNER_ACTION. :p And now I'm operating according to the principle of "if it ain't broke, don't fix it."

     

    As for opcode 233: I use it with 'while equipped' timing extensively, including using it to increment proficiencies unrelated to the one used by the weapon with the equipping effect. So the opcode definitely works.

     

    This might sounds weird, but how do you know it doesn't work? Are you testing it in some way? Maybe apply a 326 effect that requires 4 stars in dual-wielding, and seeing if it fires? Or are you just looking at the character record screen? If the latter, it could just be a proficiency-display quirk. The game only expects you to have 3 stars, so it might not bother displaying anything higher than that. Meaning, the effect may be working perfectly well.

     

    I know it is not working because I made "Two weapon Style" 1-3 pips have a -2 damage penalty to the offhand, while 4 pips has none. If I add the 4 pips manually (via eekeeper) it works, that is the offhand damage penalty disappears. For some reason, however, If I try to apply the 4 pips via opcode 233 (via an item) it does not work. The item effect code seems to properly function, however, if I change the "Proficiency:" line to a weapon (like clubs) the item applies the pips. ???

  7. You are trying to apply the above to EE game ? Asking cause the weapon styles won't be editablein the non-EE game. And have you tried to use a different timing mode, cause ... the while equipped might not work on opcode 233.

     

    Yes it is EE and the code does work when equipped, sometimes. The code itself is based off of one of Weimar's clubs that changes club proficiency to 5. Interestingly when it is set to Clubs, it works.

  8. A new problem arose, unrelated to weidu, involving using the opcode 233 (Modify proficiencies) on an item as a effect.

     

    I tried adding this item effect to Montolio's Cloak:
    Type: Modify proficiencies (233)
    Target: Self (1)
    Power: 0
    # stars: Active class: 4, Original class: 0
    Proficiency: PROFICIENCY2WEAPON - 114
    Behavior: Set if higher (0)
    Timing mode: Instant/While equipped - 2
    Dispel/Resistance: Natural/Nonmagical (0)
    Duration: 0
    Probability 1: 100
    Probability 2: 0
    Unused: 00 00 00 00 00 00 00 00 h
    # dice thrown/maximum level: 0
    Dice size/minimum level: 0
    Save type: ( No save )
    Save bonus: 0
    Special: 0
    What it should do is raise "Two weapon Style" to 4 pips (for reference, I added a functional 4th level to 2 Weapon style), while the item is equipped. But for some reason this does not seem to work. The code itself is based on some of Wiemar's items which increase proficiency values with weapons.
    Does anyone know why this is not working?
    To clear out some obvious answers, the 4th level of "Two weapon Style" works properly if given to a character via EEkeeper, and opcode (233) does apparently work with "Two weapon Style", as applying it as an effect in EEkeeper to a character does produce the desired effect (4 pips in Two Weapon style).
    Anyone?
  9. [?] should just be another variable, which stores the .2da clab filename of each kit. So, you could call it "2da_name" or something. Then,

     

    DEFINE_ASSOCIATIVE_ARRAY rangers_array BEGIN "%2da_name%" => 1 END

     

    Now you have an array containing the clab table of every ranger kit, except CLABRN01. (All arrays have associated vslues, but in this case you don't need it, sonyou can set it to 1 and ignore it.) Then:

    ACTION_PHP_EACH ranger_kit AS clab => blah BEGIN
      ACTION_IF FILE_EXISTS_IN_GAME ~%clab%.2da~ BEGIN
        APPEND ~%clab%.2da~ ~stuff~
      END
    END
    Also you don't need the ACTION_FOR_EACH for CLABRN01 since there's only one.

     

     

    I can't get anything following this:

     

    COPY_EXISTING ~kitlist.2da~ ~override~
    COUNT_2DA_COLS cols
    READ_2DA_ENTRIES_NOW ~r2en_kitlist~ cols
    FOR (row = 2; row < r2en_kitlist; row += 1) BEGIN
    READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 5 class_ab
    READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 8 class_num
    PATCH_IF (class_num == 12) OR (class_num == 18) BEGIN // rangers
    DEFINE_ASSOCIATIVE_ARRAY d5_rangers_array BEGIN "%class_ab%" => "%class_num%" END
    END
    END
    BUT_ONLY
    . . .to work. Perhaps I'm mistaken about "blah".
    I used this following it:
    ACTION_PHP_EACH ranger_kit AS clab => %class_num% BEGIN
    ACTION_IF FILE_EXISTS_IN_GAME ~%clab%.2da~ BEGIN
    APPEND ~%clab%.2da~ ~ABILITYXT AP_XTRNGOF~ UNLESS ~ABILITYXT~
    END
    END
    But nothing was patched.
  10. The last thing I need to do at the moment is finish coding a function that will append an ability to all Ranger Clab files, and do so for any kits added.

     

    At the moment I use this to account for the base class

     

    ACTION_FOR_EACH ~file~ IN
    ~clabrn01~
    BEGIN
    ACTION_IF FILE_EXISTS_IN_GAME ~%file%.2da~ BEGIN
    APPEND ~%file%.2da~ ~ABILITYXT AP_XTRNGOF~ UNLESS ~ABILITYXT~
    END
    END
    But I can't manage to figure out how to put together the code that will read the ranger kitlist and then "Append" to all the relevant Clab files.
    Examining a few other mods, I imagine part of it (the read part) could function like:
    COPY_EXISTING ~kitlist.2da~ ~override~
    COUNT_2DA_COLS cols
    READ_2DA_ENTRIES_NOW ~r2en_kitlist~ cols
    FOR (row = 2; row < r2en_kitlist; row += 1) BEGIN
    READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 5 [?]
    READ_2DA_ENTRY_FORMER ~r2en_kitlist~ row 8 class_num
    PATCH_IF (class_num == 12) OR (class_num == 18) BEGIN // rangers
    DEFINE_ASSOCIATIVE_ARRAY d5_rangers_array BEGIN "%[?]%" => "%class_num%" END
    END
    END
    END
    BUT_ONLY
    But the [?] parts I'm unsure about, nor do I know how to make the proper "connections" between the read function and the Append code.
  11. So looking over the list: it appears that "XT" is available, but at the moment it seems that registering (or any communication) with BWL is impossible, so could someone register it for me? I've published several mods already, [ 3.5 Edition/ Pathfinder style Tweaks Collection (thac0, Constitution, hit dice) ], but now I'm approaching the point in my work where I'm going to start adding new files to the game, rather than just patching existing files.

  12.  

    1)

     

    I assume you're talking about this tutorial. This code should work for setting the flag to toggle critical hit aversion.

    COPY_EXISTING_REGEXP GLOB ~^.+\.itm$~ ~override~ // copy all item files
      PATCH_IF (SOURCE_SIZE > 0x71) BEGIN
        READ_BYTE 0x31 proficiency // read the byte containing weapon proficiency type
        PATCH_IF (proficiency == 102) BEGIN // quarterstaff
          WRITE_BYTE 0x1b (THIS BOR 0b00000010) // set flag for toggle critical hit aversion
        END
      END
      BUT_ONLY_IF_IT_CHANGES
    

    However, as far as I'm aware, that flag doesn't have anything to do with backstabs. It has to do with changing whether helmets and other items prevent critical hits or not. You can probably achieve what you want by adding an effect to the items (opcode #263) that sets the wielder's backstab multiplier to x1.

     

    Thanks, greatly. Although this opens a new can of worms. How do I add that Item Effect (I know how how to create the proper opcode and effect, manually) via weidu patching? I assume a good deal of the code would be the same:

     

    COPY_EXISTING_REGEXP "^.+\.itm" override

    PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN

    READ_SHORT 0x31 weaprof

    PATCH_IF (weaprof = 102) BEGIN

    [???]

    END

    END

    BUT_ONLY_IF_IT_CHANGES

    But what would the code in [???] be to blanket patch something that isn't a binary toggle?

  13. Is there some kind of list of what and what not characters (not the specific combinations, but the characters themselves) can be properly recognized by the BG or EE engine, and thus are available for prefixes? as we seem to be running out of the conventional ones. I noticed the use of the "section sign" ( § ) and that began me thinking that perhaps the use of some other unconventional characters might free up some possibilities. The "dagger signs" ( † ‡ ) come to mind, deos anyone at least know if they work?

  14. While working on a recent mod attempt I’ve come to some impasses due to my rather poor skills at using weidu; in fact, that would be a rather kind appraisal, as I find myself near illiterate when it comes to weidu, doing most of my work by repurposing others’ code for what I need to accomplish, otherwise the actual coding process is rather opaque to me.

     

    Let me get to what I’m stuck upon: firstly, I’m trying to create a code that will patch all quarterstaves to remove the backstab feature by toggling the “EE/Ex: Toggle critical hits (25)” feature in the itm files. So far based on previous reference, I’ve managed to bang out this code:

     

    COPY_EXISTING_REGEXP "^.+\.itm" override

    PATCH_IF (SOURCE_SIZE > 0x71) THEN BEGIN

    READ_SHORT 0x31 weaprof

    PATCH_IF (weaprof = 102) BEGIN

    WRITE_[bor or Byte?] 0x1b (THIS [bor or Byte?] 0b[?])

    END

    END

    BUT_ONLY_IF_IT_CHANGES

     

    But in reading the Bor/Byte tutorial I’ve found myself over my head. I can’t seem to figure out whether the [bracketed] parts should be a Bor or Byte (I think it’s Bor), and I know I need a binary to accomplish the task, but I can’t seem to grasp how I translate what I want into the proper 1s and 0s. Could anyone help me with the missing pieces?

     

    The second problem is a bit more vague. What I need to accomplish is to create a weidu code that patches the WEAPPROF file so that all 3’s within the “2Weapon” row are turned into 2’s. This is what, with some help, I’ve put together:

     

    COPY_EXISTING ~WEAPPROF.2DA~ override

    COUNT_2DA_COLS cols

    FOR (col = 3; col < cols; ++col) BEGIN

    READ_2DA_ENTRY 34 cols col val

    PATCH_IF %val% = 3 BEGIN

    SET_2DA_ENTRY 34 cols col 2

    END

    END

     

    For obvious reasons (though not to me) this code does not work, and, being a poor hand at weidu, I imagine I’ve made a bunch of syntactical errors in this code that prevent it from working. Could correct the code or tell me what I did wrong?

     

    I’m immensely thankful for any help I can receive, in advance, and I hope you can be patience with me, given I lack a great deal of the Programmer’s savvy.

     

×
×
  • Create New...