Jump to content

Heard you like parties


lynx

Recommended Posts

party9.jpg

Yes, the latest code supports displaying as many party members as your gui allows. There are no scrollbars, but once we add those, this limit can go away:

 

The mod is complete, read the docs and instructions here:

https://github.com/lynxlynxlynx/gemrb-mods/tree/master/10pp

Testing with other mods and/or finding appropriate overrides is very welcome.

I'm starting a test playthrough with monk/sorcerer, wisdom xp mod, iwd2-style output and the normal mods: fixpack, dbg, haldamir, tashia, saradas and kivan. Finished, these mods go on the verified list.


Boring battle video:
https://youtu.be/0W0w_i6vNjs

Edited by lynx
link to docs
Link to comment

:worship: :worship: Ooh man! :worship: :worship:

 

I think you can dump the scripts' regexp stuff to a Perl script or even *shrugs* sed (I don't know AWK so I'll avoid mentioning it) and let it replace them, and then throw them to WeiDU so it compiles them again. Maybe I'll give it a try later (after I play some more BGT). The only complicated things I can imagine is when the whole party is moved with ActionOverride(PlayerX,MoveToPoint([yyy.zzz])) or something that needs a special coordinate for each PC.

Link to comment

Look at that github repo, that's basically what I was doing in late 2012 (uff, time flies!). It's all in the proof-of-concept sh script. Copying single actions is not problematic (bumping takes care of identical coordinates), triggers are a bit tougher as they require whole blocks and OR counts may change. And then subtle stuff like difficulty changing according to NumInParty* and similar.

 

But yeah, doable! If you want to help me make this happen, let's coordinate, so we'll be more efficient.

Link to comment

Well, OR() blocks can be taken out by using a pattern like "^[\s]OR\((.*)\)$" (probably "^[\s][~][\s]OR\((.*)\)$" for dialogs, since WeiDU likes decompiling the first strings' line with a starting tilde ~) checking that X value and incrementing it by an Y value calculated after comparing the original and the changed triggers in the OR() block. Edit: so if the blocks check for the players, some checks are made, the OR is updated and the extra players are added.

Edited by CrevsDaak
Link to comment

Well yeah, I'm just saying it's extra work. Weidu nicely indents those blocks one level deeper too. The only ones we can take care of automatically are the ones affecting the whole party and for those we already have all the numbers we need: 6 -> chosen max.

Link to comment

Hacking progresses nicely, mostly thanks to the lessons of the first attempt. ;) Now it's all test driven development and the Or monster has already been slain. But there are also some very tricky files that will be hard to autohandle, we'll see ...

Link to comment

Great news indeed!

Caveats:
- scripting wise, up to 10 member parties are supported (Player10/Player10Fill objects)
...


Can this number possibly be user-extended to 12 in some not-too-distant future? (2x original party size)

And what exactly needs to be done for this?

In my opinion, 12 party members is probably the max practical (that is, actually manageable) number one can play with.
I'd very much like to test whether this is so.

Good work once again, GemRB team!

Link to comment

not without some small changes to gemrb* and recompiling. And altering the mod, once it is finished. But in general it would be simple, yeah. I picked 10 since it is my version of the practical limit, especially due to the inventory window, where there's no room, but you still want to be able to drag items between most portraits.

 

* same as https://github.com/gemrb/gemrb/commit/e0274ef83882cae5d7def2a081d8e5f81222cb67

Link to comment

Progress on the mod is great. The script extender has been finished and briefly checked against bg2+g3 fixpack. 366 out of 3794 scripts needed to be changed and only a few stand out:

- numinparty*(6) use in the final hell battle: since we just replace with GT(5), there won't be any extra demons spawned. Extending the content is not this mods purpose

- fguard.bcs uses some globals to track how he's killing you. We can't handle that, so your whole party can't be assassinated.

 

In other words, pretty obscure stuff that we don't need to care about. :)

 

Next up is the dialog extender, which will likely not require substantial work. Then it's just more checking and searching for exceptions, finishing the weidu part and optimising its lookup, so not all scripts need to be decompiled.

Link to comment

Wow! Awesome!

 

For the scripts, I would have thought it would have been easier to use WeiDu or even a Python script or something than to regexp. It would be quite tricky to cover all cases either way though, I think.

 

For the inventory, can't you scroll the portraits section, then drag? Or ideally have a portraits bar which scrolls itself when the cursor is right at the bottom or the top, so you can scroll whilst dragging, but I think the other would be enough.

Link to comment

it would have been easier to use WeiDu or even a Python script

IMO, doing it with WeiDU would result in a much slower and longer script.

 

Perl is rather fast and I don't know a word of Python (even if they say it's easy, I find C to be the easiest of all languages, no abstraction at all and free segfaults for everybody!) so I believe that it wasn't in my right to suggest doing it with Python (and Perl has a nice =~ m/regexp/ check that came handy for this), even if GemRB uses Python itself for the GUI and other stuff. Other regexps (like sed) were just too basic/dumb to do this.

Link to comment

Either you read everything line by line (tracking a lot of extra state) or take shortcuts where possible. Perl's multiline capabilities and strong regex support were a natural plus, besides providing a nice exercise. Weidu would of course be preferable, since then there's no perl bundling hassle, but it is just too much unsexy work. Most languages either have regex support built in or in modules, but I don't see what we'd gain by using python.

 

A plain regex approach could be made to work, but it would be unmaintainable and hard to add exceptions to. Harder to write than a pure weidu version too.

 

There are multiple options for the inventory and other screens, sure. I find them annoying, but perhaps that will change. If you add a scrollbar or buttons (less positioning/room hassle), you're still limited to movement between the closest 6 members. An improvement from before, but not perfect. The automatic drag scrolling would probably be ok, even with the ocassional misscroll, however the technicalities behind it make me wonder if it would be viable to impletement at all.

That's why I just added the ctrl-e party order reverser. Nice and simple, good enough for now.

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...