Jump to content

Let's put the Black Pits 1 into BGEE!


Recommended Posts

EDIT - this is ready for primetime!

I have made it so that you can play through the Black Pits arena fights in the course of your BG1 campaign, without getting too much XP or too much loot so as to unbalance things. When you talk to Baeloth, you can either have him join your party, or if you act like a gullible tourist who want to see the Underdark, he will abduct you and take you to the Black Pits mini-campaign. After you play through it, you cannot get Baeloth to join your party. So it is either/or as far as he is concerned.

You can download the mod here. Enjoy!

NB: this overwrites several scripts and dialogues from the Black Pits, so it should be installed as early as possible. The only mod that should be installed before this is EET, and maybe a UI overhaul mod.

I'll leave the original first post below, for posterity and to explain the genesis of the idea.

........................

Hello! I have had this idea for a while:

  • All files associated with the Black Pits mini-campaign are present in any instance of BGEE, BGEE+SoD, and EET
  • There are no lore conflicts preventing BG1 Charname from participating in the Black Pits - save one
  • So, why not have the option to play through it with your BGEE party, as a sort of prestige dungeon?

The single conflict I'm aware of is that you can meet Baeloth in the Wood of Sharp Teeth, and this is clearly meant to be Baeloth after he was killed in the Black Pits and revived at a lower experience level. But the thing is: Charname doesn't. know that. So in the interest of a simplicity, I would add a very early break in Baeloth's dialogue (BAELOTH.DLG): immediately after his first line ("dangerously deteriorated!" etc.), create a break where the conversation can go one of two ways. One path will be as normal, where he tries to join your party; but the new path will present him on a "recruiting" run to the surface. Basically set him up the way Hobart is when he takes you to Trials of the Luremaster: "Oh, you look like 'adventuring' sorts. I don't suppose you are interested in an... er, adventure? Riches, glory, fame, that sort of thing? Cheering masses and adoring fans? if that interests you, then be good dears and just grab hold of this gem. All together now, yes, that's it. And away we go!" The idea is, you can meet Baeloth and be abducted to the Black Pits as contestants, or you can meet Baaeloth and the Black Pits will be in his past and he will join your party. The player can decide which they prefer.

At that point the dialogue will start a cut-scene in which the party is teleported to OH9310.ARE. In OH9310.BCS we would change line 196 from

IF
	Global("BPINTRO","GLOBAL",1)

to

IF
	GlobalLT("BPINTRO","GLOBAL",2)

In either the teleportation cut-scene or else in CUTBP00.BCS, we would strip the party of all items and gold.* CUTBP00.BCS is what adds the prisoner rings to the party members.**

The Black Pits encounters themselves could basically be completely unchanged, except for one thing: I would remove all instance of quest XP handouts for winning fights. From what I can tell, all these XP handouts are in BPNAJIM.DLG and BPBAELOT.DLG. Unfortunately this seems a bit more complicated than I would like, and I would definitely need help with it. The quest XP is awarded in blocks like this one:

IF WEIGHT #8 ~  Global("T1_B1","GLOBAL",2)

OR(2)

Global("LAST_BATTLE","GLOBAL",101)

GlobalGT("LAST_BATTLE","GLOBAL",101)

~ THEN BEGIN 17 // from: 
  SAY #29170 /* ~Congratulations, you have slain a bunch of boozy bumblers. Najim shall ensure that you are awarded appropriately.~ [BPT1B102] */
  IF ~~ THEN DO ~GiveGoldForce(875)
AddexperienceParty(7300)
SetGlobal("T1_B1","GLOBAL",-1)
SetGlobal("START_BATTLE","GLOBAL",0)
SetCutSceneLite(TRUE)
StartCutScene("CUTBP03")
~ EXIT

My thinking was: set a global variable when Baeloth teleports you to BP, and have those AddexperienceParty actions be dependent on that global variable not being set. (If you play BP1 as its own campaign directly from the game menus, that variable will not be set and in that case you need to get those XP.) It looks like that AddexperienceParty action cannot be separated and made conditional; therefore, presumably, the entire block quoted above would have to be cloned and each version would need a different trigger added - Global("BPINBG","GLOBAL",0) and Global("BPINBG","GLOBAL",1). This would have to be done in every such instance in those two dialogues. Honestly this is not my area of strength and I don't know how easy it would be to patch them. Maybe easiest to simply modify the files by hand and overwrite the originals, and instruct players to install this mod very early.

