Jump to content

[BGEE] Prism is dead?


Recommended Posts

I have run into an odd bug with Prism the Sculptor at the Nashkel Mines - he's already dead before any interaction with him.  I can't say for certain that this is ToF's doing, but the only other mods I have installed at the moment are Mur'neth and the BG1 NPC Project (see attached weidu.log), and I don't think either of them should mess with Prism.

When I arrived at his sculpture outside the Nashkel Mines, Prism's corpse was already lying on the ground - no sign of Greywolf or the emeralds.  I tried spawning in a new Prism using the console, and he died instantly (see attached image).  My best guess is that maybe ToF's updated ability score rules have caused the game to recalculate Prism's hit points and get an answer less than 1 (according to the Fandom wiki, he only has 7 constitution, which is a +0 modifier in unmodded BGEE but a -2 in 3e, and he's level 3, resulting in a total swing of -6... on a character who normally has 4 HP).  But if that were the issue, I can't imagine he'd be the only character affected, and I haven't seen any other unexpected dead commoners in Beregost or Nashkel.

Any ideas?

WeiDU.log

3 dead Prisms.jpg

Link to comment

It's a bit more complicated than that, as the game engine ensures that a level N creature must have a maximum HP count of at least N. But that's maximum HP, and current HP is calculated before that rule is applied. So Prism's at 4/4 with a 0 CON modifier, 1/3 with a -1 CON modifier, and dead/3 with a -2 CON modifier.

Confirmed, by the way. I tested it by tinkering with HPCONBON.2DA and cheat-traveling to the area in an otherwise vanilla install.

As for why you aren't seeing other dead NPCs? CON modifiers are only applied for creatures with player classes. Commoners and most other people you see around town have the INNOCENT class, which doesn't get that. Prism is a mage, which does.

Searching for CREs with player classes and less than 10 CON ... ouch. The bar gets about two thirds of the way through and then just stops. Near Infinity has failed me. (After about ten minutes, the "Error reading ****.CRE" boxes started popping up.)

Update: I figured out how to do it. Working on the list...

Edited by jmerry
Link to comment

After searching an unmodded BGEE+SoD install, here are the CREs that go from alive to dead with the change to CON modifiers:

- BAT_IN (Level 1, 1 HP, 9 CON). An epidemic has decimated the cave-dwelling bats of the Sword Coast.

- BDHYRETH (Level 2, 3/14 HP, 6 CON). This follower of Ilmater refused healing, and has now succumbed to his wounds.

- BDTHUG01, BDTHUG02, BDTHUG07 (Level 1, 1 HP, 9 CON). These idiots who like to get into fistfights with each other aren't getting up this time.

- PRISM (Level 3, 4 HP, 7 CON). He didn't finish his masterpiece.

- PRISON (Level 1, 1 HP, 9 CON). The Flaming Fist hasn't been taking care of their prisoners. Somebody should investigate.

- XAN4 (Level 4, 8/12 HP, 7 CON). Xan didn't survive his captivity. You should have gotten there sooner.

- XAN6 (Level 6, 12/17 HP, 7 CON). These higher-level versions of the NPCs appear in original BG1 if your party's average level is high enough when they first join. But not the EE, which has the lowest-level version of the NPC join and then adds XP instead.

Edited by jmerry
Link to comment

lol.

The obvious solution is just to do a per-creature patch here (it would need to be a regexp, I think, because of mod-added creatures.)

I'm a little concerned that I should take this as a warning that the component is too overtuned, but perhaps that's for another day.

Link to comment
1 hour ago, RoyalProtector said:

Just out of (technical) curiosity... What sort of regex would account for NPCs that should probably be taken care of so they don't spawn dead?

At the moment I'm inclined to do something relatively sweeping, like

ACTION_DEFINE_ASSOCIATIVE_ARRAY con_3e_adjust_map BEGIN
	1=>5
	2=>6
	3=>7
	4=>8
	5=>8
	6=>9
	7=>10
	8=>10
	9=>10
END

COPY_EXISTING_REGEXP GLOB ".*\.cre" override
	PATCH_IF (BYTE_AT 0x273) <=21 BEGIN // filter for PC classes
		con=BYTE_AT 0x23d
		PATCH_IF VARIABLE_IS_SET $con_3e_adjust_map("%con%") BEGIN
			WRITE_BYTE 0x23d $con_3e_adjust_map("%con%")
		END
	END
BUT_ONLY

That patches every PC-class creature in the game with below-average hit points so that it doesn't get fewer hit points under the new system than under the old one.

Link to comment

Hi David,

Just a thought - I've been using "Alternative Constitution Bonuses" from Bart's Tweaks, which is along the same lines but only affects level ups:

