Jump to content

BG1 Tweak Pack


Guest grogerson

Recommended Posts

Heh. I had been ignoring the topic because I felt guilty since I haven't made any progress and assumed all of the posts were grogerson and Daul posting "how's it going? Is it done yet?"

 

What a pleasant surprise. :)

 

I still don't have much time ATM (and priority right now is de-suckifying the BG2FPGTU) but I can probably help sort out those remaining issues for ya.

 

I'm planning on creating a single package out of the six I currently have tonight. Do you want me to send it to you to check when I've finished?

 

As for Fields of the Dead, if it's WeiDU I'd expect it to be compatible since all I've done is take Cam's own work. I'm no programmer, but I can still read and compare... :)

Link to comment

I've completed the single package tweak pack, and there are no install stopping bugs. I'm testing the components now. For simplicity, I'll place the list here and update it as the results come in. Any problems encountered I'll post below.

 

BG1 . TotSC Component

Cosmentic Changes

Y . . _ . . Remove Helmet Animations *

N . . _ . . Avatar Morphing Script @

Y . . _ . . Weapon Animation Tweaks *

Y . . _ . . Icewind Dale Casting Graphics @

Y . . _ . . Disable Portrait Icons Added by Equipped Items *

N . . _ . . Commoners Use Drab Colors @

Y . . _ . . Icon Improvements @

N . . _ . . Change Avatar When Wearing Robes or Armor @

Y . . _ . . Force All Dialogue to Pause *

Content Changes

Y . . _ . . Make Cloakwood Areas Available Before Completing the Bandit Camp @

N . . _ . . Improved Multi-Player Kick-Out Dialogs @

N . . _ . . Reveal City Maps @

Y . . _ . . Stores Sell Larger Stacks of Items *

Y . . _ . . Gems and Potions Require Identification *

Rule Changes

N . . _ . . Two-Handed Bastard Swords @

N . . _ . . Universal Clubs *

N . . _ . . Description Updates for Universal Clubs Component *

Y . . _ . . Change Experience Point Cap @

Y . . _ . . Allow Stealth and Thieving Abilities in Heavy Armor per P&P *

Y . . _ . . Allow Arcane Spellcasting in Armor *

Y . . _ . . Wear Multiple Protection Items *

N . . _ . . Cast Spells from Scrolls (and Other Items) at Character Level @

N . . _ . . Shopkeepers Have Limited Identification Ability @

Y . . _ . . Multi-Class Grand Mastery *

Y . . _ . . Baldur's Gate II Grand Mastery *

Y . . _ . . Change Magically Created Weapons to Zero Weight *

N . . _ . . Make +x/+y Weapons Consistent @

N . . _ . . Description Updates for Make +x/+y Weapons Consistent @

Y . . _ . . Un-Nerfed THAC0 Table *

Y . . _ . . Alter Mage Spell Progression Table *

Y . . _ . . Alter Bard Spell Progression Table *

Y . . _ . . Alter Cleric Spell Progression Table *

Y . . _ . . Druids Use Cleric Level and Spell Progression * (exceptions...)

Y . . _ . . Bards, Paladins and Clerics Use IWD-HoW Spell Progression (new)

Y . . _ . . Druids Use 3e Alignment Restrictions *

N . . _ . . Loosen Item Restrictions for Multi- and Dual-Class Clerics and Druids *

Y . . _ . . Add Save Penalties for Spells Cast by High-Level Casters *

Convenience Tweaks and/or Cheats

Y . . _ . . Higher HP on Level Up *

Y . . _ . . Maximum HP Creatures *

N . . _ . . Identify All Items *

Y . . _ . . Easy Spell Learning *

Y . . _ . . Shut Up “You must gather your party...†@

Y . . _ . . Change Effect of Reputation on Store Prices *

Y . . _ . . Unlimited Ammo Stacks *

Y . . _ . . Unlimited Jewelry and Gem Stacks *

Y . . _ . . Unlimited Potion Stacks *

Y . . _ . . Unlimited Scroll Stacks *

Y . . _ . . Happy Patch @

Y . . _ . . Neutral Characters Make Happy Comments at Mid-Range Reputation @

Y . . _ . . No Traps or Locks @

Y . . _ . . Rest Anywhere *

Y . . _ . . Sellable Items *

Y . . _ . . Minimum Stats Cheat *

Joinable NPC Tweaks

Y . . _ . . Adjust Evil Joinable NPC Reactions @

Y . . _ . . Give Edwin His BG2 Stats @

Y . . _ . . Give Jaheira Her BG2 Stats @

Y . . _ . . Change Jaheira to Neutral Good Alignment @

Y . . _ . . Give Minsc His BG2 Stats @

Y . . _ . . Give Viconia Her BG2 Stats @

N . . _ . . Make Khalid a Fighter-Mage @

Y . . _ . . Give Kagain a Legal Constitution Score of 19 @

 

@ - from BG2 Tweaks * - from IWD1 Tweaks

 

Cam, I'll send you my work tonight via e-mail, with a list of problems encountered. Since you've not had the time to do one, consider me your secretarial assistant on this. You're the programmer, I'm just the compiler... :)

 

Currently I have two components that won't install, one that crashes the game, and three that, though they install, don't do anything... :)