In this way, you could play the Black Pits all the way through, only getting XP for kills (and leave it to other mods like EET Tweaks to globally manage such XP accumulation). Eventually you will (hopefully) come to the end, and in this case you would. need to be teleported back to the surface. Here we would need to edit states 16, 17, and 19 of BPNAJIM.DLG. Here again, we would clone them and. have the new states check for Global("BPINBG","GLOBAL",0) or Global("BPINBG","GLOBAL",1). In the former case it would proceed as usual -

IF ~~ THEN REPLY #29829 /* ~Yes, I wish to leave.~ */ DO ~SetGlobal("BLACK_PITS_VICTORY","GLOBAL",1)
SaveGame(0)
TextScreen("BPENDA")
GoToStartScreen()
~ EXIT

And if the global variable is set to 1, then the GoToStartScreen() would be replaced with a cut-scene in which the party it transported back to the Wood of Sharp Teeth.

Voila! The Black Pits added to BGEE.

* One sticking point is equipment. I actually like the idea of removing all of the party's gear and making them start scratch. That group of tasloi is a little more menacing when all you have to fight them with is a couple sticks. BP throws enough gold at you that you can end up with a nice amount of gear - it won't be the same gear that you left the surface with, but it will be plenty sufficient to continue on with the BG campaign. However, there are quest items that you might need to retain, and there are various special mod-added items that you won't want to give up. Putting that stuff into a container somewhere, or scripting its return after you defeat Baeloth, would be nice. But I have no idea how to achieve that. I know SCS does something like that in Spellhold... maybe it could be a model?

** I would add an install option to change these rings from the ring slot to use some other slot - perhaps belt, or amulet. In part because it may be convenient for some mods - Aquadrizzt's "Low Magic World" mod has a component that limits all rings, belts, boots, caps, and. amulets to using the two ring slots, and it is rather consequential to only have one slot for magic items, instead of two. And in part because it seems like it would be stupid easy to do: just modify line 7 of CUTBP00.BCS.

Anyway, this seems... totally feasible? It seems like the above steps would at least make for a working first draft. But, I don't have to skill to actually do all of this on my own. I'm just not adept enough at working with .DLG and .BCS files, and i wouldn't know what to do about equipment. And I don't know how to do a cut-scene that transitions you from one area to another. But maybe a feasible plan, spelled out in ink, is enough to spur some people to assist? I mean, I'm not looking  for assistants - I'm not temnix! - but for assistance. Heck, if someone gets inspired to do this on their own, by all means! I'm not looking for credit or anything like that. I just think this would be cool to have this in the game. If people are interested in working on it, feel free to PM I guess, or maybe better to just work in public in this thread. It could be a true community mod, rather than something from this or that modder.

My desire would be to keep it simple and get something out the door sooner than later - I'd rather make a working alpha version, than wonderfully curated vaporware. But if anyone (modder or otherwise) has opinions about that, or anything else I've written, feel free to share!

Edited by subtledoctor
Link to comment

For specific assistance: does anyone know how to move the party from one area to another in a cut-scene? I want to move the party to OH9310.ARE... I don't know if the party actually needs to go there, or if simply sending the game there would suffice... once there, OH9310.BCS should run CUTBP00.BCS, which does this:

IF
	True()
