Jump to content

suy

Members
  • Posts

    224
  • Joined

  • Last visited

Everything posted by suy

  1. suy

    Moebius Toolkit

    Version 0.2.0

    127 downloads

    Moebius Toolkit is a desktop application (with a web-based alternative for your convenience) which consists of a set of loosely related modules. All of them have been useful to me while playing and discussing the Baldur’s Gate games, mostly for powergaming, balance checking (e.g. for mod creators), discussing the design of the videogames and AD&D 2nd Edition or just satisfying my curiosity. Project Page Moebius Project Website Readme Forum
  2. suy

    Moebius Toolkit

    The initial post In September 2019 I told the world for the first time of a certain project that I just called Damage Calculator. I did not make the application strictly public, as I only had the source code to give to others (no Windows or Mac installers, not resources to make them), and an experimental build as a web page using WebAssembly (nothing being mature at all). I asked people to message me if they wanted the URL of the web build, so they can try it, and I think I gave it to a total of 3 people. I did not get much feedback in the Reddit post either, but I got a lot of positive votes, which was good enough at the time. Then in the next months I found that people asked "is it X better than Y?" more often that I though, and I did myself manually those damage comparisons, and posted screenshots of the plots. I saw that it was a good way to show the usefulness of the application, and that I would benefit from making it public. I kept working slowly on it, adding small features with the plan of achieving that eventually. The ambitious plan Time passed, and I eventually got a bit frustrated with some tools. I wasn’t able to make EEKeeper work on Linux (it’s a Windows only application, but it could work through Wine). I knew that a great feature for the Damage Calculator would be to get information from saved games, or from the item files. I completely discarded that idea when I started, but I also asked myself the deadly "but how hard could it be?". Additionally, I wanted to polish the internals of the Damage Calculator, and add new kind of charts, calculators, helpers… So a new opportunity to start a hobby project came. I started a new project repository, and starting getting parsers for the first Infinity Engine data structures, and some unit tests. I also started creating a shell that could host the former code of the Damage Calculator, and added a few features. I called this Moebius Toolkit, since it’s a set of different tools for Infinity Engine games (and good names using the word "infinity" are mostly taken, so I went for the name of the creator of the famous strip, which is so tied visually and functionally with the concept of infinity). The Moebius Project Website The Moebius Toolkit is one part of the Moebius Project, which has its own website. Moebius Toolkit. The home page of the app made by the Moebius Project. Damage dealing comparisons. Explained charts done with the Damage Calculator. Arcane spells guide. A guide to the arcane spells (Mages, Sorcerers and Bards). Divine spells guide. A guide to the divine spells (Clerics, Druids, Shamans, Paladins and Rangers) Compared spells. A look at different spells that serve similar, if not idential purpose, but work in a different way, or at a different level. Death Spell Gallery. A collection of screenshots that I took while having fun with Death Spell. Repeated probability. A chart displaying how the chances of something happening at least once vary if you apply the effect repeated times. This can be useful to estimate the chance of succeeding at affecting an enemy when you hit it multiple times with some weapon that carries some special effect (like poison) or you use an spell sequencer to apply the same spell two or three times in a row. Mechanics. An in depth explanation of some game mechanics. Covers both mechanics and rules obviously relevant to the player, casual or experienced, or more subtle calculations (like the rounding performed in some cases), for people obsessed with the details. Mivsan_NT’s playthrough notes. This Baldur’s Gate saga playthrough is so good, that I had to pay homage to Mivsan_NT and his work by indexing the episodes and transcribing some remarkable points of each episode. This is a great playthrough to learn a lot about the game, and this page is a collection of notes that could be useful in obtaining maximum profit from the videos.
  3. For the same reason that, when speaking to the general public, I can't use the word "hacker" or "hack" anymore like it was supposed to be (roughly speaking, hacker was just supposed to be an enthusiast, and a hack some clever trick, sometimes reliable, sometimes not). In a programmer's circle, I can. It sucks, but such is life. If I want to be properly understood, I must limit myself to the limitations of society. Cam just said it well, though. If you can change the thing to something that doesn't cause a controversy and/or harm to people and it's still meaningful and colorful, why not?
  4. Yes, the old school way to generate random numbers is to call a function named rand() that generates a random number between 0 and RAND_MAX (32726, often), but that number is calculated via a mathematical function starting with one input called "seed". That seed is initialized, hopefully from another semi-random source using another function called srand(). Current time is often (mis)used for this, and normally that is good enough to make it hard to predict with just a few numbers. If the engine is not setting the seed correctly, or soon enough, maybe it would explain why this pattern on the numbers happens so obviously. Or maybe even the seed is useless because it just changes the starting point. Note that it is perfectly normal and expected that the numbers generated are creating patterns. It's well known that generate planes when the numbers are used to be points in 3D, and even if you use them in 2D, they can also produce visible patterns. I am, however, quite surprised that it's so easy to see the patterns that you've showed. I tried to look at the character generation by putting the executable in Ghidra (reverse engineering tool) some time ago, and it's too difficult for me. But if you want to give it a shot (you seem quite motivated and that's cool!), get the debug symbols, then search for CScreenCreateChar::OnAbilityReRollButtonClick.
  5. Great. I'll keep this in mind if I ever give a shot to modifying the code to work in BG1EE. Thank you for the mod and the reply!
  6. A bit of an addenda on this: it also affects things like "COPY_EXISTING –". It's an EN DASH (U+2013) instead of HYPHEN-MINUS (U+002D). That is harder to notice visually.
  7. Thank you again for making this! My first hint of feedback: note that the code samples have the problem of "smart quotes" (“”), so they can't be pasted into the text editor verbatim, and work. Easy search and replace for me, but probably a problem for newbies.
  8. Hi @polytope. While I understand that this mod is not that important in BG1, I wanted to try it regardless there, and when I was going to install it, I got a message saying that ToB is required. The check seems to be: BEGIN @10 DESIGNATED 10 REQUIRE_PREDICATE FILE_EXISTS_IN_GAME ~mel01.cre~ @13 So, how comes that such thing is needed? Isn't BG1EE technically enough? Thank you.
  9. See the conversation that I quoted above ("I remove the thief flag, yes, but keep it unusable by thieves by adding the 319 effect").
  10. FYI, this also affects some other special weapons. The Staff of the Magi is the other well known weapon which can't be used to backstab by T/M, for example, because a single class Thief can't use it. Now that you mention, though, I've remembered this conversation with @CamDawg on Discord a good while ago, which hopefully you don't mind me quote: [ 5:39 PM ] suy : A pity the backstabbing weapon is so hardcoded. Backstabbing with an Axe would be fun. [ 5:50 PM ] CamDawg : COPY_EXISTING_REGEXP GLOB ~^.+\.itm$~ ~override~ READ_LONG 0x1e usability PATCH_IF ((usability & BIT22) = BIT22) BEGIN // if unusable by thieves WRITE_LONG 0x1e (THIS BAND `BIT22) // remove thief flag LPF ADD_ITEM_EQEFFECT INT_VAR opcode = 319 target = 1 parameter1 = 4 parameter2 = 5 timing = 2 special = 818 END // add back as 319 END BUT_ONLY [ 5:50 PM ] CamDawg : EE-only though [ 6:09 PM ] suy : But that's changing the usability flag for regular use as well, right? I meant to keep an axe/bastard sword/etc still away for a thief, but allow a f/t to backstab with a weapon usable for them. I looked at the decompiled code, and it seemed hardcoded to me. But of course, noob on the topic, so with a grain of salt. [ 6:12 PM ] CamDawg : I remove the thief flag, yes, but keep it unusable by thieves by adding the 319 effect. [ 6:12 PM ] CamDawg : So it makes all weapons available for backstab without changing their actual usability. [ 6:13 PM ] suy : [ 6:13 PM ] suy : Why is this not in Tweaks Anthology then? [ 6:13 PM ] CamDawg : Because I just wrote it now. [ 6:13 PM ] CamDawg : But it'll be in the next Tweaks, sure. I forgot to ask CamDawg about this, so I'll do now: what do you think, should be on Tweaks still, or can be better on the EEFP?
  11. I think the table in P&P, if you expand it from the succinct form to the usual way, makes sense and follows the usual "pyramid progression" (you get more at the low levels than at the highers) that all other tables of this kind have. The table on the manuals and the table on the game match, because very likely one was built from the other, and whoever built it did a mistake when transcribing it. As I mentioned on the other comment, I think someone misread the row on the P&P manual, and started carrying the mistake to the following rows of the game table. I think the fact that all the tables of the game have a certain pattern except this (which doesn't seem to follow any other pattern, AFAIK), is some argument towards what could have been the developer intent.
  12. Same for me. I mentioned the PHB in the first post, and there is no cap that I found. Quite the opposite, it lists till level 20, but it says how to calculate beyond 20. I'm using the revised premium edition in PDF form. I can check the old manuals in paper, but only translated to Spanish.
  13. Here is a simple example of why I think that an optional component is better than a separate mod for users: The item deduplication is likely to cause some issue with (at least) the Item Randomizer. At the very least, I think it will cause the degradation that the items which are swapped won't be randomized. Some users might not like that, and would prefer the randomization over the fix (at least meanwhile the Randomizer adapts some strategy to detect the EEFP and patch its static table, which can be a moving target anyway, if changes are applied to the EEFP in other releases). If the deduplication is a fixed component, users which don't know how to modify weidu code will have to ask for help, and patched versions of the TP2 will fly on private messages or forum posts. More tech savvy users will have to patch it themselves on each release. Even more tech savvy will have a private clone of the repo with a commit that will rebase after each release. If the deduplication is an optional component, users can say "no" at install time. If the deduplication is a separate mod, it will be confusing to some (less visibility), some extra burden in downloading yet another mod, and... which will be even the name of such mod? EEFP_but_less_compatible? That's gonna scare a bit some users as well. I think for users option 2 is clearly better. Now, I'm not denying that option 2 has also some burden on you, if you need to ask about the EEFP being installed, you'll need to ask which components. There are other developer concerns also with option 2, in that is harder to maintain the mod, or compatibility with such mod for other modders. Other options will have also their own problems for mod developers.
  14. OK, so I'm not sure if I got what you mean, but if I did, it would make some sense: Warriors progress from 20 to 0, so they improve 20. Rogues do so at half the pace, so they improve by 10, and cap at 10 (20-10=10). Priests do so at 2/3 and Wizards at 1/3, with the one third being ceiling(20/3.0)=7, hence they end at 6 and 13 respectively (20-14 and 20-7). The key here is: why should it be rounded up? Or just rounded to the nearest integer, which yields the same value. It doesn't feel wrong, but it doesn't feel entirely right either. Normally when explaining the rules the phrase "caps at level X" is used often, so I was looking for an explanation based on level.
  15. Schools are not arcane. All divine spells have schools on the PHB and in game.
  16. After reading and thinking about the conversation, I suppose that indeed changing the descriptions is not only easiest, but also probably the most reasonable way to go, as maybe it's the only way... I've done some searches on the Planescape campaign setting, and I don't really find anything specific about what happens with a planar being on the Prime Material Plane. Magic is supposedly affected on the planes, but not on the Prime. So I don't see why the curing spells should not affect someone like Haer'Dalis. The description from the PHB certainly says so, but I don't know the reasoning. An elemental or Aerial Servant not being affected by healing spells, I would understand. Their "body" is not normal. Haer'Dalis, though, since he's a Doomsguard, should be affected by this: I suppose no-one cares this much to have this implemented. BTW, there is a much complex can of worms to open if one wants to implement rules that affect creatures and items from the prime in the planes. Items, for example, should lose power when one travels to other planes. We don't even know where the Planar Prison is exactly located (Carceri?), but all the weapons that the primes bring there should be adjusted by some levels and be less effective. I think all the planes that are visitable by the players are Inner or Outer planes, and that's 2 levels less!
  17. I don't think so. Option #1 is removing items which are duplicated, which is what BG2 Unique Artifacts does, and a couple of us have mentioned it. I guess we've not talked much about this because the other mod already does it.
  18. It feels a bug to me, as the lore of the description of the items is a bit inconsistent if there are several with the same name in some cases. As you said, the fact that there are generic versions of those items is quite telling. Also, I would prefer that there is a way to not install the component, as I fear it could be an issue with some mod (Item Randomiser is one of my fixed ones, and I don't see how this could be made compatible nicely). But the fact that the bg2-uniqueartifacts exists also shows that there is demand for something that fixes the wrinkle of items being duplicated.
  19. I've been working on a tool that (among other things) happens to chart THAC0 progression vs XP. For simplicity reasons, I've been calculating the THAC0 progression manually instead of reading it through THAC0.2da, and I've noticed something that seems a bit inconsistent. I can't tell from P&P manuals if it's a bug or not (they don't mention *any* THAC0 cap in the PHB, they just put a pre-calculated table that stops at 20, but it also mentions using the progression above level 20), so I'm bringing it for discussion. Warriors (and Monks) stop improving at level 21, which makes sense given that they "cap" the base THAC0 at 0. Seems OK to me. Rogues (Thief/Bard) stop improving at level 21 as well, when they reach 10. Given that they progress at half the Warrior pace, makes some sense to me. All the rest (Mages, Sorcerers, Druids, Clerics...) seem to get the last improvement at level 22. That's a bit of a head scratcher for me. I don't know why that value. But capping at 22 it's the more common behavior, aside from the special case for Warriors. Myself on the first try of the application that I've mentioned, started capping at either 0 THAC0 or level 22, but then realized that Thieves got one point of improvement over what happens on game. I have no idea how I would proceed on this. But maybe I would just change the Rogues to be consistent with the other classes.
  20. Excuse my most likely mistake, but can I ask how this is supposed to work in the current implementation? I've been looking at the code to try to better understand what the replacement does (for example, of the Amulet of Protection +1), and I could not find the item that is supposed to be replaced with. In vanilla BG1EE and BG2EE I can't find bdamul24.itm. I find the amul14.itm to be what I was expecting, but I can't find the one is replaced with. Unless... COPY_EXISTING "bdamul24.itm" "override/amul14.itm" Unless this happens to be in the wrong order? If amul14.itm is the right item, and gets copied to bdamul24.itm in override, then the description gets fixed later to be a generic +1 protective item without a unique name. But either I'm not understanding the WeiDU code, or something else (most likely my fault).
  21. This has been mentioned in this older thread:
  22. Someone mentioned a scroll of Death Spell working against a Hakeashar, but the Skull of Death failing. I looked into them and found that the former uses 148 (cast spell at point) while the latter uses 146 (cast spell at creature). CamDawg mentioned that the BG2FP went through many scrolls to correct this, but other items like this might be missing.
  23. Ah, that's an interesting detail. Note that the Unique Artifacts mod goes way beyond this, and removes many duplicates that from the description, one might understand that are unique. But it doesn't include this weapon.
  24. Good point Angel. I always knew this table was suspicious, but I never bothered checking with the PnP manuals. The way the table it's specified there is a bit weird, and it's the only table I know of that it's not specified in full detail (like in the 2DA or the BG/IWD manuals), but instead it's just one column saying how much to change from one level to the next. So you need to build the table yourself, carrying from the previous result. I think it's obvious that someone was confused when understanding that description of the bonus spells per score level, or that just read a wrong row by accident. There seems that the mistake is only when reading scores 19, 23 and 24. Since the result carries to the next row, the table gets more and more borked at the end. PS: I'm not sure if this is EE specific content. Are we in the right thread?
×
×
  • Create New...