Link to comment

I have encountered the following problems with the tweaks I've tried.

 

Install Component [Avatar Morphing Script]?

nstall, or [N]ot Install or [Q]uit?

Installing [Avatar Morphing Script]

Compiling 1 dialogue file and 2 scripts ...

[bG1Tweaks/languages/english/ikmorph.TRA] has 61 translation strings

BIFF may be in hard-drive CD-path [O:\CD5\/DATA/DEFAULT.BIF]

BIFF may be in hard-drive CD-path [O:\CD4\/DATA/DEFAULT.BIF]

BIFF may be in hard-drive CD-path [O:\CD3\/DATA/DEFAULT.BIF]

BIFF may be in hard-drive CD-path [O:\CD2\/DATA/DEFAULT.BIF]

BIFF may be in hard-drive CD-path [O:\CD1\/DATA/DEFAULT.BIF]

BIFF may be in hard-drive CD-path [f:\black isle\bg1 testing\/DATA/DEFAULT.BIF]

[f:\black isle\bg1 testing\/DATA/DEFAULT.BIF] 430794 bytes, 152 files, 0 tilesets

 

[bG1Tweaks/baf/ikmorph.baf] PARSE ERROR at line 5 column 46-46

Near Text: )

[startDialogueNoSet] not found in ACTION.IDS

 

[bG1Tweaks/baf/ikmorph.baf] ERROR at line 5 column 46-46

Near Text: )

Parsing.Parse_error

ERROR: parsing [bG1Tweaks/baf/ikmorph.baf]: Parsing.Parse_error

ERROR: error compiling [bG1Tweaks/baf/ikmorph.baf]: Parsing.Parse_error

ERROR: compiling [bG1Tweaks/baf/ikmorph.baf]!

Stopping installation because of error.

 

ERROR Installing [Avatar Morphing Script], rolling back to previous state

[bG1Tweaks/backup/20/UNSETSTR.20] SET_STRING uninstall info not found

Will uninstall 0 files for [bG1TWEAKS/SETUP-BG1TWEAKS.TP2] component 20.

Unable to Unlink [bG1Tweaks/backup/20/MAPPINGS.20]: Unix.Unix_error(1, unlink",

"BG1Tweaks/backup/20/MAPPINGS.20")

Uninstalled 0 files for [bG1TWEAKS/SETUP-BG1TWEAKS.TP2] component 20.

...

ERROR: Parsing.Parse_error

PLEASE email the file SETUP-BG1TWEAKS.DEBUG to webmaster@gibberlings.net

Using Language [English]

[English] has 2 top-level TRA files

[bG1Tweaks/languages/english/description_updates.tra] has 12 translation strings

[bG1Tweaks/languages/english/setup.tra] has 115 translation strings

===================================================

Install Component [Commoners Use Drab Colors]?

nstall, or [N]ot Install or [Q]uit?

Installing [Commoners Use Drab Colors]

Copying 1 file ...

Copied [sw1h01.itm] to [override/cdb00060.g3]

Copying and patching 1 file ...

 

ERROR locating resource for 'COPY'

Resource [randcolr.2da] not found in KEY file:

[./chitin.key]

Stopping installation because of error.

 

ERROR Installing [Commoners Use Drab Colors], rolling back to previous state

[bG1Tweaks/backup/60/UNSETSTR.60] SET_STRING uninstall info not found

Will uninstall 1 files for [bG1TWEAKS/SETUP-BG1TWEAKS.TP2] component 60.

Unable to Unlink [bG1Tweaks/backup/60/MAPPINGS.60]: Unix.Unix_error(1, unlink",

"BG1Tweaks/backup/60/MAPPINGS.60")

Uninstalled 1 files for [bG1TWEAKS/SETUP-BG1TWEAKS.TP2] component 60.

...

ERROR: Failure("resource [randcolr.2da] not found for 'COPY'")

PLEASE email the file SETUP-BG1TWEAKS.DEBUG to webmaster@gibberlings.net

Using Language [English]

[English] has 2 top-level TRA files

[bG1Tweaks/languages/english/description_updates.tra] has 12 translation strings

[bG1Tweaks/languages/english/setup.tra] has 115 translation strings

===================================================

Change Avatar when Wearing Robes or Armor (Galactygon)

Installed, but crashed to desktop when entering a game with the following message:

 

"An Assertion failed in d:\Dev\Baldur\CGameEffect.ccp at line 808"

===================================================

Multi-Player Kick-Out Dialogue

Installed, but does not work.

===================================================

Reveal City Maps

Installed, but does not work.

===================================================

Make Khalid a Fighter-Mage

Installed, but does not work.

===================================================

Two Handed Bastard Swords

Installed, but does not work.

===================================================

Universal clubs

Installed, but does not work.

===================================================

Install Component [Description Updates for Universal Clubs Component]?

nstall, or [N]ot Install or [Q]uit?


Installing [Description Updates for Universal Clubs Component]

Copying 1 file ...

[./override/sw1h01.itm] loaded, 41

8 bytes

Copied [sw1h01.itm] to [override/cdb02021.g3]

loading 1 tra file

[bG1Tweaks/languages/english/description_updates.tra] has 12 translation strings

