Jump to content


Miloch's Content

There have been 29 items by Miloch (Search limited from 28-April 23)


By content type

See this member's


Sort by                Order  

#609327 BGT/BWP - Can't Load Beregost at Night, Get CTD

Posted by Miloch on 22 May 2020 - 03:23 AM in BG Graphics Overhaul

Ideally, the patch should go in both Sirine's Call and Graphics Overhaul (detecting whether the other is installed for maximum install-order compatibility).
 
The code Lollorian posted looks decidedly orcish (i.e. I believe I added the door for berelinde way back in the Bodacious Era or something), so maybe it just wasn't patching properly for the proper WEDs. I'm not sure if Sirine's Call patches or overwrites, but the same concept would apply (determining the door vertices and patching them accordingly).

 

COPY_EXISTING ~ar6700.wed~ override
              ~ar6700n.wed~ override
  sz = SOURCE_SIZE
  PATCH_IF sz > 0x48 BEGIN
    READ_LONG 0x8 ovr_count //Read initial offsets
    READ_LONG 0xc door_count
    READ_LONG 0x10 ovr_offset
    READ_LONG 0x14 sec_hdr
    READ_LONG 0x18 door_offset
    READ_LONG 0x1c dtc_indices
    READ_LONG sec_hdr poly_count
    READ_LONG (sec_hdr + 4) poly_offset
    READ_LONG (sec_hdr + 8 ) vert_offset
    READ_LONG (sec_hdr + 0xc) wall_offset
    READ_LONG (sec_hdr + 0x10) poly_table
    new_door_offset = door_offset + door_count * 0x1a
    new_vert_index = ((SOURCE_SIZE - vert_offset) / 4)

    INSERT_BYTES sz 0x20 //Insert 8 new vertex pairs
    WRITE_SHORT sz 2370 //Open door
    WRITE_SHORT (sz + 2) 1563
    WRITE_SHORT (sz + 4) 2325
    WRITE_SHORT (sz + 6) 1563
    WRITE_SHORT (sz + 8 ) 2325
    WRITE_SHORT (sz + 0xa) 1478
    WRITE_SHORT (sz + 0xc) 2370
    WRITE_SHORT (sz + 0xe) 1478
    WRITE_SHORT (sz + 0x10) 2370 //Closed door
    WRITE_SHORT (sz + 0x12) 1562
    WRITE_SHORT (sz + 0x14) 2330
    WRITE_SHORT (sz + 0x16) 1620
    WRITE_SHORT (sz + 0x18) 2330
    WRITE_SHORT (sz + 0x1a) 1536
    WRITE_SHORT (sz + 0x1c) 2370
    WRITE_SHORT (sz + 0x1e) 1478

    INSERT_BYTES poly_table 0x24 //Insert 2 new polygons
    WRITE_LONG poly_table new_vert_index //Starting vertex index
    WRITE_LONG (poly_table + 4) 4 //Vertex count
    WRITE_BYTE (poly_table + 8 ) 0x80 //Open door
    WRITE_BYTE (poly_table + 9) 0xff //Unknown
    WRITE_SHORT (poly_table + 0xa) 2325 //Boundary minimum X coordinate
    WRITE_SHORT (poly_table + 0xc) 2370 //Boundary maximum X coordinate
    WRITE_SHORT (poly_table + 0xe) 1478 //Boundary minimum Y coordinate
    WRITE_SHORT (poly_table + 0x10) 1563 //Boundary maximum Y coordinate
    WRITE_LONG (poly_table + 0x12) (new_vert_index + 4) //Starting vertex index
    WRITE_LONG (poly_table + 0x16) 4 //Vertex count
    WRITE_BYTE (poly_table + 0x1a) 0x80 //Closed door
    WRITE_BYTE (poly_table + 0x1b) 0xff //Unknown
    WRITE_SHORT (poly_table + 0x1c) 2330 //Boundary minimum X coordinate
    WRITE_SHORT (poly_table + 0x1e) 2370 //Boundary maximum X coordinate
    WRITE_SHORT (poly_table + 0x20) 1478 //Boundary minimum Y coordinate
    WRITE_SHORT (poly_table + 0x22) 1620 //Boundary maximum Y coordinate

    FOR (i = 0; i < door_count; i += 1) BEGIN //Update door polygon offsets
      WRITE_LONG (i * 0x1a + door_offset + 0x12) (THIS + 0x1a) //Open polygons offset
      WRITE_LONG (i * 0x1a + door_offset + 0x16) (THIS + 0x1a) //Closed polygons offset
      PATCH_IF (i = (door_count - 1)) BEGIN
        READ_SHORT (i * 0x1a + door_offset + 0xa) tile_index
        READ_SHORT (i * 0x1a + door_offset + 0xc) tile_count
      END
    END

    INSERT_BYTES new_door_offset 0x1a //Insert new door
    WRITE_ASCII new_door_offset ~DOOR3337~ //Name
    WRITE_SHORT (new_door_offset + 8 ) 1 //Closed
    WRITE_SHORT (new_door_offset + 0xa) (tile_index + tile_count) //Tile cell index
    WRITE_SHORT (new_door_offset + 0xe) 1 //Open polygons count
    WRITE_SHORT (new_door_offset + 0x10) 1 //Closed polygons count
    WRITE_LONG (new_door_offset + 0x12) (poly_table + 0x1a) //Open polygons offset
    WRITE_LONG (new_door_offset + 0x16) (poly_table + 0x1a + 0x12) //Closed polygons offset

    //Update offsets for new objects
    FOR (j = 0; j < ovr_count; j += 1) BEGIN //Update overlays
      WRITE_LONG (j * 0x18 + ovr_offset + 0x10) (THIS + 0x1a) //Tilemap offset
      WRITE_LONG (j * 0x18 + ovr_offset + 0x14) (THIS + 0x1a) //Tile index lookup offset
    END
    door_count += 1
    WRITE_LONG 0xc door_count
    WRITE_LONG 0x1c (dtc_indices + 0x1a)
    WRITE_LONG (sec_hdr + 4) (poly_offset + 0x1a)
    WRITE_LONG (sec_hdr + 8 ) (vert_offset + 0x1a + 0x24)
    WRITE_LONG (sec_hdr + 0xc) (wall_offset + 0x1a)
    WRITE_LONG (sec_hdr + 0x10) (poly_table + 0x1a + 0x24)
  END