THEN
	RESPONSE #100
		CutSceneId(Player1)
		CreateItem("BPRNG1",0,0,0)  // Slave Ring
		FillSlot(SLOT_RING_RIGHT)
		Wait(4)
		ActionOverride("BPTAVE01",DisplayStringWait("BPTAVE01",29958))  // What? What? Where are we?
		Wait(3)
		ActionOverride("BPTAVE02",DisplayStringWait("BPTAVE02",29959))  // Who spiked me drink? I was just in the tavern, talking to Myrna. Hey, I saw those folks there too.
		Wait(9)
		SmallWait(5)
		CreateVisualEffect("spsdimpa",[472.400])
		CreateCreature("BPTASL01",[472.400],S)  // Tasloi
		CreateVisualEffect("spsdimpa",[472.400])
		CreateCreature("BPTASL02",[472.400],S)  // Tasloi
		CreateVisualEffect("spsdimpa",[472.400])
		CreateCreature("BPTASL03",[472.400],S)  // Tasloi
		PlaySound("EFF_M31C")
		ActionOverride("BPTAVE03",DisplayStringWait("BPTAVE03",29960))  // We're in some kind of fighting pit. Look out! Monsters!
		Wait(3)
		ActionOverride("BPTASL01",Attack("BPTAVE03"))  // Tavern Bouncer
		ActionOverride("BPTASL02",Attack("BPTAVE02"))  // Tavern Bully
		ActionOverride("BPTASL03",Attack("BPTAVE01"))  // Tavern Patron
		SmallWait(5)
		ActionOverride("BPTAVE03",Attack("BPTASL01"))  // Tasloi
		ActionOverride("BPTAVE02",Attack("BPTASL02"))  // Tasloi
		ActionOverride("BPTAVE01",Attack("BPTASL03"))  // Tasloi
		MoveViewObject(Player1,5)
		Wait(3)
		JumpToPoint([906.702])
		CreateVisualEffectObject("spdimndr",Myself)
		ActionOverride(Player2,JumpToPoint([839.761]))
		ActionOverride(Player2,CreateVisualEffectObject("spdimndr",Player2))
		ActionOverride(Player3,JumpToPoint([999.692]))
		ActionOverride(Player3,CreateVisualEffectObject("spdimndr",Player3))
		ActionOverride(Player4,JumpToPoint([903.753]))
		ActionOverride(Player4,CreateVisualEffectObject("spdimndr",Player4))
		ActionOverride(Player5,JumpToPoint([959.714]))
		ActionOverride(Player5,CreateVisualEffectObject("spdimndr",Player5))
		ActionOverride(Player6,JumpToPoint([974.764]))
		ActionOverride(Player6,CreateVisualEffectObject("spdimndr",Player6))
		Wait(3)
		EndCutSceneMode()
		SetGlobal("BPINTRO","GLOBAL",2)
		MultiPlayerSync()
		SmallWait(4)
END

Does the party need to be brought to that map? Or can the JumpToPoint action bring them there from a different map?  I'm unclear on the details of this sort of thing. I'd like to trigger it from this dialogue block:

IF ~~ THEN BEGIN 52 // from: 51.0
  SAY ~Fantastic! Oh, this recruiting trip was much quicker than I expected. Now be good dears and just grab hold of this perfectly harmless glowing gem. All at once, yes, that's it. And away we go!~ 
  IF ~~ THEN DO ~SetGlobal("BPINBG","GLOBAL",1) /* and move the party to OH9310.ARE */ ~ EXIT
END

 

Edited by subtledoctor
Link to comment
1 hour ago, morpheus562 said:

I'm interested in this. I'd suggest making the reward for beating the Black Pits the option to recruit Baeloth and completely remove his normal recruitment.

Sure. Though, he is level 15 when you fight him... we would have to invent a rationale for him to be drained to level ~7 or whatever. I suppose, it could be exactly what happens behind the scenes in the normal course of events: have him be resurrected right in front of you, but it will be his normal recruitable .CRE. Add some dialogue about how he has been humbled, and Najim is now free of the geas, and Baeloth has nowhere to go and is out of spells and a bunch of angry duergar are looking at him funny, and would we mind if he tagged along with us? Pretty please?

That would be icing on the cake. But first we need to bake the cake. At the moment, I need to know how to get the party from the outdoor map to OH9310.ARE, and then later how to get them back to the surface.

Hmm... I suppose IWDEE has several instance of this. I'll go check Hobart's and Hjollder's scripts...

Edited by subtledoctor
Link to comment

I think you would need to do some very substantial tactical rebalancing. I’m just playing through BP for the first time now, as it happens, and it seems balanced on the assumption of very rapid level increase - about one level per two fights. A side user would have to leave the party at roughly the same level throughout- that means that the current encounters would either start way too easy, or end way too hard. I don’t think it’s impossible to imagine rebalancing around that but it wouldn’t be trivial.

On a more thematic level: BP reuses lots of BG magic items.

Link to comment
1 minute ago, DavidW said:

I think you would need to do some very substantial tactical rebalancing. I’m just playing through BP for the first time now, as it happens, and it seems balanced on the assumption of very rapid level increase - about one level per two fights. A side user would have to leave the party at roughly the same level throughout- that means that the current encounters would either start way too easy, or end way too hard. I don’t think it’s impossible to imagine rebalancing around that but it wouldn’t be trivial.

On a more thematic level: BP reuses lots of BG magic items.

I think it's largely okay for it to start with some very easy fights - you are successful and well-equipped adventurers, and they don't necessarily know that at the time you are kidnapped recruited. Assuming you go around levels 6-8, you should hit a few fun fights toward the middle. I worry that the end fights might assume you have advanced more, and might be extraordinarily hard for a ~level 7 party. I comfort myself by simply not thinking about it yet. ;)