Copying and patching 1 file ...

ERROR: illegal 4-byte write (The Root of the Problem

Club +1, +3 vs. unnatural creatures

This enchanted club is said to have existed since the time of the fall of Netheril and the birth of the great Anauroch Desert. While the toll on civilization was great, the true victims were nature's creatures, condemned to stand and watch as their homes decayed and died. As habitats receded, those that remained were invaded by displaced hordes of creatures, the more impatient of which marched on unspoiled land taking whatever they wished. This particular weapon is said to have come from a dryad's tree, a final gift to nature's cause from a woodland spirit that could not hold back the invaders of her land. Hers was a bittersweet pain, as her wood might not have suffered so if it had not been so strong and lush. Less respecting scholars have since bestowed the item's ironic name, though the humor is not appreciated among nature's more devout followers.

 

STATISTICS:

 

THAC0: +1, +3 vs. unnatural creatures

Damage: 1D6 +1, +3 vs. unnatural creatures, +1 acid damage

Damage type: crushing and acid

Weight: 3

Speed Factor: 3

Proficiency Type: Club

Type: 1-handed

Requires: 5 Strength) offset 84 of 0-byte file blun10.itm

ERROR: [blun10.itm] -> [override] Patching Failed (COPY) (Failure("blun10.itm: write out of bounds"))

Stopping installation because of error.

 

ERROR Installing [Description Updates for Universal Clubs Component], rolling back to previous state

Will uninstall 1 files for [bG1TWEAKS/SETUP-BG1TWEAKS.TP2] component 2021.

Unable to Unlink [bG1Tweaks/backup/2021/MAPPINGS.2021]: Unix.Unix_error(1, "unlink",

"BG1Tweaks/backup/2021/MAPPINGS.2021")

Uninstalled 1 files for [bG1TWEAKS/SETUP-BG1TWEAKS.TP2] component 2021.

...

ERROR: Failure("blun10.itm: write out of bounds")

PLEASE email the file SETUP-BG1TWEAKS.DEBUG to webmaster@gibberlings.net

Using Language [English]

[English] has 2 top-level TRA files

[bG1Tweaks/languages/english/description_updates.tra] has 12 translation strings

[bG1Tweaks/languages/english/setup.tra] has 115 translation strings

[/size]

===================================================

Allow Stealth and Thieving Abilities in Heavy Armor

 

Shadow armor (leat08.itm) is receiving penalties it shouldn't. Mithril Chain Mail +4 (chan06.itm) should also probably be checked.

 

Also, if a penalty takes an ability below zero, it loops (i.e. 25-30=251 pickpocket...).

===================================================

Allow Arcane Spellcasting in Armor

 

Installed, description updated, but does not allow armor to be worn.

===================================================

Cast Spells from Scrolls (and Other Items) at Character Level

 

Installed, but does not work.

Link to comment

I can help on a few:

 

 

ERROR locating resource for 'COPY'

Resource [randcolr.2da] not found in KEY file:

[./chitin.key]

 

NI shows BG does not have that .2da at all; devSin/Echon ey al will need to tell you if there is a corresponding .2da, but I could not find one. It looks like the commoner creatures dont randomize their colors, or if they do, it i through some other mechanism.

 

The 198 StartDialogueNoSet(O:Object*) failing is strange; it exists in my BG install, but mine is the set with TOTSC; perhaps Dialogue() and Interact() are the only ones available for BG vanilla? I am not sure...

the relevant file says

IF
 True()
THEN
 RESPONSE #100
StartDialogueNoSet(LastSummonerOf(Myself))
END

so I dunno what is wrong...

 

 

I bet Khalid is having toubles because of the .cre version. He is also using v2 effects, I think. Will research more, but probable fix for that is actually modifying his .cre directly from the BG install and dropping it in as the new version for the vanilla BG Tweaks version you are starting.

Link to comment

Thanks for the response, cmorgan. Any input is helpful, even if this project is pre-alpha. The sixty tweaks are my "wish list" and I expect some just won't be workable in BG1, though I am surprises at some that are...

 

ERROR locating resource for 'COPY'

Resource [randcolr.2da] not found in KEY file:

[./chitin.key]

 

NI shows BG does not have that .2da at all; devSin/Echon ey al will need to tell you if there is a corresponding .2da, but I could not find one. It looks like the commoner creatures dont randomize their colors, or if they do, it i through some other mechanism.

I also noticed the missing .2da. This tweak will probably be dropped because of that.

 

The 198 StartDialogueNoSet(O:Object*) failing is strange; it exists in my BG install, but mine is the set with TOTSC; perhaps Dialogue() and Interact() are the only ones available for BG vanilla? I am not sure...

the relevant file says

StartDialogueNoSet was indeed added by TotSC, but even there this tweak failed to install. Some of my problems are due to missing action.2da operations that were added later, some from engine differences between BG1 and IWD/BG2...

 

I bet Khalid is having toubles because of the .cre version. He is also using v2 effects, I think. Will research more, but probable fix for that is actually modifying his .cre directly from the BG install and dropping it in as the new version for the vanilla BG Tweaks version you are starting.

