Jump to content

grodrigues

Members
  • Posts

    238
  • Joined

  • Last visited

Posts posted by grodrigues

  1. Thanks, that solved it, as the length of the string is the expected 40. The output of PATCH_PRINT of the read block is probably explained as in the note, by the nulls that snuck in there, and the quirks of both WeiDU and the console.

    Yeah, newbie error... WeiDU is a great tool but it has lots of quirks and it lacks some facilities that general programming languages have to save us from shooting our feet. Miss me some Python. Or even better, Haskell.

  2. Ok, I have been banging my head against this and just cannot find the mistake. I have the following patch function with PATCH_PRINT's interspersed for debugging:

    //Return ith header as a string (e.g. cloning). If header out of bounds, returns the empty string.
    DEFINE_PATCH_FUNCTION GET_INDEXED_HEADER_AS_STRING INT_VAR header = 0 RET string BEGIN
        TEXT_SPRINT string ""
        LPF GET_INDEXED_HEADER_OFFSET INT_VAR header = %header% RET header_offset = offset END
        PATCH_PRINT "Header offset is: %header_offset%."
        PATCH_IF NOT (header_offset = 0) BEGIN
            READ_ASCII header_offset string (SPELL_HEADER_SIZE)
            SET len = STRING_LENGTH string
            PATCH_PRINT "Length of read block is: %len%."
            PATCH_PRINT "Read block is:%LNL%%string%"
        END
    END

    When applied to spwi120 (Reflected Image as changed by SR) I get in the console:

    Installing [Spell Macros Testing] [v1.0]
    Copying and patching 1 file ...
    Copying and patching 1 file ...
    
    Header offset is: 114.
    
    Length of read block is: 6.
    
    Read block is:
    SPWI120B

    So the header offset is correct (The argument passed was 0, so was getting the offset of first header -- GET_INDEXED_HEADER_OFFSET is working as it should) but everything else is a mess. The length does not even coincide with the length "SPWI120B". And SPELL_HEADER_SIZE is what you think it is: a constant with the size of a header (0x28). So what the heck is going wrong? Why is it not reading the whole header? I somehow suspect that this is one of those newbie errors that will put me to shame...

    note(s):

    - according to IESDP the first four fields of a header are: Spell form (char), Flags (char), Location (word) and Memorised icon (8 chars). Memorised icon is precisely "SPWI120B" so if the other fields are all 0's that *could* explain the totally counter-intuitive behavior of STRING_LENGTH and PATCH_PRINT. If that is the case, then can I be sure that the block read is indeed 0x28 bytes long despite the null-terminated shenanigans of string functions do not allow to test that? And is there a way to treat the string as an array of bytes to test it -- maybe looping over it and read byte by byte with READ_BYTE?

  3. Doing a (long term) project to implement some of the changes of SRR to SR via patching and then some more of my own. The scaffolding is done, now is just the grinding. In the meantime, uncovered a few bugs in SR v4.18 as of stable release, that is, if any new commit fixed them in the meantime I missed it. I will add more as I uncover them, to this post or some other post.

    - Mage Armor: protection from mage armor opcode has wrong target (preset instead of self) and power (3 instead of 1). Missing protections against ghost armor and spirit armor. For SRR: the last spell header was not deleted as documented.

    - Glitterdust: Has protection against non-existent SPPR114F. The two protection from spell opcodes have duration 23 -- maybe needed for implementation quirks?

    note(s); think I understand the duration 23. There is a cast spell opcode for precisely that spell delayed to 24, and you prolly need the protection until there to guarantee some stray glitterdust does not mess things up.

    - Ghost Armor: Missing protections against mage armor and ghost armor.

    - Wraith Form: blur (65) opcode has wrong power (2 instead of 3) and wrong dispel/bypass (0 instead of 1). Fixed duration of 1 turn instead of scaling as documented.

    - Spirit Armor: protection from spell opcodes have power 3 instead of 4.

    - Ice Armor: duration of movement rate opcode is 24 instead of 6. As I understand, the opcodes are applied once a round, as many rounds as dictated in the appropriate field of the projectile.

    - Spell Thrust: trigger and explosion radius of projectile dvsplthr.pro do not coincide. Whether this is important or not I do not know.

    - Fire Shield: duration of protection from spell opcodes (the ones protecting from insects) does not scale but remains at fixed 60 (checked only the first few headers). Also the range of the spell retaliating with fire damage is 6 -- isn't this 1 more or is it accounting for some engine quirk?

    - MGoI: fixed 2 turn duration; documentation is 1 round / level. Repeated protection against fireball.

    And another (because I am working on it right now and am on a roll):

    - Secret Word: says it dispels Dispelling Screen but this does not seem correct, for it would need to apply a remove opcode by secondary type with sectype k1-dispel (or whatever its exact name is) and there is none. Other spell removal protections may suffer the same problem.

    - Greater Malison: fixed 2 turn duration; documentation is 2 round / level. The "take an extra point of spell damage for each die rolled" is a -1 penalty to luck and +1 to thac0 (??).

    Oh man, at this rate I got my work cut out for me...

    For SRR only:

    - skull trap: spurious Use EFF protecting against a non-existent spell.

  4. The following code:

    COPY - ~spell_tweaks/components/desc_fixes/2da/spelldesc.2da~ ~override~
        READ_2DA_ENTRIES_NOW rows 3
        PATCH_PRINT "Number of rows: %rows%."
        READ_2DA_ENTRY_FORMER rows 1 1 spellname
        PATCH_PRINT "Spell name: %spellname%."
        READ_2DA_ENTRY_FORMER rows 1 2 spelldesc
        PATCH_PRINT "Description: %spelldesc%."
        READ_2DA_ENTRY_FORMER rows 1 3 modify
        PATCH_PRINT "Modify? %modify%."

    Prints correctly that the number of rows is 1 but then barfs on the first READ_2DA_ENTRY_FORMER. Why oh why? Test 2da file attached.

     

    spelldesc.2da

  5. A request for clarification on the compatibility status of the following three mods:

    (1) Kelsey: must be installed after Ascension. A look at the relevant Kelsey component has copying of epilogues and compiling of kelsey dialogues. It should override Imoen's epilogue as Imoen has a ToB romance with Kelsey if main PC is male, but as far as I can judge that is it.

    (2) Sarevok Friendship: must be installed after Ascension. As far as I can see it only affects Sarevok stuff: dialogues (e.g. sarev25j.dlg) and related scripts (e.g. sarev25.bcs).

    (3) Homeward bound: using v7 with BWP fixes on top. Must be installed after Ascension. A perusal of the tp2 shows that: (1) the area scripts ar1600 and ar2100 are extended (2) finsol01.cre is changed by assigning the finsol01 script; the script finsol01 is extended. (3) Things are set up so that if you send NPCs home before the final battle you get to see their epilogues. However, since it was coded for the older Ascension (the mod has not been updated in a long while, although I believe someone in the beamdog forums has released a compatibility version for EE's) it *may* mean that epilogues are overriden and you only see the original ones, not the Shawne ones if you installed those. This for me is not a big problem, since I prefer David Gaider's and am on BGT.

  6. "Someone who works so badly and slowly would fast get his papers in the free market economy."

    Well, since you are invoking the workings of the free market, you have the option to go to the competition and choose a different product. I am sure, if you ask politely, that DavidW will refund all the money you have spent on SCS. With interest.

    "It's grand to finally find someone with a lick of sense here. Keep up the good fight and don't be discouraged by all these trolls attacking you."

    This one is truly hilarious. A petty, self-entitled troll who thinks he is due something, whatever, rebuking others for pointing out the obvious. But that is I imagine, how morally obtuse people think: project on others their own failings.

  7. 3 hours ago, Azoth said:

    These items are not modified based on IR standards. Is there any chance to include them in IRR?

    Bartimeus will answer for sure, but I would hazard a guess that he will say that that sort of thing is outside of the scope of the mod.

     

    What I myself do with mods that I use and introduce items that I do not like is cook up a mod that is installed after and changes the item to suit whatever I think is right (sometimes is nerfing, other times is correcting mistakes, other times is plugging a hole in my chosen party item setup, other times is just a new item idea that I found interesting, etc.). Now this is of course time consuming, and needs some weidu modding knowledge (but I found that the basics are enough -- NI and overwriting is sufficient for most purposes -- and if you have some programming discipline things go much easier) since I am basically doing a mini-IR for every mod that I want to change, but such is life.

  8. On 8/6/2019 at 2:25 AM, chuft said:

    What puzzles me is that people seemed amazed that I had encountered an ogre mage and ogrillons at the same time, as if that never happens, but if it's an engine bug, then it must have always have happened that way since the game was released.

    I have played a fair bit of BGT lately and at least a couple of times in the not so distant past, in a relatively heavily modded setup (some quest mods like DC and ToD, SR, IR, SCS, Tweaks Anthology, Level 1 NPCs, etc. but nowhere near a megamod install) manually installed (that is, no BWS or some such, but making use of the BWS Fixpack), and I have never encountered what you describe, so I would not discard some weird mod interaction just yet.

  9. 1 hour ago, subtledoctor said:

    I know I sound annoying, but I don't give a crap.

    And I don't give a crap either -- about the fact that you don't give a crap, that is.

    1 hour ago, subtledoctor said:

    I still don't fully understand why this project really exists, when there are people actively working on the base mod.

    I do not doubt that, but since the last commit in the SR github repo is from October 2018, I am not exactly sure what to make of it. Besides, and speaking only as a user, I quite like some of the changes of SRR in respect to SR and it is not obvious to me that they would be incorporated within SR.

    1 hour ago, subtledoctor said:

    Okay, I'll go grump at someone else now.

    As far as I am concerned, grump at will. I will grump back. And we two can make a grumpy pair of grumpers grumping at each other and every grumpyone else.

  10. Can one have more than one tra loaded? For example:

    LOAD_TRA ~tra file~
    ...
    WITH_TRA ~another tra file~ BEGIN
      ...

    Will it work? I assume they must not have intersecting numbers.

    The context for this question is that I find myself, in a mod I am working, using the same descriptions in different tra files for different mod components and wanted to factor them in a common file to avoid repetition. If there is another way to do this besides having more than one tra loaded, feel free to chime in. Obviously, I could just merge everything in one single tra file, but that is precisely what I do not want to do, to keep the different components as separate as possible.

  11. You may want to add an extra mithril token to the ones you already added, as Rogue Revisions upgradeable equipment component has an upgrade recipe using one mithril token (in vanilla you almost always emerged from the underdark with spare tokens as the Jester's armor is useless and one went for the speed boots anyway, so there was never any problem in practice in forging the item).

  12. 1 hour ago, Bartimaeus said:

    I'm not sure that I understand your duration tweak, though.

    Increase the length or range or reach (or whatever the heck is called) of the weapon. Currently bite and sting have 1 reach (the same as short swords I believe), but it makes sense to me to extend the reach of the tail's stinger signalling that it goes further than the wyvern''s bite -- not exactly a big deal though.

  13. The bite weapon (wyvern1) of the Greater Wyvern from Monster Summoning VI is lacking the poison opcode to actually do damage. I would also suggest to set the length of the second weapon to 2 or even 3 since it is a tail's sting.

    Edit: and while I am at it another suggestion. Poison immunity for greater wyverns.

  14. 9 hours ago, Guest Ludwig said:

    Jondalar is also a tutorial npc, and he talks about using Space Bar, red circles and left clicking etc. It makes 0 sense to me to leave him there while removing all the other tutorial npcs. So, I would say it's working as expected, at least based on my opinion.

    Hmm, that was not my memory of Jondalar, so fair enough. If I am not misremembering though, and unlike the other robed tutors, he does give some xp with the little mock up fight  -- for whatever that matters.

  15. The component "Skip the Candlekeep tutorial sections", option 1, also removes Jondalar along with the robed tutors. Not that it makes a huge difference, but this strikes me as being over-zealous. By the way, this was by no means introduced in 32.4, it already existed in 32.3 and most likely even earlier (this is a guess not the result of actual experience).

  16. 1 hour ago, Jarno Mikkola said:

    Nope, you just have to see him, which the True Sight and other spells allow... and as those spells are not casted on a target but the caster himself, this allows the caster to then see "invisible" targets even if they have other protections from spells as they were not affected by a spell, but a counter to their own spell.

    (A little light-bulb goes on in an otherwise dark skull). I missed the last sentences in Non-Detection description: "Note, however, that specific opponents affected with anti-invisibility spells such as True Seeing will be able to target the recipient with spellcasting through improved invisibility for as long as such anti-invisibility spells are active."

    Thanks for setting me on the right path. I really should have read the descriptions with more attention.

    I do wonder however why not simply set the flag bypass improved invis on the targeted anti-spell protection spells. Sure sounds easier. And saves a round if you do not prebuff or use sequencers for other things. Whatever.

  17. 1 hour ago, DavidW said:

    Safe to reinstall midgame, at least as far as Ascension is concerned. It might depend what mods you have after Ascension in your install order, but I'd have thought it should be okay. Maybe do it at a good break point, e.g. end of BG1.

    Then most likely I am screwed as for good or ill I have Ascension early in the install order right before  Kelsey and lots (relatively speaking) of mods after: banterpack, UB, Spell Revisions, Questpack, Wheels, RR, cdtweaks, SCS, etc. Oh well.

×
×
  • Create New...