Jump to content


Photo

BG2 Improved GUI


  • Please log in to reply
189 replies to this topic

#181 Insomniator

Insomniator
  • Member
  • 123 posts

Posted 11 September 2021 - 12:14 PM

Thanks for thinking about them. Here's a wider consideration: would there be difficulty {pardon the pun} in letting the user set the stat numbers at install-time? With limits, of course.

Currently all bonuses hardcoded in "C" code, but move constants to external .INI is not difficult

 

This way, you could keep the mod option as a fixed-name, e.g. Fury of Insomniator, and during the install, have subcomponents like "THAC0 modifier: (-5 to +5): enter choice"

I don't want to include to installer such of tuning parameters. Instead user can change parameters in .INI after installing mod

 

User choose base sets (legacy/iwd1 fury/...) at install time and if not satisfacted -> will change .ini



#182 Azazello

Azazello

    The Anti-Spammer

  • Member
  • 1866 posts

Posted 11 September 2021 - 02:42 PM

@Azazello,
Heart of Fury (this is the same as Icewind Dale 1, except for...)
  • -5 THAC0
  • Armor Class = (original AC) - 5
  • +0 Attacks Per Round
  • +1 Saving Throw vs Death/Wands/Polymorph/Breath/Spell {...except for here - in original IwD1-HoF this would be +0}
  • Hit Points = (original HP)x3 + 50
  • Never break Morale
  • +3 Level in all available Classes {...except for here - in original IwD1-HoF this would be +0}
Party get Bonuses (optional, selectable at installer):
  • extra 1000 Experience Points {...except for here - in original IwD1-HoF this would be just +100 XP}
  • Party's Summon get same bonuses as Enemy

Where did you get these iwd1 Heart of Fury bonuses ?

 

Exploring  IWD1-ToL v1.42 i found much different (beamdog take it as base for Legacy of Bhaal):

XP = 200% + 1000
THAC0 -5

No Armor class changes

HP +300% (+200% summons)
Attacks per round +1
Saves + 1
MovementRate = (MovementRate * 1.3) + 1
Levels +12
Gold +75

It's endearing to review the details of these (literally) decades-old games.

 

Upfront, I never had any interest in IwD2--and still don't--so I have nothing to say about it.

 

 

Doing some websearching, I can find only one publicly-advertised reference to a formula for IwD1-HoF, just the HP Increase, from Dan Simpson's walkthrough: "All creatures have x3, +80 hit points."

 

Then, good ole Tioma (I miss him, and his 'no kill' campaigns for all the BG games, especially the one for defeating Yxunomei...) made a mod for BG1 that was supposedly using the official IwD1-HoF formulae: http://www.ironworks...read.php?t=3373

 

