Problems? No problems. Pay no attention to the man behind the Emerald Green Curtain... what you don't see can't hurt you
[/SHORTEST ANSWER]
[SHORT VERSION]
It means that despite all the testing, there are some few interjections and materials on "non-vanilla" BGT installs that are working with the wrong stuff.
In a Mega or Fixpacked install of BGT, there will occasionally be things on Jaheira's J and P, Edwin's J and P, and especially Viconia's B and J that will block someone else's addition from completing, or stick a strange comment where it was not designed to go.
As has been seen in practice, this has had little noticeable effect on gameplay; I chalk that up to the vast majority of content on a Mega and the incredibly small (97 out of literally thousands) number of possible content items available. For me, if it were just "wow, that comment was out of the blue", I wouldn't care - technically, we only support "vanilla" Tutu, EasyTutu, and BGT.
But we actually stop some other mod added states on non-vanilla installs from firing [the HappinessLT(0) states in particular *need* to be stopped, and they aren't getting stopped] and that is just wrong/bad/against my personal philosophy of "do no harm - unless you meant to, in which case nuke 'em 'til they glow and shoot 'em in the dark".
[/SHORT VERSION]
[LONG-WINDED EXPLANATION]
OK, let me give it a shot.
Think about BG and BG2 as building frameworks. Now, they are built up of timbers. These are called "states". And for the most part, it is very, very difficult for a modder to cut large parts of them away without radically altering the building, so that no other person can use it. If I come along and wall over a window, well, that can be found and rolled back, but if I knock out a structural beam and then change the front entry into an indoor pool, suddenly all the folks creating beautiful doorknobs end up tossing them into the pool instead of replacing the existing doorknob.
Now most mods operate by finding the timbers and buiding new structures off of them. In fact, most mods look, see the timber, and say "way cool - if someone steps on this timber, I will let a whole ton of cool things happen afterwards!". The base structures are a framework that we can hang or gently alter in a way that allows other folks to set things in the same area. Obviously, if I paint a section of timbers red and turn it into a bedroom, and then someone else comes along and paints part of it green and turns it into a bathroom, well, that is a possible "conceptual incompatibility" as some other forums put it... but it is not a change in the actual structure, just the paint and fixtures. Heck, I can even cut a new window, and change it into a darned TV room, and have someone else come and put a dining set, etc - and everything is still good. Perhaps a little odd, but still good.
This works because the base states remain the same. And it is why you can even have modding - all these are fixed.
Now we come to Ascension64's BGT and Japheth's Tutu. In both cases, the idea in play is to create BG content in BG2 engine. In both cases, every attempt was made to keep the base states, or structural timbers the same.
BUT.
Tutu and BGT are mods. Both convert the original resources; in the vast majority of cases, they take the building structures intact, and move them over a few streets to a new neighborhood, into BG2 town. No big deal; with a few tweaks, mostly so that the game engine (Post Office) can recognize that there is a BG building with BG occupants there, we are all good on both BGT and tutu.
EXCEPT -
the Post Office will not recognize that Jaheira in BG is not Jaheira in BGT. And you know how hard it is to convince the Post Office of anything. For future reference, read Going Postal by Terry Prachet. Or some of the internal publications at your local Post Office.
SO -
BGT has to take the BG buildings Jaheira, Edwin, etc (all the NPCs that can join up with <CHARNAME> in BG and again in BG2) and stack the BG building ON TOP of the BGT building.
For most mods, especally anything designed for BG2, this is a non-issue. Heck, the building just got taller - I was going to repaint that front door red, and it is still the front door, so no biggie. Who cares about the upstairs neighbors. Besides, most modding just adds new timbers, or diverts existing ones - for almost all mod added stuff, there is little which actually goes back and latches onto the old timbers - most of the time we just build right on top of the old ones.
NOW - wait for it - comes the problem we are discussing here.
It seems simple (and it is for 99% of modding) - if I have a Tutu timber I want to fix on a BGT converted building, I just go ahead and count up the number of timbers in the BG2 building, and there I am, right at BG's front door, on the second level. I can fix what I want to fix, change what I want to change, and everything is cool. Basically, cross-platform modding takes the addresses, changes them, and where needed changes the design plan to take into account that we need to send the construction crew to the second floor instead of the first floor.
Exept for one minor, nagging little point. Exactly how many timbers are in the BGT building?
Since BGT (and vanilla Tutu v4, for that matter) is a mod, and often placed on other mods, it has a whole ton of special things that Ascension64 has spent hundreds of hours of modding time to create to make things work. On a clean, straight BGT/Tutu v4 install, the building is a known number of timbers, and we can just add up our count and proceed with construction/demolotion as we see fit. On EasyTutu, nothing can be put before the Tutu install, so we *know* that the buildings are absolutely secure, and we don't have the addressing problem. So when we built out interjections, we (well, Pro5 and Chevalier, really) looked at BGT and said "cool - Edwin timber 0 on Tutu = Edwin timber 976 on BGT". Voila, mod finished, mission accomplished, c'est fini, c'est tout.
For BGT that has NeJ, or the Fixpack, or actually any other mods that add to those very specific addresses BEFORE BGT is insalled, then Ascension64 takes it into account, and builds a clean foundation, then drops the BG building in place - and in a very few cases, has to deal with the Post Office by putting the BG building as a second story. But those mods/fixpacks/etc. may or may not have added timbers...
ce n'est pas de fini, quel dommage, ce n'est pas tout, c'est yucky.
and now when I send the construction guys to lop off Timber 0 on Tutu, translated into Timber 976 on BGT, I find that I am cutting into 976 {Magical Pool Of Radience} rather than timber 976 {Front Door That Is Always Open And Needs To Be Shut Because It Is Cold Outside}. This leads to a magical gusher that turns my construction team into blue squirrels, and the BG Front Door is still open, leading to bug reports about people accidentally falling out and dropping like stones to the cobblestones a floor below...
What has happened is that the BG building has gone from "fixed" states, where everything is in order, to "fluid" states, where the state number is dependent on how many extra states have been added to the BG2/BGT building.
(Salk - for you, this is kind of like sttrefs - a strref on SoA vs one on ToB vs one on Tutu [added to the top of either SoA or ToB] vs one on BGT...)
Crossmod content has the same problem, as where Keto says "You are a cutie" changes with every different install order. So the bigg coded up a special command that ignores this "fluid state" problem by doing the equivalent of a "reverse lookup" - STATE_WHICH_SAYS looks for the actual string contents, and backtracks to the building, and says "Yo! She says this right HERE>>>" and points to the correct building timber that has her words painted on. The problem with doing this on the original dialogues is, well, they ain't original. There is Baldurdash GTU, there is the original, there is the Fixpack GTU, there are all the variants on these that have crept into people's installs; heck, how do I find out if someone is using the v1 of a certain GTU, or another modder has used SET_STRING or something to change the contents of the string to reflect that Imoen is starting her own Magical Pilates Workout Emporium - on crossmod content, the modder updates their mod, and those things stay pretty much the same from version to version. This is a big problem for me, because
a. I don't have all those installs to tra out and collect, and
b. even if I did, I can't keep up with all the changes, and
c. I can't troubleshoot on that many variants of installs, which means I can't support it.
So Ascension 64 came up with a really good, simple idea - find out how many states there were pre-BGT install, by counting them in the Backup folder, which reflects the pre-BGT states, and then BGT slaps the buiding on top, then just do some simple math, and voila - you know where State 0, BG's Front Door, resides - regardless of language, install order, etc.
The problem is that on a clean install of BGT, there appears to be no backup of those dialog files. So nothing to read/count.
I think we have solved it, at least temporarily -
Between the bigg, Ascension64, and Nythrun all pounding ideas into my brain, we have one possible solution to test out (I am still working with Nythrun to recheck the code). Nythrun sent this codeblock back after my last round of questions/attempts to understand and mangle other people's code.
We know that most pre-BGT install mods *will* create a backup; the Fixpack definitely causes a backup to be made by BGT, as does NeJ, etc. But vanilla BGT does not appear to (it must - Ascension64 or someone will let me know where my logic is wrong eventually ) and probably it is safest to look at the files after each combination of pre-BGT mods are installed and count the differences in states before the BG ones get put on...
so this one looks for a backup,
uses it if it exists,
and sets the value to Tutu/BG original if BGT is *not* installed,
counts the backup if BGT is installed and a backup exists,
or sets a "hardcoded" value if no backup exists for whatever reason and a specific mod that adds a known number of states to this particular file is installed.
*whew. i gotta go have a scotch.*
/* Nythrun's, Ascension64's, and the bigg's Fluid State Solution: EdwinJ */ OUTER_SET edwinj_num_states = 0 ACTION_IF FILE_EXISTS_IN_GAME ~AR7200.are~ THEN BEGIN ACTION_IF FILE_EXISTS ~bgt/backup/0/edwinj.dlg~ THEN BEGIN COPY - ~bgt/backup/0/edwinj.dlg~ ~nowhere~ //or inlined/BGT/etc?? READ_LONG 8 edwinj_num_states END ELSE BEGIN OUTER_SET edwinj_num_states = 188 ACTION_IF MOD_IS_INSTALLED ~setup-bg2fixpack.tp2~ "0" THEN BEGIN OUTER_SET edwinj_num_states = edwinj_num_states + 3 END END END OUTER_FOR (i1 = 0; i1 < 378; i1 += 1) BEGIN SET EVALUATE_BUFFER ~BGTEdwinJState%i1%~ = i1 + edwinj_num_states END
The *only* folks who really need to mess with this are folks who are tapping into BG states (usually I_C_Ts) on the small list of party-joinable NPCs files given by Ascension64 a few posts back.
As far as I know right now, that is a constituency of exactly one - me.
Edited by cmorgan, 15 January 2008 - 02:23 PM.