## Alternative Constitution Bonuses</br>
3rd Edition-style Constitution, with the addition of some very slow regeneration that makes resting actually have some value if you have high Constitution characters but no clerical healing spells. A character with a Constitution of 10 would receive exactly one more hitpoint from resting for 8 hours, while a character with a Constitution of 18 would receive just two more hitpoints, with a much bigger scaling up once you go beyond that into exceptional constitution territory. It doesn't sound like much, but it wasn't designed to be powerful, just to help a little in the early stages of BG1 when you don't have enough healing spells readily available and you find resting 3 times in a row to be distasteful.

01: -3 HP on level up, no regeneration, -5 fatigue bonus<br/>
02: -2 HP on level up, no regeneration, -4 fatigue bonus<br/>
03: -2 HP on level up, no regeneration, -4 fatigue bonus<br/>
04: -2 HP on level up, no regeneration, -3 fatigue bonus<br/>
05: -2 HP on level up, no regeneration, -3 fatigue bonus<br/>
06: -1 HP on level up, no regeneration, -2 fatigue bonus<br/>
07: -1 HP on level up, no regeneration, -2 fatigue bonus<br/>
08: -1 HP on level up, no regeneration, -1 fatigue bonus<br/>
09: -1 HP on level up, no regeneration, -1 fatigue bonus<br/>
10: 0 HP on level up, 1 hp/2400 second regeneration, 0 fatigue bonus<br/>
11: 0 HP on level up, 1 hp/2100 second regeneration, 0 fatigue bonus<br/>
12: 1 HP on level up, 1 hp/1800 second regeneration, 1 fatigue bonus<br/>
13: 1 HP on level up, 1 hp/1500 second regeneration, 1 fatigue bonus<br/>
14: 2 HP on level up, 1 hp/1200 second regeneration, 2 fatigue bonus<br/>
15: 2 HP on level up, 1 hp/900 second regeneration, 2 fatigue bonus<br/>
16: 3 HP on level up, 1 hp/600 second regeneration, 3 fatigue bonus<br/>
17: 3 HP on level up, 1 hp/450 second regeneration, 3 fatigue bonus<br/>
18: 4 HP on level up, 1 hp/300 second regeneration, 4 fatigue bonus<br/>
19: 4 HP on level up, 1 hp/240 second regeneration, 4 fatigue bonus<br/>
20: 5 HP on level up, 1 hp/180 second regeneration, 5 fatigue bonus<br/>
21: 5 HP on level up, 1 hp/120 second regeneration, 5 fatigue bonus<br/>
22: 6 HP on level up, 1 hp/60 second regeneration, 6 fatigue bonus<br/>
23: 6 HP on level up, 1 hp/30 second regeneration, 6 fatigue bonus<br/>
24: 7 HP on level up, 1 hp/12 second regeneration, 7 fatigue bonus<br/>
25: 7 HP on level up, 1 hp/6 second regeneration, 7 fatigue bonus<br/>
Link to comment

I'm pretty sure "on level up" is just another way to say the same thing - the bonuses/penalties apply at level 1 as well.

I tested another related thing ... what happens if I create a pure mage (d4 base HP) with a -4 CON modifier to HP (CON 3, with the ToF tables)?

Answer: Naturally, the game ends instantly. And when I click through the crumbling hand animation, BGEE gets stuck on a black screen with the Candlekeep ambient sounds. Indefinitely, until I force quit. No interface, no other visuals at all. The game really can't handle a protagonist that spawns in already dead.

Edited by jmerry
Link to comment
Quote

Within these hallowed halls of knowledge, your story begins.. and ends. You have spent most of your twenty years of life within this keep's austere walls, under the tutelage of the sage Gorion. Acting as your father, he has raised you on a thousand tales of heroes and monsters, lovers and infidels, battles and tragedies. But throughout your youth, you have been a sickly child, seeking solace in the study of magic from the constant and debilitating illnesses that plague you.

Lately, Gorion has been growing distant from you, as if some grave matter weighs heavily on his heart, overshadowing even his concerns about your frailty. You have asked about his concerns as gently as possible, at least when the coughing abate enough for you to speak and you are able to leave your bed for a few moments, but your queries have been in vain. Your sole comfort is the knowledge that he is a wise man, and you know he will tell you when the time is right. Nonetheless, his silence is troubling, and you cannot help but feel that something is terribly wrong...

Today, Gorion has appeared more agitated than ever, and now he has uncharacteristically interrupted your rest in the middle of the day. Imparting hurried instructions for you to equip yourself for travel. But it is too late for that. The latest bout of fever has been worse than all that come before, and as Gorion enters your bedchamber, he sees only the sorrowful face of the healer as he gently closes your eyes for the last time.

LATER:

Quote

ARMORED FIGURE: You're perceptive for an old man. You know why I'm here. Hand over your ward and no one will be hurt. If you resist, it shall be a waste of your life.

GORION: You are too late. Leave me to my grief and you and your lackeys shall be unharmed.

ARMORED FIGURE: I am sorry for your loss, old man.

 

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