Trouble is, nobody but him knows where he got that info from (except the HP increase, surely that was his revision of Simpson's), as it definitely was not in the public literature during the time. Still, for near 2 decades, all of us thought Tioma's formulae were official for IwD1.

 

(Michael Walsh published a walkthru for Heart or Winter in 2001, in which he tabulates the exact numbers for XP increases when using HoF. It's possible/likely, gamers extrapolated an XP formula from those tables.)

 

 

I've never seen a HoF determined from dissecting Trials of the Luremaster. So Insomniator-- you may have discovered something not ever publicly published in nearly 2 decades: that with ToL installed, HoF formulae not only alter other factors in the game, it also adjusts directly with the Difficulty slider setting.

 

How did you discover those other variable changes? And do they also apply when only Heart of Winter is installed?



#183 Azazello

Azazello

    The Anti-Spammer

  • Member
  • 1866 posts

Posted 11 September 2021 - 02:47 PM

Thanks for thinking about them. Here's a wider consideration: would there be difficulty {pardon the pun} in letting the user set the stat numbers at install-time? With limits, of course.

Currently all bonuses hardcoded in "C" code, but move constants to external .INI is not difficult

 

This way, you could keep the mod option as a fixed-name, e.g. Fury of Insomniator, and during the install, have subcomponents like "THAC0 modifier: (-5 to +5): enter choice"

I don't want to include to installer such of tuning parameters. Instead user can change parameters in .INI after installing mod

 

User choose base sets (legacy/iwd1 fury/...) at install time and if not satisfacted -> will change .ini

 


I really like that. Thanks for the brainstorming!



#184 Azazello

Azazello

    The Anti-Spammer

  • Member
  • 1866 posts

Posted 11 September 2021 - 03:06 PM

Fists of Fury
  • -5 THAC0
  • Armor Class = (original)
  • +0 Attacks Per Round
  • +0 Saving Throw vs Death/Wands/Polymorph/Breath/Spell
  • Hit Points = (original)
  • NORMAL break Morale
  • +1 Level in all available Classes

Party get Penalty:

  • None

Party get Bonuses (optional, selectable at installer):

  • extra 100 Experience Points
  • Party's Summon get same bonuses as Enemy


I got the idea of this mode to satisfy a long(decades)-running debate about making monsters more challenging, without making them 'bullet sponges': i.e. creatures have a much easier chance to hit characters, but don't get any (or many) other buffs, so that characters still have a chance to duke out a fight even if slightly above their current level.

 

How would this play out?

 

Let's take our eager intrepid party members way back to Level 1. In truth, every hit they take should hurt. (Increase the Difficulty above Core, and each hit will hurt a lot!)

 

But there's no need for a goblin to be dealing 50 damage. Still, it can be presumed that a goblin is better trained to fight than a L1 fighter. Debatable, yes. But the goal here is to make more challenge for the player, not to add aggravating overpowered tank-monsters.

 

This is also why I asked to allow us player to min-&-max the factor values, e.g. I might in one playthru to make (-1/THAC0, +2 ApR); then another time (-2/THAC0, +0 ApR, +1 Saves), etc. etc.


Edited by Azazello, 11 September 2021 - 03:09 PM.


#185 Sam.

Sam.
  • Modder
  • 1155 posts

Posted 11 September 2021 - 07:26 PM

My biggest complaint in such hard modes is the huge level increase (e.g. Level +12).  This makes abilities like Turn Undead virtually useless.  I pretty much only play the EEs these days (so my opinion is void here), but I've always wanted a HoF/LoB mode without these huge level increases.


"Ok, I've just about had my FILL of riddle asking, quest assigning, insult throwing, pun hurling, hostage taking, iron mongering, smart-arsed fools, freaks, and felons that continually test my will, mettle, strength, intelligence, and most of all, patience! If you've got a straight answer ANYWHERE in that bent little head of yours, I want to hear it pretty damn quick or I'm going to take a large blunt object roughly the size of Elminster AND his hat, and stuff it lengthwise into a crevice of your being so seldom seen that even the denizens of the nine hells themselves wouldn't touch it with a twenty-foot rusty halberd! Have I MADE myself perfectly CLEAR?!"

--<CHARNAME> to Portalbendarwinden

--------------------

post-10485-0-15080600-1348188745.jpg
___________Old pen and paper modules of the 70s and 80s.___________

CA Forums CA Homepage


#186 Insomniator

Insomniator
  • Member
  • 123 posts

Posted 12 September 2021 - 09:39 AM

@Azazello

Exploring IWD1-ToL v1.42 i found much different (beamdog take it as base for Legacy of Bhaal):
XP = 200% + 1000
THAC0 -5
No Armor class changes
HP +300% (+200% summons)
Attacks per round +1
Saves + 1
MovementRate = (MovementRate * 1.3) + 1
Levels +12
Gold +75
How did you discover those other variable changes? And do they also apply when only Heart of Winter is installed?

I explored IDMain.exe when game "upgrade" stats, i dont have HoW version of game, but can explore IDMain.exe extracted from pre-ToL patches.

Second way - enable cheat keys(GETYOURCHEATON:EnableCheatKeys() in console), join any neutral to party (ctrl+Q), open Record screen: Hildreth Highhammer (first location)
normal:
XP 120
Levels 1/1/1 - shows as figher only, because single class
AC 5
HP 33 (30 in NI)
Thac0 17
APR 1 (fist)
Saves 13/15/14...

fury:
XP - 2480 ((120 * 2 + 1000) * 2(difficulty) )
Levels 13/13/13
AC 5 - no changes
HP 197 - seems compilcated formula (not just 300% + 80), may depends on levels and "max HP on level-up" setting
Thac0 12
APR 3 (fist) = 2(upgrade formula) + 1(level bonus, WSPATCK.2DA)
Saves 14/16/15/... - nice bug


Edited by Insomniator, 13 September 2021 - 09:07 AM.


#187 Magus

Magus
  • Member
  • 35 posts

Posted 12 September 2021 - 01:04 PM

I know it's purely subjective matter, but isn't telling the player that the container is empty before he/she even open it a little lame and ruining the fun of searching through containers? If those empty containers would tell right away "don't open me, I'm not important", then there is no need for them to exist at all.


It's really only fun for the first thousand times... In any case that would be an option, which would have to be enabled explicitly, so I don't see any issue with that.

Well, it's just a suggestion, anyway.

 

 

Suppose that I added a hook and this C++ function is redirected to LUA code. This is where the show begins, you need to use these two arguments (two pointers to classes in memory) and one global pointer (data of the engine itself) to get all the necessary data, process them and change the state of the game or character, since many effects last several rounds, engine will call your ApplyEffect() each second (or often/less).


If you could create a very simple hook for starters (say, when a spell hits a target, exposing pointers to caster, target, spell itself) and an example how to use it, that would be a start to experiment with. Not sure how would calling LUA affect performance, would need to see.

Of course, it's a very long shot, and possibly nothing will come out of it. If it's too complicated, then probably not worth bothering with it.


Edited by Magus, 13 September 2021 - 07:26 AM.


#188 Insomniator

Insomniator
  • Member
  • 123 posts

Posted 13 September 2021 - 09:44 AM

If you could create a very simple hook for starters (say, when a spell hits a target, exposing pointers to caster, target, spell itself) and an example how to use it, that would be a start to experiment with.

There is few examples, EffectOpcode.cpp, opcodes do context-specific job, Ascension64 fully overrided some opcodes by himself. DETOUR_CEffectDisease::DETOUR_ApplyEffect or DETOUR_CEffectBlindness::DETOUR_ApplyEffect are example of what to do when opcode handler need create from scratch(not exact from scratch, it was reverse-engineered).
What handler usualy does ? It read many fields from some objects(target creature, source creature, effect parameters) then do payload, sometimes calls engine's internal functions and finally make result in some of form, most complicated form is newly allocated instance of some class filled with data, then call AddTail() to add this object to some of existing lists
This is very hard job because you are limited by game engne context, so when you think about new opcode, first think up how to fit it to existing context. Many new opcodes came from IWD and probably on BG2 engine you dont have proper iwd specific lists/fields.

 


Edited by Insomniator, 13 September 2021 - 09:47 AM.


#189 Magus

Magus
  • Member
  • 35 posts

Posted 14 September 2021 - 07:30 PM

Yes I've seen new opcodes, the challenge is exposing enough engine innards so that they could be reimplemented in LUA.

 


 

3. in store interface, scroll wheel always scrolls the left list, although intitutively it should scroll the right one when over it.

.. also in custom portrait selection only the large portrait list get scrolled, and there's levelup screen, and maybe more...



#190 Insomniator

Insomniator
  • Member
  • 123 posts

Posted 21 September 2021 - 10:44 AM

Updated to 4.03:

  • Added: Shift Subtitles Below Movie Frame
  • Added: Scaled GUI,  for fans of FullHD resolution  :)
  • Added: Heart of Fury/Fists of Fury/Customizable difficulty modes
  • Fixed: Cleric Summons don't get difficulty bonuses