Since this tweak was from BG2Tweaks, version may be the problem. Maybe I should look at Dudleyville's tweak. Of course, not being a programmer has its drawbacks. :)

 

Well, I can at least test the list and find what actually works and give feedback on those that don't...

Link to comment
NI shows BG does not have that .2da at all; devSin/Echon ey al will need to tell you if there is a corresponding .2da, but I could not find one. It looks like the commoner creatures dont randomize their colors, or if they do, it i through some other mechanism.
I also noticed the missing .2da. This tweak will probably be dropped because of that.
It wouldn't be too difficult to write a randomisation routine to do this, either via TP2 code or script. I'd offer to help write it, but I'm just a "dumb half-orc" :) (plus I'm kinda overburdened with the BG1 Fixpack and other mods at the moment).
Link to comment
It wouldn't be too difficult to write a randomisation routine to do this, either via TP2 code or script. I'd offer to help write it, but I'm just a "dumb half-orc" :) (plus I'm kinda overburdened with the BG1 Fixpack and other mods at the moment).

You're more than a few steps ahead of me. Taking this project on, I'm living up (down?) to "blithering idiot" (wonder what I'll break next). :)

Link to comment

Change Experience Point Cap - this needs to include several other .2da files: backstab, hp***, layhands, mxspl***, save*** and thac0. They're all set to 20th level except for backstab and layhands, which are set to 25th level.

===================================================

Wear Multiple Protection Items - I don't think the P&P version is working...

===================================================

Shopkeepers Have Limited Identification Ability - installed, but does not work.

===================================================

Make +x/+y Weapons Consistent - failed to install.

Install Component [Make +x/+y Weapons Consistent]?

nstall, or [N]ot Install or [Q]uit?

Installing [Make +x/+y Weapons Consistent]

Copying 1 file ...

BIFF may be in hard-drive CD-path [O:\CD5\/DATA/ITEMS.BIF]

BIFF may be in hard-drive CD-path [O:\CD4\/DATA/ITEMS.BIF]

BIFF may be in hard-drive CD-path [O:\CD3\/DATA/ITEMS.BIF]

BIFF may be in hard-drive CD-path [O:\CD2\/DATA/ITEMS.BIF]

BIFF may be in hard-drive CD-path [O:\CD1\/DATA/ITEMS.BIF]

BIFF may be in hard-drive CD-path [f:\black isle\bg1 testing\/DATA/ITEMS.BIF]

[f:\black isle\bg1 testing\/DATA/ITEMS.BIF] 1486198 bytes, 1276 files, 0 tilesets

Copied [sw1h01.itm] to [override/cdt02120.g3]

Copying and patching 1 file ...

ERROR: illegal 4-byte write ( ) offset 134 of 0-byte file hamm04.itm

ERROR: [hamm04.itm] -> [override] Patching Failed (COPY) (Failure("hamm04.itm: write out of bounds"))

Stopping installation because of error.

 

ERROR Installing [Make +x/+y Weapons Consistent], rolling back to previous state

[bG1Tweaks/backup/2120/UNSETSTR.2120] SET_STRING uninstall info not found

Will uninstall 1 files for [bG1TWEAKS/SETUP-BG1TWEAKS.TP2] component 2120.

Unable to Unlink [bG1Tweaks/backup/2120/MAPPINGS.2120]: Unix.Unix_error(1, "unlink", "BG1Tweaks/backup/2120/MAPPINGS.2120")

Uninstalled 1 files for [bG1TWEAKS/SETUP-BG1TWEAKS.TP2] component 2120.

...

ERROR: Failure("hamm04.itm: write out of bounds")

PLEASE email the file SETUP-BG1TWEAKS.DEBUG to webmaster@gibberlings.net

Using Language [English]

[English] has 2 top-level TRA files

[bG1Tweaks/languages/english/description_updates.tra] has 12 translation strings

[bG1Tweaks/languages/english/setup.tra] has 115 translation strings

Link to comment

I know you're trying to get bg2 tweaks working on bg1. I just wanted to share with you my own little tweak pack designed to work with bg1 and the other ie games. You may wish to use some of them. Just give me credit for my hardwork on it... :)

 

plainab's tweak pack

It's located at teambg.eu, you don't need to be registered to download it though.

Link to comment

Thanks, plainab. I'll check them out, and I certainly will if any are included.

 

The following problems were found tonight:

 

Druids Use Cleric Level and Spell Progression

 

Installed, does not work (no change to xplevel.2da)

=======================================================

Loosen Item Restrictions for Multi- and Dual-Class Clerics and Druids

 

Install Component [Loosen Equipment Restrictions for Cleric and Druid Multi-Classes]?

nstall, or [N]ot Install or [Q]uit?

Installing [Loosen Equipment Restrictions for Cleric and Druid Multi-Classes]

Copying 1 file ...

Copied [sw1h01.itm] to [override/cdb02190.g3]

Copying and patching 749 files ...

...

ERROR: Cannot find 1 rows with at least 15 columns.ERROR: [clasweap.2da] -> [override] Patching Failed

 

(COPY) (Failure("Cannot Read 2DA Entry"))

Stopping installation because of error.

 

ERROR Installing [Loosen Equipment Restrictions for Cleric and Druid Multi-Classes], rolling back to

 

previous state

[bG1Tweaks/backup/2190/UNSETSTR.2190] SET_STRING uninstall info not found

Will uninstall 115 files for [bG1TWEAKS/SETUP-BG1TWEAKS.TP2] component 2190.

Restoring backed-up ...

Unable to Unlink [bG1Tweaks/backup/2190/MAPPINGS.2190]: Unix.Unix_error(1, "unlink",

 

"BG1Tweaks/backup/2190/MAPPINGS.2190")

Uninstalled 115 files for [bG1TWEAKS/SETUP-BG1TWEAKS.TP2] component 2190.

...

BG1TWEAKS/SETUP-BG1TWEAKS.TP2 0 2180 Installed ~Druids Use 3E Alignment Restrictions~

ERROR: Failure("Cannot Read 2DA Entry")

PLEASE email the file SETUP-BG1TWEAKS.DEBUG to webmaster@gibberlings.net

Using Language [English]

[English] has 2 top-level TRA files

[bG1Tweaks/languages/english/description_updates.tra] has 12 translation strings

[bG1Tweaks/languages/english/setup.tra] has 115 translation strings

=================================================================

Identify All Items

 

Install Component [identify All Items]?

nstall, or [N]ot Install or [Q]uit?

Installing [identify All Items]

Copying 1 file ...

Copied [sw1h01.itm] to [override/cdb03020.g3]

 

This step may take a few moments ...

Copying and patching 749 files ...

...

Copying and patching 1991 files ...

ERROR: illegal 1-byte read from offset 327698 of 1284-byte file AASIM.CRE

ERROR: [AASIM.CRE] -> [override/AASIM.CRE] Patching Failed (COPY) (Failure("AASIM.CRE: read out of

 

bounds"))

Stopping installation because of error.

 

ERROR Installing [identify All Items], rolling back to previous state

[bG1Tweaks/backup/3020/UNSETSTR.3020] SET_STRING uninstall info not found

Will uninstall 185 files for [bG1TWEAKS/SETUP-BG1TWEAKS.TP2] component 3020.

Restoring backed-up ...

Unable to Unlink [bG1Tweaks/backup/3020/MAPPINGS.3020]: Unix.Unix_error(1, "unlink",

 

"BG1Tweaks/backup/3020/MAPPINGS.3020")

Uninstalled 185 files for [bG1TWEAKS/SETUP-BG1TWEAKS.TP2] component 3020.

...

ERROR: Failure("AASIM.CRE: read out of bounds")

PLEASE email the file SETUP-BG1TWEAKS.DEBUG to webmaster@gibberlings.net

Using Language [English]

[English] has 2 top-level TRA files

[bG1Tweaks/languages/english/description_updates.tra] has 12 translation strings

[bG1Tweaks/languages/english/setup.tra] has 115 translation strings

Link to comment

I've finished checking installation and function of the tweaks for basic BG1, with seventeen tweaks not working. Two I have no way of knowing for certain if they work (Add Save Penalties for Spells Cast by High Level Casters and Adjust Evil Joinable NPC Reactions) and one that should be thoroughly tested (No Traps or Locks) but looks good in Candlekeep and Nashkel.

 

Now comes the hard part, fixing those components that don't work... :(

Link to comment
Now comes the hard part, fixing those components that don't work... :(
I don't think that you'll be able to fix a lot of those components to work with bg1. Bg2 has a bunch more effects available as well as the usage of the eff files. Anything with effects above those capable by bg1 (see dltcep for a listing of these) or using eff files is a definite no go and shouldn't even be attempted as you'll never get anything to come close to what it does for bg2... But that's my two cents worth.....

 

 

Got something for you to add. I asked for it in the fixpack workroom. Ascension64 created the code, I packaged it into a working tp2 and then we decided that it was a tweak rather than a fix. So here is the "restoration of the Friendly Arm Inn hidden container."

// ----------------------------------------------------------------------------
// Name:	BG1Tweaks
// Author:  A collaboration of persons yet to be named
// Date:	A work in progress.
// Version: 0.00000001
// ----------------------------------------------------------------------------
BACKUP ~BG1Tweaks/backup~
AUTHOR ~~

// ------------------------------------------------------------------------------------------------------------------------
//macro code
//////////////////////////////////////////////////////////////////////////////////////////////////
//PATCH_MACRO are_update_offset
//for addition of extended headers, this macro updates offsets of all extended headers that occur later than the extended header modified, then updates offsets stored in the variables
//////////////////////////////////////////////////////////////////////////////////////////////////
//Variables that need to be defined:
// -are_update_offset_increment
// -are_update_offset_datatype (can be actor, info, spawn, entrance, container, item, vertex, ambient, variable, door, explored, anim, tiled, song, rest, automap)
//////////////////////////////////////////////////////////////////////////////////////////////////
//Other requirements:
// -all types of %are_update_offset_datatype%_off must have been read
// -the specified %are_update_offset_datatype%_num must have been read
//////////////////////////////////////////////////////////////////////////////////////////////////
DEFINE_PATCH_MACRO ~are_update_offset~ BEGIN
SPRINT are_update_offset_datatype_off "%are_update_offset_datatype%_off"
SPRINT are_update_offset_datatype_num "%are_update_offset_datatype%_num"

PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "actor")=0))
AND (("%actor_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%actor_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0x54 ("%actor_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "info")=0)) 
AND (("%info_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%info_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0x5c ("%info_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "spawn")=0))
AND (("%spawn_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%spawn_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0x60 ("%spawn_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "entrance")=0))
AND (("%entrance_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%entrance_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0x68 ("%entrance_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "container")=0))
AND (("%container_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%container_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0x70 ("%container_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "item")=0))
AND (("%item_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%item_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0x78 ("%item_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "vertex")=0))
AND (("%vertex_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%vertex_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0x7c ("%vertex_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "ambient")=0))
AND (("%ambient_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%ambient_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0x84 ("%ambient_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "variable")=0))
AND (("%variable_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%variable_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0x88 ("%variable_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "door")=0))
AND (("%door_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%door_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0xa8 ("%door_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "explored")=0))
AND (("%explored_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%explored_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0xa0 ("%explored_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "anim")=0))
AND (("%anim_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%anim_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0xb0 ("%anim_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "tiled")=0))
AND (("%tiled_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%tiled_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0xb8 ("%tiled_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "song")=0))
AND (("%song_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%song_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0xbc ("%song_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "rest")=0))
AND (("%rest_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%rest_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0xc0 ("%rest_off%" + "%are_update_offset_increment%")
END
PATCH_IF (NOT (("%are_update_offset_datatype%" STRING_COMPARE_CASE "automap")=0))
AND (("%automap_off%" > EVALUATE_BUFFER "%%are_update_offset_datatype_off%%")
OR (("%automap_off%" = EVALUATE_BUFFER "%%are_update_offset_datatype_off%%") AND (EVALUATE_BUFFER "%%are_update_offset_datatype_num%%" = 0))) BEGIN
WRITE_LONG 0xc4 ("%automap_off%" + "%are_update_offset_increment%")
END

READ_LONG 0x54 actor_off
READ_LONG 0x5c info_off
READ_LONG 0x60 spawn_off
READ_LONG 0x68 entrance_off
READ_LONG 0x70 container_off
READ_LONG 0x78 item_off
READ_LONG 0x7c vertex_off
READ_LONG 0x84 ambient_off
READ_LONG 0x88 variable_off
READ_LONG 0xa8 door_off
READ_LONG 0xa0 explored_off
READ_LONG 0xb0 anim_off
READ_LONG 0xb8 tiled_off
READ_LONG 0xbc song_off
READ_LONG 0xc0 rest_off
READ_LONG 0xc4 automap_off

END
// ----------------------------------------------------------------------------------------------
ASK_EVERY_COMPONENT

LANGUAGE ~English~ ~English~ ~BG1Tweaks/Languages/English/setup.tra~

//////////////////////////////////////////////////////////////////////////////////////////////////
//!---------------------------------------------
// Friendly Arm Inn Hidden Container Restoration
//!---------------------------------------------
BEGIN @100 /*~BG1Tweaks: Friendly Arm Inn Hidden Container Restoration~*/
PRINT @1   /*~Please be patient.  This may take a few moments.~*/
COPY_EXISTING ~AR2300.ARE~ ~override/AR2300.ARE~
SET container_exists = 0

READ_LONG 0x54 actor_off
READ_LONG 0x5c info_off
READ_LONG 0x60 spawn_off
READ_LONG 0x68 entrance_off
READ_LONG 0x70 container_off
READ_LONG 0x78 item_off
READ_LONG 0x7c vertex_off
READ_LONG 0x84 ambient_off
READ_LONG 0x88 variable_off
READ_LONG 0xa8 door_off
READ_LONG 0xa0 explored_off
READ_LONG 0xb0 anim_off
READ_LONG 0xb8 tiled_off
READ_LONG 0xbc song_off
READ_LONG 0xc0 rest_off
READ_LONG 0xc4 automap_off

READ_SHORT 0x74 container_num

FOR (i = 0; i < "%container_num%"; i += 1) BEGIN
READ_ASCII ("%container_off%" + "%i%" * 0xc0) container_name (12)
PATCH_IF (("%container_name%" STRING_CONTAINS_REGEXP "Container 1[^0-9]") = 0) BEGIN
SET container_exists = 1
END
END

PATCH_IF ("%container_exists%" != 1) BEGIN
//add a container
INSERT_BYTES "%container_off%" 0xc0
WRITE_ASCII "%container_off%" ~Container 1~ //Name
WRITE_SHORT ("%container_off%" + 0x20) 2527 //locX
WRITE_SHORT ("%container_off%" + 0x22) 3781 //locY
WRITE_SHORT ("%container_off%" + 0x24) 1 //Type
WRITE_SHORT ("%container_off%" + 0x26) 100 //Lock difficulty
WRITE_SHORT ("%container_off%" + 0x2e) 100 //Trap removal difficulty
WRITE_SHORT ("%container_off%" + 0x34) 2528 //Trap locX
WRITE_SHORT ("%container_off%" + 0x36) 3775 //Trap locY
WRITE_SHORT ("%container_off%" + 0x38) 2551 //Bound left
WRITE_SHORT ("%container_off%" + 0x3a) 3757 //Bound top
WRITE_SHORT ("%container_off%" + 0x3c) 2555 //Bound right
WRITE_SHORT ("%container_off%" + 0x3e) 3762 //Bound bottom

//update offsets and number of containers
SET are_update_offset_increment = 0xc0
SPRINT are_update_offset_datatype ~container~
LAUNCH_PATCH_MACRO ~are_update_offset~
WRITE_SHORT 0x74 ("%container_num%" + 1)

//determine where to insert vertices
READ_SHORT 0x5a info_num
PATCH_IF ("%info_num%" != 0) BEGIN
READ_SHORT ("%info_off%" + ("%info_num%" - 1) * 0xc4 + 0x3a) info_vertex_num
READ_LONG ("%info_off%" + ("%info_num%" - 1) * 0xc4 + 0x3c) info_vertex_idx
SET insert_idx = "%info_vertex_num%" + "%info_vertex_idx%"
END
ELSE BEGIN
SET insert_idx = 0
END

//insert vertices
READ_SHORT 0x80 vertex_num
SET vertex_new_num = 5
INSERT_BYTES ("%vertex_off%" + "%insert_idx%" * 0x4) ("%vertex_new_num%" * 0x4)
WRITE_SHORT ("%vertex_off%" + "%insert_idx%" * 0x4) 2552
WRITE_SHORT ("%vertex_off%" + "%insert_idx%" * 0x4 + 0x2) 3757
WRITE_SHORT ("%vertex_off%" + "%insert_idx%" * 0x4 + 0x4) 2555
WRITE_SHORT ("%vertex_off%" + "%insert_idx%" * 0x4 + 0x6) 3757
WRITE_SHORT ("%vertex_off%" + "%insert_idx%" * 0x4 + 0x8) 2555
WRITE_SHORT ("%vertex_off%" + "%insert_idx%" * 0x4 + 0xa) 3759
WRITE_SHORT ("%vertex_off%" + "%insert_idx%" * 0x4 + 0xc) 2553
WRITE_SHORT ("%vertex_off%" + "%insert_idx%" * 0x4 + 0xe) 3762
WRITE_SHORT ("%vertex_off%" + "%insert_idx%" * 0x4 + 0x10) 2551
WRITE_SHORT ("%vertex_off%" + "%insert_idx%" * 0x4 + 0x12) 3759

//update offsets and number of vertices
SET are_update_offset_increment = 0x4
SPRINT are_update_offset_datatype ~vertex~
LAUNCH_PATCH_MACRO ~are_update_offset~
LAUNCH_PATCH_MACRO ~are_update_offset~
LAUNCH_PATCH_MACRO ~are_update_offset~
LAUNCH_PATCH_MACRO ~are_update_offset~
LAUNCH_PATCH_MACRO ~are_update_offset~
WRITE_SHORT 0x80 ("%vertex_num%" + "%vertex_new_num%")

//update vertex information for new container
WRITE_LONG ("%container_off%" + 0x50) "%insert_idx%" //first vertex idx
WRITE_LONG ("%container_off%" + 0x54) "%vertex_new_num%" //number of vertices

//update vertex indices for info points
READ_SHORT 0x5a info_num
FOR (i= 0; i < "%info_num%"; i += 1) BEGIN
READ_SHORT ("%info_off%" + "%i%" * 0xc4 + 0x2c) info_vertex_first_idx
PATCH_IF ("%info_vertex_first_idx%" >= "%insert_idx%") BEGIN
WRITE_SHORT ("%info_off%" + "%i%"*0xc4 + 0x2c) ("%info_vertex_first_idx%" + "%vertex_new_num%")
END
END

//update vertex indices for other containers
READ_SHORT 0x74 container_num
FOR (i = 1; i< "%container_num%"; i += 1) BEGIN
READ_LONG ("%container_off%" + "%i%" * 0xc0 + 0x50) container_vertex_first_idx
PATCH_IF ("%container_vertex_first_idx%" >= "%insert_idx%") BEGIN
WRITE_LONG ("%container_off%" + "%i%" * 0xc0 + 0x50) ("%container_vertex_first_idx%" + "%vertex_new_num%")
END
END

//update vertex indices for doors
READ_SHORT 0xa4 door_num
FOR (i = 0; i < "%door_num%"; i += 1) BEGIN
READ_LONG ("%door_off%" + "%i%" * 0xc8 + 0x2c) door_vertex_open_first_idx
PATCH_IF ("%door_vertex_open_first_idx%" >= "%insert_idx%") BEGIN
WRITE_LONG ("%door_off%" + "%i%" * 0xc8 + 0x2c) ("%door_vertex_open_first_idx%" + "%vertex_new_num%")
END

READ_LONG ("%door_off%" + "%i%" * 0xc8 + 0x34) door_vertex_closed_first_idx
PATCH_IF ("%door_vertex_closed_first_idx%" >= "%insert_idx%") BEGIN
WRITE_LONG ("%door_off%" + "%i%" * 0xc8 + 0x34) ("%door_vertex_closed_first_idx%" + "%vertex_new_num%")
END

READ_LONG ("%door_off%" + "%i%" * 0xc8 + 0x48) door_vertex_impede_closed_first_idx
PATCH_IF ("%door_vertex_impede_closed_first_idx%" >= "%insert_idx%") BEGIN
WRITE_LONG ("%door_off%" + "%i%" * 0xc8 + 0x48) ("%door_vertex_impede_closed_first_idx%" + "%vertex_new_num%")
END

READ_LONG ("%door_off%" + "%i%" * 0xc8 + 0x50) door_vertex_impede_open_first_idx
PATCH_IF ("%door_vertex_impede_open_first_idx%" >= "%insert_idx%") BEGIN
WRITE_LONG ("%door_off%" + "%i%" * 0xc8 + 0x50) ("%door_vertex_impede_open_first_idx%" + "%vertex_new_num%")
END
END

//add an item
READ_SHORT 0x76 item_num
INSERT_BYTES "%item_off%" 0x14
WRITE_ASCII "%item_off%" ~RING08~

//update offsets and number of items
SET are_update_offset_increment = 0x14
SPRINT are_update_offset_datatype ~item~
LAUNCH_PATCH_MACRO ~are_update_offset~
WRITE_SHORT 0x76 ("%item_num%" + 1)

//update item information for new container
WRITE_LONG ("%container_off%" + 0x40) 0 //first item idx
WRITE_LONG ("%container_off%" + 0x44) 1 //number of items

//update item indices for other containers
READ_SHORT 0x74 container_num
FOR (i = 1; i< "%container_num%"; i += 1) BEGIN
READ_LONG ("%container_off%" + "%i%" * 0xc0 + 0x40) container_item_first_idx
WRITE_LONG ("%container_off%" + "%i%" * 0xc0 + 0x40) ("%container_item_first_idx%" + 1)
END

END
BUT_ONLY_IF_IT_CHANGES
// ----------------------------------------------------------------------------
// EOF
Link to comment

Thought Ascension64 was going to add this to BG1UB (it's a "restoration" as opposed to a fix or a tweak...).

 

Also, it should be auto-skipped on installs that have TotSC, as it's already there.

 

I think it's possible to get most of the tweaks working, you just might have to code some ugly workarounds for some. Some might not even be that ugly... they'll just have different references in BG1 than in Tutu/BG2.

 

One which is really, *really* ugly (uglier than a half-orc/drow with a pumpkin on his head) is the implementation of Bags of Holding for BG1. It's possible... BG1 Ease of Use had it, and I made a WeiDU version for Lost Items but believe me... it's ugly. In theory, it should work though (I haven't, of course, tested it... that might reveal bugs...).

Link to comment

Thanks, plainab and Miloch. This container - is it the "missing" easter egg outside FAI? That would explain the need for autoskip with TotSC (simple enough to check for AR1500)...

 

As for the components I'm having trouble with, several I've considered dropping because of limited functionality - even if I were able to get them working. I'm doing what I can, but I'm no programmer and the only programming experience I had was at the University over (mumble) years ago... Creating some of those work-arounds is well beyond my meager abilities, and will have to wait for someone better skilled than I.

 

Components I want to keep are Multi-Player Kick-Out Dialogues, Reveal City Maps, Universal Clubs, Allow Arcane Spellcasting in Armor, Make +x/+y Weapons Consistent, Loosen Item Restrictions for Multi- and Dual-Class Clerics and Druids, Identify All Items and Make Khalid a Fighter-Mage.

 

Commoners Use Drab Colors and Change Avatar When Wearing Robes or Armor are nice, but...

 

Components I'm considering dropping are Avatar Morphing Script, Two-Handed Bastard Swords, Cast Spells from Scrolls at Character Level and Shopkeepers Have Limited Identification Ability.

 

Bards, Paladins and Rangers Use Icewind Dale-Heart of Winter Spell Tables is a new component I've added.

 

I've also revised the Change Experience Point Cap component to install the BG2 tables since the BG1 tables only go to level 20. This has resulted in two new problems - Druids Use Cleric Level and Spell Progression only works with Change Experience Point Cap (Remove Completely), and the layhands.2da doesn't increment above level 40.

 

Miloch, where can I find Lost Items? With your permission, I'd like to try incorporating it. I can also test it for you...

Link to comment
Thanks, plainab and Miloch. This container - is it the "missing" easter egg outside FAI?
Yes.
I've also revised the Change Experience Point Cap component to install the BG2 tables since the BG1 tables only go to level 20.
BG1 Ease of Use had this too - might want to check how it did it. Isn't WeiDU, but might not need to be (even the BG2 Tweak Pack just copies the table over, doesn't patch it).
Miloch, where can I find Lost Items? With your permission, I'd like to try incorporating it. I can also test it for you...
The last version (v2) is on SHS. It's only for Tutu/BGT though. I'm rebuilding a version that includes BG1 support (which is part of what has made the revision so difficult) - right now, that's only on my computer in pre-alpha form. I'll be sure to let you know when it's ready for testing though.

 

You might want to check the "Exotic Items" component of the Tweak Pack too, which does something similar for Tutu (and could thus be ported to BG1). You'd still have to copy/convert BG2 resources and still have to deal with Bags of Holding (I'll be happy to contribute that code, if and when I get it working).

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...