I would hope that rebalancing fights would not be too hard - just add some stuff to the area scripts that are conditioned on the global variable for BP_in_BG. Or even forget the variable, and just make a bunch of stuff dependent on Lavel() checks... this would carry over to the independent BP campaign, but that might not be a bad thing...

This could be an opportunity to have some fun with it, too. Like, when Baeloth throws gibberlings at you, why not have him throw a mountain of gibberlings at you? If I can wade through 200 gnolls between rests, how about 600 gibberlings? :laugh2:

Link to comment
12 minutes ago, DavidW said:

On a more thematic level: BP reuses lots of BG magic items.

This is why I think it's okay to simple destroy everything the party possesses. They will purchase the BP gear and then bring it back to BG with them. Though, I suppose they may not have encountered some of it yet? Which means there could be doubles when you go back to the surface.

Well, this is a nut which will have to be cracked, then. There are different things that could be done. We could remove all instances of unique items from the BP stores... that would make things harder.  We could allow the party to keep the equipment they bring with them, and use the BP stores more for potions & scrolls etc.

Or we could make a new store, and move all the party's existing equipment into it - their gear all has prices in the .itm files, right? So make the party buy it back. But, I don't know if this would be easy or even feasible.

Link to comment

Well, I've managed to get my level-6 party in my current iPad game sent to the Black Pits! Albeit with all my equipment. And, I have not yet devised a way back. (Presumably some similar LeaveAreaLUA() commands at the end of Najim's dialogue.)

So, some success! But still extraordinarily crude. I've uploaded this much to Github - under the Gibberlings3 group, so anyone here can mess around with it.

Link to comment

I too was concerned that the Black Pits's store inventories would be awkward to give a BG party.  An Improved Cloak of Protection is normally available along with Elan Garaq's shop inventory!  However, I do like how BP has a single vendor that sells most or all BG1EE scrolls.

Perhaps treat a buncha BP gear like Drow gear in that it's quickly destroyed post-BP for balance reasons.  Note that the highest-end stuff normally costs 20K+ per item and at that price I want to be able to keep my gains!

Careful about removing gear from the party upon entering BP since that might bug the game!

Should there be a minimum level or EXP requirement to enter BP?

Should fights be repeatable for EXP & cash?

If Baeloth is level drained at the end of BP, should the party also lose EXP?  I don't like it at all but doing level scaling of fights might be the best way to handle them.  We assume people saved before entering, right?  (Also, remember that there are plenty of methods in vanilla BG1EE that allow for quick leveling!)

Should parties upon winning the BP area be forced out?  Can they return and still buy stuff?  Would the vendors be relocated somewhere else in the BG world like BG city or the carnival?

Edited by Endarire
Link to comment
3 hours ago, Graion Dilach said:

This breaks the lore Mark Meer established - according to him, Najim still serves Baeloth.

Dude I'm just reading the game's .DLG files, where we find stuff like

"Freedom! ... the arcane shackles fall away from my soul!"

And then we meet Baeloth in SoD pitting squirrels against each other, or something, with no Najim to help him. And we see Najim in BP2 acting independently of Baeloth.

I don't care about lore or what's "canon," this is just what's in the game. I am not proposing to change it one way or the other.

Edited by subtledoctor
Link to comment

I've updated the archive to version 0.2, now it should work on both BGEE/SoD and on EET. It creates a dialogue path with Baeloth where, if you play the gullible adventure-seeker, he will take you to the Black Pits. It's pretty bit rough-hewn - I was too rushed to add in any of his trademark alliteration, yet. It does not strip your gear and money, but it does correctly decline to grant quest XP after winning fights if you have come from the BG1 campaign.  (Except one small one at the beginning that I missed.) Currently there is no way back to the main campaign - I need to play through the BP campaign to the. end, to create a save file from which I can test script changes to go back. It looks fairly simple, but we'll see.

At that point it will be a fully playable alpha-quality mod! Then we can work out the equipment and and fight balance issues, and maybe improve the method of getting there.

As far as one equipment issue goes, I really wouldn't mind just removing some of the high-tier stuff and BG duplicates from the BP stores. Could even replace some with bespoke new items, or some items from e.g. IWD that have not been ported over in the various mods that port over IWD stuff. (Where is Pig's Eye? Spell Diver? Wind of Heaven? The Mace of Weal and Woe? The Robe of Enfusing? Hold Fast? Benorg's Truth? I remember looking forward to seeing such weapons when the "bonus merchants" were added to BG2, but instead we got stuff like Jerrod's Mace and the Spear of Kuldahar. So disappointing.)

Edited by subtledoctor
Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...