BUT_ONLY

(Wtf happened to SPOILER tags? Well, it's not much code.)




#609278 1pp ~ high quality music for SoA/ToB || Tutu/ToSC || IWD || PS:T

Posted by Miloch on 17 May 2020 - 03:40 AM in 1PP

Erephine likely used wav2wavc.exe, which you have packaged nowadays in a nice set of tools (PS GUI) compliments of Sam.




#609194 *tap* *tap* Is this thing on?

Posted by Miloch on 07 May 2020 - 05:44 AM in Fading Promises

I'm not sure if I even heard of this mod, except that its author has good creds, but in the interest of historical mod research, I chanced across what appeared to be its website...

shs2020a.jpg

And then I thought maybe this is a larger thing. Is there truly no updating on the SHS website itself? I mean, like, none within a decade or more? :o




#609193 Help Needed - let's finally nail Ghoul potion bug!

Posted by Miloch on 07 May 2020 - 04:27 AM in Fishing for Trouble

One of the Russian gamer, AGKanevchev send me fixes for Ghoul potion bug

Heya. Russian and "AG" as in "Ardanis/GeN1e"? Well, I suppose not, but that was his modder prefix anyway.

 

I know nothing about this alleged "ghoul potion." Okay, fine. I invented it at Yovaneth's request. And it was actually working on vanilla BG2... perhaps even BGT, but long before we anticipated EE etc. We had some glitches (I particularly remember some portrait-related stuff), but I thought we ironed them out.

 

But I don't have immediate access to the EE games anymore (sad but true... they don't translate from one machine to another when you swap hard drives). So I could look at the effects, but what I seem to recall (my memory's kinda hazy on what Yovaneth wanted) was this:

 

Upon certain circumstances (like a time limit I think), the ghoul-turned character is supposed to explode, or something similarly nasty. And I said something like, "only a mutant half-orc would think of something like that." Okay, I didn't say that, but I swear it was an intended effect (of his, not mine), however brutal it might seem. I won't swear it was bug-free, particularly when bringing EE into play (as I said, not something we anticipated at the time).

 

Anyway, regarding "what might be the reason why on classic BG2 using yspotn02 doesn't restore the original character portrait?" This at least should be working as intended. If someone could come up with steps for reproduction (things to do in the game or console that would reproduce the error), that could help. It's been a long time since I last looked at this (even by orcish standards).